添加订单发票状态

This commit is contained in:
wangyu 2026-01-16 10:51:56 +08:00
parent 5ac719d5bb
commit 19c8c578c4
7 changed files with 124 additions and 17 deletions

View File

@ -36,4 +36,7 @@ class ConfigEntity {
@SerializedName("client.pay.type") //全局支付方式
var payType: List<String> = emptyList()
@SerializedName("client.invoice.urgent.interval.minutes") //加急开票间隔分钟数
var invoiceIntervalMinutes: String? = null
}

View File

@ -3,11 +3,12 @@ package com.cheng.blzb.bean
import java.io.Serializable
data class OrderEntity(
val id: String,
val create_time: String,
val goods_name: String,
val id: String,
val invoice_major: Boolean,
val invoice_status: String,
val invoice_url: String,
val out_trade_no: String,
val pay_params: String,
val pay_time: String,

View File

@ -85,6 +85,7 @@ object UserConfigManager {
saveAdSwitch(data.config!!.adSwitch)
saveServicePhoneList(data.config!!.servicePhoneList)
savePayType(data.config!!.payType)
saveInvoiceIntervalTime(data.config!!.invoiceIntervalMinutes)
}
} catch (e : Exception) {
e.printStackTrace()
@ -229,6 +230,17 @@ object UserConfigManager {
return emptyList()
}
/**
* 加急开票间隔时间
*/
private fun saveInvoiceIntervalTime(minutes: String?) {
MMKVUtils.put("invoice_interval_time", minutes)
}
fun getInvoiceIntervalTime(): String? {
return MMKVUtils.getString("invoice_interval_time")
}
/**
* 搜索排序
*/

View File

@ -3,10 +3,12 @@ package com.cheng.blzb.ui.fragment.mine.order.invoice
import android.graphics.Color
import android.os.Build
import android.text.TextUtils
import android.view.View
import com.cheng.blzb.R
import com.cheng.blzb.bean.OrderEntity
import com.cheng.blzb.databinding.FragmentInvoiceBinding
import com.cheng.blzb.event.OrderEvent
import com.efs.sdk.memleaksdk.monitor.internal.bi
import com.example.base.common.RxBus
import com.example.base.extensions.gone
import com.example.base.extensions.onClick
@ -37,6 +39,9 @@ class InvoiceFragment : BaseFragment<FragmentInvoiceBinding, InvoiceViewModel>()
arguments?.getSerializable("item") as? OrderEntity
}
binding.rb2.visibility = if (orderInfo!!.invoice_major) View.VISIBLE else View.GONE
binding.tv2.visibility = if (orderInfo!!.invoice_major) View.VISIBLE else View.GONE
binding.tvAmount.text = DecimalFormat("0.00").format(orderInfo!!.total_fee.toFloat())
}

View File

