微信小程序弹窗组件Modal实现指南

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:微信小程序中的Modal弹窗组件用于向用户展示重要提示或获取用户确认。本资源包含 Modal 弹窗的实现示例和教程,涵盖了 Modal 的定义、 wx.showModal API 的使用方法、参数详解、样式自定义、应用场景及注意事项,帮助开发者在小程序中实现交互性好的弹窗。 小程序-弹窗-Modal.rar

1. 微信小程序中Modal的定义和作用

微信小程序作为一款无需下载安装即可使用的应用,提供了丰富的界面组件来提升用户体验。Modal(模态对话框)是其中一种重要的组件,它常用于需要临时中断用户操作流程的场景,以显示重要信息或要求用户进行决策。

Modal通常包含一个标题栏、内容区域以及底部的操作按钮。它的出现会阻断用户与页面其他部分的交互,直到用户作出响应。这对于处理如表单提交确认、删除操作警告、用户设置更改等场景是必不可少的。

在微信小程序中,开发者可以通过特定的API来实现Modal,同时它还可以进行样式和参数的自定义,以满足不同场景下的需求。接下来,我们将深入探讨如何在微信小程序中实现和优化Modal的使用。

2. wx.showModal API的基础用法和回调处理

2.1 wx.showModal API概述

2.1.1 API的基本结构和功能

wx.showModal 是微信小程序提供的一个组件,用于方便地展示模态对话框。在移动应用中,模态对话框通常用于收集用户输入,或者向用户展示重要信息,并等待用户做出决策。 wx.showModal 提供了一个简洁的API来实现这一功能,它支持自定义对话框标题、内容、按钮样式等多个方面。

wx.showModal({
  title: '标题',
  content: '这是一个模态对话框',
  success(res) {
    console.log(res)
  }
});

在上述代码中, showModal 是调用模态对话框的函数, title content 是展示给用户看的标题和内容。 success 函数用于处理用户操作后的回调。

2.1.2 API的调用方法和参数介绍

wx.showModal 方法接受一个对象作为参数,包含以下属性:

  • title :(String类型)对话框的标题
  • content :(String类型)对话框的内容
  • showCancel :(Boolean类型,可选)是否显示取消按钮,默认为 true
  • cancelText :(String类型,可选)取消按钮的文字,默认为"取消"
  • cancelColor :(String类型,可选)取消按钮的文字颜色,默认为"#000000"
  • confirmText :(String类型,可选)确认按钮的文字,默认为"确定"
  • confirmColor :(String类型,可选)确认按钮的文字颜色,默认为"#3cc51f"
  • success :(Function类型,可选)接口调用成功的回调函数
  • fail :(Function类型,可选)接口调用失败的回调函数
  • complete :(Function类型,可选)接口调用结束的回调函数(调用成功、失败都会执行)

2.2 回调函数的使用与实践

2.2.1 回调函数的结构和参数解析

回调函数是在用户对模态对话框做出响应(点击按钮)后执行的代码块。 showModal 方法的回调函数结构通常包括:

wx.showModal({
  // ...参数
  success: function(res) {
    // 用户点击了确定按钮
    if (res.confirm) {
      console.log("用户点击了确认");
    } else if (res.cancel) {
      // 用户点击了取消按钮
      console.log("用户点击了取消");
    }
  }
});

在上述代码中, res 是一个对象,它包含了用户点击按钮后的相关信息。 res.confirm res.cancel 是布尔值,用来表示用户点击了哪个按钮。

2.2.2 实际开发中的回调处理策略

在实际开发中,回调函数需要根据具体业务逻辑进行设计。例如,用户点击确认后,可能需要执行一系列操作,如表单提交、数据处理等。

wx.showModal({
  title: '是否提交表单?',
  success: function(res) {
    if (res.confirm) {
      // 提交表单
      submitForm();
    } else if (res.cancel) {
      // 关闭模态框,不进行任何操作
      console.log("已取消");
    }
  }
});

function submitForm() {
  // 表单提交逻辑...
}

在上述示例中, submitForm 函数代表表单提交操作。根据用户的选择(确认或取消),执行不同的逻辑分支。

