Browse Source

2024-08-30 新增 / 修改

新增:
1. 提成确认 功能实现

修改:
1. 项目结构修改,部分代码逻辑修改
zhaiy 10 months ago
parent
commit
60e1bae9f7
22 changed files with 720 additions and 53 deletions
  1. 128 0
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/adapter/CommissionConfirmListAdapter.kt
  2. 14 0
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/entity/CommissionConfirmListItem.kt
  3. 11 0
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/CommissionConfirmListRequest.kt
  4. 9 0
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/CommissionConfirmListResponse.kt
  5. 3 0
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/UpdateCommissionStatusRequest.kt
  6. 0 3
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentDetailRequest.kt
  7. 1 1
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/entity/InsurancePaymentListItem.kt
  8. 3 0
      app/src/main/java/com/pan_american/android/data/model/group_visa/insurance_payment_insert/network/InsurancePaymentDetailRequest.kt
  9. 2 2
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentDetailResponse.kt
  10. 1 1
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentListRequest.kt
  11. 2 2
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentListResponse.kt
  12. 1 1
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentResourceRequest.kt
  13. 1 1
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentResourceResponse.kt
  14. 1 1
      app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/UpdateInsurancePaymentRequest.kt
  15. 22 7
      app/src/main/java/com/pan_american/android/data/network/APIService.kt
  16. 229 0
      app/src/main/java/com/pan_american/android/ui/group_common/commission_confirm/CommissionConfirmActivity.kt
  17. 0 6
      app/src/main/java/com/pan_american/android/ui/group_invite_official/official_visits/AddOfficialVisitsActivity.kt
  18. 5 5
      app/src/main/java/com/pan_american/android/ui/group_visa/insurance_payment_insert/AddInsurancePaymentActivity.kt
  19. 3 3
      app/src/main/java/com/pan_american/android/ui/group_visa/insurance_payment_insert/InsuranceListFragment.kt
  20. 11 20
      app/src/main/res/layout/activity_commission_confirm.xml
  21. 263 0
      app/src/main/res/layout/item_commission_confirm_list.xml
  22. 10 0
      app/src/main/res/values/strings.xml

+ 128 - 0
app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/adapter/CommissionConfirmListAdapter.kt

