riku
2025-10-27 0f58aa8ea118c3bd0b28396febc58fdbd94eef75
2025.10.27
1. 新增巡查场景历史详情界面(待完成)
已修改17个文件
已添加14个文件
1292 ■■■■■ 文件已修改
.gitignore 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/assetWizardSettings.xml 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/release/release/output.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/release/release/supervision_1.1.14.18-release.apk 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/ChangeRateVo.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneConstructionSite.kt 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneDetailStrVo.kt 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneDetailVo.kt 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/TypicalSceneVo.kt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/DomainItemService.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/EvaluationService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/ScenseService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/model/bean/BaseResponse.kt 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/InspectionDetailActivity.kt 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuGradeViewModel.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneHistoryActivity.kt 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneHistoryViewModel.kt 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneInfoActivity.kt 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/module/task/SceneDetailViewModel.kt 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/repository/CommonRepository.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/repository/EvaluationRepository.kt 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/cn/flightfeather/thirdappmodule/repository/SceneRepository.kt 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-anydpi-v24/ic_info_black_24dp.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-hdpi/ic_info_black_24dp.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-mdpi/ic_info_black_24dp.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xhdpi/ic_info_black_24dp.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable-xxhdpi/ic_info_black_24dp.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_scene_history.xml 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_scene_subinfo.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_inspection_content.xml 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -9,4 +9,4 @@
/build
/captures
.externalNativeBuild
/app/release/
/app/release
.idea/assetWizardSettings.xml
@@ -5,7 +5,316 @@
      <map>
        <entry key="imageWizard">
          <value>
            <PersistentState />
            <PersistentState>
              <option name="children">
                <map>
                  <entry key="imageAssetPanel">
                    <value>
                      <PersistentState>
                        <option name="children">
                          <map>
                            <entry key="actionbar">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="clipArt">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                                <entry key="imagePath" value="C:\Users\feiyu\AppData\Local\Temp\ic_android_black_24dp.xml" />
                                                <entry key="opacityPercent" value="60" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="text">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="textAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                            <entry key="launcher">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="foregroundClipArt">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="imagePath" value="C:\Users\feiyu\AppData\Local\Temp\ic_android_black_24dp.xml" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundImage">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundText">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundTextAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                            <entry key="launcherLegacy">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="clipArt">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                                <entry key="imagePath" value="C:\Users\feiyu\AppData\Local\Temp\ic_android_black_24dp.xml" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="text">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="textAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                            <entry key="notification">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="clipArt">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                                <entry key="imagePath" value="C:\Users\feiyu\AppData\Local\Temp\baseline_article_24.xml" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="clipartAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="url" value="file:/$PROJECT_DIR$/../../../../androidsdk/sdk_new/icons/material/materialicons/article/baseline_article_24.xml" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="image">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="text">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="textAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                  <option name="values">
                                    <map>
                                      <entry key="outputName" value="ic_info_black_24dp" />
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                            <entry key="tvBanner">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="foregroundText">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                            <entry key="tvChannel">
                              <value>
                                <PersistentState>
                                  <option name="children">
                                    <map>
                                      <entry key="foregroundClipArt">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="imagePath" value="C:\Users\feiyu\AppData\Local\Temp\ic_android_black_24dp.xml" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundImage">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundText">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                      <entry key="foregroundTextAsset">
                                        <value>
                                          <PersistentState>
                                            <option name="values">
                                              <map>
                                                <entry key="color" value="000000" />
                                              </map>
                                            </option>
                                          </PersistentState>
                                        </value>
                                      </entry>
                                    </map>
                                  </option>
                                </PersistentState>
                              </value>
                            </entry>
                          </map>
                        </option>
                        <option name="values">
                          <map>
                            <entry key="outputIconType" value="NOTIFICATION" />
                          </map>
                        </option>
                      </PersistentState>
                    </value>
                  </entry>
                </map>
              </option>
            </PersistentState>
          </value>
        </entry>
        <entry key="vectorWizard">
.idea/misc.xml
@@ -3,10 +3,13 @@
  <component name="DesignSurface">
    <option name="filePathToZoomLevelMap">
      <map>
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable-anydpi-v24/ic_info_black_24dp.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable-xhdpi/bg_ripple.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/bg_btngroup.xml" value="0.175" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/ic_baseline_backspace_24.xml" value="0.175" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/ic_baseline_content_copy_24.xml" value="0.175" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/ic_group_black_24dp.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/ic_playlist_add_check_blue_400_24dp.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/ic_unfold_more_black_20dp.xml" value="0.175" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/point_background.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/selector_bg_blue_or_white.xml" value="0.336" />
@@ -21,8 +24,15 @@
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/selector_show_hide_white.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shap_stroke_bottom.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_bg_gradient_reverse.xml" value="0.31145833333333334" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_blue.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_button_green.xml" value="0.309375" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_circle_board.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_gray.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_green.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_oval_blue.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_red_board.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_red_task_check.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/drawable/shape_yellow.xml" value="0.336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_base_map.xml" value="0.29739583333333336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_camera.xml" value="0.33" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_main.xml" value="0.3338541666666667" />
@@ -40,17 +50,23 @@
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_share_problem.xml" value="0.33" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_task.xml" value="0.29739583333333336" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/activity_upload_media_files.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_adjust_task.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_alert.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_alert_2.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_anysis_sub_progress.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_bottom_sheet.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_camera.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_camera_2.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_camera_3.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_change_password.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_new_photo.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_problem_list.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_account.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_history.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_list.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_scene_subinfo.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/dialog_take_evidence.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/fragment_analysis_over_view.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/fragment_home.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/fragment_inspection2.xml" value="0.3338541666666667" />
        <entry key="..\:/AndroidStudioProjects/supervision_online/branches/customer_pollution_scene/app/src/main/res/layout/fragment_inspection_content.xml" value="0.3338541666666667" />
