管灌系统巡查员智能手机App
1.修改app的Icon。
2.优化取水口加载本地数据,改为异步加载。
3.添加取水口点击后显示取水口信息。
4.美化登录界面。
1 文件已重命名
18个文件已修改
5个文件已添加
8个文件已删除
980 ■■■■ 已修改文件
app/src/main/AndroidManifest.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/js/map.js 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/IssueListActivity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/adapter/IssueAdapter.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/MarkerResult.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/tool/MarkerUtils.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/utils/WebViewUtils.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/ic_right_blue.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_issue_detail.xml 148 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_map.xml 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_issue.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_order.xml 83 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-hdpi/ic_launcher.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-hdpi/ic_launcher_round.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-mdpi/ic_launcher.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-mdpi/ic_launcher_round.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/logo1.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xhdpi/logo2.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_launcher.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml
@@ -69,9 +69,9 @@
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:hardwareAccelerated="true"
        android:icon="@mipmap/ic_launcher"
        android:icon="@mipmap/logo2"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:roundIcon="@mipmap/logo2"
        android:supportsRtl="true"
        android:theme="@style/Theme.PipIrrApp"
        android:usesCleartextTraffic="true"
@@ -104,8 +104,9 @@
        </activity>
        <activity android:name=".activity.OrderDetailActivity" />
        <activity android:name=".activity.OrderDealActivity" />
        <activity android:name=".activity.AddIssueActivity"/>
        <activity android:name=".activity.IssueListActivity"/>
        <activity android:name=".activity.AddIssueActivity" />
        <activity android:name=".activity.IssueListActivity" />
        <activity android:name=".activity.IssueDetailActivity" />
        <!--        <activity android:name=".activity.MainActivity" />-->
app/src/main/assets/js/map.js
@@ -18,11 +18,11 @@
        mountMethodToWindow();
    });
    window.onload = function () {
        console.log(window.onload);  // 打印数组数据
        //加载坐标点
        window.Android.loadMarker();
    };
    // window.onload = function () {
    //     console.log(window.onload);  // 打印数组数据
    //     //加载坐标点
    //     window.Android.loadMarker();
    // };
    // 初始化地图
    function initMap() {
        //    影像底图
@@ -170,8 +170,8 @@
        window.updateLocation = updateLocation;
        window.aginShowLocation = aginShowLocation;
        window.cleanLocationLay = cleanLocationLay;
        window.updateInspectionLocation=updateInspectionLocation;
        window.cleanLoclLay=cleanLoclLay;
        window.updateInspectionLocation = updateInspectionLocation;
        window.cleanLoclLay = cleanLoclLay;
    }
