page-query-form 查询类服务模板

    解释:本模板适用于成绩查询、证书查询等查询类服务项开发工作,模板内包含的组件丰富,覆盖大多数查询类服务项场景,开发者仅需通过调整组件属性以及排序即可快速完成前端开发工作。

    扫码体验

    代码示例

    请使用百度APP扫码

    模板包含两个页面:查询参数填写页、。

    包括信息输入操作常用组件,例如输入框、日期选择器、位置选择器等,同时结合政务查询类服务特性,模板内包含了弹窗组件,当用户进入服务页面时,可通过弹窗对用户进行强提醒,加强信息的触达效果,保障用户办理查询类服务时的使用体验。

    页面路径:pages/index/index

    page-query-form 查询类服务模板 - 图2

    代码示例

    • SWAN
    • JSON
    1. "navigationBarTitleText": "标题文字",
    2. "navigationBarBackgroundColor": "#ffffff",
    3. "navigationBarTextStyle": "dark",
    4. "usingComponents": {
    5. "gov-picker": "@smt-ui/component-gov/src/picker",
    6. "gov-notice-bar": "@smt-ui/component-gov/src/notice-bar",
    7. "gov-sms-input": "@smt-ui/component-gov/src/sms-input",
    8. "gov-prompt": "@smt-ui/component-gov/src/prompt",
    9. "gov-captcha": "@smt-ui/component-gov/src/captcha",
    10. "gov-button": "@smt-ui/component-gov/src/button",
    11. "gov-input": "@smt-ui/component-gov/src/input"
    12. }
    13. }
    • 页面初始化。可进行办理前提示和初始化数据等操作

    • JS

    1. onLoad() {
    2. // 初始化图形验证码
    3. this.reloadImg();
    4. // 办理前提示
    5. swan.showModal({
    6. title: '提示',
    7. content: '此弹窗可在业务办理前对用户进行预先提醒',
    8. showCancel: false,
    9. confirmText: '我知道了'
    10. });
    11. }
    • 输入框事件。包含普通输入框、密码输入框、身份证输入框、手机号输入框、短信验证码输入框、图形验证码输入框。

    • JS

    1. /**
    2. * 输入框的 input 事件
    3. *
    4. * @param {Event} e 事件对象
    5. */
    6. bindInput(e) {
    7. // 将 input 输入的值赋给 model 中对应属性的 iptValue 字段, 用于后续校验和提交表单使用
    8. this.setData({
    9. ['model.' + e.currentTarget.dataset.id + '.iptValue']: e.detail.iptvalue
    10. });
    11. // 每次输入完成时判断查询按钮是否高亮显示
    12. this.buttonImportant({});
    13. }
    14. /**
    15. * 输入框的 blur 事件,失焦时通过 validata 方法对当前输入框的值进行校验
    16. *
    17. * @param {Event} e 事件对象
    18. */
    19. bindBlur(e) {
    20. let iptvalue = e.detail.iptvalue;
    21. let iptid = e.currentTarget.dataset.id;
    22. let rulse = this.data.model[iptid].rulse;
    23. this.validata(rulse, iptvalue, iptid);
    24. }
    25. /**
    26. * 点击输入框右侧清除按钮事件,短信验证码输入框、图形验证码输入框没有该事件
    27. *
    28. * @param {Event} e 事件对象
    29. */
    30. cleanRoad(e) {
    31. // 清空当前表单内数据
    32. this.setData({['model.' + e.currentTarget.dataset.id + '.iptValue']: ''});
    • 选择器的 change 事件处理。包含普通选择器、日期选择器、地区选择器

    • JS

    • 点击图形验证码事件

    1. /**
    2. * 图形验证码的点击事件,可以增加刷新图片验证码或者其他需要的操作
    3. */
    4. swan.request({
    5. // 仅为示例,并非真实的接口地址
    6. url: 'http://www.baidu.com',
    7. success: res => {
    8. this.setData({
    9. // codeImg 字段根据业务自行调整
    10. 'model.govCaptcha.codeImg': res.data.codeImg
    11. })
    12. },
    13. fail: err => {
    14. // 接口异常的处理代码
    15. }
    16. })
    17. }
    • 获取手机验证码事件

    • JS

    1. /**
    2. * 手机号验证码组件点击获取验证码的事件
    3. */
    4. smssend() {
    5. // 该方法模拟收到短信验证码的toast效果,实际场景请使用开发者自己的短信验证码服务
    6. swan.showToast({
    7. title: '验证码:123456',
    8. icon: 'none'
    9. });
    10. }
    • 页面下方“温馨提示”的“点击查看”的事件

    • JS

    1. /**
    2. * 页面下方“温馨提示”的 “点击查看” 事件处理
    3. */
    4. toView() {
    5. // 此处仅为示例,您可以自定义该事件的逻辑,比如跳转到某个页面等
    6. swan.navigateTo({url: '/pages/index/index'});
    7. }
    • 查询按钮点击事件

    • JS

    查询结果页

    页面用于承载查询结果,将查询结果信息结构化呈现,便于用户阅读理解。
    页面路径:pages/result/result

    • SWAN
    • JSON
    • JS
    1. <view class="{{checkFullScreen ? 'container container-bottom' : 'container'}}">
    2. <smt-page-status
    3. s-if="{{statePageType}}"
    4. class="page-status"
    5. icon="{{statePageConfig[statePageType].icon}}"
    6. title="{{statePageConfig[statePageType].title}}"
    7. desc="{{statePageConfig[statePageType].desc}}"
    8. showBtn="{{statePageConfig[statePageType].showBtn}}"
    9. smtreloading="{{reLoad}}"
    10. loading="{{statePageType === 'loading'}}"
    11. ></smt-page-status>
    12. <view s-else>
    13. <gov-page-title title="{{dataList.data.title}}" size="large" hasBorder="{{true}}"></gov-page-title>
    14. <block s-for="item, index in dataList.data.list">
    15. <gov-list-item
    16. label-width="6em"
    17. label="{{item.name}}"
    18. gov-label="list-label"
    19. border
    20. >
    21. <view slot="content" class="list-content">
    22. <view s-if="{{item.name === '联系电话'}}" class="phone">
    23. <text
    24. bindtap="callPhone"
    25. data-phoneNum="{{ele}}"
    26. >{{ele}} </text>
    27. </view>
    28. <gov-text-collapse
    29. s-else
    30. text="{{item.value}}"
    31. gov-text-collapse-content="list-text"
    32. ></gov-text-collapse>
    33. </view>
    34. </gov-list-item>
    35. </block>
    36. <view class="prompt">
    37. <gov-prompt>
    38. <view slot="title">温馨提示:</view>
    39. <view slot="content">
    40. 这里是温馨提示这里是温馨提示这里是温馨提示这里是温馨提示这里是温馨提示这里是温馨提示
    41. <text class="prompt-text" bindtap="toView">点击查看</text>
    42. </view>
    43. </gov-prompt>
    44. </view>
    45. </view>
    46. </view>
    1. {
    2. "navigationBarTitleText": "查询结果",
    3. "navigationBarBackgroundColor": "#ffffff",
    4. "navigationBarTextStyle": "dark",
    5. "usingComponents": {
    6. "gov-page-title":"@smt-ui/component-gov/src/page-title",
    7. "gov-list-item": "@smt-ui/component-gov/src/list-item",
    8. "gov-text-collapse": "@smt-ui/component-gov/src/text-collapse",
    9. "smt-page-status": "@smt-ui/component/src/page-status",
    10. "gov-prompt": "@smt-ui/component-gov/src/prompt"
    11. }
    12. }
    1. Page({
    2. data: {
    3. // warning 服务开小差、noContent 未查询到信息、noNetwork 无网络、不显示错误页则为空字符串
    4. statePageType: 'loading'
    5. },
    6. onLoad() {
    7. // 使用定时器模拟请求,模拟 loading 显示两秒钟
    8. setTimeout(() => {
    9. this.data.statePageType = '';
    10. }, 2000)
    11. },
    12. /**
    13. * 点击电话调起拨号
    14. *
    15. * @param {Event} e 事件对象
    16. */
    17. callPhone(e) {
    18. swan.makePhoneCall({
    19. phoneNumber: e.currentTarget.dataset.phoneNum
    20. });
    21. },
    22. /**
    23. * 页面下方“温馨提示”的 “点击查看” 事件处理
    24. */
    25. toView() {
    26. swan.showToast({
    27. title: '点击查看',
    28. icon: 'none'
    29. });
    30. }
    31. });
    • Tip:该模板使用了 ES6 语法,需要开启开发者工具的增强编译,操作步骤参看;同时也需开启上传代码时样式自动补全。
    • Tip:模板中使用的是测试数据,你需要从接口中获取真实的数据。