@@ -0,0 +1,128 @@
+package com.pan_american.android.data.model.group_common_modle.commission_confirm.adapter
+
+import android.graphics.Color
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.core.content.res.ResourcesCompat
+import androidx.recyclerview.widget.RecyclerView
+import com.pan_american.android.OASystem
+import com.pan_american.android.R
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.entity.CommissionConfirmListItem
+
+class CommissionConfirmListAdapter(private val itemList: ArrayList<CommissionConfirmListItem>): RecyclerView.Adapter<CommissionConfirmListAdapter.ViewHolder>() {
+
+    lateinit var onItemClick: OnItemClick
+
+    inner class ViewHolder(view: View): RecyclerView.ViewHolder(view) {
+
+        val groupName: TextView = view.findViewById(R.id.group_name)
+        val customerLevel: TextView = view.findViewById(R.id.customer_level)
+        val endDate: TextView = view.findViewById(R.id.end_date)
+        val commissionAmount: TextView = view.findViewById(R.id.commission_amount)
+        val commissionDetail: TextView = view.findViewById(R.id.commission_detail)
+        val confirmStatus: TextView = view.findViewById(R.id.confirm_status)
+        val confirmIcon: ImageView = view.findViewById(R.id.confirm_icon)
+        val deliverStatus: TextView = view.findViewById(R.id.deliver_status)
+        val deliverIcon: ImageView = view.findViewById(R.id.deliver_icon)
+        val confirmCheck: TextView = view.findViewById(R.id.confirm_check)
+
+    }
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+
+        val view = LayoutInflater.from(OASystem.context).inflate(R.layout.item_commission_confirm_list, parent, false)
+
+        val viewHolder = ViewHolder(view)
+
+        viewHolder.commissionDetail.setOnClickListener {
+            onItemClick.itemDetailClick(viewHolder.absoluteAdapterPosition)
+        }
+
+        viewHolder.confirmCheck.setOnClickListener {
+            onItemClick.itemConfirmClick(viewHolder.absoluteAdapterPosition)
+        }
+
+        return viewHolder
+    }
+
+    override fun getItemCount() = itemList.size
+
+    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+
+        val item = itemList[position]
+
+        item.apply {
+            holder.groupName.text = teamName
+            holder.customerLevel.text = teamLvStr
+            holder.endDate.text = visitDate.substring(0, 10)
+            holder.commissionAmount.text = price.toString()
+
+            when(isConfirm) {
+                0 -> {
+                    holder.confirmStatus.apply {
+                        text = resources.getString(R.string.unconfirmed)
+                        setTextColor(Color.rgb(23, 171, 227))
+                    }
+
+                    holder.confirmIcon.setImageResource(R.mipmap.icon_wait)
+                }
+
+                1 -> {
+                    holder.confirmStatus.apply {
+                        text = resources.getString(R.string.confirmed)
+                        setTextColor(Color.rgb(84, 213, 77))
+                    }
+
+                    holder.confirmIcon.setImageResource(R.mipmap.icon_passed)
+                }
+            }
+
+            when(isSeed) {
+                0 -> {
+                    holder.deliverStatus.apply {
+                        text = resources.getString(R.string.undelivered)
+                        setTextColor(Color.rgb(23, 171, 227))
+                    }
+
+                    holder.deliverIcon.setImageResource(R.mipmap.icon_wait)
+                }
+
+                1 -> {
+                    holder.deliverStatus.apply {
+                        text = resources.getString(R.string.delivered)
+                        setTextColor(Color.rgb(84, 213, 77))
+                    }
+
+                    holder.deliverIcon.setImageResource(R.mipmap.icon_passed)
+                }
+            }
+
+            when(isConfirm) {
+                0 -> {
+                    holder.confirmCheck.apply {
+                        background = ResourcesCompat.getDrawable(resources, R.drawable.shape_corner_solid_blue, null)
+                        text = resources.getString(R.string.commission_confirm)
+                    }
+                }
+
+                1 -> {
+                    holder.confirmCheck.apply {
+                        background = ResourcesCompat.getDrawable(resources, R.drawable.shape_corner_reset_button, null)
+                        text = resources.getString(R.string.confirmed)
+                    }
+                }
+            }
+        }
+
+    }
+
+    interface OnItemClick {
+
+        fun itemDetailClick(position: Int)
+
+        fun itemConfirmClick(position: Int)
+    }
+}

+ 14 - 0
app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/entity/CommissionConfirmListItem.kt

@@ -0,0 +1,14 @@
+package com.pan_american.android.data.model.group_common_modle.commission_confirm.entity
+
+class CommissionConfirmListItem {
+    val price = 0.0
+    val chiArr = ArrayList<String>()
+    var isConfirm = 0
+    val id = 0
+    val teamId = 0
+    val teamName = ""
+    val teamLvStr = ""
+    val temp = ""
+    val visitDate = ""
+    var isSeed = 0
+}

+ 11 - 0
app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/CommissionConfirmListRequest.kt

@@ -0,0 +1,11 @@
+package com.pan_american.android.data.model.group_common_modle.commission_confirm.network
+
+import com.pan_american.android.OASystem
+
+class CommissionConfirmListRequest {
+    val userId = OASystem.userInfo.userId
+    var startDate = ""
+    var endDate = ""
+    var confirm = 0
+    var send = 0
+}

+ 9 - 0
app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/CommissionConfirmListResponse.kt

@@ -0,0 +1,9 @@
+package com.pan_american.android.data.model.group_common_modle.commission_confirm.network
+
+import com.pan_american.android.base.BaseResponse
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.entity.CommissionConfirmListItem
+
+class CommissionConfirmListResponse(val data: Data): BaseResponse() {
+
+    inner class Data(val list: ArrayList<CommissionConfirmListItem>, val costPrice: Double)
+}

+ 3 - 0
app/src/main/java/com/pan_american/android/data/model/group_common_modle/commission_confirm/network/UpdateCommissionStatusRequest.kt

@@ -0,0 +1,3 @@
+package com.pan_american.android.data.model.group_common_modle.commission_confirm.network
+
+class UpdateCommissionStatusRequest(val data: ArrayList<Int>, val state: Int = 1)

+ 0 - 3
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentDetailRequest.kt

@@ -1,3 +0,0 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
-
-class InsurancePaymentDetailRequest(val id: Int)

+ 1 - 1
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/entity/InsurancePaymentListItem.kt