通过本章节的介绍,您应该已经了解了 wx.showModal 的基础用法和回调处理策略。下一章节,我们将深入探讨Modal的参数详解,以便更好地定制模态对话框的外观和行为。

3. Modal的参数详解

在微信小程序中,Modal组件提供了一系列的参数和属性,用于自定义弹窗的行为和样式。这些参数可以大大增加Modal的灵活性,使其更好地满足不同场景下的需求。

3.1 标题与内容参数

3.1.1 title 参数的设置与样式定制

title 参数用于定义Modal的标题。默认情况下,Modal的标题字体大小为17px,颜色为#333333。如果需要个性化样式,可以通过CSS自定义Modal的标题。

.modal-title {
  font-size: 20px !important;
  color: #ff6600;
}

在实际开发中,可以通过修改Modal的类名或直接指定样式来定制标题:

wx.showModal({
  title: '自定义标题',
  content: '这是一个自定义样式的Modal',
  success: (res) => {
    console.log(res);
  }
});
3.1.2 content 参数的内容填充技巧

content 参数用于设置Modal的内容部分。由于内容区域能够接受 <text> 标签,因此可以支持更丰富的文本格式和样式。通过合理地组织内容和使用HTML标签,可以提高信息的可读性和吸引力。

wx.showModal({
  title: '提示',
  content: '这是一段<text style="color:#ff0000;">带颜色</text>的文本',
  success: (res) => {
    console.log(res);
  }
});

3.2 控制按钮与文本

3.2.1 showCancel 属性的作用与配置

showCancel 属性决定了是否显示Modal的取消按钮。默认情况下, showCancel true ,即显示取消按钮。如果需要隐藏取消按钮,可以将 showCancel 设置为 false 。这在不影响用户交互的情况下,可以减少用户的犹豫,使得确认操作更加直接。

wx.showModal({
  title: '确认操作',
  content: '您确定要执行此操作吗?',
  showCancel: false,
  success: (res) => {
    console.log(res);
  }
});
3.2.2 自定义 cancelText confirmText 的方式

如果需要,可以通过 cancelText confirmText 属性自定义取消按钮和确认按钮的文本。这在某些特定场景下可以更加贴合产品需求,提高用户的操作舒适度。

wx.showModal({
  title: '操作确认',
  content: '您确定要删除此记录吗?',
  cancelText: '取消',
  confirmText: '删除',
  success: (res) => {
    console.log(res);
  }
});

在自定义按钮文本时,应考虑到不同文化背景下的语义差异,确保按钮的意图清晰,并且保持整个应用的一致性。

| 参数 | 类型 | 默认值 | 描述 | |-------------|--------|------|--------------------------------------------| | title | String | "" | 弹窗的标题 | | content | String | "" | 弹窗的内容 | | showCancel | Boolean| true | 是否显示取消按钮 | | cancelText | String | "取消" | 取消按钮的文字 | | confirmText | String | "确定" | 确认按钮的文字 | | ... | ... | ... | 其他支持的参数,如样式、动画、回调函数等 |

注意 :在修改 confirmText cancelText 时,应确保文本简洁明了,避免过于复杂的表达,以免引起用户的误解。

以上参数的介绍和使用方法,让开发者可以根据不同的需求灵活地控制Modal弹窗,提高用户体验。在下一章节,我们将继续深入了解如何自定义Modal的样式和布局。

4. 如何自定义Modal样式和布局

在微信小程序中,Modal(模态弹窗)是用于展示重要信息、进行用户交互的重要组件。通过自定义Modal的样式和布局,可以提升用户体验,确保信息传达的效果。本章节将深入探讨如何使用CSS和小程序样式文件来自定义Modal的样式和布局,并给出优化布局的策略。

4.1 样式自定义方法

4.1.1 使用CSS进行样式定制

在微信小程序中,可以通过在页面对应的 .wxss 文件中编写CSS来定制Modal的样式。下面将通过一个示例来展示如何对Modal进行样式定制。

/* 自定义Modal的样式 */
.modal-container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 200px;
  width: 80%;
  background-color: #fff;
  border-radius: 10px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}