@@ -204,9 +204,9 @@
    }
    // 点击标注的事件
    function addMarkerListener(data) {
    function addMarkerListener(id,data) {
        chageMarkerIcon(data);
        showWaterIntakeDetail("模拟数据");
        showWaterIntakeDetail(id);
    }
    // 修改点击标注的图标
@@ -244,35 +244,33 @@
        return data1.lat === data2.lat && data1.lng === data2.lng;
    }
    //添加从原生传过来的坐标并显示在地图上
    function addMarker(jsonData) {
    function addMarker(id,lng,lat,name) {
        console.log("function》》》》》addMarker");
        var array = JSON.parse(jsonData);
        var icon = new T.Icon({
            iconUrl: markerBluePath,
            iconSize: new T.Point(27, 27),
            iconAnchor: new T.Point(10, 25)
        });
        array.forEach(element => {
            let marker = new T.Marker(
                new T.LngLat(element[0], element[1]) // 创建标注
                , { icon: icon });
            //添加点击事件
            marker.addEventListener("click", (data) => {
                addMarkerListener(data)
            });
            map.addOverLay(marker); // 将标注添加到地图中
            let label = new T.Label({
                text: element[2],
                position: marker.getLngLat(),
                offset: new T.Point(-35, 8), // 设置标注文字的位置
                opacity: 1, // 设置文本的显示不透明度(范围0-1)
            });
            label.setBorderLine(0); // 设置文本的边框线宽
            label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色)
            label.setFontColor("#0000FF");
            label.setFontSize(10);
            map.addOverLay(label);
        let marker = new T.Marker(
            new T.LngLat(lng, lat) // 创建标注
            , { icon: icon });
        //添加点击事件
        marker.addEventListener("click", (data) => {
            addMarkerListener(id,data)
        });
        map.addOverLay(marker); // 将标注添加到地图中
        let label = new T.Label({
            text: name,
            position: marker.getLngLat(),
            offset: new T.Point(-35, 8), // 设置标注文字的位置
            opacity: 1, // 设置文本的显示不透明度(范围0-1)
        });
        label.setBorderLine(0); // 设置文本的边框线宽
        label.setBackgroundColor("transparent"); // 设置文本的背景色(透明色)
        label.setFontColor("#0000FF");
        label.setFontSize(10);
        map.addOverLay(label);
        return "addMarker加载成功"
    }
    //更新定位坐标
@@ -303,7 +301,7 @@
        lineLayer.setLngLats(path);
        map.addOverLay(lineLayer);
        // 移动地图视角到最后一个位置
        // }, 500);
    }
@@ -322,18 +320,18 @@
    function cleanLocationLay() {
        if (lineLayer) {
            map.removeOverLay(lineLayer);
            path=[]
            path = []
        }
        if (locationMarker) {
            map.removeOverLay(locationMarker);
        }
        if (oldLineLayer) {
            aginPath=[]
            aginPath = []
            map.removeOverLay(oldLineLayer);
        }
    }
    //清除本地定位坐标位置
    function cleanLoclLay(){
    function cleanLoclLay() {
        if (locationMarker) {
            map.removeOverLay(locationMarker);
        }
app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -271,14 +271,16 @@
        //处理从相册返回时取消的图片处理
        existingPaths.removeAll(resultPaths);
        if (!existingPaths.isEmpty()) {
            List<UplodFileState> toRemove = new ArrayList<>();
            for (String path : existingPaths) {
                for (UplodFileState uplodFileState : uplodFileStates) {
                    if (path.equals(uplodFileState.getFilePath())) {
                        uplodFileState.getThisCall().cancel();
                        uplodFileStates.remove(uplodFileState);
                        toRemove.add(uplodFileState);
                    }
                }
            }
            uplodFileStates.removeAll(toRemove);
        }
        runOnUiThread(new Runnable() {
            @Override
@@ -351,7 +353,7 @@
     * 开始定位相关逻辑
     */
    private void startLocation() {
        ServiceUtils.startLocationService(this,  true);
        ServiceUtils.startLocationService(this, true);
        //获取定位服务传过来的坐标点
        LiveEventBus.get(CommonKeyName.locationData).observeForever(locationObserver);
    }
app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java
New file
@@ -0,0 +1,192 @@
package com.dayu.pipirrapp.activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.core.content.res.ResourcesCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
import com.dayu.pipirrapp.MyApplication;
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.adapter.ImageAdapter;
import com.dayu.pipirrapp.bean.net.ImageResult;
import com.dayu.pipirrapp.bean.net.IssueResult;
import com.dayu.pipirrapp.databinding.ActivityIssueDetailBinding;
import com.dayu.pipirrapp.fragment.OrderFragment;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
import com.dayu.pipirrapp.utils.ToastUtil;
import com.dayu.pipirrapp.view.ConfirmDialog;
import com.dayu.pipirrapp.view.TitleBar;
import com.luck.picture.lib.decoration.GridSpacingItemDecoration;
import com.luck.picture.lib.utils.DensityUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cc.shinichi.library.ImagePreview;
/**
 * IssueDetailActivity - 问题上报详情界面
 *
 * @author zuoxiao
 * @version 1.0
 * @since 2024-12-12
 */
public class IssueDetailActivity extends BaseActivity {
    RecyclerView mRecyclerView;
    ActivityIssueDetailBinding binding;
    ImageAdapter mAdapter;
    List<String> imageInfoList = new ArrayList<>();
    List<ImageResult> images = new ArrayList<>();
    int state;
    String issueReportId;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityIssueDetailBinding.inflate(LayoutInflater.from(this));
        setContentView(binding.getRoot());
        issueReportId = this.getIntent().getStringExtra("issueReportId");
        initView();
        getData(issueReportId);
    }
    private void initView() {
        new TitleBar(this).setTitleText("问题详情").setLeftIco().setLeftIcoListening(v -> IssueDetailActivity.this.finish());
        mRecyclerView = binding.recyclerView;
        FullyGridLayoutManager manager = new FullyGridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false);
        mRecyclerView.setLayoutManager(manager);
        RecyclerView.ItemAnimator itemAnimator = mRecyclerView.getItemAnimator();
        if (itemAnimator != null) {
            ((SimpleItemAnimator) itemAnimator).setSupportsChangeAnimations(false);
        }
        // 添加间距装饰,确保图片有合适的间隔
        mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
        mAdapter = new ImageAdapter(this, images, (v, position) -> {
            ImagePreview.getInstance().setContext(IssueDetailActivity.this).setImageList(imageInfoList).start();
        });
        mRecyclerView.setAdapter(mAdapter);
    }
    private void getData(String issueReportId) {
        Map<String, Object> params = new HashMap<>();
        params.put("issueReportId", issueReportId);
        ApiManager.getInstance().requestGet(this, Constants.BASE_URL + "/app/issue/getOneIssueReport", IssueResult.class, params, new SubscriberListener<BaseResponse<IssueResult>>() {
            @Override
            public void onNext(BaseResponse<IssueResult> t) {
                if (t.isSuccess()) {
                    if (t.isSuccess()) {
                        if (t.getContent() != null) {
                            IssueResult orderDetailResult = t.getContent();
                            binding.setData(orderDetailResult);
                            binding.setItemclidk(IssueDetailActivity.this);
                            state = orderDetailResult.getStateId();
                            images.addAll(t.getContent().getImages());
                            for (ImageResult imageResult : images) {
                                imageInfoList.add(imageResult.getWebPath());
                            }
                            mAdapter.notifyDataSetChanged();
                            switch (state) {
                                case 1://未受理
                                    binding.stateText.setTextColor(IssueDetailActivity.this.getResources().getColor(R.color.black, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(IssueDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null));
                                    binding.callBackLL.setVisibility(View.GONE);
                                    binding.deleteButton.setVisibility(View.VISIBLE);
                                    break;
                                case 2://已受理
                                    binding.stateText.setTextColor(IssueDetailActivity.this.getResources().getColor(R.color.white, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(IssueDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null));
                                    binding.callBackLL.setVisibility(View.VISIBLE);
                                    binding.deleteButton.setVisibility(View.GONE);
                                    break;
                                case 3://3已删除
                                    binding.stateText.setTextColor(IssueDetailActivity.this.getResources().getColor(R.color.white, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(IssueDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null));
                                    binding.callBackLL.setVisibility(View.VISIBLE);
                                    binding.deleteButton.setVisibility(View.GONE);
                                    break;
                            }
                        } else {
                            ToastUtil.showToast(IssueDetailActivity.this, t.getMsg());
                        }
                    } else if (t.DATA_NULL.equals(t.getCode())) {
                        //工单已被删除
                        ToastUtil.showToast(IssueDetailActivity.this, "订单已被删除!");
                        setResult(OrderFragment.RESULT_REFRESH);
                        IssueDetailActivity.this.finish();
                    } else {
                        ToastUtil.showToast(IssueDetailActivity.this, t.getMsg());
                        IssueDetailActivity.this.finish();
                    }
                } else {
                    ToastUtil.showToast(IssueDetailActivity.this, t.getMsg());
                }
            }
            @Override
            public void onCloose() {
                super.onCloose();
            }
            @Override
            public void onError(Throwable e) {
                super.onError(e);
                ToastUtil.showToastLong(IssueDetailActivity.this, "获取详情失败,请稍后再试");
                IssueDetailActivity.this.finish();
            }
        });
    }
    public void deleteIssue() {
        ConfirmDialog confirmDialog = new ConfirmDialog(IssueDetailActivity.this, "确认删除当前问题吗?", (confirmDialog1, v1) -> {
            confirmDialog1.dismiss();
            delete(issueReportId);
        });
        confirmDialog.show();
    }
    private void delete(String issueReportId) {
        Map<String, Object> params = new HashMap<>();
        params.put("issueReportId", issueReportId);
        params.put("inspectorId", MyApplication.myApplication.userId);
        ApiManager.getInstance().requestPost(this, Constants.BASE_URL + "/app/issue/deleteIssueReport", IssueResult.class, params, new SubscriberListener<BaseResponse<IssueResult>>() {
            @Override
            public void onNext(BaseResponse<IssueResult> t) {
                if (t.isSuccess()) {
                    setResult(IssueListActivity.RESULT_REFRESH);
                    ToastUtil.showToastLong(IssueDetailActivity.this, "删除成功!");
                    IssueDetailActivity.this.finish();
                } else {
                    ToastUtil.showToast(IssueDetailActivity.this, t.getMsg());
                }
            }
            @Override
            public void onCloose() {
                super.onCloose();
            }
            @Override
            public void onError(Throwable e) {
                super.onError(e);
                ToastUtil.showToastLong(IssueDetailActivity.this, "删除失败,请稍后再试");
            }
        });
    }
}
app/src/main/java/com/dayu/pipirrapp/activity/IssueListActivity.java
@@ -1,8 +1,13 @@
package com.dayu.pipirrapp.activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -34,11 +39,22 @@
 * @since 2024-12-10
 */
public class IssueListActivity extends BaseActivity {
    public static final int RESULT_REFRESH = 1001;
    ActivityIssueListBinding binding;
    RefreshLayout myRefreshLayout;
    List<IssueResult> recordsList = new ArrayList<>();
    IssueAdapter mAdapter;
    private final ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
        @Override
        public void onActivityResult(ActivityResult result) {
            if (result.getResultCode() == RESULT_REFRESH) {
                myRefreshLayout.autoRefresh();
            }
        }
    });
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -114,6 +130,8 @@
    }
    public void startDetail(String issueReportId) {
        Intent intent = new Intent(IssueListActivity.this, IssueDetailActivity.class);
        intent.putExtra("issueReportId", issueReportId);
        activityResultLauncher.launch(intent);
    }
}
app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -275,27 +275,26 @@
        //处理从相册返回时取消的图片处理
        existingPaths.removeAll(resultPaths);
        if (!existingPaths.isEmpty()) {
            List<UplodFileState> toRemove = new ArrayList<>();
            for (String path : existingPaths) {
                for (UplodFileState uplodFileState : uplodFileStates) {
                    if (path.equals(uplodFileState.getFilePath())) {
                        uplodFileState.getThisCall().cancel();
                        uplodFileStates.remove(uplodFileState);
                        toRemove.add(uplodFileState);
                    }
                }
            }
            uplodFileStates.removeAll(toRemove);
        }
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                boolean isMaxSize = result.size() == mAdapter.getSelectMax();
                int oldSize = mAdapter.getData().size();
                mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize);
                mAdapter.getData().clear();
        runOnUiThread(() -> {
            boolean isMaxSize = result.size() == mAdapter.getSelectMax();
            int oldSize = mAdapter.getData().size();
            mAdapter.notifyItemRangeRemoved(0, isMaxSize ? oldSize + 1 : oldSize);
            mAdapter.getData().clear();
                mAdapter.getData().addAll(result);
                mAdapter.notifyItemRangeInserted(0, result.size());
            mAdapter.getData().addAll(result);
            mAdapter.notifyItemRangeInserted(0, result.size());
            }
        });
    }
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -9,6 +9,7 @@
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.core.content.res.ResourcesCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.SimpleItemAnimator;
@@ -131,26 +132,26 @@
                            ProResultStateId = orderDetailResult.getProResultStateId();
                            switch (ProResultStateId) {
                                case 0://未上报
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black,null));
                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_no_bg,null));
                                    binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color,null));
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.black, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_no_bg, null));
                                    binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color, null));
                                    binding.dealButton.setVisibility(View.VISIBLE);
                                    break;
                                case 1://已上报
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white,null));
                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_wait_bg,null));
                                    binding.dealButton.setBackgroundColor(getResources().getColor(R.color.delete_color,null));
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_wait_bg, null));
                                    binding.dealButton.setBackgroundColor(getResources().getColor(R.color.delete_color, null));
                                    binding.dealButton.setVisibility(View.VISIBLE);
                                    binding.dealButton.setText("删除处理结果");
                                    break;
                                case 2://已完成
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white,null));
                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_finish_bg,null));
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_finish_bg, null));
                                    binding.dealButton.setVisibility(View.GONE);
                                    break;
                                case 3://被驳回
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white,null));
                                    binding.stateText.setBackground(OrderDetailActivity.this.getResources().getDrawable(R.drawable.order_state_reject_bg,null));
                                    binding.stateText.setTextColor(OrderDetailActivity.this.getResources().getColor(R.color.white, null));
                                    binding.stateText.setBackground(ResourcesCompat.getDrawable(OrderDetailActivity.this.getResources(), R.drawable.order_state_reject_bg, null));
                                    binding.dealButton.setBackgroundColor(getResources().getColor(R.color.title_color));
                                    binding.dealButton.setVisibility(View.VISIBLE);
                                    break;