@@ -1,4 +1,4 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.entity
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.entity
 
 class InsurancePaymentListItem {
 

+ 3 - 0
app/src/main/java/com/pan_american/android/data/model/group_visa/insurance_payment_insert/network/InsurancePaymentDetailRequest.kt

@@ -0,0 +1,3 @@
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
+
+class InsurancePaymentDetailRequest(val id: Int)

+ 2 - 2
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentDetailResponse.kt

@@ -1,8 +1,8 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.base.BaseResponse
 import com.pan_american.android.data.model.common.entity.CardPaymentResource
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.entity.InsurancePaymentListItem
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.entity.InsurancePaymentListItem
 
 class InsurancePaymentDetailResponse(val data: Data): BaseResponse() {
 

+ 1 - 1
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentListRequest.kt

@@ -1,4 +1,4 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.base.BaseRequest
 

+ 2 - 2
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentListResponse.kt

@@ -1,7 +1,7 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.base.BaseResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.entity.InsurancePaymentListItem
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.entity.InsurancePaymentListItem
 
 class InsurancePaymentListResponse(val data: Data): BaseResponse() {
 

+ 1 - 1
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentResourceRequest.kt

@@ -1,4 +1,4 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.base.BaseRequest
 

+ 1 - 1
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/InsurancePaymentResourceResponse.kt

@@ -1,4 +1,4 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.base.BaseResponse
 import com.pan_american.android.data.model.common.entity.Selector

+ 1 - 1
app/src/main/java/com/pan_american/android/data/model/group_common_modle/insurance_payment_insert/network/UpdateInsurancePaymentRequest.kt

@@ -1,4 +1,4 @@
-package com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network
+package com.pan_american.android.data.model.group_visa.insurance_payment_insert.network
 
 import com.pan_american.android.OASystem
 

+ 22 - 7
app/src/main/java/com/pan_american/android/data/network/APIService.kt

@@ -84,13 +84,9 @@ import com.pan_american.android.data.model.group_common_modle.bill_management.ne
 import com.pan_american.android.data.model.group_common_modle.bill_management.network.BillFileDownloadThisModelResponse
 import com.pan_american.android.data.model.group_common_modle.bill_management.network.BillFileListRequest
 import com.pan_american.android.data.model.group_common_modle.bill_management.network.BillFileListResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentDetailRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentDetailResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentListRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentListResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentResourceRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentResourceResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.UpdateInsurancePaymentRequest
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.CommissionConfirmListRequest
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.CommissionConfirmListResponse
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.UpdateCommissionStatusRequest
 import com.pan_american.android.data.model.group_hotel.hotel_payment_insert.entity.UpdateHotelPredetermine
 import com.pan_american.android.data.model.group_hotel.hotel_payment_insert.network.DeleteHotelPredetermineItemRequest
 import com.pan_american.android.data.model.group_hotel.hotel_payment_insert.network.GetHotelPredetermineDetailRequest
@@ -147,6 +143,13 @@ import com.pan_american.android.data.model.group_op.ground_convey_payment_insert
 import com.pan_american.android.data.model.group_op.ground_convey_payment_insert.network.GroundConveyPaymentResponse
 import com.pan_american.android.data.model.group_op.ground_convey_payment_insert.network.UpdateGroundConveyDetailRequest
 import com.pan_american.android.data.model.group_op.ground_convey_payment_insert.network.UpdateGroundConveyRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentDetailRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentDetailResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentListRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentListResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentResourceRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentResourceResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.UpdateInsurancePaymentRequest
 import com.pan_american.android.data.model.group_visa.visa_payment_insert.network.UpdateVisaPaymentRequest
 import com.pan_american.android.data.model.group_visa.visa_payment_insert.network.VisaPaymentDetailRequest
 import com.pan_american.android.data.model.group_visa.visa_payment_insert.network.VisaPaymentDetailResponse
@@ -1018,4 +1021,16 @@ interface APIService {
      */
     @POST("api/Resource/OfficialActivitiesInviteOperation")
     fun updateOfficialVisitCheckCommit(@Body updateOfficialVisitCheckCommitRequest: UpdateOfficialVisitCheckCommitRequest):Call<BaseResponse>
+
+    /**
+     * 提成确认,查询提成列表
+     */
+    @POST("api/Financial/QueryRoyaltyInfo")
+    fun getCommissionConfirmList(@Body commissionConfirmListRequest: CommissionConfirmListRequest): Call<CommissionConfirmListResponse>
+
+    /**
+     * 提成确认,个人确认提成
+     */
+    @POST("api/Financial/RoyaltyConfirmByUser")
+    fun updateCommissionConfirmStatus(@Body updateCommissionStatusRequest: UpdateCommissionStatusRequest): Call<BaseResponse>
 }

+ 229 - 0
app/src/main/java/com/pan_american/android/ui/group_common/commission_confirm/CommissionConfirmActivity.kt

@@ -1,29 +1,75 @@
 package com.pan_american.android.ui.group_common.commission_confirm
 
 import android.os.Bundle
+import android.view.Gravity
 import android.view.View
+import android.view.ViewGroup
+import android.widget.PopupWindow
+import android.widget.TextView
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import com.pan_american.android.OASystem
 import com.pan_american.android.R
 import com.pan_american.android.base.BaseActivity
+import com.pan_american.android.base.BaseResponse
+import com.pan_american.android.base.CustomAlertDialog
+import com.pan_american.android.base.ListAdapter
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.adapter.CommissionConfirmListAdapter
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.entity.CommissionConfirmListItem
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.CommissionConfirmListRequest
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.CommissionConfirmListResponse
+import com.pan_american.android.data.model.group_common_modle.commission_confirm.network.UpdateCommissionStatusRequest
+import com.pan_american.android.data.network.APIService
+import com.pan_american.android.data.network.ServiceCreator
 import com.pan_american.android.databinding.ActivityCommissionConfirmBinding
+import com.pan_american.android.databinding.LayoutTitleBinding
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
 
 class CommissionConfirmActivity : BaseActivity<ActivityCommissionConfirmBinding>() {
 
+    private lateinit var titleBinding: LayoutTitleBinding
+
+    private val apiService = ServiceCreator.create<APIService>()
+
+    private val commissionConfirmListRequest = CommissionConfirmListRequest()
+
+    private val commissionConfirmList = ArrayList<CommissionConfirmListItem>()
+
+    private var listInit = false
+
     override fun getViewBinding() = ActivityCommissionConfirmBinding.inflate(layoutInflater)
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        screenAdaptation(binding)
 
+        initTitle()
         initViews()
         initEvents()
     }
 
+    override fun initTitle() {
+
+        titleBinding = LayoutTitleBinding.bind(binding.root).apply {
+
+            titleText.text = resources.getString(R.string.commission_confirm)
+
+            backButton.setOnClickListener {
+
+                back()
+            }
+        }
+    }
+
     override fun initViews() {
 
         binding.companyName.text = OASystem.userInfo.companyName
         binding.department.text = OASystem.userInfo.depName
         binding.staff.text = OASystem.userInfo.cnName
         binding.commit.setText(resources.getString(R.string.search))
+
     }
 
     override fun initEvents() {
@@ -50,10 +96,193 @@ class CommissionConfirmActivity : BaseActivity<ActivityCommissionConfirmBinding>
 
         binding.commit.setOnClickListener {
 
+            if (binding.startTime.text.isNullOrBlank()) {
+                showMessage(resources.getString(R.string.start_time_select_hint))
+                return@setOnClickListener
+            } else {
+                commissionConfirmListRequest.startDate = binding.startTime.text.toString()
+            }
+
+            if (binding.startTime.text.isNullOrBlank()) {
+                showMessage(resources.getString(R.string.end_time_select_hint))
+                return@setOnClickListener
+            } else {
+                commissionConfirmListRequest.endDate = binding.endTime.text.toString()
+            }
+
+            when(binding.confirmStatus.checkedRadioButtonId) {
+
+                binding.confirmAll.id -> {
+                    commissionConfirmListRequest.confirm = -1
+                }
+
+                binding.confirmed.id -> {
+                    commissionConfirmListRequest.confirm = 1
+                }
+
+                binding.unconfirmed.id -> {
+                    commissionConfirmListRequest.confirm = 0
+                }
+            }
+
+            when(binding.deliverStatus.checkedRadioButtonId) {
+
+                binding.deliverAll.id -> {
+                    commissionConfirmListRequest.send = -1
+                }
+
+                binding.delivered.id -> {
+                    commissionConfirmListRequest.send = 1
+                }
+
+                binding.undelivered.id -> {
+                    commissionConfirmListRequest.send = 0
+                }
+            }
+
+            if (listInit) {
+
+                binding.commissionConfirmList.adapter!!.notifyItemRangeRemoved(0, commissionConfirmList.size)
+
+                commissionConfirmList.clear()
+
+                listInit = false
+            }
+
+            getCommissionConfirmList()
         }
     }
 
     private fun getCommissionConfirmList() {
 
+        apiService.getCommissionConfirmList(commissionConfirmListRequest).enqueue(object : Callback<CommissionConfirmListResponse> {
+            override fun onResponse(
+                call: Call<CommissionConfirmListResponse>,
+                response: Response<CommissionConfirmListResponse>
+            ) {
+
+                val listResponse = response.body()
+
+                if (listResponse != null) {
+                    if (listResponse.code == 200) {
+
+                        for (item in listResponse.data.list) {
+                            commissionConfirmList.add(item)
+                        }
+
+                        binding.totalText.text = String.format(resources.getString(R.string.total_text_format), listResponse.data.costPrice)
+
+                        initList()
+
+                    } else {
+                        showMessage(listResponse.msg)
+                    }
+                }
+            }
+
+            override fun onFailure(p0: Call<CommissionConfirmListResponse>, p1: Throwable) {
+                showErrorInfo(R.string.commission_confirm_list_get_error)
+            }
+        })
+    }
+
+    private fun initList() {
+
+        if (commissionConfirmList.size == 0) {
+            showMessage(resources.getString(R.string.no_data))
+            listInit = false
+            return
+        }
+
+        val layoutManager = LinearLayoutManager(OASystem.context)
+
+        binding.commissionConfirmList.layoutManager = layoutManager
+
+        val adapter = CommissionConfirmListAdapter(commissionConfirmList)
+
+        adapter.onItemClick = object : CommissionConfirmListAdapter.OnItemClick {
+            override fun itemDetailClick(position: Int) {
+
+                val picturePreViewPopView = View.inflate(OASystem.context, R.layout.popup_recycler_view, null)
+                popupWindow = PopupWindow(picturePreViewPopView, ViewGroup.LayoutParams.MATCH_PARENT, binding.root.height * 3 / 4)
+
+                showPopupWindow {
+
+                    val recyclerTitle = picturePreViewPopView.findViewById<TextView>(R.id.recycler_title)
+                    val recyclerView = picturePreViewPopView.findViewById<RecyclerView>(R.id.recycler_view)
+
+                    recyclerTitle.text = resources.getString(R.string.commission_detail)
+
+                    recyclerView.layoutManager = LinearLayoutManager(OASystem.context)
+
+                    val commissionDetailAdapter = ListAdapter.Builder<String>().apply {
+                        setData(commissionConfirmList[position].chiArr)
+                        setLayoutId(R.layout.item_selector)
+                        addBindView { itemView, data ->
+                            itemView.findViewById<TextView>(R.id.selector_item_name).text = data
+                        }
+                    }.create()
+
+                    recyclerView.adapter = commissionDetailAdapter
+
+                    popupWindow.showAtLocation(binding.root, Gravity.BOTTOM, 0, 0)
+                }
+            }
+
+            override fun itemConfirmClick(position: Int) {
+
+                if (commissionConfirmList[position].isConfirm == 0) {
+                    CustomAlertDialog.Builder(OASystem.context).apply {
+                        setTitle(resources.getString(R.string.hint))
+                        setMessage(String.format(resources.getString(R.string.commission_confirm_hint), commissionConfirmList[position].teamName, commissionConfirmList[position].temp))
+                        setNegativeButtonAndListener(resources.getString(R.string.cancel)) { dialog, _ ->
+                            dialog.dismiss()
+                        }
+                        setPositiveButtonAndListener(resources.getString(R.string.confirm)) { _, _ ->
+                            updateCheckState(position)
+                        }
+                    }.show()
+                }
+            }
+        }
+
+        binding.commissionConfirmList.adapter = adapter
+
+        listInit = true
+    }
+
+    private fun updateCheckState(position: Int) {
+
+        apiService.updateCommissionConfirmStatus(UpdateCommissionStatusRequest(arrayListOf(commissionConfirmList[position].id))).enqueue(object : Callback<BaseResponse> {
+            override fun onResponse(p0: Call<BaseResponse>, response: Response<BaseResponse>) {
+
+                val updateResponse = response.body()
+
+                if (updateResponse != null) {
+                    if (updateResponse.code == 200) {
+
+                        showMessage(resources.getString(R.string.confirm_success))
+
+                        if (listInit) {
+
+                            binding.commissionConfirmList.adapter!!.notifyItemRangeRemoved(0, commissionConfirmList.size)
+
+                            commissionConfirmList.clear()
+
+                            listInit = false
+                        }
+
+                        getCommissionConfirmList()
+
+                    } else {
+                        showMessage(updateResponse.msg)
+                    }
+                }
+            }
+
+            override fun onFailure(p0: Call<BaseResponse>, p1: Throwable) {
+                showErrorInfo(R.string.commission_confirm_status_change_error)
+            }
+        })
     }
 }

+ 0 - 6
app/src/main/java/com/pan_american/android/ui/group_invite_official/official_visits/AddOfficialVisitsActivity.kt

@@ -938,12 +938,6 @@ class AddOfficialVisitsActivity : BaseActivity<ActivityAddOfficialVisitsBinding>
                         }
                     }.create()
 
