diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
index eaf5482..b9be1e9 100644
--- a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -11,7 +11,6 @@
 import com.supwisdom.activities.BaseActivity
 import com.supwisdom.activities.SPApplication
 import com.supwisdom.activities.consume.PayMode
-import com.supwisdom.activities.menu.MenuActivity
 import com.supwisdom.auxscreen.AuxScreenController
 import com.supwisdom.entity.HotKeyPayRecord
 import com.supwisdom.entity.PeriodFixPayRecord
@@ -31,7 +30,8 @@
     private lateinit var vSpecialDesc: TextView
     private lateinit var rbHotkeyMode: RadioButton
     private lateinit var rbPeriodMode: RadioButton
-    private lateinit var rgSpecialMode: RadioGroup
+    private lateinit var rbNormalMode: RadioButton
+    private lateinit var rbFixMode: RadioButton
     private lateinit var llSpecialList: LinearLayout
     private lateinit var llFixMode: LinearLayout
     private lateinit var llSpecialMode: LinearLayout
@@ -41,6 +41,7 @@
     private var specialMode = false
     private var tmpPwd = ""
     private var configMode = ConfigMode.NORMAL_FIX
+    private val MAX_CHILD_COUNT = 6
 
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -58,42 +59,61 @@
         vPayamt = findViewById<TextView>(R.id.tv_consume_mode_payamt)
         llSpecialList = findViewById<LinearLayout>(R.id.ll_special_list)
         this.findViewById<TextView>(R.id.tv_hot_add).setOnClickListener {
-            if (llSpecialList.childCount >= 9) {
+            if (llSpecialList.childCount >= MAX_CHILD_COUNT) {
+                SWToast.show(applicationContext, "最大支持${MAX_CHILD_COUNT}条规则", PublicDef.TOAST_SHOW_DOUBT)
                 return@setOnClickListener
             }
             if (configMode == ConfigMode.PERIOD_FIX) {
                 addPeriodFixRule()
-            } else {
+            } else if (configMode == ConfigMode.HOT_KEY) {
                 addHotkeyRule()
             }
         }
-        this.findViewById<TextView>(R.id.tv_hot_save).setOnClickListener {
-            if (llSpecialList.childCount == 0) {
-                SWToast.show(applicationContext, "请先添加规则", PublicDef.TOAST_SHOW_DOUBT)
-                return@setOnClickListener
-            }
-            if (configMode == ConfigMode.PERIOD_FIX) {
-                if (!savePeriodFixRule()) {
-                    return@setOnClickListener
+        this.findViewById<TextView>(R.id.tv_save).setOnClickListener {
+            when (configMode) {
+                ConfigMode.PERIOD_FIX -> {
+                    if (llSpecialList.childCount == 0) {
+                        SWToast.show(applicationContext, "请先添加波段规则", PublicDef.TOAST_SHOW_DOUBT)
+                        return@setOnClickListener
+                    }
+                    if (!savePeriodFixRule()) {
+                        return@setOnClickListener
+                    }
                 }
-            } else {
-                if (!saveHotkeyRule()) {
-                    return@setOnClickListener
+                ConfigMode.HOT_KEY -> {
+                    if (llSpecialList.childCount == 0) {
+                        SWToast.show(applicationContext, "请先添加热键规则", PublicDef.TOAST_SHOW_DOUBT)
+                        return@setOnClickListener
+                    }
+                    if (!saveHotkeyRule()) {
+                        return@setOnClickListener
+                    }
+                }
+                ConfigMode.NORMAL_FIX -> {
+                    pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, getFixAmount())
+                }
+                ConfigMode.NORMAL -> {
+                    pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, PayMode.NORMAL.desc)
                 }
             }
             finish()
         }
         this.findViewById<TextView>(R.id.tv_return).setOnClickListener {
-            showCurrentMode(ConfigMode.NORMAL_FIX)
-            refreshToSetAmount()
+            //showCurrentMode(ConfigMode.NORMAL_FIX)
+            //refreshToSetAmount()
+            finish()
         }
-        rgSpecialMode = this.findViewById<RadioGroup>(R.id.rg_special_mode)
-        rgSpecialMode.setOnCheckedChangeListener { _, checkedId ->
-            when (checkedId) {
-                R.id.rb_hot_mode -> showCurrentMode(ConfigMode.HOT_KEY)
-                R.id.rb_period_fix_mode -> showCurrentMode(ConfigMode.PERIOD_FIX)
+        this.findViewById<RadioGroup>(R.id.rg_special_mode)
+            .setOnCheckedChangeListener { _, checkedId ->
+                when (checkedId) {
+                    R.id.rb_normal -> showCurrentMode(ConfigMode.NORMAL)
+                    R.id.rb_normal_fix -> showCurrentMode(ConfigMode.NORMAL_FIX)
+                    R.id.rb_hot_mode -> showCurrentMode(ConfigMode.HOT_KEY)
+                    R.id.rb_period_fix_mode -> showCurrentMode(ConfigMode.PERIOD_FIX)
+                }
             }
-        }
+        rbNormalMode = this.findViewById<RadioButton>(R.id.rb_normal)
+        rbFixMode = this.findViewById<RadioButton>(R.id.rb_normal_fix)
         rbPeriodMode = this.findViewById<RadioButton>(R.id.rb_period_fix_mode)
         rbHotkeyMode = this.findViewById<RadioButton>(R.id.rb_hot_mode)
 
@@ -141,7 +161,8 @@
             var temp = item.findViewById<TextView>(R.id.tv_hot_key)
             record.key = Integer.parseInt(temp.text.toString())
             temp = item.findViewById<EditText>(R.id.tv_hot_amount)
-            record.amount = CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
+            record.amount =
+                CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
             list.add(record)
         }
         pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, PayMode.HOTKEY.desc)
@@ -157,10 +178,12 @@
         for (loop in 0 until llSpecialList.childCount) {
             val record = PeriodFixPayRecord()
             val item = llSpecialList.getChildAt(loop)
-            record.beginTime = CommonUtil.getEditView(item.findViewById<EditText>(R.id.tv_period_start))
+            record.beginTime =
+                CommonUtil.getEditView(item.findViewById<EditText>(R.id.tv_period_start))
             record.endTime = CommonUtil.getEditView(item.findViewById<EditText>(R.id.tv_period_end))
             val temp = item.findViewById<EditText>(R.id.tv_amount)
-            record.amount = CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
+            record.amount =
+                CommonUtil.YuanToFen(java.lang.Double.parseDouble(CommonUtil.getEditView(temp)))
             if (TextUtils.isEmpty(record.beginTime) || TextUtils.isEmpty(record.endTime)) {
                 SWToast.show(applicationContext, "时间段不为空", PublicDef.TOAST_SHOW_CRY)
                 return false
@@ -257,7 +280,6 @@
         when (mode) {
             ConfigMode.HOT_KEY -> {
                 specialMode = true
-                rgSpecialMode.visibility = View.VISIBLE
                 rbHotkeyMode.isChecked = true
                 llFixMode.visibility = View.GONE
                 llSpecialMode.visibility = View.VISIBLE
@@ -267,14 +289,19 @@
             ConfigMode.PERIOD_FIX -> {
                 specialMode = true
                 rbPeriodMode.isChecked = true
-                rgSpecialMode.visibility = View.VISIBLE
                 llFixMode.visibility = View.GONE
                 llSpecialMode.visibility = View.VISIBLE
                 vSpecialDesc.text = "设置波段定额(单位:元)"
                 loadPeriodFixRule()
             }
+            ConfigMode.NORMAL_FIX -> {
+                specialMode = false
+                rbFixMode.isChecked = true
+                llSpecialMode.visibility = View.GONE
+                llFixMode.visibility = View.VISIBLE
+            }
             else -> {
-                rgSpecialMode.visibility = View.GONE
+                rbNormalMode.isChecked = true
                 llSpecialMode.visibility = View.GONE
                 llFixMode.visibility = View.VISIBLE
                 specialMode = false
@@ -300,12 +327,18 @@
                         shoppwdPass = true
                         refreshToSetAmount()
                     } else {
-                        AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请输入商户密码:", "密码错误"))
+                        AuxScreenController.getInstance()
+                            .refreshContent(Arrays.asList<String>("请输入商户密码:", "密码错误"))
                     }
                     tmpPwd = ""
                 } else {
                     AuxScreenController.getInstance()
-                        .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+                        .refreshContent(
+                            Arrays.asList(
+                                "请输入商户密码:",
+                                CommonUtil.getPasswordStar(tmpPwd.length)
+                            )
+                        )
                 }
             }
             KeyEvent.KEYCODE_DEL -> {
@@ -315,12 +348,22 @@
                     len == 1 -> {
                         tmpPwd = ""
                         AuxScreenController.getInstance()
-                            .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+                            .refreshContent(
+                                Arrays.asList(
+                                    "请输入商户密码:",
+                                    CommonUtil.getPasswordStar(tmpPwd.length)
+                                )
+                            )
                     }
                     len > 1 -> {
                         tmpPwd = tmpPwd.substring(0, len - 1)
                         AuxScreenController.getInstance()
-                            .refreshContent(Arrays.asList("请输入商户密码:", CommonUtil.getPasswordStar(tmpPwd.length)))
+                            .refreshContent(
+                                Arrays.asList(
+                                    "请输入商户密码:",
+                                    CommonUtil.getPasswordStar(tmpPwd.length)
+                                )
+                            )
                     }
                     else -> finish()
                 }
@@ -353,7 +396,8 @@
             KeyEvent.KEYCODE_PERIOD -> addDotToEdit()
             KeyEvent.KEYCODE_ENTER -> {
                 pos.replaceControlPara(PublicDef.CONTROL_FIXAMT, getFixAmount())
-                jumpActivity(MenuActivity::class.java)
+//                jumpActivity(MenuActivity::class.java)
+                finish()
             }
             KeyEvent.KEYCODE_DPAD_LEFT -> {
                 //F1
@@ -379,14 +423,19 @@
                 }
                 PayMode.HOTKEY.desc == it.paraval -> {
                     showCurrentMode(ConfigMode.HOT_KEY)
-                    AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
+                    AuxScreenController.getInstance()
+                        .refreshContent(Arrays.asList<String>("请到大屏设置"))
                     return
                 }
                 PayMode.PERIODFIX.desc == it.paraval -> {
                     showCurrentMode(ConfigMode.PERIOD_FIX)
-                    AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("请到大屏设置"))
+                    AuxScreenController.getInstance()
+                        .refreshContent(Arrays.asList<String>("请到大屏设置"))
                     return
                 }
+                PayMode.NORMAL.desc == it.paraval -> {
+
+                }
             }
         } ?: screenShowAmt()
     }