.modal-title {
  font-size: 18px;
  color: #333;
  padding: 10px 15px;
  border-bottom: 1px solid #eee;
}

.modal-content {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 15px;
  text-align: center;
}

.modal-button {
  width: 100%;
  background-color: #1aad19;
  color: #fff;
  padding: 10px 0;
  border: none;
  border-radius: 0 0 10px 10px;
}

在上述CSS代码中, .modal-container 类定义了模态窗口的外观,包括背景颜色、边框半径和阴影。 .modal-title 类设置了标题区域的样式,包括文字大小和颜色。 .modal-content 类定义了内容区域的样式,实现了居中显示。 .modal-button 类则定制了按钮的样式,包括背景颜色、文字颜色和边框样式。

4.1.2 通过小程序的样式文件设置样式

在微信小程序的WXML文件中,可以通过 style 属性直接对组件设置样式,或者在对应的 .wxss 文件中通过类名设置样式。如果需要对Modal中的单个元素进行样式设置,也可以通过内联样式或覆盖组件的默认类来实现。

例如,下面的代码段展示了如何在WXML中直接设置样式:

<view class="modal-container" style="height: 150px;">
  <view class="modal-title">自定义标题</view>
  <view class="modal-content">
    这里是自定义内容区域
  </view>
  <view class="modal-button">确认</view>
</view>

在这个示例中, .modal-container 类的 height 属性被直接通过 style 属性覆盖,以调整弹窗的高度。

4.2 布局优化策略

4.2.1 布局的基本原则和技巧

在进行Modal布局时,应遵循以下基本原则和技巧,以确保其在不同设备和屏幕尺寸上的适应性和可用性:

  • 响应式设计 :使用百分比宽度或 vw/vh 单位,使得Modal宽度可以随着屏幕尺寸的变化而自适应。
  • 居中显示 :通常Modal应该在屏幕中央显示,可以通过 position: fixed top , left , right , bottom transform 属性来实现居中。
  • 焦点区域 : Modal弹出时应该覆盖大部分页面,但同时提供明显的关闭方式,避免遮挡重要信息。

4.2.2 处理不同屏幕和设备的适应性

为了确保Modal在不同设备和屏幕尺寸上的适应性,可以使用媒体查询(Media Queries)来为不同的屏幕宽度设置不同的样式规则。例如:

/* 大屏设备的Modal样式 */
@media screen and (min-width: 768px) {
  .modal-container {
    width: 50%;
  }
}

/* 小屏设备的Modal样式 */
@media screen and (max-width: 767px) {
  .modal-container {
    width: 90%;
  }
}

在上述示例中,根据屏幕宽度的不同,为Modal设置了不同的宽度,确保其在大屏和小屏设备上均能良好显示。

通过上述方法,我们可以实现Modal的样式和布局的自定义,以达到符合业务需求的用户体验效果。下一章节将探讨Modal的具体应用场景和设计原则,进一步提升小程序的交互体验。

5. Modal应用场景

5.1 用户确认操作

5.1.1 确认操作的设计逻辑

在应用程序中,用户执行某些操作(如删除文件、提交表单、执行危险动作等)之前,需要用户确认以防止误操作。 Modal 对话框正是这种场景下的理想选择。确认操作的设计逻辑需要简单明了,让用户能够一目了然地知道将要进行的操作及其可能的后果。 wx.showModal API 提供了一个 confirm 属性,这个属性可以用来设置确认按钮的文本,通常表示同意执行操作。 confirm 属性的设置可以基于操作的重要性与风险等级来定制。

5.1.2 提升用户体验的确认框设计

为了提升用户体验,确认框的设计应该遵循几个原则。首先,应该提供清晰明确的标题和内容,告知用户确认操作的目的。其次,内容描述中应该包含执行操作的后果,以及如何撤销操作的信息(如果可能的话)。此外,自定义按钮文本可以更好地融入应用的整体风格,使用简洁而有力量的词汇,例如“确定”、“取消”或者“删除”。最后,确认框的位置应处于用户视线的中心位置,以便第一时间获得用户注意。