-                    picturePreviewAdapter.onRecyclerViewItemClick = object : ListAdapter.OnRecyclerViewItemClick<PictureListItem> {
-                        override fun onItemClick(position: Int) {
-
-                        }
-                    }
-
                     recyclerView.adapter = picturePreviewAdapter
 
                     popupWindow.showAtLocation(binding.root, Gravity.BOTTOM, 0, 0)

+ 5 - 5
app/src/main/java/com/pan_american/android/ui/group_visa/insurance_payment_insert/AddInsurancePaymentActivity.kt

@@ -16,11 +16,11 @@ import com.pan_american.android.base.ListAdapter
 import com.pan_american.android.data.model.common.entity.Selector
 import com.pan_american.android.data.model.common.network.GroupClientListRequest
 import com.pan_american.android.data.model.common.network.GroupClientListResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentDetailRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentDetailResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentResourceRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentResourceResponse
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.UpdateInsurancePaymentRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentDetailRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentDetailResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentResourceRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentResourceResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.UpdateInsurancePaymentRequest
 import com.pan_american.android.data.network.APIService
 import com.pan_american.android.data.network.ServiceCreator
 import com.pan_american.android.databinding.ActivityAddInsurancePaymentBinding

+ 3 - 3
app/src/main/java/com/pan_american/android/ui/group_visa/insurance_payment_insert/InsuranceListFragment.kt