@@ -165,6 +166,10 @@
                        setResult(OrderFragment.RESULT_REFRESH);
                        OrderDetailActivity.this.finish();
                    } else {
                        ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
                        OrderDetailActivity.this.finish();
                    }
                } else {
                    ToastUtil.showToast(OrderDetailActivity.this, t.getMsg());
@@ -176,6 +181,12 @@
                super.onCloose();
            }
            @Override
            public void onError(Throwable e) {
                super.onError(e);
                ToastUtil.showToastLong(OrderDetailActivity.this, "获取详情失败,请稍后再试");
                OrderDetailActivity.this.finish();
            }
        });
    }
app/src/main/java/com/dayu/pipirrapp/adapter/IssueAdapter.java
@@ -54,18 +54,18 @@
            if (recordsList.size() > 0) {
                IssueResult record = recordsList.get(position);
                ((ViewHolder) holder).getBinding().setData(record);
                ViewHolder mHolder=  ((ViewHolder) holder);
                ViewHolder mHolder = ((ViewHolder) holder);
                //状态;1-未受理,2-已受理,3已删除
                switch (record.getStateId()) {
                    case 1://未受理
                        mHolder.mBinding.stateText.setTextColor(activity.getResources().getColor(R.color.white, null));
                        mHolder.mBinding.stateText.setBackground(activity.getResources().getDrawable(R.drawable.order_state_wait_bg, null));
                        mHolder.mBinding.stateText.setTextColor(activity.getResources().getColor(R.color.black, null));
                        mHolder.mBinding.stateText.setBackground(activity.getResources().getDrawable(R.drawable.order_state_no_bg, null));
                        mHolder.mBinding.replyContentLL.setVisibility(View.GONE);
                        mHolder.mBinding.replyTimeLL.setVisibility(View.GONE);
                        break;
                    case 2://已受理
                        mHolder.mBinding.stateText.setTextColor(activity.getResources().getColor(R.color.white, null));
                        mHolder.mBinding.stateText.setBackground(activity.getResources().getDrawable(R.drawable.order_state_finish_bg, null));
                        mHolder.mBinding.stateText.setBackground(activity.getResources().getDrawable(R.drawable.order_state_wait_bg, null));
                        mHolder.mBinding.replyContentLL.setVisibility(View.VISIBLE);
                        mHolder.mBinding.replyTimeLL.setVisibility(View.VISIBLE);
                        break;
app/src/main/java/com/dayu/pipirrapp/bean/db/MarkerBean.java
@@ -15,7 +15,9 @@
    @PrimaryKey(autoGenerate = true)
    public long localid;
    @Nullable
    String blockId;
    String id;//服务器返回的取水口id
    @Nullable
    String blockId;//区域id
    @Nullable
    String deleted;//逻辑删除标识
    @Nullable
@@ -37,6 +39,37 @@
    String villageId;//所在村编号
    @Nullable
    String countyId;//所在县编号
    @Nullable
    String address;//地址
    @Nullable
    String blockName;//片区名称
    @Nullable
    public String getAddress() {
        return address;
    }
    public void setAddress(@Nullable String address) {
        this.address = address;
    }
    @Nullable
    public String getBlockName() {
        return blockName;
    }
    public void setBlockName(@Nullable String blockName) {
        this.blockName = blockName;
    }
    @Nullable
    public String getId() {
        return id;
    }
    public void setId(@Nullable String id) {
        this.id = id;
    }
    public String getBlockId() {
        return blockId;
app/src/main/java/com/dayu/pipirrapp/bean/net/MarkerResult.java
@@ -73,6 +73,24 @@
        String townId;//所在镇编号
        String villageId;//所在村编号
        String countyId;//所在县编号
        String blockName;
        String address;
        public String getBlockName() {
            return blockName;
        }
        public void setBlockName(String blockName) {
            this.blockName = blockName;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public String getBlockId() {
            return blockId;
app/src/main/java/com/dayu/pipirrapp/dao/MarkerDao.java
@@ -12,6 +12,7 @@
import java.util.List;
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Single;
/**
 * author: zuo
@@ -44,4 +45,7 @@
    @Query("select  * from MarkerBean")
    List<MarkerBean> findAll();
    @Query("select  * from MarkerBean")
    Single<List<MarkerBean>> findAllToSingle();
}
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -35,13 +35,14 @@
import com.dayu.pipirrapp.bean.net.MarkerResult;
import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.databinding.FragmentMapBinding;
import com.dayu.pipirrapp.js.MyWebViewInterface;
import com.dayu.pipirrapp.tool.MyWebViewInterface;
import com.dayu.pipirrapp.net.ApiManager;
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.observer.MapFragmenObserver;
import com.dayu.pipirrapp.tool.InspectionUtils;
import com.dayu.pipirrapp.tool.MarkerUtils;
import com.dayu.pipirrapp.utils.CommonData;
import com.dayu.pipirrapp.utils.CommonKeyName;
import com.dayu.pipirrapp.utils.DateUtils;
@@ -63,8 +64,9 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
import java.util.Map;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.schedulers.Schedulers;
@@ -82,7 +84,6 @@
    WebView mWebView;
    CenterPointBean centerPointBean;
    String strMarkerJson;
    //当前巡检状态
    int mInspectionState;
    MapFragmenObserver mapFragmenObserver;
@@ -90,9 +91,13 @@
    public InspectionBean mInspectionBean;
    LatLonBean lastLatLonBean;
    InspectionRequest inspectionRequest;
    volatile boolean isHaseAginData = false;
    //    volatile boolean isHaseAginData = false;
    volatile boolean webViewIsFinished = false;
    List<InspectionLocationBean> aginShowlocationBeans;
    //web加载时网页还没加载完时的数据
    List<MarkerBean> webNoFinishMarkerData = new ArrayList<>();
    //所有的Marker数据键为marker的Id
    Map<String, MarkerBean> markerBeanSet = new HashMap<>();
    @Override
    public void onAttach(@NonNull Context context) {
@@ -130,14 +135,9 @@
        mWebView.loadUrl("file:///android_asset/index.html");
        getCenterPoint();
        initView();
        initLocalData();
        getMarkerData();
        //显示巡检状态并且显示因意外关闭的历史数据
        switch (mInspectionState) {
            case InspectionUtils.STAT_INSPECTION:
            case InspectionUtils.PAUSE_INSPECTION:
                InspectionUtils.aginShowLocation(MapFragment.this);
        }
        chageInspecState(mInspectionState);
        return binding.getRoot();
    }
@@ -155,36 +155,23 @@
     * 初始化本地数据
     */
    public void initLocalData() {
        //跳转中心点
        centerPointBean = DaoSingleton.getInstance(MapFragment.this.getContext()).centerPointDao().findFirst();
        List<MarkerBean> markerBeans = DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().findAll();
        strMarkerJson = WebViewUtils.beanToJson(markerBeans);
        jumpCenterPoint();
        setMapMarker();
    }
    /**
     * 跳转地图中心点
     */
    public void jumpCenterPoint() {
        if (centerPointBean != null) {
            Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat());
            mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\",\"" + centerPointBean.getZoomMp() + "\")", value -> {
            });
        }
    }
    /**
     * 添加标注点
     */
    public void setMapMarker() {
        Log.i("mWebView", "addMarker????????????" + strMarkerJson);
        mWebView.evaluateJavascript("javascript:addMarker(\"" + strMarkerJson + "\")", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.i("mWebView", "addMarker!!!!!!!!!" + value);
        //添加因webview没有加载完成导致没有添加的地图标注
        if (!webNoFinishMarkerData.isEmpty()) {
            for (MarkerBean bean : webNoFinishMarkerData) {
                setMapMarker(bean);
            }
        });
        }
        //显示所有取水口
        MarkerUtils.showLocoMarks(MapFragment.this);
        //显示巡检状态并且显示因意外关闭的历史数据
        switch (mInspectionState) {
            case InspectionUtils.STAT_INSPECTION:
            case InspectionUtils.PAUSE_INSPECTION:
                InspectionUtils.aginShowLocation(MapFragment.this);
        }
    }
@@ -203,6 +190,7 @@
                                MarkerResult.Obj result = t.getContent().getObj().get(i);
                                //保存数据
                                MarkerBean markerBean = new MarkerBean();
                                markerBean.setId(result.getId());
                                markerBean.setLng(result.getLng());
                                markerBean.setLat(result.getLat());
                                markerBean.setBlockId(result.getBlockId());
@@ -211,10 +199,11 @@
                                markerBean.setTownId(result.getTownId());
                                markerBean.setVillageId(result.getVillageId());
                                markerBean.setCountyId(result.getCountyId());
                                markerBean.setAddress(result.getAddress());
                                markerBean.setBlockName(result.getBlockName());
                                markerBeans.add(markerBean);
                                setMapMarker(markerBean);
                            }
                            strMarkerJson = WebViewUtils.beanToJson(markerBeans);
                            setMapMarker();
                            DaoSingleton.getInstance(MapFragment.this.getContext()).markerDao().deleteAll();
                            // 使用 RxJava 异步插入数据
                            DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll(markerBeans)
@@ -234,43 +223,6 @@
                }
            }
        });
    }
    /**
     * 添加标注点
     */
    public void addMarker() {
        Random random = new Random();
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("[");
        // 中国经纬度范围
        double minLongitude = 73.43;
        double maxLongitude = 135.05;
        double minLatitude = 3.52;
        double maxLatitude = 53.57;
        for (int i = 0; i < 1000; i++) {
            stringBuilder.append("[");
            // 生成随机经度
            double longitude = minLongitude + (maxLongitude - minLongitude) * random.nextDouble();
            stringBuilder.append(longitude);
            stringBuilder.append(",");
            // 生成随机纬度
            double latitude = minLatitude + (maxLatitude - minLatitude) * random.nextDouble();
            stringBuilder.append(latitude);
            stringBuilder.append(",\"237取水口\"],");
        }
        stringBuilder.append("[116.417854,39.921988,\"235取水口\"]]");
        String jsonData = stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\"");
        Log.i("mWebView", "addMarker????????????" + jsonData);
        mWebView.evaluateJavascript("javascript:addMarker(\"" + jsonData + "\")", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.i("mWebView", "addMarker!!!!!!!!!" + value);
            }
        });
    }
