From eb6124e310ae8875a0150ee5d2edd52d5a579d87 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期四, 02 七月 2026 17:08:21 +0800
Subject: [PATCH] 快件订单优化

---
 app/src/main/res/values-fr/strings.xml                                         |    5 
 app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt       |   35 +
 app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt |  196 +++++++--
 app/src/main/res/layout/item_show_picture.xml                                  |   15 
 app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java                |   13 
 app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java                  |    5 
 app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt          |   34 +
 app/src/main/res/layout/activity_order_over_small.xml                          |  141 ++++++
 app/src/main/res/layout/include_order_money.xml                                |    2 
 app/src/main/java/com/driver/igotrip/bean/OrderListBean.java                   |    2 
 app/src/main/res/values/colors.xml                                             |    1 
 app/src/main/java/com/driver/igotrip/bean/OrderBean.java                       |    2 
 app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt         |  234 ++++++++++++
 app/src/main/res/layout/item_media_operation.xml                               |   24 +
 app/src/main/java/com/driver/igotrip/netUtls/Api.java                          |   14 
 app/build.gradle                                                               |    3 
 app/src/main/res/layout/activity_show_picture.xml                              |   60 +++
 app/src/main/res/values/strings.xml                                            |    4 
 app/src/main/AndroidManifest.xml                                               |   25 
 app/src/main/res/layout/activity_mine_purse.xml                                |    2 
 app/src/main/res/drawable/shape_black1_bg_4.xml                                |    5 
 app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt           |    2 
 app/src/main/res/layout/activity_mine_income.xml                               |    2 
 app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt              |    9 
 app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt            |   72 +++
 app/src/main/res/layout/activity_media_operation.xml                           |   47 ++
 app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt  |   30 +
 app/src/main/res/layout/activity_order_over.xml                                |  149 +++++++
 app/src/main/res/values-en/strings.xml                                         |    4 
 app/src/main/res/mipmap-xxhdpi/icon_camera_box.png                             |    0 
 30 files changed, 1,026 insertions(+), 111 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 4117bf6..3f86244 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -180,7 +180,8 @@
 }
 
 dependencies {
-    implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
+    implementation 'androidx.activity:activity-ktx:1.8.0'
+    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
     implementation "com.facebook.soloader:soloader:0.12.1"
     implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
     implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.34'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 20ee3d3..90bfd7f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -52,9 +52,7 @@
         android:name="android.hardware.telephony"
         android:required="false" /> <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> -->
-    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
-
-    <!-- 诱导悬浮窗 -->
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <!-- 诱导悬浮窗 -->
     <uses-permission android:name="android.permission.MANAGE_OVERLAY_PERMISSION" />
 
     <application
@@ -69,6 +67,12 @@
         android:usesCleartextTraffic="true"
         tools:replace="android:allowBackup">
         <activity
+            android:name=".ui.main.ShowPictureActivity"
+            android:exported="false" />
+        <activity
+            android:name=".ui.main.MediaOperationActivity"
+            android:exported="false" />
+        <activity
             android:name=".base.gaode.NaviGoogleActivity"
             android:exported="false" />
         <activity
@@ -77,8 +81,6 @@
         <activity
             android:name=".ui.main.ChangPhoneActivity"
             android:exported="false" />
-
-
         <activity
             android:name=".ui.pub.StartActivity"
             android:exported="true">
@@ -88,18 +90,19 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".ui.GetImgActivity"
-            android:theme="@style/AppThemegetphoto"
-            android:exported="false">
-            <!--<intent-filter>
+            android:exported="false"
+            android:theme="@style/AppThemegetphoto">
+
+            <!--
+            <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>-->
+            </intent-filter>
+            -->
         </activity>
-
         <activity
             android:name=".ui.pub.BecomeDriverActivity"
             android:exported="false" />
diff --git a/app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java b/app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java
index 8bea1dd..fe943b8 100644
--- a/app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java
+++ b/app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java
@@ -357,6 +357,11 @@
         }
     }
 
+    //设置全屏模式
+    public void setFullScreenMode(boolean isFull) {
+        rl_header.setVisibility(isFull ? GONE : VISIBLE);
+        rl_title.setVisibility(isFull ? GONE : VISIBLE);
+    }
 
     private void init() {
         title_layout = (LinearLayout) findViewById(R.id.title_layout);
diff --git a/app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt b/app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
index a3fd2ae..092dfcd 100644
--- a/app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
@@ -105,7 +105,7 @@
                         }
                     }
                 } else {
-                    showToast("请在应用权限页面开启相机权限")
+                    showToast(getString(R.string.请在应用权限页面开启相机权限))
                 }
             }
 
diff --git a/app/src/main/java/com/driver/igotrip/bean/OrderBean.java b/app/src/main/java/com/driver/igotrip/bean/OrderBean.java
index b10dd7a..38f5e27 100644
--- a/app/src/main/java/com/driver/igotrip/bean/OrderBean.java
+++ b/app/src/main/java/com/driver/igotrip/bean/OrderBean.java
@@ -200,6 +200,8 @@
         public String audioUrl; // 接单时间 yyyy-MM-dd HH:mm:ss
         public String userPhone; // 包裹下单人的电话
         public int isFrozen; // 2已冻结