@ -1,11 +1,13 @@
package com.cheng.blzb.ui.fragment.mine.order.list
import android.graphics.Color
import android.text.TextUtils
import androidx.core.graphics.toColorInt
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.cheng.blzb.R
import com.cheng.blzb.bean.OrderEntity
import com.cheng.blzb.manager.UserConfigManager
import com.cheng.blzb.utils.DateUtils
import com.cheng.blzb.widget.CommonShapeView
import java.text.DecimalFormat
@ -41,38 +43,72 @@ class OrderAdapter : BaseQuickAdapter<OrderEntity, BaseViewHolder>(R.layout.list
when (item.status) {
"1" -> {
status.text = "待支付"
status.setTextColor(Color.parseColor("#FF4C4C"))
status.setBgColor(Color.parseColor("#FFEDED"))
status.setTextColor("#FF4C4C".toColorInt())
status.setBgColor("#FFEDED".toColorInt())
if (item.pay_type == "bank") {
holder.setVisible(R.id.btn_certificate, true)
}
}
"2" -> {
status.text = "已支付"
status.setTextColor(Color.parseColor("#2090FE"))
status.setBgColor(Color.parseColor("#E8F3FE"))
if (item.invoice_status == "1") {
holder.setVisible(R.id.btn_invoice, true)
when (item.invoice_status) {
"1" -> { //1未开票 2开票中 3催开票4开票完成
status.text = "已支付"
status.setTextColor("#2090FE".toColorInt())
status.setBgColor("#E8F3FE".toColorInt())
holder.setText(R.id.btn_invoice, "开具发票")
holder.setVisible(R.id.btn_invoice, true)
}
"2" -> {
status.text = "开票中"
status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor("#1AFF9B2F".toColorInt())
val intervalMinutes = UserConfigManager.getInvoiceIntervalTime()
val intervalTime = if (!TextUtils.isEmpty(intervalMinutes)) {
intervalMinutes!!.toInt() * 60 * 1000L
} else {
3 * 24 * 60 * 60 * 1000L
}
val payTime = DateUtils.strDateToLong(item.pay_time, "yyyy-MM-dd HH:mm:ss")
if (intervalTime + payTime <= System.currentTimeMillis()) {
holder.setText(R.id.btn_invoice, "加急开票")
holder.setVisible(R.id.btn_invoice, true)
}
}
"3" -> {
status.text = "开票中"
status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor("#1AFF9B2F".toColorInt())
}
"4" -> {
status.text = "已开票"
status.setTextColor("#125FFE".toColorInt())
status.setBgColor("#E7EFFE".toColorInt())
holder.setText(R.id.btn_invoice, "查看发票")
holder.setVisible(R.id.btn_invoice, true)
}
}
}
"3" -> {
status.text = "已退款"
status.setTextColor(Color.parseColor("#CCCCCC"))
status.setBgColor(Color.parseColor("#EEEEEE"))
status.setTextColor("#CCCCCC".toColorInt())
status.setBgColor("#EEEEEE".toColorInt())
}
"4" -> {
status.text = "已取消"
status.setTextColor(Color.parseColor("#CCCCCC"))
status.setBgColor(Color.parseColor("#EEEEEE"))
status.setTextColor("#CCCCCC".toColorInt())
status.setBgColor("#EEEEEE".toColorInt())
}
"5" -> {
status.text = "待审核"
status.setTextColor(Color.parseColor("#FF9B2F"))
status.setBgColor(Color.parseColor("#1AFF9B2F"))
status.setTextColor("#FF9B2F".toColorInt())
status.setBgColor("#1AFF9B2F".toColorInt())
}
}
}

View File

@ -4,10 +4,14 @@ import android.os.Bundle
import com.cheng.blzb.R
import com.cheng.blzb.databinding.FragmentOrderListBinding
import com.cheng.blzb.event.OrderEvent
import com.cheng.blzb.manager.DialogEnum
import com.cheng.blzb.ui.activity.PublicActivity
import com.cheng.blzb.ui.dialog.TipDialog
import com.cheng.blzb.ui.fragment.mine.order.cert.CertificateFragment
import com.cheng.blzb.ui.fragment.mine.order.invoice.InvoiceFragment
import com.example.base.browser.BrowserActivity
import com.example.base.common.RxBus
import com.example.base.extensions.toast
import com.example.base.ui.BaseFragment
import com.example.base.widget.EmptyView
import com.example.base.widget.PageStatus
@ -51,8 +55,27 @@ class OrderListFragment : BaseFragment<FragmentOrderListBinding, OrderListViewMo
mAdapter.setOnItemChildClickListener { _, view, i ->
val item = mAdapter.getItem(i)
when (view.id) {
R.id.btn_invoice -> {
PublicActivity.start(requireContext(), InvoiceFragment::class.java, Pair("item", item))
R.id.btn_invoice -> { //1未开票 2开票中 3催开票4开票完成
when (item.invoice_status) {
"1" -> {
PublicActivity.start(requireContext(), InvoiceFragment::class.java, Pair("item", item))
}
"2" -> {
val f = TipDialog.newInstance("温馨提示", "发票正在开具中,确定要加急开票吗?")
f.setOnSelectListener {
if (it == DialogEnum.CLICK_OK) {
mViewModel.updateOrder(item.id)
}
}
f.show(childFragmentManager, TipDialog::class.java.simpleName)
}
"3" -> {
}
"4" -> {
BrowserActivity.start(requireContext(), "查看发票", item.invoice_url)
}
}
}
R.id.btn_certificate -> {
@ -74,6 +97,11 @@ class OrderListFragment : BaseFragment<FragmentOrderListBinding, OrderListViewMo
binding.mRefreshLayout.finishRefresh()
}
mViewModel.updateLiveData.observe(this) {
toast("已催促")
RxBus.defaultInstance.post(OrderEvent())
}
val orderEvent = RxBus.defaultInstance.toObservable(OrderEvent::class.java).subscribe {
binding.mRefreshLayout.autoRefresh()
}

View File

@ -6,9 +6,13 @@ import com.cheng.blzb.net.ApiFactory
import com.example.base.extensions.toast
import com.example.base.utils.L
import com.example.base.viewmodel.BaseViewModel
import com.google.gson.JsonObject
import okhttp3.RequestBody
import okhttp3.RequestBody.Companion.toRequestBody
class OrderListViewModel : BaseViewModel() {
val orderLiveData = MutableLiveData<List<OrderEntity>>()
val updateLiveData = MutableLiveData<Any>()
fun getOrderList(status: String) {
showDialog()
@ -24,4 +28,22 @@ class OrderListViewModel : BaseViewModel() {
L.d(it)
})
}
fun updateOrder(orderId: String) {
showDialog()
launchOnUiTryCatch({
val jsonObject = JsonObject()
jsonObject.addProperty("order_id", orderId)
jsonObject.addProperty("invoice_status", "3")
val response = ApiFactory.apiService.updateOrder(jsonObject.toString().toRequestBody())
if (response.status) {
updateLiveData.postValue(Any())
} else toast(response.message, true)
dismissDialog()
}, {
dismissDialog()
setError(it)
L.d(it)
})
}
}