5.2 显示重要信息

5.2.1 信息展示的设计要点

在应用中显示重要信息是 Modal 对话框的另一个常见用途。设计这类 Modal 时,信息的展示应考虑其紧急性和重要性。一个良好的设计要点是使用清晰、易懂的语言描述情况,并且在视觉上加以区分。可以使用不同的颜色、图标或者字体大小来强调信息的重要性。例如,红色通常与危险或错误相关联,而绿色则与成功或安全相关联。

5.2.2 如何有效传达紧急与重要信息

在紧急情况下, Modal 对话框需要迅速吸引用户的注意力。这通常通过在页面上使用全屏或半屏的 Modal 对话框来实现,避免用户忽视这个重要的通知。在 Modal 中,应提供简洁、直接的行动指引,例如,“立即更新”、“查看详情”或者“立即备份”。另外,应考虑到用户在紧急情况下可能的紧张情绪,因此对话框应包含必要的帮助选项,如客服联系信息或帮助文档链接。

5.3 获取用户输入

5.3.1 输入框的集成和处理

在某些场景下, Modal 对话框不仅用来展示信息,还需要从用户那里获取输入。比如,在用户尝试删除文件或退出未保存的工作时,可能需要用户输入确认信息,以防止误操作。使用 wx.showModal input 属性可以实现此功能。需要特别注意的是,输入框不应该用于收集复杂的用户输入,因为这可能会破坏用户体验。在集成输入框时,要确保输入提示清晰,并且在提交前进行输入验证,保证数据的准确性和完整性。

5.3.2 输入验证与用户体验优化

为了提升用户体验,在获取用户输入时进行验证是必不可少的。应该在用户提交输入之前对输入进行验证,确保用户输入的数据符合要求,比如格式正确、非空且在特定的范围内。可以使用正则表达式、最小长度限制和默认值预填充等方法来提高数据质量。通过在前端进行验证,可以减少服务器端的无效请求,并提供即时反馈,使用户可以立即更正错误。同时,优化输入字段的交互逻辑,如自动聚焦、软键盘的智能弹出等,也能进一步提升用户的输入体验。

// 示例代码:使用wx.showModal获取用户输入
wx.showModal({
  title: '确认信息',
  content: '请输入你的手机号码',
  input: 'text',
  inputPlaceholder: '请输入11位手机号码',
  inputType: 'number',
  success: function(res) {
    if (res.confirm) {
      console.log('用户输入的手机号码是:' + res.inputValue);
    } else if (res.cancel) {
      console.log('用户已取消输入。');
    }
  }
});

在上述代码中,我们定义了一个 Modal 对话框,提示用户输入手机号码。使用 input 属性设置输入类型为 number ,并提供了一个 inputPlaceholder 提示用户输入格式。 success 函数根据用户操作(确认或取消)执行不同的逻辑处理,如果是确认操作,则会输出用户输入的手机号码。这个过程不仅提高了用户输入的准确率,还优化了用户体验。

6. 使用Modal时的用户体验注意事项

Modal(模态框)在应用程序中是一种常用的交互方式,它可以打断用户当前的流程,让用户注意到重要的信息或进行关键的决策。然而,如果设计不当或过度使用,Modal很可能变成用户体验的障碍,引起用户的不满和挫败感。在本章节中,我们将深入探讨如何在使用Modal时确保良好的用户体验,包括设计原则、最佳实践以及常见问题的解决方法。

6.1 用户体验设计原则

设计良好的Modal需要遵循一些基本的用户体验设计原则。这些原则帮助开发者在提供信息和收集用户输入的同时,保持用户流程的连贯性和应用的可用性。

6.1.1 避免Modal滥用的策略

滥用Modal会破坏用户的体验,导致他们感到困惑和沮丧。为了避免 Modal 的滥用,开发者应该首先评估是否真的需要打断用户流程。以下是几个避免滥用Modal的策略:

  • 评估信息重要性 :只有当消息非常重要,需要用户立即注意时,才使用Modal。对于次要信息,可以考虑使用状态栏提示或者侧边栏通知。
  • 减少频繁弹出 :频繁地显示Modal会打断用户的操作流程,影响他们的操作体验。应限制Modal的弹出频率,考虑是否可以用其他方式呈现信息。
  • 提供明确的退出选项 :用户应该能够容易地关闭Modal。理想情况下,Modal应仅包含“确定”和“取消”按钮,而非复杂的操作菜单。