+        public String platformServerMoney; // 平台服务费
+        public String driverServerMoney; // 实际收入
 
         public String getSnatchOrderTime() {
             return snatchOrderTime;
diff --git a/app/src/main/java/com/driver/igotrip/bean/OrderListBean.java b/app/src/main/java/com/driver/igotrip/bean/OrderListBean.java
index f4cfea3..76bcf4b 100644
--- a/app/src/main/java/com/driver/igotrip/bean/OrderListBean.java
+++ b/app/src/main/java/com/driver/igotrip/bean/OrderListBean.java
@@ -49,8 +49,10 @@
         private String name;
         private double redMoney;
         private String startAddress;
+        //1=待接单,2=待出发,3=待到达预约地点,4=待取货,5=送货中,6=已送达,7=待支付,8=需补差价,9=已取货,10=已取消,11=改派中,12=已支付差价
         private int state;
         private String time;
+        //1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车
         private int type;
         private String remark;
         private String peopleNumber;
diff --git a/app/src/main/java/com/driver/igotrip/netUtls/Api.java b/app/src/main/java/com/driver/igotrip/netUtls/Api.java
index 764a6dc..8154b0c 100644
--- a/app/src/main/java/com/driver/igotrip/netUtls/Api.java
+++ b/app/src/main/java/com/driver/igotrip/netUtls/Api.java
@@ -7,13 +7,13 @@
  */
 
 public class Api {
-   // public static final String BASE_URL = "https://igo.i-go.group/driver-server/";
-   public static final String BASE_URL = "https://gopost.ci/driver-server/";
-//    public static final String BASE_URL = "http://221.182.45.100:5000/driver-server/";
-
-    public static final String SOCKET_SERVER = "34.155.170.245";
-//    public static final String SOCKET_SERVER = "221.182.45.100";
-    public static final int SOCKET_PORT = 8888;
+    public static final boolean isTest = false;
+    public static final String BASE_URL_TEST = "http://192.168.110.111:5000/driver-server/";
+    public static final String SOCKET_SERVER_TEST = "192.168.110.111";
+    public static final int SOCKET_PORT_TEST = 9991;
+    public static final String BASE_URL = isTest ? BASE_URL_TEST : "https://gopost.ci/driver-server/";
+    public static final String SOCKET_SERVER = isTest ? SOCKET_SERVER_TEST : "34.155.170.245";
+    public static final int SOCKET_PORT = isTest ? SOCKET_PORT_TEST : 8888;
     public static final int SUCCESS = 200;
 //    http://182.160.16.251:81/share/share/shareIndex.html?type=2&uid=2&language=1
     public static final String strShare = "https://igo.i-go.group/share/share/shareIndex%d.html?language=%d_2_%s"                                                                                                                                                                                                                                                                                                                                                      ;
diff --git a/app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt b/app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt
new file mode 100644
index 0000000..c1b96a9
--- /dev/null
+++ b/app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt
@@ -0,0 +1,35 @@
+package com.driver.igotrip.ui.adapter
+
+import android.view.View
+import android.widget.ImageView
+import androidx.core.view.isVisible
+import com.driver.igotrip.R
+import com.driver.igotrip.base.BaseRvAdapter
+import com.driver.igotrip.base.BaseViewHolder
+import com.driver.igotrip.utils.glide.GlideUtil
+
+//多媒体操作适配器
+class MediaOperationAdapter : BaseRvAdapter<String>() {
+    private var onItemDeleteClickListener: ((position: Int, item: String) -> Unit)? = null
+    override fun getLayoutResId(viewType: Int) = R.layout.item_media_operation
+
+    override fun onBindItem(holder: BaseViewHolder, view: View, item: String) {
+        view.findViewById<ImageView>(R.id.iv_picture)?.also {
+            if (item.isNullOrEmpty()) {
+                it.setImageResource(R.mipmap.icon_camera_box)
+            } else {
+                GlideUtil.load(it, item, 0, 0, 4)
+            }
+        }
+        view.findViewById<ImageView>(R.id.iv_delete)?.also {
+            it.isVisible = !item.isNullOrEmpty()
+            it.setOnClickListener {
+                onItemDeleteClickListener?.invoke(holder.bindingAdapterPosition, item)
+            }
+        }
+    }
+
+    fun setOnItemDeleteClickListener(onItemDeleteClickListener: ((position: Int, item: String) -> Unit)?) {
+        this.onItemDeleteClickListener = onItemDeleteClickListener
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt b/app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt
new file mode 100644
index 0000000..aff24e8
--- /dev/null
+++ b/app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt
@@ -0,0 +1,34 @@
+package com.driver.igotrip.ui.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+import androidx.recyclerview.widget.RecyclerView
+import com.driver.igotrip.R
+import com.driver.igotrip.utils.glide.GlideUtil
+
+//显示图片适配器
+class ShowPictureAdapter : RecyclerView.Adapter<ShowPictureAdapter.ShowPictureViewHolder>() {
+    private val list = mutableListOf<String>()
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShowPictureViewHolder {
+        val inflate =
+            LayoutInflater.from(parent.context).inflate(R.layout.item_show_picture, parent, false)
+        return ShowPictureViewHolder(inflate)
+    }
+
+    override fun onBindViewHolder(holder: ShowPictureViewHolder, position: Int) {
+        GlideUtil.load(holder.ivPicture, list[position], 0, 0, 0)
+    }
+
+    override fun getItemCount() = list.size
+    fun setData(list: List<String>) {
+        this.list.clear()
+        this.list.addAll(list)
+        notifyItemRangeInserted(0, list.size)
+    }
+
+    class ShowPictureViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+        val ivPicture: ImageView? = itemView.findViewById<ImageView>(R.id.iv_picture)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt
new file mode 100644
index 0000000..1fe22c4
--- /dev/null
+++ b/app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt
@@ -0,0 +1,234 @@
+package com.driver.igotrip.ui.main
+
+import android.Manifest
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.Intent
+import android.view.View
+import android.widget.TextView
+import androidx.activity.ComponentActivity
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.driver.igotrip.R
+import com.driver.igotrip.base.MyBaseActivity
+import com.driver.igotrip.bean.StringBean
+import com.driver.igotrip.netUtls.Api
+import com.driver.igotrip.netUtls.BaseBean
+import com.driver.igotrip.netUtls.HttpManager
+import com.driver.igotrip.netUtls.MyObserver
+import com.driver.igotrip.ui.DialogUtil
+import com.driver.igotrip.ui.GetImgActivity
+import com.driver.igotrip.ui.adapter.MediaOperationAdapter
+import com.tbruyelle.rxpermissions2.RxPermissions
+import io.reactivex.disposables.Disposable
+import org.jetbrains.anko.find
+import org.jetbrains.anko.toast
+import java.io.File
+
+//多媒体操作页
+class MediaOperationActivity : MyBaseActivity() {
+    //多媒体资源
+    private val mediaMap = mutableMapOf<String, String>()
+    private val title by lazy { intent.getStringExtra("title") }
+    private val operationLabel by lazy { intent.getStringExtra("operationLabel") }
+    private val max by lazy { intent.getIntExtra("max", 0) }
+    private val min by lazy { intent.getIntExtra("min", 0) }
+    private val pictures = mutableListOf<String>("")
+    private val adapter by lazy { MediaOperationAdapter() }
+    private val rvList by lazy { findViewById<RecyclerView>(R.id.rv_list) }
+    private val tvOperation by lazy { findViewById<TextView>(R.id.tv_operation) }
+
+    companion object {
+        //获取跳转此页面intent
+        fun getIntent(
+            context: Context,
+            title: String,
+            operationLabel: String,
+            max: Int,
+            min: Int
+        ): Intent {
+            return Intent(context, MediaOperationActivity::class.java).apply {
+                putExtra("title", title)
+                putExtra("operationLabel", operationLabel)
+                putExtra("max", max)
+                putExtra("min", min)
+            }
+        }
+    }
+
+    override fun setContentView() {
+        setContentView(R.layout.activity_media_operation)
+    }
+
+    override fun initView() {
+        setTitleText("请上传图片")
+        tv_title.text = title
+        rvList.adapter = adapter
+        rvList.layoutManager = GridLayoutManager(this, 4)
+        adapter.data = pictures
+        tvOperation.text = operationLabel
+    }
+
+    override fun setOnclick() {
+        adapter.setOnItemClickListener { _, position ->
+            if (pictures[position].isEmpty()) {
+                mediaOperation("请选择")
+            } else {
+                val arrayList = ArrayList<String>()
+                arrayList.addAll(pictures)
+                startActivity(ShowPictureActivity.getIntent(this, "", arrayList, position))
+            }
+        }
+        adapter.setOnItemDeleteClickListener { position, item ->
+            removeMedia(position)
+        }
+        tvOperation.setOnClickListener {
+            val data = pictures.toMutableList().apply {
+                removeIf { it.isEmpty() }
+            }
+            if (data.size < min) {
+                toast(getString(R.string.请上传图片))
+                return@setOnClickListener
+            }
+
+            setResult(RESULT_OK, Intent().apply {
+                putStringArrayListExtra("result", ArrayList<String>().apply { addAll(data) })
+            })
+            finish()
+        }
+    }
+
+    //多媒体的操作
+    @SuppressLint("CheckResult")
+    private fun mediaOperation(title: String) {
+        val rxPermissions = RxPermissions(this)
+        rxPermissions.request(Manifest.permission.CAMERA)
+            .subscribe { aBoolean ->
+                if (aBoolean) {
+                    val phoneDialog = DialogUtil.getDialog(mContext, R.layout.dialog_phone)
+                    val view = DialogUtil.getView(phoneDialog)
+                    if (!title.isEmpty()) {
+                        view.find<TextView>(R.id.btn_title).text = title
+                    } else {
+                        view.find<TextView>(R.id.btn_title).text = getString(R.string.选择照片)
+                    }
+                    view.find<View>(R.id.button_cancel).setOnClickListener {
+                        phoneDialog.dismiss()
+                    }
+                    view.find<View>(R.id.btn_album).setOnClickListener {
+                        openAlbum()
+                        phoneDialog.dismiss()
+                    }
+
+                    view.find<View>(R.id.btn_phone).setOnClickListener {
+                        openCarmra()
+                        phoneDialog.dismiss()
+                    }
+                } else {
+                    showToast(getString(R.string.请在应用权限页面开启相机权限))
+                }
+            }
+    }
+
+    //打开相册
+    fun openAlbum() {
+        startActivityForResult(Intent(this, GetImgActivity::class.java).apply {
+            putExtra("type", false)
+        }, 321)
+    }
+
+    //拍照
+    private fun openCarmra() {
+        startActivityForResult(Intent(this, GetImgActivity::class.java).apply {
+            putExtra("type", true)
+        }, 123)
+    }
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (resultCode == ComponentActivity.RESULT_OK) {
+            if (requestCode == 123) {
+                data?.let { it ->
+                    it.getStringExtra("img")?.also {
+                        operationMedia(it)
+                    }
+                }
+            } else {
+                data?.let { it ->
+                    it.getStringExtra("img")?.also {
+                        operationMedia(it)
+                    }
+                }
+            }
+        }
+    }
+
+    //操作多媒体
+    private fun operationMedia(filePath: String) {
+        val url = mediaMap[filePath]
+        if (url.isNullOrEmpty()) {
+            saveMedia(filePath) {
+                mediaMap[filePath] = it
+                addMedia(it)
+            }
+            return
+        }
+        addMedia(url)
+    }
+
+    //添加多媒体
+    private fun addMedia(url: String) {
+        pictures.removeIf { it.isEmpty() }
+        pictures.add(url)
+        if (pictures.size < max) {
+            pictures.add(0, "")
+        }
+        adapter.data = pictures
+    }
+
+    //移除多媒体
+    private fun removeMedia(position: Int) {
+        pictures.removeAt(position)
+        pictures.removeIf { it.isEmpty() }
+        if (pictures.size < max) {
+            pictures.add(0, "")
+        }
+        adapter.data = pictures
+    }
+
+    /***
+     * 保存多媒体,上传oss
+     */
+    private fun saveMedia(filePath: String, block: (url: String) -> Unit) {
+        HttpManager.getInstance()
+            .post<BaseBean<String>>(
+                Api.upImage,
+                File(filePath),
+                object : MyObserver(this@MediaOperationActivity) {
+                    override fun onSubscribe(d: Disposable) {
+                        super.onSubscribe(d)
+                        println("上传开始:" + filePath)
+                        showDialog()
+                    }
+
+                    override fun success(responseString: String?) {
+                        dismissDialog()
+                        val fromJson = gson.fromJson(responseString, StringBean::class.java)
+                        val url = fromJson.data
+                        if (!url.isNullOrEmpty()) {
+                            println("上传成功:" + url)
+                            block.invoke(url)
+                        } else {
+                            println("上传失败:" + url)
+                        }
+                    }
+
+                    override fun onError(e: Throwable) {
+                        super.onError(e)
+                        dismissDialog()
+                        println("上传失败:" + e.message)
+                    }
+                })
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt
index 483a759..1662fe4 100644
--- a/app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt
@@ -58,6 +58,12 @@
     private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) }
     private val tv_red_money by lazy { find<TextView>(R.id.tv_red_money) }
     private val remark by lazy { find<TextView>(R.id.remark) }
+    private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) }
+    private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) }
+    private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) }
+    private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) }
+    private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) }
+    private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) }
     private val tv_cancel_to by lazy { find<TextView>(R.id.tv_cancel_to) }
     private val tv_cancel_money by lazy { find<TextView>(R.id.tv_cancel_money) }
     private val tv_cancel_result by lazy { find<TextView>(R.id.tv_cancel_result) }
