Compare commits
5
Commits
main
...
dev_260127_新版
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
795deae228 | ||
|
|
873ae95c0b | ||
|
|
a4f3f9527c | ||
|
|
eaa1b1eb00 | ||
|
|
a4905e7226 |
Generated
+2
-2
@@ -4,10 +4,10 @@
|
|||||||
<selectionStates>
|
<selectionStates>
|
||||||
<SelectionState runConfigName="app">
|
<SelectionState runConfigName="app">
|
||||||
<option name="selectionMode" value="DROPDOWN" />
|
<option name="selectionMode" value="DROPDOWN" />
|
||||||
<DropdownSelection timestamp="2025-09-10T07:28:30.961571900Z">
|
<DropdownSelection timestamp="2026-01-28T08:24:39.059017600Z">
|
||||||
<Target type="DEFAULT_BOOT">
|
<Target type="DEFAULT_BOOT">
|
||||||
<handle>
|
<handle>
|
||||||
<DeviceId pluginId="Default" identifier="serial=192.168.1.21:5555;connection=bc7af9a5" />
|
<DeviceId pluginId="Default" identifier="serial=192.168.1.80:5555;connection=d6ad651e" />
|
||||||
</handle>
|
</handle>
|
||||||
</Target>
|
</Target>
|
||||||
</DropdownSelection>
|
</DropdownSelection>
|
||||||
|
|||||||
@@ -87,9 +87,11 @@ dependencies {
|
|||||||
androidTestImplementation(libs.androidx.junit)
|
androidTestImplementation(libs.androidx.junit)
|
||||||
androidTestImplementation(libs.androidx.espresso.core)
|
androidTestImplementation(libs.androidx.espresso.core)
|
||||||
|
|
||||||
implementation("com.squareup.okhttp3:okhttp:4.9.1")
|
|
||||||
implementation("com.google.code.gson:gson:2.10.1")
|
implementation("com.google.code.gson:gson:2.10.1")
|
||||||
// implementation("com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30")
|
implementation("com.squareup.okhttp3:okhttp:4.9.1")
|
||||||
|
implementation("com.squareup.okhttp3:logging-interceptor:4.9.1")
|
||||||
|
implementation("com.squareup.retrofit2:retrofit:2.9.0")
|
||||||
|
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
|
||||||
|
|
||||||
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.2")
|
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.2")
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -9,7 +9,6 @@ import com.chad.library.adapter4.viewholder.QuickViewHolder
|
|||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.databinding.ListItemDishBinding
|
import com.shuwei.dish.match.databinding.ListItemDishBinding
|
||||||
import com.shuwei.dish.match.utils.ext.gone
|
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
|
|
||||||
@@ -28,9 +27,9 @@ class SamplingAdapter(list: MutableList<FoodRecord>) :
|
|||||||
holder.binding.run {
|
holder.binding.run {
|
||||||
val isCooking = item!!.isCooking
|
val isCooking = item!!.isCooking
|
||||||
clBlock.setBackgroundResource(R.drawable.shape_white_fb_15_corners)
|
clBlock.setBackgroundResource(R.drawable.shape_white_fb_15_corners)
|
||||||
val totalWeight = item!!.totalWeight ?: 0.toDouble()
|
val totalWeight = item.totalWeight ?: 0.toDouble()
|
||||||
tvDishName.run {
|
tvDishName.run {
|
||||||
text = item!!.foodName
|
text = (item.foodName?:"").ifBlank { "--" }
|
||||||
setTextColor(
|
setTextColor(
|
||||||
ContextCompat.getColor(
|
ContextCompat.getColor(
|
||||||
holder.itemView.context,
|
holder.itemView.context,
|
||||||
@@ -41,11 +40,16 @@ class SamplingAdapter(list: MutableList<FoodRecord>) :
|
|||||||
tvDishCount.visible()
|
tvDishCount.visible()
|
||||||
if (isCooking) {
|
if (isCooking) {
|
||||||
tvDishCount.text = "制作统计:-kg"
|
tvDishCount.text = "制作统计:-kg"
|
||||||
tvShowState.text = "烹饪中"
|
tvShowState.text = "烹饪中"
|
||||||
} else {
|
} else {
|
||||||
val useWeight = if (totalWeight > 0.toDouble()) totalWeight else (item.foodWeight ?: 0.toDouble())
|
val realTotalWeight = if (totalWeight > 0.toDouble()) totalWeight else (item.foodWeight
|
||||||
tvDishCount.text = "累计统计:${df.format(useWeight / 1000.0F)}kg(${item.count}次)"
|
?: 0.toDouble())
|
||||||
tvShowState.text = "${df.format((item.foodWeight ?: 0.toDouble()) / 1000.0F)}kg"
|
val showTotalWeight =
|
||||||
|
if (realTotalWeight == 0.toDouble()) "-" else df.format(realTotalWeight / 1000.0F)
|
||||||
|
tvDishCount.text = "累计统计:${showTotalWeight}kg(${item.count ?: "-"}次)"
|
||||||
|
val foodWeight = item.foodWeight ?: 0.toDouble()
|
||||||
|
val showFoodWeight = if (foodWeight == 0.toDouble()) "-" else df.format(foodWeight / 1000.0F)
|
||||||
|
tvShowState.text = "${showFoodWeight}kg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +0,0 @@
|
|||||||
//package com.shuwei.dish.match.adapter
|
|
||||||
//
|
|
||||||
//import android.annotation.SuppressLint
|
|
||||||
//import android.widget.TextView
|
|
||||||
//import androidx.recyclerview.widget.GridLayoutManager
|
|
||||||
//import androidx.recyclerview.widget.RecyclerView
|
|
||||||
//import com.shuwei.dish.match.base.BaseActivity
|
|
||||||
//import com.shuwei.dish.match.dialog.BottomDialog2
|
|
||||||
//import com.shuwei.dish.match.entity.SeasoningEntity
|
|
||||||
//import com.shuwei.dish.match.ui.DeviceSettingActivity
|
|
||||||
//import com.shuwei.dish.match.ui.SubmitDishActivity
|
|
||||||
//import com.shuwei.dish.match.utils.DataUtil
|
|
||||||
//
|
|
||||||
//object SeasoningCellTool {
|
|
||||||
// private val TAG = "SeasoningCellTool"
|
|
||||||
//
|
|
||||||
// private val list = mutableListOf<SeasoningEntity>()
|
|
||||||
// private lateinit var activity: BaseActivity
|
|
||||||
// private var pageType: Int = 0
|
|
||||||
//
|
|
||||||
// @SuppressLint("StaticFieldLeak")
|
|
||||||
// private lateinit var cellAdapter: TextCellAdapter
|
|
||||||
//
|
|
||||||
// @SuppressLint("NotifyDataSetChanged")
|
|
||||||
// fun loadData(
|
|
||||||
// activity: BaseActivity,
|
|
||||||
// initList: MutableList<SeasoningEntity>? = null,
|
|
||||||
// recyclerView: RecyclerView,
|
|
||||||
// tvCell: TextView,
|
|
||||||
// pageType: Int = 0
|
|
||||||
// ) {
|
|
||||||
// this.activity = activity
|
|
||||||
// this.pageType = pageType
|
|
||||||
// list.clear()
|
|
||||||
// val tempList = buildData(initList, pageType)
|
|
||||||
// list.addAll(tempList)
|
|
||||||
// recyclerView.run {
|
|
||||||
// if (adapter == null) {
|
|
||||||
// layoutManager = GridLayoutManager(
|
|
||||||
// activity,
|
|
||||||
// 3,
|
|
||||||
// GridLayoutManager.VERTICAL,
|
|
||||||
// false
|
|
||||||
// )
|
|
||||||
// cellAdapter = TextCellAdapter(list).apply {
|
|
||||||
// onCellClick = { position ->
|
|
||||||
// val currentAddress = DataUtil.getWeighAddressArray().get(position)
|
|
||||||
// BottomDialog2(
|
|
||||||
// weighIndex = position,
|
|
||||||
// weighAddress = currentAddress,
|
|
||||||
// clickName = list[position].goodsName
|
|
||||||
// ).show(activity) { item ->
|
|
||||||
// list[position].let { current ->
|
|
||||||
// syncItem(current, item)
|
|
||||||
// //3-调料
|
|
||||||
// current.materialType = 3
|
|
||||||
// current.sort = position
|
|
||||||
// }
|
|
||||||
// notifyItemChanged(position)
|
|
||||||
// if (position == 14) {
|
|
||||||
// syncItem(list[10], list[14])
|
|
||||||
// syncItem(list[11], list[14])
|
|
||||||
// syncItem(list[13], list[14])
|
|
||||||
// TextCellAdapter.loadCell(tvCell, list[14])
|
|
||||||
// notifyItemChanged(10)
|
|
||||||
// notifyItemChanged(11)
|
|
||||||
// notifyItemChanged(13)
|
|
||||||
// notifyItemChanged(14)
|
|
||||||
// }
|
|
||||||
// if (activity is DeviceSettingActivity) {
|
|
||||||
// //activity.list = list
|
|
||||||
// activity.saveSeasoning(list[position])
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// adapter = cellAdapter
|
|
||||||
// } else {
|
|
||||||
// cellAdapter.notifyDataSetChanged()
|
|
||||||
// }
|
|
||||||
// if (activity is SubmitDishActivity) {
|
|
||||||
// activity.updateSeasoningList(list)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (pageType == 1) {
|
|
||||||
// tvCell.setOnClickListener {
|
|
||||||
// cellAdapter.onCellClick?.invoke(14)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// TextCellAdapter.loadCell(tvCell, list[list.size - 1])
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private fun buildData(
|
|
||||||
// initList: MutableList<SeasoningEntity>?,
|
|
||||||
// pageType: Int = 0
|
|
||||||
// ): MutableList<SeasoningEntity> {
|
|
||||||
// val list = mutableListOf<SeasoningEntity>()
|
|
||||||
// repeat(15) {
|
|
||||||
// list.add(SeasoningEntity().apply { this.pageType = pageType })
|
|
||||||
// }
|
|
||||||
// if (initList.isNullOrEmpty().not()) {
|
|
||||||
// initList.forEach {
|
|
||||||
// if (it.sort < list.size) {
|
|
||||||
// list[it.sort] = it.apply { this.pageType = pageType }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// var lastItem = initList.firstOrNull { it.sort == 14 }
|
|
||||||
// lastItem = lastItem ?: list[list.size - 1]
|
|
||||||
// list[10] = lastItem
|
|
||||||
// list[11] = lastItem
|
|
||||||
// list[13] = lastItem
|
|
||||||
// }
|
|
||||||
// return list
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private fun syncItem(item: SeasoningEntity, newItem: SeasoningEntity) {
|
|
||||||
// item.run {
|
|
||||||
// goodsId = newItem.goodsId
|
|
||||||
// goodsName = newItem.goodsName
|
|
||||||
// goodsOrRelationCode = newItem.goodsOrRelationCode
|
|
||||||
// relateionType = newItem.relateionType
|
|
||||||
// materialType = newItem.materialType
|
|
||||||
// allEdible = newItem.allEdible
|
|
||||||
// useWeight = newItem.useWeight
|
|
||||||
// popularName = newItem.popularName
|
|
||||||
// canteenId = newItem.canteenId
|
|
||||||
// relateionType_dictText = newItem.relateionType_dictText
|
|
||||||
//
|
|
||||||
// foodId = newItem.foodId
|
|
||||||
// sort = newItem.sort
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
@@ -4,7 +4,6 @@ import android.content.Intent
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.util.Log
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
@@ -12,25 +11,25 @@ import android.widget.TextView
|
|||||||
import androidx.activity.enableEdgeToEdge
|
import androidx.activity.enableEdgeToEdge
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
import com.shuwei.dish.match.databinding.ActivityBaseBinding
|
import com.shuwei.dish.match.databinding.ActivityBaseBinding
|
||||||
import com.shuwei.dish.match.dialog.Loading
|
import com.shuwei.dish.match.dialog.Loading
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
import com.shuwei.dish.match.ui.HomeActivity.Companion.TAG
|
import com.shuwei.dish.match.net.NetViewModel
|
||||||
import com.shuwei.dish.match.ui.InitActivity
|
import com.shuwei.dish.match.ui.InitActivity
|
||||||
import com.shuwei.dish.match.utils.ActivityManager
|
import com.shuwei.dish.match.utils.ActivityManager
|
||||||
import com.shuwei.dish.match.utils.ext.gone
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
import com.shuwei.dish.match.utils.ext.invisible
|
import com.shuwei.dish.match.utils.ext.invisible
|
||||||
import com.shuwei.dish.match.utils.ext.put
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.ZoneId
|
import java.time.ZoneId
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import kotlin.getValue
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
open class BaseActivity : AppCompatActivity() {
|
open class BaseActivity : AppCompatActivity() {
|
||||||
@@ -95,7 +94,8 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
fun statusBarDarkFont(enable: Boolean) {
|
fun statusBarDarkFont(enable: Boolean) {
|
||||||
//window.decorView.systemUiVisibility = if (enable) View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR else 0
|
//window.decorView.systemUiVisibility = if (enable) View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR else 0
|
||||||
val color = ContextCompat.getColor(this,
|
val color = ContextCompat.getColor(
|
||||||
|
this,
|
||||||
if (enable) R.color.black else R.color.white
|
if (enable) R.color.black else R.color.white
|
||||||
)
|
)
|
||||||
binding.tvLeftTime.setTextColor(color)
|
binding.tvLeftTime.setTextColor(color)
|
||||||
@@ -172,9 +172,25 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
fun delayDismissLoading() {
|
fun delayDismissLoading() {
|
||||||
window.decorView.postDelayed({
|
window.decorView.postDelayed({
|
||||||
Loading.dismiss()
|
Loading.dismiss()
|
||||||
},500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
val netViewModel: NetViewModel by viewModels()
|
||||||
|
fun queryGoodsList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<CookFoodGoodsEntity>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
netViewModel.queryGoodsList(param, onSuccess, onFailure)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun querySeasoningList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<SeasoningEntity>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
netViewModel.querySeasoningList(param, onSuccess, onFailure)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -5,8 +5,11 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
|
import android.util.Log
|
||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
import com.shuwei.dish.match.db.DatabaseProvider
|
import com.shuwei.dish.match.db.DatabaseProvider
|
||||||
|
import com.shuwei.dish.match.ui.InitActivity.Companion.TAG
|
||||||
|
import com.shuwei.dish.match.utils.AppUtil
|
||||||
import com.shuwei.dish.match.utils.BootReceiver
|
import com.shuwei.dish.match.utils.BootReceiver
|
||||||
|
|
||||||
|
|
||||||
@@ -17,7 +20,10 @@ class BaseApp : Application() {
|
|||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
instance = this
|
instance = this
|
||||||
|
val deviceId = AppUtil.getUDID(this)
|
||||||
|
Log.d(TAG, "onCreate: deviceId=$deviceId")
|
||||||
|
GlobalData.deviceId = deviceId
|
||||||
|
// GlobalData.deviceId = "39a7abdd06b3c7ab"
|
||||||
val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED)
|
val filter = IntentFilter(Intent.ACTION_BOOT_COMPLETED)
|
||||||
registerReceiver(BootReceiver(), filter)
|
registerReceiver(BootReceiver(), filter)
|
||||||
}
|
}
|
||||||
@@ -26,10 +32,10 @@ class BaseApp : Application() {
|
|||||||
|
|
||||||
// const val canteenId = "1678234139391512577"
|
// const val canteenId = "1678234139391512577"
|
||||||
var canteenId = "0"
|
var canteenId = "0"
|
||||||
var configUrl = ""
|
// var configUrl = ""
|
||||||
|
|
||||||
var token: String? = null
|
// var token: String? = null
|
||||||
var deviceId: String? = null
|
// var deviceId: String? = null
|
||||||
var appVersion: String = "1"
|
var appVersion: String = "1"
|
||||||
@Volatile
|
@Volatile
|
||||||
private var sharedPref: SharedPreferences? = null
|
private var sharedPref: SharedPreferences? = null
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.shuwei.dish.match.base
|
||||||
|
|
||||||
|
object GlobalData {
|
||||||
|
var appBaseUrl: String = "https://dev.yixiong-tech.com:8081"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备id
|
||||||
|
*/
|
||||||
|
var deviceId: String = ""
|
||||||
|
var appId = "Hkz1rBk6PZXbS8KwKr67K2eZtsz8bRoMHLg64bUdgCZj"
|
||||||
|
var sdkKey = "AabXs3sHM8UhhE7oCGf4LVMLrdkGb1nJNksbjjTdVt7k"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
object GlobalKey {
|
||||||
|
const val KEY_EQUIPMENT_INFO = "equipmentInfo"
|
||||||
|
const val KEY_TOKEN = "tokenKey"
|
||||||
|
const val KEY_USER_INFO = "userInfoKey"
|
||||||
|
const val KEY_USER_NAME = "userNameKey"
|
||||||
|
}
|
||||||
+123
-79
@@ -3,7 +3,7 @@ package com.shuwei.dish.match.dialog
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.util.Log
|
import android.text.Editable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.core.view.isEmpty
|
import androidx.core.view.isEmpty
|
||||||
@@ -15,23 +15,17 @@ import com.shuwei.dish.match.R
|
|||||||
import com.shuwei.dish.match.adapter.GoodsInfoSearchAdapter
|
import com.shuwei.dish.match.adapter.GoodsInfoSearchAdapter
|
||||||
import com.shuwei.dish.match.base.BaseActivity
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
import com.shuwei.dish.match.base.BaseApp
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
import com.shuwei.dish.match.databinding.DialogBottomSheetBinding
|
import com.shuwei.dish.match.databinding.DialogFoodSearchBinding
|
||||||
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
import com.shuwei.dish.match.entity.GoodsRecordBean
|
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param goodsType 1-调料,0-食材
|
* 食材搜索弹窗
|
||||||
*/
|
*/
|
||||||
class BottomDialog(
|
class FoodSearchDialog(
|
||||||
private var goodsType: Int = 1,
|
private var defGoodsName: String? = null
|
||||||
private var defGoodsName:String? = null
|
|
||||||
) {
|
) {
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "BottomDialog"
|
const val TAG = "BottomDialog"
|
||||||
@@ -39,8 +33,8 @@ class BottomDialog(
|
|||||||
|
|
||||||
private var list = mutableListOf<CookFoodGoodsEntity>()
|
private var list = mutableListOf<CookFoodGoodsEntity>()
|
||||||
|
|
||||||
private lateinit var binding: DialogBottomSheetBinding
|
private lateinit var binding: DialogFoodSearchBinding
|
||||||
private lateinit var goodsInfoSearchAdapter: GoodsInfoSearchAdapter
|
private lateinit var searchAdapter: GoodsInfoSearchAdapter
|
||||||
private var goodsName: String? = null
|
private var goodsName: String? = null
|
||||||
|
|
||||||
private var activity: BaseActivity? = null
|
private var activity: BaseActivity? = null
|
||||||
@@ -50,11 +44,30 @@ class BottomDialog(
|
|||||||
//直接使用BottomSheetDialog
|
//直接使用BottomSheetDialog
|
||||||
var dialog: BottomSheetDialog? = null
|
var dialog: BottomSheetDialog? = null
|
||||||
val inflater = LayoutInflater.from(activity)
|
val inflater = LayoutInflater.from(activity)
|
||||||
binding = DialogBottomSheetBinding.inflate(inflater)
|
binding = DialogFoodSearchBinding.inflate(inflater)
|
||||||
|
dialog = BottomSheetDialog(activity, R.style.BottomSheet).apply {
|
||||||
binding.tvSheetName.text = if (goodsType == 1) "调料检索" else "食材检索"
|
setContentView(binding.root)
|
||||||
binding.etSheetInput.hint = if (goodsType == 1) "输入调料名称" else "输入食材名称或速记码"
|
setCancelable(true)
|
||||||
goodsInfoSearchAdapter = GoodsInfoSearchAdapter(list).apply {
|
behavior.skipCollapsed = false // 跳过折叠状态
|
||||||
|
// behavior.peekHeight = 880.dp
|
||||||
|
// window?.setLayout(-1, 880.dp)
|
||||||
|
show()
|
||||||
|
setOnDismissListener {
|
||||||
|
activity.hideStatusBar()
|
||||||
|
}
|
||||||
|
binding.etSheetInput.requestFocus()
|
||||||
|
}
|
||||||
|
binding.tvSheetName.text = "食材检索"
|
||||||
|
binding.etSheetInput.run {
|
||||||
|
hint = "输入食材名称或速记码"
|
||||||
|
addTextChangedListener(afterTextChanged = { it: Editable? ->
|
||||||
|
if (it.isNullOrBlank()) {
|
||||||
|
list.clear()
|
||||||
|
searchAdapter.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
searchAdapter = GoodsInfoSearchAdapter(list).apply {
|
||||||
setOnItemClickListener { _, _, position ->
|
setOnItemClickListener { _, _, position ->
|
||||||
list[position].isClicked = true
|
list[position].isClicked = true
|
||||||
notifyItemChanged(position)
|
notifyItemChanged(position)
|
||||||
@@ -66,7 +79,7 @@ class BottomDialog(
|
|||||||
}
|
}
|
||||||
binding.recyclerView.run {
|
binding.recyclerView.run {
|
||||||
layoutManager = GridLayoutManager(activity, 2, GridLayoutManager.VERTICAL, false)
|
layoutManager = GridLayoutManager(activity, 2, GridLayoutManager.VERTICAL, false)
|
||||||
adapter = goodsInfoSearchAdapter
|
adapter = searchAdapter
|
||||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||||
override fun onScrollStateChanged(rv: RecyclerView, newState: Int) {
|
override fun onScrollStateChanged(rv: RecyclerView, newState: Int) {
|
||||||
super.onScrollStateChanged(rv, newState);
|
super.onScrollStateChanged(rv, newState);
|
||||||
@@ -80,17 +93,6 @@ class BottomDialog(
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
dialog = BottomSheetDialog(activity, R.style.BottomSheet).apply {
|
|
||||||
setContentView(binding.root)
|
|
||||||
setCancelable(true)
|
|
||||||
behavior.skipCollapsed = false // 跳过折叠状态
|
|
||||||
// behavior.peekHeight = 880.dp
|
|
||||||
// window?.setLayout(-1, 880.dp)
|
|
||||||
show()
|
|
||||||
setOnDismissListener {
|
|
||||||
activity.hideStatusBar()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
binding.refreshLayout.setOnRefreshListener {
|
binding.refreshLayout.setOnRefreshListener {
|
||||||
pageNo = 1
|
pageNo = 1
|
||||||
getGoodsList()
|
getGoodsList()
|
||||||
@@ -136,65 +138,107 @@ class BottomDialog(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var pageNo = 1
|
private var pageNo = 1
|
||||||
private val pageSize = 120
|
private val pageSize = 50
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun getGoodsList() {
|
private fun getGoodsList() {
|
||||||
// val pathSegmentList = UrlConfig.QUERY_GOODS_LIST.split(delimiters = arrayOf("/"), limit = 1)
|
// val pathSegmentList = UrlConfig.QUERY_GOODS_LIST.split(delimiters = arrayOf("/"), limit = 1)
|
||||||
val queryParams = mutableMapOf(
|
// val queryParams = mutableMapOf(
|
||||||
"goodsType" to "$goodsType",
|
// "goodsType" to "0",
|
||||||
"canteenId" to BaseApp.canteenId,
|
// "canteenId" to BaseApp.canteenId,
|
||||||
"pageNo" to "$pageNo",
|
// "pageNo" to "$pageNo",
|
||||||
"pageSize" to "$pageSize"
|
// "pageSize" to "$pageSize"
|
||||||
|
// )
|
||||||
|
// if (goodsName.isNullOrBlank().not()) {
|
||||||
|
// queryParams.put("name", goodsName!!)
|
||||||
|
// }
|
||||||
|
// val sb = StringBuilder().apply {
|
||||||
|
// append(UrlConfig.QUERY_GOODS_LIST)
|
||||||
|
// append("?")
|
||||||
|
// queryParams.forEach { (key, value) ->
|
||||||
|
// append("$key=$value&")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// sb.deleteCharAt(sb.length - 1)
|
||||||
|
// Log.d(TAG, "getGoodsList: url = $sb")
|
||||||
|
// HttpUtil.get(
|
||||||
|
// url = sb.toString(),
|
||||||
|
// doSuccess = {
|
||||||
|
// val json = it.toJsonString()
|
||||||
|
// Log.d(TAG, "getGoodsList: json=$json")
|
||||||
|
// val recordBean: GoodsRecordBean? = json.toObject<GoodsRecordBean>()
|
||||||
|
// if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
||||||
|
// activity?.toast("暂未搜索到食材信息")
|
||||||
|
// return@get
|
||||||
|
// }
|
||||||
|
// val records = recordBean.records
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// list.clear()
|
||||||
|
// }
|
||||||
|
// list.addAll(records!!)
|
||||||
|
// searchAdapter.notifyDataSetChanged()
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// binding.refreshLayout.finishRefresh(1200)
|
||||||
|
// } else {
|
||||||
|
// binding.refreshLayout.finishLoadMore(1200)
|
||||||
|
// }
|
||||||
|
// val isLoadMoreEnable = records.size >= pageSize
|
||||||
|
// binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
// if (isLoadMoreEnable) {
|
||||||
|
// pageNo++
|
||||||
|
// }
|
||||||
|
// }, doFailure = { code, msg ->
|
||||||
|
// activity?.toast(msg)
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// binding.refreshLayout.finishRefresh(1200)
|
||||||
|
// } else {
|
||||||
|
// binding.refreshLayout.finishLoadMore(1200)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
val param = mutableMapOf<String, Any>(
|
||||||
|
"goodsType" to "0",
|
||||||
|
"placeId" to BaseApp.canteenId,
|
||||||
|
"pageNum" to pageNo,
|
||||||
|
"pageSize" to pageSize
|
||||||
)
|
)
|
||||||
if (goodsName.isNullOrBlank().not()) {
|
if (goodsName.isNullOrBlank().not()) {
|
||||||
queryParams.put("name", goodsName!!)
|
param.put("goodsName", goodsName!!)
|
||||||
}
|
}
|
||||||
val sb = StringBuilder().apply {
|
activity?.queryGoodsList(param = param, onSuccess = {
|
||||||
append(UrlConfig.QUERY_GOODS_LIST)
|
loadGoodsList(it)
|
||||||
append("?")
|
}, onFailure = { code, msg ->
|
||||||
queryParams.forEach { (key, value) ->
|
activity?.toast(msg)
|
||||||
append("$key=$value&")
|
finishRefresh()
|
||||||
}
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun finishRefresh() {
|
||||||
|
if (pageNo == 1) {
|
||||||
|
binding.refreshLayout.finishRefresh()
|
||||||
|
} else {
|
||||||
|
binding.refreshLayout.finishLoadMore()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
private fun loadGoodsList(records: MutableList<CookFoodGoodsEntity>?) {
|
||||||
|
finishRefresh()
|
||||||
|
if (records.isNullOrEmpty()) {
|
||||||
|
activity?.toast("暂未搜索到食材信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (pageNo == 1) {
|
||||||
|
list.clear()
|
||||||
|
}
|
||||||
|
list.addAll(records)
|
||||||
|
searchAdapter.notifyDataSetChanged()
|
||||||
|
val isLoadMoreEnable = records.size >= pageSize
|
||||||
|
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
if (isLoadMoreEnable) {
|
||||||
|
pageNo++
|
||||||
}
|
}
|
||||||
sb.deleteCharAt(sb.length - 1)
|
|
||||||
Log.d(TAG, "getGoodsList: url = $sb")
|
|
||||||
HttpUtil.get(
|
|
||||||
url = sb.toString(),
|
|
||||||
doSuccess = {
|
|
||||||
val json = it.toJsonString()
|
|
||||||
Log.d(TAG, "getGoodsList: json=$json")
|
|
||||||
val recordBean: GoodsRecordBean? = json.toObject<GoodsRecordBean>()
|
|
||||||
if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
|
||||||
activity?.toast(if (goodsType == 1) "暂未搜索到调料信息" else "暂未搜索到食材信息")
|
|
||||||
return@get
|
|
||||||
}
|
|
||||||
val records = recordBean.records
|
|
||||||
if (pageNo == 1) {
|
|
||||||
list.clear()
|
|
||||||
}
|
|
||||||
list.addAll(records!!)
|
|
||||||
goodsInfoSearchAdapter.notifyDataSetChanged()
|
|
||||||
if (pageNo == 1) {
|
|
||||||
binding.refreshLayout.finishRefresh(1200)
|
|
||||||
} else {
|
|
||||||
binding.refreshLayout.finishLoadMore(1200)
|
|
||||||
}
|
|
||||||
val isLoadMoreEnable = records.size >= pageSize
|
|
||||||
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
|
||||||
if (isLoadMoreEnable) {
|
|
||||||
pageNo++
|
|
||||||
}
|
|
||||||
}, doFailure = { code, msg ->
|
|
||||||
activity?.toast(msg)
|
|
||||||
if (pageNo == 1) {
|
|
||||||
binding.refreshLayout.finishRefresh(1200)
|
|
||||||
} else {
|
|
||||||
binding.refreshLayout.finishLoadMore(1200)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+153
-67
@@ -4,14 +4,18 @@ import android.annotation.SuppressLint
|
|||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
|
import android.text.Editable
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.style.AbsoluteSizeSpan
|
import android.text.style.AbsoluteSizeSpan
|
||||||
import android.text.style.ForegroundColorSpan
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.text.style.LineHeightSpan
|
import android.text.style.LineHeightSpan
|
||||||
import android.text.style.StyleSpan
|
import android.text.style.StyleSpan
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.view.Gravity
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.view.WindowManager
|
||||||
import androidx.core.graphics.toColorInt
|
import androidx.core.graphics.toColorInt
|
||||||
import androidx.core.view.isEmpty
|
import androidx.core.view.isEmpty
|
||||||
import androidx.core.widget.addTextChangedListener
|
import androidx.core.widget.addTextChangedListener
|
||||||
@@ -22,11 +26,8 @@ import com.shuwei.dish.match.R
|
|||||||
import com.shuwei.dish.match.adapter.SeasoningSearchAdapter
|
import com.shuwei.dish.match.adapter.SeasoningSearchAdapter
|
||||||
import com.shuwei.dish.match.base.BaseActivity
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
import com.shuwei.dish.match.base.BaseApp
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
import com.shuwei.dish.match.databinding.DialogBottomSheet2Binding
|
import com.shuwei.dish.match.databinding.DialogSeasoningSearchBinding
|
||||||
import com.shuwei.dish.match.entity.SeasoningEntity
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
import com.shuwei.dish.match.entity.SeasoningRecordBean
|
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||||
@@ -34,15 +35,12 @@ import com.shuwei.dish.match.utils.ext.appendText
|
|||||||
import com.shuwei.dish.match.utils.ext.buildSpannableString
|
import com.shuwei.dish.match.utils.ext.buildSpannableString
|
||||||
import com.shuwei.dish.match.utils.ext.dp
|
import com.shuwei.dish.match.utils.ext.dp
|
||||||
import com.shuwei.dish.match.utils.ext.roundedDecimalPlace
|
import com.shuwei.dish.match.utils.ext.roundedDecimalPlace
|
||||||
import com.shuwei.dish.match.utils.ext.roundedOneDecimalPlace
|
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param goodsType 1-调料,0-食材
|
* 调料搜索弹窗
|
||||||
*/
|
*/
|
||||||
class BottomDialog2(
|
class SeasoningSearchDialog(
|
||||||
private var weighIndex: Int,
|
private var weighIndex: Int,
|
||||||
private var weighAddress: Int,
|
private var weighAddress: Int,
|
||||||
private var clickName: String? = null
|
private var clickName: String? = null
|
||||||
@@ -51,10 +49,9 @@ class BottomDialog2(
|
|||||||
const val TAG = "BottomDialog2"
|
const val TAG = "BottomDialog2"
|
||||||
}
|
}
|
||||||
|
|
||||||
private val goodsType: Int = 1
|
|
||||||
private var list = mutableListOf<SeasoningEntity>()
|
private var list = mutableListOf<SeasoningEntity>()
|
||||||
|
|
||||||
private lateinit var binding: DialogBottomSheet2Binding
|
private lateinit var binding: DialogSeasoningSearchBinding
|
||||||
private lateinit var searchAdapter: SeasoningSearchAdapter
|
private lateinit var searchAdapter: SeasoningSearchAdapter
|
||||||
private var goodsName: String? = null
|
private var goodsName: String? = null
|
||||||
|
|
||||||
@@ -65,10 +62,17 @@ class BottomDialog2(
|
|||||||
//直接使用BottomSheetDialog
|
//直接使用BottomSheetDialog
|
||||||
var dialog: BottomSheetDialog? = null
|
var dialog: BottomSheetDialog? = null
|
||||||
val inflater = LayoutInflater.from(activity)
|
val inflater = LayoutInflater.from(activity)
|
||||||
binding = DialogBottomSheet2Binding.inflate(inflater)
|
binding = DialogSeasoningSearchBinding.inflate(inflater)
|
||||||
|
|
||||||
//binding.tvSheetName.text = if (goodsType == 1) "调料检索" else "食材检索"
|
binding.etSheetInput.run {
|
||||||
binding.etSheetInput.hint = if (goodsType == 1) "输入调料名称" else "输入食材名称或速记码"
|
hint = "输入调料名称"
|
||||||
|
addTextChangedListener(afterTextChanged = { it: Editable? ->
|
||||||
|
if (it.isNullOrBlank()) {
|
||||||
|
list.clear()
|
||||||
|
searchAdapter.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
searchAdapter = SeasoningSearchAdapter(list).apply {
|
searchAdapter = SeasoningSearchAdapter(list).apply {
|
||||||
setOnItemClickListener { _, _, position ->
|
setOnItemClickListener { _, _, position ->
|
||||||
list[position].isClicked = true
|
list[position].isClicked = true
|
||||||
@@ -99,12 +103,45 @@ class BottomDialog2(
|
|||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setCancelable(true)
|
setCancelable(true)
|
||||||
behavior.skipCollapsed = false // 跳过折叠状态
|
behavior.skipCollapsed = false // 跳过折叠状态
|
||||||
// behavior.peekHeight = 880.dp
|
//// behavior.peekHeight = 880.dp
|
||||||
// window?.setLayout(-1, 880.dp)
|
//// window?.setLayout(-1, 880.dp)
|
||||||
|
// window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
|
||||||
|
window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
|
||||||
|
//or WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN
|
||||||
|
//or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING // 禁用额外平移
|
||||||
|
window?.setGravity(Gravity.BOTTOM)
|
||||||
|
window?.setLayout(
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||||
|
)
|
||||||
|
window?.setWindowAnimations(R.style.DialogSoftInputAnimation)
|
||||||
|
window?.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
|
||||||
show()
|
show()
|
||||||
|
// val onGlobalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
|
// val r = Rect()
|
||||||
|
// binding.root.getWindowVisibleDisplayFrame(r)
|
||||||
|
// val screenHeight = binding.root.rootView.height
|
||||||
|
// val keyboardHeight = screenHeight - r.bottom
|
||||||
|
//
|
||||||
|
// // 软键盘弹出(高度>200dp)
|
||||||
|
// if (keyboardHeight > 200.dp) {
|
||||||
|
// // 调整 Dialog 底部边距,避开软键盘
|
||||||
|
// val layoutParams = binding.root.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
|
//// layoutParams.bottomMargin = keyboardHeight
|
||||||
|
// layoutParams.bottomMargin = 200.dp
|
||||||
|
// binding.root.layoutParams = layoutParams
|
||||||
|
// } else {
|
||||||
|
// // 软键盘收起,恢复边距
|
||||||
|
// val layoutParams = binding.root.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
|
// layoutParams.bottomMargin = 0
|
||||||
|
// binding.root.layoutParams = layoutParams
|
||||||
|
// }
|
||||||
|
// }
|
||||||
setOnDismissListener {
|
setOnDismissListener {
|
||||||
activity.hideStatusBar()
|
activity.hideStatusBar()
|
||||||
|
// binding.root.viewTreeObserver.removeOnGlobalLayoutListener(onGlobalLayoutListener)
|
||||||
}
|
}
|
||||||
|
// binding.root.viewTreeObserver.addOnGlobalLayoutListener(onGlobalLayoutListener)
|
||||||
}
|
}
|
||||||
binding.refreshLayout.setOnRefreshListener {
|
binding.refreshLayout.setOnRefreshListener {
|
||||||
pageNo = 1
|
pageNo = 1
|
||||||
@@ -130,6 +167,7 @@ class BottomDialog2(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.refreshLayout.setEnableRefresh(false)
|
binding.refreshLayout.setEnableRefresh(false)
|
||||||
|
binding.refreshLayout.setEnableLoadMore(false)
|
||||||
binding.tvClear.setOnClickListener {
|
binding.tvClear.setOnClickListener {
|
||||||
Log.d(TAG, "show: weighAddress=$weighAddress")
|
Log.d(TAG, "show: weighAddress=$weighAddress")
|
||||||
WeightUtil.tareTwo(weighAddress)
|
WeightUtil.tareTwo(weighAddress)
|
||||||
@@ -138,7 +176,7 @@ class BottomDialog2(
|
|||||||
// WeightUtil.tareTwo(num+1)
|
// WeightUtil.tareTwo(num+1)
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
WeightUtil.addWeightListener (
|
WeightUtil.addWeightListener(
|
||||||
weightKey = TAG,
|
weightKey = TAG,
|
||||||
getWeight = { address, state, weight ->
|
getWeight = { address, state, weight ->
|
||||||
if (weighAddress == address) {
|
if (weighAddress == address) {
|
||||||
@@ -167,71 +205,119 @@ class BottomDialog2(
|
|||||||
|
|
||||||
private var currentWeight = 0.toDouble()
|
private var currentWeight = 0.toDouble()
|
||||||
private var pageNo = 1
|
private var pageNo = 1
|
||||||
private val pageSize = 120
|
private val pageSize = 50
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun getGoodsList() {
|
private fun getGoodsList() {
|
||||||
val queryParams = mutableMapOf(
|
// val queryParams = mutableMapOf(
|
||||||
"goodsType" to "$goodsType",
|
// "goodsType" to "1",
|
||||||
"canteenId" to BaseApp.canteenId,
|
// "canteenId" to BaseApp.canteenId,
|
||||||
"pageNo" to "$pageNo",
|
// "pageNo" to "$pageNo",
|
||||||
"pageSize" to "$pageSize"
|
// "pageSize" to "$pageSize"
|
||||||
|
// )
|
||||||
|
// if (goodsName.isNullOrBlank().not()) {
|
||||||
|
// queryParams.put("name", goodsName!!)
|
||||||
|
// }
|
||||||
|
// val sb = StringBuilder().apply {
|
||||||
|
// append(UrlConfig.QUERY_GOODS_LIST)
|
||||||
|
// append("?")
|
||||||
|
// queryParams.forEach { (key, value) ->
|
||||||
|
// append("$key=$value&")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// sb.deleteCharAt(sb.length - 1)
|
||||||
|
// Log.d(TAG, "getGoodsList: url = $sb")
|
||||||
|
// HttpUtil.get(
|
||||||
|
// url = sb.toString(),
|
||||||
|
// doSuccess = {
|
||||||
|
// val json = it.toJsonString()
|
||||||
|
// Log.d(TAG, "getGoodsList: json=$json")
|
||||||
|
// val recordBean: SeasoningRecordBean? = json.toObject<SeasoningRecordBean>()
|
||||||
|
// if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
||||||
|
// activity?.toast( "暂未搜索到调料信息")
|
||||||
|
// return@get
|
||||||
|
// }
|
||||||
|
// val records = recordBean.records
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// list.clear()
|
||||||
|
// }
|
||||||
|
// list.addAll(records!!)
|
||||||
|
// searchAdapter.notifyDataSetChanged()
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// binding.refreshLayout.finishRefresh(1200)
|
||||||
|
// } else {
|
||||||
|
// binding.refreshLayout.finishLoadMore(1200)
|
||||||
|
// }
|
||||||
|
// val isLoadMoreEnable = records.size >= pageSize
|
||||||
|
// binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
// if (isLoadMoreEnable) {
|
||||||
|
// pageNo++
|
||||||
|
// }
|
||||||
|
// }, doFailure = { code, msg ->
|
||||||
|
// activity?.toast(msg)
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// binding.refreshLayout.finishRefresh(1200)
|
||||||
|
// } else {
|
||||||
|
// binding.refreshLayout.finishLoadMore(1200)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
val param = mutableMapOf<String, Any>(
|
||||||
|
"goodsType" to "1",
|
||||||
|
"placeId" to BaseApp.canteenId,
|
||||||
|
"pageNum" to pageNo,
|
||||||
|
"pageSize" to pageSize
|
||||||
)
|
)
|
||||||
if (goodsName.isNullOrBlank().not()) {
|
if (goodsName.isNullOrBlank().not()) {
|
||||||
queryParams.put("name", goodsName!!)
|
param.put("goodsName", goodsName!!)
|
||||||
}
|
}
|
||||||
val sb = StringBuilder().apply {
|
activity?.querySeasoningList(
|
||||||
append(UrlConfig.QUERY_GOODS_LIST)
|
param = param,
|
||||||
append("?")
|
onSuccess = {
|
||||||
queryParams.forEach { (key, value) ->
|
loadGoodsList(it)
|
||||||
append("$key=$value&")
|
},
|
||||||
}
|
onFailure = { code, msg ->
|
||||||
}
|
|
||||||
sb.deleteCharAt(sb.length - 1)
|
|
||||||
Log.d(TAG, "getGoodsList: url = $sb")
|
|
||||||
HttpUtil.get(
|
|
||||||
url = sb.toString(),
|
|
||||||
doSuccess = {
|
|
||||||
val json = it.toJsonString()
|
|
||||||
Log.d(TAG, "getGoodsList: json=$json")
|
|
||||||
val recordBean: SeasoningRecordBean? = json.toObject<SeasoningRecordBean>()
|
|
||||||
if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
|
||||||
activity?.toast(if (goodsType == 1) "暂未搜索到调料信息" else "暂未搜索到食材信息")
|
|
||||||
return@get
|
|
||||||
}
|
|
||||||
val records = recordBean.records
|
|
||||||
if (pageNo == 1) {
|
|
||||||
list.clear()
|
|
||||||
}
|
|
||||||
list.addAll(records!!)
|
|
||||||
searchAdapter.notifyDataSetChanged()
|
|
||||||
if (pageNo == 1) {
|
|
||||||
binding.refreshLayout.finishRefresh(1200)
|
|
||||||
} else {
|
|
||||||
binding.refreshLayout.finishLoadMore(1200)
|
|
||||||
}
|
|
||||||
val isLoadMoreEnable = records.size >= pageSize
|
|
||||||
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
|
||||||
if (isLoadMoreEnable) {
|
|
||||||
pageNo++
|
|
||||||
}
|
|
||||||
}, doFailure = { code, msg ->
|
|
||||||
activity?.toast(msg)
|
activity?.toast(msg)
|
||||||
if (pageNo == 1) {
|
finishRefresh()
|
||||||
binding.refreshLayout.finishRefresh(1200)
|
}
|
||||||
} else {
|
)
|
||||||
binding.refreshLayout.finishLoadMore(1200)
|
}
|
||||||
}
|
|
||||||
})
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
private fun loadGoodsList(records: MutableList<SeasoningEntity>?) {
|
||||||
|
finishRefresh()
|
||||||
|
if (records.isNullOrEmpty()) {
|
||||||
|
activity?.toast("暂未搜索到调料信息")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (pageNo == 1) {
|
||||||
|
list.clear()
|
||||||
|
}
|
||||||
|
list.addAll(records)
|
||||||
|
searchAdapter.notifyDataSetChanged()
|
||||||
|
val isLoadMoreEnable = records.size >= pageSize
|
||||||
|
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
if (isLoadMoreEnable) {
|
||||||
|
pageNo++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun finishRefresh() {
|
||||||
|
if (pageNo == 1) {
|
||||||
|
binding.refreshLayout.finishRefresh()
|
||||||
|
} else {
|
||||||
|
binding.refreshLayout.finishLoadMore()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getTextSpan(weight: Double): SpannableStringBuilder {
|
fun getTextSpan(weight: Double): SpannableStringBuilder {
|
||||||
var topWeight = "$weight"
|
var topWeight = "$weight"
|
||||||
var bottomUnit = "克"
|
var bottomUnit = "克"
|
||||||
if (weight >= 1000) {
|
if (weight >= 1000) {
|
||||||
topWeight = "${(weight/1000).roundedDecimalPlace(3)}"
|
topWeight = "${(weight / 1000).roundedDecimalPlace(3)}"
|
||||||
bottomUnit = "千克"
|
bottomUnit = "千克"
|
||||||
}
|
}
|
||||||
return buildSpannableString {
|
return buildSpannableString {
|
||||||
@@ -23,6 +23,10 @@ data class CookFoodEntity(
|
|||||||
) : BaseEntity {
|
) : BaseEntity {
|
||||||
@Ignore
|
@Ignore
|
||||||
var stFoodInfoConstituteList: MutableList<CookFoodGoodsEntity>? = null
|
var stFoodInfoConstituteList: MutableList<CookFoodGoodsEntity>? = null
|
||||||
|
@Ignore
|
||||||
|
var matchingConstituteInfoList: MutableList<CookFoodGoodsEntity>? = null
|
||||||
|
@Ignore
|
||||||
|
var foodConstituteList: MutableList<CookFoodGoodsEntity>? = null
|
||||||
|
|
||||||
constructor() : this(foodId = "") // 必需的空构造
|
constructor() : this(foodId = "") // 必需的空构造
|
||||||
}
|
}
|
||||||
@@ -43,10 +43,14 @@ class CookFoodGoodsEntity(
|
|||||||
*/
|
*/
|
||||||
var materialType: Int = 0,
|
var materialType: Int = 0,
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 物品 是否全部可食:1-全部可食,0-部分可食,默认全部
|
||||||
|
// */
|
||||||
|
// var allEdible: Int = 1,
|
||||||
/**
|
/**
|
||||||
* 物品 是否全部可食:1-全部可食,0-部分可食,默认全部
|
* 物品 是否全部可食:true-全部可食,false-部分可食,默认全部
|
||||||
*/
|
*/
|
||||||
var allEdible: Int = 1,
|
var allEdible: Boolean = true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物品 用料重量
|
* 物品 用料重量
|
||||||
@@ -78,4 +82,8 @@ class CookFoodGoodsEntity(
|
|||||||
|
|
||||||
@Ignore
|
@Ignore
|
||||||
var isClicked: Boolean = false
|
var isClicked: Boolean = false
|
||||||
|
|
||||||
|
//true-原始数据,false-非原始数据
|
||||||
|
@Ignore
|
||||||
|
var isOriginalData: Boolean = true
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,8 @@ data class FoodRecord(
|
|||||||
var cookMode: Int = 0,
|
var cookMode: Int = 0,
|
||||||
//1-早餐,2-午餐,3-晚餐
|
//1-早餐,2-午餐,3-晚餐
|
||||||
var dinnerType: String = "0",
|
var dinnerType: String = "0",
|
||||||
|
//true-原始数据,false-非原始数据
|
||||||
|
var isOriginalData: Boolean = true,
|
||||||
var sort: Int = 0
|
var sort: Int = 0
|
||||||
) : Serializable
|
) : Serializable
|
||||||
|
|
||||||
|
|||||||
@@ -36,11 +36,14 @@ data class SeasoningEntity(
|
|||||||
*/
|
*/
|
||||||
var materialType: Int = 3,
|
var materialType: Int = 3,
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 物品 是否全部可食:1-全部可食,0-部分可食,默认全部
|
||||||
|
// */
|
||||||
|
// var allEdible: Int = 1,
|
||||||
/**
|
/**
|
||||||
* 物品 是否全部可食:1-全部可食,0-部分可食,默认全部
|
* 物品 是否全部可食:true-全部可食,false-部分可食,默认全部
|
||||||
*/
|
*/
|
||||||
var allEdible: Int = 1,
|
var allEdible: Boolean = true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物品 用料重量
|
* 物品 用料重量
|
||||||
*/
|
*/
|
||||||
@@ -54,9 +57,9 @@ data class SeasoningEntity(
|
|||||||
|
|
||||||
var sort: Int = 9999,
|
var sort: Int = 9999,
|
||||||
/**
|
/**
|
||||||
* isDel表示数据是否已删除,1-已删除,为无效数据,0-正常使用,有效数据
|
* isDel表示数据是否已删除,1-已删除,为无效数据,0-正常使用,有效数据
|
||||||
*/
|
*/
|
||||||
var isDel: Int = 0,
|
var isDel: Int = 0,
|
||||||
var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now())
|
var createTime: String = DateTimeUtil.formatDateTime(LocalDateTime.now())
|
||||||
) : BaseEntity {
|
) : BaseEntity {
|
||||||
@Ignore
|
@Ignore
|
||||||
|
|||||||
@@ -1,70 +1,70 @@
|
|||||||
package com.shuwei.dish.match.http
|
//package com.shuwei.dish.match.http
|
||||||
|
//
|
||||||
import android.annotation.SuppressLint
|
//import android.annotation.SuppressLint
|
||||||
import android.util.Log
|
//import android.util.Log
|
||||||
import okhttp3.Call
|
//import okhttp3.Call
|
||||||
import okhttp3.Interceptor
|
//import okhttp3.Interceptor
|
||||||
import okhttp3.OkHttpClient
|
//import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
//import okhttp3.Request
|
||||||
import okhttp3.Response
|
//import okhttp3.Response
|
||||||
import java.util.concurrent.TimeUnit
|
//import java.util.concurrent.TimeUnit
|
||||||
|
//
|
||||||
import javax.net.ssl.*
|
//import javax.net.ssl.*
|
||||||
import java.security.SecureRandom
|
//import java.security.SecureRandom
|
||||||
import java.security.cert.X509Certificate
|
//import java.security.cert.X509Certificate
|
||||||
|
//
|
||||||
class HttpClient private constructor() {
|
//class HttpClient private constructor() {
|
||||||
private val client: OkHttpClient by lazy {
|
// private val client: OkHttpClient by lazy {
|
||||||
OkHttpClient.Builder()
|
// OkHttpClient.Builder()
|
||||||
.apply {
|
// .apply {
|
||||||
connectTimeout(15, TimeUnit.SECONDS)
|
// connectTimeout(15, TimeUnit.SECONDS)
|
||||||
readTimeout(30, TimeUnit.SECONDS)
|
// readTimeout(30, TimeUnit.SECONDS)
|
||||||
writeTimeout(15, TimeUnit.SECONDS)
|
// writeTimeout(15, TimeUnit.SECONDS)
|
||||||
sslSocketFactory(createSSLSocketFactory(), TrustAllCerts())
|
// sslSocketFactory(createSSLSocketFactory(), TrustAllCerts())
|
||||||
hostnameVerifier { _, _ -> true }
|
// hostnameVerifier { _, _ -> true }
|
||||||
//if (BuildConfig.Debug) {
|
// //if (BuildConfig.Debug) {
|
||||||
addInterceptor(LoggingInterceptor())
|
// addInterceptor(LoggingInterceptor())
|
||||||
// }
|
// // }
|
||||||
}
|
// }
|
||||||
.build()
|
// .build()
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
companion object {
|
// companion object {
|
||||||
val instance by lazy { HttpClient() }
|
// val instance by lazy { HttpClient() }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
fun newCall(request: Request): Call = client.newCall(request)
|
// fun newCall(request: Request): Call = client.newCall(request)
|
||||||
|
//
|
||||||
inner class LoggingInterceptor : Interceptor {
|
// inner class LoggingInterceptor : Interceptor {
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
// override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
val request = chain.request()
|
// val request = chain.request()
|
||||||
// 打印请求日志
|
// // 打印请求日志
|
||||||
Log.d("OkHttp", "--> ${request.method} ${request.url}")
|
// Log.d("OkHttp", "--> ${request.method} ${request.url}")
|
||||||
|
//
|
||||||
val response = chain.proceed(request)
|
// val response = chain.proceed(request)
|
||||||
// 打印响应日志
|
// // 打印响应日志
|
||||||
Log.d("OkHttp", "<-- ${response.code} ${response.request.url}")
|
// Log.d("OkHttp", "<-- ${response.code} ${response.request.url}")
|
||||||
|
//
|
||||||
return response
|
// return response
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 信任所有证书的TrustManager实现
|
// // 信任所有证书的TrustManager实现
|
||||||
@SuppressLint("CustomX509TrustManager")
|
// @SuppressLint("CustomX509TrustManager")
|
||||||
class TrustAllCerts : X509TrustManager {
|
// class TrustAllCerts : X509TrustManager {
|
||||||
@SuppressLint("TrustAllX509TrustManager")
|
// @SuppressLint("TrustAllX509TrustManager")
|
||||||
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {}
|
// override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {}
|
||||||
@SuppressLint("TrustAllX509TrustManager")
|
// @SuppressLint("TrustAllX509TrustManager")
|
||||||
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {}
|
// override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {}
|
||||||
override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
|
// override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 创建信任所有证书的SSLSocketFactory
|
// // 创建信任所有证书的SSLSocketFactory
|
||||||
fun createSSLSocketFactory(): SSLSocketFactory {
|
// fun createSSLSocketFactory(): SSLSocketFactory {
|
||||||
val sslContext = SSLContext.getInstance("TLS").apply {
|
// val sslContext = SSLContext.getInstance("TLS").apply {
|
||||||
init(null, arrayOf(TrustAllCerts()), SecureRandom())
|
// init(null, arrayOf(TrustAllCerts()), SecureRandom())
|
||||||
}
|
// }
|
||||||
return sslContext.socketFactory
|
// return sslContext.socketFactory
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -1,199 +1,199 @@
|
|||||||
package com.shuwei.dish.match.http
|
//package com.shuwei.dish.match.http
|
||||||
|
|
||||||
import android.os.Handler
|
|
||||||
import android.os.Looper
|
|
||||||
import android.util.Log
|
|
||||||
import com.google.gson.reflect.TypeToken
|
|
||||||
import com.shuwei.dish.match.base.BaseApp
|
|
||||||
import com.shuwei.dish.match.base.BaseReq
|
|
||||||
import com.shuwei.dish.match.utils.SpTool
|
|
||||||
import com.shuwei.dish.match.utils.ext.toType
|
|
||||||
import okhttp3.Call
|
|
||||||
import okhttp3.Callback
|
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
|
||||||
import okhttp3.Request
|
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
|
||||||
import okhttp3.Response
|
|
||||||
import java.io.IOException
|
|
||||||
import java.util.concurrent.Executors
|
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
|
|
||||||
|
|
||||||
object HttpUtil {
|
|
||||||
|
|
||||||
var loopGetToken = true
|
|
||||||
|
|
||||||
fun runMainThread(action: () -> Unit) {
|
|
||||||
Handler(Looper.getMainLooper()).post {
|
|
||||||
action()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// GET请求(HTTPS)
|
|
||||||
fun get(
|
|
||||||
url: String,
|
|
||||||
header: Map<String, String>?=null,
|
|
||||||
doSuccess: (data: Any) -> Unit,
|
|
||||||
doFailure: (code: Int?, msg: String?) -> Unit
|
|
||||||
) {
|
|
||||||
val request = Request.Builder()
|
|
||||||
.url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url)
|
|
||||||
.apply {
|
|
||||||
if (header != null) {
|
|
||||||
header.forEach {
|
|
||||||
addHeader(it.key, it.value)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val token = getToken()
|
|
||||||
if (token.isNotBlank()) {
|
|
||||||
addHeader("X-Access-Token", token)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.get()
|
|
||||||
.build()
|
|
||||||
HttpClient.instance.newCall(request).enqueue(CallbackImpl(doSuccess, doFailure))
|
|
||||||
}
|
|
||||||
//
|
//
|
||||||
|
//import android.os.Handler
|
||||||
|
//import android.os.Looper
|
||||||
|
//import android.util.Log
|
||||||
|
//import com.google.gson.reflect.TypeToken
|
||||||
|
//import com.shuwei.dish.match.base.BaseApp
|
||||||
|
//import com.shuwei.dish.match.base.BaseReq
|
||||||
|
//import com.shuwei.dish.match.utils.SpTool
|
||||||
|
//import com.shuwei.dish.match.utils.ext.toType
|
||||||
|
//import okhttp3.Call
|
||||||
|
//import okhttp3.Callback
|
||||||
|
//import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
|
//import okhttp3.Request
|
||||||
|
//import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
|
//import okhttp3.Response
|
||||||
|
//import java.io.IOException
|
||||||
|
//import java.util.concurrent.Executors
|
||||||
|
//import java.util.concurrent.TimeUnit
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//object HttpUtil {
|
||||||
|
//
|
||||||
|
// var loopGetToken = true
|
||||||
|
//
|
||||||
|
// fun runMainThread(action: () -> Unit) {
|
||||||
|
// Handler(Looper.getMainLooper()).post {
|
||||||
|
// action()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // GET请求(HTTPS)
|
||||||
// fun get(
|
// fun get(
|
||||||
// isHttps: Boolean = false,
|
// url: String,
|
||||||
// host: String = "vip.shuziweidao.com",
|
// header: Map<String, String>?=null,
|
||||||
// pathSegmentList: List<String>,
|
|
||||||
// queryParams: Map<String, String>,
|
|
||||||
// doSuccess: (data: Any) -> Unit,
|
// doSuccess: (data: Any) -> Unit,
|
||||||
// doFailure: (code: Int?, msg: String?) -> Unit
|
// doFailure: (code: Int?, msg: String?) -> Unit
|
||||||
// ) {
|
// ) {
|
||||||
// val token = getToken()
|
|
||||||
// val url = HttpUrl.Builder()
|
|
||||||
// .scheme(if (isHttps) "https" else "http")
|
|
||||||
// .host(host)
|
|
||||||
// .apply {
|
|
||||||
// pathSegmentList.forEach { addPathSegment(it) }
|
|
||||||
// queryParams.forEach { (key, value) -> addQueryParameter(key, value) }
|
|
||||||
// }
|
|
||||||
// .build()
|
|
||||||
// val request = Request.Builder()
|
// val request = Request.Builder()
|
||||||
// .url(url)
|
// .url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url)
|
||||||
// .apply {
|
// .apply {
|
||||||
// if (token.isNotBlank()) {
|
// if (header != null) {
|
||||||
// addHeader("Authorization", token)
|
// header.forEach {
|
||||||
|
// addHeader(it.key, it.value)
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// val token = getToken()
|
||||||
|
// if (token.isNotBlank()) {
|
||||||
|
// addHeader("X-Access-Token", token)
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// .get()
|
// .get()
|
||||||
// .build()
|
// .build()
|
||||||
// HttpClient.instance.newCall(request).enqueue(CallbackImpl(doSuccess, doFailure))
|
// HttpClient.instance.newCall(request).enqueue(CallbackImpl(doSuccess, doFailure))
|
||||||
// }
|
// }
|
||||||
|
////
|
||||||
// POST表单(HTTPS)
|
//// fun get(
|
||||||
// fun postForm(url: String, params: Map<String, String>, callback: Callback) {
|
//// isHttps: Boolean = false,
|
||||||
// val formBody = FormBody.Builder().apply {
|
//// host: String = "vip.shuziweidao.com",
|
||||||
// params.forEach { (k, v) -> add(k, v) }
|
//// pathSegmentList: List<String>,
|
||||||
// }.build()
|
//// queryParams: Map<String, String>,
|
||||||
|
//// doSuccess: (data: Any) -> Unit,
|
||||||
|
//// doFailure: (code: Int?, msg: String?) -> Unit
|
||||||
|
//// ) {
|
||||||
|
//// val token = getToken()
|
||||||
|
//// val url = HttpUrl.Builder()
|
||||||
|
//// .scheme(if (isHttps) "https" else "http")
|
||||||
|
//// .host(host)
|
||||||
|
//// .apply {
|
||||||
|
//// pathSegmentList.forEach { addPathSegment(it) }
|
||||||
|
//// queryParams.forEach { (key, value) -> addQueryParameter(key, value) }
|
||||||
|
//// }
|
||||||
|
//// .build()
|
||||||
|
//// val request = Request.Builder()
|
||||||
|
//// .url(url)
|
||||||
|
//// .apply {
|
||||||
|
//// if (token.isNotBlank()) {
|
||||||
|
//// addHeader("Authorization", token)
|
||||||
|
//// }
|
||||||
|
//// }
|
||||||
|
//// .get()
|
||||||
|
//// .build()
|
||||||
|
//// HttpClient.instance.newCall(request).enqueue(CallbackImpl(doSuccess, doFailure))
|
||||||
|
//// }
|
||||||
//
|
//
|
||||||
|
// // POST表单(HTTPS)
|
||||||
|
//// fun postForm(url: String, params: Map<String, String>, callback: Callback) {
|
||||||
|
//// val formBody = FormBody.Builder().apply {
|
||||||
|
//// params.forEach { (k, v) -> add(k, v) }
|
||||||
|
//// }.build()
|
||||||
|
////
|
||||||
|
//// Request.Builder()
|
||||||
|
//// .url(url)
|
||||||
|
//// .post(formBody)
|
||||||
|
//// .build().let { HttpClient.instance.newCall(it).enqueue(callback) }
|
||||||
|
//// }
|
||||||
|
//
|
||||||
|
// // POST JSON(HTTPS)
|
||||||
|
// fun postJson(
|
||||||
|
// url: String,
|
||||||
|
// json: String,
|
||||||
|
// doSuccess: (data: Any) -> Unit,
|
||||||
|
// doFailure: (code: Int?, msg: String?) -> Unit
|
||||||
|
// ) {
|
||||||
|
// val body = json
|
||||||
|
// .toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
|
||||||
|
// val token = getToken()
|
||||||
// Request.Builder()
|
// Request.Builder()
|
||||||
// .url(url)
|
// .url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url)
|
||||||
// .post(formBody)
|
// .apply {
|
||||||
// .build().let { HttpClient.instance.newCall(it).enqueue(callback) }
|
// if (token.isNotBlank()) {
|
||||||
|
// addHeader("X-Access-Token", token)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// .post(body)
|
||||||
|
// .build()
|
||||||
|
// .let { HttpClient.instance.newCall(it).enqueue(CallbackImpl(doSuccess, doFailure)) }
|
||||||
// }
|
// }
|
||||||
|
//
|
||||||
// POST JSON(HTTPS)
|
//
|
||||||
fun postJson(
|
// val executor = Executors.newSingleThreadScheduledExecutor()
|
||||||
url: String,
|
// var getTokenIsRunning = false
|
||||||
json: String,
|
// private fun exeTokenThread() {
|
||||||
doSuccess: (data: Any) -> Unit,
|
// if (getTokenIsRunning.not()) {
|
||||||
doFailure: (code: Int?, msg: String?) -> Unit
|
// executor.scheduleWithFixedDelay(
|
||||||
) {
|
// task, 0, 1, TimeUnit.MINUTES
|
||||||
val body = json
|
// )
|
||||||
.toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull())
|
// getTokenIsRunning = true
|
||||||
val token = getToken()
|
// }
|
||||||
Request.Builder()
|
// }
|
||||||
.url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url)
|
//
|
||||||
.apply {
|
// val task = Runnable {
|
||||||
if (token.isNotBlank()) {
|
// if (BaseApp.token.isNullOrBlank()) {
|
||||||
addHeader("X-Access-Token", token)
|
// getAppToken()
|
||||||
}
|
// } else {
|
||||||
}
|
// executor.shutdown()
|
||||||
.post(body)
|
// }
|
||||||
.build()
|
// }
|
||||||
.let { HttpClient.instance.newCall(it).enqueue(CallbackImpl(doSuccess, doFailure)) }
|
//
|
||||||
}
|
// fun getToken() = SpTool.getString(SpTool.TOKEN)
|
||||||
|
////BaseApp.instance?.token ?:""
|
||||||
|
////BaseApp.getSharedPref()?.getString("token", "") ?: ""
|
||||||
val executor = Executors.newSingleThreadScheduledExecutor()
|
//
|
||||||
var getTokenIsRunning = false
|
// fun getAppToken() {
|
||||||
private fun exeTokenThread() {
|
// val url = "${UrlConfig.GET_TOKEN}?qrcodeId=${SpTool.getString(SpTool.DEVICE_ID)}"
|
||||||
if (getTokenIsRunning.not()) {
|
//// Log.d(TAG, "getToken: url = $url")
|
||||||
executor.scheduleWithFixedDelay(
|
// get(url = url, doSuccess = {
|
||||||
task, 0, 1, TimeUnit.MINUTES
|
// SpTool.put(SpTool.TOKEN, it)
|
||||||
)
|
// BaseApp.token = it.toString()
|
||||||
getTokenIsRunning = true
|
// }) { code, msg ->
|
||||||
}
|
// //toast(msg)
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
val task = Runnable {
|
//
|
||||||
if (BaseApp.token.isNullOrBlank()) {
|
// class CallbackImpl(
|
||||||
getAppToken()
|
// private val doSuccess: (data: Any) -> Unit,
|
||||||
} else {
|
// private val doFailure: (code: Int?, msg: String?) -> Unit
|
||||||
executor.shutdown()
|
// ) :
|
||||||
}
|
// Callback {
|
||||||
}
|
// override fun onFailure(call: Call, e: IOException) {
|
||||||
|
// runMainThread {
|
||||||
fun getToken() = SpTool.getString(SpTool.TOKEN)
|
// e.printStackTrace()
|
||||||
//BaseApp.instance?.token ?:""
|
// doFailure(-1, "服务异常,${e.message}")
|
||||||
//BaseApp.getSharedPref()?.getString("token", "") ?: ""
|
// }
|
||||||
|
// }
|
||||||
fun getAppToken() {
|
//
|
||||||
val url = "${UrlConfig.GET_TOKEN}?qrcodeId=${SpTool.getString(SpTool.DEVICE_ID)}"
|
// override fun onResponse(call: Call, response: Response) {
|
||||||
// Log.d(TAG, "getToken: url = $url")
|
// val respData = response.body?.string()
|
||||||
get(url = url, doSuccess = {
|
// runMainThread {
|
||||||
SpTool.put(SpTool.TOKEN, it)
|
// Log.d("HttpUtil", respData ?: "")
|
||||||
BaseApp.token = it.toString()
|
// runCatching {
|
||||||
}) { code, msg ->
|
// val typeToken = object : TypeToken<BaseReq<Any>>() {}
|
||||||
//toast(msg)
|
// val baseReq = respData?.toType<BaseReq<Any>>(typeToken = typeToken)
|
||||||
}
|
// if (baseReq == null) {
|
||||||
}
|
// doFailure(-1, "查询数据失败")
|
||||||
|
// return@runCatching
|
||||||
class CallbackImpl(
|
// }
|
||||||
private val doSuccess: (data: Any) -> Unit,
|
// if (baseReq.code != 200) {
|
||||||
private val doFailure: (code: Int?, msg: String?) -> Unit
|
// doFailure(baseReq.code, baseReq.message)
|
||||||
) :
|
// //baseReq.code == 500 ||
|
||||||
Callback {
|
// if (baseReq.code == 401 && loopGetToken) {
|
||||||
override fun onFailure(call: Call, e: IOException) {
|
// exeTokenThread()
|
||||||
runMainThread {
|
// }
|
||||||
e.printStackTrace()
|
// return@runCatching
|
||||||
doFailure(-1, "服务异常,${e.message}")
|
// }
|
||||||
}
|
// doSuccess(baseReq.result ?: "")
|
||||||
}
|
// }.onFailure {
|
||||||
|
// it.printStackTrace()
|
||||||
override fun onResponse(call: Call, response: Response) {
|
// doFailure(-1, "解析异常")
|
||||||
val respData = response.body?.string()
|
// }
|
||||||
runMainThread {
|
// }
|
||||||
Log.d("HttpUtil", respData ?: "")
|
// }
|
||||||
runCatching {
|
//
|
||||||
val typeToken = object : TypeToken<BaseReq<Any>>() {}
|
// }
|
||||||
val baseReq = respData?.toType<BaseReq<Any>>(typeToken = typeToken)
|
//
|
||||||
if (baseReq == null) {
|
//}
|
||||||
doFailure(-1, "查询数据失败")
|
//
|
||||||
return@runCatching
|
//fun String.isHttpApi() = this.startsWith("http://") || this.startsWith("https://")
|
||||||
}
|
|
||||||
if (baseReq.code != 200) {
|
|
||||||
doFailure(baseReq.code, baseReq.message)
|
|
||||||
//baseReq.code == 500 ||
|
|
||||||
if (baseReq.code == 401 && loopGetToken) {
|
|
||||||
exeTokenThread()
|
|
||||||
}
|
|
||||||
return@runCatching
|
|
||||||
}
|
|
||||||
doSuccess(baseReq.result ?: "")
|
|
||||||
}.onFailure {
|
|
||||||
it.printStackTrace()
|
|
||||||
doFailure(-1, "解析异常")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.isHttpApi() = this.startsWith("http://") || this.startsWith("https://")
|
|
||||||
|
|||||||
@@ -1,36 +1,37 @@
|
|||||||
package com.shuwei.dish.match.http
|
package com.shuwei.dish.match.http
|
||||||
|
|
||||||
import com.shuwei.dish.match.base.BaseApp
|
//import com.shuwei.dish.match.base.BaseApp
|
||||||
|
|
||||||
object UrlConfig {
|
object UrlConfig {
|
||||||
private const val DEVICE_BASE_URL = "http://device.shuziweidao.com:8889"
|
// private const val DEVICE_BASE_URL = "http://device.shuziweidao.com:8889"
|
||||||
/**
|
// /**
|
||||||
* device获取token
|
// * device获取token
|
||||||
*/
|
// */
|
||||||
const val DEVICE_TOKEN = "${DEVICE_BASE_URL}/sys/getEquipmentToken"
|
// const val DEVICE_TOKEN = "${DEVICE_BASE_URL}/sys/getEquipmentToken"
|
||||||
/**
|
// /**
|
||||||
*获取配置信息
|
// *获取配置信息
|
||||||
*/
|
// */
|
||||||
const val DEVICE_CONFIG = "${DEVICE_BASE_URL}/equipment/stEquipment/queryByEquipmentCode"
|
// const val DEVICE_CONFIG = "${DEVICE_BASE_URL}/equipment/stEquipment/queryByEquipmentCode"
|
||||||
|
|
||||||
// const val BASE_URL = "http://vip.shuziweidao.com/shuwei-zhct"
|
// const val BASE_URL = "http://vip.shuziweidao.com/shuwei-zhct"
|
||||||
// const val DISH_DETAIL = "$BASE_URL/scales/goodsUseList?foodId={foodId}&foodWeight={foodWeight}"
|
// const val DISH_DETAIL = "$BASE_URL/scales/goodsUseList?foodId={foodId}&foodWeight={foodWeight}"
|
||||||
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
||||||
|
|
||||||
// const val BASE_URL = "http://192.168.1.207:9102"
|
// const val BASE_URL = "http://192.168.1.207:9102"
|
||||||
const val BASE_URL = "https://yyjk.shuziweidao.com/gateway"
|
// const val BASE_URL = "https://yyjk.shuziweidao.com/gateway"
|
||||||
|
const val BASE_URL = "https://yyjk.shuziweidao.com/gateway/"
|
||||||
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
// const val DISH_LIST = "$BASE_URL/scales/getRestInfoFoods?eaId=99&type=0&foodName"
|
||||||
|
|
||||||
|
|
||||||
var DISH_DETAIL = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryById"
|
// var DISH_DETAIL = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryById"
|
||||||
|
//
|
||||||
// "$BASE_URL/scales/generateToken?deviceId=1111111111111111111111111111"
|
// // "$BASE_URL/scales/generateToken?deviceId=1111111111111111111111111111"
|
||||||
|
//
|
||||||
var GET_TOKEN = "${BaseApp.configUrl}/restaurant/equipment/stEquipment/getEquipmentToken"
|
// var GET_TOKEN = "${BaseApp.configUrl}/restaurant/equipment/stEquipment/getEquipmentToken"
|
||||||
var SUBMIT_DISH = "${BaseApp.configUrl}/food/stFoodInfoMatching/saveoredit"
|
// var SUBMIT_DISH = "${BaseApp.configUrl}/food/stFoodInfoMatching/saveoredit"
|
||||||
|
//
|
||||||
var QUERY_GOODS_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryGoodsInfoList"
|
// var QUERY_GOODS_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryGoodsInfoList"
|
||||||
var QUERY_FOOD_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/list"
|
// var QUERY_FOOD_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/list"
|
||||||
var SAMPLING_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryHistorical/goodsInfoList"
|
// var SAMPLING_LIST = "${BaseApp.configUrl}/food/stFoodInfoMatching/queryHistorical/goodsInfoList"
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,118 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
import com.shuwei.dish.match.utils.ext.toJsonString
|
||||||
|
import com.shuwei.dish.match.utils.ext.toObject
|
||||||
|
import com.shuwei.dish.match.utils.ext.toType
|
||||||
|
import org.apache.http.conn.ConnectTimeoutException
|
||||||
|
import retrofit2.HttpException
|
||||||
|
import java.io.IOException
|
||||||
|
import java.net.SocketTimeoutException
|
||||||
|
import java.net.UnknownHostException
|
||||||
|
|
||||||
|
///**
|
||||||
|
// * 通用网络请求封装,统一处理异常
|
||||||
|
// * @param onRequest 实际的 Retrofit 接口请求
|
||||||
|
// * @param onSuccess 成功回调
|
||||||
|
// * @param onFailure 自定义错误回调(可选,不传则用默认提示)
|
||||||
|
// */
|
||||||
|
//suspend fun <T> apiRequest(
|
||||||
|
// onRequest: suspend () -> T,
|
||||||
|
// onSuccess: (T) -> Unit,
|
||||||
|
// onFailure: ((ApiException) -> Unit)? = null
|
||||||
|
//) {
|
||||||
|
// try {
|
||||||
|
// // 执行实际的网络请求
|
||||||
|
// val result = onRequest()
|
||||||
|
// onSuccess(result)
|
||||||
|
// } catch (e: Exception) {
|
||||||
|
// val apiException = getApiException(e)
|
||||||
|
// // 优先执行自定义错误回调,没有则用默认提示
|
||||||
|
// if (onFailure != null) {
|
||||||
|
// onFailure(apiException)
|
||||||
|
// } else {
|
||||||
|
// // 默认的错误提示(可根据 ErrorType 定制)
|
||||||
|
// val tip = apiException.errorMsg
|
||||||
|
// // 切换到UI线程弹提示(用 MainScope 确保在主线程)
|
||||||
|
// MainScope().launch {
|
||||||
|
// BaseApp.instance?.toast(tip)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用网络请求封装,统一处理异常
|
||||||
|
* @param onRequest 实际的 Retrofit 接口请求
|
||||||
|
* @param onSuccess 成功回调
|
||||||
|
* @param onFailure 自定义错误回调(可选,不传则用默认提示)
|
||||||
|
*/
|
||||||
|
suspend fun <T> request(
|
||||||
|
onRequest: suspend () -> ApiResponse<T>,
|
||||||
|
onSuccess: (T) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
var response: ApiResponse<T>?
|
||||||
|
try {
|
||||||
|
// 执行实际的网络请求
|
||||||
|
response = onRequest()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
val apiException = getApiException(e)
|
||||||
|
onFailure("-1", apiException.errorMsg)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (response?.isSuccess() == true) {
|
||||||
|
onSuccess(response.data as T)
|
||||||
|
} else {
|
||||||
|
onFailure(response?.code ?: "-1", response?.msg ?: "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data class CodeMsg(
|
||||||
|
var code: String? = null,
|
||||||
|
var msg: String? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
fun getApiException(e: Exception): ApiException {
|
||||||
|
// 捕获各类网络异常并转换为自定义异常
|
||||||
|
return when (e) {
|
||||||
|
is HttpException -> httpException2ApiException(e)
|
||||||
|
|
||||||
|
is UnknownHostException -> ApiException(
|
||||||
|
ErrorType.NETWORK_ERROR,
|
||||||
|
errorMsg = "网络未连接,请检查网络"
|
||||||
|
)
|
||||||
|
|
||||||
|
is SocketTimeoutException -> ApiException(
|
||||||
|
ErrorType.TIMEOUT_ERROR,
|
||||||
|
errorMsg = "请求超时,请稍后重试"
|
||||||
|
)
|
||||||
|
|
||||||
|
is ConnectTimeoutException -> ApiException(
|
||||||
|
ErrorType.TIMEOUT_ERROR,
|
||||||
|
errorMsg = "连接超时,请检查网络"
|
||||||
|
)
|
||||||
|
|
||||||
|
is IOException -> ApiException(
|
||||||
|
ErrorType.NETWORK_ERROR,
|
||||||
|
errorMsg = "网络异常:${e.message ?: "未知IO错误"}"
|
||||||
|
)
|
||||||
|
|
||||||
|
is ApiException -> e
|
||||||
|
else -> ApiException(
|
||||||
|
ErrorType.UNKNOWN_ERROR,
|
||||||
|
errorMsg = "未知错误:${e.message ?: "未知"}",
|
||||||
|
throwable = e
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun httpException2ApiException(e: HttpException): ApiException {
|
||||||
|
val body = e.response()?.errorBody()?.string()
|
||||||
|
val codeMsg: CodeMsg? = body?.toObject<CodeMsg>()
|
||||||
|
return ApiException(
|
||||||
|
ErrorType.NETWORK_ERROR,
|
||||||
|
errorMsg = codeMsg?.msg ?: ""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
import com.shuwei.dish.match.base.GlobalData
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
|
import retrofit2.http.Body
|
||||||
|
import retrofit2.http.GET
|
||||||
|
import retrofit2.http.POST
|
||||||
|
import retrofit2.http.Query
|
||||||
|
import retrofit2.http.Url
|
||||||
|
|
||||||
|
interface ApiService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询菜品详情
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
suspend fun getFoodDetail(
|
||||||
|
@Url url: String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/getConstituteByFoodId",
|
||||||
|
@Query("foodId") foodId: String
|
||||||
|
): ApiResponse<CookFoodEntity?>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提交制作菜品
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
suspend fun submitCookFood(
|
||||||
|
@Url url: String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/saveConstitute",
|
||||||
|
@Body param: CookFoodEntity
|
||||||
|
): ApiResponse<Any?>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索菜品
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
suspend fun searchFoodList(
|
||||||
|
@Url url:String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/queryPageList",
|
||||||
|
@Body param: MutableMap<String, Any>
|
||||||
|
): ApiResponse<MutableList<FoodRecord>?>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采样数据
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
suspend fun getSamplingList(
|
||||||
|
@Url url:String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/queryHistoryGoodsInfoList",
|
||||||
|
@Body param: MutableMap<String, Any>
|
||||||
|
): ApiResponse<MutableList<FoodRecord>?>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物品信息
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
suspend fun queryGoodsList(
|
||||||
|
@Url url:String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/queryGoodsInfoList",
|
||||||
|
@Body param: MutableMap<String, Any>
|
||||||
|
): ApiResponse<MutableList<CookFoodGoodsEntity>?>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调料信息
|
||||||
|
*/
|
||||||
|
@POST
|
||||||
|
suspend fun querySeasoningList(
|
||||||
|
@Url url:String = "${GlobalData.appBaseUrl}/terminal/neglect/matching/app/queryGoodsInfoList",
|
||||||
|
@Body param: MutableMap<String, Any>
|
||||||
|
): ApiResponse<MutableList<SeasoningEntity>?>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// *获取配置信息
|
||||||
|
// */
|
||||||
|
// @GET("/equipment/stEquipment/queryByEquipmentCode")
|
||||||
|
// suspend fun getDeviceInfo(
|
||||||
|
// @Query("equipmentCode") equipmentCode: String,
|
||||||
|
// @Query("appVersion") appVersion: String = App.appVersion
|
||||||
|
// ): ApiResponse<DeviceConfigInfo>
|
||||||
|
//
|
||||||
|
// @GET
|
||||||
|
// suspend fun getAccessToken(
|
||||||
|
// @Url url: String = UrlConfig.GET_ACCESS_TOKEN,
|
||||||
|
// @Query("qrcodeId") qrcodeId: String
|
||||||
|
// ): ApiResponse<String?>
|
||||||
|
//
|
||||||
|
// @GET
|
||||||
|
// suspend fun getShelfList(
|
||||||
|
// @Url url: String = UrlConfig.GET_SHELF_LIST,
|
||||||
|
// @Query("deviceId") deviceId: String
|
||||||
|
// ): ApiResponse<ShelfResult>
|
||||||
|
//
|
||||||
|
// @GET
|
||||||
|
// suspend fun getGoodsList(
|
||||||
|
// @Url url: String = UrlConfig.GET_GOODS_LIST,
|
||||||
|
// @Query("canteenId") canteenId: String = "0",
|
||||||
|
// @Query("goodsName") goodsName: String? = null,
|
||||||
|
// @Query("pageNo") pageNo: Int = 1,
|
||||||
|
// @Query("pageSize") pageSize: Int = 50
|
||||||
|
// ): ApiResponse<MutableList<GoodsModel>?>
|
||||||
|
//
|
||||||
|
// @POST
|
||||||
|
// suspend fun saveShelfGoodsList(
|
||||||
|
// @Url url: String = UrlConfig.SAVE_SHELF_GOODS_LIST,
|
||||||
|
// @Body body: ShelfBody
|
||||||
|
// ): ApiResponse<Any?>
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
// 1. 网络异常类型枚举
|
||||||
|
enum class ErrorType {
|
||||||
|
NETWORK_ERROR, // 网络错误(无网)
|
||||||
|
TIMEOUT_ERROR, // 超时
|
||||||
|
SERVER_ERROR, // 服务器错误(5xx)
|
||||||
|
CLIENT_ERROR, // 客户端错误(4xx)
|
||||||
|
PARSE_ERROR, // 数据解析错误
|
||||||
|
UNKNOWN_ERROR // 未知错误
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 自定义网络异常类
|
||||||
|
class ApiException(
|
||||||
|
val errorType: ErrorType,
|
||||||
|
val errorCode: Int = -1,
|
||||||
|
val errorMsg: String,
|
||||||
|
val throwable: Throwable? = null
|
||||||
|
) : Exception(errorMsg, throwable)
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
//package com.shuwei.dish.match.net
|
||||||
|
//
|
||||||
|
//import android.annotation.SuppressLint
|
||||||
|
//import okhttp3.Interceptor
|
||||||
|
//import okhttp3.Response
|
||||||
|
//import org.apache.http.conn.ConnectTimeoutException
|
||||||
|
//import java.io.IOException
|
||||||
|
//import java.net.SocketTimeoutException
|
||||||
|
//import java.net.UnknownHostException
|
||||||
|
//
|
||||||
|
//class ExceptionInterceptor : Interceptor {
|
||||||
|
// @SuppressLint("SuspiciousIndentation")
|
||||||
|
// override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
// val request = chain.request()
|
||||||
|
// try {
|
||||||
|
// val response = chain.proceed(request)
|
||||||
|
// // 拦截 HTTP 状态码异常(4xx/5xx)
|
||||||
|
// if (!response.isSuccessful) {
|
||||||
|
// val e = ApiException(
|
||||||
|
// errorType = if (response.code >= 500) ErrorType.SERVER_ERROR else ErrorType.CLIENT_ERROR,
|
||||||
|
// errorCode = response.code,
|
||||||
|
// errorMsg = "HTTP错误:${response.code}"
|
||||||
|
// )
|
||||||
|
// throw e
|
||||||
|
// }
|
||||||
|
// return response
|
||||||
|
// } catch (e: Exception) {
|
||||||
|
// // 捕获各类网络异常并转换为自定义异常
|
||||||
|
// val apiException = when (e) {
|
||||||
|
// is UnknownHostException -> ApiException(ErrorType.NETWORK_ERROR, errorMsg = "网络未连接,请检查网络")
|
||||||
|
// is SocketTimeoutException -> ApiException(ErrorType.TIMEOUT_ERROR, errorMsg = "请求超时,请稍后重试")
|
||||||
|
// is ConnectTimeoutException -> ApiException(ErrorType.TIMEOUT_ERROR, errorMsg = "连接超时,请检查网络")
|
||||||
|
// is IOException -> ApiException(ErrorType.NETWORK_ERROR, errorMsg = "网络异常:${e.message ?: "未知IO错误"}")
|
||||||
|
// is ApiException -> e // 已转换的异常直接抛出
|
||||||
|
// else -> ApiException(ErrorType.UNKNOWN_ERROR, errorMsg = "未知错误:${e.message ?: "未知"}", throwable = e)
|
||||||
|
// }
|
||||||
|
// throw apiException
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.util.Log
|
||||||
|
import com.shuwei.dish.match.http.UrlConfig
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.logging.HttpLoggingInterceptor
|
||||||
|
import retrofit2.Retrofit
|
||||||
|
import retrofit2.converter.gson.GsonConverterFactory
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
import javax.net.ssl.*
|
||||||
|
import java.security.SecureRandom
|
||||||
|
import java.security.cert.X509Certificate
|
||||||
|
import kotlin.apply
|
||||||
|
import kotlin.jvm.java
|
||||||
|
|
||||||
|
val apiService: ApiService = Retrofit.Builder()
|
||||||
|
.baseUrl(UrlConfig.BASE_URL)
|
||||||
|
// .baseUrl(UrlConfig.DEVICE_BASE_URL)
|
||||||
|
.client(HttpManager.instance.client)
|
||||||
|
.addConverterFactory(GsonConverterFactory.create())
|
||||||
|
.build()
|
||||||
|
.create(ApiService::class.java)
|
||||||
|
|
||||||
|
//val apiService2: ApiService2 = Retrofit.Builder()
|
||||||
|
// .baseUrl(UrlConfig.BASE_URL)
|
||||||
|
//// .baseUrl(UrlConfig.DEVICE_BASE_URL)
|
||||||
|
// .client(HttpManager.instance.client)
|
||||||
|
// .addConverterFactory(GsonConverterFactory.create())
|
||||||
|
// .build()
|
||||||
|
// .create(ApiService2::class.java)
|
||||||
|
|
||||||
|
class HttpManager private constructor() {
|
||||||
|
val client: OkHttpClient by lazy {
|
||||||
|
OkHttpClient.Builder()
|
||||||
|
.apply {
|
||||||
|
connectTimeout(15, TimeUnit.SECONDS)
|
||||||
|
readTimeout(30, TimeUnit.SECONDS)
|
||||||
|
writeTimeout(15, TimeUnit.SECONDS)
|
||||||
|
sslSocketFactory(createSSLSocketFactory(), TrustAllCerts())
|
||||||
|
hostnameVerifier { _, _ -> true }
|
||||||
|
addNetworkInterceptor(HttpLoggingInterceptor(logger = {
|
||||||
|
Log.d("HttpManager", "okhttp logger ==>${it}")
|
||||||
|
}).also {
|
||||||
|
it.level = HttpLoggingInterceptor.Level.BODY
|
||||||
|
})
|
||||||
|
addInterceptor(RequestInterceptor())
|
||||||
|
// addInterceptor(ExceptionInterceptor())
|
||||||
|
}
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val instance by lazy { HttpManager() }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 信任所有证书的TrustManager实现
|
||||||
|
@SuppressLint("CustomX509TrustManager")
|
||||||
|
class TrustAllCerts : X509TrustManager {
|
||||||
|
@SuppressLint("TrustAllX509TrustManager")
|
||||||
|
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("TrustAllX509TrustManager")
|
||||||
|
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getAcceptedIssuers(): Array<X509Certificate> = arrayOf()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建信任所有证书的SSLSocketFactory
|
||||||
|
fun createSSLSocketFactory(): SSLSocketFactory {
|
||||||
|
val sslContext = SSLContext.getInstance("TLS").apply {
|
||||||
|
init(null, arrayOf(TrustAllCerts()), SecureRandom())
|
||||||
|
}
|
||||||
|
return sslContext.socketFactory
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
import androidx.lifecycle.ViewModel
|
||||||
|
import androidx.lifecycle.viewModelScope
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
class NetViewModel : ViewModel() {
|
||||||
|
|
||||||
|
fun submitCookFood(
|
||||||
|
entity: CookFoodEntity,
|
||||||
|
onSuccess: (Any?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.submitCookFood(param = entity)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getFoodDetail(
|
||||||
|
foodId: String,
|
||||||
|
onSuccess: (CookFoodEntity?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.getFoodDetail(foodId = foodId)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun searchFoodList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<FoodRecord>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.searchFoodList(param = param)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSamplingList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<FoodRecord>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.getSamplingList(param = param)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun queryGoodsList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<CookFoodGoodsEntity>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.queryGoodsList(param = param)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun querySeasoningList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<SeasoningEntity>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
request(
|
||||||
|
onRequest = {
|
||||||
|
apiService.querySeasoningList(param = param)
|
||||||
|
},
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
import com.shuwei.dish.match.base.GlobalData
|
||||||
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.Response
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求拦截器
|
||||||
|
*/
|
||||||
|
class RequestInterceptor : Interceptor {
|
||||||
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
|
val originalRequest = chain.request()
|
||||||
|
val requestBuilder = originalRequest.newBuilder()
|
||||||
|
.header("X-Access-Token", "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjYW50ZWVuSWQiOiJiZTE1NDgzMS0zNDY2LTNiYTItYTJlYS01NzY1MmM5MTlmZWQiLCJ0eXBlIjoiNCIsInVzZXJJZCI6IjAwMDAwMDAwMDAwMDAwMDAwMDEifQ.sN40cOC-O5WQFrF4IDUs8fFlkNdUKLbJt_rHyTsgYYM")
|
||||||
|
.header("X-DEVICE-CODE", GlobalData.deviceId)
|
||||||
|
.header("authorization", "57ee87183f2a4fa59683ec9ef41c8f5d")
|
||||||
|
|
||||||
|
val newRequest = requestBuilder.build()
|
||||||
|
|
||||||
|
return chain.proceed(newRequest)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.shuwei.dish.match.net
|
||||||
|
|
||||||
|
data class ApiResponse<T>(
|
||||||
|
val code: String,
|
||||||
|
val msg: String? = "",
|
||||||
|
val data: T? = null
|
||||||
|
) {
|
||||||
|
fun isSuccess() = code == "00000"
|
||||||
|
}
|
||||||
@@ -9,9 +9,7 @@ import android.text.style.LineHeightSpan
|
|||||||
import android.text.style.StyleSpan
|
import android.text.style.StyleSpan
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.util.SparseIntArray
|
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.core.graphics.toColorInt
|
import androidx.core.graphics.toColorInt
|
||||||
import androidx.core.view.forEach
|
import androidx.core.view.forEach
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
@@ -34,10 +32,9 @@ import com.shuwei.dish.match.utils.ext.toast
|
|||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
import com.shuwei.dish.match.R
|
|
||||||
import com.shuwei.dish.match.adapter.TextCellAdapter
|
import com.shuwei.dish.match.adapter.TextCellAdapter
|
||||||
import com.shuwei.dish.match.databinding.ActivityDeviceConfigBinding
|
import com.shuwei.dish.match.databinding.ActivityDeviceConfigBinding
|
||||||
import com.shuwei.dish.match.dialog.BottomDialog2
|
import com.shuwei.dish.match.dialog.SeasoningSearchDialog
|
||||||
import com.shuwei.dish.match.utils.SpTool
|
import com.shuwei.dish.match.utils.SpTool
|
||||||
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
||||||
import com.shuwei.dish.match.utils.ext.gone
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
@@ -46,7 +43,7 @@ class DeviceConfigActivity : BaseActivity() {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
const val TAG = "DeviceSettingActivity"
|
const val TAG = "DeviceConfigActivity"
|
||||||
|
|
||||||
const val COOK_MODE = "cookMode"
|
const val COOK_MODE = "cookMode"
|
||||||
|
|
||||||
@@ -123,7 +120,9 @@ class DeviceConfigActivity : BaseActivity() {
|
|||||||
binding.rbModeSampling.isChecked = false
|
binding.rbModeSampling.isChecked = false
|
||||||
loadCookSpan(isClicked = true)
|
loadCookSpan(isClicked = true)
|
||||||
loadSamplingSpan()
|
loadSamplingSpan()
|
||||||
startActivity<SelectDishActivity> { }
|
startActivity<SelectDishActivity> {
|
||||||
|
putExtra(SelectDishActivity.IS_CONFIG_PAGE, true)
|
||||||
|
}
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
binding.rbModeSampling.setOnClickListener {
|
binding.rbModeSampling.setOnClickListener {
|
||||||
@@ -132,7 +131,8 @@ class DeviceConfigActivity : BaseActivity() {
|
|||||||
binding.rbModeSampling.isChecked = true
|
binding.rbModeSampling.isChecked = true
|
||||||
loadCookSpan()
|
loadCookSpan()
|
||||||
loadSamplingSpan(isClicked = true)
|
loadSamplingSpan(isClicked = true)
|
||||||
startActivity<SamplingListActivity> { }
|
startActivity<SamplingListActivity> {
|
||||||
|
putExtra(SamplingListActivity.IS_CONFIG_PAGE, true) }
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
addWeighListener()
|
addWeighListener()
|
||||||
@@ -250,7 +250,7 @@ class DeviceConfigActivity : BaseActivity() {
|
|||||||
private fun clickGridItem(sort: Int, entity: SeasoningEntity) {
|
private fun clickGridItem(sort: Int, entity: SeasoningEntity) {
|
||||||
val currentAddress = AddressUtil.getWeighAddressArray().get(sort)
|
val currentAddress = AddressUtil.getWeighAddressArray().get(sort)
|
||||||
// val seasoningEntity = list.first{it.sort == sort}
|
// val seasoningEntity = list.first{it.sort == sort}
|
||||||
BottomDialog2(
|
SeasoningSearchDialog(
|
||||||
weighIndex = sort,
|
weighIndex = sort,
|
||||||
weighAddress = currentAddress,
|
weighAddress = currentAddress,
|
||||||
clickName = entity.goodsName
|
clickName = entity.goodsName
|
||||||
|
|||||||
@@ -5,7 +5,9 @@ import android.content.Intent
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
import com.shuwei.dish.match.adapter.DishPartAdapter
|
import com.shuwei.dish.match.adapter.DishPartAdapter
|
||||||
@@ -14,13 +16,15 @@ import com.shuwei.dish.match.base.BaseApp
|
|||||||
import com.shuwei.dish.match.databinding.ActivityDishSamplingBinding
|
import com.shuwei.dish.match.databinding.ActivityDishSamplingBinding
|
||||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||||
import com.shuwei.dish.match.db.AppRepository
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
import com.shuwei.dish.match.dialog.BottomDialog
|
import com.shuwei.dish.match.dialog.FoodSearchDialog
|
||||||
import com.shuwei.dish.match.dialog.CommonDialog
|
import com.shuwei.dish.match.dialog.CommonDialog
|
||||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
|
import com.shuwei.dish.match.net.NetViewModel
|
||||||
import com.shuwei.dish.match.utils.AddressUtil
|
import com.shuwei.dish.match.utils.AddressUtil
|
||||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||||
|
import com.shuwei.dish.match.utils.SwipeCallback
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||||
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
||||||
@@ -165,6 +169,13 @@ class DishSamplingActivity : BaseActivity() {
|
|||||||
layoutManager =
|
layoutManager =
|
||||||
LinearLayoutManager(this@DishSamplingActivity, LinearLayoutManager.VERTICAL, false)
|
LinearLayoutManager(this@DishSamplingActivity, LinearLayoutManager.VERTICAL, false)
|
||||||
adapter = dishAdapter
|
adapter = dishAdapter
|
||||||
|
val itemTouchHelper = ItemTouchHelper(SwipeCallback(dishAdapter) { position ->
|
||||||
|
list.removeAt(position)
|
||||||
|
dishAdapter.notifyItemRemoved(position)
|
||||||
|
dishAdapter.notifyItemRangeChanged(position, list.size - position)
|
||||||
|
toast("已删除")
|
||||||
|
})
|
||||||
|
itemTouchHelper.attachToRecyclerView(this)
|
||||||
}
|
}
|
||||||
binding.etInputDishType.addOnActionSearchListener {
|
binding.etInputDishType.addOnActionSearchListener {
|
||||||
searchDishType()
|
searchDishType()
|
||||||
@@ -266,7 +277,7 @@ class DishSamplingActivity : BaseActivity() {
|
|||||||
|
|
||||||
private fun searchDishType() {
|
private fun searchDishType() {
|
||||||
val inputText = binding.etInputDishType.text.toString().trim()
|
val inputText = binding.etInputDishType.text.toString().trim()
|
||||||
BottomDialog(goodsType = 0, defGoodsName = inputText).show(this@DishSamplingActivity) { item ->
|
FoodSearchDialog(defGoodsName = inputText).show(this@DishSamplingActivity) { item ->
|
||||||
val filterResult = list.firstOrNull { it.goodsName == item.goodsName }
|
val filterResult = list.firstOrNull { it.goodsName == item.goodsName }
|
||||||
if (filterResult != null) {
|
if (filterResult != null) {
|
||||||
toast("不允许重复添加同一食材")
|
toast("不允许重复添加同一食材")
|
||||||
@@ -283,6 +294,7 @@ class DishSamplingActivity : BaseActivity() {
|
|||||||
relateionType = item.relateionType ?: 0
|
relateionType = item.relateionType ?: 0
|
||||||
goodsOrRelationCode = item.goodsOrRelationCode
|
goodsOrRelationCode = item.goodsOrRelationCode
|
||||||
|
|
||||||
|
isNewDishType = true
|
||||||
// TODO: 待定
|
// TODO: 待定
|
||||||
//allEdible = item.allEdible
|
//allEdible = item.allEdible
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,17 +11,11 @@ import com.shuwei.dish.match.base.BaseActivity
|
|||||||
import com.shuwei.dish.match.base.BaseApp
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
import com.shuwei.dish.match.databinding.ActivityFoodSearchBinding
|
import com.shuwei.dish.match.databinding.ActivityFoodSearchBinding
|
||||||
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
|
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
|
||||||
|
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.entity.FoodRecordBean
|
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||||
import com.shuwei.dish.match.utils.ext.gone
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
@@ -40,7 +34,7 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
|
|
||||||
private var list: MutableList<FoodRecord> = mutableListOf()
|
private var list: MutableList<FoodRecord> = mutableListOf()
|
||||||
private var pageType = 0
|
private var pageType = 0
|
||||||
private var dinnerType = "0"
|
private var dinnerType = "1"
|
||||||
private val recordAdapter by lazy {
|
private val recordAdapter by lazy {
|
||||||
FoodRecordAdapter(list).apply {
|
FoodRecordAdapter(list).apply {
|
||||||
isStateViewEnable = true
|
isStateViewEnable = true
|
||||||
@@ -68,7 +62,7 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
binding = ActivityFoodSearchBinding.inflate(layoutInflater)
|
binding = ActivityFoodSearchBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
pageType = intent.getIntExtra(PAGE_TYPE, 0)
|
pageType = intent.getIntExtra(PAGE_TYPE, 0)
|
||||||
dinnerType = intent.getStringExtra(DINNER_TYPE)?:"0"
|
dinnerType = intent.getStringExtra(DINNER_TYPE) ?: "0"
|
||||||
setHeaderBackground()
|
setHeaderBackground()
|
||||||
foodName = intent.getStringExtra(FOOD_NAME)
|
foodName = intent.getStringExtra(FOOD_NAME)
|
||||||
binding.etInputDish.setText(foodName)
|
binding.etInputDish.setText(foodName)
|
||||||
@@ -134,7 +128,7 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var pageNo = 1
|
private var pageNo = 1
|
||||||
private var pageSize = 100
|
private var pageSize = 10
|
||||||
fun getDinnerTypeText(): String {
|
fun getDinnerTypeText(): String {
|
||||||
return when (dinnerType) {
|
return when (dinnerType) {
|
||||||
"1" -> "早餐"
|
"1" -> "早餐"
|
||||||
@@ -143,53 +137,95 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
else -> "早餐"
|
else -> "早餐"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun queryListInfo(input: String) {
|
private fun queryListInfo(input: String) {
|
||||||
showLoading()
|
showLoading()
|
||||||
val map = mutableMapOf(
|
// val map = mutableMapOf(
|
||||||
|
// "foodName" to input.trim(),
|
||||||
|
// "pageNo" to "$pageNo",
|
||||||
|
// "pageSize" to "$pageSize",
|
||||||
|
// "canteenId" to BaseApp.canteenId
|
||||||
|
// "dinnerType" to getDinnerTypeText()
|
||||||
|
// )
|
||||||
|
// val sb = StringBuilder(UrlConfig.QUERY_FOOD_LIST).apply {
|
||||||
|
// append("?")
|
||||||
|
// map.forEach { (key, value) -> append("$key=$value&") }
|
||||||
|
// }
|
||||||
|
// sb.deleteCharAt(sb.length - 1)
|
||||||
|
// HttpUtil.get(
|
||||||
|
// url = sb.toString(),
|
||||||
|
// doSuccess = {
|
||||||
|
// delayDismissLoading()
|
||||||
|
// finishRefresh()
|
||||||
|
// binding.refreshLayout.run {
|
||||||
|
// setEnableRefresh(true)
|
||||||
|
// }
|
||||||
|
// val json = it.toJsonString()
|
||||||
|
// val recordBean: FoodRecordBean? = json.toObject<FoodRecordBean>()
|
||||||
|
// if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
||||||
|
//// toast("暂未搜索到相关菜品信息")
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// loadEmptyView()
|
||||||
|
// }
|
||||||
|
// return@get
|
||||||
|
// }
|
||||||
|
// val records = recordBean.records
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// list.clear()
|
||||||
|
// }
|
||||||
|
// list.addAll(records!!)
|
||||||
|
// recordAdapter.notifyDataSetChanged()
|
||||||
|
// val isLoadMoreEnable = records.size >= pageSize
|
||||||
|
// binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
// if (isLoadMoreEnable) {
|
||||||
|
// pageNo++
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
// doFailure = { code, msg ->
|
||||||
|
// binding.refreshLayout.run {
|
||||||
|
// setEnableRefresh(true)
|
||||||
|
// }
|
||||||
|
// toast(msg)
|
||||||
|
// delayDismissLoading()
|
||||||
|
// finishRefresh()
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// loadEmptyView()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// )
|
||||||
|
|
||||||
|
val map = mutableMapOf<String, Any>(
|
||||||
"foodName" to input.trim(),
|
"foodName" to input.trim(),
|
||||||
"pageNo" to "$pageNo",
|
"pageNum" to pageNo,
|
||||||
"pageSize" to "$pageSize",
|
"pageSize" to pageSize,
|
||||||
"canteenId" to BaseApp.canteenId
|
"placeId" to BaseApp.canteenId,
|
||||||
|
"dinnerType" to getDinnerTypeText()
|
||||||
)
|
)
|
||||||
if (dinnerType.toInt() > 0) {
|
netViewModel.searchFoodList(
|
||||||
map["dinnerType"] = getDinnerTypeText()
|
param = map,
|
||||||
}
|
onSuccess = {
|
||||||
val sb = StringBuilder(UrlConfig.QUERY_FOOD_LIST).apply {
|
|
||||||
append("?")
|
|
||||||
map.forEach { (key, value) -> append("$key=$value&") }
|
|
||||||
}
|
|
||||||
sb.deleteCharAt(sb.length - 1)
|
|
||||||
HttpUtil.get(
|
|
||||||
url = sb.toString(),
|
|
||||||
doSuccess = {
|
|
||||||
delayDismissLoading()
|
delayDismissLoading()
|
||||||
finishRefresh()
|
finishRefresh()
|
||||||
binding.refreshLayout.run {
|
binding.refreshLayout.setEnableRefresh(true)
|
||||||
setEnableRefresh(true)
|
if (it.isNullOrEmpty()) {
|
||||||
}
|
|
||||||
val json = it.toJsonString()
|
|
||||||
val recordBean: FoodRecordBean? = json.toObject<FoodRecordBean>()
|
|
||||||
if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
|
||||||
// toast("暂未搜索到相关菜品信息")
|
// toast("暂未搜索到相关菜品信息")
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
loadEmptyView()
|
loadEmptyView()
|
||||||
}
|
}
|
||||||
return@get
|
return@searchFoodList
|
||||||
}
|
}
|
||||||
val records = recordBean.records
|
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
list.clear()
|
list.clear()
|
||||||
}
|
}
|
||||||
list.addAll(records!!)
|
list.addAll(it)
|
||||||
recordAdapter.notifyDataSetChanged()
|
recordAdapter.notifyDataSetChanged()
|
||||||
val isLoadMoreEnable = records.size >= pageSize
|
val isLoadMoreEnable = it.size >= pageSize
|
||||||
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
if (isLoadMoreEnable) {
|
if (isLoadMoreEnable) {
|
||||||
pageNo++
|
pageNo++
|
||||||
}
|
}
|
||||||
},
|
}, onFailure = { code, msg ->
|
||||||
doFailure = { code, msg ->
|
|
||||||
binding.refreshLayout.run {
|
binding.refreshLayout.run {
|
||||||
setEnableRefresh(true)
|
setEnableRefresh(true)
|
||||||
}
|
}
|
||||||
@@ -199,9 +235,9 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
loadEmptyView()
|
loadEmptyView()
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun finishRefresh() {
|
private fun finishRefresh() {
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
binding.refreshLayout.finishRefresh(1200)
|
binding.refreshLayout.finishRefresh(1200)
|
||||||
@@ -211,12 +247,17 @@ class FoodSearchActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var emptyViewBinding: LayoutEmptyViewBinding? = null
|
private var emptyViewBinding: LayoutEmptyViewBinding? = null
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun loadEmptyView() {
|
private fun loadEmptyView() {
|
||||||
list.clear()
|
list.clear()
|
||||||
recordAdapter.notifyDataSetChanged()
|
recordAdapter.notifyDataSetChanged()
|
||||||
if (emptyViewBinding == null) {
|
if (emptyViewBinding == null) {
|
||||||
emptyViewBinding = LayoutEmptyViewBinding.inflate(LayoutInflater.from(this), binding.rvDishSearchList, false)
|
emptyViewBinding = LayoutEmptyViewBinding.inflate(
|
||||||
|
LayoutInflater.from(this),
|
||||||
|
binding.rvDishSearchList,
|
||||||
|
false
|
||||||
|
)
|
||||||
}
|
}
|
||||||
emptyViewBinding!!.tvContent.text = "暂无数据"
|
emptyViewBinding!!.tvContent.text = "暂无数据"
|
||||||
emptyViewBinding!!.tvSubContent.text = "可以尝试换个名称重新搜索"
|
emptyViewBinding!!.tvSubContent.text = "可以尝试换个名称重新搜索"
|
||||||
|
|||||||
@@ -11,9 +11,7 @@ import com.shuwei.dish.match.base.BaseApp
|
|||||||
import com.shuwei.dish.match.databinding.ActivityHomeBinding
|
import com.shuwei.dish.match.databinding.ActivityHomeBinding
|
||||||
import com.shuwei.dish.match.db.AppRepository
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
import com.shuwei.dish.match.entity.HomeModeBean
|
import com.shuwei.dish.match.entity.HomeModeBean
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.utils.SpTool
|
import com.shuwei.dish.match.utils.SpTool
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
|
|||||||
@@ -3,32 +3,25 @@ package com.shuwei.dish.match.ui
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.Log
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.shuwei.dish.match.base.BaseActivity
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
import com.shuwei.dish.match.base.BaseApp
|
import com.shuwei.dish.match.base.BaseApp
|
||||||
import com.shuwei.dish.match.databinding.ActivityInitBinding
|
import com.shuwei.dish.match.databinding.ActivityInitBinding
|
||||||
import com.shuwei.dish.match.db.AppRepository
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
import com.shuwei.dish.match.http.UrlConfig
|
||||||
import com.shuwei.dish.match.utils.AppUtil
|
import com.shuwei.dish.match.utils.AppUtil
|
||||||
import com.shuwei.dish.match.utils.QRCodeUtil
|
import com.shuwei.dish.match.utils.QRCodeUtil
|
||||||
import com.shuwei.dish.match.utils.SpTool
|
import com.shuwei.dish.match.utils.SpTool
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
import com.shuwei.dish.match.utils.ext.dp
|
import com.shuwei.dish.match.utils.ext.dp
|
||||||
import com.shuwei.dish.match.utils.ext.invisible
|
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
import com.shuwei.dish.match.utils.ext.toObject
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlin.toString
|
|
||||||
|
|
||||||
class InitActivity : BaseActivity() {
|
class InitActivity : BaseActivity() {
|
||||||
companion object {
|
companion object {
|
||||||
@@ -51,12 +44,11 @@ class InitActivity : BaseActivity() {
|
|||||||
BaseApp.appVersion = AppUtil.getAppVersionCode(this).toString()
|
BaseApp.appVersion = AppUtil.getAppVersionCode(this).toString()
|
||||||
|
|
||||||
// 获取 ANDROID_ID
|
// 获取 ANDROID_ID
|
||||||
var androidId =
|
// var androidId = Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
|
||||||
Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
|
// androidId = "39a7abdd06b3c7ab"
|
||||||
androidId = "39a7abdd06b3c7ab"
|
// BaseApp.deviceId = androidId
|
||||||
BaseApp.deviceId = androidId
|
// SpTool.put(SpTool.DEVICE_ID, androidId)
|
||||||
SpTool.put(SpTool.DEVICE_ID, androidId)
|
// BaseApp.configUrl = UrlConfig.BASE_URL
|
||||||
BaseApp.configUrl = UrlConfig.BASE_URL
|
|
||||||
BaseApp.canteenId = "0"
|
BaseApp.canteenId = "0"
|
||||||
// // TODO: 以上保存deviceId用于临时使用,后续改为下面注释方式
|
// // TODO: 以上保存deviceId用于临时使用,后续改为下面注释方式
|
||||||
|
|
||||||
@@ -79,16 +71,16 @@ class InitActivity : BaseActivity() {
|
|||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
|
|
||||||
binding.ivQrCode.invisible()
|
// binding.ivQrCode.invisible()
|
||||||
binding.btnInit.invisible()
|
// binding.btnInit.invisible()
|
||||||
|
|
||||||
initViewModel()
|
initViewModel()
|
||||||
WeightUtil.init()
|
WeightUtil.init()
|
||||||
WeightUtil.getWeight()
|
WeightUtil.getWeight()
|
||||||
WeightUtil.startContinuousRead()
|
WeightUtil.startContinuousRead()
|
||||||
HttpUtil.getAppToken()
|
// HttpUtil.getAppToken()
|
||||||
|
|
||||||
HttpUtil.loopGetToken = true
|
// HttpUtil.loopGetToken = true
|
||||||
countDown()
|
countDown()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -157,67 +149,71 @@ class InitActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initConfig() {
|
// private fun initConfig() {
|
||||||
binding.ivQrCode.setImageBitmap(
|
// binding.ivQrCode.setImageBitmap(
|
||||||
QRCodeUtil.generateQRCode(
|
// QRCodeUtil.generateQRCode(
|
||||||
content = BaseApp.deviceId?:"",
|
// content = BaseApp.deviceId ?: "",
|
||||||
size = 200.dp
|
// size = 200.dp
|
||||||
)
|
// )
|
||||||
)
|
// )
|
||||||
binding.btnInit.setOnClickListener {
|
// binding.btnInit.setOnClickListener {
|
||||||
HttpUtil.loopGetToken = false
|
//// HttpUtil.loopGetToken = false
|
||||||
getDeviceConfig()
|
//// getDeviceConfig()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
private fun getDeviceConfig() {
|
// private fun getDeviceConfig() {
|
||||||
val tokenUrl = "${UrlConfig.DEVICE_TOKEN}?qrcodeId=${BaseApp.deviceId}&appVersion=${BaseApp.appVersion}"
|
// val tokenUrl =
|
||||||
HttpUtil.get(url = tokenUrl, doSuccess = { token ->
|
// "${UrlConfig.DEVICE_TOKEN}?qrcodeId=${BaseApp.deviceId}&appVersion=${BaseApp.appVersion}"
|
||||||
Log.d(TAG, "initConfig: $token")
|
// HttpUtil.get(url = tokenUrl, doSuccess = { token ->
|
||||||
getConfig(token.toString())
|
// Log.d(TAG, "initConfig: $token")
|
||||||
}, doFailure = { code, msg ->
|
// getConfig(token.toString())
|
||||||
Log.d(TAG, "initConfig: $code,$msg")
|
// }, doFailure = { code, msg ->
|
||||||
})
|
// Log.d(TAG, "initConfig: $code,$msg")
|
||||||
}
|
// })
|
||||||
private fun getConfig(token: String) {
|
// }
|
||||||
val deviceConfigUrl = "${UrlConfig.DEVICE_CONFIG}?equipmentCode=${BaseApp.deviceId}&&appVersion=${BaseApp.appVersion}"
|
|
||||||
HttpUtil.get(url = deviceConfigUrl, header = mutableMapOf(
|
// private fun getConfig(token: String) {
|
||||||
"X-Access-Token" to token
|
// val deviceConfigUrl =
|
||||||
), doSuccess = {
|
// "${UrlConfig.DEVICE_CONFIG}?equipmentCode=${BaseApp.deviceId}&&appVersion=${BaseApp.appVersion}"
|
||||||
Log.d(TAG, "getDeviceConfig: $it")
|
// HttpUtil.get(
|
||||||
val data = it.toJsonString()
|
// url = deviceConfigUrl, header = mutableMapOf(
|
||||||
val checkResult = checkConfigData(data)
|
// "X-Access-Token" to token
|
||||||
if (checkResult.not()) {
|
// ), doSuccess = {
|
||||||
toast("初始化设备失败,请稍后重试")
|
// Log.d(TAG, "getDeviceConfig: $it")
|
||||||
return@get
|
// val data = it.toJsonString()
|
||||||
}
|
// val checkResult = checkConfigData(data)
|
||||||
HttpUtil.loopGetToken = true
|
// if (checkResult.not()) {
|
||||||
SpTool.put(SpTool.DEVICE_CONFIG_CACHE, data)
|
// toast("初始化设备失败,请稍后重试")
|
||||||
startActivity<HomeActivity>()
|
// return@get
|
||||||
// finish()
|
// }
|
||||||
}, doFailure = { code, msg ->
|
// HttpUtil.loopGetToken = true
|
||||||
Log.d(TAG, "getDeviceConfig: $code,$msg")
|
// SpTool.put(SpTool.DEVICE_CONFIG_CACHE, data)
|
||||||
toast("初始化设备失败,请稍后重试,code=${code},msg=${msg}")
|
// startActivity<HomeActivity>()
|
||||||
})
|
//// finish()
|
||||||
}
|
// }, doFailure = { code, msg ->
|
||||||
|
// Log.d(TAG, "getDeviceConfig: $code,$msg")
|
||||||
|
// toast("初始化设备失败,请稍后重试,code=${code},msg=${msg}")
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
|
||||||
data class DeviceConfigBean(
|
data class DeviceConfigBean(
|
||||||
var appPackageUrl:String? = null,
|
var appPackageUrl: String? = null,
|
||||||
var canteenId:String? = null
|
var canteenId: String? = null
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun checkConfigData(data: String): Boolean {
|
// private fun checkConfigData(data: String): Boolean {
|
||||||
if (data.isBlank()) {
|
// if (data.isBlank()) {
|
||||||
return false
|
// return false
|
||||||
}
|
// }
|
||||||
val config = data.toObject<DeviceConfigBean?>()
|
// val config = data.toObject<DeviceConfigBean?>()
|
||||||
if (config == null) {
|
// if (config == null) {
|
||||||
return false
|
// return false
|
||||||
}
|
// }
|
||||||
BaseApp.configUrl = config.appPackageUrl?:""
|
// BaseApp.configUrl = config.appPackageUrl ?: ""
|
||||||
BaseApp.canteenId = config.canteenId?:""
|
// BaseApp.canteenId = config.canteenId ?: ""
|
||||||
return true
|
// return true
|
||||||
}
|
// }
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
WeightUtil.stopContinuousRead()
|
WeightUtil.stopContinuousRead()
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package com.shuwei.dish.match.ui
|
package com.shuwei.dish.match.ui
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.activity.viewModels
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
@@ -12,13 +12,12 @@ import com.shuwei.dish.match.adapter.DishPartAdapter
|
|||||||
import com.shuwei.dish.match.base.BaseActivity
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
import com.shuwei.dish.match.databinding.ActivityPrepareCookBinding
|
import com.shuwei.dish.match.databinding.ActivityPrepareCookBinding
|
||||||
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding
|
||||||
import com.shuwei.dish.match.dialog.BottomDialog
|
import com.shuwei.dish.match.dialog.FoodSearchDialog
|
||||||
import com.shuwei.dish.match.dialog.CommonDialog
|
import com.shuwei.dish.match.dialog.CommonDialog
|
||||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
import com.shuwei.dish.match.net.NetViewModel
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.AddressUtil
|
import com.shuwei.dish.match.utils.AddressUtil
|
||||||
import com.shuwei.dish.match.utils.SwipeCallback
|
import com.shuwei.dish.match.utils.SwipeCallback
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
@@ -26,10 +25,10 @@ import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
|||||||
import com.shuwei.dish.match.utils.ext.gone
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
import com.shuwei.dish.match.utils.ext.toJsonString
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
import kotlin.getValue
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
class PrepareCookActivity : BaseActivity() {
|
class PrepareCookActivity : BaseActivity() {
|
||||||
@@ -69,6 +68,9 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
food = intent.extras?.getSerializable(FOOD_ITEM) as FoodRecord?
|
food = intent.extras?.getSerializable(FOOD_ITEM) as FoodRecord?
|
||||||
binding.tvDishName.text = food?.foodName ?: ""
|
binding.tvDishName.text = food?.foodName ?: ""
|
||||||
addViewClickListener()
|
addViewClickListener()
|
||||||
|
|
||||||
|
initRecyclerView()
|
||||||
|
|
||||||
getDishDetail()
|
getDishDetail()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,55 +86,18 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
binding.ivWeightClear.setOnClickListener {
|
binding.ivWeightClear.setOnClickListener {
|
||||||
WeightUtil.tareTwo(AddressUtil.ONE)
|
WeightUtil.tareTwo(AddressUtil.ONE)
|
||||||
}
|
}
|
||||||
binding.ivWeightAdd.setOnClickListener {
|
binding.ivWeightAdd.setOnClickListener { addWeight() }
|
||||||
if (clickIndex == -1) {
|
binding.tvAddFood.clickWithDebounce { addFood() }
|
||||||
toast("请选择菜品构成")
|
|
||||||
return@setOnClickListener
|
|
||||||
}
|
|
||||||
val clickItem = list[clickIndex]
|
|
||||||
clickItem.run {
|
|
||||||
if (isNewDishType && materialType != 1 && materialType != 2) {
|
|
||||||
toast("请选择主辅材类型")
|
|
||||||
return@setOnClickListener
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val weight = binding.tvDishPartWeight.text.toString().toDouble()
|
|
||||||
if (weight <= 0.toDouble()) {
|
|
||||||
toast("食材用量需要大于0")
|
|
||||||
return@setOnClickListener
|
|
||||||
}
|
|
||||||
Log.d(TAG, "addViewClickListener->useRealWeight=$weight")
|
|
||||||
clickItem.run {
|
|
||||||
useWeight = weight.toDouble()
|
|
||||||
isSetFinished = true
|
|
||||||
dishPartAdapter.notifyItemChanged(clickIndex)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
binding.tvAddFood.clickWithDebounce {
|
|
||||||
BottomDialog(goodsType = 0).show(this) { item ->
|
|
||||||
val filterResult = list.firstOrNull { it.goodsId == item.goodsId }
|
|
||||||
if (filterResult != null) {
|
|
||||||
toast("不允许重复添加同一食材")
|
|
||||||
return@show
|
|
||||||
}
|
|
||||||
list.add(CookFoodGoodsEntity().apply {
|
|
||||||
goodsId = item.goodsId
|
|
||||||
goodsName = item.goodsName
|
|
||||||
// materialType =
|
|
||||||
isNewDishType = true
|
|
||||||
})
|
|
||||||
onItemClick(list.size - 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
binding.btnCook.clickWithDebounce {
|
binding.btnCook.clickWithDebounce {
|
||||||
val count = list.count { it.isSetFinished.not() }
|
val count = list.count { it.isSetFinished.not() }
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
showRemindDialog()
|
showRemindDialog()
|
||||||
return@clickWithDebounce
|
return@clickWithDebounce
|
||||||
}
|
}
|
||||||
goToSubmit()
|
openSubmitPage()
|
||||||
}
|
}
|
||||||
binding.rgCook.setOnCheckedChangeListener { group, checkedId ->
|
binding.rgCook.setOnCheckedChangeListener { group, checkedId ->
|
||||||
|
if (clickIndex < 0 || clickIndex >= list.size) return@setOnCheckedChangeListener
|
||||||
val tempType =
|
val tempType =
|
||||||
if (checkedId == R.id.rbDishTypeFirst) 1 else if (checkedId == R.id.rbDishTypeSecond) 2 else -1
|
if (checkedId == R.id.rbDishTypeFirst) 1 else if (checkedId == R.id.rbDishTypeSecond) 2 else -1
|
||||||
list[clickIndex].materialType = tempType
|
list[clickIndex].materialType = tempType
|
||||||
@@ -143,14 +108,58 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun goToSubmit() {
|
private fun addWeight() {
|
||||||
|
if (clickIndex == -1) {
|
||||||
|
toast("请选择菜品构成")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val clickItem = list[clickIndex]
|
||||||
|
clickItem.run {
|
||||||
|
if (isNewDishType && materialType != 1 && materialType != 2) {
|
||||||
|
toast("请选择主辅材类型")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val weight = binding.tvDishPartWeight.text.toString().toDouble()
|
||||||
|
if (weight <= 0.toDouble()) {
|
||||||
|
toast("食材用量需要大于0")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
Log.d(TAG, "addViewClickListener->useRealWeight=$weight")
|
||||||
|
clickItem.run {
|
||||||
|
useWeight = weight
|
||||||
|
isOriginalData = false
|
||||||
|
isSetFinished = true
|
||||||
|
dishPartAdapter.notifyItemChanged(clickIndex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addFood() {
|
||||||
|
FoodSearchDialog().show(this) { item ->
|
||||||
|
val filterResult = list.firstOrNull { it.goodsId == item.goodsId }
|
||||||
|
if (filterResult != null) {
|
||||||
|
toast("不允许重复添加同一食材")
|
||||||
|
return@show
|
||||||
|
}
|
||||||
|
list.add(CookFoodGoodsEntity().apply {
|
||||||
|
goodsId = item.goodsId
|
||||||
|
goodsName = item.goodsName
|
||||||
|
// materialType =
|
||||||
|
isNewDishType = true
|
||||||
|
isOriginalData = false
|
||||||
|
})
|
||||||
|
onItemClick(list.size - 1)
|
||||||
|
binding.rvDishPartList.smoothScrollToPosition(list.size - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun openSubmitPage() {
|
||||||
getGoodsList()
|
getGoodsList()
|
||||||
if (goodsList.isNullOrEmpty()) {
|
if (goodsList.isNullOrEmpty()) {
|
||||||
toast("菜品构成信息未设置")
|
toast("无菜品构成信息")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Log.d(TAG, "goToSubmit: goodsList:${goodsList?.toJsonString()}")
|
Log.d(TAG, "goToSubmit: goodsList:${goodsList?.toJsonString()}")
|
||||||
// startActivity<SubmitDishActivity> {
|
|
||||||
startActivity<SubmitFoodActivity> {
|
startActivity<SubmitFoodActivity> {
|
||||||
putExtra(SubmitFoodActivity.GOODS_LIST, goodsList as Serializable)
|
putExtra(SubmitFoodActivity.GOODS_LIST, goodsList as Serializable)
|
||||||
putExtra(SubmitFoodActivity.FOOD_ITEM, food as Serializable)
|
putExtra(SubmitFoodActivity.FOOD_ITEM, food as Serializable)
|
||||||
@@ -161,19 +170,17 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
if (goodsList == null) {
|
if (goodsList == null) {
|
||||||
goodsList = mutableListOf()
|
goodsList = mutableListOf()
|
||||||
}
|
}
|
||||||
list.forEach {
|
list.filter { it.isSetFinished }.forEach {
|
||||||
if (it.isSetFinished) {
|
goodsList?.add(CookFoodGoodsEntity().apply {
|
||||||
goodsList?.add(CookFoodGoodsEntity().apply {
|
foodId = food!!.foodId
|
||||||
foodId = food!!.foodId
|
goodsId = it.goodsId
|
||||||
goodsId = it.goodsId
|
relateionType = it.relateionType
|
||||||
relateionType = it.relateionType
|
allEdible = it.allEdible
|
||||||
allEdible = it.allEdible
|
goodsName = it.goodsName
|
||||||
goodsName = it.goodsName
|
materialType = it.materialType
|
||||||
materialType = it.materialType
|
useWeight = it.useWeight ?: 0.toDouble()
|
||||||
useWeight = it.useWeight ?: 0.toDouble()
|
goodsOrRelationCode = it.goodsOrRelationCode
|
||||||
goodsOrRelationCode = it.goodsOrRelationCode
|
})
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +192,7 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
rightText = "确认无误"
|
rightText = "确认无误"
|
||||||
onLeftClick = { dismiss() }
|
onLeftClick = { dismiss() }
|
||||||
onRightClick = {
|
onRightClick = {
|
||||||
goToSubmit()
|
openSubmitPage()
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
onDismiss = { hideStatusBar() }
|
onDismiss = { hideStatusBar() }
|
||||||
@@ -194,38 +201,52 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
|
|
||||||
|
|
||||||
private fun getDishDetail() {
|
private fun getDishDetail() {
|
||||||
//649
|
// //649
|
||||||
val url = "${UrlConfig.DISH_DETAIL}?foodId=${food?.foodId}"
|
// val url = "${UrlConfig.DISH_DETAIL}?foodId=${food?.foodId}"
|
||||||
HttpUtil.get(
|
// HttpUtil.get(
|
||||||
url = url,
|
// url = url,
|
||||||
doSuccess = {
|
// doSuccess = {
|
||||||
val json = it.toJsonString()
|
// val json = it.toJsonString()
|
||||||
Log.d(TAG, "getDishDetail: json:$json")
|
// Log.d(TAG, "getDishDetail: json:$json")
|
||||||
val detail: CookFoodEntity? = json.toObject<CookFoodEntity>()
|
// val detail: CookFoodEntity? = json.toObject<CookFoodEntity>()
|
||||||
|
// if (detail == null) {
|
||||||
|
// toast("查询菜品信息为空")
|
||||||
|
// return@get
|
||||||
|
// }
|
||||||
|
// loadDishDetail(detail)
|
||||||
|
// }) { code, msg ->
|
||||||
|
// toast(msg)
|
||||||
|
// }
|
||||||
|
|
||||||
|
netViewModel.getFoodDetail(
|
||||||
|
food?.foodId ?: "",
|
||||||
|
onSuccess = { detail ->
|
||||||
if (detail == null) {
|
if (detail == null) {
|
||||||
toast("查询菜品信息为空")
|
toast("查询菜品信息为空")
|
||||||
return@get
|
return@getFoodDetail
|
||||||
}
|
}
|
||||||
loadDishDetail(detail)
|
loadDishDetail(detail)
|
||||||
}) { code, msg ->
|
}, onFailure = { code, msg ->
|
||||||
toast(msg)
|
toast(msg)
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun loadDishDetail(detail: CookFoodEntity) {
|
private fun loadDishDetail(detail: CookFoodEntity) {
|
||||||
val voList = detail.stFoodInfoConstituteList
|
// val voList = detail.stFoodInfoConstituteList
|
||||||
|
val voList = detail.foodConstituteList
|
||||||
if (voList.isNullOrEmpty()) {
|
if (voList.isNullOrEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//筛选出主材和辅材
|
//筛选出主材和辅材
|
||||||
val tempDate = voList.filter { it.materialType == 1 || it.materialType == 2 }
|
val tempData = voList.filter { it.materialType == 1 || it.materialType == 2 }
|
||||||
.apply {
|
.apply {
|
||||||
forEach { it.useWeight = 0.toDouble() }
|
forEach { it.useWeight = 0.toDouble() }
|
||||||
}
|
}
|
||||||
list.clear()
|
list.clear()
|
||||||
list.addAll(tempDate)
|
|
||||||
firstReqSize = list.size
|
firstReqSize = list.size
|
||||||
initRecyclerView()
|
list.addAll(tempData)
|
||||||
|
dishPartAdapter.notifyDataSetChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
private var firstReqSize = 0
|
private var firstReqSize = 0
|
||||||
@@ -245,8 +266,26 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
text = it.goodsName
|
text = it.goodsName
|
||||||
setTypeface(typeface, Typeface.BOLD)
|
setTypeface(typeface, Typeface.BOLD)
|
||||||
}
|
}
|
||||||
binding.tvDishType.text =
|
|
||||||
if (it.materialType == 1) "主材" else if (it.materialType == 2) "辅材" else ""
|
var materialType: String
|
||||||
|
when (it.materialType) {
|
||||||
|
1 -> {
|
||||||
|
materialType = "主材"
|
||||||
|
binding.rgCook.check(R.id.rbDishTypeFirst)
|
||||||
|
}
|
||||||
|
|
||||||
|
2 -> {
|
||||||
|
materialType = "辅材"
|
||||||
|
binding.rgCook.check(R.id.rbDishTypeSecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> {
|
||||||
|
materialType = ""
|
||||||
|
binding.rgCook.clearCheck()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.tvDishType.text = materialType
|
||||||
|
|
||||||
list.forEach { bean -> bean.isItemClicked = false }
|
list.forEach { bean -> bean.isItemClicked = false }
|
||||||
it.isItemClicked = true
|
it.isItemClicked = true
|
||||||
dishPartAdapter.notifyDataSetChanged()
|
dishPartAdapter.notifyDataSetChanged()
|
||||||
@@ -279,6 +318,9 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
dishPartAdapter.notifyItemRemoved(position)
|
dishPartAdapter.notifyItemRemoved(position)
|
||||||
dishPartAdapter.notifyItemRangeChanged(position, list.size - position)
|
dishPartAdapter.notifyItemRangeChanged(position, list.size - position)
|
||||||
toast("已删除")
|
toast("已删除")
|
||||||
|
if (list.isEmpty()) {
|
||||||
|
binding.tvDishShowName.text = ""
|
||||||
|
}
|
||||||
})
|
})
|
||||||
itemTouchHelper.attachToRecyclerView(this)
|
itemTouchHelper.attachToRecyclerView(this)
|
||||||
}
|
}
|
||||||
@@ -288,17 +330,23 @@ class PrepareCookActivity : BaseActivity() {
|
|||||||
@SuppressLint("GestureBackNavigation")
|
@SuppressLint("GestureBackNavigation")
|
||||||
@Deprecated("Deprecated in Java")
|
@Deprecated("Deprecated in Java")
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
if (list.size > firstReqSize) {
|
val count = list.count { !it.isOriginalData }
|
||||||
//说明有新增的食材
|
if (count > 0) {
|
||||||
saveDataRemindDialog()
|
//说明有新增或者设置重量
|
||||||
return
|
|
||||||
}
|
|
||||||
val filterResult = list.firstOrNull { (it.useWeight ?: 0.toDouble()) > 0.toDouble() }
|
|
||||||
if (filterResult != null) {
|
|
||||||
//说明有称重的数据
|
|
||||||
saveDataRemindDialog()
|
saveDataRemindDialog()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// if (list.size > firstReqSize) {
|
||||||
|
// //说明有新增的食材
|
||||||
|
// saveDataRemindDialog()
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// val filterResult = list.firstOrNull { (it.useWeight ?: 0.toDouble()) > 0.toDouble() }
|
||||||
|
// if (filterResult != null) {
|
||||||
|
// //说明有称重的数据
|
||||||
|
// saveDataRemindDialog()
|
||||||
|
// return
|
||||||
|
// }
|
||||||
super.onBackPressed()
|
super.onBackPressed()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ package com.shuwei.dish.match.ui
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.MotionEvent
|
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@@ -19,15 +17,10 @@ import com.shuwei.dish.match.db.AppRepository
|
|||||||
import com.shuwei.dish.match.dialog.DialogTool
|
import com.shuwei.dish.match.dialog.DialogTool
|
||||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.entity.FoodRecordBean
|
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.DateTimeUtil
|
import com.shuwei.dish.match.utils.DateTimeUtil
|
||||||
import com.shuwei.dish.match.utils.SwipeCallback
|
import com.shuwei.dish.match.utils.SwipeCallback
|
||||||
import com.shuwei.dish.match.utils.ext.gone
|
import com.shuwei.dish.match.utils.ext.gone
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
@@ -41,6 +34,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "SamplingListActivity"
|
private const val TAG = "SamplingListActivity"
|
||||||
const val IS_COOKING = "isCooking"
|
const val IS_COOKING = "isCooking"
|
||||||
|
const val IS_CONFIG_PAGE = "isConfigPage"
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@@ -80,10 +74,8 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
|
|
||||||
private fun initViewModel() {
|
private fun initViewModel() {
|
||||||
val db = BaseApp.instance!!.database
|
val db = BaseApp.instance!!.database
|
||||||
val factory =
|
val factory = AppFactory(AppRepository(db.appDao()))
|
||||||
AppFactory(AppRepository(db.appDao()))
|
appViewModel = ViewModelProvider(this, factory)[AppViewModel::class.java]
|
||||||
appViewModel =
|
|
||||||
ViewModelProvider(this, factory)[AppViewModel::class.java]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCookFoodList(action: (MutableList<CookFoodEntity>?) -> Unit) {
|
fun getCookFoodList(action: (MutableList<CookFoodEntity>?) -> Unit) {
|
||||||
@@ -96,6 +88,10 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
|
|
||||||
override fun onNewIntent(intent: Intent?) {
|
override fun onNewIntent(intent: Intent?) {
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
|
val isConfigPage = intent?.getBooleanExtra(IS_CONFIG_PAGE, false) ?: false
|
||||||
|
if (isConfigPage) {
|
||||||
|
return
|
||||||
|
}
|
||||||
val isCooking = intent?.getBooleanExtra(IS_COOKING, false) ?: false
|
val isCooking = intent?.getBooleanExtra(IS_COOKING, false) ?: false
|
||||||
//toast("isCooking=$isCooking")
|
//toast("isCooking=$isCooking")
|
||||||
refreshPage(isCooking)
|
refreshPage(isCooking)
|
||||||
@@ -121,14 +117,13 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onItemClick(position:Int) {
|
private fun onItemClick(position: Int) {
|
||||||
val item = list[position]
|
val item = list[position]
|
||||||
if (item.isCooking) {
|
if (item.isCooking) {
|
||||||
//烹饪中,跳到称熟重页面
|
//烹饪中,跳到称熟重页面
|
||||||
startActivity<SubmitFoodActivity> {
|
startActivity<SubmitFoodActivity> {
|
||||||
putExtra(
|
putExtra(
|
||||||
SubmitFoodActivity.FOOD_ITEM,
|
SubmitFoodActivity.FOOD_ITEM, item as Serializable
|
||||||
item as Serializable
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -166,7 +161,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
@SuppressLint("ClickableViewAccessibility")
|
@SuppressLint("ClickableViewAccessibility")
|
||||||
private fun addViewListener() {
|
private fun addViewListener() {
|
||||||
binding.btnAddSampling.setOnClickListener {
|
binding.btnAddSampling.setOnClickListener {
|
||||||
judgeDeviceConfig{
|
judgeDeviceConfig {
|
||||||
startActivity<DishSamplingActivity>()
|
startActivity<DishSamplingActivity>()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -204,33 +199,53 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
fun getSamplingList() {
|
fun getSamplingList() {
|
||||||
showLoading()
|
showLoading()
|
||||||
val map = mapOf(
|
// val map = mapOf(
|
||||||
// "foodName" to input,
|
//// "foodName" to input,
|
||||||
"pageNo" to "$pageNo",
|
// "pageNo" to "$pageNo",
|
||||||
"pageSize" to "$pageSize",
|
// "pageSize" to "$pageSize",
|
||||||
"canteenId" to BaseApp.canteenId
|
// "canteenId" to BaseApp.canteenId
|
||||||
)
|
// )
|
||||||
val sb = StringBuilder(UrlConfig.SAMPLING_LIST).apply {
|
// val sb = StringBuilder(UrlConfig.SAMPLING_LIST).apply {
|
||||||
append("?")
|
// append("?")
|
||||||
map.forEach { (key, value) -> append("$key=$value&") }
|
// map.forEach { (key, value) -> append("$key=$value&") }
|
||||||
}
|
// }
|
||||||
sb.deleteCharAt(sb.length - 1)
|
// sb.deleteCharAt(sb.length - 1)
|
||||||
HttpUtil.get(
|
// HttpUtil.get(
|
||||||
url = sb.toString(),
|
// url = sb.toString(),
|
||||||
doSuccess = {
|
// doSuccess = {
|
||||||
|
// loadDishList(it)
|
||||||
|
// }, doFailure = { code, msg ->
|
||||||
|
// binding.refreshLayout.run {
|
||||||
|
// setEnableRefresh(true)
|
||||||
|
// }
|
||||||
|
// toast(msg)
|
||||||
|
// finishRefresh()
|
||||||
|
// binding.refreshLayout.setEnableRefresh(true)
|
||||||
|
// delayDismissLoading()
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// loadEmptyView()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
|
||||||
|
netViewModel.getSamplingList(
|
||||||
|
param = mutableMapOf(
|
||||||
|
"pageNum" to pageNo,
|
||||||
|
"pageSize" to pageSize,
|
||||||
|
"placeId" to BaseApp.canteenId
|
||||||
|
),
|
||||||
|
onSuccess = {
|
||||||
loadDishList(it)
|
loadDishList(it)
|
||||||
}, doFailure = { code, msg ->
|
},
|
||||||
binding.refreshLayout.run {
|
onFailure = { code, msg ->
|
||||||
setEnableRefresh(true)
|
binding.refreshLayout.setEnableRefresh(true)
|
||||||
}
|
|
||||||
toast(msg)
|
toast(msg)
|
||||||
finishRefresh()
|
finishRefresh()
|
||||||
binding.refreshLayout.setEnableRefresh(true)
|
|
||||||
delayDismissLoading()
|
delayDismissLoading()
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
loadEmptyView()
|
loadEmptyView()
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun finishRefresh() {
|
private fun finishRefresh() {
|
||||||
@@ -249,9 +264,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
dishAdapter.notifyDataSetChanged()
|
dishAdapter.notifyDataSetChanged()
|
||||||
if (emptyViewBinding == null) {
|
if (emptyViewBinding == null) {
|
||||||
emptyViewBinding = LayoutEmptyViewBinding.inflate(
|
emptyViewBinding = LayoutEmptyViewBinding.inflate(
|
||||||
LayoutInflater.from(this),
|
LayoutInflater.from(this), binding.rvSamplingList, false
|
||||||
binding.rvSamplingList,
|
|
||||||
false
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
emptyViewBinding!!.tvContent.text = "暂无数据"
|
emptyViewBinding!!.tvContent.text = "暂无数据"
|
||||||
@@ -302,8 +315,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
val tempList = mutableListOf<FoodRecord>()
|
val tempList = mutableListOf<FoodRecord>()
|
||||||
|
|
||||||
cookFoodEntities
|
cookFoodEntities.sortedByDescending { DateTimeUtil.convert(dateStr = it.createTime) }
|
||||||
.sortedByDescending { DateTimeUtil.convert(dateStr = it.createTime) }
|
|
||||||
.forEach { entity ->
|
.forEach { entity ->
|
||||||
tempList.add(FoodRecord().apply {
|
tempList.add(FoodRecord().apply {
|
||||||
foodId = entity.foodId
|
foodId = entity.foodId
|
||||||
@@ -332,26 +344,21 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun loadDishList(data: Any) {
|
private fun loadDishList(records: MutableList<FoodRecord>?) {
|
||||||
binding.refreshLayout.run {
|
binding.refreshLayout.setEnableRefresh(true)
|
||||||
setEnableRefresh(true)
|
|
||||||
}
|
|
||||||
delayDismissLoading()
|
delayDismissLoading()
|
||||||
finishRefresh()
|
finishRefresh()
|
||||||
val json = data.toJsonString()
|
if (records.isNullOrEmpty()) {
|
||||||
val recordBean: FoodRecordBean? = json.toObject<FoodRecordBean>()
|
|
||||||
if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
|
||||||
//toast("暂未搜索到相关菜品信息")
|
//toast("暂未搜索到相关菜品信息")
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
loadEmptyView()
|
loadEmptyView()
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val records = recordBean.records
|
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
list.clear()
|
list.clear()
|
||||||
}
|
}
|
||||||
list.addAll(records!!)
|
list.addAll(records)
|
||||||
dishAdapter.notifyDataSetChanged()
|
dishAdapter.notifyDataSetChanged()
|
||||||
val isLoadMoreEnable = records.size >= pageSize
|
val isLoadMoreEnable = records.size >= pageSize
|
||||||
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
@@ -363,7 +370,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
|
|
||||||
private var configFinished = false
|
private var configFinished = false
|
||||||
|
|
||||||
fun judgeDeviceConfig(block:()-> Unit) {
|
fun judgeDeviceConfig(block: () -> Unit) {
|
||||||
if (configFinished) {
|
if (configFinished) {
|
||||||
block()
|
block()
|
||||||
return
|
return
|
||||||
@@ -390,8 +397,7 @@ class SamplingListActivity : BaseActivity() {
|
|||||||
startActivity<DeviceConfigActivity> {
|
startActivity<DeviceConfigActivity> {
|
||||||
putExtra(DeviceConfigActivity.COOK_MODE, 2)
|
putExtra(DeviceConfigActivity.COOK_MODE, 2)
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private var isVisible = false
|
private var isVisible = false
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
package com.shuwei.dish.match.ui
|
package com.shuwei.dish.match.ui
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Dialog
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.activity.viewModels
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.shuwei.dish.match.R
|
import com.shuwei.dish.match.R
|
||||||
import com.shuwei.dish.match.base.BaseActivity
|
import com.shuwei.dish.match.base.BaseActivity
|
||||||
@@ -13,6 +12,9 @@ import com.shuwei.dish.match.databinding.ActivitySelectDishBinding
|
|||||||
import com.shuwei.dish.match.db.AppRepository
|
import com.shuwei.dish.match.db.AppRepository
|
||||||
import com.shuwei.dish.match.dialog.DialogTool
|
import com.shuwei.dish.match.dialog.DialogTool
|
||||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||||
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
|
import com.shuwei.dish.match.entity.FoodRecordBean
|
||||||
|
import com.shuwei.dish.match.net.NetViewModel
|
||||||
import com.shuwei.dish.match.ui.fragment.DishListFragment
|
import com.shuwei.dish.match.ui.fragment.DishListFragment
|
||||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||||
@@ -22,12 +24,14 @@ import com.shuwei.dish.match.utils.ext.toast
|
|||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
|
import kotlin.getValue
|
||||||
|
|
||||||
class SelectDishActivity : BaseActivity() {
|
class SelectDishActivity : BaseActivity() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val IS_COOKING = "isCooking"
|
const val IS_COOKING = "isCooking"
|
||||||
const val DINNER_TYPE = "dinnerType"
|
const val DINNER_TYPE = "dinnerType"
|
||||||
|
const val IS_CONFIG_PAGE = "isConfigPage"
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var binding: ActivitySelectDishBinding
|
private lateinit var binding: ActivitySelectDishBinding
|
||||||
@@ -69,10 +73,8 @@ class SelectDishActivity : BaseActivity() {
|
|||||||
|
|
||||||
private fun initViewModel() {
|
private fun initViewModel() {
|
||||||
val db = BaseApp.instance!!.database
|
val db = BaseApp.instance!!.database
|
||||||
val factory =
|
val factory = AppFactory(AppRepository(db.appDao()))
|
||||||
AppFactory(AppRepository(db.appDao()))
|
appViewModel = ViewModelProvider(this, factory)[AppViewModel::class.java]
|
||||||
appViewModel =
|
|
||||||
ViewModelProvider(this, factory)[AppViewModel::class.java]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCookFoodList(action: (MutableList<CookFoodEntity>?) -> Unit) {
|
fun getCookFoodList(action: (MutableList<CookFoodEntity>?) -> Unit) {
|
||||||
@@ -168,6 +170,10 @@ class SelectDishActivity : BaseActivity() {
|
|||||||
override fun onNewIntent(intent: Intent?) {
|
override fun onNewIntent(intent: Intent?) {
|
||||||
super.onNewIntent(intent)
|
super.onNewIntent(intent)
|
||||||
runCatching {
|
runCatching {
|
||||||
|
val isConfigPage = intent?.getBooleanExtra(IS_CONFIG_PAGE, false) ?: false
|
||||||
|
if (isConfigPage) {
|
||||||
|
return
|
||||||
|
}
|
||||||
val isCooking = intent?.getBooleanExtra(IS_COOKING, false) ?: false
|
val isCooking = intent?.getBooleanExtra(IS_COOKING, false) ?: false
|
||||||
val lastDinnerType = intent?.getStringExtra(DINNER_TYPE) ?: "0"
|
val lastDinnerType = intent?.getStringExtra(DINNER_TYPE) ?: "0"
|
||||||
if (lastDinnerType == "1" || lastDinnerType == "2" || lastDinnerType == "3") {
|
if (lastDinnerType == "1" || lastDinnerType == "2" || lastDinnerType == "3") {
|
||||||
@@ -202,4 +208,16 @@ class SelectDishActivity : BaseActivity() {
|
|||||||
isVisible = false
|
isVisible = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun getFoodList(
|
||||||
|
param: MutableMap<String, Any>,
|
||||||
|
onSuccess: (MutableList<FoodRecord>?) -> Unit,
|
||||||
|
onFailure: (String, String) -> Unit
|
||||||
|
) {
|
||||||
|
netViewModel.searchFoodList(
|
||||||
|
param = param,
|
||||||
|
onSuccess = onSuccess,
|
||||||
|
onFailure = onFailure
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ import android.util.Log
|
|||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.util.SparseIntArray
|
import android.util.SparseIntArray
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import android.widget.TextView
|
import androidx.activity.viewModels
|
||||||
import androidx.core.util.forEach
|
import androidx.core.util.forEach
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
@@ -21,8 +21,7 @@ import com.shuwei.dish.match.entity.CookFoodEntity
|
|||||||
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.entity.SeasoningEntity
|
import com.shuwei.dish.match.entity.SeasoningEntity
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
import com.shuwei.dish.match.net.NetViewModel
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.utils.AddressUtil
|
import com.shuwei.dish.match.utils.AddressUtil
|
||||||
import com.shuwei.dish.match.utils.WeightUtil
|
import com.shuwei.dish.match.utils.WeightUtil
|
||||||
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
import com.shuwei.dish.match.utils.ext.clickWithDebounce
|
||||||
@@ -35,12 +34,13 @@ import com.shuwei.dish.match.utils.ext.toast
|
|||||||
import com.shuwei.dish.match.utils.ext.visible
|
import com.shuwei.dish.match.utils.ext.visible
|
||||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||||
|
import kotlin.getValue
|
||||||
|
|
||||||
@SuppressLint("UseSparseArrays")
|
@SuppressLint("UseSparseArrays")
|
||||||
class SubmitFoodActivity : BaseActivity() {
|
class SubmitFoodActivity : BaseActivity() {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TAG = "SubmitDishActivity"
|
const val TAG = "SubmitFoodActivity"
|
||||||
const val FOOD_ITEM = "foodItem"
|
const val FOOD_ITEM = "foodItem"
|
||||||
const val GOODS_LIST = "goodsList"
|
const val GOODS_LIST = "goodsList"
|
||||||
}
|
}
|
||||||
@@ -98,7 +98,10 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun loadSeasoningFromLocal() {
|
private fun loadSeasoningFromLocal() {
|
||||||
appViewModel.getCookFoodGoodsList(foodId = food!!.foodId!!, cookMode = food!!.cookMode) { it ->
|
appViewModel.getCookFoodGoodsList(
|
||||||
|
foodId = food!!.foodId!!,
|
||||||
|
cookMode = food!!.cookMode
|
||||||
|
) { it ->
|
||||||
goodsList = mutableListOf()
|
goodsList = mutableListOf()
|
||||||
val goodsIdList = mutableListOf<String>()
|
val goodsIdList = mutableListOf<String>()
|
||||||
//设置主辅材数据
|
//设置主辅材数据
|
||||||
@@ -175,33 +178,34 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
WeightUtil.addWeightListener(
|
WeightUtil.addWeightListener(
|
||||||
weightKey = TAG,
|
weightKey = TAG,
|
||||||
getWeight = { address, state, weight ->
|
getWeight = { address, state, weight ->
|
||||||
if (address == AddressUtil.TWO) {
|
if (address == AddressUtil.TWO) {
|
||||||
cookFoodEntity.foodWeight = weight.toDouble()
|
cookFoodEntity.foodWeight = weight.toDouble()
|
||||||
binding.tvTotalWeight.text = "${weight / 1000f}"
|
binding.tvTotalWeight.text = "${weight / 1000f}"
|
||||||
}
|
}
|
||||||
val firstWeight = firstGoodsArray.get(address, null)
|
val firstWeight = firstGoodsArray.get(address, null)
|
||||||
if (firstWeight == null) {
|
if (firstWeight == null) {
|
||||||
//未设置数据
|
//未设置数据
|
||||||
if (state != WeightUtil.STATE_STABLE) {
|
if (state != WeightUtil.STATE_STABLE) {
|
||||||
//首次记录数据需要稳定数据
|
//首次记录数据需要稳定数据
|
||||||
|
return@addWeightListener
|
||||||
|
}
|
||||||
|
firstGoodsArray.put(address, weight)
|
||||||
return@addWeightListener
|
return@addWeightListener
|
||||||
}
|
}
|
||||||
firstGoodsArray.put(address, weight)
|
var realUseWeight = firstWeight - weight
|
||||||
return@addWeightListener
|
realUseWeight = if (realUseWeight > 0) realUseWeight else 0.0
|
||||||
}
|
seasoningArray.put(address, realUseWeight.toDouble())
|
||||||
var realUseWeight = firstWeight - weight
|
|
||||||
realUseWeight = if (realUseWeight > 0) realUseWeight else 0.0
|
|
||||||
seasoningArray.put(address, realUseWeight.toDouble())
|
|
||||||
|
|
||||||
// refreshSeasoningWeight()
|
// refreshSeasoningWeight()
|
||||||
|
|
||||||
val item = seasoningItems.firstOrNull { address == addressArray[it.sort]}
|
val item = seasoningItems.firstOrNull { address == addressArray[it.sort] }
|
||||||
item?.let {
|
item?.let {
|
||||||
val lastWeight = seasoningArray.get(address) ?: 0.toDouble()
|
val lastWeight = seasoningArray.get(address) ?: 0.toDouble()
|
||||||
it.useWeight = (lastWeight + getCookingSeasoning(address)).roundedOneDecimalPlace()
|
it.useWeight =
|
||||||
updateGridData(it)
|
(lastWeight + getCookingSeasoning(address)).roundedOneDecimalPlace()
|
||||||
}
|
updateGridData(it)
|
||||||
})
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// private fun refreshSeasoningWeight() {
|
// private fun refreshSeasoningWeight() {
|
||||||
@@ -217,17 +221,18 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
// setGridData(seasoningItems)
|
// setGridData(seasoningItems)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private fun updateGridData(entity:SeasoningEntity) {
|
private fun updateGridData(entity: SeasoningEntity) {
|
||||||
val gridLayout = binding.include.root
|
val gridLayout = binding.include.root
|
||||||
val tag = entity.sort.toString()
|
val tag = entity.sort.toString()
|
||||||
val frameLayout = gridLayout.findViewWithTag<FrameLayout>(tag)
|
val frameLayout = gridLayout.findViewWithTag<FrameLayout>(tag)
|
||||||
TextCellAdapter.loadLayout(frameLayout , entity)
|
TextCellAdapter.loadLayout(frameLayout, entity)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getCookingSeasoning(address: Int): Double {
|
private fun getCookingSeasoning(address: Int): Double {
|
||||||
if (isCooking.not()) return 0.toDouble()
|
if (isCooking.not()) return 0.toDouble()
|
||||||
if (seasoningItems.isEmpty()) return 0.toDouble()
|
if (seasoningItems.isEmpty()) return 0.toDouble()
|
||||||
val weight = seasoningCookingItems?.get(weightRelateArray2.get(address))?.useWeight ?: 0.toDouble()
|
val weight =
|
||||||
|
seasoningCookingItems?.get(weightRelateArray2.get(address))?.useWeight ?: 0.toDouble()
|
||||||
return weight
|
return weight
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,12 +265,12 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
val realSeasoningData = seasoningItems
|
val realSeasoningData = seasoningItems
|
||||||
//(binding.rvSeasoning.adapter as TextCellAdapter).list
|
//(binding.rvSeasoning.adapter as TextCellAdapter).list
|
||||||
if (realSeasoningData.isEmpty() && !isCooking) {
|
if (realSeasoningData.isEmpty() && !isCooking) {
|
||||||
toast("未获取到调料信息")
|
toast("未获取到调料信息")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) {
|
if (realSeasoningData.isNotEmpty() && realSeasoningData[0].goodsId.isNullOrBlank()) {
|
||||||
toast("还未设置调料信息,请去设置页面操作")
|
toast("还未设置调料信息,请去设置页面操作")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -316,7 +321,7 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
toast("未获取到调料信息")
|
toast("未获取到调料信息")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) {
|
if (realSeasoningData.isNotEmpty() && realSeasoningData[0].goodsId.isNullOrBlank()) {
|
||||||
toast("还未设置调料信息,请去设置页面操作")
|
toast("还未设置调料信息,请去设置页面操作")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -335,8 +340,9 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cookFoodEntity.let {
|
cookFoodEntity.let {
|
||||||
it.stFoodInfoConstituteList = this@SubmitFoodActivity.goodsList
|
// it.stFoodInfoConstituteList = this@SubmitFoodActivity.goodsList
|
||||||
it.dinnerType = when(it.dinnerType) {
|
it.matchingConstituteInfoList = this@SubmitFoodActivity.goodsList
|
||||||
|
it.dinnerType = when (it.dinnerType) {
|
||||||
"1" -> "早餐"
|
"1" -> "早餐"
|
||||||
"2" -> "午餐"
|
"2" -> "午餐"
|
||||||
"3" -> "晚餐"
|
"3" -> "晚餐"
|
||||||
@@ -352,14 +358,24 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
val json = cookFoodEntity.toJsonString()
|
val json = cookFoodEntity.toJsonString()
|
||||||
Log.d(TAG, "submit: json=$json")
|
Log.d(TAG, "submit: json=$json")
|
||||||
HttpUtil.postJson(
|
// HttpUtil.postJson(
|
||||||
url = UrlConfig.SUBMIT_DISH,
|
// url = UrlConfig.SUBMIT_DISH,
|
||||||
json = json,
|
// json = json,
|
||||||
doSuccess = {
|
// doSuccess = {
|
||||||
Log.d(TAG, "submit: postJson=$it")
|
// Log.d(TAG, "submit: postJson=$it")
|
||||||
|
// submitSuccess(isSamplingData)
|
||||||
|
// }, doFailure = { code, msg ->
|
||||||
|
// Log.d(TAG, "submit: postJson:code=$code,msg=$msg")
|
||||||
|
// toast(msg)
|
||||||
|
// dismissLoading()
|
||||||
|
// })
|
||||||
|
|
||||||
|
netViewModel.submitCookFood(
|
||||||
|
entity = cookFoodEntity,
|
||||||
|
onSuccess = {
|
||||||
submitSuccess(isSamplingData)
|
submitSuccess(isSamplingData)
|
||||||
}, doFailure = { code, msg ->
|
},
|
||||||
Log.d(TAG, "submit: postJson:code=$code,msg=$msg")
|
onFailure = { code, msg ->
|
||||||
toast(msg)
|
toast(msg)
|
||||||
dismissLoading()
|
dismissLoading()
|
||||||
})
|
})
|
||||||
@@ -417,7 +433,7 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private var seasoningItems = mutableListOf<SeasoningEntity>()
|
private var seasoningItems = mutableListOf<SeasoningEntity>()
|
||||||
private var seasoningCookingItems: List<SeasoningEntity> ?= null
|
private var seasoningCookingItems: List<SeasoningEntity>? = null
|
||||||
private fun loadTextCell(list: MutableList<SeasoningEntity>) {
|
private fun loadTextCell(list: MutableList<SeasoningEntity>) {
|
||||||
seasoningItems.clear()
|
seasoningItems.clear()
|
||||||
seasoningItems.addAll(list)
|
seasoningItems.addAll(list)
|
||||||
@@ -434,8 +450,8 @@ class SubmitFoodActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initConfigData() {
|
private fun initConfigData() {
|
||||||
repeat(12) {num->
|
repeat(12) { num ->
|
||||||
val firstOne = seasoningItems.firstOrNull {it.sort == num}
|
val firstOne = seasoningItems.firstOrNull { it.sort == num }
|
||||||
if (firstOne == null) {
|
if (firstOne == null) {
|
||||||
seasoningItems.add(SeasoningEntity().also { it.sort = num })
|
seasoningItems.add(SeasoningEntity().also { it.sort = num })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,18 +13,12 @@ import com.shuwei.dish.match.base.BaseApp
|
|||||||
import com.shuwei.dish.match.base.BaseFragment
|
import com.shuwei.dish.match.base.BaseFragment
|
||||||
import com.shuwei.dish.match.databinding.FragmentDishListBinding
|
import com.shuwei.dish.match.databinding.FragmentDishListBinding
|
||||||
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
|
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
|
||||||
|
|
||||||
import com.shuwei.dish.match.entity.FoodRecord
|
import com.shuwei.dish.match.entity.FoodRecord
|
||||||
import com.shuwei.dish.match.entity.FoodRecordBean
|
|
||||||
import com.shuwei.dish.match.http.HttpUtil
|
|
||||||
import com.shuwei.dish.match.http.UrlConfig
|
|
||||||
import com.shuwei.dish.match.ui.PrepareCookActivity
|
import com.shuwei.dish.match.ui.PrepareCookActivity
|
||||||
import com.shuwei.dish.match.ui.SelectDishActivity
|
import com.shuwei.dish.match.ui.SelectDishActivity
|
||||||
import com.shuwei.dish.match.ui.SubmitFoodActivity
|
import com.shuwei.dish.match.ui.SubmitFoodActivity
|
||||||
import com.shuwei.dish.match.utils.SwipeCallback
|
import com.shuwei.dish.match.utils.SwipeCallback
|
||||||
import com.shuwei.dish.match.utils.ext.startActivity
|
import com.shuwei.dish.match.utils.ext.startActivity
|
||||||
import com.shuwei.dish.match.utils.ext.toJsonString
|
|
||||||
import com.shuwei.dish.match.utils.ext.toObject
|
|
||||||
import com.shuwei.dish.match.utils.ext.toast
|
import com.shuwei.dish.match.utils.ext.toast
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
@@ -90,13 +84,13 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup?
|
container: ViewGroup?
|
||||||
): FragmentDishListBinding {
|
): FragmentDishListBinding {
|
||||||
return FragmentDishListBinding.inflate(inflater, container, false)
|
return FragmentDishListBinding.inflate(inflater, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
activity = requireActivity() as SelectDishActivity
|
activity = requireActivity() as SelectDishActivity
|
||||||
dinnerType = arguments?.getString(DINNER_TYPE, "0")?:"0"
|
dinnerType = arguments?.getString(DINNER_TYPE, "0") ?: "0"
|
||||||
binding.rvDishList.run {
|
binding.rvDishList.run {
|
||||||
layoutManager =
|
layoutManager =
|
||||||
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
|
||||||
@@ -119,6 +113,7 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
pageNo = 1
|
pageNo = 1
|
||||||
activity.showLoading()
|
activity.showLoading()
|
||||||
getDishList()
|
getDishList()
|
||||||
|
binding.refreshLayout.setEnableRefresh(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addViewListener() {
|
private fun addViewListener() {
|
||||||
@@ -134,6 +129,7 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDishList(pageNo: Int, dinnerType: String) {
|
fun getDishList(pageNo: Int, dinnerType: String) {
|
||||||
this.pageNo = pageNo
|
this.pageNo = pageNo
|
||||||
this.dinnerType = dinnerType
|
this.dinnerType = dinnerType
|
||||||
@@ -153,40 +149,71 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
@Suppress("unchecked_cast")
|
@Suppress("unchecked_cast")
|
||||||
fun getDishList() {
|
fun getDishList() {
|
||||||
activity.showLoading()
|
activity.showLoading()
|
||||||
val map = mapOf(
|
activity.getFoodList(
|
||||||
// "foodName" to input,
|
param = mutableMapOf(
|
||||||
"dinnerType" to getDinnerTypeText(),
|
"pageNum" to pageNo,
|
||||||
"pageNo" to "$pageNo",
|
"pageSize" to pageSize,
|
||||||
"pageSize" to "$pageSize",
|
"placeId" to BaseApp.canteenId,
|
||||||
"canteenId" to BaseApp.canteenId
|
"dinnerType" to getDinnerTypeText()
|
||||||
)
|
),
|
||||||
val sb = StringBuilder(UrlConfig.QUERY_FOOD_LIST).apply {
|
onSuccess = { records ->
|
||||||
append("?")
|
activity.delayDismissLoading()
|
||||||
map.forEach { (key, value) -> append("$key=$value&") }
|
finishRefresh()
|
||||||
}
|
loadDishList(records)
|
||||||
sb.deleteCharAt(sb.length - 1)
|
},
|
||||||
HttpUtil.get(
|
onFailure = { code, msg ->
|
||||||
url = sb.toString(),
|
if (isAdded.not()) {
|
||||||
doSuccess = {
|
return@getFoodList
|
||||||
loadDishList(it)
|
|
||||||
}, doFailure = { code, msg ->
|
|
||||||
try {
|
|
||||||
if (isAdded.not()) {
|
|
||||||
return@get
|
|
||||||
}
|
|
||||||
binding.refreshLayout.run {
|
|
||||||
setEnableRefresh(true)
|
|
||||||
}
|
|
||||||
toast(msg)
|
|
||||||
finishRefresh()
|
|
||||||
if (pageNo == 1) {
|
|
||||||
loadEmptyView()
|
|
||||||
}
|
|
||||||
activity.delayDismissLoading()
|
|
||||||
} catch (e: Exception) {
|
|
||||||
e.printStackTrace()
|
|
||||||
}
|
}
|
||||||
})
|
toast(msg)
|
||||||
|
finishRefresh()
|
||||||
|
if (pageNo == 1) {
|
||||||
|
loadEmptyView()
|
||||||
|
}
|
||||||
|
activity.delayDismissLoading()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
// val map = mapOf(
|
||||||
|
//// "foodName" to input,
|
||||||
|
// "dinnerType" to getDinnerTypeText(),
|
||||||
|
// "pageNo" to "$pageNo",
|
||||||
|
// "pageSize" to "$pageSize",
|
||||||
|
// "canteenId" to BaseApp.canteenId
|
||||||
|
// )
|
||||||
|
// val sb = StringBuilder(UrlConfig.QUERY_FOOD_LIST).apply {
|
||||||
|
// append("?")
|
||||||
|
// map.forEach { (key, value) -> append("$key=$value&") }
|
||||||
|
// }
|
||||||
|
// sb.deleteCharAt(sb.length - 1)
|
||||||
|
// HttpUtil.get(
|
||||||
|
// url = sb.toString(),
|
||||||
|
// doSuccess = { data ->
|
||||||
|
// binding.refreshLayout.run {
|
||||||
|
// setEnableRefresh(true)
|
||||||
|
// }
|
||||||
|
// activity.delayDismissLoading()
|
||||||
|
// finishRefresh()
|
||||||
|
// val json = data.toJsonString()
|
||||||
|
// val recordBean: FoodRecordBean? = json.toObject<FoodRecordBean>()
|
||||||
|
// loadDishList(recordBean)
|
||||||
|
// }, doFailure = { code, msg ->
|
||||||
|
// try {
|
||||||
|
// if (isAdded.not()) {
|
||||||
|
// return@get
|
||||||
|
// }
|
||||||
|
// binding.refreshLayout.run {
|
||||||
|
// setEnableRefresh(true)
|
||||||
|
// }
|
||||||
|
// toast(msg)
|
||||||
|
// finishRefresh()
|
||||||
|
// if (pageNo == 1) {
|
||||||
|
// loadEmptyView()
|
||||||
|
// }
|
||||||
|
// activity.delayDismissLoading()
|
||||||
|
// } catch (e: Exception) {
|
||||||
|
// e.printStackTrace()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
|
|
||||||
private var emptyViewBinding: LayoutEmptyViewBinding? = null
|
private var emptyViewBinding: LayoutEmptyViewBinding? = null
|
||||||
@@ -194,6 +221,8 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun loadEmptyView() {
|
private fun loadEmptyView() {
|
||||||
try {
|
try {
|
||||||
|
binding.refreshLayout.setEnableRefresh(true)
|
||||||
|
binding.refreshLayout.setEnableLoadMore(false)
|
||||||
list.clear()
|
list.clear()
|
||||||
dishAdapter.notifyDataSetChanged()
|
dishAdapter.notifyDataSetChanged()
|
||||||
if (emptyViewBinding == null) {
|
if (emptyViewBinding == null) {
|
||||||
@@ -233,7 +262,7 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
if (food != null) {
|
if (food != null) {
|
||||||
food.isCooking = true
|
food.isCooking = true
|
||||||
food.sort = index
|
food.sort = index
|
||||||
food.dinnerType = entity.dinnerType?:"0"
|
food.dinnerType = entity.dinnerType ?: "0"
|
||||||
tempList.add(food)
|
tempList.add(food)
|
||||||
} else {
|
} else {
|
||||||
//当前查询到的list不包括本地数据id,可能数据在很多页以后了,暂时只能直接构造数据
|
//当前查询到的list不包括本地数据id,可能数据在很多页以后了,暂时只能直接构造数据
|
||||||
@@ -242,7 +271,7 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
foodId = entity.foodId,
|
foodId = entity.foodId,
|
||||||
foodName = entity.foodName,
|
foodName = entity.foodName,
|
||||||
sort = index,
|
sort = index,
|
||||||
dinnerType = entity.dinnerType?:"0",
|
dinnerType = entity.dinnerType ?: "0",
|
||||||
isCooking = true
|
isCooking = true
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -255,30 +284,22 @@ class DishListFragment : BaseFragment<FragmentDishListBinding>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun loadDishList(data: Any) {
|
private fun loadDishList(records: MutableList<FoodRecord>?) {
|
||||||
try {
|
try {
|
||||||
if (isAdded.not()) {
|
if (isAdded.not()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
binding.refreshLayout.run {
|
if (records.isNullOrEmpty()) {
|
||||||
setEnableRefresh(true)
|
|
||||||
}
|
|
||||||
activity.delayDismissLoading()
|
|
||||||
finishRefresh()
|
|
||||||
val json = data.toJsonString()
|
|
||||||
val recordBean: FoodRecordBean? = json.toObject<FoodRecordBean>()
|
|
||||||
if (recordBean == null || recordBean.records.isNullOrEmpty()) {
|
|
||||||
//toast("暂未搜索到相关菜品信息")
|
//toast("暂未搜索到相关菜品信息")
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
loadEmptyView()
|
loadEmptyView()
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val records = recordBean.records
|
|
||||||
if (pageNo == 1) {
|
if (pageNo == 1) {
|
||||||
list.clear()
|
list.clear()
|
||||||
}
|
}
|
||||||
list.addAll(records!!)
|
list.addAll(records)
|
||||||
dishAdapter.notifyDataSetChanged()
|
dishAdapter.notifyDataSetChanged()
|
||||||
val isLoadMoreEnable = records.size >= pageSize
|
val isLoadMoreEnable = records.size >= pageSize
|
||||||
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable)
|
||||||
|
|||||||
@@ -69,7 +69,8 @@ object WeightUtil {
|
|||||||
|
|
||||||
fun tareTwo(address: Int) {
|
fun tareTwo(address: Int) {
|
||||||
try {
|
try {
|
||||||
Weigher2.tareTwo(address)
|
//Weigher2.tareTwo(address)
|
||||||
|
Weigher2.zeroTwo(address)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle">
|
||||||
|
<solid android:color="#f0aaf0"/>
|
||||||
|
<size android:width="2dp" android:height="100dp"/>
|
||||||
|
</shape>
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout 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"
|
|
||||||
tools:background="@drawable/bg_other_page">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="106dp"
|
|
||||||
android:paddingStart="30dp"
|
|
||||||
android:paddingEnd="30dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="start|center_vertical"
|
|
||||||
android:text="菜品模式设置"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvSetting"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="end|center_vertical"
|
|
||||||
android:text="配置终端默认模式"
|
|
||||||
android:textColor="@color/gray_b4"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.divider.MaterialDivider
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/gray_eb" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/modeRadioGroup"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbModeCook"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="190dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:button="@null"
|
|
||||||
android:drawableEnd="@drawable/mode_select"
|
|
||||||
android:textSize="36sp"
|
|
||||||
tools:text="制作模式" />
|
|
||||||
|
|
||||||
<com.google.android.material.divider.MaterialDivider
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/gray_eb" />
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbModeSampling"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="190dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:button="@null"
|
|
||||||
android:drawableEnd="@drawable/mode_select"
|
|
||||||
android:textSize="36sp"
|
|
||||||
tools:text="采样模式" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.divider.MaterialDivider
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/gray_eb" />
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbModeQuality"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="190dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:button="@null"
|
|
||||||
android:drawableEnd="@drawable/ic_dish_disable"
|
|
||||||
android:enabled="false"
|
|
||||||
android:textColor="@color/gray_b4"
|
|
||||||
android:textSize="36sp"
|
|
||||||
tools:text="品控模式" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp">
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="start"
|
|
||||||
android:text="@string/seasoning_setting"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:layout_marginEnd="15dp"
|
|
||||||
android:text="@string/seasoning_setting2"
|
|
||||||
android:textColor="@color/gray_b4"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="20dp">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/rvSeasoning"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:layout_marginStart="23dp"
|
|
||||||
android:layout_marginEnd="22dp"
|
|
||||||
android:overScrollMode="never"
|
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
|
||||||
app:spanCount="3"
|
|
||||||
tools:itemCount="15"
|
|
||||||
tools:listitem="@layout/list_item_cell" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvRightBottomCell"
|
|
||||||
android:layout_width="467dp"
|
|
||||||
android:layout_height="255dp"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:background="@drawable/selector_text_cell"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="28sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="食盐" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:layout_marginStart="30dp"-->
|
|
||||||
<!-- android:layout_marginTop="10dp"-->
|
|
||||||
<!-- android:layout_marginEnd="30dp"-->
|
|
||||||
<!-- android:layout_marginBottom="30dp"-->
|
|
||||||
<!-- android:gravity="bottom"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:id="@+id/btnCancel"-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:background="@drawable/ripple_effect_light"-->
|
|
||||||
<!-- android:gravity="center"-->
|
|
||||||
<!-- android:text="取消"-->
|
|
||||||
<!-- android:textColor="@color/dish_green"-->
|
|
||||||
<!-- android:textSize="32sp"-->
|
|
||||||
<!-- android:textStyle="bold"-->
|
|
||||||
<!-- tools:ignore="HardcodedText" />-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:id="@+id/btnConfirm"-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_marginStart="30dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:background="@drawable/ripple_effect_green"-->
|
|
||||||
<!-- android:gravity="center"-->
|
|
||||||
<!-- android:text="确定"-->
|
|
||||||
<!-- android:textColor="@color/white"-->
|
|
||||||
<!-- android:textSize="32sp"-->
|
|
||||||
<!-- android:textStyle="bold"-->
|
|
||||||
<!-- tools:ignore="HardcodedText" />-->
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginStart="30dp"
|
android:layout_marginStart="30dp"
|
||||||
android:layout_marginTop="30dp"
|
android:layout_marginTop="0dp"
|
||||||
android:layout_marginEnd="30dp"
|
android:layout_marginEnd="30dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/shape_white_30_corners"
|
android:background="@drawable/shape_white_30_corners"
|
||||||
@@ -262,15 +262,16 @@
|
|||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rvDishPartList"
|
android:id="@+id/rvDishPartList"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="20dp"
|
android:layout_marginBottom="20dp"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
tools:itemCount="3"
|
tools:itemCount="3"
|
||||||
tools:listitem="@layout/list_item_dish_cook" />
|
tools:listitem="@layout/list_item_dish_cook"
|
||||||
|
android:scrollbars="vertical"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/btnCook"
|
android:id="@+id/btnCook"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="90dp"
|
android:layout_height="90dp"
|
||||||
@@ -280,9 +281,10 @@
|
|||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="32sp"
|
android:textSize="32sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:background="@drawable/ripple_effect_green"
|
android:background="@drawable/shape_green_bg"
|
||||||
android:clickable="true" />
|
android:clickable="true" />
|
||||||
|
|
||||||
|
<!-- android:background="@drawable/ripple_effect_green"-->
|
||||||
<!-- android:background="@drawable/shape_green_bg"-->
|
<!-- android:background="@drawable/shape_green_bg"-->
|
||||||
<!-- android:background="?attr/selectableItemBackground"-->
|
<!-- android:background="?attr/selectableItemBackground"-->
|
||||||
<!-- android:clickable="true"-->
|
<!-- android:clickable="true"-->
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
tools:ignore="HardcodedText"
|
tools:ignore="HardcodedText"
|
||||||
android:visibility="visible"/>
|
android:visibility="invisible"/>
|
||||||
|
|
||||||
<Space
|
<Space
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
@@ -45,6 +45,7 @@
|
|||||||
android:layout_gravity="center_horizontal|bottom"
|
android:layout_gravity="center_horizontal|bottom"
|
||||||
android:layout_marginBottom="50dp"
|
android:layout_marginBottom="50dp"
|
||||||
tools:src="@mipmap/ic_logo1024"
|
tools:src="@mipmap/ic_logo1024"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription"
|
||||||
|
android:visibility="invisible"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
android:layout_marginTop="39dp"
|
android:layout_marginTop="39dp"
|
||||||
android:layout_marginBottom="39dp"
|
android:layout_marginBottom="39dp"
|
||||||
android:text="@string/dish_weight_set_remind"
|
android:text="@string/dish_weight_set_remind"
|
||||||
android:textColor="@color/dish_green"
|
android:textColor="@color/black999"
|
||||||
android:textSize="26sp" />
|
android:textSize="26sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -253,35 +253,26 @@
|
|||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/rvDishPartList"
|
android:id="@+id/rvDishPartList"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="20dp"
|
android:layout_marginBottom="20dp"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
tools:itemCount="3"
|
tools:itemCount="3"
|
||||||
tools:listitem="@layout/list_item_dish_cook" />
|
tools:listitem="@layout/list_item_dish_cook"
|
||||||
|
android:scrollbars="vertical" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<!-- <com.google.android.material.button.MaterialButton-->
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
<!-- android:id="@+id/btnCook"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_margin="30dp"-->
|
|
||||||
<!-- android:text="@string/goCooking"-->
|
|
||||||
<!-- android:textSize="32sp"-->
|
|
||||||
<!-- android:backgroundTint="@null"-->
|
|
||||||
<!-- style="@style/CookButtonStyle"-->
|
|
||||||
<!-- android:textStyle="bold"/>-->
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnCook"
|
android:id="@+id/btnCook"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="90dp"
|
android:layout_height="90dp"
|
||||||
android:layout_margin="30dp"
|
android:layout_margin="30dp"
|
||||||
android:background="@drawable/ripple_effect_green"
|
android:background="@drawable/shape_green_bg"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/goCooking"
|
android:text="@string/goCooking"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="32sp"
|
android:textSize="32sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
<!-- android:background="@drawable/ripple_effect_green"-->
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -90,16 +90,17 @@
|
|||||||
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/btnAddSampling"
|
android:id="@+id/btnAddSampling"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="90dp"
|
android:layout_height="90dp"
|
||||||
android:layout_margin="30dp"
|
android:layout_margin="30dp"
|
||||||
android:background="@drawable/ripple_effect_green"
|
android:background="@drawable/shape_green_bg"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@string/add_sampling"
|
android:text="@string/add_sampling"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="32sp"
|
android:textSize="32sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
<!-- android:background="@drawable/ripple_effect_green"-->
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout 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="wrap_content"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:background="@drawable/bg_other_page">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvTitle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:text="@string/seasoning"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="20dp">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/rvSeasoning"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:layout_marginStart="23dp"
|
|
||||||
android:layout_marginEnd="22dp"
|
|
||||||
android:overScrollMode="never"
|
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
|
||||||
app:spanCount="3"
|
|
||||||
tools:itemCount="15"
|
|
||||||
tools:listitem="@layout/list_item_cell" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvRightBottomCell"
|
|
||||||
android:layout_width="467dp"
|
|
||||||
android:layout_height="255dp"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:background="@drawable/shape_white_fb_15_corners2"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="28sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
tools:text="食盐" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="10dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:paddingStart="30dp"
|
|
||||||
android:paddingEnd="30dp">
|
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="120dp"
|
|
||||||
android:layout_height="80dp"
|
|
||||||
android:layout_gravity="start"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="熟重"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnWeightClear"
|
|
||||||
android:layout_width="120dp"
|
|
||||||
android:layout_height="80dp"
|
|
||||||
android:layout_gravity="end"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@drawable/shape_green_stroke"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="清零"
|
|
||||||
android:textColor="@color/dish_green"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvTotalWeight"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:includeFontPadding="false"
|
|
||||||
android:text="0.00"
|
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="90sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvWeightUnit"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginTop="20dp"
|
|
||||||
android:includeFontPadding="false"
|
|
||||||
android:text="千克"
|
|
||||||
android:textColor="@color/black999"
|
|
||||||
android:textSize="32sp" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_marginBottom="30dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnCook"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="90dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="制作"
|
|
||||||
android:background="@drawable/ripple_effect_light"
|
|
||||||
android:textColor="@color/dish_green"
|
|
||||||
android:textSize="32sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
<!-- android:background="@drawable/shape_green_stroke"-->
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnSubmit"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="90dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/ripple_effect_green"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="提交"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="32sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -20,28 +20,28 @@
|
|||||||
android:id="@+id/tvTitle"
|
android:id="@+id/tvTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:text="@string/seasoning"
|
|
||||||
android:layout_marginStart="30dp"
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
android:layout_marginEnd="30dp"
|
android:layout_marginEnd="30dp"
|
||||||
|
android:text="@string/seasoning"
|
||||||
android:textColor="@color/black666"
|
android:textColor="@color/black666"
|
||||||
android:textSize="28sp" />
|
android:textSize="28sp" />
|
||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/include"
|
android:id="@+id/include"
|
||||||
|
layout="@layout/layout_grid"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content" />
|
||||||
layout="@layout/layout_grid"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_marginStart="30dp"
|
android:layout_marginStart="30dp"
|
||||||
android:layout_marginTop="30dp"
|
android:layout_marginTop="30dp"
|
||||||
android:layout_marginEnd="30dp"
|
android:layout_marginEnd="30dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:background="@drawable/shape_white_30_corners"
|
android:background="@drawable/shape_white_30_corners"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingStart="30dp"
|
android:paddingStart="30dp"
|
||||||
@@ -106,38 +106,41 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_marginBottom="30dp"
|
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/btnCook"
|
android:id="@+id/btnCook"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="90dp"
|
android:layout_height="90dp"
|
||||||
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginBottom="30dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
|
android:background="@drawable/shape_green_stroke"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="制作"
|
android:text="制作"
|
||||||
android:background="@drawable/ripple_effect_light"
|
|
||||||
android:textColor="@color/dish_green"
|
android:textColor="@color/dish_green"
|
||||||
android:textSize="32sp"
|
android:textSize="32sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
<!-- android:background="@drawable/shape_green_stroke"-->
|
<!-- android:background="@drawable/ripple_effect_light"-->
|
||||||
|
|
||||||
<TextView
|
<androidx.appcompat.widget.AppCompatButton
|
||||||
android:id="@+id/btnSubmit"
|
android:id="@+id/btnSubmit"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="90dp"
|
android:layout_height="90dp"
|
||||||
android:layout_marginStart="30dp"
|
android:layout_marginStart="30dp"
|
||||||
|
android:layout_marginTop="40dp"
|
||||||
|
android:layout_marginEnd="30dp"
|
||||||
|
android:layout_marginBottom="30dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:background="@drawable/ripple_effect_green"
|
android:background="@drawable/shape_green_bg"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="提交"
|
android:text="提交"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="32sp"
|
android:textSize="32sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
<!-- android:background="@drawable/ripple_effect_green"-->
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+6
-3
@@ -5,6 +5,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
|
tools:background="@color/white"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<View
|
<View
|
||||||
@@ -67,6 +68,7 @@
|
|||||||
android:id="@+id/refreshLayout"
|
android:id="@+id/refreshLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
app:srlEnableOverScrollDrag="false">
|
app:srlEnableOverScrollDrag="false">
|
||||||
|
|
||||||
<com.scwang.smart.refresh.header.ClassicsHeader
|
<com.scwang.smart.refresh.header.ClassicsHeader
|
||||||
@@ -76,12 +78,13 @@
|
|||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginStart="45dp"
|
android:layout_marginStart="45dp"
|
||||||
android:layout_marginTop="35dp"
|
android:layout_marginTop="15dp"
|
||||||
android:layout_marginEnd="45dp"
|
android:layout_marginEnd="45dp"
|
||||||
android:layout_marginBottom="150dp"
|
android:layout_marginBottom="15dp"
|
||||||
android:nestedScrollingEnabled="true"
|
android:nestedScrollingEnabled="true"
|
||||||
|
android:minHeight="380dp"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
app:spanCount="2"
|
app:spanCount="2"
|
||||||
+8
-7
@@ -5,6 +5,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
|
tools:background="@color/white"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<View
|
<View
|
||||||
@@ -47,12 +48,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="top|end"
|
android:layout_gravity="top|end"
|
||||||
android:text="清零"
|
android:text="清零"
|
||||||
android:paddingStart="30dp"
|
android:paddingHorizontal="30dp"
|
||||||
android:paddingEnd="30dp"
|
|
||||||
android:layout_marginTop="15dp"
|
android:layout_marginTop="15dp"
|
||||||
android:layout_marginEnd="15dp"
|
android:layout_marginEnd="15dp"
|
||||||
android:paddingTop="16dp"
|
android:paddingVertical="16dp"
|
||||||
android:paddingBottom="16dp"
|
|
||||||
android:background="@drawable/ripple_effect_green"
|
android:background="@drawable/ripple_effect_green"
|
||||||
android:textColor="@color/white_f6"
|
android:textColor="@color/white_f6"
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
@@ -102,7 +101,7 @@
|
|||||||
android:id="@+id/refreshLayout"
|
android:id="@+id/refreshLayout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginTop="25dp"
|
android:layout_marginTop="10dp"
|
||||||
app:srlEnableOverScrollDrag="false">
|
app:srlEnableOverScrollDrag="false">
|
||||||
|
|
||||||
<com.scwang.smart.refresh.header.ClassicsHeader
|
<com.scwang.smart.refresh.header.ClassicsHeader
|
||||||
@@ -112,10 +111,12 @@
|
|||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recyclerView"
|
android:id="@+id/recyclerView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginStart="45dp"
|
android:layout_marginStart="45dp"
|
||||||
android:layout_marginEnd="45dp"
|
android:layout_marginEnd="45dp"
|
||||||
android:layout_marginBottom="50dp"
|
android:layout_marginTop="15dp"
|
||||||
|
android:layout_marginBottom="15dp"
|
||||||
|
android:minHeight="380dp"
|
||||||
android:nestedScrollingEnabled="true"
|
android:nestedScrollingEnabled="true"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
@@ -1,281 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout 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"
|
|
||||||
tools:background="@drawable/bg_other_page">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/llSearchBar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="100dp"
|
|
||||||
android:layout_margin="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<EditText
|
|
||||||
android:id="@+id/etInputDish"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="80dp"
|
|
||||||
android:layout_marginStart="28dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:autofillHints=""
|
|
||||||
android:background="@color/white"
|
|
||||||
android:gravity="center"
|
|
||||||
android:hint="@string/dish_search_hint"
|
|
||||||
android:inputType="text"
|
|
||||||
android:imeOptions="actionSearch"
|
|
||||||
android:paddingStart="3dp"
|
|
||||||
android:paddingEnd="3dp"
|
|
||||||
android:textColor="@color/black333"
|
|
||||||
android:textColorHint="@color/gray_c8"
|
|
||||||
android:textSize="40sp"
|
|
||||||
tools:ignore="TextFields" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/ivDishSearch"
|
|
||||||
android:layout_width="60dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:layout_marginStart="20dp"
|
|
||||||
android:layout_marginEnd="20dp"
|
|
||||||
android:paddingStart="10dp"
|
|
||||||
android:paddingEnd="10dp"
|
|
||||||
android:src="@drawable/ic_search_gray"
|
|
||||||
tools:ignore="ContentDescription" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_marginBottom="30dp"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="113dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="@string/dish_name"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvInputDishType"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="80dp"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:gravity="center_vertical|end"
|
|
||||||
android:hint="@string/dish_search_hint2"
|
|
||||||
android:textColor="@color/black333"
|
|
||||||
android:textColorHint="@color/gray_c8"
|
|
||||||
android:textSize="28sp"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:ellipsize="end"
|
|
||||||
android:drawablePadding="30dp"
|
|
||||||
android:paddingEnd="30dp"
|
|
||||||
android:paddingStart="30dp"
|
|
||||||
app:drawableEndCompat="@drawable/ic_search_green" />
|
|
||||||
|
|
||||||
<!-- <ImageView-->
|
|
||||||
<!-- android:id="@+id/ivDishTypeSearch"-->
|
|
||||||
<!-- android:layout_width="62dp"-->
|
|
||||||
<!-- android:layout_height="62dp"-->
|
|
||||||
<!-- android:layout_marginStart="15dp"-->
|
|
||||||
<!-- android:layout_marginEnd="15dp"-->
|
|
||||||
<!-- android:paddingStart="15dp"-->
|
|
||||||
<!-- android:paddingEnd="15dp"-->
|
|
||||||
<!-- android:src="@drawable/ic_search_green"-->
|
|
||||||
<!-- tools:ignore="ContentDescription" />-->
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.divider.MaterialDivider
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/gray_eb" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="113dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:text="@string/dish_from_type"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<RadioGroup
|
|
||||||
android:id="@+id/rgSampling"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="80dp"
|
|
||||||
android:gravity="center_vertical|end"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbDishTypeFirst"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:button="@null"
|
|
||||||
android:drawableStart="@drawable/selector_dish_type"
|
|
||||||
android:drawablePadding="30dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:paddingStart="30dp"
|
|
||||||
android:paddingEnd="30dp"
|
|
||||||
android:text="@string/dish_type_first"
|
|
||||||
android:textColor="@color/dish_type_font"
|
|
||||||
android:textSize="30sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
|
|
||||||
<RadioButton
|
|
||||||
android:id="@+id/rbDishTypeSecond"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:background="@color/white"
|
|
||||||
android:button="@null"
|
|
||||||
android:checked="false"
|
|
||||||
android:drawableStart="@drawable/selector_dish_type"
|
|
||||||
android:drawablePadding="30dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:paddingStart="30dp"
|
|
||||||
android:paddingEnd="30dp"
|
|
||||||
android:text="@string/dish_type_second"
|
|
||||||
android:textColor="@color/dish_type_font"
|
|
||||||
android:textSize="30sp"
|
|
||||||
android:textStyle="bold" />
|
|
||||||
</RadioGroup>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<com.google.android.material.divider.MaterialDivider
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="1dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:background="@color/gray_eb" />
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="170dp"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:text="@string/dish_part_weight_remind"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tvDishPartWeight"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="100dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:autofillHints=""
|
|
||||||
android:background="@drawable/shape_white_f6_10_corners"
|
|
||||||
android:gravity="center"
|
|
||||||
android:hint="-"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingStart="20dp"
|
|
||||||
android:paddingEnd="20dp"
|
|
||||||
android:text=""
|
|
||||||
android:textColor="@color/dish_green"
|
|
||||||
android:textColorHint="@color/gray_d6"
|
|
||||||
android:textSize="60sp"
|
|
||||||
tools:ignore="HardcodedText" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/ivWeightClear"
|
|
||||||
android:layout_width="90dp"
|
|
||||||
android:layout_height="90dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:src="@drawable/ic_weight_clear"
|
|
||||||
tools:ignore="ContentDescription" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/ivWeightAdd"
|
|
||||||
android:layout_width="90dp"
|
|
||||||
android:layout_height="90dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:src="@drawable/ic_weight_add"
|
|
||||||
tools:ignore="ContentDescription" />
|
|
||||||
</LinearLayout>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="30dp"
|
|
||||||
android:layout_marginEnd="30dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="@drawable/shape_white_30_corners"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginStart="30dp"
|
|
||||||
android:layout_marginTop="40dp"
|
|
||||||
android:layout_marginBottom="40dp"
|
|
||||||
android:text="@string/dish_composition"
|
|
||||||
android:textColor="@color/black666"
|
|
||||||
android:textSize="28sp" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/rvDishPartList"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="20dp"
|
|
||||||
android:overScrollMode="never"
|
|
||||||
tools:itemCount="3"
|
|
||||||
tools:listitem="@layout/list_item_dish_cook" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnCook"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="90dp"
|
|
||||||
android:layout_margin="30dp"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="@string/goCooking"
|
|
||||||
android:textColor="@color/white"
|
|
||||||
android:textSize="32sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:background="@drawable/ripple_effect_green"
|
|
||||||
android:clickable="true" />
|
|
||||||
|
|
||||||
<!-- android:background="@drawable/shape_green_bg"-->
|
|
||||||
<!-- android:background="?attr/selectableItemBackground"-->
|
|
||||||
<!-- android:clickable="true"-->
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:background="@drawable/bg_other_page">
|
|
||||||
|
|
||||||
<!-- <RadioGroup-->
|
|
||||||
<!-- android:id="@+id/dishRadioGroup"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="88dp"-->
|
|
||||||
<!-- android:layout_marginTop="15dp"-->
|
|
||||||
<!-- android:orientation="horizontal">-->
|
|
||||||
|
|
||||||
<!-- <RadioButton-->
|
|
||||||
<!-- android:id="@+id/rbCooking"-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:layout_marginStart="30dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:background="@drawable/breakfast_bg"-->
|
|
||||||
<!-- android:button="@null"-->
|
|
||||||
<!-- android:checked="true"-->
|
|
||||||
<!-- android:gravity="center"-->
|
|
||||||
<!-- android:text="@string/rb_sampling_cooking"-->
|
|
||||||
<!-- android:textColor="@color/breakfast_font"-->
|
|
||||||
<!-- android:textSize="30sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <RadioButton-->
|
|
||||||
<!-- android:id="@+id/rbFinished"-->
|
|
||||||
<!-- android:layout_width="0dp"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:layout_marginStart="9dp"-->
|
|
||||||
<!-- android:layout_marginEnd="30dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:background="@drawable/breakfast_bg"-->
|
|
||||||
<!-- android:button="@null"-->
|
|
||||||
<!-- android:checked="false"-->
|
|
||||||
<!-- android:gravity="center"-->
|
|
||||||
<!-- android:text="@string/rb_sampling_finished"-->
|
|
||||||
<!-- android:textColor="@color/breakfast_font"-->
|
|
||||||
<!-- android:textSize="30sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
<!-- </RadioGroup>-->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <LinearLayout-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="0dp"-->
|
|
||||||
<!-- android:layout_weight="1"-->
|
|
||||||
<!-- android:orientation="vertical"-->
|
|
||||||
<!-- android:layout_marginTop="30dp"-->
|
|
||||||
<!-- android:layout_marginStart="30dp"-->
|
|
||||||
<!-- android:layout_marginEnd="30dp"-->
|
|
||||||
<!-- android:background="@drawable/shape_white_30_corners">-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:layout_width="wrap_content"-->
|
|
||||||
<!-- android:layout_height="wrap_content"-->
|
|
||||||
<!-- android:text="@string/dish_list"-->
|
|
||||||
<!-- android:textColor="@color/black666"-->
|
|
||||||
<!-- android:textSize="28sp"-->
|
|
||||||
<!-- android:visibility="gone"/>-->
|
|
||||||
|
|
||||||
<!-- <com.scwang.smart.refresh.layout-sw800dp.SmartRefreshLayout-->
|
|
||||||
<!-- android:id="@+id/refreshLayout"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:layout_marginTop="8dp"-->
|
|
||||||
<!-- android:layout_marginBottom="7dp">-->
|
|
||||||
|
|
||||||
<!-- <com.scwang.smart.refresh.header.ClassicsHeader-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="wrap_content" />-->
|
|
||||||
|
|
||||||
<!-- <androidx.recyclerview.widget.RecyclerView-->
|
|
||||||
<!-- android:id="@+id/rvSamplingList"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="match_parent"-->
|
|
||||||
<!-- android:overScrollMode="never"-->
|
|
||||||
<!-- tools:listitem="@layout-sw800dp/list_item_dish" />-->
|
|
||||||
|
|
||||||
<!-- <com.scwang.smart.refresh.footer.ClassicsFooter-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="wrap_content" />-->
|
|
||||||
|
|
||||||
<!-- </com.scwang.smart.refresh.layout-sw800dp.SmartRefreshLayout>-->
|
|
||||||
<!-- </LinearLayout>-->
|
|
||||||
|
|
||||||
<!-- <TextView-->
|
|
||||||
<!-- android:id="@+id/btnAddSampling"-->
|
|
||||||
<!-- android:layout_width="match_parent"-->
|
|
||||||
<!-- android:layout_height="90dp"-->
|
|
||||||
<!-- android:layout_margin="30dp"-->
|
|
||||||
<!-- android:background="@drawable/ripple_effect_green"-->
|
|
||||||
<!-- android:gravity="center"-->
|
|
||||||
<!-- android:text="@string/add_sampling"-->
|
|
||||||
<!-- android:textColor="@color/white"-->
|
|
||||||
<!-- android:textSize="32sp"-->
|
|
||||||
<!-- android:textStyle="bold" />-->
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
@@ -1,30 +1,32 @@
|
|||||||
<?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:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
tools:background="@color/white">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvDialogTitle"
|
android:id="@+id/tvDialogTitle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="60dp"
|
||||||
android:text="@string/food_remind_01"
|
android:text="@string/food_remind_01"
|
||||||
android:textColor="@color/black"
|
android:textColor="@color/black"
|
||||||
android:textSize="36sp"
|
android:textSize="36sp"
|
||||||
android:layout_marginTop="60dp"
|
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tvDialogContent"
|
android:id="@+id/tvDialogContent"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="25dp"
|
|
||||||
android:layout_marginStart="20dp"
|
android:layout_marginStart="20dp"
|
||||||
android:gravity="center_horizontal"
|
android:layout_marginTop="25dp"
|
||||||
android:layout_marginEnd="20dp"
|
android:layout_marginEnd="20dp"
|
||||||
|
android:layout_marginBottom="60dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
android:text="@string/food_remind_02"
|
android:text="@string/food_remind_02"
|
||||||
android:textColor="@color/black999"
|
android:textColor="@color/black999"
|
||||||
android:layout_marginBottom="60dp"
|
|
||||||
android:textSize="26sp" />
|
android:textSize="26sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
android:paddingTop="30dp"
|
android:paddingTop="30dp"
|
||||||
android:paddingEnd="22dp"
|
android:paddingEnd="22dp"
|
||||||
android:paddingBottom="20dp"
|
android:paddingBottom="20dp"
|
||||||
|
tools:background="@color/white"
|
||||||
app:columnCount="3"
|
app:columnCount="3"
|
||||||
app:orientation="vertical"
|
app:orientation="vertical"
|
||||||
app:rowCount="5"
|
app:rowCount="5"
|
||||||
|
|||||||
@@ -41,5 +41,8 @@
|
|||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
<item name="android:windowBackground">@android:color/transparent</item>
|
||||||
<item name="android:windowIsFloating">true</item>
|
<item name="android:windowIsFloating">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
<style name="DialogSoftInputAnimation">
|
||||||
|
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
|
||||||
|
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
|
||||||
|
</style>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user