app/release/release/output.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":34,"versionName":"1.1.14.18","enabled":true,"outputFile":"appsupervision-release.apk","fullName":"release","baseName":"release"},"path":"appsupervision-release.apk","properties":{}}]
app/release/release/supervision_1.1.14.18-release.apk
Binary files differ
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/ChangeRateVo.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
package cn.flightfeather.thirdappmodule.bean.vo
/**
 * @author riku
 * Date: 2025/10/27
 */
class ChangeRateVo {
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneConstructionSite.kt
@@ -1,10 +1,107 @@
package cn.flightfeather.thirdappmodule.bean.vo
import org.greenrobot.greendao.annotation.Id
import java.util.*
/**
 * å»ºç­‘工地信息
 * @author riku
 * Date: 2025/10/17
 */
class SceneConstructionSite : BaseSubScene {
    /**
     * åœºæ™¯id,主键
     */
    var sGuid: String? = null
    /**
     * å·¥ç¨‹ç±»åž‹
     */
    var csProjectType: String? = null
    /**
     * æ–½å·¥é˜¶æ®µ
     */
    var csStatus: String? = null
    /**
     * æ–½å·¥å¼€å§‹æ—¶é—´
     */
    var csStartTime: String? = null
    /**
     * æ–½å·¥ç»“束时间
     */
    var csEndTime: String? = null
    /**
     * å‰©ä½™å·¥æœŸ
     */
    var csLeftTime: String? = null
    /**
     * å åœ°é¢ç§¯
     */
    var csFloorSpace: String? = null
    /**
     * æ–½å·¥é¢ç§¯
     */
    var csConstructionArea: String? = null
    /**
     * æ¯æœˆæ–½å·¥é¢ç§¯
     */
    var csConstructionAreaPerMonth: String? = null
    /**
     * ä¸šä¸»å•位
     */
    var csEmployerUnit: String? = null
    /**
     * ä¸šä¸»å•位联系人
     */
    var csEmployerContacts: String? = null
    /**
     * ä¸šä¸»å•位联系人电话
     */
    var csEmployerContactsTel: String? = null
    /**
     * æ–½å·¥å•位
     */
    var csConstructionUnit: String? = null
    /**
     * æ–½å·¥å•位联系人
     */
    var csConstructionContacts: String? = null
    /**
     * æ–½å·¥å•位联系人电话
     */
    var csConstructionContactsTel: String? = null
    /**
     * å®‰å…¨å‘˜
     */
    var csSecurityOfficer: String? = null
    /**
     * å®‰å…¨å‘˜ç”µè¯
     */
    var csSecurityOfficerTel: String? = null
    var csUpdateTime: Date? = null
    var siExtension1: String? = null
    var siExtension2: String? = null
    var siExtension3: String? = null
    var siRemark: String? = null
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneDetailStrVo.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package cn.flightfeather.thirdappmodule.bean.vo
import cn.flightfeather.thirdappmodule.bean.entity.Scense
/**
 * @author riku
 * Date: 2025/10/20
 */
class SceneDetailStrVo {
    // åœºæ™¯åŸºæœ¬ä¿¡æ¯
    var scene:Scense? = null
    // åœºæ™¯ç‰¹æœ‰ä¿¡æ¯ï¼Œæ ¹æ®åœºæ™¯ç±»åž‹ä¸åŒï¼Œå±žæ€§å„不相同
    var subScene: String? = null
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/SceneDetailVo.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package cn.flightfeather.thirdappmodule.bean.vo
import cn.flightfeather.thirdappmodule.bean.entity.Scense
/**
 * @author riku
 * Date: 2025/10/20
 */
class SceneDetailVo<T : BaseSubScene> {
    // åœºæ™¯åŸºæœ¬ä¿¡æ¯
    var scene:Scense? = null
    // åœºæ™¯ç‰¹æœ‰ä¿¡æ¯ï¼Œæ ¹æ®åœºæ™¯ç±»åž‹ä¸åŒï¼Œå±žæ€§å„不相同
    var subScene: T? = null
}
app/src/main/java/cn/flightfeather/thirdappmodule/bean/vo/TypicalSceneVo.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package cn.flightfeather.thirdappmodule.bean.vo
import java.util.*
/**
 * åœºæ™¯å…¸åž‹å·¥åœ°æƒ…况
 * @author riku
 * Date: 2025/10/27
 */
class TypicalSceneVo {
    // è¯„选时间
    var time: Date? = null
    // æ˜¯å¦æ—¶å…¸åž‹å·¥åœ°
    var typical: Boolean = false
}
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/DomainItemService.kt
@@ -23,4 +23,7 @@
     */
    @GET("domainitem/mediaFileType")
    fun getMediaFileType(@Query("sceneType") sceneType: Int): Observable<Response<Map<String?, String?>>>
    @GET("domainitem/name")
    fun getItemByName(@Query("name") name: String): Observable<Response<ArrayList<Domainitem>>>
}
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/EvaluationService.java
@@ -4,6 +4,7 @@
import cn.flightfeather.thirdappmodule.bean.entity.Evaluation;
import cn.flightfeather.thirdappmodule.bean.entity.Itemevaluation;
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.Call;
@@ -38,6 +39,20 @@
    @POST("evaluation/rankoftown")
    Call<List<Evaluation>> getRankofTown(@Query("tguid") String tguid, @Query("scensetypeid") String scensetypeid);
    /**
     * æ ¹æ®åœºæ™¯èŽ·å–åŽ†å²è¯„ä¼°å¾—åˆ†
     * @param sceneId åœºæ™¯ä¸»é”®id
     * @param page é¡µç 
     * @param pageSize æ¯é¡µæ•°é‡
     * @return åŽ†å²è¯„ä¼°å¾—åˆ†
     */
    @GET("evaluation/byScene")
    Observable<Response<BaseResponse<List<Evaluation>>>> getEvaluationListByScene(
            @Query("sceneId") String sceneId,
            @Query("page") int page,
            @Query("pageSize") int pageSize
    );
    @PUT("itemevaluation/addlist/")
    Call<ResponseBody> putItemEvaluationList(@Body List<Itemevaluation> itemevaluationList);
app/src/main/java/cn/flightfeather/thirdappmodule/httpservice/ScenseService.java
@@ -4,6 +4,10 @@
import cn.flightfeather.thirdappmodule.bean.entity.Scense;
import cn.flightfeather.thirdappmodule.bean.entity.Task;
import cn.flightfeather.thirdappmodule.bean.vo.BaseSubScene;
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailStrVo;
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailVo;
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.Call;
@@ -41,4 +45,10 @@
    @POST("scense/getByTask")
    Observable<Response<ArrayList<Scense>>> getByTaskId(@Body Task task, @Query("mode") int mode);
    @GET("scense/detail")
    <T extends BaseSubScene> Observable<Response<BaseResponse<SceneDetailVo<T>>>> getSceneDetail(@Query("sceneId") String sceneId);
    @POST("scense/detail/update")
    Observable<Response<BaseResponse<String>>> updateSceneDetail(@Query("sceneTypeId") int typeId, @Body SceneDetailStrVo vo);
}
app/src/main/java/cn/flightfeather/thirdappmodule/model/bean/BaseResponse.kt
@@ -5,14 +5,15 @@
 * Date: 2020/8/4
 * ç½‘络请求返回数据基类
 */
data class BaseResponse<T>(
        val success: Boolean,
        val message: String,
        val head: DataHead? = null,
        val data: T?
)
class BaseResponse<T> {
    var success: Boolean = false
    var message: String? = null
    var head: DataHead? = null
    var data: T? = null
}
data class DataHead(
        var page: Int = 1,
class DataHead {
    var page: Int = 1
        var totalPage: Int = 1
)
    var totalCount: Int = 1
}
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/InspectionDetailActivity.kt
@@ -461,6 +461,13 @@
                        CameraPosition(LatLng(s.latitude, s.longitude), zoomLevel, 0F, 0F)
                )
        )
        // 2025.10.22 å½“场景是工地类型时,显示修改施工阶段按钮
        if (s.typeid.toString() == Constant.SCENE_TYPE_SITE) {
            scene_status.visibility = View.VISIBLE
        } else {
            scene_status.visibility = View.GONE
        }
    }
    /**
@@ -820,6 +827,16 @@
    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.scene_detail -> {
            }
            // ä¿®æ”¹å·¥åœ°æ–½å·¥é˜¶æ®µ
            R.id.scene_status ->{
                val intent = Intent(this, MenuSceneInfoActivity::class.java).apply {
                    putExtra("scene", viewModel.scene.value)
                }
                startActivity(intent)
            }
            // æŸ¥çœ‹æˆ–获取用户账户信息
            R.id.user_account -> {
                val intent = Intent(this, MenuSceneAccountActivity::class.java).apply {
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuGradeViewModel.kt
@@ -19,7 +19,7 @@
 */
