diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_entrust_log.xml b/app/src/main/res/layout/fragment_entrust_log.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_entrust_log.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_entrust_log.xml b/app/src/main/res/layout/fragment_entrust_log.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_entrust_log.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_certificate_type_rv_l.xml b/app/src/main/res/layout/item_certificate_type_rv_l.xml new file mode 100644 index 0000000..e68d12d --- /dev/null +++ b/app/src/main/res/layout/item_certificate_type_rv_l.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_entrust_log.xml b/app/src/main/res/layout/fragment_entrust_log.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_entrust_log.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_certificate_type_rv_l.xml b/app/src/main/res/layout/item_certificate_type_rv_l.xml new file mode 100644 index 0000000..e68d12d --- /dev/null +++ b/app/src/main/res/layout/item_certificate_type_rv_l.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_customer_sample_rv_l.xml b/app/src/main/res/layout/item_customer_sample_rv_l.xml new file mode 100644 index 0000000..474b89b --- /dev/null +++ b/app/src/main/res/layout/item_customer_sample_rv_l.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a535150..5edac14 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -58,6 +58,7 @@ + diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt new file mode 100644 index 0000000..a365eaf --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CertificateTypeAdapter.kt @@ -0,0 +1,44 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.CheckBox +import android.widget.LinearLayout +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.DictionaryModel + +class CertificateTypeAdapter( + context: Context, + private val dataRows: MutableList, + private val checkedArray: List +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_certificate_type_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + holder.checkbox.text = rowsBean.name + //设置选中状态 + checkedArray.forEach { + if (it.toInt() == position) { + holder.checkbox.isChecked = true + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var checkbox: CheckBox = view.findViewById(R.id.checkbox) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt new file mode 100644 index 0000000..b76dc7f --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/adapter/CustomerSampleAdapter.kt @@ -0,0 +1,38 @@ +package com.casic.xz.meterage.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.LinearLayout +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.xz.meterage.R +import com.casic.xz.meterage.model.EntrustDetailModel + +class CustomerSampleAdapter( + context: Context, + private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun getItemCount(): Int = dataRows.size + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_customer_sample_rv_l, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + val params = holder.itemView.layoutParams + params.height = LinearLayout.LayoutParams.WRAP_CONTENT + //绑定数据 + val rowsBean = dataRows[position] + + holder.sampleCodeView.text = rowsBean.sampleName + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var sampleCodeView: TextView = view.findViewById(R.id.sampleCodeView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt index 88c4419..2d21c67 100644 --- a/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt +++ b/app/src/main/java/com/casic/xz/meterage/adapter/EntrustAdapter.kt @@ -9,7 +9,6 @@ import com.casic.xz.meterage.R import com.casic.xz.meterage.model.EntrustListModel import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.show class EntrustAdapter( private val context: Context, @@ -61,11 +60,14 @@ //绑定事件 holder.entrustStateView.setOnClickListener { - if (rowsBean.status == "2" || rowsBean.status == "4") { - "当前状态不可编辑".show(context) - } else { - listener?.onStateViewClicked(position) - } +// if (rowsBean.status == "2" || rowsBean.status == "4") { +// "当前状态不可编辑".show(context) +// } else { +// listener?.onStateViewClicked(position) +// } + + //暂不做判断,计量中心人员只能接收和退回,不能编辑 + listener?.onStateViewClicked(position) } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt new file mode 100644 index 0000000..14bbc65 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/BasicInformationFragment.kt @@ -0,0 +1,103 @@ +package com.casic.xz.meterage.fragment.entrust + +import android.graphics.Paint +import androidx.lifecycle.ViewModelProvider +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.CertificateTypeAdapter +import com.casic.xz.meterage.adapter.CustomerSampleAdapter +import com.casic.xz.meterage.extensions.watchAttachFile +import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.vm.DictionaryViewModel +import com.casic.xz.meterage.vm.EntrustViewModel +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.vm.LoadState +import kotlinx.android.synthetic.main.fragment_entrust_basic_information.* + +class BasicInformationFragment(private val id: String) : KotlinBaseFragment() { + + private lateinit var entrustViewModel: EntrustViewModel + private lateinit var dictionaryViewModel: DictionaryViewModel + + override fun initData() { + entrustViewModel = ViewModelProvider(this)[EntrustViewModel::class.java] + dictionaryViewModel = ViewModelProvider(this)[DictionaryViewModel::class.java] + + //获取委托书基本信息 + entrustViewModel.getEntrustDetail(id) + entrustViewModel.entrustDetail.observe(this) { + if (it.code == 200) { + val data = it.data + + entrustCodeView.text = data.orderCode + senderView.text = data.deliverer + contactView.text = data.delivererTel + entrustCreateView.text = data.orderTime + estimateTimeView.text = data.planDeliverTime + completedView.text = data.requireOverTime + entrustNameView.text = data.customerName + entrustContactView.text = data.customerPhone + entrustAddressView.text = data.customerAddress + remarkView.text = data.remark + + if (data.minioFileName.isNullOrBlank()) { + annexView.text = "暂无附件" + } else { + val minioFileName = data.minioFileName + + annexView.text = minioFileName + val textPaint = annexView.paint + textPaint.flags = Paint.UNDERLINE_TEXT_FLAG + textPaint.isAntiAlias = true + annexView.setTextColor(R.color.themeColor.convertColor(requireContext())) + + annexView.setOnClickListener { + minioFileName.watchAttachFile(requireContext()) + } + } + + //证书 + val split = data.certifications.split(",") + dictionaryViewModel.getDictionaryByCode("certificationClass") + dictionaryViewModel.dictionary.observe(this) { dic -> + if (dic.code == 200) { + typeRecyclerView.adapter = CertificateTypeAdapter( + requireContext(), dic.data, split + ) + } + } + + //加急 + if (data.isUrgent == "0") { + RadioButton2.isChecked = true + } else { + RadioButton1.isChecked = true + } + + //样品 + sampleRecyclerView.adapter = CustomerSampleAdapter( + requireContext(), data.customerSampleInfoList + ) + } + } + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_basic_information + + override fun observeRequestState() { + entrustViewModel.loadState.observe(this) { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() + } + } + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt new file mode 100644 index 0000000..a4dd76d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/fragment/entrust/LogRecordFragment.kt @@ -0,0 +1,25 @@ +package com.casic.xz.meterage.fragment.entrust + +import com.casic.xz.meterage.R +import com.pengxh.kt.lite.base.KotlinBaseFragment + +class LogRecordFragment : KotlinBaseFragment() { + + override fun initData() { + + } + + override fun initEvent() { + + } + + override fun initLayoutView(): Int = R.layout.fragment_entrust_log + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java new file mode 100644 index 0000000..b85ad00 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/DictionaryModel.java @@ -0,0 +1,73 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class DictionaryModel { + + private int code; + private List data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataModel { + private String name; + private String id; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java new file mode 100644 index 0000000..1122f4d --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/EntrustDetailModel.java @@ -0,0 +1,625 @@ +package com.casic.xz.meterage.model; + +import java.util.List; + +public class EntrustDetailModel { + + private int code; + private DataModel data; + private String message; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataModel getData() { + return data; + } + + public void setData(DataModel data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static class DataModel { + private String certifications; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String customerPhone; + private List customerSampleInfoList; + private String deliverTime; + private String deliverer; + private String delivererId; + private String delivererTel; + private String id; + private String isDel; + private String isUrgent; + private String minioFileName; + private String orderCode; + private String orderTime; + private String planDeliverTime; + private String remark; + private String requireOverTime; + private String status; + private String updateTime; + + public String getCertifications() { + return certifications; + } + + public void setCertifications(String certifications) { + this.certifications = certifications; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getCustomerPhone() { + return customerPhone; + } + + public void setCustomerPhone(String customerPhone) { + this.customerPhone = customerPhone; + } + + public List getCustomerSampleInfoList() { + return customerSampleInfoList; + } + + public void setCustomerSampleInfoList(List customerSampleInfoList) { + this.customerSampleInfoList = customerSampleInfoList; + } + + public String getDeliverTime() { + return deliverTime; + } + + public void setDeliverTime(String deliverTime) { + this.deliverTime = deliverTime; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererId() { + return delivererId; + } + + public void setDelivererId(String delivererId) { + this.delivererId = delivererId; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsUrgent() { + return isUrgent; + } + + public void setIsUrgent(String isUrgent) { + this.isUrgent = isUrgent; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderCode() { + return orderCode; + } + + public void setOrderCode(String orderCode) { + this.orderCode = orderCode; + } + + public String getOrderTime() { + return orderTime; + } + + public void setOrderTime(String orderTime) { + this.orderTime = orderTime; + } + + public String getPlanDeliverTime() { + return planDeliverTime; + } + + public void setPlanDeliverTime(String planDeliverTime) { + this.planDeliverTime = planDeliverTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getRequireOverTime() { + return requireOverTime; + } + + public void setRequireOverTime(String requireOverTime) { + this.requireOverTime = requireOverTime; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public static class CustomerSampleInfoListModel { + private String abc; + private String appendix; + private String appendixDescn; + private String createTime; + private String createUser; + private String customerAddress; + private String customerId; + private String customerName; + private String customerNo; + private String deliverer; + private String delivererTel; + private String id; + private String isDel; + private String isExistSample; + private String labelBind; + private String manufacturer; + private String manufacturerCountry; + private String manufacturingDate; + private String manufacturingNo; + private String measureCategory; + private String measureCategoryName; + private String measureContent; + private String measureLastTime; + private String measurePeriod; + private String measureType; + private String measureTypeName; + private String minioFileName; + private String orderId; + private String phone; + private String postalCode; + private String powerVoltage; + private String remark; + private String sampleBelong; + private String sampleBelongName; + private String sampleModel; + private String sampleName; + private String sampleNo; + private String specialRequire; + private String updateTime; + private String updateUser; + private String validDeadline; + + public String getAbc() { + return abc; + } + + public void setAbc(String abc) { + this.abc = abc; + } + + public String getAppendix() { + return appendix; + } + + public void setAppendix(String appendix) { + this.appendix = appendix; + } + + public String getAppendixDescn() { + return appendixDescn; + } + + public void setAppendixDescn(String appendixDescn) { + this.appendixDescn = appendixDescn; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public String getCustomerAddress() { + return customerAddress; + } + + public void setCustomerAddress(String customerAddress) { + this.customerAddress = customerAddress; + } + + public String getCustomerId() { + return customerId; + } + + public void setCustomerId(String customerId) { + this.customerId = customerId; + } + + public String getCustomerName() { + return customerName; + } + + public void setCustomerName(String customerName) { + this.customerName = customerName; + } + + public String getCustomerNo() { + return customerNo; + } + + public void setCustomerNo(String customerNo) { + this.customerNo = customerNo; + } + + public String getDeliverer() { + return deliverer; + } + + public void setDeliverer(String deliverer) { + this.deliverer = deliverer; + } + + public String getDelivererTel() { + return delivererTel; + } + + public void setDelivererTel(String delivererTel) { + this.delivererTel = delivererTel; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIsDel() { + return isDel; + } + + public void setIsDel(String isDel) { + this.isDel = isDel; + } + + public String getIsExistSample() { + return isExistSample; + } + + public void setIsExistSample(String isExistSample) { + this.isExistSample = isExistSample; + } + + public String getLabelBind() { + return labelBind; + } + + public void setLabelBind(String labelBind) { + this.labelBind = labelBind; + } + + public String getManufacturer() { + return manufacturer; + } + + public void setManufacturer(String manufacturer) { + this.manufacturer = manufacturer; + } + + public String getManufacturerCountry() { + return manufacturerCountry; + } + + public void setManufacturerCountry(String manufacturerCountry) { + this.manufacturerCountry = manufacturerCountry; + } + + public String getManufacturingDate() { + return manufacturingDate; + } + + public void setManufacturingDate(String manufacturingDate) { + this.manufacturingDate = manufacturingDate; + } + + public String getManufacturingNo() { + return manufacturingNo; + } + + public void setManufacturingNo(String manufacturingNo) { + this.manufacturingNo = manufacturingNo; + } + + public String getMeasureCategory() { + return measureCategory; + } + + public void setMeasureCategory(String measureCategory) { + this.measureCategory = measureCategory; + } + + public String getMeasureCategoryName() { + return measureCategoryName; + } + + public void setMeasureCategoryName(String measureCategoryName) { + this.measureCategoryName = measureCategoryName; + } + + public String getMeasureContent() { + return measureContent; + } + + public void setMeasureContent(String measureContent) { + this.measureContent = measureContent; + } + + public String getMeasureLastTime() { + return measureLastTime; + } + + public void setMeasureLastTime(String measureLastTime) { + this.measureLastTime = measureLastTime; + } + + public String getMeasurePeriod() { + return measurePeriod; + } + + public void setMeasurePeriod(String measurePeriod) { + this.measurePeriod = measurePeriod; + } + + public String getMeasureType() { + return measureType; + } + + public void setMeasureType(String measureType) { + this.measureType = measureType; + } + + public String getMeasureTypeName() { + return measureTypeName; + } + + public void setMeasureTypeName(String measureTypeName) { + this.measureTypeName = measureTypeName; + } + + public String getMinioFileName() { + return minioFileName; + } + + public void setMinioFileName(String minioFileName) { + this.minioFileName = minioFileName; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getPowerVoltage() { + return powerVoltage; + } + + public void setPowerVoltage(String powerVoltage) { + this.powerVoltage = powerVoltage; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getSampleBelong() { + return sampleBelong; + } + + public void setSampleBelong(String sampleBelong) { + this.sampleBelong = sampleBelong; + } + + public String getSampleBelongName() { + return sampleBelongName; + } + + public void setSampleBelongName(String sampleBelongName) { + this.sampleBelongName = sampleBelongName; + } + + public String getSampleModel() { + return sampleModel; + } + + public void setSampleModel(String sampleModel) { + this.sampleModel = sampleModel; + } + + public String getSampleName() { + return sampleName; + } + + public void setSampleName(String sampleName) { + this.sampleName = sampleName; + } + + public String getSampleNo() { + return sampleNo; + } + + public void setSampleNo(String sampleNo) { + this.sampleNo = sampleNo; + } + + public String getSpecialRequire() { + return specialRequire; + } + + public void setSpecialRequire(String specialRequire) { + this.specialRequire = specialRequire; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(String updateUser) { + this.updateUser = updateUser; + } + + public String getValidDeadline() { + return validDeadline; + } + + public void setValidDeadline(String validDeadline) { + this.validDeadline = validDeadline; + } + } + } +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index c80f6e6..6120702 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -26,6 +26,15 @@ ): String /** + * 获取字典 + */ + @GET("/sys/dict/code/{dictCode}") + suspend fun getDictionaryByCode( + @Header("token") token: String, + @Path("dictCode") dictCode: String + ): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") @@ -173,4 +182,13 @@ @QueryMap limit: Map, @QueryMap offset: Map ): String + + /** + * 获取委托书详情 + */ + @POST("/business/order/detail") + suspend fun getEntrustDetail( + @Header("token") token: String, + @Body requestBody: RequestBody + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index aa61732..6d7f90f 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -48,6 +48,13 @@ } /** + * 获取字典 + */ + suspend fun getDictionaryByCode(dictCode: String): String { + return api.getDictionaryByCode(AuthenticationHelper.token!!, dictCode) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( @@ -408,4 +415,16 @@ offsetMap["offset"] = offset return api.getEntrustList(AuthenticationHelper.token!!, requestBody, limitMap, offsetMap) } + + /** + * 获取委托书详情 + */ + suspend fun getEntrustDetail(id: String): String { + val paramObject = JSONObject() + paramObject.put("id", id) + val requestBody = paramObject.toString().toRequestBody( + "application/json;charset=UTF-8".toMediaType() + ) + return api.getEntrustDetail(AuthenticationHelper.token!!, requestBody) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt index 0b5aa9d..d56c3d7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustActivity.kt @@ -139,7 +139,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt new file mode 100644 index 0000000..21a5ae7 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustDetailActivity.kt @@ -0,0 +1,50 @@ +package com.casic.xz.meterage.view.home + +import androidx.fragment.app.Fragment +import com.casic.xz.meterage.R +import com.casic.xz.meterage.adapter.SubViewPagerAdapter +import com.casic.xz.meterage.extensions.initLayoutImmersionBar +import com.casic.xz.meterage.fragment.entrust.BasicInformationFragment +import com.casic.xz.meterage.fragment.entrust.LogRecordFragment +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_entrust_detail.* +import kotlinx.android.synthetic.main.include_base_title.* + +class EntrustDetailActivity : KotlinBaseActivity() { + + private var fragmentPages: ArrayList = ArrayList() + + override fun initData() { + val entrustId = intent.getStringExtra(Constant.INTENT_PARAM)!! + + fragmentPages.add(BasicInformationFragment(entrustId)) + fragmentPages.add(LogRecordFragment()) + + val entrustPageTitles = arrayOf("基础信息", "日志记录") + + entrustViewPager.adapter = SubViewPagerAdapter( + supportFragmentManager, fragmentPages, entrustPageTitles + ) + entrustViewPager.offscreenPageLimit = fragmentPages.size + //绑定 + topTabLayout.setupWithViewPager(entrustViewPager) + } + + override fun initEvent() { + leftBackView.setOnClickListener { finish() } + } + + override fun initLayoutView(): Int = R.layout.activity_entrust_detail + + override fun observeRequestState() { + + } + + override fun setupTopBarLayout() { + ImmersionBar.with(this).statusBarDarkFont(true).init() + initLayoutImmersionBar(rootView) + titleView.text = "委托需求" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt index 763a6fb..6116ad7 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/search/SearchEntrustResultActivity.kt @@ -8,9 +8,11 @@ import com.casic.xz.meterage.extensions.showEmptyPage import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.LoadingDialogHub +import com.casic.xz.meterage.view.home.EntrustDetailActivity import com.casic.xz.meterage.vm.EntrustViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.WeakReferenceHandler @@ -124,7 +126,7 @@ entrustAdapter.notifyDataSetChanged() } else { if (dataBeans.size == 0) { - emptyView!!.showEmptyPage("无新的委托需求") { + emptyView!!.showEmptyPage("无符合条件的委托需求") { pageIndex = 1 getEntrustListByPage() } @@ -136,7 +138,7 @@ EntrustAdapter.OnItemClickListener { override fun onStateViewClicked(position: Int) { val rowsModel = dataBeans[position] -// navigatePageTo(rowsModel.id) + navigatePageTo(rowsModel.id) } }) } diff --git a/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt new file mode 100644 index 0000000..2997f78 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/DictionaryViewModel.kt @@ -0,0 +1,33 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.DictionaryModel +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel + +class DictionaryViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val dictionary = MutableLiveData() + + fun getDictionaryByCode(dictCode: String) = launch({ + val response = RetrofitServiceManager.getDictionaryByCode(dictCode) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + dictionary.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + it.cause.toString().show(BaseApplication.get()) + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt index 561623f..0058475 100644 --- a/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt +++ b/app/src/main/java/com/casic/xz/meterage/vm/EntrustViewModel.kt @@ -4,6 +4,7 @@ import com.casic.xz.meterage.base.BaseApplication import com.casic.xz.meterage.extensions.separateResponseCode import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.EntrustDetailModel import com.casic.xz.meterage.model.EntrustListModel import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager import com.google.gson.Gson @@ -20,6 +21,7 @@ private val gson by lazy { Gson() } val entrustList = MutableLiveData() + val entrustDetail = MutableLiveData() fun getEntrustList( customerName: String, @@ -60,4 +62,22 @@ loadState.value = LoadState.Fail it.cause.toString().show(BaseApplication.get()) }) + + fun getEntrustDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getEntrustDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + entrustDetail.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_entrust_detail.xml b/app/src/main/res/layout/activity_entrust_detail.xml new file mode 100644 index 0000000..734c2bc --- /dev/null +++ b/app/src/main/res/layout/activity_entrust_detail.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_meterage_train_detail.xml b/app/src/main/res/layout/activity_meterage_train_detail.xml index 8829ff9..67ed6ef 100644 --- a/app/src/main/res/layout/activity_meterage_train_detail.xml +++ b/app/src/main/res/layout/activity_meterage_train_detail.xml @@ -8,6 +8,11 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_entrust_log.xml b/app/src/main/res/layout/fragment_entrust_log.xml new file mode 100644 index 0000000..77d9ef6 --- /dev/null +++ b/app/src/main/res/layout/fragment_entrust_log.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_certificate_type_rv_l.xml b/app/src/main/res/layout/item_certificate_type_rv_l.xml new file mode 100644 index 0000000..e68d12d --- /dev/null +++ b/app/src/main/res/layout/item_certificate_type_rv_l.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_customer_sample_rv_l.xml b/app/src/main/res/layout/item_customer_sample_rv_l.xml new file mode 100644 index 0000000..474b89b --- /dev/null +++ b/app/src/main/res/layout/item_customer_sample_rv_l.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 786ec55..e4cca23 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -28,6 +28,7 @@ 55dp 60dp 75dp + 80dp 100dp 125dp 150dp