@@ -335,11 +287,11 @@
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                webViewIsFinished = true;
                //页面加载完成
                if (isHaseAginData) {
                    aginShowLocation(null);
                }
                webViewIsFinished = true;
                initLocalData();
                aginShowLocation(null);
            }
        });
        //巡检按钮
@@ -378,7 +330,14 @@
    public void showWaterIntakeDetail(String data) {
        MyLog.i(data);
        binding.bottomLL.setVisibility(View.VISIBLE);
        MarkerBean markerBean=  markerBeanSet.get(data);
        if (markerBean!=null){
            binding.bottomLL.setVisibility(View.VISIBLE);
            binding.markerAddress.setText(markerBean.getAddress());
            binding.markerName.setText(markerBean.getName());
            binding.markerBlockName.setText(markerBean.getBlockName());
        }
    }
@@ -558,7 +517,6 @@
     * 意外退出后继续显示之前的坐标
     */
    public void aginShowLocation(List<InspectionLocationBean> locationBeans) {
        isHaseAginData = true;
        if (locationBeans != null) {
            aginShowlocationBeans = locationBeans;
        }
@@ -570,15 +528,46 @@
                    });
                }
                // 向 WebView 注入数据
                aginShowlocationBeans.clear();
            }
        }
    }
    /**
     * 跳转地图中心点
     */
    public void jumpCenterPoint() {
        if (webViewIsFinished) {
            if (centerPointBean != null) {
                Log.d(TAG, "jumpCenterPoint>>>>>>>>>>>>>>>>>>>" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat());
                mWebView.evaluateJavascript("javascript:setCenterAndZoom(\"" + centerPointBean.getLng() + "\",\"" + centerPointBean.getLat() + "\",\"" + centerPointBean.getZoomMp() + "\")", value -> {
                });
            }
        }
    }
    /**
     * 添加标注点
     */
    public void setMapMarker(MarkerBean markerBean) {
        if (markerBean != null) {
            if (webViewIsFinished) {
                Log.i("mWebView", "addMarker????????????");
                mWebView.evaluateJavascript("javascript:addMarker(\"" + markerBean.getId() + "\",\"" + markerBean.getLng() + "\",\"" + markerBean.getLat() + "\",\"" + markerBean.getName() + "\")", new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String value) {
                    }
                });
                markerBeanSet.put(markerBean.getId(), markerBean);
            } else {
                webNoFinishMarkerData.add(markerBean);
            }
        }
    }
    /**
     * 开始巡检的相关逻辑
     *
     * @param
app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -55,16 +55,20 @@
     * @param fragment
     * @return
     */
    public static String getInspectionId(MapFragment fragment) {
    public static void getInspectionId(MapFragment fragment) {
        DaoSingleton.getAsynchInstance(fragment.getContext()).inspectionDao().getMostRecentInspectionWithNoStopTime()
                .subscribeOn(Schedulers.io())
                .observeOn(Schedulers.io()).subscribe(inspectionBean -> {
                });
        return "";
    }
    /**
     * 继续显示异常关闭之前的巡检坐标
     *
     * @param fragment
     */
    public static void aginShowLocation(MapFragment fragment) {
        //查询当前未关闭的巡检记录
        DaoSingleton.getAsynchInstance(fragment.getContext()).inspectionDao().getMostRecentInspectionWithNoStopTime()
app/src/main/java/com/dayu/pipirrapp/tool/MarkerUtils.java
New file
@@ -0,0 +1,35 @@
package com.dayu.pipirrapp.tool;
import com.dayu.pipirrapp.bean.db.MarkerBean;
import com.dayu.pipirrapp.dao.DaoSingleton;
import com.dayu.pipirrapp.fragment.MapFragment;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
/**
 * MarkerUtils - 取水口等地图上显示的标识相关公共方法
 *
 * @author zuoxiao
 * @version 1.0
 * @since 2024-12-16
 */
public class MarkerUtils {
    public static Disposable showLocoMarks(MapFragment fragment) {
        //查询当前未关闭的巡检记录
        Disposable disposable = DaoSingleton.getAsynchInstance(fragment.getContext())
                .markerDao()
                .findAllToSingle()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread()).subscribe(markerBeans -> {
                    for (MarkerBean bean : markerBeans) {
                        fragment.setMapMarker(bean);
                    }
                });
        return disposable;
    }
}
app/src/main/java/com/dayu/pipirrapp/tool/MyWebViewInterface.java
File was renamed from app/src/main/java/com/dayu/pipirrapp/js/MyWebViewInterface.java
@@ -1,4 +1,4 @@
package com.dayu.pipirrapp.js;
package com.dayu.pipirrapp.tool;
import android.os.Handler;
import android.os.Looper;
@@ -15,7 +15,7 @@
 */
public class MyWebViewInterface {
    private MapFragment myContext;
    private final MapFragment myContext;
    public MyWebViewInterface(MapFragment context) {
@@ -74,8 +74,8 @@
                    // 在主线程上执行UI操作
                    // 更新或操作UI元素的代码
//                    myContext.addMarker();
                    myContext.jumpCenterPoint();
                    myContext.setMapMarker();
//                    myContext.jumpCenterPoint();
//                    myContext.setMapMarker();
                }
            });
        }