class MenuGradeViewModel  : BaseViewModel() {
    private val evaluationRepository = EvaluationRepository()
    private val evaluationRepository = EvaluationRepository.instance
    val ruleItemList = MutableLiveData<ArrayList<EvaluationsubruleVo>>()
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneHistoryActivity.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package cn.flightfeather.thirdappmodule.module.inspection
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.view.View
import cn.flightfeather.thirdappmodule.R
import cn.flightfeather.thirdappmodule.bean.entity.Scense
import cn.flightfeather.thirdappmodule.module.base.BaseActivity
import cn.flightfeather.thirdappmodule.module.task.SceneDetailViewModel
import kotlinx.android.synthetic.main.dialog_scene_history.*
import kotlinx.android.synthetic.main.fragment_analysis_over_view.*
class MenuSceneHistoryActivity : BaseActivity() {
    private var scene: Scense? = null
    override fun getLayoutId(): Int = R.layout.dialog_scene_history
    lateinit var viewModel: MenuSceneHistoryViewModel
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewModel = ViewModelProviders.of(this).get(SceneDetailViewModel::class.java)
        scene = intent.getSerializableExtra("scene") as Scense?
        initUI()
        initObserver()
        initListener()
        viewModel.getSceneStatus {
            scene?.let { viewModel.getSceneDetail(it) }
        }
    }
    private fun initUI() {
        view_waiting.visibility = View.VISIBLE
        scene?.let {
            tv_status.text = StringBuilder(it.type + getString(R.string.scene_status))
        }
    }
    private fun initObserver() {
    }
    private fun initListener() {
        fab_close.setOnClickListener {
            this.finish()
        }
    }
}
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneHistoryViewModel.kt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package cn.flightfeather.thirdappmodule.module.inspection
import android.arch.lifecycle.MutableLiveData
import cn.flightfeather.thirdappmodule.bean.entity.Evaluation
import cn.flightfeather.thirdappmodule.bean.vo.ChangeRateVo
import cn.flightfeather.thirdappmodule.bean.vo.TypicalSceneVo
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.module.base.BaseViewModel
import cn.flightfeather.thirdappmodule.repository.EvaluationRepository
import org.jetbrains.anko.toast
/**
 * @author riku
 * Date: 2025/10/27
 */