@@ -15,9 +15,9 @@ import com.pan_american.android.base.BaseResponse
 import com.pan_american.android.base.CardAdapter
 import com.pan_american.android.base.CustomAlertDialog
 import com.pan_american.android.data.model.common.network.DeleteRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.entity.InsurancePaymentListItem
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentListRequest
-import com.pan_american.android.data.model.group_common_modle.insurance_payment_insert.network.InsurancePaymentListResponse
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.entity.InsurancePaymentListItem
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentListRequest
+import com.pan_american.android.data.model.group_visa.insurance_payment_insert.network.InsurancePaymentListResponse
 import com.pan_american.android.data.network.APIService
 import com.pan_american.android.data.network.ServiceCreator
 import com.pan_american.android.databinding.FragmentInsuranceListBinding

+ 11 - 20
app/src/main/res/layout/activity_commission_confirm.xml

@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/main"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/white"
+    android:background="@color/background_color"
     android:orientation="vertical"
     tools:context=".ui.group_common.commission_confirm.CommissionConfirmActivity">
 
@@ -357,28 +356,20 @@
 
     </LinearLayout>
 
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:id="@+id/daily_payment_container"
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/commission_confirm_list"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_margin="@dimen/common_padding"
         android:layout_weight="1"
-        app:srlEnablePreviewInEditMode="true">
+        android:overScrollMode="never" />
 