@@ -108,6 +114,9 @@
             if(orderType == "1"){
                 tv_red_money.gone()
             }
+            tv_order_money.text = getString(R.string.money) + it.orderMoney
+            tv_service_money.text = getString(R.string.money) + it.platformServerMoney
+            tv_real_income.text = getString(R.string.money) + it.driverServerMoney
             when (orderBean.orderState) {
                 10,12-> {
                     ll_order_cancel.visible()
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt
new file mode 100644
index 0000000..5440d4b
--- /dev/null
+++ b/app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt
@@ -0,0 +1,72 @@
+package com.driver.igotrip.ui.main
+
+import android.content.Context
+import android.content.Intent
+import android.widget.TextView
+import androidx.core.view.isVisible
+import androidx.viewpager2.widget.ViewPager2
+import com.driver.igotrip.R
+import com.driver.igotrip.base.MyBaseActivity
+import com.driver.igotrip.ui.adapter.ShowPictureAdapter
+
+//显示图片页
+class ShowPictureActivity : MyBaseActivity() {
+    private val title by lazy { intent.getStringExtra("title") }
+    private val list by lazy { intent.getStringArrayListExtra("list") }
+    private val index by lazy { intent.getIntExtra("index", 0) }
+    private val adapter by lazy { ShowPictureAdapter() }
+    private val tvBack by lazy { findViewById<TextView>(R.id.tv_back) }
+    private val tvTitle by lazy { findViewById<TextView>(R.id.tv_title) }
+    private val viewPager by lazy { findViewById<ViewPager2>(R.id.viewPager) }
+    private val tvCount by lazy { findViewById<TextView>(R.id.tv_count) }
+
+    companion object {
+        //获取跳转此页面intent
+        fun getIntent(
+            context: Context,
+            title: String,
+            list: ArrayList<String>,
+            index: Int = 0
+        ): Intent {
+            return Intent(context, ShowPictureActivity::class.java).apply {
+                putExtra("title", title)
+                putStringArrayListExtra("list", list)
+                putExtra("index", index)
+            }
+        }
+    }
+
+    override fun setContentView() {
+        setContentView(R.layout.activity_show_picture)
+    }
+
+    override fun initView() {
+        setBlcakShow(false)
+        setFullScreenMode(true)
+        tvTitle.text = title
+        viewPager.adapter = adapter
+        viewPager.offscreenPageLimit = list?.size ?: 1
+        viewPager.currentItem = index
+        adapter.setData(list ?: emptyList())
+        tvCount.isVisible = (list?.size ?: 0) > 1
+        runOnUiThread {
+            viewPager.currentItem = index
+            refreshCount(index)
+        }
+    }
+
+    override fun setOnclick() {
+        tvBack.setOnClickListener { finish() }
+        viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
+            override fun onPageSelected(position: Int) {
+                super.onPageSelected(position)
+                refreshCount(position)
+            }
+        })
+    }
+
+    //刷新下标
+    private fun refreshCount(index: Int) {
+        tvCount.text = "${index + 1}/${list?.size ?: 0}"
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt
index 5c0f19c..b23669e 100644
--- a/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt
@@ -1,6 +1,7 @@
 package com.driver.igotrip.ui.main.small_cargo
 
 import android.annotation.SuppressLint
+import android.content.Intent
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
@@ -10,6 +11,8 @@
 import android.widget.EditText
 import android.widget.ImageView
 import android.widget.TextView
+import androidx.activity.result.ActivityResultLauncher
+import androidx.activity.result.contract.ActivityResultContracts
 import cn.sinata.xldutils.utils.*
 import com.driver.igotrip.R
 import com.driver.igotrip.base.BaseEvent
@@ -27,6 +30,7 @@
 import com.driver.igotrip.netUtls.*
 import com.driver.igotrip.ui.DialogUtil
 import com.driver.igotrip.ui.UiUtil
+import com.driver.igotrip.ui.main.MediaOperationActivity
 import com.driver.igotrip.ui.main.ReassignActivity
 import com.driver.igotrip.utils.DateUtil
 import com.driver.igotrip.utils.MyUtils
@@ -81,6 +85,9 @@
     var graylist = arrayListOf<LatLng>() // 灰色轨迹
     var grayline: Polyline? = null
 
+    //业务多媒体类型
+    var businessMediaType: Int = 0
+
     private val tv_name by lazy { find<TextView>(R.id.tv_name) }
     private val tv_car_num by lazy { find<TextView>(R.id.tv_car_num) }
     private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) }