6.1.2 Modal的最佳实践和设计规范

为了让Modal更好地服务于用户,以下是一些最佳实践和设计规范:

  • 简洁明了 :Modal的内容应该简洁并且直接传达信息,避免冗长的描述和复杂的结构。
  • 符合品牌风格 :Modal的视觉设计要符合应用的整体品牌风格,使用统一的字体、颜色和图标等。
  • 适应不同屏幕和设备 :确保Modal在各种设备和屏幕尺寸上都能正常显示和操作,包括不同分辨率和方向。

6.2 常见问题及解决方法

在使用Modal时,开发者可能会遇到一些常见问题。正确地诊断并解决这些问题对于维护良好的用户体验至关重要。

6.2.1 Modal相关问题的诊断

  • ** Modal 不响应点击事件**:这种情况可能是由于 Modal 的HTML元素没有正确设置 pointer-events 属性。可以通过设置CSS属性 pointer-events: auto; 来解决。
  • ** Modal 无法正确关闭**:如果Modal看起来像是"卡住"了,并且无法响应关闭操作,检查是否有JavaScript错误或者Modal覆盖的元素正在阻止关闭行为。

6.2.2 提升用户满意度的调试技巧

调试Modal,提升用户满意度可以遵循以下步骤:

  • 用户反馈循环 :定期收集用户对Modal的反馈,并据此调整设计。
  • A/B测试 :使用A/B测试来比较不同Modal设计对用户体验的影响。
  • 性能监控 :监控Modal的打开和关闭速度,确保它们的响应时间符合用户预期。

实际案例分析

6.2.3 实际案例分析

一个关于Modal用户体验优化的实际案例是支付宝的账单提醒功能。在支付宝中,当用户有新的账单需要查看时,会弹出一个Modal提示用户查看账单详情。支付宝在这个Modal的设计上遵循了简洁明了的原则,使用了醒目的颜色和清晰的字体。同时,支付宝在用户点击“关闭”按钮后提供了“查看账单”和“不看了”的选项,既满足了用户的需求,又提供了明确的退出路径。

代码逻辑和参数说明

6.2.4 代码逻辑和参数说明

在设计Modal时,开发者需要使用JavaScript和CSS来实现交互和样式。以下是一个简化的Modal代码示例,包括 Modal 的 HTML 结构和 CSS 样式,以及 JavaScript 逻辑:

<!-- Modal HTML 结构 -->
<div id="modal" class="modal">
  <div class="modal-content">
    <span class="close">&times;</span>
    <p>这里是Modal内容。</p>
  </div>
</div>
/* Modal CSS 样式 */
.modal {
  display: none; /* 默认隐藏 */
  position: fixed; /* 固定定位 */
  left: 0;
  top: 0;
  width: 100%; /* 宽度全屏 */
  height: 100%; /* 高度全屏 */
  background-color: rgba(0,0,0,0.5); /* 背景半透明 */
  z-index: 1000; /* 确保Modal在最顶层 */
}

.modal-content {
  background-color: #fefefe;
  margin: 15% auto; /* 15% 从顶部和水平居中 */
  padding: 20px;
  border: 1px solid #888;
  width: 80%; /* 宽度80% */
}
// JavaScript 逻辑
document.getElementById('modal').style.display = "block";

// 关闭 Modal
document.getElementsByClassName("close")[0].onclick = function() {
  document.getElementById('modal').style.display = "none";
}

// 点击 Modal 外部关闭 Modal
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

参数说明

  • display: none; 用于初始隐藏 Modal。
  • 通过设置 position: fixed; width: 100%; height: 100%; 使 Modal 全屏显示。
  • background-color: rgba(0,0,0,0.5); 用于创建半透明的遮罩层,使用户感受到 Modal 的存在。
  • .modal-content 中的 margin: 15% auto; 确保 Modal 内容在用户屏幕上水平和垂直居中。
  • JavaScript 代码实现了 Modal 的基本交互,包括展示和隐藏 Modal。

