# xcx
**Repository Path**: themrxk/xcx
## Basic Information
- **Project Name**: xcx
- **Description**: 拾蔚小助手,虽然是第一次开发,但是他一定会越来越完善!
- **Primary Language**: HTML
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-04-07
- **Last Updated**: 2025-12-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 拾蔚小助手
#### 如果非要让一句话介绍我自己的话?那么请叫我小开,一个键盘上敲出未来的程序员,智能时代的技术学徒。
---
## 【从零到一:我的全栈开发首秀】🚀
##### 这款微信小程序是我步入银行以来,迷失自我重新振作后首个独立设计、开发、部署的全栈作品,历时一个半月完成前后端全流程开发。作为新人开发者,我通过系统性自学攻克了接口联调、数据加密、生产环境部署等难题,并在关键环节借助大模型辅助代码优化,实现了从学生到独立开发者的蜕变。
**🌟 核心功能亮点** 通过持续迭代的40+版本更新,已构建七大功能体系:
1. **安全智能的用户体系**
* 完整的注册/登录流程(Token自动续期)
* 密码加密存储体系(动态盐值+密文双保险)
* 全局凭证管理(请求拦截+自动注入)
2. **企业级客户管理系统**
* 分级客户信息库(敏感数据脱敏显示)
* 可视化名片系统(动态数据+响应式布局)
* 精准搜索引擎(历史记录+语义联想)
3. **智能提醒系统**
* 到期智能预警(短信模板自定义)
* 微信日历双写机制(本地+系统级同步)
* 交互式时间选择(防抖优化+动画校准)
4. **创新文件处理中心**
* 多图转PDF引擎(原生API优化)
* 安全图床服务(私有化部署)
* 大文件分块上传
5. **社交互动生态**
* 匿名吐槽圈(事件总线通信)
* 点赞互动系统
* 自适应瀑布流布局
6. **创新实验模块中心**
* 抖音去水印工具(反爬策略突破)
* AI排班引擎(持续迭代中)
* 热更新系统
7. **企业级工程架构**
* 生产环境容器化
* 封装高复用Request模块(自动凭证管理/错误重试)
* 实现热更新与生产环境配置
* 数据库性能调优(查询分层处理/索引优化)
**🚀 关键技术突破** • **全栈掌控**:单枪匹马完成小程序端、管理后台、RESTful API、MySQL数据库设计与云部署 • **安全体系**:自主设计动态盐值密码加密方案,较传统方案提升300%抗彩虹表攻击能力 • **性能优化**:通过请求拦截器降低40%冗余流量,列表渲染效率提升70%
**💡 这个项目证明了** • 持续学习能力:从零到部署上线仅45天 • 技术敏锐度:快速集成vant-weui等前沿框架 • 产品思维:通过用户反馈驱动40+版本迭代 • 工程素养:建立自动化测试+热更新体系
**✨ 最后我想说** • "每一个深夜Debug的报错日志,都在见证我的技术进化。这个小程序不仅是对所学技术的整合,更是向行业证明:新生代开发者完全具备独立交付商业级应用的能力。"
---
#### 🌱 即刻体验
扫描二维码,感受新生代开发者的技术诚意。这里不仅有实用的功能模块,更凝聚着我对极致用户体验的追求——期待与您在代码世界中相遇,共同见证更多创新可能!
---
---
## 使用教程(开始讲人话了>_>)
**用户注册**
1. **输入,`姓名`,`员工编号`,`密码`,`用户入职时间`。勾选复选框,点击`立即注册`按钮即可完成小程序的注册。**
- 姓名以及员工号建议填写真实信息,测试账号不定期清理可能导致信息丢失,入职时间随意填写,后期准备取消该必输项
**上传文件**
1. **点击,`选择Excel 文件`。在你的消息列表中选择你要导入的数据后,点击`立即上传`或`重新选择`。**
- [示例文档点击查看](https://1860248-my.sharepoint.com/:x:/g/personal/hekai_office_10v_cc/EVlk4HBw_HhMluZb9BNasDUBV2vXaS7KE_6wtJ2T8yvw1A?e=oCPkF8)
- 请注意如果列名错误会导致识别不到,请严格遵守列名的命名,必要时请复制粘贴。
**到期提醒**
1. **该功能仅适用于上传文件后使用,会展示由近到远需要提醒到期的客户。点击,`其中的一位用户`后。自动生成自定义短信,点击`发送短信`按钮,会自动预填手机号,调用短信功能。**
2. **点击了发送按钮的客户,不再出现列表中以表示提醒过期。**
- 自定义短信内容模板为固定模板,但是可以自己随意更改后再发送,苹果机型完美调用(安卓模拟测试成功),如果涉及到短信内容以及功能问题请与我联系 邮箱:hekai@10v.cc。
**我的客户**
1. **该功能仅适用于上传文件后使用,点击该功能后,可以查看您已上传用户的总资产并排名(基于上传信息计算),`搜索客户姓名`会实时搜索您输入的姓名,并产生搜索记录。点击客户隐藏手机号会反显完整手机号**
2. **搜索页面介绍,搜索页面会逐字搜索依次展示同名客户信息,请注意手机号区分不同客户,点击客户姓名会展示客户卡片显示您上传的客户到期信息**
**重要提醒**
1. **该功能适用自定义日期,时间,内容。同步到手机日历中。**
- 苹果机型完美调用(安卓模拟测试成功)
- 先选择日期,再选择时间(即使是默认的时间也需要点击确定后再生成)
**PDF工坊**
1. **点击`添加图片`按钮,用户可以自行选择`拍照`导入,及`相册`导入。单次最多导入 9 张图片,最多支持 12 张图片,点击`立即生成 PDF`即可自动生成并打开,点击右上角`...`即可分享到各个平台。**
- 鸿蒙系统导入建行员工会出现bug,需要先保存后再打开转发到建行员工。苹果系统完美兼容。
- 图片质量越大,生成时间越长。有的时候显示“生成中”的字样直到消失, PDF 也并未打开,这个时候请耐心等待,如果时间超过三分钟同时并未自动打开PDF 文件,建议返回重试。
**抖音去水印**
1. **进入抖音,在需要下载或去水印的视频中点击`分享`按钮,选择`分享链接`后选择微信或直接返回,抖音会自动复制分享链接,将分享链接粘贴在`文本框`内,点击`一键提取链接`,跳转声明协议后,点击`我知道了`,系统会自动对分享的视频链接进行解析。解析成功后会自动显示视频内容,用户可直接播放查看,点击`保存到相册`即可保存到系统相册**
- 由于抖音对异常解析的反爬机制非常严格,如果发现该功能无法使用,请与我联系 邮箱:hekai@10v.cc。
- 含有广告的视频或许无法下载,这来自于抖音平台的限制非 bug,文图接口已开放但未将功能写入小程序,如有需求,后期会考虑增加。
**每日业绩**
1. **进入每日业绩,该功能会自动识别用户的岗位以及机构号,普通用户进入后点击`新建模板`按钮,会创建用户的业绩模板,创建后,在主页会显示所有创建过的模板,点击`填报`按钮,会进入填报页面,根据你所创建的模板进行填报,点击`提交`,系统会自动保存当日当前模板的内容信息,在首页会显示“今日已提交业绩记录”,在记录列表中可以查看往期填报记录以及不同模板下的已提交记录。**
2. **业绩统计系统,当岗位是“营销主管”岗位时候,用户进入后在弹窗中点击`进入`按钮,会进入到业绩统计页面,可以通关条件筛选查看,相同机构号下的同时的不同模板中的业绩。避免手工统计业绩时出现数据错乱问题。**
- 自定义模板功能将会在后期版本中更新,实时保存用户提交的业绩,简化模板创建问题。
#### 更新说明
- 1.0.0tab 标签页撰写完成
- 1.0.1 首页以及 user 页面设计
- 1.0.2 注册接口以及页面实现
- 1.0.3 优化注册页面注册接口
- 1.0.4主页页面返回附带 token 自动登录
- 1.0.5 美化 user 自动登录区域
- 1.0.6 登录模块部署登录接口编写
- 1.0.7 登录后传递 token 自动登录
- 1.0.8 优化后台表单逻辑注册逻辑优化 token 传递逻辑优化登录功能值传递方式优化后台数据库对密码的存储安全性自动生成盐值及密文存储密码
- 1.1.0 个人登录模块正式上线
- 1.1.1 增强注册登录页面密码的显示隐藏功能
- 1.1.2 修复注册页面密码值消失问题
- 1.1.3 修复登录页面密码值消失问题以及传递方式
- 1.1.4 优化输入框位置,已知问题未解决
- 1.1.5 新增集成功能页面
- 1.1.6 新增卡片标签功能
- 1.1.7 新增上传功能
- 1.1.8 上传功能强制绑定用户登录
- 1.1.8.1 全新的上传页面的页面设计,优化显示内容,更新wx.showToast的参数,将在1.1.8.2中完善数据预览功能
- 1.1.8.2 完善数据预览功能,已知问题:不显示金额下个版本修复,睡觉晚安!
- 1.1.8.3 修复已知问题:不显示金额,加载图标显示。
- 1.2.0 新增到期提醒页面:待提醒客户列表,短信提醒功能,发送短信功能
- 1.2.1 新增获取未提醒列表以及回调成功提醒api接口
- 1.2.2 新增自定义短信系统功能
- 1.2.3 优化客户列表显示逻辑
- 1.2.4 新增隐藏客户手机号,优化金额显示逻辑元→万
- 1.2.5 新增点击隐藏号码显示完整号码功能
- 1.2.6 优化预填短信内容自动识别客户经理名称
- 1.2.7 优化单选框样式,修复预填短信失效问题
- 1.2.8 优化预填短信字数显示与限制功能,已知问题:输入法会遮挡部分编辑区
- 1.2.9 优化输入法会遮挡部分编辑区,已知问题:待提醒客户列表底部定位错误
- 1.2.10 优化待提醒客户列表底部定位错误,测试机型iPhone13 Pro
- 1.3.1 新增我的客户页面
- 1.3.2 优化我的客户页面设计
- 1.3.3 优化前台数据显示逻辑
- 1.3.4 重构显示列表,重构数据预处理阶的逻辑。已知问题:不显示金额,排名人员有问题,点击卡片不显示完整手机号,图标位置待优化
- 1.3.5 修复金额不显示问题,修正字段名,增强数值转换-使用parseFloat进行安全转换
- 1.3.6 修复卡片排名与阶梯排名用户重复问题,使用数据处理分层处理,优化ID生成逻辑,优化序号显示
- 1.3.7 重构布局方式,优化卡片尺寸计算
- 1.3.7.1 调整前三名显示结构,优化样式
- 1.3.8 新增弹窗显示完整号码,增强数据结构,优化弹窗显示逻辑,调整按钮绑定事件,优化显示动态样式
- 1.3.9 优化css样式
- 1.4.0 重大更新,封装生产环境,重构api逻辑
- 1.4.1 调整含api的所有JS页面代码,优化取值逻辑,调整接口调用方式,调整响应处理,改造数据加载方法,移除冗余代码,添加自动凭证管理,自动注入 Authorization 请求头。部署上线环境
- 1.5.0 新增搜索客户信息功能,独立页面便于维护,原生导航过渡动画,完整的搜索交互流程,与原页面完全解耦,可扩展的详情页跳接,安全的手机号显示方式。已知问题:下个版本中将新增搜索历史记录的功能。
- 1.5.1 新增历史搜索记录功能,问题修复说明:
1. 时间显示问题:
- ~~确保在 WXML 中使用调用格式化方法~~
- 添加 .time 的样式定义(颜色、字体大小)
2. 布局优化:
- 新增 info-container 容器确保文字垂直排列
- 调整历史记录项的内边距和间距
3. 交互逻辑增强:
- 输入框聚焦时强制显示历史记录面板
- 搜索结果和历史记录的显示逻辑互斥
4. 样式完善:
- 增加历史记录面板的阴影和圆角
- 调整文字颜色层级(标题灰色、关键词黑色、时间浅灰)
- 优化搜索结果项的间距和对齐方式
5. 最终效果验证:
- 当输入框聚焦时:
- - 显示历史记录面板(如果有记录)
- - 时间显示格式为:"HH:mm"、"昨天 HH:mm" 或 "M月D日"
- 搜索时:
- - 自动隐藏历史记录面板
- - 显示搜索结果列表
- 点击历史记录项:
- - 自动填充搜索框
- - 执行搜索并显示结果
- 清空历史记录:
- - 面板立即消失
- - 显示 "已清空历史记录" 提示
- 1.5.2 修复时间显示逻辑,调整显示方法,优化搜索列表布局
- 1.5.3 新增客户名片功能
1. 数据驱动设计:通过JSON数据动态生成精美名片
2. 视觉层次清晰:
- 渐变色头像背景提升视觉焦点
- 合理运用字体大小/颜色区分信息层级
- 微阴影和圆角营造卡片质感
3. 响应式布局:
- 使用rpx适配不同屏幕
- Flex布局保证内容对齐
4. 数据格式化:
- 金额自动添加货币符号和千分位
- 日期转换为中文格式
5. 交互细节:
- 分割线区分信息区块
- 列表项底部边框增强可读性
- 1.5.3.1 新增动态头像显示
- 1.6.0 重大更新,request.js:请求模块化,异步控制优化,状态管理增强,错误处理策略,配置扩展性
- 1.7.0 新增重要提醒功能,配置引入 vant-weui 组件
- 1.7.1 使用calendar组件,加载日历
1. 日历交互
- 使用 vant-weui 日历组件 实现可视化日期选择
- 点击按钮弹出日历,选择后自动格式化日期显示
- 通过 dateFormatter 实现日期标记点(示例为每5天标记)
2. 数据绑定
- 实时同步用户输入的提醒内容 (alertContent)
- 自动转换日期对象为 YYYY-MM-DD HH:mm:ss 格式
3. 微信日历集成
- 调用 wx.addPhoneCalendar API 写入系统日历
4. 双写验证
- 优先写入本地日历,成功后再提交服务器
- 提供友好的错误提示(用户拒绝/设备不支持)
- 1.7.2 重构代码,优化CSS
1. 平铺样式实现
2. 交互优化
3. 视觉增强
4. 时间选择器集成
- 1.7.3 修复键盘遮挡文本框问题,核心修复点说明:
1. 防抖逻辑优化
- 在 onKeyboardHeightChange 中添加50ms防抖
- 增加 isKeyboardActive 状态判断,避免失焦后误触发
2. 时序精准控制
- 聚焦延迟调整为320ms(精确匹配微信键盘动画)
- 失焦立即执行复位(移除延迟避免闪烁)
3. 布局计算优化
- 消除安全边距计算误差
- 保留小数位数提升精度
- 动画曲线统一
- 1.7.4 结构优化,优化说明:如下,已知问题:时间可以选择但是无法预填到日历,加载时未判断登录状态
1. 布局重构:
- 将日期输入和时间选择器整合为水平排列的datetime-row
- 移除原有独立显示的日历组件,改为点击输入框触发弹窗日历
- 时间选择器添加箭头指示器
2. 交互优化:
- 点击日期输入框任意位置触发日历弹窗
- 选择日期后自动关闭弹窗
- 保持时间选择器的原有交互方式
3. 样式改进:
- 统一日期和时间选择器的外观样式
- 优化弹窗日历的显示尺寸
- 添加元素间距保证视觉平衡
4. 功能保留:
- 所有原有数据绑定和验证逻辑保持不变
- 控制台日志和注释完整保留
- 键盘处理逻辑不受影响
- 1.7.5 修复文本框兼容问题,延用现有方法,修复adjust-position="{{false}}" 所带来的背景晃动问题
- 1.7.6 解决预填时间无法导入日历的完整代码优化方案
1. 严格的日期解析
- 新增parseFormattedDate方法,支持两种日期格式解析并添加有效性验证
2. 时区补偿处理
- 在generateFinalDateTime中添加时区修正逻辑
3. 增强错误日志
- 添加详细的日期转换日志
- 记录实际使用的秒级时间戳和对应本地时间
- 在失败回调中返回可读的时间信息
4. 时间戳精确处理
- 严格处理时间单位转换
- 1.7.6.1 修复时区问题
- 原代码直接使用selectedDate时间戳(基于UTC)叠加时间导致时区错位
- 1.7.6.2 修复表单验证逻辑,日期有效性校验不足和内容长度计算方式所产生的问题
1. 日期验证缺陷
- 原逻辑 !!selectedDate 无法检测到 0 或 NaN 等无效值。现增加:
- Number.isInteger(selectedDate) 检测是否为有效时间戳
- selectedDate > Date.now() 确保不早于当前时间
2. 内容长度计算错误
- 原逻辑 alertContent.trim().length 的问题:
- 使用 String.length 统计中文会出错(1个中文算1个长度)
- 改为 [...str].length 准确统计Unicode字符
- "中文abc" 原方法返回5,新方法正确返回5(每个字1个长度)
- 1.7.7 添加实时字符计数器帮助用户掌握输入进度,修复可视化反馈的缺失
- 1.7.8 优化同步日历逻辑,增强验证信息
1. 日期验证三重保障
2. 内容验证精确化
3. 双重提交验证
- 1.7.8.1 解决用户取消添加日历仍显示成功的问题,更新日历错误映射
1. 精准识别取消操作
2. 错误提示分级处理
3. 提交流程优化
- 1.7.8.2 优化检测用户登录状态
- 1.8 编写数据库以及吐槽圈api接口
1. 数据库表
- 匿名吐槽表
- 点赞关系表
- 轮播图表
2. api接口
- 图片上传接口
- 发布吐槽接口
- 获取吐槽列表
- 删除吐槽接口
- 点赞操作接口
- 轮播图加载接口
- 1.8.1 添加吐槽圈展示页面
- 1.8.2 重要更新!优化并增强请求拦截器逻辑,使token可以更好的获得,优先从 globalData 获取,失败则从 Storage 读取
- 1.8.3 优化后端 token 读取获取,修复二次打开小程序,吐槽列表丢失的现象,新增登录检测功能。
- 1.8.4 后端重大更新,更换效率更高的数据库服务器,部署本地图床平台保障数据安全
- 1.8.5 新增发布卡片,优化设计
- 1.8.5.1 编写后端 API,融合图片上传与图床功能,重构发布接口方案。弃用 base64 转码带来的数据33% 的增量,增强错误处理和提示,增强响应格式兼容性,增强图床地址验证函数
- 1.8.5.2 修改全局配置文件,扩展上传方法
- 1.8.6 添加事件总线机制,增加列表页监听事件,优化发布页发布与返回逻辑
1. 自动刷新:发布后返回自动更新
2. 事件驱动:跨页面通信
3. 性能优化:智能防抖策略
4. 状态管理:完善的加载状态提示
5. 异常处理:网络错误时优雅降级
6. 完善的防抖和错误处理机制
- 1.8.7 修复触底加载的主要问题,导致无法正确触发滚动到底部的事件
1. 通过明确设置scroll-view高度确保滚动容器正确计算
2. 降低触底检测阈值提升加载灵敏度
3. 加强加载状态管理防止重复请求
4. 完善错误处理和空状态提示提升用户体验
- 1.8.8 修复轮播图片不随列表滚动问题
- 1.9.0 新增 userInfo接口,融合 get,patch 请求,减少接口冗余。新增 request 封装方法。
- 1.9.1 新增用户信息修改页面“我的信息”
- 1.9.2 修改密码验证逻辑
- 2.0.0 写了半个月的排版引擎,结果大失败,规则定义不准,特殊人数无法控制。
- 此功能公开源码,准备引入AI。
- 2.1.0 搭建开源PDF项目
- 2.1.1 自定义 img 转 PDF 接口
- 2.1.2 编写前台页面
- 2.1.3 优化前台 css
1. 视觉升级:
- 添加顶部标题栏(带实时计数器)
- 卡片式阴影设计
- 更精致的图标按钮
- 添加按钮的图文组合
- 底部悬浮操作栏
2. 交互优化:
- 按钮的hover状态动画
- 禁用状态的样式处理
- 滚动内容区域
- 更合理的布局层级
3. 新增特性:
- 实时显示已选图片数量
- 底部操作提示
- 图片的aspectFill显示模式
- 更完善的禁用状态处理
- 2.1.3.1 时隔 72 小时修复 bug 最终放弃该功能
- 2.1.4 永不放弃重写 api,使用原生 API 减少自定义问题。
- 2.1.5 优化 js
1. 图片管理:
- 支持拍照/相册选择图片
- 最多12张图片
- 支持预览和删除
- 九宫格布局
2. PDF生成:
- 使用小程序原生API处理文件
- 自动构造符合要求的multipart/form-data
- 处理大文件上传
- 自动打开生成的PDF文件
- 支持保存到手机
3. 用户体验:
- 加载状态提示
- 错误友好提示
- 符合微信视觉规范
- 2.1.6 全局更新登录验证
- 2.1.7 修复生成 PDF 按钮的 css 问题
- 2.2.0 增加热更新功能
- 2.3.0 重大更新,重构小程序样式,调整页面布局,删除 tabBar功能。
1. 点击欢迎语进入个人主页
2. 沉浸式导航栏
3. 新结构更适配安卓机型
- 2.3.1 更新显示登录信息功能(下一次更新搜索栏)
- 2.3.2 新增搜索栏,对齐导航条胶囊位置,当前仅支持搜索客户
- 2.3.2.1 优化 css 对齐会员标志,更新标签
- 2.3.3 新增主页自定义图标(例:抖音( xml.js.css 仅供参考))
- 2.4.0 新增抖音去水印下载功能
- 2.4.1 搭建开源项目获取功能 api
- 2.4.2 修复项目中 Cookie 失效问题
- 2.4.3 加入声明文件确认
1. 增强用户体验
- 弹窗出现动画(slideUp)
- 按钮点击动效(scale缩小)
- 可滚动的内容区域(scroll-view)
2. 视觉设计亮点
- 卡片式设计(圆角+阴影)
- 渐变色确认按钮
- 关闭图标直观可见
- 内容区段清晰分隔
3. 交互优化
- 支持点击蒙层外关闭
- 支持滑动浏览长内容
- 按钮状态反馈明确
- 2.4.4 修复在 WXSS 中定义对应的样式类,增强视觉层次,增加触感反馈
- 2.4.5 删除toast-icon提示类图标
- 2.4.6 修复抖音去水印下载页面登录检测
- 2.4.7 由于平台类目调整,该功能暂时封闭,待更新类目后重新开放。
- 2.4.8 打包feedbackpostcard页面(吐槽圈入口),更新主页公告弹窗。
- 2.5 新增业绩考核数据库接口,设计每日播报模板,设计自定也业绩的数据类型
- 2.5.1 新增 业绩模板管理API接口 ,分别为:
1. 创建新模板
2. 获取用户所有模板
3. 获取模板详情
4. 更新模板
5. 删除模板
6. 提交业绩记录
7. 获取业绩记录历史
- 2.5.2 修复接口bug
1. 自动日期处理:
- 在 PerformanceRecord 模型中添加了 record_date 字段
- 提交接口中使用 datetime.utcnow().date() 获取当前服务器日期
- 无需前端传递日期参数,后端自动处理
2.历史记录返回:
- 在获取历史记录的响应中添加了 record_date 字段
- 使用 strftime('%Y-%m-%d') 格式化为易读的日期字符串
2. 提交响应增强:
- 在提交成功的响应中包含 record_date 字段
- 使用 .isoformat() 返回标准 ISO 日期格式
3. 前端调用保持不变,无需传递 record_date 参数
4. 修改提交记录的接口逻辑(检测当天记录)
- 修改提交接口逻辑:检测当日记录并更新或创建
- 2.5.3 设计前端页面(删除饭圈)
- 2.5.4 微信小程序业绩填报首页实现
1. 顶部用户信息区*:
- ~~显示用户姓名和头像~~
- 显示当前日期(年月日+星期)
2. 搜索功能*:
- 支持按模板名称搜索
- 实时过滤模板列表
3. 今日填报提示*:
- 如果今日已提交业绩,显示提示信息
- 点击"查看"可查看今日填报详情
4. 模板列表:
- 显示用户所有模板
- 支持两种排序方式:默认优先/最近更新
- 模板卡片显示模板名称、项目数量、是否为默认模板和更新时间
- 每个模板有"填报"按钮
5. 底部导航:
- 历史记录入口:查看所有填报历史
- 新建模板入口:创建新的业绩模板
6. 清晰的信息层级:
- 使用卡片设计区分不同模板
- 合理的间距和留白提高可读性
- 色彩区分重要信息(如默认模板标识)
7. 高效的交互设计:
- 实时搜索过滤
- 一键切换排序方式
- 直观的填报按钮位置
8. 用户体验优化:
- 今日填报提示避免重复提交
- 清晰的空状态提示
- 加载状态反馈
9. 响应式布局:
- 适配不同尺寸手机屏幕
- 合理利用空间确保内容可见性
- 2.5.5 模板管理页面实现
1. **新建模板**:
* 用户输入模板名称
* 添加多个业绩项(每个业绩项包含产品名称和单位)
* 设置是否设为默认模板
* 保存到后端
2. **编辑模板**:
* 通过URL参数 `template_id` 加载现有模板
* 修改模板名称、业绩项内容和默认设置
* 保存更新
3. **动态表单**:
* 添加业绩项(自动生成唯一ID)
* 删除业绩项(至少保留一个)
* 实时验证输入内容
- 2.5.6 业绩记录历史页面实现
1. **模板筛选功能**
* 用户可以从下拉菜单中选择特定模板,只查看该模板下的业绩记录
* 提供"重置"按钮清除筛选条件,显示所有模板的记录
2. **分页加载**
* 初始加载第一页数据(10条记录)
* 滚动到底部自动加载下一页
* 显示加载状态和"没有更多记录"提示
3. **记录展示**
* 每条记录显示:
* 记录ID
* 提交时间
* 生成的业绩文案
* 所属模板名称
* 业绩文案可滚动查看完整内容
4. **分页加载**
* 当没有记录时显示友好的空状态提示
* 包含图片和文字提示
5. **交互设计**
* 简洁的卡片式设计
* 清晰的视觉层次
* 加载状态反馈
* 返回按钮导航
- 2.5.7 修复N多 bug 着重强调时区 bug 真他妈的恶心啊 草!
- 2.5.8 今日已提交记录页面实现
1. **页面结构**:
* 顶部显示"今日已提交记录"标题和当前日期
* 中间显示记录数量和最后更新时间
* 记录卡片包含:提交时间、模板名称、业绩内容和详细数据
* 无记录时显示空状态提示
2. **数据格式处理**:
* 将API返回的UTC时间转换为本地时间(HH:mm格式)
* 将业绩值映射到对应的产品项目上
3. **刷新机制**:
* 页面加载时自动获取最新数据
* 提供手动刷新按钮
4. **错误处理**:
* 网络请求错误处理
* 数据加载状态显示
* 空状态友好提示
- 2.5.8.1 增加点击生成文本框,复制到剪贴板上的功能
1. **点击事件绑定**:
* 在业绩总结区域添加 `bindtap="copyGeneratedText"` 事件绑定
* 通过 `data-text` 属性传递要复制的文本内容
2. **复制功能实现**:
* 使用微信小程序的 `wx.setClipboardData` API 复制文本
* 处理成功和失败两种情况
* 成功时显示"已复制到剪贴板"提示(3秒后自动消失)
3. **视觉效果优化**:
* 添加淡入淡出动画效果
* 提示框定位在内容框右下角
* 使用半透明背景增强可读性
4. **内存管理**:
* 组件卸载时清除定时器,防止内存泄漏
* 复制前清除之前的定时器,避免多重提示
- 2.5.8.2 更新主页删除模板功能
1. **UI 设计**:
* 使用与填报按钮相同的样式(圆角内边距等)
* 采用醒目的红色背景 (`#ff4d4f`) 作为删除操作的视觉提示
* 在填报按钮左侧添加删除按钮,形成「删除-填报」的排列
* 添加适当的内外边距保证按钮间距
2. **交互流程**:
* 点击删除按钮时弹出确认对话框
* 用户确认后调用删除接口
* 显示加载状态,提供反馈
* 成功后从列表中移除该模板
3. **错误处理**:
* 捕获网络请求错误
* 处理后端返回的错误信息
* 提供友好的错误提示
4. **安全措施**:
* 添加二次确认防止误操作
* 使用模板ID作为唯一标识确保删除正确模板
* 确认框文案包含模板名称,让用户明确删除对象
- 2.5.9 业绩统计功能实现方案,新增至少 3 个API
1. **首页弹窗**
* 营销主管用户登录时提示进入业绩统计页面
* 用户确认后跳转到统计页面
2. **业绩统计页面**
* **筛选条件**:
* 天数选择:输入框自定义天数
* 模板选择:下拉选择器(显示机构内所有模板)
* 人员选择:下拉选择器,选择同一机构下的同事姓名
* **查询按钮**:执行统计查询
* **统计结果**:
* 表格形式展示产品名称和总数量
* 无数据时显示提示信息
- 2.5.10 优化代码修复 N 多bug,优化 N 多CSS
1. **减少API调用**
2. **简化数据处理**
3. **增强错误处理**
4. **逻辑优化**
5. **多模板ID查询**
6. **响应增强**
7. **增强数据格式兼容性**
8. **更健壮的数据处理**
9. **详细的日志记录**
10. **响应中增加统计信息**
11. **完全基于 generated\_text 解析**
12. **智能文本解析逻辑**:
* **第一级解析**:匹配常见业绩格式(产品名称 + 数字 + 单位)
* 示例:`"理财产品A 5笔"`
* 格式:`r'([\u4e00-\u9fa5a-zA-Z0-9]+)\s*(\d+\.?\d*)\s*[个笔万元件单]+'`
* **第二级解析**:宽松匹配(产品名称 + 数字)
* 示例:`"存款产品B:100"`
* 格式:`r'([\u4e00-\u9fa5a-zA-Z0-9]+)\s*[::]?\s*(\d+\.?\d*)'`
13. **灵活的文本处理**:
* 支持中文和英文产品名称
* 处理整数和小数数量
* 忽略单位(笔个万元等)
* 支持多种分隔符(空格冒号中文冒号等)
- 2.5.11 更新 api 接口,增强数据处理,优化公告提示功能
- 2.5.12 新增登录状态标记,重构登录检查方法,增强岗位识别管理
1. 页面加载时触发 `onLoad` → 设置日期并开始登录检查
2. 登录检查成功后:
* 设置 `hasCheckedLogin: true`
* 依次触发岗位检测(`loadUserInfo`)、加载模板、检查今日记录
3. 页面显示时触发 `onShow`:
* 若未登录 → 执行完整登录检查
* 若已登录 → 只刷新今日记录
4. 岗位检测方法增加保护,确保只会在登录检查后执行
这样修改后,岗位检测(`loadUserInfo`) 只会在登录检查通过后执行,避免了未登录状态下的误触发。
- 2.6.0 新增票据扫描功能
- 2.6.1 更新 票据扫描相关api
* 创建新批次POST /batches
* 添加发票到批次POST /batches/BATCH\_20231127\_001/invoices
* 结束批次PATCH /batches/BATCH\_20231127\_001/end
* 获取批次列表GET /batches
* 获取批次发票列表GET /batches/BATCH\_20231127\_001/invoices
* 导出批次数据POST /batches/BATCH\_20231127\_001/export
* 下载导出的Excel文件GET /api/exports/发票导出\_BATCH\_20231127\_001\_20231127103500.xlsx
- 2.6.2 更新三个页面分别是票据扫描页面,管理票据页面,批次详情页面
- 2.6.3优化扫描页面
##### 全新设计思路
1. **底部固定布局**:
* 按钮固定在屏幕底部,符合用户操作习惯
* 避免遮挡内容区域
* 始终可见,方便操作
2. **简洁美观的设计**:
* 采用扁平化设计风格
* 图标+文字的组合清晰表达功能
* 适当的间距和圆角增加美观度
3. **状态指示**:
* 扫描状态变化时,开始/停止按钮文字自动更新
* 扫描中状态时按钮文字变为绿色
* 视觉反馈清晰
4. **交互体验优化**:
* 添加 hover-class 实现点击反馈
* 按钮高度足够,易于点击
* 图标简洁明了,减少认知负担
##### 整体界面优化
1. **清晰的视觉层次**:
* 顶部信息区
* 中部扫描区
* 底部结果区
* 底部控制栏
2. **简约色彩方案**:
* 主色调:绿色(#07C160)用于扫描状态和成功提示
* 辅助色:红色(#FA5151)用于错误提示
* 中性色:灰色系用于背景和分隔线
3. **功能分区明确**:
* 扫描区域居中显示,突出核心功能
* 结果列表在下方,可滚动查看
* 控制按钮固定在底部,不会随内容滚动
- 2.6.4 优化扫描页
1. **使用封装的HTTP库**:
* 替换所有`wx.request`调用为`http.post`/`http.patch`
* 禁用默认loading效果(因为已有自定义弹窗)
2. **增强错误处理**:
* 统一错误处理函数`handleRequestError`
* 401错误自动跳转登录页
* 显示详细的错误原因
3. **网络状态检查**:
* 扫描前检查网络可用性
* 网络不可用时提示用户
4. **数据校验**:
* 检查服务器响应数据格式
* 处理各种异常情况
5. **全局数据检查**:
* 页面加载时检查API地址和token
* 配置错误时提示用户
- 2.6.5 优化逻辑
1. **添加停止扫描功能**:
* 在扫描弹窗中添加了醒目的红色停止按钮
* 新增 `stopScanImmediately()` 方法处理手动停止
* 按钮有悬停效果增强用户体验
2. **扫描错误处理增强**:
* 添加扫描错误计数器 `scanErrorCount`
* 连续多次失败后提示用户如何停止
* 每次成功扫描后重置错误计数器
3. **优化扫描流程**:
* 添加发票时显示"添加发票中..."状态
* 添加发票成功后恢复扫描状态
* 扫描失败后延迟1秒重试,避免过快重试
4. **全局数据检查**:
* 在 `onLoad` 中检查 API 地址和 token 是否有效
* 无效时提示用户并跳转到登录页
5. **UI/UX 优化**:
* 停止按钮使用醒目的红色,易于识别
* 按钮有悬停效果和阴影增强交互感
* 调整弹窗内元素间距,使布局更美观
6. **添加格式化序号,金额,日期的方法供前台引导**
- 2.6.7 优化逻辑
1. **消除递归调用**:
* 使用`setTimeout`替代递归调用
* 添加`scheduleNextScan`方法控制扫描间隔
* 避免调用栈深度过大导致崩溃
2. **添加任务管理**:
* 引入`scanTask`保存当前扫描任务
* 使用`pendingScan`标记扫描状态
* 停止时尝试中止进行中的扫描任务
3. **改进停止逻辑**:
* 停止时清除所有待处理任务
* 重置所有扫描相关状态标记
* 显式中止微信扫描任务(如果支持)
4. **优化错误处理**:
* 错误处理中不再直接调用扫描方法
* 使用统一的调度机制重试
* 避免错误处理中创建新的调用栈
- 2.7.0优化管理页面
1. **网络请求优化**:
* 使用封装的 `http.get` 方法替代原生 `wx.request`
* 添加了详细的错误处理和日志输出
* 统一处理 401 未授权跳转登录
2. **布局优化**:
* 将日期和发票数量横向排列(使用 `flex` 布局)
* 添加 `.horizontal` 类实现横向排列
* 优化了批次ID显示,防止超出屏幕
3. **数据格式化优化**:
* 在 `loadBatches` 方法中格式化金额和日期
* 添加了 `formattedAmount`、`formattedDate` 和 `duration` 字段
* WXML 中直接使用格式化后的数据,简化模板逻辑
4. **样式优化**:
* 添加了 `overflow: hidden` 和 `text-overflow: ellipsis` 防止文本溢出
* 优化了卡片布局间距和排版
* 确保状态标签不会超出屏幕
5. **请求库优化**:
* 确保 `request.js` 正确导出 `http` 对象
* 添加了更完善的错误处理和重试机制
* 优化了 token 获取逻辑,避免重复读取
- 2.8.0 优化批次详情
1. **API响应结构适配**:
* 添加了对不同响应结构(`res.data.data` 和 `res.data`)的处理
* 确保从正确的位置获取批次数据和发票数据
2. **数据格式化优化**:
* 在 `loadInvoices()` 方法中添加了格式化的金额和日期字段
* 使用 `amount_str` 和 `formatted_date` 代替原始字段
* 确保金额转换为数字类型,避免 `toFixed()` 方法报错
3. **空值处理**:
* 添加了默认值处理(`|| 0` 和 `|| []`)
* 日期格式化方法添加了空值检查
4. **导出功能增强**:
* 改进了下载URL的获取逻辑,适配不同响应结构
* 添加了更完善的错误处理和日志输出
5. **WXML调整**:
* 使用格式化后的字段 `item.amount_str` 和 `item.formatted_date`
* 保留了其他布局结构和样式不变
- 2.8.1 优化逻辑
1. **添加详细的日志记录**:
* 在关键位置添加了 `console.log` 和 `console.warn` 语句
* 使用 `[detail.js]` 前缀便于识别日志来源
* 添加了错误日志记录 (`console.error`)
2. **增强错误处理**:
* 在日期格式化函数中添加了 try-catch 块
* 添加了默认值处理
* 在可能出现问题的地方添加了空值检查
3. **API响应检查**:
* 打印API响应数据 (`res.data`)
* 打印原始发票数据和处理后的发票数据
* 打印文件下载URL和处理后的URL
4. **格式化函数增强**:
* 在格式化函数中打印输入和输出
* 添加了异常处理
* 添加了默认返回值
- 2.8.2 优化大量 CSS 问题
- 2.8.3 优化下载逻辑
1. **错误处理增强**
* 添加了参数验证和空值检查
* 改进了错误信息的显示
* 添加了日期格式化的异常处理
2. **加载状态管理**
* 添加了 `isLoading` 状态防止重复请求
* 使用 `finally` 确保加载状态正确重置
3. **导出功能优化**
* 添加了确认对话框
* 支持流式响应和URL两种导出方案
* 改进了文件处理逻辑
4. **用户体验改进**
* 添加了下拉刷新功能
* 改进了加载提示和错误提示
* 添加了数据为空时的默认值
5. **API路径调整**
* 将导出路径调整为与您提供的API一致:`/api/batches/${batchId}/stream_export`
6. **代码健壮性**
* 添加了更多的空值检查和异常捕获
* 改进了数据格式化的安全性
- 2.8.4 优化下载逻辑
**关键修改:**
1. **直接使用临时文件路径**:通过 `writeFileSync` 创建临时文件后,直接使用该路径进行预览和分享
2. **移除保存步骤**:不再尝试使用 `wx.saveFile` 保存文件,避免错误
3. **简化流程**:直接使用临时文件路径进行 `wx.openDocument` 和 `wx.shareFileMessage`
4. **反正是优化了 4 个小时的下载逻辑,微信流文件形式直接分享最后还是没办法了**
- 2.8.5 优化接口
**主要修改内容:**
1. **添加重复发票检查**:在解析前检查该发票代码是否已经在当前批次中存在
2. **改进发票ID生成逻辑**:
* 从现有发票中获取最大索引,而不是依赖 `batch.invoice_count`
* 使用正则表达式从现有发票ID中提取数字部分
* 生成新的唯一发票ID
3. **添加特定错误处理**:
* 对重复发票返回 409 Conflict 状态码
* 捕获数据库完整性错误(Integrity Error)
* 提供更详细的错误信息
4. **保持原有格式**:新的发票ID仍然保持 `INV_批次号_序号` 的格式,但序号是基于现有发票的最大序号+1
- 2.8.6 去除非必要功能,确保微信审核通过
- 2.8.7 新增发票代码以及效验码字段
**api 部分主要修改内容:**
* 修改InvoiceDetail模型,添加两个字段。
* 增强 parse_invoice_data 函数支持解析完整的7个字段。
* 修改add_invoice函数。在创建发票记录时保存新增字段。
* 修改get_batch_invoices函数。在所有相关接口中返回新增字段。
* 修改stream_export_invoices函数。在导出的Excel中添加新列。
**js 部分主要修改内容:**
1. **bill_scanning.js**:
* 将 `invoiceData.code` 改为 `invoiceData.invoice_number`
* 添加对新字段 (`invoice_full_code`, `check_code`) 的处理
* 修复错误处理逻辑,使用正确的字段名
2. **detail.js**:
* 将 `invoice.code` 改为 `invoice.invoice_number || invoice.code`
* 确保向后兼容,同时支持新旧API版本
* 添加对 `invoice_full_code`(发票代码)的处理
* 添加对 `check_code`(校验位)的处理
* 提供格式化函数 `formatCheckCode` 用于显示校验位
* 添加更多的调试日志,便于排查问题
* 统计成功和失败的发票数量
* 确保格式化后的发票对象包含所有必要的字段
* 为新增字段提供默认值(空字符串或"--")
- 2.8.8 优化热更新逻辑,新增发票代码以及效验码字段
#### 截图展示
v2.3 重大更新,重构小程序样式,调整页面布局,预想“无界屏”模式。
