diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1c590a..e94a4fd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -286,6 +286,14 @@ android:name=".page.car.list.CarListActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="userLandscape" /> + + () { + + override fun layoutId() = R.layout.activity_uld_edit + + override fun viewModelClass() = UldEditViewModel::class.java + + override fun initOnCreate(savedInstanceState: Bundle?) { + viewModel.initOnCreate(intent) + setBackArrow("ULD${viewModel.pageType.value!!.title}") + binding.viewModel = viewModel + } + + companion object { + @JvmStatic + fun start(context: Context, id: String = "", modify: Boolean = id.isEmpty()) { + val starter = Intent(context, UldEditActivity::class.java) + .putExtra(Constant.Key.ID, id) + .putExtra(Constant.Key.DATA, modify) + context.startActivity(starter) + } + } +} diff --git a/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt b/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt new file mode 100644 index 0000000..63e5664 --- /dev/null +++ b/app/src/main/java/com/lukouguoji/aerologic/page/uld/edit/UldEditViewModel.kt @@ -0,0 +1,84 @@ +package com.lukouguoji.aerologic.page.uld.edit + +import android.content.Intent +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.module_base.base.BaseViewModel +import com.lukouguoji.module_base.bean.ULDBean +import com.lukouguoji.module_base.common.Constant +import com.lukouguoji.module_base.common.DetailsPageType +import com.lukouguoji.module_base.http.net.NetApply +import com.lukouguoji.module_base.ktx.launchLoadingCollect +import com.lukouguoji.module_base.ktx.noNull +import com.lukouguoji.module_base.ktx.showToast +import com.lukouguoji.module_base.ktx.toRequestBody +import dev.DevUtils +import dev.utils.app.info.KeyValue + +class UldEditViewModel : BaseViewModel() { + + var id = "" + + val pageType = MutableLiveData(DetailsPageType.Add) + + val uldBean = MutableLiveData(ULDBean()) + + val statusList = MutableLiveData>( + listOf( + KeyValue("正常", "0"), + KeyValue("故障", "1"), + ) + ) + + // 所属航司下拉列表(mock,后续替换为接口) + val carrierList = MutableLiveData>( + listOf( + KeyValue("MU - 东方航空", "MU"), + KeyValue("CA - 国航", "CA"), + KeyValue("CZ - 南方航空", "CZ"), + KeyValue("HO - 吉祥航空", "HO"), + KeyValue("FM - 上海航空", "FM"), + ) + ) + + fun initOnCreate(intent: Intent) { + id = intent.getStringExtra(Constant.Key.ID) ?: "" + val modify = intent.getBooleanExtra(Constant.Key.DATA, false) + pageType.value = if (id.isEmpty()) DetailsPageType.Add + else if (modify) DetailsPageType.Modify else DetailsPageType.Details + + getData() + } + + private fun getData() { + if (id.isEmpty()) return + launchLoadingCollect({ + NetApply.api.queryUldByCode(id) + }) { + onSuccess = { + uldBean.value = it.data ?: ULDBean() + } + } + } + + fun onSaveClick() { + val bean = uldBean.value ?: return + if (bean.uld.isBlank()) { + showToast("ULD编号不能为空") + return + } + val isAdd = pageType.value == DetailsPageType.Add + launchLoadingCollect({ + if (isAdd) NetApply.api.saveUld(bean.toRequestBody()) + else NetApply.api.updateUld(bean.toRequestBody()) + }) { + onSuccess = { + showToast(it.msg.noNull(if (isAdd) "新增成功" else "修改成功")) + if (isAdd) uldBean.value = ULDBean() else getData() + } + } + } + + fun onCancelClick() { + DevUtils.getTopActivity().finish() + } +} diff --git a/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListActivity.kt b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListActivity.kt new file mode 100644 index 0000000..6bd4c30 --- /dev/null +++ b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListActivity.kt @@ -0,0 +1,45 @@ +package com.lukouguoji.aerologic.page.uld.list + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import com.lukouguoji.aerologic.R +import com.lukouguoji.aerologic.databinding.ActivityUldListBinding +import com.lukouguoji.module_base.base.BaseBindingActivity +import com.lukouguoji.module_base.ktx.addOnItemClickListener +import com.lukouguoji.module_base.ktx.getLifecycleOwner + +class UldListActivity : BaseBindingActivity() { + + override fun layoutId(): Int { + return R.layout.activity_uld_list + } + + override fun viewModelClass(): Class { + return UldListViewModel::class.java + } + + override fun initOnCreate(savedInstanceState: Bundle?) { + setBackArrow("ULD管理") + binding.viewModel = viewModel + viewModel.pageModel.bindSmartRefreshLayout( + binding.srl, + binding.rv, + viewModel, + getLifecycleOwner() + ) + binding.rv.addOnItemClickListener(viewModel) + } + + override fun onResume() { + super.onResume() + viewModel.refresh() + } + + companion object { + @JvmStatic + fun start(context: Context) { + context.startActivity(Intent(context, UldListActivity::class.java)) + } + } +} diff --git a/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewHolder.kt b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewHolder.kt new file mode 100644 index 0000000..30f8347 --- /dev/null +++ b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewHolder.kt @@ -0,0 +1,16 @@ +package com.lukouguoji.aerologic.page.uld.list + +import android.view.View +import com.lukouguoji.aerologic.databinding.ItemUldListBinding +import com.lukouguoji.module_base.base.BaseViewHolder +import com.lukouguoji.module_base.bean.ULDBean + +class UldListViewHolder(view: View) : BaseViewHolder(view) { + override fun onBind(item: Any?, position: Int) { + val itemBean = getItemBean(item)!! + binding.bean = itemBean + notifyItemClick(position, binding.llContent) + notifyItemClick(position, binding.tvModify) + notifyItemClick(position, binding.tvDelete) + } +} diff --git a/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewModel.kt b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewModel.kt new file mode 100644 index 0000000..4ac225b --- /dev/null +++ b/app/src/main/java/com/lukouguoji/aerologic/page/uld/list/UldListViewModel.kt @@ -0,0 +1,116 @@ +package com.lukouguoji.aerologic.page.uld.list + +import android.app.Activity +import android.content.Intent +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.aerologic.R +import com.lukouguoji.aerologic.page.uld.edit.UldEditActivity +import com.lukouguoji.module_base.base.BasePageViewModel +import com.lukouguoji.module_base.bean.ULDBean +import com.lukouguoji.module_base.common.Constant +import com.lukouguoji.module_base.http.net.NetApply +import com.lukouguoji.module_base.ktx.commonAdapter +import com.lukouguoji.module_base.ktx.launchLoadingCollect +import com.lukouguoji.module_base.ktx.noNull +import com.lukouguoji.module_base.ktx.showToast +import com.lukouguoji.module_base.model.ConfirmDialogModel +import com.lukouguoji.module_base.ktx.toRequestBody +import com.lukouguoji.module_base.model.ScanModel +import dev.DevUtils +import dev.utils.app.info.KeyValue + +class UldListViewModel : BasePageViewModel() { + + // 搜索条件 + val status = MutableLiveData("") + val uldSuffix = MutableLiveData("") + val uldNo = MutableLiveData("") + + // 状态下拉列表 + val statusList = MutableLiveData>( + listOf( + KeyValue("全部", ""), + KeyValue("正常", "0"), + KeyValue("故障", "1"), + ) + ) + + // 所属航司下拉列表(mock,后续替换为接口) + val carrierList = MutableLiveData>( + listOf( + KeyValue("全部", ""), + KeyValue("MU - 东方航空", "MU"), + KeyValue("CA - 国航", "CA"), + KeyValue("CZ - 南方航空", "CZ"), + KeyValue("HO - 吉祥航空", "HO"), + KeyValue("FM - 上海航空", "FM"), + ) + ) + + // 合计数量 + val count = MutableLiveData(0L) + + val itemLayoutId = R.layout.item_uld_list + val itemViewHolder = UldListViewHolder::class.java + + override fun getData() { + launchLoadingCollect({ + NetApply.api.getUldList( + mapOf( + "pageNum" to pageModel.page, + "pageSize" to pageModel.limit, + "status" to status.value?.ifEmpty { null }, + "uldSuffix" to uldSuffix.value?.ifEmpty { null }, + "uld" to uldNo.value?.ifEmpty { null }, + ).toRequestBody() + ) + }) { + onSuccess = { + pageModel.handleListBean(it.toBaseListBean()) + count.value = it.total + } + } + } + + fun onUldScanClick() { + ScanModel.startScan(DevUtils.getTopActivity(), Constant.RequestCode.ULD) + } + + fun onAddClick() { + UldEditActivity.start(DevUtils.getTopActivity()) + } + + override fun onItemClick(position: Int, type: Int) { + val bean = pageModel.rv?.commonAdapter()?.getItem(position) as? ULDBean ?: return + when (type) { + R.id.ll_content -> UldEditActivity.start(DevUtils.getTopActivity(), bean.uld) + R.id.tv_modify -> UldEditActivity.start(DevUtils.getTopActivity(), bean.uld, true) + R.id.tv_delete -> deleteUld(bean.uld) + else -> {} + } + } + + private fun deleteUld(uld: String) { + ConfirmDialogModel("是否确定删除该ULD记录?") { + launchLoadingCollect({ + NetApply.api.deleteUld(uld) + }) { + onSuccess = { + showToast("删除成功") + refresh() + } + } + }.show() + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + if (resultCode == Activity.RESULT_OK && data != null) { + when (requestCode) { + Constant.RequestCode.ULD -> { + uldNo.value = data.getStringExtra(Constant.Result.CODED_CONTENT).noNull() + } + else -> {} + } + } + } +} diff --git a/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt b/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt index 58462f8..a041f27 100644 --- a/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt +++ b/app/src/main/java/com/lukouguoji/aerologic/ui/fragment/HomeFragment.kt @@ -30,6 +30,7 @@ import com.lukouguoji.aerologic.page.telegram.list.TelegramListActivity import com.lukouguoji.aerologic.page.test.PrintActivity import com.lukouguoji.aerologic.page.transport.GoodsTransportActivity import com.lukouguoji.aerologic.page.transportLog.list.TransportLogActivity +import com.lukouguoji.aerologic.page.uld.list.UldListActivity import com.lukouguoji.gnc.page.deposit.list.GncDepositListActivity import com.lukouguoji.gnc.page.distribution.home.GncDistributionHomeActivity import com.lukouguoji.gnc.page.fubang.list.GncFuBangListActivity @@ -548,6 +549,10 @@ class HomeFragment : Fragment() { Constant.AuthName.ComprehensiveLog -> { LogListActivity.start(requireContext()) } + // ULD管理 + Constant.AuthName.ComprehensiveUld -> { + UldListActivity.start(requireContext()) + } else -> { Toast.makeText( @@ -950,6 +955,13 @@ class HomeFragment : Fragment() { "转运记录" ) ) + list.add( + RightMenu( + Constant.AuthName.ComprehensiveUld, + R.mipmap.cargo, + "ULD管理" + ) + ) } else -> { diff --git a/app/src/main/res/layout/activity_uld_edit.xml b/app/src/main/res/layout/activity_uld_edit.xml new file mode 100644 index 0000000..8ed7684 --- /dev/null +++ b/app/src/main/res/layout/activity_uld_edit.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_uld_list.xml b/app/src/main/res/layout/activity_uld_list.xml new file mode 100644 index 0000000..cb6ffe3 --- /dev/null +++ b/app/src/main/res/layout/activity_uld_list.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_uld_list.xml b/app/src/main/res/layout/item_uld_list.xml new file mode 100644 index 0000000..5cf5eeb --- /dev/null +++ b/app/src/main/res/layout/item_uld_list.xml @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt index 0a9a3b2..b690fbe 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/ULDBean.kt @@ -15,6 +15,16 @@ data class ULDBean( var uld: String = "", var uldFlag: String = "", var uldType: String = "", + // 状态 0:正常 1:故障 + var status: String = "", + // 备注 + var remark: String = "", ){ val checked = ObservableBoolean(false) + + fun statusName(): String = when (status) { + "0" -> "正常" + "1" -> "故障" + else -> status + } } \ No newline at end of file diff --git a/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt b/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt index 35e191e..918d26e 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/common/Constant.kt @@ -328,6 +328,9 @@ interface Constant { // 日志查询 const val ComprehensiveLog = "AppComprehensiveLog" + + // ULD管理 + const val ComprehensiveUld = "AppComprehensiveUld" } } diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt index bbfc9df..eed9206 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt @@ -1859,4 +1859,32 @@ interface Api { */ @POST("GjAccidentVisa/delete") suspend fun deleteIntImpAccidentVisa(@Body data: RequestBody): BaseResultBean + + /////////////////////////////////////////////////////////////////////////// + // ULD管理 + /////////////////////////////////////////////////////////////////////////// + + /** + * 获取-ULD-列表(分页) + */ + @POST("eqm/uld/pageQuery") + suspend fun getUldList(@Body data: RequestBody): PageInfo + + /** + * 新增-ULD-信息 + */ + @POST("eqm/uld/saveUld") + suspend fun saveUld(@Body data: RequestBody): BaseResultBean + + /** + * 更新-ULD-信息 + */ + @POST("eqm/uld/updateUld") + suspend fun updateUld(@Body data: RequestBody): BaseResultBean + + /** + * 删除-ULD-信息 + */ + @POST("eqm/uld/deleteUld") + suspend fun deleteUld(@Query("uld") uld: String): BaseResultBean } \ No newline at end of file diff --git a/module_base/src/main/res/layout/layout_pad_data_new.xml b/module_base/src/main/res/layout/layout_pad_data_new.xml index 70579bc..980d863 100644 --- a/module_base/src/main/res/layout/layout_pad_data_new.xml +++ b/module_base/src/main/res/layout/layout_pad_data_new.xml @@ -36,7 +36,7 @@ android:background="@null" android:paddingStart="10dp" android:textColor="@color/text_normal" - android:textColorHint="@color/text_gray" + android:textColorHint="@color/text_gray_l" android:textSize="14sp" />