app/src/main/java/com/dayu/pipirrapp/utils/WebViewUtils.java
@@ -7,7 +7,6 @@
import android.webkit.WebSettings;
import android.webkit.WebView;
import com.dayu.pipirrapp.bean.db.CenterPointBean;
import com.dayu.pipirrapp.bean.db.MarkerBean;
import java.util.List;
@@ -124,5 +123,18 @@
        return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\"");
    }
    /**
     * bean转json
     *
     * @param stringBuilder
     * @param markerBean
     */
    public static String markerBeanToJson(StringBuilder stringBuilder, MarkerBean markerBean) {
        stringBuilder.append("{");
        stringBuilder.append(markerBean.getLng());
        stringBuilder.append(",");
        stringBuilder.append(markerBean.getLat());
        stringBuilder.append(",\"" + markerBean.getName() + "\"}");
        return stringBuilder.toString().replace("\\", "\\\\").replace("\"", "\\\"");
    }
}
app/src/main/res/drawable/ic_right_blue.xml
New file
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="31dp"
    android:height="31dp"
    android:viewportWidth="48"
    android:viewportHeight="48">
    <path
        android:pathData="M19,12L31,24L19,36"
        android:strokeLineJoin="round"
        android:strokeWidth="4"
        android:fillColor="#00000000"
        android:strokeColor="#3D8BFF"
        android:strokeLineCap="round"/>
