Appearance
BizFeedbackPanel 意见反馈
意见反馈面板:类型级联(一 / 二级类型树)+ 紧急程度 + 问题描述(字数统计)+ 截图上传(复用 BizUploadFile,支持截图后 Ctrl+V 直接粘贴)+ 联系方式 / 匿名提交 + 我的反馈历史(状态流转标签 + 官方回复)。panel / dialog / drawer 三形态同体;组件零接口:提交(submit-request)、上传(upload-request)、历史(history / history-request)均由业务侧注入。后台帮助中心、门户意见箱、内测反馈收集场景。
基础用法
意见反馈
遇到问题或有建议,欢迎告诉我们
提交成功进入结果页,可「继续提交」再次填写;最近提交类型:(尚未提交)
类型级联
意见反馈
截图粘贴上传
意见反馈
鼠标悬停到截图区后直接 Ctrl+V 粘贴剪贴板截图(自动命名「截图-时间戳」);本次随单截图 0 张
匿名与联系方式口径
意见反馈
勾选「匿名提交」后联系方式输入隐藏且不参与校验;未勾选时联系方式必填并校验手机号 / 邮箱格式
弹窗形态
弹窗显隐:关闭;也可通过 ref 调用 open() / close() 程序化控制
抽屉形态
我的反馈(受控历史)
意见反馈
提交反馈
我的反馈3
我的反馈(服务端懒加载)
意见反馈
提交反馈
我的反馈
首次切到「我的反馈」自动拉取;提交成功后这里演示主动刷新一次
校验与防重
意见反馈
直接点「提交反馈」可看必填拦截;开启开关后提交展示失败停留,关闭后重试成功
插槽自定义
意见反馈
工单热线:400-000-0000(工作日 9:00-18:00)提交反馈
我的反馈1
Props
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| model-value / v-model | boolean | false | dialog / drawer 形态显隐(panel 形态忽略) |
| variant | 'panel' | 'dialog' | 'drawer' | 'panel' | 形态:panel 卡片内嵌 / dialog 弹窗 / drawer 抽屉 |
| title | string | '意见反馈' | 标题(dialog / drawer 弹层标题同步) |
| subtitle | string | '' | 标题下说明文案,留空不渲染 |
| types | BizFeedbackTypeNode[] | 内置四类 | 反馈类型(带 children 时按级联选择) |
| show-urgency | boolean | true | 紧急程度选择(低 / 一般 / 紧急) |
| show-upload | boolean | true | 截图上传区(需同时注入 upload-request) |
| upload-request | (file: File) => Promise<string> | — | 截图上传实现(BizUploadFile 契约,开启截图粘贴) |
| upload-limit | number | 9 | 截图数量上限 |
| show-contact | boolean | true | 联系方式输入 |
| contact-required | boolean | false | 联系方式必填(匿名提交时跳过) |
| show-anonymous | boolean | false | 匿名提交开关 |
| history | BizFeedbackRecord[] | — | 我的反馈记录(受控;传入后出现历史页签) |
| history-request | () => Promise<BizFeedbackRecord[]> | — | 历史懒加载(首次切页签 / refreshHistory 调用) |
| submit-request | (payload: BizFeedbackPayload) => Promise<void> | — | 提交实现:resolve 进成功页并外抛 submitted;reject 失败停留;未配置仅外抛 submit 事件 |
| trigger-text | string | '意见反馈' | dialog / drawer 内置触发按钮文案 |
| dialog-width | string | number | 'min(560px, 94vw)' | dialog 宽度 |
| drawer-size | string | number | '480px' | drawer 宽度 |
| description-length | number | 500 | 问题描述字数上限 |
| description-placeholder | string | 见说明 | 问题描述占位文案 |
| success-text | string | '我们会尽快处理并向你反馈处理进展' | 提交成功副文案 |
BizFeedbackTypeNode
| 属性 | 类型 | 说明 |
|---|---|---|
| value | string | 类型标识(全树唯一) |
| label | string | 类型名称 |
| children | BizFeedbackTypeNode[] | 二级类型 |
| desc | string | 补充说明 |
BizFeedbackPayload
| 属性 | 类型 | 说明 |
|---|---|---|
| type | string[] | 类型路径 value 数组(单层类型长度 1) |
| typeLabels | string[] | 类型路径 label 数组 |
| description | string | 问题描述(已 trim) |
| urgency | 'low' | 'normal' | 'urgent' | 紧急程度 |
| images | string[] | 已上传截图地址 |
| contact | string | 联系方式(匿名时空串) |
| anonymous | boolean | 是否匿名 |
BizFeedbackRecord
| 属性 | 类型 | 说明 |
|---|---|---|
| id | string | 记录 id |
| typeLabel | string | 类型展示文案 |
| description | string | 问题描述 |
| urgency | BizFeedbackUrgency | 紧急程度(urgent 时记录卡加红色标) |
| status | 'pending' | 'processing' | 'replied' | 'closed' | 处理状态 |
| createdAt | string | 提交时间(展示字符串) |
| reply / replyAt / replier | string | 官方回复内容 / 时间 / 回复人 |
Events
| 事件名 | 参数 | 说明 |
|---|---|---|
| submit | (payload: BizFeedbackPayload) | 校验通过点击提交时外抛(无 request 场景自管) |
| submitted | (payload: BizFeedbackPayload) | submit-request resolve 后外抛(已进入成功页) |
| update:model-value | (value: boolean) | dialog / drawer 显隐变化 |
Slots
| 插槽名 | 说明 |
|---|---|
| header-extra | 卡片头部补充(热线 / 服务时间等) |
| history-item | 记录卡整体替换,scope:{ record, index } |
| success-extra | 成功结果页补充说明 |
Expose
| 名称 | 说明 |
|---|---|
| open() / close() | 打开 / 关闭(dialog / drawer 形态) |
| reset() | 重置表单并回到编辑态 |
| refreshHistory() | 重新拉取历史(history-request 场景) |
| switchTab(tab) | 切换页签:'submit' | 'history' |