当前位置: 首页 > news >正文

【实习】钉钉端银行经理新增与二维码功能开发复盘

钉钉移动端银行经理新增与二维码功能开发复盘

  • 1. 需求概述
  • 2. 整体流程
    • 2.1 时序图
    • 2.2 流程图
  • 3. 方案演进
    • 3.1 初期方案:弹窗显示二维码(❌ 失败)
    • 3.2 最终方案:独立页面(✅ 成功)
  • 4. 核心代码解析
    • 4.1 数据流对比
    • 4.3 二维码页关键代码 (qrcode.vue)
  • 5. 路由配置 (routes.js)
  • 6. 踩坑记录
  • 7. 文件结构
  • 8. 总结

1. 需求概述

在钉钉移动端(Wap端)的活动管理模块中,实现"银行经理"管理功能:

列表展示(姓名、手机号、绑定状态)
新增银行经理(姓名、手机号、身份证后六位、银行网点)
二维码生成(供经理扫码绑定)

2. 整体流程

2.1 时序图

2.2 流程图

3. 方案演进

3.1 初期方案:弹窗显示二维码(❌ 失败)

思路:在列表页使用 van-dialog 或 z-action 的弹窗模式直接展示二维码。
问题:
z-action 的 slot 在移动端渲染不稳定
二维码库 (qrcode.min.js) 动态加载失败
后端接口返回的链接在弹窗关闭时丢失

3.2 最终方案:独立页面(✅ 成功)

思路:将二维码展示拆分为独立页面,通过路由跳转。
优势:
页面生命周期完整可控
复用 PC 端成熟的组件逻辑
调试和维护更简单

4. 核心代码解析

4.1 数据流对比


4.2 列表页关键代码 (list.vue)

<template><!--导航栏集成新增按钮--><van-nav-bar title="银行经理列表"><template #right><z-action mode="drawer"title="新增"url="/do/put/bank_manager":data="{ activityId }":fields="formFields"@finish="onAddSuccess"><van-button size="small"type="primary">新增</van-button></z-action></template></van-nav-bar><!--列表--><z-list ref="list"url="/do/select/bank_manager":params="{ activityId }"><template #row="item"><van-cell:title="item.title":label="item.phone"><template #value><van-tag:type="item.isBind ? 'success' : 'warning'">{{item.isBind?'已绑定':''}}</van-tag><van-button v-if="!item.isBind"size="mini"@click="goQrcode(item)">二维码</van-button></template></van-cell></template></z-list></template><script>exportdefault{data(){return{activityId:this.$route.query.activityId,formFields:[{name:'activityId',type:'hidden'},{label:'姓名',name:'title',type:'input',rules:[{required:true}]},{label:'手机号',name:'phone',type:'input',rules:[{required:true}]},{label:'身份证后六位',name:'idCard',type:'input'},{label:'银行网点',name:'bankBranch',type:'textarea'}]}},methods:{onAddSuccess(){this.$refs.list.refresh();// 仅刷新,不跳转},goQrcode(manager){// 关键:存储完整对象到 sessionStoragesessionStorage.setItem('qrManager',JSON.stringify(manager));this.$router.push({path:'/pages/bankManager/qrcode',query:{id:manager.id}});}}}</script>

4.3 二维码页关键代码 (qrcode.vue)

<template><van-nav-bar title="扫码绑定"left-arrow@click-left="goBack"/><z-block url="/api/activity/createQr":params="params"><template #default="data"><z-copy label="复制链接":value="data"/><z-qr:value="data"height="200px"width="200px"/><div>二维码有效期十分钟</div></template></z-block><van-button@click="refresh">刷新二维码</van-button></template><script>exportdefault{data(){// 从 sessionStorage 恢复数据constmanagerStr=sessionStorage.getItem('qrManager');constmanager=managerStr?JSON.parse(managerStr):{id:this.$route.query.id};return{params:manager};},methods:{goBack(){this.$router.back();},refresh(){constmanagerStr=sessionStorage.getItem('qrManager');constmanager=managerStr?JSON.parse(managerStr):{id:this.$route.query.id};this.params={...manager,temp:Date.now()};// temp 触发重新请求}}}</script>