-        <com.scwang.smart.refresh.header.ClassicsHeader
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/daily_payment_list"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:overScrollMode="never" />
-
-        <com.scwang.smart.refresh.footer.ClassicsFooter
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+    <TextView
+        android:id="@+id/total_text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:textColor="@color/text_color"
+        android:layout_margin="@dimen/common_padding"
+        android:textSize="@dimen/text_size_small" />
 
 </LinearLayout>

+ 263 - 0
app/src/main/res/layout/item_commission_confirm_list.xml

@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="@dimen/common_padding"
+    android:layout_marginBottom="@dimen/common_padding"
+    android:background="@drawable/shape_corner_stroke_white"
+    android:orientation="vertical"
+    tools:viewBindingIgnore="true">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/common_padding"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/group_name"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:maxLines="1"
+            android:textColor="@color/text_color_blue"
+            android:textSize="@dimen/text_size_medium"
+            android:textStyle="bold" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:text="@string/customer_level"
+                android:textSize="@dimen/text_size_medium" />
+
+            <TextView
+                android:id="@+id/customer_level"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:background="@color/white"
+                android:gravity="end"
+                android:singleLine="true"
+                android:textSize="@dimen/text_size_medium" />
+
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding_huge"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:text="@string/end_date"
+                android:textSize="@dimen/text_size_medium" />
+
+            <TextView
+                android:id="@+id/end_date"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:background="@color/white"
+                android:gravity="end"
+                android:singleLine="true"
+                android:textSize="@dimen/text_size_medium" />
+
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding_huge"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:text="@string/commission_amount"
+                android:textSize="@dimen/text_size_medium" />
+
+            <TextView
+                android:id="@+id/commission_amount"
+                android:layout_width="0dp"
+                android:layout_height="match_parent"
+                android:layout_weight="1"
+                android:background="@color/white"
+                android:gravity="end"
+                android:singleLine="true"
+                android:textSize="@dimen/text_size_medium" />
+
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding_huge"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_weight="3"
+                android:text="@string/commission_detail"
+                android:textSize="@dimen/text_size_medium" />
+
+            <TextView
+                android:id="@+id/commission_detail"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:background="@drawable/shape_corner_solid_blue"
+                android:gravity="center"
+                android:padding="@dimen/common_padding_small"
+                android:singleLine="true"
+                android:text="@string/click_to_read"
+                android:textColor="@color/white"
+                android:textSize="@dimen/text_size_medium" />
+
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding_huge"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="start"
+                android:text="@string/confirm_status"
+                android:textSize="@dimen/text_size_medium" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="end">
+
+                <TextView
+                    android:id="@+id/confirm_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/verify_passed"
+                    android:textColor="@color/passed"
+                    android:textSize="@dimen/text_size_medium" />
+
+                <ImageView
+                    android:id="@+id/confirm_icon"
+                    android:layout_width="@dimen/common_padding_huge"
+                    android:layout_height="@dimen/common_padding_huge"
+                    android:layout_gravity="center"
+                    android:layout_marginStart="@dimen/common_padding_small"
+                    android:src="@mipmap/icon_passed"
+                    tools:ignore="ContentDescription" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="@dimen/common_padding_huge"
+            android:layout_marginBottom="@dimen/common_padding"
+            android:background="@color/line_color" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/common_padding"
+            android:layout_marginBottom="@dimen/common_padding_huge"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="start"
+                android:text="@string/deliver_status"
+                android:textSize="@dimen/text_size_medium" />
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="end">
+
+                <TextView
+                    android:id="@+id/deliver_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/verify_passed"
+                    android:textColor="@color/passed"
+                    android:textSize="@dimen/text_size_medium" />
+
+                <ImageView
+                    android:id="@+id/deliver_icon"
+                    android:layout_width="@dimen/common_padding_huge"
+                    android:layout_height="@dimen/common_padding_huge"
+                    android:layout_gravity="center"
+                    android:layout_marginStart="@dimen/common_padding_small"
+                    android:src="@mipmap/icon_passed"
+                    tools:ignore="ContentDescription" />
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+        <TextView
+            android:id="@+id/confirm_check"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/button_height"
+            android:gravity="center"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_size_large" />
+
+    </LinearLayout>
+
+</LinearLayout>

+ 10 - 0
app/src/main/res/values/strings.xml

@@ -1112,6 +1112,16 @@
     <string name="delivered">已发放</string>
     <string name="undelivered">未发放</string>
 
+    <string name="total_text_format">该时间段提成总额: %.2f</string>
+    
+    <string name="commission_amount">提成金额</string>
+    <string name="commission_detail">提成明细</string>
+
+    <string name="commission_confirm_hint">提成确认: \n\n团组名称: %s\n\n提成明细: %S\n\n点击确认以确认提成无误</string>
+
+    <string name="commission_confirm_list_get_error">查询提成确认列表失败</string>
+    <string name="commission_confirm_status_change_error">提成个人确认失败</string>
+
     <!-- TODO: Remove or change this placeholder text -->
     <string name="hello_blank_fragment">Hello blank fragment</string>