添加测量计划、工程计量相关接口及页面调整;项目列表接口修改;

main
chenglifeng 7 months ago
parent 521b4f63f3
commit 1b81c61871
  1. 8
      app/src/main/java/com/project/survey/logic/viewmodel/ControlNetViewModel.kt
  2. 109
      app/src/main/java/com/project/survey/logic/viewmodel/ProjectViewModel.kt
  3. 2
      app/src/main/java/com/project/survey/model/LoginBean.kt
  4. 24
      app/src/main/java/com/project/survey/model/MeasureBean.kt
  5. 20
      app/src/main/java/com/project/survey/model/PointEntry.kt
  6. 78
      app/src/main/java/com/project/survey/model/ProjectBean.kt
  7. 46
      app/src/main/java/com/project/survey/network/Api.kt
  8. 2
      app/src/main/java/com/project/survey/network/RetrofitClient.kt
  9. 2
      app/src/main/java/com/project/survey/ui/SplashActivity.kt
  10. 2
      app/src/main/java/com/project/survey/ui/approval/ApprovalActivity.kt
  11. 14
      app/src/main/java/com/project/survey/ui/home/HomeFragment.kt
  12. 2
      app/src/main/java/com/project/survey/ui/instrument/coordinatesystem/fragment/CoordinateSystemContainerFragment.java
  13. 2
      app/src/main/java/com/project/survey/ui/lofting/pointlofting/record/RecordsActivity.java
  14. 117
      app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListActivity.kt
  15. 38
      app/src/main/java/com/project/survey/ui/pointmeasure/PointMeasureListFragment.kt
  16. 23
      app/src/main/java/com/project/survey/ui/pointmeasure/adapter/PointMeasureListAdapter.kt
  17. 17
      app/src/main/java/com/project/survey/ui/project/ProjectListActivity.kt
  18. 65
      app/src/main/java/com/project/survey/ui/project/ProjectListFragment.kt
  19. 8
      app/src/main/java/com/project/survey/util/SPUtils.kt
  20. 57
      app/src/main/res/layout/activity_point_measure_list.xml
  21. 31
      app/src/main/res/layout/fragment_home.xml
  22. 2
      app/src/main/res/values/strings.xml
  23. 3
      app/src/main/res/values/styles.xml

