diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 1cd5616..8fc415b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -251,7 +251,7 @@
}
override fun onEditClicked(position: Int) {
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onOperationClicked(position: Int) {
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 1cd5616..8fc415b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -251,7 +251,7 @@
}
override fun onEditClicked(position: Int) {
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
index 5186591..4632b20 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
@@ -3,8 +3,7 @@
import androidx.lifecycle.MutableLiveData
import com.casic.app.smartwell.sanxi.base.BaseViewModel
import com.casic.app.smartwell.sanxi.extensions.*
-import com.casic.app.smartwell.sanxi.model.OwnerShipModel
-import com.casic.app.smartwell.sanxi.model.PublicKeyModel
+import com.casic.app.smartwell.sanxi.model.*
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.LoadState
import com.casic.app.smartwell.sanxi.utils.SaveKeyValues
@@ -18,6 +17,9 @@
private val gson = Gson()
val keyModel = MutableLiveData()
val resultModel = MutableLiveData()
+ val areaModel = MutableLiveData()
+ val districtModel = MutableLiveData()
+ val streetModel = MutableLiveData()
fun obtainPublicKey() = launch({
loadState.value = LoadState.Loading
@@ -62,4 +64,55 @@
}, {
it.printStackTrace()
})
+
+ /**
+ * 根据部门获取区ID
+ */
+ fun obtainAreaByDept(deptId: String) = launch({
+ val response = RetrofitServiceManager.obtainAreaByDept(deptId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ areaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 区/县等
+ */
+ fun obtainDistrict(pid: String) = launch({
+ val response = RetrofitServiceManager.obtainDistrict(pid)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ districtModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 街道
+ */
+ fun obtainStreet(areaId: String) = launch({
+ val response = RetrofitServiceManager.obtainStreet(areaId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ streetModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 1cd5616..8fc415b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -251,7 +251,7 @@
}
override fun onEditClicked(position: Int) {
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
index 5186591..4632b20 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
@@ -3,8 +3,7 @@
import androidx.lifecycle.MutableLiveData
import com.casic.app.smartwell.sanxi.base.BaseViewModel
import com.casic.app.smartwell.sanxi.extensions.*
-import com.casic.app.smartwell.sanxi.model.OwnerShipModel
-import com.casic.app.smartwell.sanxi.model.PublicKeyModel
+import com.casic.app.smartwell.sanxi.model.*
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.LoadState
import com.casic.app.smartwell.sanxi.utils.SaveKeyValues
@@ -18,6 +17,9 @@
private val gson = Gson()
val keyModel = MutableLiveData()
val resultModel = MutableLiveData()
+ val areaModel = MutableLiveData()
+ val districtModel = MutableLiveData()
+ val streetModel = MutableLiveData()
fun obtainPublicKey() = launch({
loadState.value = LoadState.Loading
@@ -62,4 +64,55 @@
}, {
it.printStackTrace()
})
+
+ /**
+ * 根据部门获取区ID
+ */
+ fun obtainAreaByDept(deptId: String) = launch({
+ val response = RetrofitServiceManager.obtainAreaByDept(deptId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ areaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 区/县等
+ */
+ fun obtainDistrict(pid: String) = launch({
+ val response = RetrofitServiceManager.obtainDistrict(pid)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ districtModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 街道
+ */
+ fun obtainStreet(areaId: String) = launch({
+ val response = RetrofitServiceManager.obtainStreet(areaId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ streetModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt
new file mode 100644
index 0000000..fe9d357
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt
@@ -0,0 +1,36 @@
+package com.casic.app.smartwell.sanxi.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.app.smartwell.sanxi.base.BaseViewModel
+import com.casic.app.smartwell.sanxi.extensions.launch
+import com.casic.app.smartwell.sanxi.extensions.separateResponseCode
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.extensions.toErrorMessage
+import com.casic.app.smartwell.sanxi.model.CommonResultModel
+import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.utils.retrofit.RetrofitServiceManager
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import java.io.File
+
+class UploadFileViewModel : BaseViewModel() {
+
+ private val gson = Gson()
+ val resultModel = MutableLiveData()
+
+ fun uploadFile(image: File) = launch({
+ val response = RetrofitServiceManager.uploadFile(image)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ resultModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 1cd5616..8fc415b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -251,7 +251,7 @@
}
override fun onEditClicked(position: Int) {
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
index 5186591..4632b20 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
@@ -3,8 +3,7 @@
import androidx.lifecycle.MutableLiveData
import com.casic.app.smartwell.sanxi.base.BaseViewModel
import com.casic.app.smartwell.sanxi.extensions.*
-import com.casic.app.smartwell.sanxi.model.OwnerShipModel
-import com.casic.app.smartwell.sanxi.model.PublicKeyModel
+import com.casic.app.smartwell.sanxi.model.*
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.LoadState
import com.casic.app.smartwell.sanxi.utils.SaveKeyValues
@@ -18,6 +17,9 @@
private val gson = Gson()
val keyModel = MutableLiveData()
val resultModel = MutableLiveData()
+ val areaModel = MutableLiveData()
+ val districtModel = MutableLiveData()
+ val streetModel = MutableLiveData()
fun obtainPublicKey() = launch({
loadState.value = LoadState.Loading
@@ -62,4 +64,55 @@
}, {
it.printStackTrace()
})
+
+ /**
+ * 根据部门获取区ID
+ */
+ fun obtainAreaByDept(deptId: String) = launch({
+ val response = RetrofitServiceManager.obtainAreaByDept(deptId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ areaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 区/县等
+ */
+ fun obtainDistrict(pid: String) = launch({
+ val response = RetrofitServiceManager.obtainDistrict(pid)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ districtModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 街道
+ */
+ fun obtainStreet(areaId: String) = launch({
+ val response = RetrofitServiceManager.obtainStreet(areaId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ streetModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt
new file mode 100644
index 0000000..fe9d357
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/UploadFileViewModel.kt
@@ -0,0 +1,36 @@
+package com.casic.app.smartwell.sanxi.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.app.smartwell.sanxi.base.BaseViewModel
+import com.casic.app.smartwell.sanxi.extensions.launch
+import com.casic.app.smartwell.sanxi.extensions.separateResponseCode
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.extensions.toErrorMessage
+import com.casic.app.smartwell.sanxi.model.CommonResultModel
+import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.utils.retrofit.RetrofitServiceManager
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import java.io.File
+
+class UploadFileViewModel : BaseViewModel() {
+
+ private val gson = Gson()
+ val resultModel = MutableLiveData()
+
+ fun uploadFile(image: File) = launch({
+ val response = RetrofitServiceManager.uploadFile(image)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ resultModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
index 696dbf0..8e59b91 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/WellViewModel.kt
@@ -1,5 +1,6 @@
package com.casic.app.smartwell.sanxi.vm
+import android.util.Log
import androidx.lifecycle.MutableLiveData
import com.casic.app.smartwell.sanxi.base.BaseViewModel
import com.casic.app.smartwell.sanxi.extensions.launch
@@ -15,6 +16,7 @@
class WellViewModel : BaseViewModel() {
+ private val kTag = "WellViewModel"
private val gson = Gson()
val detailModel = MutableLiveData()
val allWellModel = MutableLiveData()
@@ -152,4 +154,58 @@
loadState.value = LoadState.Fail
it.printStackTrace()
})
+
+ /**
+ * 编辑更新井信息
+ * */
+ fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.updateWellDetail(
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "更新成功".show()
+ commonResultModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index fdf5fc7..804f233 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -102,8 +102,6 @@
implementation 'com.google.code.gson:gson:2.8.6'
//上拉加载下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
- //高德地图搜索
- implementation 'com.amap.api:search:8.1.0'
//高德导航
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//日期选择器
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3fcef8b..460648b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,6 +9,7 @@
+
@@ -51,6 +52,7 @@
android:name=".view.BigImageActivity"
android:theme="@style/Theme.BigImageActivity" />
+
() {
+
+ private val countLimit = 4
+ private var imageData: ArrayList = ArrayList()
+
+ fun setupImage(images: ArrayList) {
+ this.imageData = images
+ notifyDataSetChanged()
+ }
+
+ fun deleteImage(position: Int) {
+ if (imageData.size != 0) {
+ imageData.removeAt(position)
+ notifyDataSetChanged()
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val imageView = ImageView(context)
+ val screenWidth: Int = SizeUtil.getScreenWidth(context) - SizeUtil.dp2px(context, 40f)
+ val margins: Int = SizeUtil.dp2px(context, 3f)
+ val itemSize = (screenWidth - 6 * margins) / 3
+ val params = LinearLayout.LayoutParams(itemSize, itemSize)
+ params.setMargins(margins, margins, margins, margins)
+ params.gravity = Gravity.CENTER
+ imageView.scaleType = ImageView.ScaleType.CENTER_CROP
+ imageView.layoutParams = params
+ return ItemViewHolder(imageView)
+ }
+
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ if (position == itemCount - 1 && imageData.size < countLimit) {
+ holder.imageView.setImageResource(R.drawable.ic_add_pic)
+ holder.imageView.setOnClickListener { //添加图片
+ mOnItemClickListener!!.onAddImageClick()
+ }
+ } else {
+ Glide.with(context).load(imageData[position]).into(holder.imageView)
+ holder.imageView.setOnClickListener { // 点击操作,查看大图
+ mOnItemClickListener!!.onItemClick(position)
+ }
+ // 长按监听
+ holder.imageView.setOnLongClickListener { v -> //长按删除
+ mOnItemClickListener!!.onItemLongClick(v, position)
+ true
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ // 满3张图就不让其添加新图
+ return if (imageData.size != 0 && imageData.size >= countLimit) {
+ countLimit
+ } else {
+ if (imageData.size == 0) 1 else imageData.size + 1
+ }
+ }
+
+ private var mOnItemClickListener: OnItemClickListener? = null
+
+ fun setOnItemClickListener(onItemClickListener: OnItemClickListener?) {
+ mOnItemClickListener = onItemClickListener
+ }
+
+ interface OnItemClickListener {
+ fun onAddImageClick()
+ fun onItemClick(position: Int)
+ fun onItemLongClick(view: View?, position: Int)
+ }
+
+ inner class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val imageView: ImageView = itemView as ImageView
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
index 3a098be..ad20c8b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/base/BaseActivity.kt
@@ -31,7 +31,10 @@
setContentView(initLayoutView())
ImmersionBar.with(this).statusBarDarkFont(false).init() //沉浸式状态栏
when (this.javaClass.simpleName) {
- "WelcomeActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
+ "WelcomeActivity" -> {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ StatusBarColorUtil.setColor(this, R.color.white.convertColor(this))
+ }
"SplashScreenActivity" -> ImmersionBar.with(this).statusBarDarkFont(false).init()
"LoginActivity" -> ImmersionBar.with(this).statusBarDarkFont(true).init()
else -> StatusBarColorUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
index e77dbaa..3affed7 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/extensions/ArrayList.kt
@@ -13,7 +13,7 @@
if (index == this.size - 1) {
builder.append(s)
} else {
- builder.append(s).append(",")
+ builder.append(s).append(";")
}
}
return builder.toString()
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
new file mode 100644
index 0000000..3ee4c83
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/AreaModel.java
@@ -0,0 +1,125 @@
+package com.casic.app.smartwell.sanxi.model;
+
+public class AreaModel {
+
+ private int code;
+ private DataBean data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String area;
+ private String communications;
+ private String deptid;
+ private String deviceTypes;
+ private String id;
+ private String lat;
+ private String lng;
+ private String map;
+ private String wellTypes;
+
+ public String getArea() {
+ return area;
+ }
+
+ public void setArea(String area) {
+ this.area = area;
+ }
+
+ public String getCommunications() {
+ return communications;
+ }
+
+ public void setCommunications(String communications) {
+ this.communications = communications;
+ }
+
+ public String getDeptid() {
+ return deptid;
+ }
+
+ public void setDeptid(String deptid) {
+ this.deptid = deptid;
+ }
+
+ public String getDeviceTypes() {
+ return deviceTypes;
+ }
+
+ public void setDeviceTypes(String deviceTypes) {
+ this.deviceTypes = deviceTypes;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getMap() {
+ return map;
+ }
+
+ public void setMap(String map) {
+ this.map = map;
+ }
+
+ public String getWellTypes() {
+ return wellTypes;
+ }
+
+ public void setWellTypes(String wellTypes) {
+ this.wellTypes = wellTypes;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
new file mode 100644
index 0000000..02e9ef2
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/DistrictModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class DistrictModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
new file mode 100644
index 0000000..90cc7d5
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/model/StreetModel.java
@@ -0,0 +1,172 @@
+package com.casic.app.smartwell.sanxi.model;
+
+import java.util.List;
+
+public class StreetModel {
+
+ private int code;
+ private List data;
+ private String message;
+ private boolean success;
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public List getData() {
+ return data;
+ }
+
+ public void setData(List data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+ public static class DataBean {
+ private String id;
+ private String isSync;
+ private String lat;
+ private int level;
+ private String levelName;
+ private String lng;
+ private String name;
+ private int num;
+ private String pName;
+ private String pid;
+ private String pids;
+ private String simplename;
+ private String targetIdSync;
+ private String targetPidSync;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getIsSync() {
+ return isSync;
+ }
+
+ public void setIsSync(String isSync) {
+ this.isSync = isSync;
+ }
+
+ public String getLat() {
+ return lat;
+ }
+
+ public void setLat(String lat) {
+ this.lat = lat;
+ }
+
+ public int getLevel() {
+ return level;
+ }
+
+ public void setLevel(int level) {
+ this.level = level;
+ }
+
+ public String getLevelName() {
+ return levelName;
+ }
+
+ public void setLevelName(String levelName) {
+ this.levelName = levelName;
+ }
+
+ public String getLng() {
+ return lng;
+ }
+
+ public void setLng(String lng) {
+ this.lng = lng;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getNum() {
+ return num;
+ }
+
+ public void setNum(int num) {
+ this.num = num;
+ }
+
+ public String getPName() {
+ return pName;
+ }
+
+ public void setPName(String pName) {
+ this.pName = pName;
+ }
+
+ public String getPid() {
+ return pid;
+ }
+
+ public void setPid(String pid) {
+ this.pid = pid;
+ }
+
+ public String getPids() {
+ return pids;
+ }
+
+ public void setPids(String pids) {
+ this.pids = pids;
+ }
+
+ public String getSimplename() {
+ return simplename;
+ }
+
+ public void setSimplename(String simplename) {
+ this.simplename = simplename;
+ }
+
+ public String getTargetIdSync() {
+ return targetIdSync;
+ }
+
+ public void setTargetIdSync(String targetIdSync) {
+ this.targetIdSync = targetIdSync;
+ }
+
+ public String getTargetPidSync() {
+ return targetPidSync;
+ }
+
+ public void setTargetPidSync(String targetPidSync) {
+ this.targetPidSync = targetPidSync;
+ }
+ }
+}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
index bae51d6..3251baa 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/Constant.kt
@@ -7,6 +7,7 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.CAMERA,
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
index 3e9ae35..cef2d83 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/FileUtils.kt
@@ -18,4 +18,13 @@
}
return downloadDir.toString()
}
+
+ val imageCompressPath: String
+ get() {
+ val imageDir = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "")
+ if (!imageDir.exists()) {
+ imageDir.mkdir()
+ }
+ return imageDir.toString()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
index 19687d2..bd311a4 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitService.kt
@@ -289,6 +289,77 @@
): String
/**
+ * 上传图片
+ * 系统路径static拼接图片返回路径
+ * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
+ */
+ @Multipart
+ @POST("/imageUpload")
+ suspend fun uploadFile(
+ @Header("token") token: String,
+ @Part file: MultipartBody.Part
+ ): String
+
+ /**
+ * 根据部门获取区ID
+ *
+ * @param deptId
+ */
+ @GET("/config/getAreaByDept")
+ suspend fun obtainAreaByDept(
+ @Header("token") token: String,
+ @Query("deptId") deptId: String
+ ): String
+
+ /**
+ * 获取区/县等
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainDistrict(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 获取街道
+ *
+ * @param pid
+ */
+ @GET("/area/list")
+ suspend fun obtainStreet(
+ @Header("token") token: String,
+ @Query("pid") pid: String
+ ): String
+
+ /**
+ * 编辑更新井信息
+ *
+ * @param id
+ */
+ @FormUrlEncoded
+ @POST("/well/update")
+ suspend fun updateWellDetail(
+ @Header("token") token: String,
+ @Field("id") id: String,
+ @Field("wellCode") wellCode: String,
+ @Field("wellName") wellName: String,
+ @Field("wellType") wellType: String,
+ @Field("deptid") deptid: String,
+ @Field("deep") deep: String,
+ @Field("position") position: String,
+ @Field("coordinateX") coordinateX: String,
+ @Field("coordinateY") coordinateY: String,
+ @Field("photos") photos: String,
+ @Field("notes") notes: String?,
+ @Field("qu") qu: String,
+ @Field("area") area: String,
+ @Field("responsibleDept") responsibleDept: String,
+ @Field("responsibleDeptName") responsibleDeptName: String
+ ): String
+
+ /**
* 获取工单详情
*
* @param id 工单id
@@ -312,18 +383,6 @@
): String
/**
- * 上传图片
- * 系统路径static拼接图片返回路径
- * http://xx.com/static/2019-10/8050891248624f2bbefedcb196ce89cb.jpeg
- */
- @Multipart
- @POST("/imageUpload")
- suspend fun uploadImage(
- @Header("token") token: String,
- @Part file: MultipartBody.Part
- ): String
-
- /**
* 查找同一单位下的用户
*
* @param hasMine 是否包含本人,1包含, 0不包含
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
index efd6b11..e35e976 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/utils/retrofit/RetrofitServiceManager.kt
@@ -3,6 +3,10 @@
import com.casic.app.smartwell.sanxi.model.PublicKeyModel
import com.casic.app.smartwell.sanxi.utils.AuthenticationHelper
import com.casic.app.smartwell.sanxi.utils.Constant
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.MultipartBody
+import okhttp3.RequestBody
+import java.io.File
object RetrofitServiceManager {
@@ -272,6 +276,76 @@
return api.obtainOperationResult(AuthenticationHelper.token!!, wellId, bfzt)
}
+ /**
+ * 上传图片
+ */
+ suspend fun uploadFile(image: File): String {
+ val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
+ val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
+ return api.uploadFile(AuthenticationHelper.token!!, imagePart)
+ }
+
+ /**
+ * 根据部门获取区ID
+ */
+ suspend fun obtainAreaByDept(deptId: String): String {
+ return api.obtainAreaByDept(AuthenticationHelper.token!!, deptId)
+ }
+
+ /**
+ * 获取区/县等
+ */
+ suspend fun obtainDistrict(pid: String): String {
+ return api.obtainDistrict(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 获取街道
+ */
+ suspend fun obtainStreet(pid: String): String {
+ return api.obtainStreet(AuthenticationHelper.token!!, pid)
+ }
+
+ /**
+ * 编辑更新井信息
+ */
+ suspend fun updateWellDetail(
+ id: String,
+ wellCode: String,
+ wellName: String,
+ wellType: String,
+ deptid: String,
+ deep: String,
+ position: String,
+ coordinateX: String,
+ coordinateY: String,
+ photos: String,
+ notes: String?,
+ qu: String,
+ area: String,
+ responsibleDept: String,
+ responsibleDeptName: String
+ ): String {
+ return api.updateWellDetail(
+ AuthenticationHelper.token!!,
+ id,
+ wellCode,
+ wellName,
+ wellType,
+ deptid,
+ deep,
+ position,
+ coordinateX,
+ coordinateY,
+ photos,
+ notes,
+ qu,
+ area,
+ responsibleDept,
+ responsibleDeptName
+ )
+ }
+
// /**
// * 获取工单详情
// */
@@ -287,15 +361,6 @@
// }
//
// /**
-// * 上传图片
-// */
-// suspend fun uploadImage(image: File): String {
-// val requestBody = RequestBody.create("image/png".toMediaTypeOrNull(), image)
-// val imagePart = MultipartBody.Part.createFormData("file", image.name, requestBody)
-// return api.uploadImage(AuthenticationHelper.token!!, imagePart)
-// }
-//
-// /**
// * 查找同一单位下的用户
// */
// suspend fun obtainSubordinate(hasMine: String?, roleTips: String?): String {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
new file mode 100644
index 0000000..956dbce
--- /dev/null
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/EditWellActivity.kt
@@ -0,0 +1,341 @@
+package com.casic.app.smartwell.sanxi.view
+
+import android.app.Activity
+import android.content.Intent
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import com.casic.app.smartwell.sanxi.R
+import com.casic.app.smartwell.sanxi.adapter.EditableImageAdapter
+import com.casic.app.smartwell.sanxi.base.BaseActivity
+import com.casic.app.smartwell.sanxi.extensions.combineImagePath
+import com.casic.app.smartwell.sanxi.extensions.navigatePageTo
+import com.casic.app.smartwell.sanxi.extensions.reformat
+import com.casic.app.smartwell.sanxi.extensions.show
+import com.casic.app.smartwell.sanxi.model.DistrictModel
+import com.casic.app.smartwell.sanxi.model.OwnerShipModel
+import com.casic.app.smartwell.sanxi.model.WellListPageModel
+import com.casic.app.smartwell.sanxi.utils.*
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
+import com.casic.app.smartwell.sanxi.vm.UploadFileViewModel
+import com.casic.app.smartwell.sanxi.vm.WellViewModel
+import com.casic.app.smartwell.sanxi.widgets.BottomAreaSheet
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.luck.picture.lib.PictureSelector
+import com.luck.picture.lib.config.PictureConfig
+import com.luck.picture.lib.config.PictureMimeType
+import com.pengxh.app.multilib.widget.dialog.BottomActionSheet
+import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet
+import kotlinx.android.synthetic.main.activity_edit_well.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class EditWellActivity : BaseActivity() {
+
+ private val kTag = "EditWellActivity"
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
+ private lateinit var uploadImageViewModel: UploadFileViewModel
+ private lateinit var wellBeanJson: String
+ private lateinit var imageAdapter: EditableImageAdapter
+ private lateinit var wellBean: WellListPageModel.DataBean.RowsBean
+ private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集
+ private val realPaths: ArrayList = ArrayList() //真实图片路径
+ private val districtModels: ArrayList = ArrayList() //行政区
+ private var wellType = ""
+ private var deptId = ""
+ private var districtId = ""
+ private var streetId = ""
+
+ override fun initLayoutView(): Int = R.layout.activity_edit_well
+
+ override fun setupTopBarLayout() {
+ leftBackView.setOnClickListener { finish() }
+ titleView.text = "编辑井信息"
+ }
+
+ override fun initData() {
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
+ uploadImageViewModel = ViewModelProvider(this).get(UploadFileViewModel::class.java)
+ wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ wellBean = Gson().fromJson(
+ wellBeanJson, object : TypeToken() {}.type
+ )
+ wellNameView.setText(wellBean.wellName)
+ wellCodeView.text = wellBean.wellCode
+
+ this.wellType = wellBean.wellType
+ wellTypeView.text = wellBean.wellTypeName
+
+ this.deptId = wellBean.deptid
+ ownerShipView.text = wellBean.deptName
+ wellDepthView.setText(wellBean.deep)
+ longitudeView.setText(wellBean.lngGaode)
+ latitudeView.setText(wellBean.latGaode)
+
+ /**
+ * 2022-06/e805917f14ed49378bbd29cae391b061.png;
+ * 2022-06/48d34f27695346bbb39d695333faabee.png;
+ * 2022-06/6df199418fd84960a164ad9c9660e172.png;
+ * 2022-06/bfbab97a965d406ba30fc9d09ab35f5c.png;
+ * */
+ //显示已有的图片
+ val imageArray = wellBean.photos.toString().split(";")
+ imageArray.forEach { path ->
+ if (path.isNotBlank()) {
+ imagePaths.add(path)
+ realPaths.add(path.combineImagePath())
+ }
+ }
+ imageAdapter = EditableImageAdapter(this)
+ imageAdapter.setupImage(realPaths)
+ imageRecyclerView.layoutManager = GridLayoutManager(this, 3)
+ imageRecyclerView.adapter = imageAdapter
+
+ //默认加载当前井的区域
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
+ }
+ })
+ addressView.setText(wellBean.position)
+ }
+
+ override fun initEvent() {
+ wellCodeView.setOnClickListener {
+ "井编号不可编辑".show()
+ }
+
+ wellTypeView.setOnClickListener {
+ wellViewModel.obtainWellType()
+ }
+ wellViewModel.wellTypeModel.observe(this, {
+ if (it.code == 200) {
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("井类型")
+ it.data.forEach { type ->
+ sheetBuilder.addItem(type.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.wellType = it.data[position].value
+ wellTypeView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ ownerShipView.setOnClickListener {
+ authenticateViewModel.obtainOwnerShip("03")
+ }
+
+ imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener {
+ override fun onAddImageClick() {
+ selectPicture()
+ }
+
+ override fun onItemClick(position: Int) {
+ if (realPaths[position].isBlank()) {
+ "图片加载失败,无法查看大图".show()
+ } else {
+ navigatePageTo(position, realPaths)
+ }
+ }
+
+ override fun onItemLongClick(view: View?, position: Int) {
+ imagePaths.removeAt(position)
+ imageAdapter.deleteImage(position)
+ }
+ })
+
+ authenticateViewModel.resultModel.observe(this, {
+ if (it.code == 200) {
+ val ownerShipModel: MutableList = ArrayList()
+ it.data?.list?.forEach { listBean ->
+ ownerShipModel.add(listBean)
+ }
+ val sheetBuilder = QMUIBottomSheet.BottomListSheetBuilder(this)
+ sheetBuilder.setTitle("权属单位")
+ ownerShipModel.forEach { model ->
+ sheetBuilder.addItem(model.name)
+ }
+ sheetBuilder.setGravityCenter(true)
+ .setOnSheetItemClickListener { dialog, _, position, tag ->
+ this.deptId = it.data?.list!![position].id
+ ownerShipView.text = tag
+
+ dialog.dismiss()
+ }.build().show()
+ }
+ })
+
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ districtModels.add(area)
+ //判断区
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ //判断街道
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
+ //点击选择井的区域
+ districtView.setOnClickListener {
+ if (districtModels.isNullOrEmpty()) {
+ "无行政区域数据,无法修改".show()
+ return@setOnClickListener
+ }
+ BottomAreaSheet.Builder()
+ .setContext(this)
+ .setLifecycleOwner(this)
+ .setDistrictAreaData(districtModels)
+ .setChildDataViewModel(authenticateViewModel)
+ .setOnActionSheetListener(object : BottomAreaSheet.OnActionSheetListener {
+ override fun onAreaSelected(
+ area: String?, districtId: String, streetId: String
+ ) {
+ districtView.text = area?.replace("-", "")
+ this@EditWellActivity.districtId = districtId
+ this@EditWellActivity.streetId = streetId
+ }
+ })
+ .build().show()
+ }
+
+ //提交修改
+ saveButton.setOnClickListener {
+ if (districtId.isEmpty() || streetId.isEmpty()) {
+ "行政区ID为空或者街道ID为空".show()
+ return@setOnClickListener
+ }
+ wellViewModel.updateWellDetail(
+ id = wellBean.id,
+ wellCode = wellBean.wellCode,
+ wellName = wellNameView.text.toString(),
+ wellType = wellType,
+ deptid = deptId,
+ deep = wellDepthView.text.toString(),
+ position = addressView.text.toString(),
+ coordinateX = longitudeView.text.toString(),
+ coordinateY = latitudeView.text.toString(),
+ photos = imagePaths.reformat(),
+ notes = "",
+ qu = districtId,
+ area = streetId,
+ responsibleDept = deptId,
+ responsibleDeptName = ownerShipView.text.toString()
+ )
+ }
+
+ uploadImageViewModel.resultModel.observe(this, { model ->
+ if (model.code == 200) {
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ /**
+ * 显示图片
+ * path: 2021-07\c670eac17d644b179a4324a34bb84329.jpeg
+ * */
+ val sumItemCount: Int = imageAdapter.itemCount + 1 //每上传一张图片,图片总数都是在原有的基础上+1
+ if (sumItemCount <= 5) {
+ val url = model.data
+ //let函数处理需要针对一个可null的对象统一做判空处理。
+ url?.let {
+ imagePaths.add(it)
+ realPaths.add(it.combineImagePath())
+ }
+ imageAdapter.setupImage(realPaths)
+ } else {
+ "最多只能上传4张图片".show()
+ }
+ }
+ })
+ uploadImageViewModel.loadState.observe(this, {
+ DialogHelper.dismissLoadingDialog()
+ })
+
+ wellViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "保存中,请稍后...")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ private fun selectPicture() {
+ BottomActionSheet.Builder()
+ .setContext(this)
+ .setActionItemTitles(arrayOf("拍照", "相册"))
+ .setOnActionSheetListener { position ->
+ when (position) {
+ 0 -> {
+ PictureSelector.create(this)
+ .openCamera(PictureMimeType.ofImage())
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .forResult(PictureConfig.REQUEST_CAMERA)
+ }
+ 1 -> {
+ PictureSelector.create(this)
+ .openGallery(PictureMimeType.ofImage())
+ .isWeChatStyle(true)
+ .isCamera(false)
+ .isCompress(true)
+ .compressSavePath(FileUtils.imageCompressPath)
+ .imageEngine(GlideLoadEngine.createGlideEngine())
+ .maxSelectNum(4)
+ .forResult(PictureConfig.CHOOSE_REQUEST)
+ }
+ }
+ }.build().show()
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (resultCode == Activity.RESULT_OK) {
+ when (requestCode) {
+ PictureConfig.CHOOSE_REQUEST -> {
+ val selectResult = PictureSelector.obtainMultipleResult(data)
+ DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...")
+ for (res in selectResult) {
+ val file = File(res.compressPath)
+ //上传图片
+ uploadImageViewModel.uploadFile(file)
+ }
+ }
+ PictureConfig.REQUEST_CAMERA -> {
+ val cameraResult = PictureSelector.obtainMultipleResult(data)[0]
+ //上传图片
+ uploadImageViewModel.uploadFile(File(cameraResult.compressPath))
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
index 50c9e05..6c93e4e 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellDetailActivity.kt
@@ -9,28 +9,30 @@
import com.amap.api.maps.model.CameraPosition
import com.amap.api.maps.model.LatLng
import com.amap.api.maps.model.MarkerOptions
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.base.BaseActivity
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.DialogHelper
import com.casic.app.smartwell.sanxi.utils.LoadState
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
+import kotlinx.android.synthetic.main.activity_well_detail.wellCodeView
+import kotlinx.android.synthetic.main.activity_well_detail.wellDepthView
+import kotlinx.android.synthetic.main.activity_well_detail.wellNameView
+import kotlinx.android.synthetic.main.activity_well_detail.wellStateView
+import kotlinx.android.synthetic.main.activity_well_detail.wellTypeView
+import kotlinx.android.synthetic.main.activity_well_list_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
class WellDetailActivity : BaseActivity(), AMap.OnMapLoadedListener {
private val kTag = "WellDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellId: String
private lateinit var aMap: AMap
private var latLng: LatLng? = null
@@ -46,6 +48,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
aMap = wellMapView.map
aMap.mapType = AMap.MAP_TYPE_NORMAL
@@ -103,39 +106,41 @@
val wellPosition = wellDetail.position.toString()
wellLocationView.text = wellPosition
- //根据经纬度获取省市区县
if (wellDetail.latGaode.isBlank() || wellDetail.lngGaode.isBlank()) {
"井经纬度异常,无法查看完整位置信息".show()
return@observe
}
this.latLng = LatLng(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble())
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellDetail.latGaode.toDouble(), wellDetail.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
-
tipsImageView.setOnClickListener {
- geocoderSearch.getFromLocationAsyn(queryParam)
+ authenticateViewModel.obtainAreaByDept(wellDetail.deptid)
}
-
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- AlertMessageDialog.Builder()
- .setContext(this@WellDetailActivity)
- .setTitle("闸井完整位置")
- .setMessage(result?.regeocodeAddress?.formatAddress + "-" + wellPosition)
- .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
- .show()
- } else {
- "获取该闸井详细位置信息失败".show()
- }
+ authenticateViewModel.areaModel.observe(this, { areaModel ->
+ if (areaModel.code == 200) {
+ authenticateViewModel.obtainDistrict(areaModel.data.area)
}
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ })
+ authenticateViewModel.districtModel.observe(this, { districtModel ->
+ if (districtModel.code == 200) {
+ districtModel.data.forEach { area ->
+ if (area.id == wellDetail.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellDetail.area) {
+ AlertMessageDialog.Builder()
+ .setContext(this@WellDetailActivity)
+ .setTitle("闸井完整位置")
+ .setMessage(String.format("${area.name}${streetData.name}") + "-" + wellPosition)
+ .setPositiveButton("知道了")
+ .setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ }
+ }
+ })
+ }
+ }
}
})
}
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
index b34be03..d28b752 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellListDetailActivity.kt
@@ -4,11 +4,6 @@
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.GeocodeResult
-import com.amap.api.services.geocoder.GeocodeSearch
-import com.amap.api.services.geocoder.RegeocodeQuery
-import com.amap.api.services.geocoder.RegeocodeResult
import com.casic.app.smartwell.sanxi.R
import com.casic.app.smartwell.sanxi.adapter.DeviceDataListAdapter
import com.casic.app.smartwell.sanxi.adapter.DeviceDataTitleAdapter
@@ -19,6 +14,7 @@
import com.casic.app.smartwell.sanxi.extensions.show
import com.casic.app.smartwell.sanxi.model.WellListPageModel
import com.casic.app.smartwell.sanxi.utils.Constant
+import com.casic.app.smartwell.sanxi.vm.AuthenticateViewModel
import com.casic.app.smartwell.sanxi.vm.WellViewModel
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,8 +24,8 @@
class WellListDetailActivity : BaseActivity() {
private val kTag = "WellListDetailActivity"
- private val geocoderSearch by lazy { GeocodeSearch(this) }
private lateinit var wellViewModel: WellViewModel
+ private lateinit var authenticateViewModel: AuthenticateViewModel
private lateinit var wellBeanJson: String
override fun initLayoutView(): Int = R.layout.activity_well_list_detail
@@ -41,6 +37,7 @@
override fun initData() {
wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
wellBeanJson = intent.getStringExtra(Constant.INTENT_PARAM)!!
val wellBean = Gson().fromJson(
wellBeanJson, object : TypeToken() {}.type
@@ -89,29 +86,32 @@
})
}
- //根据经纬度获取省市区县
- if (wellBean.latGaode.isBlank() || wellBean.lngGaode.isBlank()) {
- "井经纬度异常,无法查看完整位置信息".show()
- return
- }
- val queryParam = RegeocodeQuery(
- LatLonPoint(wellBean.latGaode.toDouble(), wellBean.lngGaode.toDouble()),
- 200f,
- GeocodeSearch.AMAP
- )
- geocoderSearch.getFromLocationAsyn(queryParam)
- geocoderSearch.setOnGeocodeSearchListener(object :
- GeocodeSearch.OnGeocodeSearchListener {
- override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
- if (rCode == 1000) {
- districtView.text = result?.regeocodeAddress?.formatAddress
- }
- }
-
- override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) {
-
+ authenticateViewModel.obtainAreaByDept(wellBean.deptid)
+ authenticateViewModel.areaModel.observe(this, {
+ if (it.code == 200) {
+ authenticateViewModel.obtainDistrict(it.data.area)
}
})
+ authenticateViewModel.districtModel.observe(this, {
+ if (it.code == 200) {
+ it.data.forEach { area ->
+ if (area.id == wellBean.qu) {
+ authenticateViewModel.obtainStreet(area.id)
+ authenticateViewModel.streetModel.observe(this, { street ->
+ if (street.code == 200) {
+ street.data.forEach { streetData ->
+ if (streetData.id == wellBean.area) {
+ districtView.text =
+ String.format("${area.name}${streetData.name}")
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+
addressView.text = wellBean.position
maintenanceView.text = wellBean.responsibleDeptName
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
index 1cd5616..8fc415b 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/view/WellManageActivity.kt
@@ -251,7 +251,7 @@
}
override fun onEditClicked(position: Int) {
-
+ navigatePageTo(dataBeans[position].toJson())
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
index 5186591..4632b20 100644
--- a/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
+++ b/app/src/main/java/com/casic/app/smartwell/sanxi/vm/AuthenticateViewModel.kt
@@ -3,8 +3,7 @@
import androidx.lifecycle.MutableLiveData
import com.casic.app.smartwell.sanxi.base.BaseViewModel
import com.casic.app.smartwell.sanxi.extensions.*
-import com.casic.app.smartwell.sanxi.model.OwnerShipModel
-import com.casic.app.smartwell.sanxi.model.PublicKeyModel
+import com.casic.app.smartwell.sanxi.model.*
import com.casic.app.smartwell.sanxi.utils.Constant
import com.casic.app.smartwell.sanxi.utils.LoadState
import com.casic.app.smartwell.sanxi.utils.SaveKeyValues
@@ -18,6 +17,9 @@
private val gson = Gson()
val keyModel = MutableLiveData()
val resultModel = MutableLiveData()
+ val areaModel = MutableLiveData()
+ val districtModel = MutableLiveData()
+ val streetModel = MutableLiveData()
fun obtainPublicKey() = launch({
loadState.value = LoadState.Loading
@@ -62,4 +64,55 @@
}, {
it.printStackTrace()
})
+
+ /**
+ * 根据部门获取区ID
+ */
+ fun obtainAreaByDept(deptId: String) = launch({
+ val response = RetrofitServiceManager.obtainAreaByDept(deptId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ areaModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 区/县等
+ */
+ fun obtainDistrict(pid: String) = launch({
+ val response = RetrofitServiceManager.obtainDistrict(pid)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ districtModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ response.toErrorMessage().show()
+ }
+ }, {
+ it.printStackTrace()
+ })
+
+ /**
+ * 街道
+ */
+ fun obtainStreet(areaId: String) = launch({
+ val response = RetrofitServiceManager.obtainStreet(areaId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ streetModel.value = gson.fromJson(
+ response, object : TypeToken