From b6b5088107402b231cd42c18bc5c3ac436eacb10 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Tue, 21 Apr 2026 18:18:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E6=96=B0=E5=A2=9E=E6=B2=B9?= =?UTF-8?q?=E7=9B=86=E9=85=8D=E7=BD=AE=E5=8C=BA=EF=BC=8C=E5=AD=90=E8=AE=BE?= =?UTF-8?q?=E5=A4=871=E8=B0=83=E6=96=99=E5=90=8D=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../dish/match/adapter/ScaleRowAdapter.kt | 4 ++- .../match/dialog/SeasoningSelectDialog.kt | 2 +- .../com/shuwei/dish/match/ui/SlaveActivity.kt | 11 ++++++- .../dish/match/ui/SubmitFoodActivity.kt | 8 ++--- .../ui/fragment/SeasoningConfigFragment.kt | 30 ++++++++++++++++--- .../res/layout/fragment_seasoning_config.xml | 23 ++++++++++++++ .../main/res/layout/list_item_scale_row.xml | 2 +- app/src/main/res/layout/list_type_scale1.xml | 2 +- 8 files changed, 67 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/shuwei/dish/match/adapter/ScaleRowAdapter.kt b/app/src/main/java/com/shuwei/dish/match/adapter/ScaleRowAdapter.kt index 98b672e..50e8541 100644 --- a/app/src/main/java/com/shuwei/dish/match/adapter/ScaleRowAdapter.kt +++ b/app/src/main/java/com/shuwei/dish/match/adapter/ScaleRowAdapter.kt @@ -19,8 +19,9 @@ class ScaleRowAdapter : BaseQuickAdapter "稳定" diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt index 396d5e2..1ebe7bb 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt @@ -136,7 +136,7 @@ class SeasoningSelectDialog( // TODO: 联调时注释掉下方模拟数据,取消注释真实接口调用 val nameList = listOf( "盐", "白砂糖","冰糖", "鸡精", "味精", "陈醋", "老抽", "生抽", "番茄酱", "胡椒粉", "孜然", "十三香", - "料酒", "白醋", "蚝油", "辣椒面", "辣椒酱", "豆瓣酱", "淀粉", "葱", "蒜", "姜", "香菜" + "料酒", "白醋", "蚝油", "辣椒面", "辣椒酱", "豆瓣酱", "淀粉", "葱", "蒜", "姜", "香菜", "油" ) val mockData = mutableListOf() nameList.forEachIndexed { index, name -> diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SlaveActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SlaveActivity.kt index 09ee02a..9b09a1a 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SlaveActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SlaveActivity.kt @@ -195,6 +195,15 @@ class SlaveActivity : BaseActivity() { val pos = ScaleDeviceConfig.SCALE_ORDER_18.indexOf(slot.address) if (pos >= 0) scale18Adapter!!.updateItemName(pos, slot.goodsName) } + else -> { + // 线性列表模式(子设备1):刷新已显示条目的名称 + val list = linearAdapter.items.toMutableList() + val idx = list.indexOfFirst { it.address == slot.address } + if (idx >= 0) { + list[idx] = list[idx].copy(name = slot.goodsName) + linearAdapter.submitList(list) + } + } } } } @@ -233,7 +242,7 @@ class SlaveActivity : BaseActivity() { scale18Adapter!!.updateByAddress(existing) } else -> { - val item = ScaleRowAdapter.ScaleItem(address, weight, state) + val item = ScaleRowAdapter.ScaleItem(address, weight, state, slotNameMap[address] ?: "") val list = linearAdapter.items.toMutableList() val idx = list.indexOfFirst { it.address == address } if (idx >= 0) { diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt index 9d8fcb0..0e1e2ed 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt @@ -144,12 +144,8 @@ class SubmitFoodActivity : BaseActivity() { // 排除主设备 2格秤 if (data.deviceId == ScaleDeviceConfig.DEVICE_ID_2) return@forEach - // 1格设备调料名固定为"油",其余从槽位配置读取 - val (goodsId, goodsName) = if (data.deviceId == ScaleDeviceConfig.DEVICE_ID_1) { - "" to "油" - } else { - slotMap[key] ?: return@forEach - } + // 从槽位配置读取调料名,未配置则跳过 + val (goodsId, goodsName) = slotMap[key] ?: return@forEach // 首次收到稳定数据时记录基准重量 val baseline = baselineMap[key] diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/SeasoningConfigFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/SeasoningConfigFragment.kt index 0a353db..5cb0c05 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/SeasoningConfigFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/SeasoningConfigFragment.kt @@ -64,10 +64,32 @@ class SeasoningConfigFragment : BaseFragment() { // initViewModel() setupRecyclerViews() bindAdapterClicks() + bindOilSlotClick() addWeightListener() loadData() } + /** 绑定油盆格子点击,弹出调料选择弹窗并保存到 DEVICE_ID_1 */ + private fun bindOilSlotClick() { + binding.tvOilSlot.setOnClickListener { + SeasoningSelectDialog( + activity = settingActivity, + clickIndex = 0, + onItemSelected = { item -> + binding.tvOilSlot.text = item.goodsName ?: "-" + saveSlotAndBroadcast( + SeasoningSlotEntity( + deviceId = ScaleDeviceConfig.DEVICE_ID_1, + address = 1, + goodsId = item.goodsId, + goodsName = item.goodsName ?: "" + ) + ) + } + ).show() + } + } + /** 绑定两个 Adapter 的格子点击,弹出调料选择弹窗 */ private fun bindAdapterClicks() { adapter22.onItemClick = { scaleData, position -> @@ -171,6 +193,7 @@ class SeasoningConfigFragment : BaseFragment() { val dao = BaseApp.instance!!.database.seasoningSlotDao() val slots22 = dao.queryByDeviceId(ScaleDeviceConfig.DEVICE_ID_22) val slots18 = dao.queryByDeviceId(ScaleDeviceConfig.DEVICE_ID_18) + val slotsOil = dao.queryByDeviceId(ScaleDeviceConfig.DEVICE_ID_1) withContext(Dispatchers.Main) { slots22.forEach { slot -> val pos = ScaleDeviceConfig.SCALE_ORDER_22.indexOf(slot.address) @@ -180,12 +203,11 @@ class SeasoningConfigFragment : BaseFragment() { val pos = ScaleDeviceConfig.SCALE_ORDER_18.indexOf(slot.address) if (pos >= 0) adapter18.updateItemName(pos, slot.goodsName) } + // 加载油盆格子名称(address=1) + val oilSlot = slotsOil.firstOrNull { it.address == 1 } + binding.tvOilSlot.text = if (oilSlot != null && oilSlot.goodsName.isNotEmpty()) oilSlot.goodsName else "-" } } -// appViewModel.loadSeasoning { list -> -// adapter22.update(list ?: emptyList()) -// adapter18.update(list ?: emptyList()) -// } } /** diff --git a/app/src/main/res/layout/fragment_seasoning_config.xml b/app/src/main/res/layout/fragment_seasoning_config.xml index 15116c2..ff7b4ce 100644 --- a/app/src/main/res/layout/fragment_seasoning_config.xml +++ b/app/src/main/res/layout/fragment_seasoning_config.xml @@ -74,5 +74,28 @@ android:layout_height="wrap_content" android:overScrollMode="never" /> + + + + diff --git a/app/src/main/res/layout/list_item_scale_row.xml b/app/src/main/res/layout/list_item_scale_row.xml index 3740df5..9714e0c 100644 --- a/app/src/main/res/layout/list_item_scale_row.xml +++ b/app/src/main/res/layout/list_item_scale_row.xml @@ -26,7 +26,7 @@ android:layout_height="wrap_content" android:textColor="@color/home_sub_title" android:textSize="22sp" - android:text="油" /> + android:text="-" /> + android:text="-" />