业务背景
KeyPanel 是服务于证券交易全流程的各类数值与凭证输入。
证券交易对输入的要求远高于普通表单:价格必须精确到 2 位小数,委托数量必须是 100 股的整数倍,资金与交易密码必须绕过第三方输入法以规避键盘记录风险,且买入、卖出需通过红蓝配色强化操作语义。系统原生键盘在这些维度上均无法满足——它只能事后校验再报错,无法提供场景化按键,也无法保证输入安全与视觉一致性。KeyPanel 正是为解决这些业务痛点而设计。
覆盖业务场景
系统共 7 套键盘模板,覆盖全站全部输入场景:
交易登录(type 1/2):数字与字母双键盘,支持 123/ABC 标签页切换,数字键可乱序,用于账号与密码输入。
股票代码搜索(type 3):顶部提供 600/601/000/002/300 常用代码前缀,支持 ABC 键切换字母键盘。
下单交易(type 4/5):价格键盘提供 00 补位键便于快速输入整数价位;数量键盘左侧集成「全仓 / 半仓 / 1/3仓 / 1/4仓」快捷仓位键。
银证转账(type 6/7):金额键盘采用内联模式嵌入页面流;密码键盘去除小数点,专用于资金密码与银行密码录入。
核心功能
输入精度前置拦截。支持最大长度、重复小数点拦截、小数位超限自动截断(非四舍五入),非法字符在输入阶段即被拒绝,而非事后弹错。
场景化快捷按键。仓位比例键、代码前缀键、00 补位键、ABC/123 键盘切换键,均为证券业务专属。
安全与合规。密码输入全程走自绘键盘,不触发系统输入法;登录类键盘支持数字键随机乱序,防范窥屏与按键记录。
主题适配。内置明暗双主题共 26 组色值,业务侧可通过 themeOverride 覆盖确认键颜色,实现买入红、卖出蓝的语义化配色。
完整交互体验。提供按键放大气泡、键盘滑入滑出动画、点击外部自动关闭、position: fixed 浮层输入框避让、确定键 Promise loading 防重复提交,以及可点击定位的光标。
双挂载模式。支持全局弹出(命令式 API,脱离文档流挂载至 body)与内联嵌入(声明式,占据页面流)两种方式,适配不同页面布局。
业务层 通过 KeyInput 接入,提供 kb-type、themeOverride、业务回调
输入控件层 KeyInput.vue 模拟输入框、光标定位、键盘避让、值管理
调度层 global-keyboard.js 命令式 API,负责实例化、挂载到 body、事件桥接、生命周期
渲染层 KeyPanel.vue 纯渲染引擎,读取模板渲染按键,统一动作分发
数据层 keypanel-templates.js 7 套键盘模板的纯配置数据