Compare commits

...

5 Commits

Author SHA1 Message Date
a1bd9b330a style: 操作日志详情页三块卡片内容统一向右缩进对齐
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 15:08:49 +08:00
2949f59800 feat: 板箱过磅列表筛选项目的站改为过磅状态
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 14:49:37 +08:00
338cffc633 feat: 出港装载状态重置改为弹框选状态
参照出港运抵页面交互,「状态重置」按钮不再直接调接口,
而是先弹出居中弹框,让用户在下拉框选择「正常 / 未申报」后
点击「保存」再调接口;选「未申报」时请求体不带 restStatus。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 11:45:22 +08:00
02773b3f90 style: 弱化国际出港/进港子列表分割线颜色
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 11:21:38 +08:00
7c4d1cebe3 style: 替换国际进港事故签证菜单图标
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 10:27:52 +08:00
23 changed files with 191 additions and 34 deletions

View File

@@ -138,7 +138,9 @@
"Bash(sed -i '' '/@Deprecated\\(\"旧版国内出港收运开始,使用 GncShouYunUnListActivity 替代\"\\)/d' /Users/kid/Development/Fusion/Projects/aerologic-app/module_gnc/src/main/java/com/lukouguoji/gnc/activity/GoutStartCotActivity.kt)",
"Bash(cp \"/Users/kid/Downloads/Desktop/进港舱单.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_jin_gang_cang_dan_icon.png)",
"Bash(cp \"/Users/kid/Downloads/Desktop/原始舱单.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_yuan_shi_cang_dan_icon.png)",
"Bash(cp \"/Users/kid/Downloads/Desktop/提取记录.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_ti_qu_ji_lu_icon.png)"
"Bash(cp \"/Users/kid/Downloads/Desktop/提取记录.png\" /Users/kid/Development/Fusion/Projects/aerologic-app/module_gjj/src/main/res/mipmap-mdpi/gjj_ti_qu_ji_lu_icon.png)",
"mcp__api-doc__get_project_overview",
"mcp__plugin_claude-mem_mcp-search__get_observations"
],
"deny": [],
"ask": []

View File