@@ -97,6 +104,9 @@
     private val iv_police by lazy { find<View>(R.id.iv_police) }
     private val iv_to_gd by lazy { find<View>(R.id.iv_to_gd) }
     private val slide_btn by lazy { find<SlidingButton>(R.id.slide_btn) }
+
+    //跳转另一个页面并接收返回结果启动器
+    private lateinit var launcherForResult: ActivityResultLauncher<Intent>
 
     override fun setContentView() {
         setContentView(R.layout.activity_trip_cargo)
@@ -119,7 +129,28 @@
     }
 
     override fun initView() {
+        launcherForResult =
+            registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
+                when (businessMediaType) {
+                    0 -> {
+                        if (result.resultCode == RESULT_OK && result.data != null) {
+                            val result = result.data!!.getStringArrayListExtra("result")
+                            showConfirmPriceDialog(result!!.joinToString(separator = ","))
+                        } else {
 
+                        }
+                    }
+
+                    1 -> {
+                        if (result.resultCode == RESULT_OK && result.data != null) {
+                            val result = result.data!!.getStringArrayListExtra("result")
+                            showConfirmDeliveryDialog(result!!.joinToString(separator = ","))
+                        } else {
+
+                        }
+                    }
+                }
+            }
     }
 
     private fun addSockectCancel() {
@@ -320,18 +351,14 @@
                     2, 3, 4 -> {
                         if (it.data.orderState == 4) {
                             if (orderType == "4") {
-                                DialogUtil.getDelAndSureDialog(
-                                    this,
-                                    getString(R.string.确认现金金额).format(it.data.expressPayAllMoney)
-                                        .replace(",", "."),
-                                    {},
-                                    {
-                                        it.data.orderState++
-                                        callStatue("1", it.data.orderState) {
-                                            iv_to_gd.callOnClick()
-                                        }
-                                        showStatueMapUI(it)
-                                    })
+                                businessMediaType = 0
+                                launcherForResult.launch(
+                                    MediaOperationActivity.getIntent(
+                                        this,
+                                        getString(R.string.请上传图片),
+                                        getString(R.string.确认取货), 3, 1
+                                    )
+                                )
                             } else {
                                 it.data.orderState++
                                 callStatue("1", it.data.orderState) {
@@ -350,49 +377,16 @@
                     }
 
                     5, 6 -> {
-                        sendCode() {
-                            it.data.orderState = 6
-                            var dialog =
-                                DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money)
-                            var viewContent = DialogUtil.getView(dialog)
-                            val view_hint_close_car =
-                                viewContent.find<View>(R.id.view_hint_close_car)
-                            val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close)
-                            val tv_money = viewContent.find<TextView>(R.id.tv_money)
-                            val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num)
-                            val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg)
-                            view_hint_close_car.setOnClickListener {
-                                dialog.dismiss()
-                            }
-                            tv_car_num_close.setOnClickListener {
-                                dialog.dismiss()
-                            }
-                            if (it.data.driverPay == "1") {
-                                tv_money.visible()
-                                tv_money.text =
-                                    getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney)
-                                        .replace(",", ".")
-                            }
-                            tv_sure_car_num.setOnClickListener {
-                                var num = et_num_zg.getContent()
-                                if (num.isEmpty()) {
-                                    toast(getString(R.string.请输入验证码))
-                                    return@setOnClickListener
-                                }
-                                callStatue(orderBean!!.data.orderState, num) {
-                                    dialog.dismiss()
-//                                    startActivity<SmallOverActivity>(
-//                                        "orderId" to orderId,
-//                                        "orderType" to orderType
-//                                    )
-                                    /* startActivity<MajorSureMoneyActivity>(
-                                         "orderId" to orderId,
-                                         "orderType" to orderType
-                                     )*/
-                                    finish()
-                                }
-                            }
-                        }
+//                        sendCode() {
+                        businessMediaType = 1
+                        launcherForResult.launch(
+                            MediaOperationActivity.getIntent(
+                                this,
+                                getString(R.string.请上传图片),
+                                getString(R.string.确认送达), 3, 1
+                            )
+                        )
+//                        }
                     }
 
                     12 -> {
@@ -423,6 +417,62 @@
             }
         }
 