@@ -468,7 +517,10 @@
         counter!!.start()
     }
 
-    private inner class ContinuePressTimer internal constructor(millisInFuture: Long, countDownInterval: Long) :
+    private inner class ContinuePressTimer internal constructor(
+        millisInFuture: Long,
+        countDownInterval: Long
+    ) :
         CountDownTimer(millisInFuture, countDownInterval) {
 
         override fun onTick(millisUntilFinished: Long) {
@@ -482,6 +534,7 @@
 }
 
 enum class ConfigMode {
+    NORMAL,
     NORMAL_FIX,
     HOT_KEY,
     PERIOD_FIX,
diff --git a/app/src/main/res/layout/activity_consume_mode.xml b/app/src/main/res/layout/activity_consume_mode.xml
index befd0cf..84fae2b 100644
--- a/app/src/main/res/layout/activity_consume_mode.xml
+++ b/app/src/main/res/layout/activity_consume_mode.xml
@@ -1,47 +1,87 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              style="@style/head_title_out_style">
+        style="@style/head_title_out_style">
 
     <LinearLayout style="@style/head_title_inner_style">
 
         <TextView
                 style="@style/head_title_text_style"
-                android:text="消费模式"/>
+                android:text="消费模式" />
+
         <RadioGroup
                 android:id="@+id/rg_special_mode"
-                android:visibility="gone"
-                android:layout_height="wrap_content"
-                android:weightSum="2"
                 android:layout_width="match_parent"
-                android:orientation="horizontal">
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:visibility="visible">
+
+            <RadioButton
+                    android:id="@+id/rb_normal"
+                    style="@style/consume_mode_rb_style"
+                    android:text="普通消费" />
+
+            <RadioButton
+                    android:id="@+id/rb_normal_fix"
+                    style="@style/consume_mode_rb_style"
+                    android:text="定额消费" />
+
             <RadioButton
                     android:id="@+id/rb_hot_mode"
-                    android:text="按键便捷消费"
-                    style="@style/consume_mode_rb_style"/>
+                    style="@style/consume_mode_rb_style"
+                    android:text="按键便捷消费" />
+
             <RadioButton
                     android:id="@+id/rb_period_fix_mode"
-                    android:text="波段定额消费"
-                    style="@style/consume_mode_rb_style"/>
+                    style="@style/consume_mode_rb_style"
+                    android:text="波段定额消费" />
         </RadioGroup>
+
+        <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:padding="10dp">
+
+            <TextView
+                    android:id="@+id/tv_return"
+                    style="@style/consume_mode_save_style"
+                    android:text="返回" />
+
+            <TextView
+                    android:id="@+id/tv_save"
+                    style="@style/consume_mode_save_style"
+                    android:layout_marginStart="80dp"
+                    android:text="保存" />
+
+            <TextView
+                    android:id="@+id/tv_hot_add"
+                    style="@style/consume_mode_save_style"
+                    android:layout_marginStart="80dp"
+                    android:text="添加" />
+        </LinearLayout>
+
         <LinearLayout
                 android:id="@+id/ll_fix_mode"
-                android:visibility="gone"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
                 android:orientation="vertical"
                 android:padding="10dp"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
+                android:visibility="gone">
+
             <TextView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="普通消费(none)"
                     android:textColor="@color/light_blue2"
-                    android:textSize="20sp"/>
+                    android:textSize="20sp" />
+
             <TextView
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:text="定额消费(单位:元)"
                     android:textColor="@color/light_blue2"
-                    android:textSize="20sp"/>
+                    android:textSize="20sp" />
 
             <LinearLayout
                     android:layout_width="match_parent"
@@ -53,7 +93,7 @@
                         android:layout_height="wrap_content"
                         android:text="金额: "
                         android:textColor="@color/light_blue2"
-                        android:textSize="30sp"/>
+                        android:textSize="30sp" />
 
                 <TextView
                         android:id="@+id/tv_consume_mode_payamt"
@@ -62,63 +102,31 @@
                         android:maxLength="8"
                         android:text="0"
                         android:textColor="@color/light_blue2"
-                        android:textSize="30sp"/>
+                        android:textSize="30sp" />
             </LinearLayout>
         </LinearLayout>
+
         <LinearLayout
                 android:id="@+id/ll_hot_mode"
-                android:orientation="vertical"
-                android:padding="10dp"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent">
-            <LinearLayout
-                    android:orientation="horizontal"
-                    android:gravity="center"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-                <TextView
-                        android:id="@+id/tv_return"
-                        android:textSize="25sp"
-                        android:text="返回"
-                        android:background="@drawable/corner_bg_blue"
-                        android:padding="10dp"
-                        android:textColor="@color/white"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"/>
-                <TextView
-                        android:id="@+id/tv_hot_save"
-                        android:textSize="25sp"
-                        android:layout_marginStart="50dp"
-                        android:text="保存"
-                        android:background="@drawable/corner_bg_blue"
-                        android:padding="10dp"
-                        android:textColor="@color/white"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"/>
-                <TextView
-                        android:id="@+id/tv_hot_add"
-                        android:textSize="25sp"
-                        android:text="添加"
-                        android:layout_marginStart="50dp"
-                        android:background="@drawable/corner_bg_blue"
-                        android:padding="10dp"
-                        android:textColor="@color/white"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"/>
-            </LinearLayout>
+                android:layout_height="match_parent"
+                android:orientation="vertical"
+                android:padding="10dp">
+
             <TextView
                     android:id="@+id/tv_special_desc"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:text="快捷消费(单位:元)"
                     android:layout_marginTop="10dp"
+                    android:text="快捷消费(单位:元)"
                     android:textColor="@color/light_blue2"
-                    android:textSize="20sp"/>
+                    android:textSize="20sp" />
+
             <LinearLayout
                     android:id="@+id/ll_special_list"
                     android:layout_width="match_parent"
-                    android:orientation="vertical"
-                    android:layout_height="match_parent"/>
+                    android:layout_height="match_parent"
+                    android:orientation="vertical" />
         </LinearLayout>
     </LinearLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index a1088c5..1133656 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -428,11 +428,20 @@
     </style>
     <style name="consume_mode_rb_style">
         <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_width">0dp</item>
-        <item name="android:layout_weight">1</item>
+        <item name="android:layout_width">match_parent</item>
         <item name="android:textSize">25sp</item>
+        <item name="android:textStyle">bold</item>
         <item name="android:textColor">@color/light_blue2</item>
     </style>
+    <style name="consume_mode_save_style">
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:background">@drawable/corner_bg_blue</item>
+        <item name="android:padding">10dp</item>
+        <item name="android:textStyle">bold</item>
+        <item name="android:textSize">30sp</item>
+        <item name="android:textColor">@color/white</item>
+    </style>
     <style name="consume_pay_way_text_style">
         <item name="android:layout_height">wrap_content</item>
         <item name="android:layout_width">match_parent</item>