</vector>
app/src/main/res/layout/activity_issue_detail.xml
@@ -6,7 +6,7 @@
        <variable
            name="itemclidk"
            type="com.dayu.pipirrapp.activity.OrderDetailActivity" />
            type="com.dayu.pipirrapp.activity.IssueDetailActivity" />
        <variable
            name="data"
@@ -31,7 +31,7 @@
            android:id="@+id/ScrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/deal_button"
            android:layout_above="@+id/delete_button"
            android:layout_below="@+id/title"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp">
@@ -54,6 +54,7 @@
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="3dp"
                        android:layout_marginRight="10dp"
                        android:src="@drawable/ic_issue" />
@@ -70,7 +71,7 @@
                        android:maxLines="1"
                        android:text="@{data.issueReportId}"
                        android:textColor="@color/title_color"
                        android:textSize="@dimen/manage_item_text_size" />
                        android:textSize="@dimen/order_detail_text_size" />
                    <TextView
@@ -113,7 +114,7 @@
                            android:layout_height="wrap_content"
                            android:text="上报时间:"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/manage_item_text_size" />
                            android:textSize="@dimen/order_detail_text_size" />
                        <TextView
                            android:id="@+id/xiangMuJianCheng"
@@ -123,7 +124,7 @@
                            android:maxLines="1"
                            android:text="@{data.reportTime}"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/manage_item_text_size" />
                            android:textSize="@dimen/order_detail_text_size" />
                    </LinearLayout>