+    }
+
+    //显示确认送达弹窗
+    private fun showConfirmDeliveryDialog(url: String) {
+        orderBean?.let {
+            it.data.orderState = 6
+            val dialog = DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money)
+            val viewContent = DialogUtil.getView(dialog)
+            val view_hint_close_car =
+                viewContent.find<View>(R.id.view_hint_close_car)
+            val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close)
+            val tv_money = viewContent.find<TextView>(R.id.tv_money)
+            val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num)
+            val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg)
+            view_hint_close_car.setOnClickListener {
+                dialog.dismiss()
+            }
+            tv_car_num_close.setOnClickListener {
+                dialog.dismiss()
+            }
+            if (it.data.driverPay == "1") {
+                tv_money.visible()
+                tv_money.text =
+                    getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney)
+                        .replace(",", ".")
+            }
+            tv_sure_car_num.setOnClickListener {
+                val num = et_num_zg.getContent()
+                if (num.isEmpty()) {
+                    toast(getString(R.string.请输入验证码))
+                    return@setOnClickListener
+                }
+                confirmDelivery(6, num, url) {
+                    dialog.dismiss()
+                    finish()
+                }
+            }
+        }
+    }
+
+    //显示确认价格弹窗
+    private fun showConfirmPriceDialog(url: String) {
+        orderBean?.let {
+            DialogUtil.getDelAndSureDialog(
+                this,
+                getString(R.string.确认现金金额).format(it.data.expressPayAllMoney)
+                    .replace(",", "."),
+                {},
+                {
+                    confirmPickUp(url, 5) {
+                        it.data.orderState = 5
+                        showStatueMapUI(it)
+                        iv_to_gd.callOnClick()
+                    }
+                })
+        }
     }
 
     fun startNavi(startLat: Double, startLon: Double, endLat: Double, endLon: Double) {
@@ -475,6 +525,27 @@
         }
     }
 
