diff --git a/app/build.gradle b/app/build.gradle index 48ca6d2..4d135f9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,6 +47,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + signingConfigs { release { storeFile file('../key/tairui.jks') @@ -58,6 +59,7 @@ android { buildTypes { debug { signingConfig signingConfigs.release + buildConfigField "String", "DOMAIN", '"http://192.168.18.74:8080"' jniDebuggable false zipAlignEnabled false } @@ -66,6 +68,7 @@ android { signingConfig signingConfigs.release minifyEnabled false jniDebuggable false + buildConfigField "String", "DOMAIN", '"http://47.109.205.240:8080"' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae8dbbc..c976461 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -153,6 +153,26 @@ android:configChanges="orientation|screenSize|keyboardHidden" android:exported="false" android:screenOrientation="portrait" /> + + + + extends AppCompatActiv protected void showToast(String str) { Toast.makeText(mContext, str, Toast.LENGTH_LONG).show(); } + protected void showError(String str) { PopTip.show(str).iconError(); } + protected void showSuccess(String str) { + PopTip.show(str).iconSuccess(); + } + protected void setText(TextView view, String txt, String defaultTxt) { if (view != null) { view.setText(TextUtils.isEmpty(txt) ? defaultTxt : txt); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java b/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java index ec9de55..99f6e67 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java @@ -2,6 +2,7 @@ package com.tairui.gov_affairs_cloud.config; import com.orhanobut.hawk.Hawk; import com.tairui.gov_affairs_cloud.entity.Constant; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; import android.text.TextUtils; @@ -17,6 +18,7 @@ public class AppConfig { } private String token; + private UserInfoEntity userInfo; public String getToken() { if (TextUtils.isEmpty(token)) { @@ -28,4 +30,16 @@ public class AppConfig { public void setToken(String token) { this.token = token; } + + public UserInfoEntity getUserInfo() { + if (userInfo == null && Hawk.contains(Constant.USER_INFO)) { + userInfo = Hawk.get(Constant.USER_INFO); + } + return userInfo; + } + + public void setUserInfo(UserInfoEntity userInfo) { + this.userInfo = userInfo; + Hawk.put(Constant.USER_INFO, userInfo); + } } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java index 96412f4..130bce7 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java @@ -1,9 +1,10 @@ package com.tairui.gov_affairs_cloud.entity; +import com.tairui.gov_affairs_cloud.BuildConfig; + public class Api { - public static String BASE_HOST = "http://192.168.18.9:8080"; - // public static String BASE_HOST = "http://47.109.205.240:8080"; + public static String BASE_HOST = BuildConfig.DOMAIN; public static String OSS_HOST = "http://gov-cloud.oss-cn-chengdu.aliyuncs.com/"; /** @@ -32,6 +33,8 @@ public class Api { public static final String CAPTCHA = BASE_HOST + "/auth/app/captcha"; public static final String HOME = BASE_HOST + "/app/home/data"; public static final String USER_INFO = BASE_HOST + "/app/my/info"; + + /* 土地信息 */ public static final String LAND_OVERVIEW = BASE_HOST + "/land-resource/analysis/overview"; public static final String LAND_SUB_AREA = BASE_HOST + "/land-resource/analysis/subArea"; public static final String LAND_AREA_REGION = BASE_HOST + "/system/area/region"; @@ -43,9 +46,19 @@ public class Api { public static final String LAND_TYPE = BASE_HOST + "/land-resource/baseInfo/landTree"; public static final String LAND_RESOURCE_TYPE_NO_CHILD = BASE_HOST + "/land-resource/baseInfo/landTypeNoChild"; public static final String LAND_RESOURCE_LIST = BASE_HOST + "/land-resource/landManage/page"; + /* 种植计划 */ public static final String PLANT_PLAN_HOME = BASE_HOST + "/land-resource/annualManage/app/main"; public static final String PLANT_PLAN_LIST = BASE_HOST + "/land-resource/annualManage/page"; public static final String PLANT_PLAN_CROPS = BASE_HOST + "/land-resource/crops/list"; public static final String PLANT_PLAN_DETAIL = BASE_HOST + "/land-resource/annualManage/"; + public static final String PLANT_PLAN_ADD = BASE_HOST + "/land-resource/annualManage/save"; + public static final String PLANT_PLAN_EDIT = BASE_HOST + "/land-resource/annualManage/edit"; + public static final String PLANT_PLAN_ACTUAL = BASE_HOST + "/land-resource/annualManage/save-actual"; + + /* 土地巡查 */ + public static final String INSPECTION_STATUS = BASE_HOST + "/system/dict/data/type/land_inspection_status"; + public static final String INSPECTION_TYPE = BASE_HOST + "/system/dict/data/type/land_res_patrol_type"; + public static final String INSPECTION_LIST_ADMIN = BASE_HOST + "/land-resource/landInspection/page"; + public static final String INSPECTION_LIST_GENERAL = BASE_HOST + "/land-resource/landInspection/page/general"; } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java index 61acbfa..2e99526 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java @@ -4,6 +4,8 @@ public class Constant { public static String TOKEN = "token"; + public static String USER_INFO = "user_info"; + public static String LOGIN_USER_NAME = "login_user_name"; public static String SELECT_REGION = "select_region"; diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java index 1787432..614aa00 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java @@ -8,12 +8,14 @@ import com.chad.library.adapter.base.BaseViewHolder; import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.R; import com.tairui.gov_affairs_cloud.base.BaseFragment; +import com.tairui.gov_affairs_cloud.config.AppConfig; import com.tairui.gov_affairs_cloud.databinding.FragmentHomeBinding; import com.tairui.gov_affairs_cloud.entity.Api; import com.tairui.gov_affairs_cloud.entity.PieBean; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.home.entity.HomeEntity; import com.tairui.gov_affairs_cloud.ui.land.LandActivity; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; import com.tairui.gov_affairs_cloud.util.DensityUtils; import com.tairui.gov_affairs_cloud.util.IntentUtil; import com.tairui.gov_affairs_cloud.util.glide.GlideLoader; @@ -102,6 +104,18 @@ public class HomeFragment extends BaseFragment { binding.loadingView.setVisibility(View.GONE); binding.blankView.setVisibility(View.VISIBLE); }); + getUserInfo(); + } + + private void getUserInfo() { + RxHttp.get(Api.USER_INFO) + .asResponse(UserInfoEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + AppConfig.getInstance().setUserInfo(data); + }, (OnError) error -> { + showToast(error.getErrorMsg()); + }); } private void initView(HomeEntity data) { diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java index c6dd38d..795d7e4 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java @@ -3,6 +3,8 @@ package com.tairui.gov_affairs_cloud.ui.land; import java.util.ArrayList; import java.util.List; +import org.greenrobot.eventbus.EventBus; + import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; import com.contrarywind.interfaces.IPickerViewData; @@ -10,14 +12,23 @@ import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.base.BaseActivity; import com.tairui.gov_affairs_cloud.databinding.ActivityAddPlantPlanBinding; import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.land.entity.CropsEntity; import com.tairui.gov_affairs_cloud.ui.land.entity.LandAreaRegionEntity; import com.tairui.gov_affairs_cloud.ui.land.entity.LandGridEntity; import com.tairui.gov_affairs_cloud.util.ArrayUtil; +import com.tairui.gov_affairs_cloud.util.DateUtils; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; import com.tairui.gov_affairs_cloud.util.SingleClickListener; import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; import android.view.View; import rxhttp.RxHttp; @@ -45,6 +56,12 @@ public class AddPlantPlanActivity extends BaseActivity { selectRegion = landAreaRegionData.get(0).getAreaChildVOS().get(options1).getAreaChildVOS().get(options2); - setText(binding.tvRegion, selectRegion.getAreaName()); selectGrid = null; + getGridData(); }).setTitleText("土地区域选择").setContentTextSize(20) .setSelectOptions(0, 0) .setTitleBgColor(Color.WHITE) @@ -155,7 +168,7 @@ public class AddPlantPlanActivity extends BaseActivity { selectGrid = landGridData.getRecords().get(options1); - setText(binding.tvGrid, selectGrid.getGridName()); + setText(binding.tvGrid, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); }).setTitleText("土地网格选择").setContentTextSize(20) .setSelectOptions(0) .setTitleBgColor(Color.WHITE) @@ -248,7 +261,7 @@ public class AddPlantPlanActivity extends BaseActivity cycleData = new ArrayList<>(); if (growthCycleUnit == 1) { - for (int i = 1; i < 32; i++) { + for (int i = 1; i < 366; i++) { cycleData.add(new PickerEntity(i + "天")); } } else if (growthCycleUnit == 2) { @@ -257,7 +270,7 @@ public class AddPlantPlanActivity extends BaseActivity { + hideLoading(); + showSuccess("计划添加成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } + } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java new file mode 100644 index 0000000..f697aee --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java @@ -0,0 +1,232 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.contrarywind.interfaces.IPickerViewData; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityEditPlantActualBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; +import android.view.View; +import rxhttp.RxHttp; + +public class EditPlantActualActivity extends BaseActivity { + + private String selectMonth; + private String growthCycle; + + private OptionsPickerView monthPickerView; + + private PlantPlanDetailEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityEditPlantActualBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (PlantPlanDetailEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.inputArea.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); + binding.inputArea.setFilters(new InputFilter[] {new DecimalDigitsInputFilter()}); + + binding.tvGrid.setText(mData.getGridName()); + binding.inputPlanName.setText(mData.getPlanName()); + binding.tvCrops.setText(mData.getCropsName()); + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutMonth.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutMonth); + showMonthDialog(); + } + }); + binding.layoutCycle.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutCycle); + showCyclDialog(); + } + }); + binding.btnSubmit.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + checkSubmit(); + } + }); + } + + private void showMonthDialog() { + if (monthPickerView == null) { + List monthData = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + monthData.add(new PickerEntity((i + 1) + "月")); + } + monthPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectMonth = String.valueOf(options1 + 1); + setText(binding.tvMonth, selectMonth + "月"); + }).setTitleText("种植月份选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + monthPickerView.setPicker(monthData); + } + monthPickerView.show(); + } + + private void showCyclDialog() { + List cycleData = new ArrayList<>(); + int growthCycleUnit = Integer.parseInt(mData.getPlanParameters().getGrowthCycleUnit()); + if (growthCycleUnit == 1) { + for (int i = 1; i < 366; i++) { + cycleData.add(new PickerEntity(i + "天")); + } + } else if (growthCycleUnit == 2) { + for (int i = 1; i < 53; i++) { + cycleData.add(new PickerEntity(i + "周")); + } + } else if (growthCycleUnit == 3) { + for (int i = 1; i < 13; i++) { + cycleData.add(new PickerEntity(i + "个月")); + } + } else if (growthCycleUnit == 4) { + for (int i = 1; i < 6; i++) { + cycleData.add(new PickerEntity(i + "年")); + } + } + OptionsPickerView cyclePickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycle = String.valueOf(options1 + 1); + setText(binding.tvCycle, growthCycle + getCycleUnit(growthCycleUnit)); + }).setTitleText("种植周期时长选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cyclePickerView.setPicker(cycleData); + cyclePickerView.show(); + } + + private class PickerEntity implements IPickerViewData { + private String name; + + public PickerEntity(String m) { + this.name = m; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getPickerViewText() { + return name; + } + } + + private String getCycleUnit(int unit) { + String unitStr; + switch (unit) { + case 1: + unitStr = "天"; + break; + case 2: + unitStr = "周"; + break; + case 3: + unitStr = "个月"; + break; + case 4: + unitStr = "年"; + break; + default: + unitStr = ""; + break; + } + return unitStr; + } + + private void checkSubmit() { + String planArea = binding.inputArea.getText().toString().trim(); + if (TextUtils.isEmpty(planArea)) { + showError("请输入计划种植面积"); + return; + } + if (TextUtils.isEmpty(selectMonth)) { + showError("请选择种植月份"); + return; + } + if (TextUtils.isEmpty(growthCycle)) { + showError("请选择生长周期"); + return; + } + try { + double area = Double.parseDouble(planArea); + doAddPlanActual(area); + } catch (Exception e) { + showError("种植面积只可以输入数字"); + } + } + + private void doAddPlanActual(double planArea) { + showLoading(); + RxHttp.postJson(Api.PLANT_PLAN_ACTUAL) + .add("planId", mData.getId()) + .add("plantingArea", planArea) + .add("plantingMonths", selectMonth) + .add("growthCycle", growthCycle) + .add("growthCycleUnit", mData.getPlanParameters().getGrowthCycleUnit()) + .asResponse(Object.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + showSuccess("实际种植情况添加成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java new file mode 100644 index 0000000..6ad510c --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java @@ -0,0 +1,272 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.contrarywind.interfaces.IPickerViewData; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityEditPlantPlanBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; +import android.view.View; +import rxhttp.RxHttp; +import rxhttp.RxHttpJsonParam; + +public class EditPlantPlanActivity extends BaseActivity { + + private String selectMonth; + private String growthCycle; + private int growthCycleUnit = -1; //成长周期单位 1:天 2:周 3:月 4:年 + + private OptionsPickerView monthPickerView; + private OptionsPickerView cycleUnitPickerView; + + private PlantPlanDetailEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityEditPlantPlanBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (PlantPlanDetailEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.inputArea.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); + binding.inputArea.setFilters(new InputFilter[] {new DecimalDigitsInputFilter()}); + + binding.tvGrid.setText(mData.getGridName()); + binding.inputPlanName.setHint(mData.getPlanName()); + binding.tvCrops.setText(mData.getCropsName()); + binding.inputArea.setHint(String.valueOf(mData.getPlanParameters().getPlantingArea())); + binding.tvMonth.setHint(mData.getPlanParameters().getPlantingMonths() + "月"); + binding.tvCycle.setHint(mData.getPlanParameters().getGrowthCycle() + getCycleUnit( + Integer.parseInt(mData.getPlanParameters().getGrowthCycleUnit()))); + + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutMonth.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutMonth); + showMonthDialog(); + } + }); + binding.layoutCycle.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutCycle); + showCycleUnitDialog(); + } + }); + binding.btnSubmit.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + checkSubmit(); + } + }); + } + + private void showMonthDialog() { + if (monthPickerView == null) { + List monthData = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + monthData.add(new PickerEntity((i + 1) + "月")); + } + monthPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectMonth = String.valueOf(options1 + 1); + setText(binding.tvMonth, selectMonth + "月"); + }).setTitleText("种植月份选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + monthPickerView.setPicker(monthData); + } + monthPickerView.show(); + } + + private void showCycleUnitDialog() { + if (cycleUnitPickerView == null) { + List unitData = new ArrayList<>(); + unitData.add(new PickerEntity("天")); + unitData.add(new PickerEntity("周")); + unitData.add(new PickerEntity("月")); + unitData.add(new PickerEntity("年")); + cycleUnitPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycleUnit = options1 + 1; + showCyclDialog(); + }).setTitleText("种植周期单位选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cycleUnitPickerView.setPicker(unitData); + } + cycleUnitPickerView.show(); + } + + private void showCyclDialog() { + if (growthCycleUnit == -1) { + showError("请先选择生长周期单位"); + return; + } + List cycleData = new ArrayList<>(); + if (growthCycleUnit == 1) { + for (int i = 1; i < 366; i++) { + cycleData.add(new PickerEntity(i + "天")); + } + } else if (growthCycleUnit == 2) { + for (int i = 1; i < 53; i++) { + cycleData.add(new PickerEntity(i + "周")); + } + } else if (growthCycleUnit == 3) { + for (int i = 1; i < 13; i++) { + cycleData.add(new PickerEntity(i + "个月")); + } + } else if (growthCycleUnit == 4) { + for (int i = 1; i < 6; i++) { + cycleData.add(new PickerEntity(i + "年")); + } + } + OptionsPickerView cyclePickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycle = String.valueOf(options1 + 1); + setText(binding.tvCycle, growthCycle + getCycleUnit(growthCycleUnit)); + }).setTitleText("种植周期时长选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cyclePickerView.setPicker(cycleData); + cyclePickerView.show(); + } + + private class PickerEntity implements IPickerViewData { + private String name; + + public PickerEntity(String m) { + this.name = m; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getPickerViewText() { + return name; + } + } + + private String getCycleUnit(int unit) { + String unitStr; + switch (unit) { + case 1: + unitStr = "天"; + break; + case 2: + unitStr = "周"; + break; + case 3: + unitStr = "个月"; + break; + case 4: + unitStr = "年"; + break; + default: + unitStr = ""; + break; + } + return unitStr; + } + + private void checkSubmit() { + boolean hasChange = false; + RxHttpJsonParam http = RxHttp.putJson(Api.PLANT_PLAN_EDIT); + http.add("id", mData.getId()); + String planName = binding.inputPlanName.getText().toString().trim(); + if (!TextUtils.isEmpty(planName)) { + http.add("planName", planName); + hasChange = true; + } + String planArea = binding.inputArea.getText().toString().trim(); + if (!TextUtils.isEmpty(planArea)) { + try { + double area = Double.parseDouble(planArea); + http.add("plantingArea", area); + hasChange = true; + } catch (Exception e) { + showError("种植面积只可以输入数字"); + return; + } + } + if (!TextUtils.isEmpty(selectMonth)) { + http.add("plantingMonths", selectMonth); + hasChange = true; + } + if (!TextUtils.isEmpty(growthCycle) && growthCycleUnit != -1) { + http.add("growthCycle", growthCycle); + http.add("growthCycleUnit", growthCycleUnit); + hasChange = true; + } + if (hasChange) { + showLoading(); + http.asResponse(Object.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + showSuccess("计划修改成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } else { + finish(); + } + + } + +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java new file mode 100644 index 0000000..35f3a32 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java @@ -0,0 +1,56 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import com.tairui.gov_affairs_cloud.R; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityInspectionDetailBinding; +import com.tairui.gov_affairs_cloud.ui.land.entity.InspectionListEntity; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.os.Bundle; +import android.view.View; + +public class InspectionDetailActivity extends BaseActivity { + + private InspectionListEntity.RecordsEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityInspectionDetailBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (InspectionListEntity.RecordsEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + setText(binding.tvTaskStatus, mData.getInspectionStatusName()); + setText(binding.tvTaskCode, mData.getTaskCode()); + setText(binding.tvTaskName, mData.getTaskName()); + setText(binding.tvTaskMembers, mData.getTaskMembers()); + setText(binding.tvTaskType, mData.getInspectionType()); + setText(binding.tvTaskTarget, mData.getInspectionTarget()); + setText(binding.tvTaskNotes, mData.getNotes()); + if (mData.getInspectionStatus().equals("-1")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_green)); + } else if (mData.getInspectionStatus().equals("00")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_blue)); + } else if (mData.getInspectionStatus().equals("01")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_orange)); + } else if (mData.getInspectionStatus().equals("02")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_tv_content)); + } + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + } + +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java new file mode 100644 index 0000000..ffaa700 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java @@ -0,0 +1,373 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.kongzue.dialogx.dialogs.MessageDialog; +import com.kongzue.dialogx.dialogs.PopMenu; +import com.kongzue.dialogx.util.ItemDivider; +import com.orhanobut.hawk.Hawk; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.R; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.config.AppConfig; +import com.tairui.gov_affairs_cloud.databinding.ActivityInspectionListBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.Constant; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.DictDataEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.InspectionListEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.LandAreaRegionEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.LandGridEntity; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; +import com.tairui.gov_affairs_cloud.util.ArrayUtil; +import com.tairui.gov_affairs_cloud.util.DensityUtils; +import com.tairui.gov_affairs_cloud.util.IntentUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; +import com.tairui.gov_affairs_cloud.util.ToastUtil; +import com.tairui.gov_affairs_cloud.widget.RefreshRecyclerView; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import rxhttp.RxHttp; +import rxhttp.RxHttpNoBodyParam; + +public class InspectionListActivity extends BaseActivity { + + private LandAreaRegionEntity selectRegion; + private LandGridEntity.RecordsEntity selectGrid; + private DictDataEntity selectType; + + private List landAreaRegionData; + private LandGridEntity landGridData; + + private OptionsPickerView landRegionPickerView; + private OptionsPickerView landGridPickerView; + + private InspectionListAdapter mAdapter; + private int currentPageIndex = 1; + + private List typeData; + + @Override + protected Class getBindingClass() { + return ActivityInspectionListBinding.class; + } + + @Override + protected void onQueryArguments() { + EventBus.getDefault().register(this); + if (Hawk.contains(Constant.SELECT_REGION)) { + selectRegion = Hawk.get(Constant.SELECT_REGION); + } + if (Hawk.contains(Constant.SELECT_GRID)) { + selectGrid = Hawk.get(Constant.SELECT_GRID); + } + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext)); + mAdapter = new InspectionListAdapter(); + binding.refreshRecycler.setAdapter(mAdapter); + if (selectRegion != null && selectGrid != null) { + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); + } + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutRegion.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + showRegionDialog(); + } + }); + binding.refreshRecycler.setRefreshRecyclerListener(new RefreshRecyclerView.RefreshRecyclerListener() { + @Override + public void onRefresh() { + currentPageIndex = 1; + requestData(false); + } + + @Override + public void onLoadmore() { + requestData(true); + } + + @Override + public void onBlankClick() { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + }); + mAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> { + InspectionListEntity.RecordsEntity item = mAdapter.getItem(i); + Bundle bundle = new Bundle(); + bundle.putSerializable("data", item); + IntentUtil.startActivity(mContext, InspectionDetailActivity.class, bundle); + }); + binding.layoutType.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + showStatusMenu(); + } + }); + } + + @Override + protected void onApplyData() { + getInspectionTypeData(); + getRegionData(); + if (selectRegion != null && selectGrid != null) { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + } + + private void getRegionData() { + RxHttp.get(Api.LAND_AREA_REGION) + .add("areaCode", "530926") + .asResponseList(LandAreaRegionEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + landAreaRegionData = data; + if (selectRegion == null || selectGrid == null) { + showRegionNoticeMsg(); + } + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showRegionNoticeMsg() { + MessageDialog.show("选择区域", "请先选择网格区域信息", "确定", "取消") + .setOkButton((baseDialog, v1) -> { + showRegionDialog(); + return false; + }).setCancelButton((dialog, v) -> { + finish(); + return false; + }); + } + + private void getInspectionTypeData() { + RxHttp.get(Api.INSPECTION_TYPE) + .asResponseList(DictDataEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + DictDataEntity allItem = new DictDataEntity(); + allItem.setDictLabel("全部"); + data.add(0, allItem); + typeData = data; + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showStatusMenu() { + List menus = new ArrayList<>(); + for (DictDataEntity item : typeData) { + menus.add(item.getDictLabel()); + } + PopMenu.show(binding.layoutType, menus) + .setBackgroundColorRes(R.color.white) + .setWidth(DensityUtils.dp2px(mContext, 100)) + .setOnMenuItemClickListener((dialog, text, index) -> { + selectType = typeData.get(index); + setText(binding.tvType, selectType.getDictLabel()); + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + return false; + }).setItemDivider(new ItemDivider(15, 15, 1)); + } + + private void getGridData() { + RxHttp.get(Api.LAND_GRID_LIST) + .add("regionCode", selectRegion.getAreaCode()) + .asResponse(LandGridEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + if (ArrayUtil.isEmpty(data.getRecords())) { + showToast("当前区域下没有网格,请重新选择"); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); + } else { + landGridData = data; + showLandGridDialog(); + } + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showRegionDialog() { + if (landRegionPickerView == null) { + List> subLandData = new ArrayList<>(); + for (LandAreaRegionEntity itemData : landAreaRegionData.get(0).getAreaChildVOS()) { + subLandData.add(itemData.getAreaChildVOS()); + } + + landRegionPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectRegion = landAreaRegionData.get(0).getAreaChildVOS().get(options1).getAreaChildVOS().get(options2); + Hawk.put(Constant.SELECT_REGION, selectRegion); + selectGrid = null; + Hawk.delete(Constant.SELECT_GRID); + getGridData(); + }).setTitleText("土地区域选择").setContentTextSize(20) + .setSelectOptions(0, 0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) //设置外部遮罩颜色 + .addOnCancelClickListener(view -> finish()) + .build(); + + landRegionPickerView.setPicker(landAreaRegionData.get(0).getAreaChildVOS(), subLandData);//二级选择器 + } + landRegionPickerView.show(); + } + + private void showGridNoticeMsg() { + MessageDialog.show("选择网格", "不继续选择网格信息了吗?", "确定", "取消") + .setOkButton((baseDialog, v1) -> { + finish(); + return false; + }); + } + + private void showLandGridDialog() { + if (landGridPickerView == null) { + landGridPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectGrid = landGridData.getRecords().get(options1); + Hawk.put(Constant.SELECT_GRID, selectGrid); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + }).setTitleText("土地网格选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .addOnCancelClickListener(view -> { + if (selectGrid == null) { + showGridNoticeMsg(); + } + }).build(); + + landGridPickerView.setPicker(landGridData.getRecords()); + } + landGridPickerView.show(); + } + + private void requestData(boolean loadmore) { + UserInfoEntity userInfo = AppConfig.getInstance().getUserInfo(); + RxHttpNoBodyParam http; + if (userInfo.isAdmin()) { + http = RxHttp.get(Api.INSPECTION_LIST_ADMIN); + } else { + http = RxHttp.get(Api.INSPECTION_LIST_GENERAL); + } + if (selectType != null && !TextUtils.isEmpty(selectType.getDictValue())) { + http.add("inspectionTypeCode", selectType.getDictValue()); + } + http.add("gridId", selectGrid.getId()) + .add("current", currentPageIndex) + .add("size", Api.SIZE_PAGE) + .asResponse(InspectionListEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + if (loadmore) { + binding.refreshRecycler.finishLoadMore(); + } + if (!ArrayUtil.isEmpty(data.getRecords())) { + if (loadmore) { + mAdapter.addData(data.getRecords()); + } else { + mAdapter.setNewData(data.getRecords()); + } + currentPageIndex += 1; + if (ArrayUtil.size(data.getRecords()) < Api.SIZE_PAGE) { + binding.refreshRecycler.setNoMoreData(true); + } else { + binding.refreshRecycler.setNoMoreData(false); + } + binding.refreshRecycler.showContent(); + } else { + binding.refreshRecycler.showError(); + binding.refreshRecycler.setNoMoreData(true); + } + }, (OnError) error -> { + binding.refreshRecycler.showError(); + binding.refreshRecycler.setNoMoreData(true); + ToastUtil.showLongToast(error.getErrorMsg()); + }); + } + + private class InspectionListAdapter extends BaseQuickAdapter { + + public InspectionListAdapter() { + super(R.layout.item_inspection); + } + + @Override + protected void convert(@NonNull BaseViewHolder holder, InspectionListEntity.RecordsEntity entity) { + holder.setText(R.id.tvName, entity.getTaskName()); + holder.setText(R.id.tvType, entity.getInspectionType()); + holder.setText(R.id.tvStatus, entity.getInspectionStatusName()); + holder.setText(R.id.tvTaskCode, "任务编号:" + entity.getTaskCode()); + holder.setText(R.id.tvTaskMembers, entity.getTaskMembers()); + holder.setText(R.id.tvTaskTarget, entity.getInspectionTarget()); + if (entity.getInspectionStatus().equals("-1")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_green_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_green)); + } else if (entity.getInspectionStatus().equals("00")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_blue_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_blue)); + } else if (entity.getInspectionStatus().equals("01")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_orange_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_orange)); + } else if (entity.getInspectionStatus().equals("02")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_gray_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_tv_content)); + } + + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onMessageReceive(EventMessage message) { + if (null != message && !TextUtils.isEmpty(message.getLabel())) { + if (EventConstant.REFRESH_LIST.equals(message.getLabel())) { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + } + } + + @Override + protected void onDestroy() { + EventBus.getDefault().unregister(this); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java index 4ff8395..57b370c 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java @@ -92,19 +92,13 @@ public class PlantPlanActivity extends BaseActivity { showRegionDialog(); } }); - binding.layoutGrid.setOnClickListener(new SingleClickListener() { - @Override - protected void onSingleClick(View v) { - showLandGridDialog(); - } - }); binding.layoutPlanSummarize.setOnClickListener(new SingleClickListener() { @Override protected void onSingleClick(View v) { goList(); } }); - binding.layoutPlanSummarize.setOnClickListener(new SingleClickListener() { + binding.layoutGridProgress.setOnClickListener(new SingleClickListener() { @Override protected void onSingleClick(View v) { goList(); @@ -122,16 +116,13 @@ public class PlantPlanActivity extends BaseActivity { @Override protected void onApplyData() { getRegionData(); - if (selectRegion != null) { - getGridData(); - } if (selectRegion != null && selectGrid != null) { getPlantPlanData(); } } private void showRegionNoticeMsg() { - MessageDialog.show("选择区域", "请先选择区域信息", "确定", "取消") + MessageDialog.show("选择区域", "请先选择网格区域信息", "确定", "取消") .setOkButton((baseDialog, v1) -> { showRegionDialog(); return false; @@ -148,7 +139,7 @@ public class PlantPlanActivity extends BaseActivity { .as(RxLife.asOnMain(this)) .subscribe(data -> { landAreaRegionData = data; - if (selectRegion == null) { + if (selectRegion == null || selectGrid == null) { showRegionNoticeMsg(); } }, (OnError) error -> showToast(error.getErrorMsg())); @@ -163,12 +154,10 @@ public class PlantPlanActivity extends BaseActivity { hideLoading(); if (ArrayUtil.isEmpty(data.getRecords())) { showToast("当前区域下没有网格,请重新选择"); - binding.layoutGrid.postDelayed(() -> showRegionDialog(), 500); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); } else { landGridData = data; - if (selectGrid == null) { - showLandGridDialog(); - } + showLandGridDialog(); } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -185,7 +174,6 @@ public class PlantPlanActivity extends BaseActivity { Hawk.put(Constant.SELECT_REGION, selectRegion); selectGrid = null; Hawk.delete(Constant.SELECT_GRID); - showLoading(); getGridData(); }).setTitleText("土地区域选择").setContentTextSize(20) .setSelectOptions(0, 0) @@ -249,8 +237,7 @@ public class PlantPlanActivity extends BaseActivity { } private void initView() { - setText(binding.tvRegion, selectRegion.getAreaName()); - setText(binding.tvGrid, selectGrid.getGridName()); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); setText(binding.tvYear, DateUtils.getCurrentYear() + "年种植计划"); setText(binding.tvPlanArea, String.valueOf(mData.getTotal().getTotalPlanArea())); setText(binding.tvRealArea, String.valueOf(mData.getTotal().getTotalActualArea())); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java index 77f4c38..f93f75a 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java @@ -8,9 +8,11 @@ import com.tairui.gov_affairs_cloud.entity.Api; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; import com.tairui.gov_affairs_cloud.util.AppUtil; +import com.tairui.gov_affairs_cloud.util.IntentUtil; import com.tairui.gov_affairs_cloud.util.SingleClickListener; import com.tairui.gov_affairs_cloud.util.glide.GlideLoader; +import android.os.Bundle; import android.text.TextUtils; import android.view.View; import rxhttp.RxHttp; @@ -44,13 +46,17 @@ public class PlantPlanDetailActivity extends BaseActivity { - showRegionDialog(); - return false; - }).setCancelButton((dialog, v) -> { - finish(); - return false; - }); - } - private void getRegionData() { RxHttp.get(Api.LAND_AREA_REGION) .add("areaCode", "530926") @@ -170,9 +156,6 @@ public class PlantPlanListActivity extends BaseActivity { landAreaRegionData = data; - if (selectRegion == null) { - showRegionNoticeMsg(); - } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -216,12 +199,10 @@ public class PlantPlanListActivity extends BaseActivity showRegionDialog(), 500); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); } else { landGridData = data; - if (selectGrid == null) { - showLandGridDialog(); - } + showLandGridDialog(); } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -238,13 +219,12 @@ public class PlantPlanListActivity extends BaseActivity finish()) .build(); @@ -266,6 +246,7 @@ public class PlantPlanListActivity extends BaseActivity { selectGrid = landGridData.getRecords().get(options1); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); Hawk.put(Constant.SELECT_GRID, selectGrid); binding.refreshRecycler.showLoading(); currentPageIndex = 1; @@ -372,4 +353,20 @@ public class PlantPlanListActivity extends BaseActivity records; + @SerializedName("orders") + private List orders; + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public Integer getCurrent() { + return current; + } + + public void setCurrent(Integer current) { + this.current = current; + } + + public Boolean isOptimizeCountSql() { + return optimizeCountSql; + } + + public void setOptimizeCountSql(Boolean optimizeCountSql) { + this.optimizeCountSql = optimizeCountSql; + } + + public Boolean isSearchCount() { + return searchCount; + } + + public void setSearchCount(Boolean searchCount) { + this.searchCount = searchCount; + } + + public Object getMaxLimit() { + return maxLimit; + } + + public void setMaxLimit(Object maxLimit) { + this.maxLimit = maxLimit; + } + + public Object getCountId() { + return countId; + } + + public void setCountId(Object countId) { + this.countId = countId; + } + + public Integer getPages() { + return pages; + } + + public void setPages(Integer pages) { + this.pages = pages; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } + + public List getOrders() { + return orders; + } + + public void setOrders(List orders) { + this.orders = orders; + } + + public static class RecordsEntity implements Serializable { + @SerializedName("id") + private String id; + @SerializedName("taskCode") + private String taskCode; + @SerializedName("taskName") + private String taskName; + @SerializedName("taskMembers") + private String taskMembers; + @SerializedName("inspectionTypeCode") + private String inspectionTypeCode; + @SerializedName("inspectionType") + private String inspectionType; + @SerializedName("notes") + private String notes; + @SerializedName("inspectionTarget") + private String inspectionTarget; + @SerializedName("isIllegal") + private Object isIllegal; + @SerializedName("inspectionStatus") + private String inspectionStatus; + @SerializedName("inspectionStatusName") + private String inspectionStatusName; + @SerializedName("inspectionSituation") + private Object inspectionSituation; + @SerializedName("inspectionUsers") + private List inspectionUsers; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTaskCode() { + return taskCode; + } + + public void setTaskCode(String taskCode) { + this.taskCode = taskCode; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getTaskMembers() { + return taskMembers; + } + + public void setTaskMembers(String taskMembers) { + this.taskMembers = taskMembers; + } + + public String getInspectionTypeCode() { + return inspectionTypeCode; + } + + public void setInspectionTypeCode(String inspectionTypeCode) { + this.inspectionTypeCode = inspectionTypeCode; + } + + public String getInspectionType() { + return inspectionType; + } + + public void setInspectionType(String inspectionType) { + this.inspectionType = inspectionType; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public String getInspectionTarget() { + return inspectionTarget; + } + + public void setInspectionTarget(String inspectionTarget) { + this.inspectionTarget = inspectionTarget; + } + + public Object getIsIllegal() { + return isIllegal; + } + + public void setIsIllegal(Object isIllegal) { + this.isIllegal = isIllegal; + } + + public String getInspectionStatus() { + return inspectionStatus; + } + + public void setInspectionStatus(String inspectionStatus) { + this.inspectionStatus = inspectionStatus; + } + + public String getInspectionStatusName() { + return inspectionStatusName; + } + + public void setInspectionStatusName(String inspectionStatusName) { + this.inspectionStatusName = inspectionStatusName; + } + + public Object getInspectionSituation() { + return inspectionSituation; + } + + public void setInspectionSituation(Object inspectionSituation) { + this.inspectionSituation = inspectionSituation; + } + + public List getInspectionUsers() { + return inspectionUsers; + } + + public void setInspectionUsers(List inspectionUsers) { + this.inspectionUsers = inspectionUsers; + } + + public static class InspectionUsersEntity implements Serializable{ + @SerializedName("createTime") + private String createTime; + @SerializedName("createUser") + private String createUser; + @SerializedName("updateTime") + private Object updateTime; + @SerializedName("updateUser") + private Object updateUser; + @SerializedName("tenantId") + private Integer tenantId; + @SerializedName("id") + private Long id; + @SerializedName("inspectionId") + private Long inspectionId; + @SerializedName("userId") + private Long userId; + @SerializedName("userName") + private String userName; + @SerializedName("deleteFlag") + private String deleteFlag; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public Object getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Object updateTime) { + this.updateTime = updateTime; + } + + public Object getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(Object updateUser) { + this.updateUser = updateUser; + } + + public Integer getTenantId() { + return tenantId; + } + + public void setTenantId(Integer tenantId) { + this.tenantId = tenantId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getInspectionId() { + return inspectionId; + } + + public void setInspectionId(Long inspectionId) { + this.inspectionId = inspectionId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag; + } + } + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java index f0b8378..846119c 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java @@ -1,8 +1,10 @@ package com.tairui.gov_affairs_cloud.ui.land.entity; +import java.io.Serializable; + import com.google.gson.annotations.SerializedName; -public class PlantPlanDetailEntity { +public class PlantPlanDetailEntity implements Serializable { @SerializedName("regionCode") private String regionCode; @@ -105,7 +107,7 @@ public class PlantPlanDetailEntity { this.currentProgress = currentProgress; } - public static class PlanParametersEntity { + public static class PlanParametersEntity implements Serializable{ @SerializedName("plantingArea") private Double plantingArea; @SerializedName("plantingMonths") @@ -148,7 +150,7 @@ public class PlantPlanDetailEntity { } } - public static class ActualParametersEntity { + public static class ActualParametersEntity implements Serializable{ @SerializedName("plantingArea") private Double plantingArea; @SerializedName("plantingMonths") diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java index ffa1cb8..e38502e 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java @@ -4,8 +4,10 @@ import com.kongzue.dialogx.dialogs.MessageDialog; import com.orhanobut.hawk.Hawk; import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.base.BaseFragment; +import com.tairui.gov_affairs_cloud.config.AppConfig; import com.tairui.gov_affairs_cloud.databinding.FragmentMyBinding; import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.Constant; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.login.LoginActivity; import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; @@ -38,7 +40,8 @@ public class MyFragment extends BaseFragment { protected void onSingleClick(View v) { MessageDialog.show("安全退出", "确定要退出登录吗?", "确定", "取消") .setOkButton((baseDialog, v1) -> { - Hawk.put("token",""); + Hawk.delete(Constant.TOKEN); + Hawk.delete(Constant.USER_INFO); IntentUtil.startActivity(mContext, LoginActivity.class, null); getActivity().finish(); return false; @@ -49,10 +52,21 @@ public class MyFragment extends BaseFragment { @Override protected void onApplyData() { + if (AppConfig.getInstance().getUserInfo() == null) { + getUserInfo(); + } else { + UserInfoEntity userInfo = AppConfig.getInstance().getUserInfo(); + initView(userInfo); + } + } + + private void getUserInfo() { RxHttp.get(Api.USER_INFO) .asResponse(UserInfoEntity.class) .as(RxLife.asOnMain(this)) .subscribe(data -> { + AppConfig.getInstance().setUserInfo(data); + Hawk.put(Constant.USER_INFO, data); initView(data); }, (OnError) error -> { showToast(error.getErrorMsg()); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java index 1878ed1..847c3f1 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java @@ -6,94 +6,104 @@ import com.google.gson.annotations.SerializedName; public class UserInfoEntity implements Serializable { - @SerializedName("username") - private String username; - @SerializedName("organization") - private Object organization; - @SerializedName("departmental") - private String departmental; - @SerializedName("phone") - private String phone; - @SerializedName("headPic") - private String headPic; - @SerializedName("no") - private String no; - @SerializedName("sex") - private String sex; - @SerializedName("email") - private String email; - @SerializedName("todoCount") - private Integer todoCount; + @SerializedName("username") + private String username; + @SerializedName("organization") + private Object organization; + @SerializedName("departmental") + private String departmental; + @SerializedName("phone") + private String phone; + @SerializedName("headPic") + private String headPic; + @SerializedName("no") + private String no; + @SerializedName("sex") + private String sex; + @SerializedName("email") + private String email; + @SerializedName("todoCount") + private Integer todoCount; + @SerializedName("admin") + private boolean admin; - public String getUsername() { - return username; - } + public boolean isAdmin() { + return admin; + } - public void setUsername(String username) { - this.username = username; - } + public void setAdmin(boolean admin) { + this.admin = admin; + } - public Object getOrganization() { - return organization; - } + public String getUsername() { + return username; + } - public void setOrganization(Object organization) { - this.organization = organization; - } + public void setUsername(String username) { + this.username = username; + } - public String getDepartmental() { - return departmental; - } + public Object getOrganization() { + return organization; + } - public void setDepartmental(String departmental) { - this.departmental = departmental; - } + public void setOrganization(Object organization) { + this.organization = organization; + } - public String getPhone() { - return phone; - } + public String getDepartmental() { + return departmental; + } - public void setPhone(String phone) { - this.phone = phone; - } + public void setDepartmental(String departmental) { + this.departmental = departmental; + } - public String getHeadPic() { - return headPic; - } + public String getPhone() { + return phone; + } - public void setHeadPic(String headPic) { - this.headPic = headPic; - } + public void setPhone(String phone) { + this.phone = phone; + } - public String getNo() { - return no; - } + public String getHeadPic() { + return headPic; + } - public void setNo(String no) { - this.no = no; - } + public void setHeadPic(String headPic) { + this.headPic = headPic; + } - public String getSex() { - return sex; - } + public String getNo() { + return no; + } - public void setSex(String sex) { - this.sex = sex; - } + public void setNo(String no) { + this.no = no; + } - public String getEmail() { - return email; - } + public String getSex() { + return sex; + } - public void setEmail(String email) { - this.email = email; - } + public void setSex(String sex) { + this.sex = sex; + } - public Integer getTodoCount() { - return todoCount; - } + public String getEmail() { + return email; + } - public void setTodoCount(Integer todoCount) { - this.todoCount = todoCount; - } + public void setEmail(String email) { + this.email = email; + } + + public Integer getTodoCount() { + return todoCount; + } + + public void setTodoCount(Integer todoCount) { + this.todoCount = todoCount; + } } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java index 3f41ea8..f049c63 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java @@ -9,6 +9,7 @@ import com.tairui.gov_affairs_cloud.R; import com.tairui.gov_affairs_cloud.base.BaseFragment; import com.tairui.gov_affairs_cloud.databinding.FragmentWorkspaceBinding; import com.tairui.gov_affairs_cloud.ui.land.GridInfoActivity; +import com.tairui.gov_affairs_cloud.ui.land.InspectionListActivity; import com.tairui.gov_affairs_cloud.ui.land.LandActivity; import com.tairui.gov_affairs_cloud.ui.land.LandResouceInfoActivity; import com.tairui.gov_affairs_cloud.ui.land.PlantPlanActivity; @@ -69,6 +70,8 @@ public class WorkSpaceFragment extends BaseFragment { IntentUtil.startActivity(mContext, PlantPlanActivity.class); } else if (_id == 6) { IntentUtil.startActivity(mContext, LandResouceInfoActivity.class); + } else if (_id == 7) { + IntentUtil.startActivity(mContext, InspectionListActivity.class); } }); } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java b/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java new file mode 100644 index 0000000..285e496 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java @@ -0,0 +1,33 @@ +package com.tairui.gov_affairs_cloud.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import android.text.InputFilter; +import android.text.Spanned; + +public class DecimalDigitsInputFilter implements InputFilter { + // 正则表达式,用于匹配数字和小数点 + private Pattern mPattern; + + public DecimalDigitsInputFilter() { + // 允许输入数字和最多一个小数点 + mPattern = Pattern.compile("[0-9]*+(\\.[0-9]*)?"); + } + + @Override + public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { + // 构建输入的文本 + String newText = dest.subSequence(0, dstart) + source.subSequence(start, end).toString() + dest.subSequence(dend, dest.length()); + + // 检查是否符合正则表达式 + Matcher matcher = mPattern.matcher(newText); + if (!matcher.matches()) { + // 不符合规则,返回空字符串,即不接受输入 + return ""; + } + + // 符合规则,允许输入 + return null; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml new file mode 100644 index 0000000..777ae8f --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml new file mode 100644 index 0000000..0c182f6 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml new file mode 100644 index 0000000..57b67e6 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml b/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml new file mode 100644 index 0000000..9c1ff96 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_plant_plan.xml b/app/src/main/res/layout/activity_add_plant_plan.xml index 312089b..edbc018 100644 --- a/app/src/main/res/layout/activity_add_plant_plan.xml +++ b/app/src/main/res/layout/activity_add_plant_plan.xml @@ -56,46 +56,6 @@ android:paddingLeft="16dp" android:paddingRight="16dp"> - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_edit_plant_plan.xml b/app/src/main/res/layout/activity_edit_plant_plan.xml new file mode 100644 index 0000000..d140ccc --- /dev/null +++ b/app/src/main/res/layout/activity_edit_plant_plan.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspection_detail.xml b/app/src/main/res/layout/activity_inspection_detail.xml new file mode 100644 index 0000000..6b3123c --- /dev/null +++ b/app/src/main/res/layout/activity_inspection_detail.xml @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspection_list.xml b/app/src/main/res/layout/activity_inspection_list.xml new file mode 100644 index 0000000..3ba96b8 --- /dev/null +++ b/app/src/main/res/layout/activity_inspection_list.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_plant_plan.xml b/app/src/main/res/layout/activity_plant_plan.xml index 946bccd..308a7e0 100644 --- a/app/src/main/res/layout/activity_plant_plan.xml +++ b/app/src/main/res/layout/activity_plant_plan.xml @@ -54,68 +54,37 @@ android:layout_marginRight="16dp" android:orientation="vertical"> + + android:gravity="left|center_vertical" + android:paddingTop="12dp" + android:paddingBottom="12dp"> - + + + android:ellipsize="end" + android:maxLines="1" + android:textColor="@color/color_txt_black" + android:textSize="14sp" + tools:text="耿马镇白马社区耿马镇白马社区耿马镇白马社区耿马镇白马社区" /> - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/activity_plant_plan_list.xml b/app/src/main/res/layout/activity_plant_plan_list.xml index 35f865b..330b7a7 100644 --- a/app/src/main/res/layout/activity_plant_plan_list.xml +++ b/app/src/main/res/layout/activity_plant_plan_list.xml @@ -39,69 +39,37 @@ + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:gravity="left|center_vertical" + android:paddingTop="12dp" + android:paddingBottom="12dp"> - + + + android:ellipsize="end" + android:maxLines="1" + android:textColor="@color/color_txt_black" + android:textSize="14sp" + tools:text="耿马镇白马社区耿马镇白马社区耿马镇白马社区耿马镇白马社区" /> - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/item_inspection.xml b/app/src/main/res/layout/item_inspection.xml new file mode 100644 index 0000000..f143913 --- /dev/null +++ b/app/src/main/res/layout/item_inspection.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-xxhdpi/ic_cancel.png b/app/src/main/res/mipmap-xxhdpi/ic_cancel.png new file mode 100644 index 0000000..4221208 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_cancel.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_edit_white.png b/app/src/main/res/mipmap-xxhdpi/ic_edit_white.png new file mode 100644 index 0000000..c969dfb Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_edit_white.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_location_small.png b/app/src/main/res/mipmap-xxhdpi/ic_location_small.png new file mode 100644 index 0000000..1aec373 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_location_small.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_member.png b/app/src/main/res/mipmap-xxhdpi/ic_member.png new file mode 100644 index 0000000..ddd9bfb Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_member.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_publish_white.png b/app/src/main/res/mipmap-xxhdpi/ic_publish_white.png new file mode 100644 index 0000000..022b5e2 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_publish_white.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6e695b0..db9ae06 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,6 +9,8 @@ #35353F #666666 #444444 + @color/color_blue + #FFA423 #FF4E3D #2AD848 #999999