通过上述案例分析和代码逻辑说明,我们可以看到,为了提升用户体验,Modal 的设计和实现需要细心考虑用户的需求和操作逻辑。通过合理的反馈机制、优化的设计和良好的性能,开发者可以有效地利用Modal提升用户的满意度。

7. Modal的高级功能与性能优化

在微信小程序开发中,Modal组件不仅提供基本的弹窗功能,还支持一些高级功能和性能优化手段,这些可以显著提升用户体验,并满足更复杂的业务需求。本章将深入探讨如何利用这些高级功能和进行性能优化。

7.1 高级功能详解

7.1.1 动态加载内容

Modal可以动态加载内容,这对于需要根据实际情况显示不同信息的场景非常有用。通过 wx.showModal content 参数,我们可以插入一个URL地址,小程序将会请求这个地址并加载内容到Modal中。

wx.request({
  url: 'https://example.com/content', // 你的动态内容地址
  success: function(res) {
    wx.showModal({
      title: '动态加载的Modal',
      content: res.data, // 将请求到的内容显示在Modal中
      // 其他参数...
    });
  }
});

7.1.2 延迟关闭

Modal默认在用户作出选择后立即关闭,但有时我们可能需要延迟关闭,以便让 Modal 的信息更长时间地展示给用户。 success 回调提供了 complete 函数,可以用来设置延迟关闭。

wx.showModal({
  title: '提示',
  content: '这是一个提示框',
  success: function(res) {
    setTimeout(() => {
      console.log('Modal延迟关闭');
    }, 3000); // 延迟3秒钟关闭
  }
});

7.1.3 多按钮支持

在某些情况下,一个确认按钮或取消按钮不能满足需求, showCancel 属性可以设置为 false ,并且 cancelText 属性可以自定义取消按钮的文本。 showCancel cancelText 属性结合使用,可以实现更复杂的交互逻辑。

wx.showModal({
  title: '选择框',
  content: '你想要哪种类型的提示框?',
  showCancel: false, // 只显示确认按钮
  confirmText: '自定义确认',
  success: function(res) {
    if (res.confirm) {
      console.log('用户点击了确认');
    }
  }
});

7.2 性能优化方法

7.2.1 按需加载

为了避免 Modal 弹窗影响小程序的启动速度,我们应该遵循按需加载的原则。这通常意味着 Modal 的内容不应该直接打包到小程序的初始包中,而是根据用户的交互动态加载。

7.2.2 代码拆分和异步处理

在处理复杂的 Modal 交互时,可以将 Modal 的相关代码拆分出来,放在独立的文件中,并在需要时异步加载。这样可以减少主执行文件的大小,加快小程序的响应速度。

// 异步加载Modal的逻辑
function loadModalComponent() {
  const component = require('path/to/modal/component');
  // 加载组件后执行Modal显示逻辑
}

7.2.3 资源缓存

对从网络动态加载的内容,合理使用缓存机制可以加快后续的加载速度,提升用户体验。小程序提供了本地存储的能力,可以有效利用这一机制来缓存网络请求的数据。

const storage = wx.getStorageSync('modalContent');
if (!storage) {
  wx.request({
    url: 'https://example.com/content',
    success: function(res) {
      wx.setStorageSync('modalContent', res.data); // 缓存内容
      // 显示Modal
    }
  });
} else {
  // 直接使用缓存的内容显示Modal
}

通过这些高级功能和性能优化技巧,我们不仅可以提升小程序 Modal 的功能性,还能在用户体验和性能上取得平衡。在实际开发中,开发者应根据具体需求和场景灵活运用这些技术点。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:微信小程序中的Modal弹窗组件用于向用户展示重要提示或获取用户确认。本资源包含 Modal 弹窗的实现示例和教程,涵盖了 Modal 的定义、 wx.showModal API 的使用方法、参数详解、样式自定义、应用场景及注意事项,帮助开发者在小程序中实现交互性好的弹窗。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值