@@ -74,7 +74,7 @@ class LogDetailActivity : BaseBindingActivity<ActivityLogDetailBinding, LogDetai
val dotSize = dp(10)
val lineHeight = dp(2)
val labelHPadding = dp(6)
val alignBase = dp(15)
val alignBase = dp(27)
// 按"四个汉字 label"估算节点 label 宽度(含左右各 6dp padding
val labelTextSizePx = TypedValue.applyDimension(

View File

@@ -877,7 +877,7 @@ class HomeFragment : Fragment() {
list.add(
RightMenu(
Constant.AuthName.IntImpAccidentVisa,
R.drawable.img_gj_shiguqianzheng,
R.drawable.gjj_jgqz,
"事故签证"
)
)

View File

@@ -67,7 +67,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginStart="30dp"
android:layout_marginEnd="15dp"
android:layout_marginVertical="12dp"
android:orientation="horizontal">
@@ -162,7 +163,8 @@
android:id="@+id/ll_steps"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:layout_marginStart="23dp"
android:layout_marginEnd="15dp"
android:layout_marginVertical="12dp"
android:orientation="horizontal" />
@@ -213,6 +215,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:paddingStart="8dp"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />

View File

@@ -1,9 +1,7 @@
package com.lukouguoji.module_base
import android.content.Intent
import android.content.res.Configuration
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.EditText
import android.widget.Spinner

View File

@@ -37,6 +37,7 @@
<color name="color_bottom_layout">#5c6890</color>
<color name="color_f2">#F2F2F2</color>
<color name="line">#EEEEEE</color>
<color name="sub_list_divider">#DDDDDD</color>
<color name="transparent">#00000000</color>
<color name="bottom_tool_tips_text_color">#797979</color>

View File

@@ -0,0 +1,48 @@
package com.lukouguoji.gjc.dialog
import android.content.Context
import androidx.lifecycle.MutableLiveData
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.DialogIntExpLoadResetBinding
import com.lukouguoji.module_base.base.BaseDialogModel
import com.lukouguoji.module_base.ktx.verifyNullOrEmpty
import dev.utils.app.info.KeyValue
/**
* 国际出港装载 - 状态重置对话框
*/
class IntExpLoadResetDialogModel(
private val callback: (IntExpLoadResetDialogModel) -> Unit
) : BaseDialogModel<DialogIntExpLoadResetBinding>(DIALOG_TYPE_CENTER) {
val resetStatusList = MutableLiveData<List<KeyValue>>()
val selectedResetStatus = MutableLiveData("")
var resetStatusCode: String? = null
override fun layoutId(): Int = R.layout.dialog_int_exp_load_reset
override fun onDialogCreated(context: Context) {
binding.model = this
initResetStatusList()
selectedResetStatus.observeForever { value ->
resetStatusCode = when (value) {
"01" -> "01"
"02" -> null
else -> null
}
}
}
private fun initResetStatusList() {
resetStatusList.value = listOf(
KeyValue("正常", "01"),
KeyValue("未申报", "02")
)
}
fun onSaveClick() {
if (selectedResetStatus.value.verifyNullOrEmpty("请选择重置状态")) return
dismiss()
callback(this)
}
}

View File

@@ -17,6 +17,7 @@ import com.lukouguoji.module_base.ktx.toRequestBody
import com.lukouguoji.module_base.model.BluetoothDialogModel
import com.lukouguoji.module_base.model.ScanModel
import com.lukouguoji.module_base.util.PrinterUtils
import dev.utils.app.info.KeyValue
import dev.utils.common.DateUtils
import com.lukouguoji.module_base.ktx.formatDate
@@ -28,7 +29,14 @@ class GjcBoxWeighingViewModel : BasePageViewModel() {
// 搜索条件
val flightDate = MutableLiveData<String>(DateUtils.getCurrentTime().formatDate()) // 航班日期
val flightNo = MutableLiveData("") // 航班号
val dest = MutableLiveData("") // 目的站
val wtStatus = MutableLiveData("") // 过磅状态(""=全部 / "0"=未过磅 / "1"=已过磅)
val wtStatusList = MutableLiveData( // 过磅状态选项
listOf(
KeyValue("全部", ""),
KeyValue("未过磅", "0"),
KeyValue("已过磅", "1")
)
)
val carId = MutableLiveData("") // 架子车号
val uld = MutableLiveData("") // ULD编号
@@ -111,7 +119,7 @@ class GjcBoxWeighingViewModel : BasePageViewModel() {
"pageSize" to pageModel.limit,
"fdate" to flightDate.value!!.ifEmpty { null },
"fno" to flightNo.value!!.ifEmpty { null },
"fdest" to dest.value!!.ifEmpty { null },
"wtStatus" to wtStatus.value!!.ifEmpty { null },
"carId" to carId.value!!.ifEmpty { null },
"uld" to uld.value!!.ifEmpty { null },
).toRequestBody()
@@ -120,7 +128,7 @@ class GjcBoxWeighingViewModel : BasePageViewModel() {
val totalParams = mapOf(
"fdate" to flightDate.value!!.ifEmpty { null },
"fno" to flightNo.value!!.ifEmpty { null },
"fdest" to dest.value!!.ifEmpty { null },
"wtStatus" to wtStatus.value!!.ifEmpty { null },
"carId" to carId.value!!.ifEmpty { null },
"uld" to uld.value!!.ifEmpty { null },
).toRequestBody()

View File

@@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.dialog.IntExpLoadDeleteDialogModel
import com.lukouguoji.gjc.dialog.IntExpLoadResetDialogModel
import com.lukouguoji.gjc.holder.IntExpLoadViewHolder
import com.lukouguoji.module_base.base.BasePageViewModel
import com.lukouguoji.module_base.bean.GjcCheckInPage
@@ -84,7 +85,7 @@ class IntExpLoadViewModel : BasePageViewModel() {
}
/**
* 状态重置 (批量操作)
* 状态重置 (批量操作) — 弹框选状态后调接口
*/
fun resetDeclare() {
val list = pageModel.rv?.commonAdapter()?.items as? List<GjcExportLoad> ?: return
@@ -95,18 +96,26 @@ class IntExpLoadViewModel : BasePageViewModel() {
return
}
val param = GjcDeclareParam(loadList = selectedItems)
val requestData = param.toRequestBody()
val dialog = IntExpLoadResetDialogModel { dialogModel ->
val params = mutableMapOf<String, Any?>(
"loadList" to selectedItems
)
if (dialogModel.resetStatusCode != null) {
params["restStatus"] = dialogModel.resetStatusCode
}
val requestData = params.toRequestBody()
launchLoadingCollect({ NetApply.api.resetDeclare(requestData) }) {
onSuccess = {
showToast("状态重置成功")
viewModelScope.launch {
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
launchLoadingCollect({ NetApply.api.resetDeclare(requestData) }) {
onSuccess = {
showToast("状态重置成功")
viewModelScope.launch {
FlowBus.with<String>(ConstantEvent.EVENT_REFRESH).emit("refresh")
}
refresh()
}
refresh()
}
}
dialog.show()
}
/**

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -49,14 +49,15 @@
value="@={viewModel.flightNo}"
setUpperCaseAlphanumeric="@{true}" />
<!-- 目的站 -->
<!-- 过磅状态 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
hint='@{"请输入目的站"}'
type="@{SearchLayoutType.INPUT}"
value="@={viewModel.dest}" />
hint='@{"请选择过磅状态"}'
list="@{viewModel.wtStatusList}"
type="@{SearchLayoutType.SPINNER}"
value="@={viewModel.wtStatus}" />
<!-- 架子车号 -->
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="com.lukouguoji.module_base.ui.weight.search.layout.SearchLayoutType"/>
<variable
name="model"
type="com.lukouguoji.gjc.dialog.IntExpLoadResetDialogModel" />
</data>
<LinearLayout
android:layout_width="600dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog_f2_radius_10"
android:gravity="center_horizontal"
android:orientation="vertical">
<!-- 标题栏 -->
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/bg_primary_radius_top_10"
android:gravity="center"
android:text="状态重置"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
<!-- 表单内容 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="30dp"
android:layout_marginTop="30dp"
android:orientation="vertical">
<!-- 重置状态 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
completeSpace="@{5}"
android:text="重置状态:"
android:textColor="@color/text_normal"
android:textSize="16sp" />
<com.lukouguoji.module_base.ui.weight.search.layout.PadSearchLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
type="@{SearchLayoutType.SPINNER}"
hint='@{"请选择重置状态"}'
list="@{model.resetStatusList}"
value="@={model.selectedResetStatus}" />
</LinearLayout>
</LinearLayout>
<!-- 底部按钮 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:layout_marginBottom="20dp">
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.dismiss()}"
android:text="取消" />
<TextView
style="@style/tv_bottom_btn"
android:onClick="@{()->model.onSaveClick()}"
android:text="保存" />
</LinearLayout>
</LinearLayout>
</layout>

View File

@@ -466,7 +466,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView

View File

@@ -132,7 +132,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
</LinearLayout>

View File

@@ -509,7 +509,7 @@
visible="@{bean.hasWaybillDetails &amp;&amp; !bean.isLoading.get()}"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999"
android:background="@color/sub_list_divider"
android:visibility="gone" />
<!-- 子列表 RecyclerView (有数据时显示) -->

View File

@@ -110,7 +110,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
</LinearLayout>
</layout>

View File

@@ -394,7 +394,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView

View File

@@ -101,7 +101,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999"/>
android:background="@color/sub_list_divider"/>
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_sub" android:layout_width="match_parent" android:layout_height="wrap_content" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</LinearLayout>

View File

@@ -132,7 +132,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
</LinearLayout>

View File

@@ -443,7 +443,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView

View File

@@ -455,7 +455,7 @@
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView

View File

@@ -395,7 +395,7 @@
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView

View File

@@ -468,7 +468,7 @@
android:id="@+id/divider_header"
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/c999999" />
android:background="@color/sub_list_divider" />
<!-- 子列表 RecyclerView -->
<androidx.recyclerview.widget.RecyclerView