class MenuSceneHistoryViewModel : BaseViewModel() {
    private val evaluationRepository = EvaluationRepository.instance
    // 1. åŽ†å²è¯„ä¼°æƒ…å†µ
    val evaluationList = MutableLiveData<List<Evaluation>>()
    /**
     * èŽ·å–å‰ä¸‰ä¸ªæœˆçš„è¯„ä¼°æ€»åˆ†
     */
    fun getEvaluationList(sceneId:String) {
        evaluationRepository.getEvaluationByScene(sceneId, resultCallBack = object : ResultCallBack<List<Evaluation>> {
            override fun onSuccess(result: List<Evaluation>?) {
                evaluationList.value = result
            }
            override fun onFailure() {
                application.toast("获取评分失败")
            }
        })
    }
    // 2. å…¸åž‹å·¥åœ°æƒ…况
    val typicalScene = MutableLiveData<List<TypicalSceneVo>>()
    fun getTypicalScene(sceneId: String) {
        typicalScene.value = listOf()
    }
    // 3. æ•´æ”¹æ•ˆçއ
    val changeRate = MutableLiveData<List<ChangeRateVo>>()
    fun getChangeRate() {
    }
}
app/src/main/java/cn/flightfeather/thirdappmodule/module/inspection/MenuSceneInfoActivity.kt
@@ -1,17 +1,29 @@
package cn.flightfeather.thirdappmodule.module.inspection
import android.annotation.SuppressLint
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.view.LayoutInflater
import android.view.View
import cn.flightfeather.thirdappmodule.R
import cn.flightfeather.thirdappmodule.adapter.AllRecyclerViewAdapter
import cn.flightfeather.thirdappmodule.bean.entity.Scense
import cn.flightfeather.thirdappmodule.bean.vo.RankVo
import cn.flightfeather.thirdappmodule.bean.vo.SceneConstructionSite
import cn.flightfeather.thirdappmodule.bean.vo.TaskFrequencyVo
import cn.flightfeather.thirdappmodule.module.base.BaseActivity
import cn.flightfeather.thirdappmodule.module.task.SceneDetailViewModel
import cn.flightfeather.thirdappmodule.util.CommonUtils
import cn.flightfeather.thirdappmodule.util.Constant
import kotlinx.android.synthetic.main.dialog_scene_subinfo.*
import kotlinx.android.synthetic.main.fragment_analysis_over_view.*
class MenuSceneInfoActivity : BaseActivity() {
    private var scene: Scense? = null
    private var statusAdapter: AllRecyclerViewAdapter<String>? = null
    override fun getLayoutId(): Int = R.layout.dialog_scene_subinfo
@@ -27,6 +39,10 @@
        initUI()
        initObserver()
        initListener()
        viewModel.getSceneStatus {
            scene?.let { viewModel.getSceneDetail(it) }
        }
    }
    private fun initUI() {
@@ -38,27 +54,47 @@
    }
    private fun initObserver() {
        viewModel.aName.observe(this, Observer {
        viewModel.subScene.observe(this, Observer {
            view_waiting.visibility = View.GONE
            if (it == null) {
                group_no_data.visibility = View.VISIBLE
                group_s_info.visibility = View.GONE
            } else {
                group_no_data.visibility = View.GONE
                group_s_info.visibility = View.VISIBLE
                tv_s_account_c.text = it
            val status = when (scene?.typeid.toString()) {
                Constant.SCENE_TYPE_SITE -> {
                    (it as SceneConstructionSite?)?.siExtension1
                }
                else -> ""
            }
            var index = viewModel.sceneStatus.indexOf(status)
            if (index == -1) index = 0
            statusAdapter?.run {
                setSelected(true, index)
                notifyItemChanged(index)
            }
        })
    }
    private fun initListener() {
        tv_create_account.setOnClickListener {
            view_waiting.visibility = View.VISIBLE
            sceneId?.let { viewModel.createAccount(it) }
        statusAdapter = object : AllRecyclerViewAdapter<String>(viewModel.sceneStatus, android.R.layout.simple_list_item_single_choice, this) {
            @SuppressLint("NotifyDataSetChanged")
            override fun bindView(holder: MyViewHolder?, obj: String?, isSelected: Boolean, position: Int) {
                holder?.setText(R.id.text1, obj)
                    ?.setOnItemClickListener {
                        setAllFalse()
                        setSelected(true, position)
                        notifyDataSetChanged()
                        (viewModel.subScene.value as SceneConstructionSite?)?.siExtension1 = obj
        }
            }
        }
        val lm = LinearLayoutManager(this)
        lm.orientation = LinearLayoutManager.VERTICAL
        rv_status!!.layoutManager = lm
        rv_status!!.adapter = statusAdapter
        fab_close.setOnClickListener {
            this.finish()
        }
        fab_submit.setOnClickListener {
            viewModel
        }
    }
}
app/src/main/java/cn/flightfeather/thirdappmodule/module/task/SceneDetailViewModel.kt
@@ -2,10 +2,16 @@
import android.arch.lifecycle.MutableLiveData
import cn.flightfeather.thirdappmodule.bean.entity.*
import cn.flightfeather.thirdappmodule.bean.vo.BaseSubScene
import cn.flightfeather.thirdappmodule.bean.vo.SceneConstructionSite
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailStrVo
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailVo
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.model.event.SceneEvent
import cn.flightfeather.thirdappmodule.module.base.BaseViewModel
import cn.flightfeather.thirdappmodule.repository.CommonRepository
import cn.flightfeather.thirdappmodule.repository.SceneRepository
import com.google.gson.Gson
import okhttp3.ResponseBody
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.toast
@@ -16,6 +22,7 @@
 */
class SceneDetailViewModel : BaseViewModel() {
    private val sceneRepository = SceneRepository()
    private val commonRepository = CommonRepository.instance
    val allProvinceList = ArrayList<Province>()
    val allCityList = ArrayList<City>()
@@ -29,8 +36,12 @@
    val allSceneTypeList = MutableLiveData<ArrayList<Domainitem>>().apply { value = ArrayList() }
    val subScene = MutableLiveData<>
    val subScene = MutableLiveData<BaseSubScene>()
    val sceneStatus = ArrayList<String>()
    /**
     * èŽ·å–è¡Œæ”¿åŒºåˆ’å¯é€‰é¡¹
     */
    fun getData() {
        sceneRepository.getDivision(object : ResultCallBack<Division> {
            override fun onSuccess(result: Division?) {
@@ -57,6 +68,9 @@
        })
    }
    /**
     * èŽ·å–åœºæ™¯ç±»åž‹å¯é€‰é¡¹
     */
    fun getSceneType() {
        sceneRepository.getSceneType(object : ResultCallBack<ArrayList<Domainitem>> {
            override fun onSuccess(result: ArrayList<Domainitem>?) {
@@ -109,6 +123,53 @@
            })
        }
    }
    fun getSceneDetail(scene: Scense?) {
        scene?.let {
            sceneRepository.getSceneDetail(it, object : ResultCallBack<SceneDetailVo<SceneConstructionSite>> {
                override fun onSuccess(result: SceneDetailVo<SceneConstructionSite>?) {
                    result?.let { r -> subScene.value = r.subScene }
                }
                override fun onFailure() {
                    application.toast("施工阶段没有记录")
                }
            })
        }
    }
    fun updateSceneDetail(scene: Scense?, subScene: BaseSubScene) {
        scene?.let {
            val vo = SceneDetailStrVo().apply {
                this.scene = it
                this.subScene = Gson().toJson(subScene)
            }
            sceneRepository.updateSceneDetail(vo, object : ResultCallBack<String> {
                override fun onSuccess(result: String?) {
                    application.toast("施工阶段修改成功")
                }
                override fun onFailure() {
                    application.toast("施工阶段修改失败")
                }
            })
        }
    }
    fun getSceneStatus(success: () -> Unit) {
        commonRepository.getDomainItem("工地工期", object : ResultCallBack<ArrayList<Domainitem>> {
            override fun onSuccess(result: ArrayList<Domainitem>?) {
                result?.let { arr ->
                    sceneStatus.addAll(arr.map { it.text })
                    success()
                }
            }
            override fun onFailure() {
                application.toast("施工阶段选项无记录")
            }
        })
    }
}
data class Division(
app/src/main/java/cn/flightfeather/thirdappmodule/repository/CommonRepository.kt
@@ -1,5 +1,6 @@
package cn.flightfeather.thirdappmodule.repository
import cn.flightfeather.thirdappmodule.bean.entity.Domainitem
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.common.net.ResultObserver
import cn.flightfeather.thirdappmodule.common.net.RetrofitFactory
@@ -112,4 +113,21 @@
            }
        })
    }
    /**
     * æ ¹æ®å€¼åŸŸç±»åˆ«åç§°ï¼ŒèŽ·å–å…·ä½“çš„é€‰é¡¹
     */
    fun getDomainItem(name: String, resultCallBack: ResultCallBack<ArrayList<Domainitem>>) {
        val service = retrofit.create(DomainItemService::class.java).getItemByName(name)
        RetrofitFactory.executeResult(service, object : ResultObserver<ArrayList<Domainitem>>() {
            override fun onSuccess(result: ArrayList<Domainitem>?) {
                resultCallBack.onSuccess(result)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
}
app/src/main/java/cn/flightfeather/thirdappmodule/repository/EvaluationRepository.kt
@@ -9,6 +9,7 @@
import cn.flightfeather.thirdappmodule.common.net.ResultObserver
import cn.flightfeather.thirdappmodule.common.net.RetrofitFactory
import cn.flightfeather.thirdappmodule.httpservice.EvaluationService
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse
import cn.flightfeather.thirdappmodule.repository.dao.EvaluationDao
import io.reactivex.Observable
import io.reactivex.functions.BiFunction
@@ -21,10 +22,17 @@
 * è¯„分相关数据操作
 */
class EvaluationRepository {
    companion object {
        @JvmStatic
        val instance: EvaluationRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { EvaluationRepository()}
    }
    private val retrofit = RetrofitFactory.instance.retrofit
    private val evaluationDao = EvaluationDao()
    /**
     * èŽ·å–è¯„ä¼°æ€»è§„åˆ™
     */
    fun getEvaluationRule(
            provinceCode: String, cityCode: String,
            districtCode: String, sceneTypeId: Byte, resultCallBack: ResultCallBack<List<Evaluationrule>>) {
@@ -44,11 +52,36 @@
        })
    }
    /**
     * æ ¹æ®å·¡æŸ¥è®°å½•id获取评估总分
     */
    fun getEvaluation(inspectionGuid: String, resultCallBack: ResultCallBack<List<Evaluation>>) {
        retrofit.create(EvaluationService::class.java)
                .findByInspectionId(inspectionGuid).enqueue(ResponseBodyCallBack(resultCallBack))
    }
    /**
     * æ ¹æ®åœºæ™¯id获取评估总分
     */
    fun getEvaluationByScene(sceneId: String, page: Int = 1, pageSize: Int = 4, resultCallBack: ResultCallBack<List<Evaluation>>) {
        val service = retrofit.create(EvaluationService::class.java).getEvaluationListByScene(sceneId, page, pageSize)
        RetrofitFactory.executeResult(service, object : ResultObserver<BaseResponse<List<Evaluation>>>() {
            override fun onPage(current: Int, total: Int) {
                super.onPage(current, total)
                resultCallBack.onPage(current, total)
            }
            override fun onSuccess(result: BaseResponse<List<Evaluation>>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
    fun getRuleItem(evaluationruleGuid: String, subTaskGuid: String,resultCallBack: ResultCallBack<ArrayList<EvaluationsubruleVo>>) {
        val dbService = evaluationDao.getEvaluationSubRule(evaluationruleGuid).map {
            val list = it.map {
app/src/main/java/cn/flightfeather/thirdappmodule/repository/SceneRepository.kt
@@ -1,14 +1,19 @@
package cn.flightfeather.thirdappmodule.repository
import cn.flightfeather.thirdappmodule.bean.entity.*
import cn.flightfeather.thirdappmodule.bean.vo.BaseSubScene
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailStrVo
import cn.flightfeather.thirdappmodule.bean.vo.SceneDetailVo
import cn.flightfeather.thirdappmodule.common.net.ResponseBodyCallBack
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.common.net.ResultObserver
import cn.flightfeather.thirdappmodule.common.net.RetrofitFactory
import cn.flightfeather.thirdappmodule.httpservice.ScenseService
import cn.flightfeather.thirdappmodule.model.bean.BaseResponse
import cn.flightfeather.thirdappmodule.module.task.Division
import cn.flightfeather.thirdappmodule.repository.dao.DomainDao
import cn.flightfeather.thirdappmodule.repository.dao.SceneDao
import cn.flightfeather.thirdappmodule.util.Constant
import io.reactivex.Observable
import io.reactivex.functions.Function4
import okhttp3.ResponseBody
@@ -127,4 +132,42 @@
        retrofit.create(ScenseService::class.java).updateSceneList(sceneList)
                .enqueue(ResponseBodyCallBack(resultCallBack))
    }
    /**
     * èŽ·å–åœºæ™¯è¯¦æƒ…ï¼ŒåŒ…å«åŸºç¡€ä¿¡æ¯å’Œåœºæ™¯ç‰¹æœ‰ä¿¡æ¯
     */
    fun <T : BaseSubScene> getSceneDetail(scene: Scense, resultCallBack: ResultCallBack<SceneDetailVo<T>>) {
        val sceneService = when (scene.typeid.toString()) {
            Constant.SCENE_TYPE_SITE -> retrofit.create(ScenseService::class.java).getSceneDetail<T>(scene.guid)
            else -> retrofit.create(ScenseService::class.java).getSceneDetail<T>(scene.guid)
        }
        RetrofitFactory.executeResult(sceneService, object : ResultObserver<BaseResponse<SceneDetailVo<T>>>() {
            override fun onSuccess(result: BaseResponse<SceneDetailVo<T>>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
    /**
     * æ›´æ–°åœºæ™¯è¯¦æƒ…
     */
    fun updateSceneDetail(vo: SceneDetailStrVo, resultCallBack: ResultCallBack<String>) {
        vo.scene ?: return
        val sceneService = retrofit.create(ScenseService::class.java).updateSceneDetail(vo.scene!!.typeid.toInt(), vo)
        RetrofitFactory.executeResult(sceneService, object : ResultObserver<BaseResponse<String>>() {
            override fun onSuccess(result: BaseResponse<String>?) {
                resultCallBack.onSuccess(result?.data)
            }
            override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
                resultCallBack.onFailure()
            }
        })
    }
}
app/src/main/res/drawable-anydpi-v24/ic_info_black_24dp.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="#FFFFFF">
  <group android:scaleX="0.92"
      android:scaleY="0.92"
      android:translateX="0.96"
      android:translateY="0.96">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M19,3L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM14,17L7,17v-2h7v2zM17,13L7,13v-2h10v2zM17,9L7,9L7,7h10v2z"/>
  </group>
</vector>
app/src/main/res/drawable-hdpi/ic_info_black_24dp.png
app/src/main/res/drawable-mdpi/ic_info_black_24dp.png
app/src/main/res/drawable-xhdpi/ic_info_black_24dp.png
app/src/main/res/drawable-xxhdpi/ic_info_black_24dp.png
app/src/main/res/layout/dialog_scene_history.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,221 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.CardView
        android:id="@+id/cv_dialog_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="30dp"
        android:layout_marginRight="12dp"
        android:layout_marginBottom="40dp"
        app:cardCornerRadius="6dp"
        app:cardElevation="7dp">
        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="@dimen/dimen16">
            <TextView
                android:id="@+id/tv_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="历史情况"
                android:textColor="@color/primary_text"
                android:textSize="@dimen/textSize_18"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
            <ProgressBar
                android:id="@+id/view_waiting"
                android:layout_width="@dimen/fab_margin"
                android:layout_height="@dimen/fab_margin"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/tv_title">
                <TextView
                    android:id="@+id/tv_title_1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="1. çŽ°åœºè¯„åˆ†"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_1">
                <TextView
                    android:id="@+id/tv_title_2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="2. å…¸åž‹å·¥åœ°"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_2">
                <TextView
                    android:id="@+id/tv_title_3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="3. é‡ç‚¹åŒºåŸŸ"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_3">
                <TextView
                    android:id="@+id/tv_title_4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="4. è”合执法"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_4">
                <TextView
                    android:id="@+id/tv_title_5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="5. æ•´æ”¹æ•ˆçއ"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_6"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_5">
                <TextView
                    android:id="@+id/tv_title_6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="6. æ–½å·¥é˜¶æ®µ"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_7"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_6">
                <TextView
                    android:id="@+id/tv_title_7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="7. ç›‘测数据"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
            <android.support.constraint.ConstraintLayout
                android:id="@+id/cl_8"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                app:layout_constraintTop_toBottomOf="@id/cl_7">
                <TextView
                    android:id="@+id/tv_title_8"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingTop="@dimen/dimen4"
                    android:paddingBottom="@dimen/dimen4"
                    android:text="8. åº”急巡查"
                    android:textColor="@color/main_color_1"
                    android:textSize="@dimen/textSize_16"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    tools:ignore="UnusedAttribute" />
            </android.support.constraint.ConstraintLayout>
        </android.support.constraint.ConstraintLayout>
    </android.support.v7.widget.CardView>
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/cancel"
        android:src="@drawable/icon_close_white"
        app:elevation="8dp"
        app:fabSize="normal"
        app:layout_anchor="@id/cv_dialog_main"
        app:layout_anchorGravity="bottom|center" />
</android.support.design.widget.CoordinatorLayout>
app/src/main/res/layout/dialog_scene_subinfo.xml
@@ -84,9 +84,23 @@
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:fabSize="normal"
        android:layout_marginLeft="76dp"
        app:elevation="8dp"
        app:layout_anchor="@id/cv_dialog_main"
        app:layout_anchorGravity="bottom|center"
        app:layout_anchorGravity="bottom|left"
        android:contentDescription="@string/cancel" />
    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/icon_right_white"
        android:id="@+id/fab_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:fabSize="normal"
        android:layout_marginRight="76dp"
        app:elevation="8dp"
        app:backgroundTint="@color/lightGreen"
        app:layout_anchor="@id/cv_dialog_main"
        app:layout_anchorGravity="bottom|right"
        />
</android.support.design.widget.CoordinatorLayout>
app/src/main/res/layout/fragment_inspection_content.xml
@@ -12,7 +12,44 @@
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="20dp"></com.amap.api.maps.MapView>
        android:layout_marginBottom="20dp" />
    <TextView
        android:id="@+id/scene_status"
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="@string/scene_status"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/scene_detail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="230dp"
        android:background="@drawable/shape_yellow"
        android:drawableStart="@drawable/ic_info_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="点位情况"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <TextView
        android:id="@+id/user_account"
@@ -20,16 +57,16 @@
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:text="用户账号"
        android:elevation="@dimen/dimen4"
        android:layout_marginBottom="188dp"
        android:padding="@dimen/dimen4"
        android:gravity="center"
        android:textColor="@color/white"
        android:background="@drawable/shape_green"
        android:foreground="?android:attr/selectableItemBackground"
        android:drawableStart="@drawable/ic_group_black_24dp"
        android:drawableTint="@color/white"
        android:elevation="@dimen/dimen4"
        android:foreground="?android:attr/selectableItemBackground"
        android:gravity="center"
        android:padding="@dimen/dimen4"
        android:text="用户账号"
        android:textColor="@color/white"
        tools:ignore="UnusedAttribute" />
    <LinearLayout
@@ -184,21 +221,22 @@
    </RelativeLayout>
    <LinearLayout
        android:paddingTop="12dp"
        android:paddingBottom="14dp"
        android:id="@+id/ll_patrol_task_detail"
        android:background="@drawable/shap_stroke_bottom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@+id/ln_patrol_subtask_detail"
        android:layout_alignParentStart="true">
        android:layout_alignParentStart="true"
        android:background="@drawable/shap_stroke_bottom"
        android:orientation="vertical"
        android:paddingTop="12dp"
        android:paddingBottom="14dp">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginLeft="16dp">
            android:layout_marginLeft="16dp"
            android:orientation="vertical">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
@@ -247,138 +285,157 @@
                    <TextView
                        android:id="@+id/tv_subtask_plan_time"
                        android:layout_width="wrap_content"
                        android:singleLine="true"
                        android:layout_height="wrap_content" />
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/task_execute_time"/>
                    <TextView
                        android:id="@+id/tv_subtask_execute_time"
                        android:layout_width="wrap_content"
                        android:singleLine="true"
                        android:layout_height="wrap_content" />
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/task_executors"/>
                    <TextView
                        android:id="@+id/tv_subtask_executors"
                        android:layout_width="wrap_content"
                        android:singleLine="true"
                        android:layout_height="wrap_content" />
                    android:layout_height="wrap_content"
                    android:singleLine="true" />
                </LinearLayout>
            </LinearLayout>
        <LinearLayout
            android:layout_marginTop="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:orientation="horizontal">
            <TextView
                android:layout_marginLeft="16dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/scense_name"
                />
                android:layout_marginLeft="16dp"
                android:text="@string/scense_name" />
            <TextView
                android:id="@+id/tv_scense_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_marginLeft="16dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/scense_type"
                />
                android:layout_marginLeft="16dp"
                android:text="@string/scense_type" />
            <TextView
                android:id="@+id/tv_scense_type"
                android:layout_width="wrap_content"
                android:singleLine="true"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_marginLeft="16dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/scense_address"
                />
            <TextView
                android:id="@+id/tv_scense_address"
                android:layout_width="wrap_content"
                android:singleLine="true"
                android:layout_height="wrap_content" />
                android:singleLine="true" />
        </LinearLayout>
        <LinearLayout
            android:layout_marginTop="4dp"
            android:layout_marginLeft="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="16dp"
                android:text="@string/scense_address" />
            <TextView
                android:id="@+id/tv_scense_address"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="4dp"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="联系人  1:"/>
            <TextView
                android:id="@+id/tv_scense_contact1"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text=""/>
            <TextView
                android:id="@+id/tv_call_contact1"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_marginRight="16dp"
                android:textColor="@color/colorPrimary"
                android:background="@drawable/contactcompany"
                android:text=""/>
                android:text=""
                android:textColor="@color/colorPrimary" />
        </LinearLayout>
        <LinearLayout
            android:visibility="gone"
            android:layout_marginLeft="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            android:layout_marginLeft="16dp"
            android:orientation="horizontal"
            android:visibility="gone">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="联系人  2:"/>
            <TextView
                android:id="@+id/tv_scense_contact2"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text=""/>
            <TextView
                android:id="@+id/tv_call_contact2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="9dp"
                android:paddingRight="25dp"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"
                android:text="打电话"/>
                android:text="打电话"
                android:textColor="@color/colorPrimary" />
        </LinearLayout>
        </LinearLayout>