@@ -132,47 +133,152 @@
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:orientation="horizontal">
                        <TextView
                            android:id="@+id/daiShenPiTag"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="上报内容:"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/manage_item_text_size" />
                    <TextView
                        android:id="@+id/daiShenPiTag"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="上报内容:"
                        android:textColor="@color/manage_item_text"
                        android:textSize="@dimen/order_detail_text_size" />
                    <TextView
                        android:id="@+id/daiShenPi"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:ellipsize="end"
                        android:maxLines="1"
                        android:text="@{data.content}"
                        android:textColor="@color/manage_item_text"
                        android:textSize="@dimen/order_detail_text_size" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="10dp"
                    android:orientation="vertical">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="上报图片:"
                        android:textColor="@color/manage_item_text"
                        android:textSize="@dimen/order_detail_text_size" />
                    <androidx.recyclerview.widget.RecyclerView
                        android:id="@+id/recyclerView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_centerInParent="true"
                        android:layout_marginTop="10dp"
                        android:minHeight="80dp" />
                </LinearLayout>
                <LinearLayout
                    android:id="@+id/callBackLL"
                    android:layout_width="match_parent"
                    android:orientation="vertical"
                    android:layout_height="wrap_content">
                <LinearLayout
                    android:id="@+id/orderDealLL"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:orientation="vertical"
                    android:visibility="visible">
                    <View
                        android:layout_width="match_parent"
                        android:layout_height="2dp"
                        android:background="@color/base_blue" />
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp"
                        android:gravity="center"
                        android:text="回复信息"
                        android:textColor="@color/base_blue"
                        android:textSize="@dimen/order_detail_text_size" />
                </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:orientation="horizontal">
                        <TextView
                            android:id="@+id/daiShenPi"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="回复时间:"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/order_detail_text_size" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:ellipsize="end"
                            android:maxLines="1"
                            android:text="@{data.content}"
                            android:text="@{data.reportTime}"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/manage_item_text_size" />
                            android:textSize="@dimen/order_detail_text_size" />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp"
                        android:orientation="horizontal">
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="回复内容:"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/order_detail_text_size" />
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:ellipsize="end"
                            android:maxLines="1"
                            android:text="@{data.replyContent}"
                            android:textColor="@color/manage_item_text"
                            android:textSize="@dimen/order_detail_text_size" />
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>
        </ScrollView>
        <TextView
            android:id="@+id/deal_button"
            android:id="@+id/delete_button"
            android:layout_width="match_parent"
            android:layout_height="@dimen/order_detail_button_height"
            android:layout_alignParentBottom="true"
            android:background="@color/title_color"
            android:gravity="center"
            android:onClick="@{()->itemclidk.startDealActivity()}"
            android:text="处理工单"
            android:onClick="@{()->itemclidk.deleteIssue()}"
            android:text="删除问题"
            android:textColor="@color/white"
            android:textSize="@dimen/order_detail_button_size"
            android:visibility="gone" />
            android:visibility="visible" />
    </RelativeLayout>