+    //确认送达
+    private fun confirmDelivery(i: Int, num: String, imgTwo: String, click: () -> Unit) {
+        var map = getMapByAny()
+        map["orderId"] = orderId
+        map["orderType"] = orderType
+        map["state"] = i
+        if (!num.isNullOrEmpty())
+            map["pickUpCode"] = num
+        Log.e(
+            "定位==============》",
+            "${MyApplication.getLocation()?.latitude},${MyApplication.getLocation()?.longitude}"
+        )
+        map["imgTwo"] = imgTwo
+        map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0
+        map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0
+        callNet(Api.process, map) {
+            OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i)
+            click()
+        }
+    }
+
     private fun callStatue(phone: String, i: Int, click: () -> Unit) {
         var map = getMapByAny()
         map["orderId"] = orderId
@@ -489,6 +560,21 @@
         }
     }
 
+    //确认收获
+    private fun confirmPickUp(imgOne: String, i: Int, click: () -> Unit) {
+        var map = getMapByAny()
+        map["orderId"] = orderId
+        map["orderType"] = orderType
+        map["imgOne"] = imgOne
+        map["state"] = i
+        map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0
+        map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0
+        callNet(Api.process, map) {
+            OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i)
+            click()
+        }
+    }
+
     private var movedByFinger = false
 
     /***
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt
index 5b4bfde..b4611ff 100644
--- a/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt
@@ -43,6 +43,12 @@
     private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) }
     private val tv_money_cargo by lazy { find<TextView>(R.id.tv_money_cargo) }
     private val tv_remark by lazy { find<TextView>(R.id.tv_remark) }
+    private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) }
+    private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) }
+    private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) }
+    private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) }
+    private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) }
+    private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) }
     private val tv_pay_result_small_money by lazy { find<TextView>(R.id.tv_pay_result_small_money) }
     private val tv_tv_num_cargo by lazy { find<TextView>(R.id.tv_tv_num_cargo) }
     private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) }
@@ -100,27 +106,31 @@
                 getString(R.string.其中含加急费用) + it.tipMoney.toString()
             setTitleText(getSmallStatue(it.orderState))
             tv_pay_result_title.text = getString(R.string.订单) + getSmallStatue(it.orderState)
+            tv_order_money.text = getString(R.string.money) + it.orderMoney
+            tv_service_money.text = getString(R.string.money) + it.platformServerMoney
+            tv_real_income.text = getString(R.string.money) + it.driverServerMoney
             ll_pay_result.visible()
             if (it.orderState in 6..7) {
                 tv_pay_result_title.text = getString(R.string.待乘客支付)
-            }else if (it.orderState == 8){
+            } else if (it.orderState == 8) {
                 tv_pay_result_title.text = getString(R.string.订单待评价)
-            }else if (it.orderState == 9){
+            } else if (it.orderState == 9) {
                 tv_pay_result_title.text = getString(R.string.订单已完成)
-            }else if (it.orderState == 10||it.orderState == 12){
+            } else if (it.orderState == 10 || it.orderState == 12) {
                 ll_order_cancel.visible()
                 iv_phone.gone()
                 ll_pay_result.gone()
                 tv_cancel_to.text = it.cancelUser
-                tv_cancel_money.text = getString(R.string.money) +" "+ doubleOne(it.cancelPayMoney)
+                tv_cancel_money.text =
+                    getString(R.string.money) + " " + doubleOne(it.cancelPayMoney)
                 tv_cancel_result.text = it.cancelReason
                 tv_cancel_s.text = it.cancelRemark
-                if (it.cancelRemark.isNullOrEmpty()){
+                if (it.cancelRemark.isNullOrEmpty()) {
                     tv_cancel_s.text = ""
                 }
             }
 
-            if (it.orderState in 6..9){
+            if (it.orderState in 6..9) {
                 tv_pay_result_small_money.text = getString(R.string.查看收费明细)
                 tv_pay_result_small_money.visible()
                 view_line_money_detail.visible()
@@ -131,10 +141,12 @@
                     )
                 }
             }
-            if (it.isFrozen == 2){
+            if (it.isFrozen == 2) {
                 tv_frozen.visible()
-                tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(0,
-                    UiUtil.getFrozenBitmap(),0,0)
+                tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(
+                    0,
+                    UiUtil.getFrozenBitmap(), 0, 0
+                )
             }
         }
     }
diff --git a/app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java b/app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java
index 25efd0a..0d41dbe 100644
--- a/app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java
+++ b/app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java
@@ -60,6 +60,19 @@
 
     /***
      * 加载图片
+     */
+    @SuppressLint("CheckResult")
+    public static void load(ImageView imageView, String url, int placeholder, int error, int radius) {
+        Glide.with(imageView)
+                .load(url)
+                .apply(getRequestOption(radius))
+                .placeholder(placeholder)
+                .error(error)
+                .into(imageView);
+    }
+
+    /***
+     * 加载图片
      * @param context
      * @param url
      * @param imageView
diff --git a/app/src/main/res/drawable/shape_black1_bg_4.xml b/app/src/main/res/drawable/shape_black1_bg_4.xml
new file mode 100644
index 0000000..917049e
--- /dev/null
+++ b/app/src/main/res/drawable/shape_black1_bg_4.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/black1" />
+    <corners android:radius="4dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_media_operation.xml b/app/src/main/res/layout/activity_media_operation.xml
new file mode 100644
index 0000000..e106419
--- /dev/null
+++ b/app/src/main/res/layout/activity_media_operation.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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"
+    tools:context=".ui.main.MediaOperationActivity">
+
+    <TextView
+        android:id="@+id/tv_notice"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="14dp"
+        android:layout_marginTop="8dp"
+        android:text="只支持jpg格式"
+        android:textColor="#ff979797"
+        android:textSize="14sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_list"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginTop="4dp"
+        android:layout_marginHorizontal="9dp"
+        app:layout_constraintBottom_toTopOf="@id/tv_operation"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/tv_notice" />
+
+    <TextView
+        android:id="@+id/tv_operation"
+        android:layout_width="0dp"
+        android:layout_height="50dp"
+        android:layout_marginHorizontal="14dp"
+        android:layout_marginBottom="30dp"
+        android:background="@drawable/bg_login"
+        android:gravity="center"
+        android:text=""
+        android:textColor="@color/white"
+        android:textSize="16sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_mine_income.xml b/app/src/main/res/layout/activity_mine_income.xml
index ff5399f..cf4ed8a 100644
--- a/app/src/main/res/layout/activity_mine_income.xml
+++ b/app/src/main/res/layout/activity_mine_income.xml
@@ -41,7 +41,7 @@
                 android:maxWidth="280dp"
                 android:maxLines="1"
                 android:singleLine="true"
-                android:text="@string/我的收入"
+                android:text="@string/平台服务费"
                 android:textColor="@color/textColor"
                 android:textSize="16sp"
                 android:textStyle="bold" />
diff --git a/app/src/main/res/layout/activity_mine_purse.xml b/app/src/main/res/layout/activity_mine_purse.xml
index 5b20051..9dc987d 100644
--- a/app/src/main/res/layout/activity_mine_purse.xml
+++ b/app/src/main/res/layout/activity_mine_purse.xml
@@ -128,7 +128,7 @@
             android:gravity="center_vertical"
             android:paddingStart="14dp"
             android:paddingEnd="14dp"
-            android:text="@string/我的收入"
+            android:text="@string/平台服务费"
             android:textColor="#ff333333"
             android:textSize="14sp" />
 
diff --git a/app/src/main/res/layout/activity_order_over.xml b/app/src/main/res/layout/activity_order_over.xml
index 8aa5bba..c6421a0 100644
--- a/app/src/main/res/layout/activity_order_over.xml
+++ b/app/src/main/res/layout/activity_order_over.xml
@@ -6,6 +6,126 @@
 
     <include layout="@layout/include_order_top" />
 
+    <LinearLayout
+        android:id="@+id/ll_money_detail"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:elevation="3dp"
+        android:orientation="vertical"
+        android:paddingHorizontal="14dp">
+
+        <LinearLayout
+            android:id="@+id/ll_order_money"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/订单金额"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_order_money"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_service_money"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/平台服务费"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_service_money"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_real_income"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/实际收入"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_real_income"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+        </LinearLayout>
+    </LinearLayout>
+
     <include
         layout="@layout/include_order_money"
         android:layout_width="match_parent"
@@ -20,30 +140,31 @@
 
     <TextView
         android:id="@+id/tv_show_pay_over"
-        android:layout_marginTop="10dp"
-        android:layout_gravity="center_horizontal"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="10dp"
         android:text="@string/Passengers_have_paid"
-        android:textStyle="bold"
         android:textColor="#ff000000"
-        android:textSize="18sp" />
+        android:textSize="18sp"
+        android:textStyle="bold" />
 
-    <include layout="@layout/include_weight_height"/>
+    <include layout="@layout/include_weight_height" />
 
-    <include layout="@layout/include_pay_bottom"/>
+    <include layout="@layout/include_pay_bottom" />
+
     <TextView
+        android:id="@+id/tv_frozen"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:id="@+id/tv_frozen"
-        android:gravity="center"
-        android:layout_marginBottom="50dp"
-        android:visibility="gone"
-        android:textColor="#FF9803"
-        android:textStyle="bold"
-        android:textSize="14sp"
         android:layout_marginHorizontal="40dp"
+        android:layout_marginBottom="50dp"
         android:drawableTop="@mipmap/yidongjie_cn"
         android:drawablePadding="20dp"
-        android:text="@string/被冻结"/>
+        android:gravity="center"
+        android:text="@string/被冻结"
+        android:textColor="#FF9803"
+        android:textSize="14sp"
+        android:textStyle="bold"
+        android:visibility="gone" />
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_order_over_small.xml b/app/src/main/res/layout/activity_order_over_small.xml
index 45917c0..8e41be7 100644
--- a/app/src/main/res/layout/activity_order_over_small.xml
+++ b/app/src/main/res/layout/activity_order_over_small.xml
@@ -6,6 +6,126 @@
 
     <include layout="@layout/include_order_top_cargo" />
 
+    <LinearLayout
+        android:id="@+id/ll_money_detail"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:elevation="3dp"
+        android:orientation="vertical"
+        android:paddingHorizontal="14dp">
+
+        <LinearLayout
+            android:id="@+id/ll_order_money"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/订单金额"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_order_money"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_service_money"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/平台服务费"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_service_money"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/ll_real_income"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginVertical="11dp"
+                android:text="@string/实际收入"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginHorizontal="6dp"
+                android:layout_marginVertical="11dp"
+                android:text=":"
+                android:textColor="#ff27282d"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+
+            <TextView
+                android:id="@+id/tv_real_income"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="0"
+                android:textColor="@color/color_e72c1c"
+                android:textSize="16sp"
+                android:textStyle="bold" />
+        </LinearLayout>
+    </LinearLayout>
+
     <include
         layout="@layout/include_order_money"
         android:layout_width="match_parent"
@@ -20,26 +140,27 @@
 
     <TextView
         android:id="@+id/tv_show_pay_over"
-        android:layout_marginTop="10dp"
-        android:layout_gravity="center_horizontal"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="10dp"
         android:text="@string/Passengers_have_paid"
         android:textColor="#ff000000"
         android:textSize="14sp" />
+
     <TextView
+        android:id="@+id/tv_frozen"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:id="@+id/tv_frozen"
-        android:gravity="center"
-        android:layout_marginBottom="50dp"
-        android:visibility="gone"
-        android:textColor="#FF9803"
-        android:textStyle="bold"
-        android:textSize="14sp"
         android:layout_marginHorizontal="40dp"
+        android:layout_marginBottom="50dp"
         android:drawableTop="@mipmap/yidongjie_cn"
         android:drawablePadding="20dp"
-        android:text="@string/被冻结"/>
+        android:gravity="center"
+        android:text="@string/被冻结"
+        android:textColor="#FF9803"
+        android:textSize="14sp"
+        android:textStyle="bold"
+        android:visibility="gone" />
 
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_show_picture.xml b/app/src/main/res/layout/activity_show_picture.xml
new file mode 100644
index 0000000..0056f71
--- /dev/null
+++ b/app/src/main/res/layout/activity_show_picture.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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/black"
+    tools:context=".ui.main.ShowPictureActivity">
+
+    <androidx.viewpager2.widget.ViewPager2
+        android:id="@+id/viewPager"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_back"
+        android:layout_width="wrap_content"
+        android:layout_marginTop="26dp"
+        android:layout_height="50dp"
+        android:drawableStart="@mipmap/icon_close"
+        android:gravity="center"
+        android:paddingStart="@dimen/dp_10"
+        android:paddingEnd="@dimen/dp_15"
+        android:textColor="@color/white"
+        android:textSize="16sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="50dp"
+        android:drawablePadding="3dp"
+        android:layout_marginTop="26dp"
+        android:gravity="center"
+        android:maxWidth="240dp"
+        android:maxLines="2"
+        android:textColor="#333333"
+        android:textSize="17sp"
+        android:textStyle="bold"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_count"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="30dp"
+        android:textColor="@color/white"
+        android:textSize="12sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/include_order_money.xml b/app/src/main/res/layout/include_order_money.xml
index e477172..e523367 100644
--- a/app/src/main/res/layout/include_order_money.xml
+++ b/app/src/main/res/layout/include_order_money.xml
@@ -22,7 +22,7 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="2dp"
         tools:text="FCFA15.12"
-        android:textColor="#E72C1C"
+        android:textColor="@color/color_e72c1c"
         android:textSize="36sp"
         android:textStyle="bold" />
 
diff --git a/app/src/main/res/layout/item_media_operation.xml b/app/src/main/res/layout/item_media_operation.xml
new file mode 100644
index 0000000..d6b5298
--- /dev/null
+++ b/app/src/main/res/layout/item_media_operation.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingHorizontal="5dp"
+    android:paddingVertical="4dp">
+
+    <ImageView
+        android:id="@+id/iv_picture"
+        android:layout_width="80dp"
+        android:layout_height="80dp" />
+
+    <ImageView
+        android:id="@+id/iv_delete"
+        android:layout_marginTop="2dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignTop="@id/iv_picture"
+        android:layout_alignEnd="@id/iv_picture"
+        android:background="@drawable/shape_black1_bg_4"
+        android:padding="5dp"
+        android:src="@mipmap/icon_close" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_show_picture.xml b/app/src/main/res/layout/item_show_picture.xml
new file mode 100644
index 0000000..158c072
--- /dev/null
+++ b/app/src/main/res/layout/item_show_picture.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ImageView
+        android:id="@+id/iv_picture"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_camera_box.png b/app/src/main/res/mipmap-xxhdpi/icon_camera_box.png
new file mode 100644
index 0000000..7513479
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/icon_camera_box.png
Binary files differ
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 78daa72..01fa077 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -823,5 +823,9 @@
     <string name="选择区号">Select Area Code</string>
     <string name="科特迪瓦">Côte d\'Ivoire</string>
     <string name="中国">China</string>
+    <string name="确认取货">Confirm pickup</string>
+    <string name="请上传图片">please upload images</string>
+    <string name="请在应用权限页面开启相机权限">Please enable camera permissions on the app permissions page</string>
+    <string name="实际收入">Real income</string>
 
 </resources>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index ab316fc..27a18e3 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -827,4 +827,9 @@
     <string name="选择区号">Choisir le code régional</string>
     <string name="科特迪瓦">Côte d\'Ivoire</string>
     <string name="中国">Chine</string>
+    <string name="确认取货">Confirmation de retrait</string>
+    <string name="请上传图片">Veuillez télécharger une image</string>
+    <string name="请在应用权限页面开启相机权限">Veuillez activer les autorisations de la caméra sur la page autorisations de l\'application</string>
+    <string name="实际收入">Revenus réels</string>
+
 </resources>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 7282507..e4d9da9 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -111,6 +111,7 @@
 
     <color name="color_2378D2">#2378D2</color>
     <color name="color_F35646">#F35646</color>
+    <color name="color_e72c1c">#E72C1C</color>
 
 
 
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fa1709d..884a281 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -815,5 +815,9 @@
     <string name="选择区号">选择区号</string>
     <string name="科特迪瓦">科特迪瓦</string>
     <string name="中国">中国</string>
+    <string name="确认取货">确认取货</string>
+    <string name="请上传图片">请上传图片</string>
+    <string name="请在应用权限页面开启相机权限">请在应用权限页面开启相机权限</string>
+    <string name="实际收入">实际收入</string>
 
 </resources>

--
Gitblit v1.7.1