@ -27,7 +27,7 @@ class ControlNetViewModel : BaseViewModel() {
launch { launch {
val currentProject = val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
val res = api.fetchSpecialControlNetworkList(currentProject?.BD_XMXX_ID ?: "", pageNum) val res = api.fetchSpecialControlNetworkList(currentProject?.XMXX_ID ?: "", pageNum)
if (res.success) { if (res.success) {
_controlNetworkListResponse.postValue(res.data) _controlNetworkListResponse.postValue(res.data)
} }
@ -51,7 +51,7 @@ class ControlNetViewModel : BaseViewModel() {
val currentProject = val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
val res = api.fetchSpecialControlNetworkInfo( val res = api.fetchSpecialControlNetworkInfo(
currentProject?.BD_XMXX_ID ?: "", currentProject?.XMXX_ID ?: "",
controlNetworkName, controlNetworkName,
pointName, pointName,
pageNum pageNum
@ -74,7 +74,7 @@ class ControlNetViewModel : BaseViewModel() {
val currentProject = val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
val res = api.fetchSpecialControlNetCGList( val res = api.fetchSpecialControlNetCGList(
currentProject?.BD_XMXX_ID ?: "", currentProject?.XMXX_ID ?: "",
"BD_KZWZBCG", "BD_KZWZBCG",
"BD_KZWZBCG_ZY", "BD_KZWZBCG_ZY",
j_query, j_query,
@ -95,7 +95,7 @@ class ControlNetViewModel : BaseViewModel() {
val currentProject = val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
val res = api.fetchSpecialControlNetCGList( val res = api.fetchSpecialControlNetCGList(
currentProject?.BD_XMXX_ID ?: "", currentProject?.XMXX_ID ?: "",
"BD_KZWZBCG", "BD_KZWZBCG",
"BD_KZWZBCG", "BD_KZWZBCG",
j_query, j_query,

@ -3,7 +3,10 @@ package com.project.survey.logic.viewmodel
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.project.survey.constants.SPConstants import com.project.survey.constants.SPConstants
import com.project.survey.logic.bean.ListResult
import com.project.survey.model.ApprovalBean import com.project.survey.model.ApprovalBean
import com.project.survey.model.MeasureBean
import com.project.survey.model.PointEntry
import com.project.survey.model.ProjectBean import com.project.survey.model.ProjectBean
import com.project.survey.network.RetrofitClient import com.project.survey.network.RetrofitClient
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
@ -12,7 +15,6 @@ class ProjectViewModel : BaseViewModel() {
val api = RetrofitClient.createApiService() val api = RetrofitClient.createApiService()
val projectResponse: LiveData<List<ProjectBean>> val projectResponse: LiveData<List<ProjectBean>>
get() = _projectResponse get() = _projectResponse
private val _projectResponse = MutableLiveData<List<ProjectBean>>() private val _projectResponse = MutableLiveData<List<ProjectBean>>()
@ -22,9 +24,11 @@ class ProjectViewModel : BaseViewModel() {
*/ */
fun fetchProjectList() { fun fetchProjectList() {
launch { launch {
val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID) ?: "") val res = api.fetchProjectList(SPUtils.getString(SPConstants.PERSON_ID))
if (res.success) { if (res.success) {
_projectResponse.postValue(res.data) _projectResponse.postValue(res.data.map { it.values })
} else {
errorResponse.postValue(res.message)
} }
} }
} }
@ -40,10 +44,107 @@ class ProjectViewModel : BaseViewModel() {
launch { launch {
val currentProject = val currentProject =
SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java) SPUtils.getParcelable(SPConstants.CURRENT_PROJECT, ProjectBean::class.java)
val res = api.fetchWorkTask(currentProject?.BD_XMXX_ID ?: "", type, page) val res = api.fetchWorkTask(currentProject?.XMXX_ID ?: "", type, page)
if (res.success) { if (res.success) {
_workTaskListResponse.postValue(res.data.data.rows) _workTaskListResponse.postValue(res.data.data.rows)
} }
} }
} }
val measureBeanListResponse: LiveData<ListResult<MeasureBean>>
get() = _measureBeanListResponse
private val _measureBeanListResponse = MutableLiveData<ListResult<MeasureBean>>()
/**
* 获取测量工作测量计划与工程计量
*/
private fun fetchMeasureDataList(
tableCode: String,
funcCode: String,
j_query: String,
page: Int = 1,
start: Int
) {
launch {
val res = api.fetchMeasureDataList(
SPUtils.getString(SPConstants.PROJECT_ID),
tableCode,
funcCode,
j_query,
page,
start = start
)
if (res.success) {
_measureBeanListResponse.postValue(res.data)
} else {
errorResponse.postValue(res.message)
}
}
}
/**
* 获取 测量计划 列表
*/
fun fetchCLJH(page: Int = 1, start: Int = 0) {
fetchMeasureDataList("BD_CLJH", "BD_CLJH", "", page, start)
}
/**
* 获取 工程计量 列表
*/
fun fetchGCJL(page: Int = 1, start: Int = 0) {
fetchMeasureDataList("BD_CLGZ_GCJL", "BD_CLGZ_GCJL", "", page, start)
}
val updateMeasureWorkStatusResponse: LiveData<String>
get() = _updateMeasureWorkStatusResponse
private val _updateMeasureWorkStatusResponse = MutableLiveData<String>()
/**
* 修改测量工作状态
*/
fun updateMeasureWorkStatus(workId: String, workType: String, status: String) {
launch {
val res = api.updateMeasureWorkStatus(
SPUtils.getString(SPConstants.PROJECT_ID),
workId,
workType,
status
)
if (res.success) {
_updateMeasureWorkStatusResponse.postValue(res.data)
} else {
errorResponse.postValue(res.message)
}
}
}
/**
* 修改 测量计划 工作状态
*/
fun updateCLJHStatus(workId: String, status: String) {
updateMeasureWorkStatus(workId, "BD_CLJH", status)
}
/**
* 修改 工程计量 工作状态
*/
fun updateGCJLStatus(workId: String, status: String) {
updateMeasureWorkStatus(workId, "BD_CLGZ_GCJL", status)
}
/**
* 测点记录录入
*/
fun uploadPointEntry(pointEntryList: List<PointEntry>) {
launch {
val res =
api.uploadPointEntry(SPUtils.getString(SPConstants.PROJECT_ID), pointEntryList)
if (res.success) {
} else {
errorResponse.postValue(res.message)
}
}
}
} }

@ -12,5 +12,5 @@ import kotlinx.android.parcel.Parcelize
data class LoginBean( data class LoginBean(
val token: String, val token: String,
val mobilePhone: String, val mobilePhone: String,
val personId: String val personId: String?
) : Parcelable ) : Parcelable

@ -0,0 +1,24 @@
package com.project.survey.model
/**
*
*/
data class MeasureBean(
val BD_CONTRACT_ID: String,
val BD_FBFXPZ_DWGCMC: String, //单位工程名称
val SY_COMPANY_ID: String,
val CLJH_ENDTIME: String,
val BD_FBFXPZ_FXGCMC: String, //分项工程名称
val SY_CREATEUSERNAME: String,
val CLJH_SBDW_ID: String,
val SY_PREAPPROVUSERNAMES: String,
val SY_CURRENTTASK: String,
val BD_CLJH_ID: String, //测量计划ID,即测量工作ID
val CLJH_STARTTIME: String,
val CLJH_CONTENT: String, //测量内容
val CLJH_LCMC: String, //流程名称
val BD_FBFXPZ_FBGCMC: String, //分部工程名称
val BD_FBFXPZ_DYGCMC: String, //单元工程名称
val CLJH_BDLSH: String, //流程编号
val CLJH_CLLX_NAME: String, //测量类型
)

@ -0,0 +1,20 @@
package com.project.survey.model
data class PointEntry(
val name: String, //点名称 "点1"
val workId: String, //测量工作id "80ffa3b7701a46f9b320297e332d5678"
val workType: String, //测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL
val antennaHight: String, //天线高 "11"
val remark: String, //备注 "点1"
val x: String, //"111"
val y: String, //"11"
val z: String, //"11"
val longitude: String, //经度
val latitude: String, //纬度
val hrms: String,
val vrms: String,
val pdop: String,
val delay: String, //延迟 "xx"
val jzt: String, //解状态 "xx"
val satellite: String, //结算卫星 "xx"
)

@ -4,33 +4,42 @@ import android.os.Parcelable
import androidx.annotation.Keep import androidx.annotation.Keep
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
//{
// "XMXX_PILENO": "20221111", /**
// "XMXX_INDUSTRYTYPE": "水电工程", * {
// "SY_COMPANY_ID": null, * "values": {
// "$TABLE_CODE$": null, * "XMXX_PILENO": "K1+000~K1+022",
// "SY_CREATEUSERNAME": null, * "XMXX_INDUSTRYTYPE": "水电工程",
// "XMXX_STATUS": "完工", * "SY_COMPANY_ID": null,
// "XMXX_LEVEL": "A类", * "SY_CREATEUSERNAME": null,
// "SY_ORDERINDEX": null, * "XMXX_STATUS": "完工",
// "SY_GROUP_COMPANY_NAME": null, * "XMXX_LEVEL": "B类",
// "SY_COMPANY_NAME": null, * "SY_ORDERINDEX": null,
// "XMXX_CODE": "202109[101]", * "SY_GROUP_COMPANY_NAME": null,
// "BD_XMXX_ID": "f5b09f04f26d4d0e99591c01a5dedeeb", * "SY_COMPANY_NAME": null,
// "SY_CREATEORGID": null, * "XMXX_CODE": "XMBHTest20241014001",
// "SY_STATUS": "1", * "SY_CREATEORGID": null,
// "SY_CREATEUSERID": null, * "SY_STATUS": "1",
// "SY_GROUP_COMPANY_ID": null, * "SY_CREATEUSERID": null,
// "XMXX_CONTACTNAME": "何嘉能", * "SY_GROUP_COMPANY_ID": null,
// "XMXX_LOCATIONXY": "122;39", * "XMXX_CONTACTNAME": "徐齐行",
// "XMXX_FILE": null, * "XMXX_LOCATIONXY": "121.1;29.6",
// "XMXX_CONTACTNAMEID": "", * "XMXX_FILE": "[{\"fileKey\":\"imNMv698gNhK6K4savQ\",\"relName\":\"22ec2661b8cde194bd42900c99e46bef.jpg\",\"suffix\":\"jpg\",\"hasThumbnail\":true,\"fullUrl\":null,\"size\":59,\"createUserName\":\"admin123\",\"createUserDeptName\":\"北斗\",\"createTime\":\"2024-10-14 09:34:49\",\"createTimeStr\":\"2024-10-14 09:34:49\",\"dicId\":null,\"dicCode\":null,\"dicName\":null,\"remarks\":null}]",
// "XMXX_DESCRIPTION": "测试项目", * "XMXX_ID": "xYgALS4VOJ0vDrEVUcQ",
// "SY_CREATEORGNAME": null, * "XMXX_CONTACTNAMEID": "",
// "SY_CREATETIME": null, * "SY_CREATEORGNAME": null,
// "SY_ORG_ID": null, * "XMXX_DESCRIPTION": "舟山市,古称海中洲,浙江省辖地级市 [2],位于浙江省东北部舟山群岛 [1],地处中国东南沿海,长江口南侧,杭州湾外缘的东海洋面上。 [95]地势由西南向东北倾斜,南部岛大,海拔高,排列密集,北部岛小,地势低,分布稀疏,四面环海;属亚热带季风气候;总面积2.22万平方千米,其中海域面积2.08万平方千米,4696个岛礁陆地总面积1440.2平方千米 [46]。截至2024年2月,舟山市下辖2个区、2个县。截至2023年末,舟山市常住人口为117.3万人。 [92]\n舟山市是中国第一个以群岛建制的地级市,地处中国东部黄金海岸线与长江黄金水道的交汇处,背靠长三角广阔经济腹地,舟山拥有2085个岛屿和270多公里深水岸线,是中国第一大群岛和重要港口城市。 [96]1953年6月10日,设立舟山专区;1987年1月,撤销舟山地区,建立舟山市。舟山市是长江三角洲中心区城市,上海大都市圈重要城市 [58],也是中国第四个国家级新区舟山群岛新区所在地 [60],是国际性的港口与海岛旅游城市 [62],是海洋经济先导区 [62],境内有由国务院批准设立的大宗商品交易管理与监督中心 [3]、中国(浙江)自由贸易试验区舟山片区 [61]。宁波舟山港年货物吞吐量位居全球第一,集装箱吞吐量位居世界第三。 [59]2024年,宁波舟山国际航运中心全球排名第8。 [106]舟山市拥有普陀山、嵊泗列岛两个国家级风景名胜区,岱山、桃花岛两个省级风景名胜区以及海岛历史文化名城定海。\n2023年,舟山市实现地区生产总值2100.8亿元,同比增长8.2%,高出全省平均2.2个百分点。",
// "XMXX_NAME": "测试项目" * "SY_CREATETIME": null,
//} * "SY_ORG_ID": null,
* "XMXX_NAME": "齐恒测试项目(舟山)"
* },
* "tenantIdField": "SY_TENANT_ID",
* "tenantNameField": "SY_TENANT_NAME",
* "tableCode": null,
* "pkCode": null,
* "pkValue": null
* }
*/
@Keep @Keep
@Parcelize @Parcelize
data class ProjectBean( data class ProjectBean(
@ -42,8 +51,17 @@ data class ProjectBean(
val XMXX_PILENO: String, //起讫桩号 val XMXX_PILENO: String, //起讫桩号
val XMXX_CONTACTNAME: String, //联系人 val XMXX_CONTACTNAME: String, //联系人
val XMXX_CONTACTNAMEID: String, //联系人ID val XMXX_CONTACTNAMEID: String, //联系人ID
val XMXX_LOCATIONXY: String, //项目位置(度) val XMXX_LOCATIONXY: String, //项目位置(度) "121.1;29.6"
val XMXX_FILE: String?, //项目图片 val XMXX_FILE: String?, //项目图片
val XMXX_DESCRIPTION: String?, //项目图片 val XMXX_DESCRIPTION: String?,
val BD_XMXX_ID: String?, val XMXX_ID: String, //项目ID
val SY_STATUS: String?,
) : Parcelable ) : Parcelable
@Keep
@Parcelize
data class ProjectData(
val tenantIdField: String,
val tenantNameField: String,
val values: ProjectBean
): Parcelable

@ -6,7 +6,12 @@ import com.project.survey.model.ControlNetworkBean
import com.project.survey.model.ControlNetCGBean import com.project.survey.model.ControlNetCGBean
import com.project.survey.model.ControlNetworkInfoBean import com.project.survey.model.ControlNetworkInfoBean
import com.project.survey.model.LoginBean import com.project.survey.model.LoginBean
import com.project.survey.model.MeasureBean
import com.project.survey.model.PointEntry
import com.project.survey.model.ProjectBean import com.project.survey.model.ProjectBean
import com.project.survey.model.ProjectData
import okhttp3.RequestBody
import retrofit2.http.Body
import retrofit2.http.Field import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET import retrofit2.http.GET
@ -71,7 +76,7 @@ interface Api {
@GET("je/project/getAllProjectIDByPersonId") @GET("je/project/getAllProjectIDByPersonId")
suspend fun fetchProjectList( suspend fun fetchProjectList(
@Query("personId") personId: String @Query("personId") personId: String
): HttpResult<List<ProjectBean>> ): HttpResult<List<ProjectData>>
// /** // /**
// * 发送验证码 // * 发送验证码
@ -151,4 +156,43 @@ interface Api {
@Field("limit") limit: Int = 30, @Field("limit") limit: Int = 30,
@Field("start") start: Int = 0 @Field("start") start: Int = 0
): HttpResult<ListResult<ControlNetCGBean>> ): HttpResult<ListResult<ControlNetCGBean>>
/**
* 获取测量工作测量计划与工程计量
* @param tableCode 测量计划传BD_CLJH工程计量传BD_CLGZ_GCJL
* @param funcCode 测量计划传BD_CLJH工程计量传BD_CLGZ_GCJL
* @param j_qurey 固定参数 [{"code":"SY_CURRENTTASK","type":"=","value":"施工单位APP上开展测量工作"}]
*/
@FormUrlEncoded
@POST("je/cloud/beiDou/load")
suspend fun fetchMeasureDataList(
@Header("projectId") projectId: String,
@Field("tableCode") tableCode: String,
@Field("funcCode") funcCode: String,
@Field("j_qurey") j_qurey: String = "",
@Field("page") page: Int,
@Field("limit") limit: Int = 30,
@Field("start") start: Int = 0
): HttpResult<ListResult<MeasureBean>>
/**
* 修改测量工作状态
*/
@GET("je/measureWork/modifyWorkStatus")
suspend fun updateMeasureWorkStatus(
@Header("projectId") projectId: String,
@Query("workId") workId: String, //测量工作ID
@Query("workType") workType: String, //测量计划传BD_CLJH,工程计量传:BD_CLGZ_GCJL
@Query("status") status: String //执行中、已结束(对应按钮:进入测量、结束测量)
) : HttpResult<String>
/**
* 测点记录录入
*/
@POST("je/measureWork/pointsEntry")
suspend fun uploadPointEntry(
@Header("projectId") projectId: String,
@Body requestBody: List<PointEntry>
) : HttpResult<String>
} }

@ -52,7 +52,7 @@ object RetrofitClient {
} else { } else {
builder.addHeader("pd", "jecloud-gcclzhglpt") builder.addHeader("pd", "jecloud-gcclzhglpt")
} }
val token = SPUtils.getString(SPConstants.TOKEN) ?: "" val token = SPUtils.getString(SPConstants.TOKEN)
builder.removeHeader("Authorization") builder.removeHeader("Authorization")
if (token.isNotBlank()) { if (token.isNotBlank()) {
builder.addHeader("Authorization", token) builder.addHeader("Authorization", token)

@ -30,7 +30,7 @@ class SplashActivity : BaseBindingActivity<ActivitySplashBinding>() {
MockUtil.login() MockUtil.login()
MainActivity.start() MainActivity.start()
} else { } else {
if (SPUtils.getString(SPConstants.TOKEN).isNullOrBlank()) { if (SPUtils.getString(SPConstants.TOKEN).isBlank()) {
LoginActivity.start() LoginActivity.start()
} else { } else {
val currentProject = val currentProject =

@ -126,7 +126,7 @@ class ApprovalActivity : BaseBindingActivity<ActivityApprovalBinding>(), OnRefre
adapter.setOnItemClickListener { _, _, position -> adapter.setOnItemClickListener { _, _, position ->
adapter.getItem(position)?.let { bean -> adapter.getItem(position)?.let { bean ->
// http://10.190.183.37/app/micro/func/#/pages/func/form/{功能编码}/{流程ID}?authorization={登录token}&appId=2024-0926-1104-0165 // http://10.190.183.37/app/micro/func/#/pages/func/form/{功能编码}/{流程ID}?authorization={登录token}&appId=2024-0926-1104-0165
val token = SPUtils.getString(SPConstants.TOKEN) ?: "" val token = SPUtils.getString(SPConstants.TOKEN)
val url = val url =
BuildConfig.BASE_URL + "app/micro/func/#/pages/func/form/${bean.funcCode}/${bean.pkValue}?authorization=${token}&appId=2024-0926-1104-0165" BuildConfig.BASE_URL + "app/micro/func/#/pages/func/form/${bean.funcCode}/${bean.pkValue}?authorization=${token}&appId=2024-0926-1104-0165"
AgentWebActivity.navigation2(this, Uri.parse(url)) AgentWebActivity.navigation2(this, Uri.parse(url))

@ -48,10 +48,18 @@ class HomeFragment : BaseBindingFragment<FragmentHomeBinding>() {
} }
override fun initListener() { override fun initListener() {
//点测量 // 测量计划
mBinding.itemPointMeasure.setOnClickNoRepeatListener { mBinding.itemSurveyPlan.setOnClickNoRepeatListener {
PointMeasureListActivity.start() PointMeasureListActivity.start(PointMeasureListActivity.TYPE_SURVEY_PLAN)
} }
// 工程计量
mBinding.itemEngineeringMetrology.setOnClickNoRepeatListener {
PointMeasureListActivity.start(PointMeasureListActivity.TYPE_PROJECT_MEASURE)
}
// //点测量
// mBinding.itemPointMeasure.setOnClickNoRepeatListener {
// PointMeasureListActivity.start()
// }
//放样 //放样
mBinding.itemLofting.setOnClickNoRepeatListener { mBinding.itemLofting.setOnClickNoRepeatListener {
LoftingListActivity.start() LoftingListActivity.start()

@ -222,7 +222,7 @@ public class CoordinateSystemContainerFragment extends AbstractCoordinateSystemC
return; return;
} }
currentProjectRecord.coordinateSystem = coordinateSystem; currentProjectRecord.coordinateSystem = coordinateSystem;
UserConfig userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(SPUtils.INSTANCE.getString(SPConstants.PERSON_ID)); UserConfig userConfig = AppDataBase.getInstance().userConfigDao().findByLeanCloudUserId(SPUtils.INSTANCE.getString(SPConstants.PERSON_ID, ""));
ProjectDb.getInstance().userSafe(userConfig).save(currentProjectRecord); ProjectDb.getInstance().userSafe(userConfig).save(currentProjectRecord);
//切换线路 //切换线路
ThreadPoolUtil.executeInMain(success); ThreadPoolUtil.executeInMain(success);

@ -333,7 +333,7 @@ public class RecordsActivity extends ColorfulActivity {
if (recordsUtils != null) { if (recordsUtils != null) {
recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs, recordsUtils.update(binding.recyclerviewRecords, isSortByTimeAcs,
null, null,
SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID), "", "", SPUtils.INSTANCE.getString(SPConstants.PROJECT_ID, ""), "", "",
filterUtils.filterParameter()); filterUtils.filterParameter());
// if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) { // if (RecordTypeConstants.TYPE_MEASURING_TAPE == currentTypeFromSpinner) {

@ -1,34 +1,59 @@
package com.project.survey.ui.pointmeasure package com.project.survey.ui.pointmeasure
import android.view.View import androidx.activity.viewModels
import androidx.core.os.bundleOf
import com.project.survey.R import com.project.survey.R
import com.project.survey.databinding.ActivityPointMeasureListBinding import com.project.survey.databinding.ActivityPointMeasureListBinding
import com.project.survey.extend.smartDismiss
import com.project.survey.extend.toast
import com.project.survey.logic.viewmodel.ControlNetViewModel
import com.project.survey.logic.viewmodel.ProjectViewModel
import com.project.survey.ui.base.BaseBindingActivity import com.project.survey.ui.base.BaseBindingActivity
import com.project.survey.ui.pointmeasure.adapter.PointMeasureListAdapter
import com.project.survey.ui.pointmeasure.measure.PointSurveyNewActivity
import com.project.survey.util.ActivityNavUtil import com.project.survey.util.ActivityNavUtil
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
/** /**
* 点测量列表 * 点测量列表
*/ */
class PointMeasureListActivity : BaseBindingActivity<ActivityPointMeasureListBinding>() { class PointMeasureListActivity : BaseBindingActivity<ActivityPointMeasureListBinding>(),
OnRefreshLoadMoreListener {
companion object { companion object {
const val KEY_TYPE = "KEY_TYPE" const val KEY_TYPE = "KEY_TYPE"
const val TYPE_ALL = "TYPE_ALL"//全部
const val TYPE_SURVEY_PLAN = "TYPE_SURVEY_PLAN"//测量计划 const val TYPE_SURVEY_PLAN = "TYPE_SURVEY_PLAN"//测量计划
const val TYPE_PROJECT_MEASURE = "TYPE_PROJECT_MEASURE"//工程计量 const val TYPE_PROJECT_MEASURE = "TYPE_PROJECT_MEASURE"//工程计量
fun start() { fun start(type: String) {
ActivityNavUtil.startActivity<PointMeasureListActivity> { } ActivityNavUtil.startActivity<PointMeasureListActivity> {
putString(KEY_TYPE, type)
} }
} }
}
private val viewModel: ProjectViewModel by viewModels()
private val adapter by lazy { PointMeasureListAdapter(type) }
private var type = ""
private var currentPage = 1
private var start = 0
override fun getBinding(): ActivityPointMeasureListBinding = override fun getBinding(): ActivityPointMeasureListBinding =
ActivityPointMeasureListBinding.inflate(layoutInflater) ActivityPointMeasureListBinding.inflate(layoutInflater)
override fun initView() { override fun initView() {
immersionToolbar(mBinding.toolbar, R.string.point_measure) type = intent.getStringExtra(KEY_TYPE) ?: ""
immersionToolbar(
mBinding.toolbar, when (type) {
TYPE_SURVEY_PLAN -> getString(R.string.survey_plan)
TYPE_PROJECT_MEASURE -> getString(R.string.engineering_metrology)
else -> ""
}
)
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(this)
mBinding.recyclerView.setAdapter(adapter)
adapter.isStateViewEnable = true
} }
override fun initListener() { override fun initListener() {
@ -36,44 +61,68 @@ class PointMeasureListActivity : BaseBindingActivity<ActivityPointMeasureListBin
mBinding.searchWidget.setOnEditorSearchListener { mBinding.searchWidget.setOnEditorSearchListener {
} }
mBinding.tvAll.setOnClickListener { // 结束测量
loadFirstPage() adapter.addOnItemChildClickListener(R.id.tvStopMeasure) { adapter, _, position ->
adapter.getItem(position)?.let { bean ->
// viewModel.updateMeasureWorkStatus(bean.BD_CLJH_ID, if (type == TYPE_SURVEY_PLAN) "BD_CLJH" else "BD_CLGZ_GCJL", "已结束")
} }
mBinding.tvSurveyPlan.setOnClickListener {
setBtnSelected(mBinding.tvSurveyPlan)
switchFragment(TYPE_SURVEY_PLAN)
} }
mBinding.tvProjectMeasured.setOnClickListener { // 进入测量
setBtnSelected(mBinding.tvProjectMeasured) adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { adapter, _, position ->
switchFragment(TYPE_PROJECT_MEASURE) adapter.getItem(position)?.let { bean ->
PointSurveyNewActivity.start(mContext)
// viewModel.updateMeasureWorkStatus(bean.BD_CLJH_ID, if (type == TYPE_SURVEY_PLAN) "BD_CLJH" else "BD_CLGZ_GCJL", "执行中")
} }
} }
private fun switchFragment(type: String) {
// val frament = PointMeasureListFragment()
// frament.arguments = bundleOf(KEY_TYPE to type)
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.container, PointMeasureListFragment.newInstance(type))
transaction.commit()
} }
override fun initData() { override fun initData() {
loadFirstPage() viewModel.errorResponse.observe(this) {
toast(it)
mBinding.smartRefreshLayout.smartDismiss()
}
viewModel.measureBeanListResponse.observe(this) {
mBinding.smartRefreshLayout.smartDismiss()
if (currentPage == 1) {
adapter.submitList(it.rows)
if (it.rows.isEmpty()) {
mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData()
adapter.setStateViewLayout(this, R.layout.layout_no_data)
} else {
currentPage++
start += it.totalCount
}
} else {
if (it.rows.isEmpty()) {
mBinding.smartRefreshLayout.finishLoadMoreWithNoMoreData()
} else {
adapter.addAll(it.rows)
currentPage++
start += it.totalCount
}
}
}
fetchData()
} }
private fun fetchData() {
private fun loadFirstPage() { if (type == TYPE_SURVEY_PLAN) {
setBtnSelected(mBinding.tvAll) viewModel.fetchCLJH(currentPage, start)
switchFragment(TYPE_ALL) } else {
viewModel.fetchGCJL(currentPage, start)
}
} }
private fun setBtnSelected(view: View) { override fun onRefresh(refreshLayout: RefreshLayout) {
mBinding.tvAll.isSelected = false currentPage = 1
mBinding.tvSurveyPlan.isSelected = false fetchData()
mBinding.tvProjectMeasured.isSelected = false }
view.isSelected = true override fun onLoadMore(refreshLayout: RefreshLayout) {
fetchData()
} }
} }

@ -9,10 +9,10 @@ import com.project.survey.databinding.FragmentPointMeasureListBinding
import com.project.survey.extend.toast import com.project.survey.extend.toast
import com.project.survey.model.PointMeasureListBean import com.project.survey.model.PointMeasureListBean
import com.project.survey.ui.base.BaseBindingFragment import com.project.survey.ui.base.BaseBindingFragment
import com.project.survey.ui.pointmeasure.adapter.PointMeasureListAdapter
import com.project.survey.ui.pointmeasure.measure.PointSurveyNewActivity import com.project.survey.ui.pointmeasure.measure.PointSurveyNewActivity
import com.project.survey.widget.decoration.TransparentDividerDecoration import com.project.survey.widget.decoration.TransparentDividerDecoration
@Deprecated("")
class PointMeasureListFragment : BaseBindingFragment<FragmentPointMeasureListBinding>() { class PointMeasureListFragment : BaseBindingFragment<FragmentPointMeasureListBinding>() {
companion object { companion object {
@ -31,12 +31,12 @@ class PointMeasureListFragment : BaseBindingFragment<FragmentPointMeasureListBin
): FragmentPointMeasureListBinding = ): FragmentPointMeasureListBinding =
FragmentPointMeasureListBinding.inflate(inflater, container, false) FragmentPointMeasureListBinding.inflate(inflater, container, false)
private val adapter by lazy { PointMeasureListAdapter() } // private val adapter by lazy { PointMeasureListAdapter() }
override fun initView() { override fun initView() {
// mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(mContext)) // mBinding.recyclerView.addItemDecoration(TransparentDividerDecoration(mContext))
mBinding.recyclerView.setAdapter(adapter) // mBinding.recyclerView.setAdapter(adapter)
adapter.isStateViewEnable = true // adapter.isStateViewEnable = true
} }
override fun initData() { override fun initData() {
@ -44,24 +44,24 @@ class PointMeasureListFragment : BaseBindingFragment<FragmentPointMeasureListBin
for (i in 0 until 3) { for (i in 0 until 3) {
dataList.add(PointMeasureListBean()) dataList.add(PointMeasureListBean())
} }
adapter.submitList(dataList) // adapter.submitList(dataList)
} }
override fun initListener() { override fun initListener() {
// 生成报验单 // // 生成报验单
adapter.addOnItemChildClickListener(R.id.tvGenerateForm) { _, _, position -> // adapter.addOnItemChildClickListener(R.id.tvGenerateForm) { _, _, position ->
toast("生成报验单:$position") // toast("生成报验单:$position")
} // }
// 结束测量 // // 结束测量
adapter.addOnItemChildClickListener(R.id.tvStopMeasure) { _, _, position -> // adapter.addOnItemChildClickListener(R.id.tvStopMeasure) { _, _, position ->
toast("结束测量:$position") // toast("结束测量:$position")
} // }
// 进入测量 // // 进入测量
adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { _, _, position -> // adapter.addOnItemChildClickListener(R.id.tvEnterMeasure) { _, _, position ->
adapter.getItem(position)?.let { bean -> // adapter.getItem(position)?.let { bean ->
PointSurveyNewActivity.start(mContext) // PointSurveyNewActivity.start(mContext)
} // }
} // }
} }

@ -5,18 +5,21 @@ import android.view.ViewGroup
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import com.chad.library.adapter4.viewholder.QuickViewHolder import com.chad.library.adapter4.viewholder.QuickViewHolder
import com.project.survey.R import com.project.survey.R
import com.project.survey.model.MeasureBean
import com.project.survey.ui.pointmeasure.PointMeasureListActivity
class PointMeasureListAdapter : BaseQuickAdapter<Any, QuickViewHolder>() { class PointMeasureListAdapter(val type: String) : BaseQuickAdapter<MeasureBean, QuickViewHolder>() {
override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: Any?) { override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: MeasureBean?) {
item?.let { bean -> if (item == null) return
holder.setText(R.id.tvName, "测量单位报审(验)单")
.setText(R.id.tvNO, "XMBH2021-0000-$position") holder.setText(R.id.tvName, item.CLJH_LCMC)
.setText(R.id.tvType, "测量类型") .setText(R.id.tvNO, item.CLJH_BDLSH)
.setText(R.id.tvProjectName, "单位-分部-分项$position") .setText(R.id.tvType, item.CLJH_CLLX_NAME)
.setText(R.id.tvMeasureContent, "内容名称") .setText(R.id.tvProjectName, item.BD_FBFXPZ_FXGCMC)
.setText(R.id.tvApplyUser, "张三") .setText(R.id.tvMeasureContent, item.CLJH_CONTENT)
} .setText(R.id.tvApplyUser, "")
.setVisible(R.id.tvGenerateForm, type == PointMeasureListActivity.TYPE_SURVEY_PLAN)
} }
override fun onCreateViewHolder( override fun onCreateViewHolder(

@ -11,12 +11,12 @@ import com.bingce.data.surveyor.designdata.kv.KeyValueConstants
import com.bingce.data.surveyor.designdata.kv.KeyValueRecord import com.bingce.data.surveyor.designdata.kv.KeyValueRecord
import com.bingce.data.surveyor.designdata.project.ProjectRecord import com.bingce.data.surveyor.designdata.project.ProjectRecord
import com.bingce.utils.ThreadPoolUtil import com.bingce.utils.ThreadPoolUtil
import com.project.survey.App
import com.project.survey.R import com.project.survey.R
import com.project.survey.constants.EventConstants import com.project.survey.constants.EventConstants
import com.project.survey.constants.SPConstants import com.project.survey.constants.SPConstants
import com.project.survey.databinding.ActivityProjectListBinding import com.project.survey.databinding.ActivityProjectListBinding
import com.project.survey.extend.smartDismiss import com.project.survey.extend.smartDismiss
import com.project.survey.extend.toast
import com.project.survey.logic.event.Message import com.project.survey.logic.event.Message
import com.project.survey.logic.viewmodel.ProjectViewModel import com.project.survey.logic.viewmodel.ProjectViewModel
import com.project.survey.ui.MainActivity import com.project.survey.ui.MainActivity
@ -70,6 +70,7 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>(), O
override fun initData() { override fun initData() {
viewModel.errorResponse.observe(this) { viewModel.errorResponse.observe(this) {
toast(it)
mBinding.smartRefreshLayout.smartDismiss() mBinding.smartRefreshLayout.smartDismiss()
} }
viewModel.projectResponse.observe(this) { viewModel.projectResponse.observe(this) {
@ -96,12 +97,17 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>(), O
adapter.getItem(position)?.let { bean -> adapter.getItem(position)?.let { bean ->
// 进入项目,设置当前项目 // 进入项目,设置当前项目
SPUtils.put(SPConstants.CURRENT_PROJECT, bean) SPUtils.put(SPConstants.CURRENT_PROJECT, bean)
SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_CODE) SPUtils.put(SPConstants.PROJECT_ID, bean.XMXX_ID)
// 存储配置--当前项目 // 存储配置--当前项目
ThreadPoolUtil.execute { ThreadPoolUtil.execute {
//存储新的项目 //存储新的项目
ProjectDb.getInstance().save( ProjectDb.getInstance().save(
ProjectRecord(bean.BD_XMXX_ID, bean.XMXX_NAME, CoordinateSystem.newCoordinateSystem(this), Date().time).apply { ProjectRecord(
bean.XMXX_ID,
bean.XMXX_NAME,
CoordinateSystem.newCoordinateSystem(this),
Date().time
).apply {
author = bean.XMXX_CONTACTNAME author = bean.XMXX_CONTACTNAME
} }
) )
@ -112,7 +118,10 @@ class ProjectListActivity : BaseBindingActivity<ActivityProjectListBinding>(), O
currentProjectConfig.value = bean.XMXX_CODE currentProjectConfig.value = bean.XMXX_CODE
} else { } else {
currentProjectConfig = currentProjectConfig =
KeyValueRecord(KeyValueConstants.KEY_CURRENT_PROJECT_ID, bean.XMXX_CODE) KeyValueRecord(
KeyValueConstants.KEY_CURRENT_PROJECT_ID,
bean.XMXX_CODE
)
} }
KeyValueDb.getInstance().save(currentProjectConfig) KeyValueDb.getInstance().save(currentProjectConfig)
} }

@ -13,6 +13,7 @@ import com.project.survey.ui.project.adapter.ProjectListAdapter
import com.project.survey.util.SPUtils import com.project.survey.util.SPUtils
import com.project.survey.widget.decoration.HorDividerDecoration import com.project.survey.widget.decoration.HorDividerDecoration
@Deprecated("使用 ProjectListActivity")
class ProjectListFragment : BaseBindingFragment<FragmentProjectListBinding>() { class ProjectListFragment : BaseBindingFragment<FragmentProjectListBinding>() {
companion object { companion object {
@ -34,50 +35,50 @@ class ProjectListFragment : BaseBindingFragment<FragmentProjectListBinding>() {
): FragmentProjectListBinding = FragmentProjectListBinding.inflate(inflater, container, false) ): FragmentProjectListBinding = FragmentProjectListBinding.inflate(inflater, container, false)
private val viewModel: ProjectViewModel by viewModels() private val viewModel: ProjectViewModel by viewModels()
private val adapter by lazy { ProjectListAdapter() } // private val adapter by lazy { ProjectListAdapter() }
private var type: String = "" private var type: String = ""
override fun initView() { override fun initView() {
type = arguments?.getString(TYPE, "") ?: "" type = arguments?.getString(TYPE, "") ?: ""
mBinding.recyclerView.addItemDecoration(HorDividerDecoration(mContext)) // mBinding.recyclerView.addItemDecoration(HorDividerDecoration(mContext))
mBinding.recyclerView.setAdapter(adapter) // mBinding.recyclerView.setAdapter(adapter)
} }
override fun initData() { override fun initData() {
viewModel.projectResponse.observe(this) { // viewModel.projectResponse.observe(this) {
if (type == TYPE_ALL) { // if (type == TYPE_ALL) {
adapter.submitList(it) // adapter.submitList(it)
} else { // } else {
adapter.submitList( // adapter.submitList(
it.filter { bean -> // it.filter { bean ->
bean.XMXX_CODE in // bean.XMXX_CODE in
(SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "").split(",") // (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "").split(",")
} // }
) // )
} // }
} // }
//
viewModel.fetchProjectList() // viewModel.fetchProjectList()
} }
override fun initListener() { override fun initListener() {
adapter.setOnItemClickListener { _, _, position -> // adapter.setOnItemClickListener { _, _, position ->
// TODO 去详情页 // // TODO 去详情页
adapter.getItem(position)?.let { bean -> // adapter.getItem(position)?.let { bean ->
val recentlyList = (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "") // val recentlyList = (SPUtils.getString(SPConstants.RECENTLY_PROJECT) ?: "")
.split(",") // .split(",")
.toMutableList() // .toMutableList()
if (bean.XMXX_CODE !in recentlyList) { // if (bean.XMXX_CODE !in recentlyList) {
recentlyList.add(bean.XMXX_CODE) // recentlyList.add(bean.XMXX_CODE)
} // }
SPUtils.put( // SPUtils.put(
SPConstants.RECENTLY_PROJECT, // SPConstants.RECENTLY_PROJECT,
recentlyList.joinToString(",") // recentlyList.joinToString(",")
) // )
} // }
} // }
} }
} }

@ -62,8 +62,12 @@ object SPUtils {
return mmkv.decodeBytes(key) return mmkv.decodeBytes(key)
} }
fun getString(key: String): String? { // fun getString(key: String): String? {
return mmkv.decodeString(key, "") // return mmkv.decodeString(key, "")
// }
fun getString(key: String, defaultValue: String = ""): String {
return mmkv.decodeString(key, defaultValue) ?: defaultValue
} }
fun <T : Parcelable> getParcelable(key: String, tClass: Class<T>): T? { fun <T : Parcelable> getParcelable(key: String, tClass: Class<T>): T? {

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
@ -27,54 +28,18 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:sw_hint="流程名称、编号、申请人" /> app:sw_hint="流程名称、编号、申请人" />
<LinearLayout <com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smartRefreshLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent">
android:background="@color/white"
android:orientation="horizontal"
android:paddingHorizontal="@dimen/sw_16dp"
android:paddingVertical="@dimen/sw_14dp">
<TextView
android:id="@+id/tvAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_point_measure_selector"
android:paddingHorizontal="@dimen/sw_11dp"
android:paddingVertical="@dimen/sw_5dp"
android:text="全部 23"
android:textColor="@color/text_color_selector_blue_black"
android:textSize="@dimen/sw_12sp" />
<TextView
android:id="@+id/tvSurveyPlan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sw_11dp"
android:background="@drawable/bg_point_measure_selector"
android:paddingHorizontal="@dimen/sw_11dp"
android:paddingVertical="@dimen/sw_5dp"
android:text="测量计划12"
android:textColor="@color/text_color_selector_blue_black"
android:textSize="@dimen/sw_12sp" />
<TextView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/tvProjectMeasured" android:id="@+id/recyclerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sw_11dp"
android:background="@drawable/bg_point_measure_selector"
android:paddingHorizontal="@dimen/sw_11dp"
android:paddingVertical="@dimen/sw_5dp"
android:text="工程计量11"
android:textColor="@color/text_color_selector_blue_black"
android:textSize="@dimen/sw_12sp" />
</LinearLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="2"
tools:listitem="@layout/item_point_measure_list" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</LinearLayout> </LinearLayout>

@ -50,36 +50,39 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.project.survey.widget.SectionItemWidget <com.project.survey.widget.SectionItemWidget
android:id="@+id/itemPointMeasure" android:id="@+id/itemSurveyPlan"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/sw_6dp" android:layout_marginTop="@dimen/sw_6dp"
app:layout_constraintEnd_toStartOf="@id/itemLofting" app:layout_constraintEnd_toStartOf="@id/itemEngineeringMetrology"
app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTitle1" app:layout_constraintTop_toBottomOf="@id/tvTitle1"
app:siw_icon="@drawable/icon_point_measurement" app:siw_icon="@drawable/icon_point_measurement"
app:siw_name="@string/point_measurement" /> app:siw_name="@string/survey_plan" />
<com.project.survey.widget.SectionItemWidget <com.project.survey.widget.SectionItemWidget
android:id="@+id/itemLofting" android:id="@+id/itemEngineeringMetrology"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/viewSpacer1" android:layout_marginTop="@dimen/sw_6dp"
app:layout_constraintEnd_toStartOf="@id/itemLofting"
app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@id/itemPointMeasure" app:layout_constraintStart_toEndOf="@id/itemSurveyPlan"
app:layout_constraintTop_toTopOf="@id/itemPointMeasure" app:layout_constraintTop_toBottomOf="@id/tvTitle1"
app:siw_icon="@drawable/icon_lofting" app:siw_icon="@drawable/icon_point_measurement"
app:siw_name="@string/stakeout" /> app:siw_name="@string/engineering_metrology" />
<View <com.project.survey.widget.SectionItemWidget
android:id="@+id/viewSpacer1" android:id="@+id/itemLofting"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="1dp" android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_weight="1"
app:layout_constraintStart_toEndOf="@id/itemLofting" app:layout_constraintStart_toEndOf="@id/itemEngineeringMetrology"
app:layout_constraintTop_toTopOf="@id/itemPointMeasure" /> app:layout_constraintTop_toTopOf="@id/itemSurveyPlan"
app:siw_icon="@drawable/icon_lofting"
app:siw_name="@string/stakeout" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

@ -3,6 +3,8 @@
<string name="app_name">工程测量</string> <string name="app_name">工程测量</string>
<string name="beidou_application">北斗应用</string> <string name="beidou_application">北斗应用</string>
<string name="survey_plan">测量计划</string>
<string name="engineering_metrology">工程计量</string>
<string name="point_measurement">点测量</string> <string name="point_measurement">点测量</string>
<string name="stakeout">放样</string> <string name="stakeout">放样</string>
<string name="process_approval">流程审批</string> <string name="process_approval">流程审批</string>

@ -121,7 +121,8 @@
<style name="ToolbarTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title"> <style name="ToolbarTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">@dimen/sw_15sp</item> <item name="android:textSize">@dimen/sw_15sp</item>
<item name="android:textColor">@color/text_color_ff</item> <!-- <item name="android:textColor">@color/text_color_ff</item>-->
<item name="android:textColor">@color/text_color_20</item>
</style> </style>
</resources> </resources>

Loading…
Cancel
Save