app/src/main/res/layout/activity_login.xml
@@ -6,6 +6,14 @@
    android:orientation="vertical"
    android:padding="20dp">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/logo1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        />
    <EditText
        android:id="@+id/name"
@@ -18,9 +26,9 @@
        android:background="@drawable/ic_edt_gray_bg"
        android:hint="请输入账号"
        android:maxLines="1"
        android:text="15802220723"
        android:paddingLeft="15dp"
        android:singleLine="true" />
        android:singleLine="true"
        android:text="15802220723" />
    <RelativeLayout
        android:id="@+id/psLL"
@@ -45,9 +53,9 @@
            android:hint="请输入密码"
            android:inputType="textPassword"
            android:maxLines="1"
            android:text="abc_123"
            android:paddingLeft="10dp"
            android:singleLine="true" />
            android:singleLine="true"
            android:text="abc_123" />
        <ImageView
            android:id="@+id/passwordBtn"
app/src/main/res/layout/fragment_map.xml
@@ -7,11 +7,12 @@
    <!--        android:id="@+id/webView"-->
    <!--        android:layout_width="match_parent"-->
    <!--        android:layout_height="match_parent" />-->
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <RelativeLayout
        android:id="@+id/inspectRL"
@@ -105,30 +106,82 @@
            android:orientation="vertical"
            android:padding="10dp">
            <TextView
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="取水口"
                android:textColor="@color/black" />
                android:gravity="start"
                android:orientation="horizontal">
            <TextView
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="名称:"
                    android:textColor="@color/black" />
                <TextView
                    android:id="@+id/markerName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text=""
                    android:textColor="@color/black" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="取水口位置"
                android:textColor="@color/black" />
                android:gravity="start"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="片区:"
                    android:textColor="@color/black" />
                <TextView
                    android:id="@+id/markerBlockName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text=""
                    android:textColor="@color/black" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:gravity="start"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="地址:"
                    android:textColor="@color/black" />
                <TextView
                    android:id="@+id/markerAddress"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ellipsize="end"
                    android:maxLines="1"
                    android:text=""
                    android:textColor="@color/black" />
            </LinearLayout>
        </LinearLayout>
        <ImageView
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_width="25dp"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:layout_marginRight="20dp"
            android:padding="10dp"
            android:src="@drawable/ic_gps_navigation" />
            android:layout_marginRight="10dp"
            android:background="@drawable/ic_right_blue" />
    </LinearLayout>
app/src/main/res/layout/item_issue.xml
@@ -31,6 +31,7 @@
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="3dp"
                android:layout_marginRight="10dp"
                android:src="@drawable/ic_issue" />
app/src/main/res/layout/item_order.xml
@@ -75,10 +75,7 @@
            android:layout_marginTop="5dp"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:id="@+id/jinduTag"
@@ -95,7 +92,7 @@
                    android:text="@{data.workOrderId}"
                    android:textColor="@color/manage_item_text"
                    android:textSize="@dimen/manage_item_text_size" />
            </LinearLayout>
        </LinearLayout>
@@ -106,10 +103,7 @@
            android:layout_marginTop="5dp"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1">
                <TextView
                    android:id="@+id/daiShenPiTag"
@@ -129,7 +123,7 @@
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
@@ -138,13 +132,7 @@
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:paddingRight="5dp">
                <TextView
@@ -166,7 +154,7 @@
            </LinearLayout>
        </LinearLayout>
        <LinearLayout
@@ -176,13 +164,6 @@
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="horizontal"
                android:paddingRight="5dp">
                <TextView
                    android:layout_width="wrap_content"
@@ -200,7 +181,7 @@
                    android:text="@{data.taskContent}"
                    android:textColor="@color/manage_item_text"
                    android:textSize="@dimen/manage_item_text_size" />
            </LinearLayout>
        </LinearLayout>
@@ -208,16 +189,10 @@
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_marginTop="5dp"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:layout_weight="2"
                android:gravity="center_vertical"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
@@ -229,54 +204,16 @@
                <TextView
                    android:id="@+id/startTime"
                    android:layout_width="wrap_content"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@{data.dispatchTime}"
                    android:textColor="@color/manage_item_text"
                    android:textSize="@dimen/manage_item_text_size" />
            </LinearLayout>
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="5dp"
                android:layout_marginRight="10dp"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:visibility="gone">
                <TextView
                    android:id="@+id/lookDetail"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/manage_item_btn_height"
                    android:layout_weight="1"
                    android:background="@drawable/ic_blue_background"
                    android:gravity="center"
                    android:text="查看"
                    android:textColor="@color/white"
                    android:textSize="@dimen/manage_item_btn_text_size" />
                <TextView
                    android:id="@+id/examineBtn"
                    android:layout_width="0dp"
                    android:layout_height="@dimen/manage_item_btn_height"
                    android:layout_marginLeft="15dp"
                    android:layout_weight="1"
                    android:background="@drawable/ic_blue_background"
                    android:gravity="center"
                    android:text="审批"
                    android:textColor="@color/white"
                    android:textSize="@dimen/manage_item_btn_text_size" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-xhdpi/logo1.png
app/src/main/res/mipmap-xhdpi/logo2.png
app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary files differ
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary files differ