5. 路由配置 (routes.js)

// 银行经理模块{path:'/pages/bankManager/list',name:'BankManagerList',component:()=>import('./bankManager/list.vue'),meta:{title:'银行经理列表'}},{path:'/pages/bankManager/qrcode',name:'BankManagerQrcode',component:()=>import('./bankManager/qrcode.vue'),meta:{title:'扫码绑定'}}

6. 踩坑记录

7. 文件结构

wap/
├── public/
│ └── lib/
│ └── qrcode.min.js # 二维码依赖库(从PC端复制)
└── src/
└── pages/
├── bankManager/
│ ├── list.vue # 银行经理列表页
│ └── qrcode.vue # 二维码展示页
├── routes.js # 路由配置
└── welcome/
└── welcome.vue # 活动列表页(增加入口按钮)

8. 总结

通过将复杂的弹窗逻辑拆分为独立页面,并复用 PC 端成熟的组件(z-block、z-qr、z-copy),大幅降低了开发复杂度。

核心经验:

跨页面传值:使用 sessionStorage 传递复杂对象
复用优先:优先使用已有组件,避免重复造轮子
渐进式调试:遇到问题时,先简化场景(弹窗→独立页面)
参考 PC 端:移动端功能优先参考 PC 端成熟实现

http://www.jsqmd.com/news/343696/

相关文章:

  • 《镖人》将映《金吾不禁》杀青00后景瓷双屏绽放未来可期
  • translategemma-27b-it作品分享:中文书法印章图→英文收藏级描述+文化溯源
  • 气象监测设备如何助力精细化环境管理?金叶仪器智能气象站方案探讨
  • 范桢复古写真曝光 清冷氛围诠释复古浪漫
  • vLLM vs Ollama:大模型本地与生产部署如何选型?一文讲透
  • STM32CubeProgrammer 的隐藏功能:从命令行到自动化脚本的进阶玩法
  • RMBG-2.0与微信小程序开发:移动端图像处理解决方案
  • 我没想到 CSS if 函数这么强
  • 【IEEE出版】第二届能源系统与电气工程国际学术会议(ESEE 2026)
  • 造相-Z-Image参数详解:VAE分片解码机制与显存压力缓解原理
  • 【EV 录屏】电脑录屏神器!高效录屏神器 | 大学生及职场必备好用工具(十一)——EV录屏上手指南
  • 选品别只看“需求”,更要看“供给”:亚马逊新思路——用“供给断层”挑出更好打的品
  • 计算机组成原理 (二) 计算机硬件设计思想及软件
  • YOLOv12在安防监控中的应用:实时目标检测实战
  • KaiwuDB 3.1.0 社区版发布,安装部署体验焕新升级,多维度优化增强
  • Gemma-3-270m模型压缩技术:减小体积提升效率
  • 计算机组成原理 (三)计算机硬件组成
  • FT61E13x家族解析(FT61E131/3F/32/33/35)8位AD型MCU之间的区别
  • 软件测试实战:RMBG-2.0质量保障方案
  • Qwen3-4B开源模型部署指南:免编译、免依赖、一键启动
  • GLM-4-9B-Chat-1M新手指南:百万上下文模型本地运行全流程
  • lychee-rerank-mm保姆级教程:WebUI多语言切换与中文界面优化
  • 网站内容巡查制度有哪几种类型?
  • 小白必看!Magma智能体3步搭建教程(附场景案例)
  • 无需联网!Z-Image i2L本地化AI绘图解决方案体验
  • ccmusic-database部署教程:阿里云ECS轻量服务器2核4G部署稳定运行实测
  • 音文对齐不求人:Qwen3-ForcedAligner-0.6B 的快速使用指南
  • YOLOv8与Baichuan-M2-32B-GPTQ-Int4结合的医疗影像分析系统
  • SiameseUIE效果展示:同一文本不同抽取模式结果差异可视化对比
  • 告别网络依赖:Qwen3-ASR纯本地语音识别实战