Skip to content

BizFeedbackPanel 意见反馈 ​

意见反馈面板:类型级联(一 / 二级类型树)+ 紧急程度 + 问题描述(字数统计)+ 截图上传(复用 BizUploadFile,支持截图后 Ctrl+V 直接粘贴)+ 联系方式 / 匿名提交 + 我的反馈历史(状态流转标签 + 官方回复)。panel / dialog / drawer 三形态同体;组件零接口:提交(submit-request)、上传(upload-request)、历史(history / history-request)均由业务侧注入。后台帮助中心、门户意见箱、内测反馈收集场景。

基础用法 ​

意见反馈
遇到问题或有建议,欢迎告诉我们
反馈类型
紧急程度
问题描述
0 / 500
联系方式

提交成功进入结果页,可「继续提交」再次填写;最近提交类型:(尚未提交)

默认类型(功能异常 / 产品建议 / 体验问题 / 其他)+ 紧急程度 + 描述 + 联系方式;提交成功进入结果页,可继续提交。

类型级联 ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
联系方式
types 注入二级类型树,选择路径以 payload.type(value 数组)与 payload.typeLabels(label 路径)外抛。

截图粘贴上传 ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
截图(可选)
支持 Ctrl + V 粘贴截图
联系方式

鼠标悬停到截图区后直接 Ctrl+V 粘贴剪贴板截图(自动命名「截图-时间戳」);本次随单截图 0 张

upload-request 注入后展示截图区,内置 BizUploadFile 截图粘贴能力:鼠标悬停在截图区后 Ctrl+V 即可上传(自动命名「截图-时间戳」)。

匿名与联系方式口径 ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
联系方式

勾选「匿名提交」后联系方式输入隐藏且不参与校验;未勾选时联系方式必填并校验手机号 / 邮箱格式

show-anonymous 开启匿名开关:勾选后联系方式隐藏且不校验;contact-required 控制实名时联系方式必填(手机号 / 邮箱格式二选一)。

弹窗形态 ​

弹窗显隐:关闭;也可通过 ref 调用 open() / close() 程序化控制

variant="dialog" + v-model 受控显隐,内置触发按钮;也可经 expose open() / close() 程序化控制。

抽屉形态 ​

variant="drawer" 右侧滑出,drawer-size 控制宽度,适合工作台 / 详情页侧边收集。

我的反馈(受控历史) ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
联系方式
history 传入记录数组即出现「提交反馈 / 我的反馈」页签:待处理 / 处理中 / 已回复 / 已关闭状态标签 + 官方回复块。

我的反馈(服务端懒加载) ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
联系方式

首次切到「我的反馈」自动拉取;提交成功后这里演示主动刷新一次

history-request 首次切页签时拉取;刷新按钮与 expose refreshHistory() 均可重新拉取。

校验与防重 ​

意见反馈
反馈类型
紧急程度
问题描述
0 / 500
联系方式

直接点「提交反馈」可看必填拦截;开启开关后提交展示失败停留,关闭后重试成功

未选类型 / 空描述 / 联系方式格式会被拦截;提交期间按钮 loading 防重复,失败停留可重试。

插槽自定义 ​

意见反馈
工单热线:400-000-0000(工作日 9:00-18:00)
反馈类型
紧急程度
问题描述
0 / 500
联系方式
header-extra 头部补充、history-item 记录卡整体替换(scope:record / index)、success-extra 成功页补充说明。

Props ​

属性名类型默认值说明
model-value / v-modelbooleanfalsedialog / drawer 形态显隐(panel 形态忽略)
variant'panel' | 'dialog' | 'drawer''panel'形态:panel 卡片内嵌 / dialog 弹窗 / drawer 抽屉
titlestring'意见反馈'标题(dialog / drawer 弹层标题同步)
subtitlestring''标题下说明文案,留空不渲染
typesBizFeedbackTypeNode[]内置四类反馈类型(带 children 时按级联选择)
show-urgencybooleantrue紧急程度选择(低 / 一般 / 紧急)
show-uploadbooleantrue截图上传区(需同时注入 upload-request)
upload-request(file: File) => Promise<string>—截图上传实现(BizUploadFile 契约,开启截图粘贴)
upload-limitnumber9截图数量上限
show-contactbooleantrue联系方式输入
contact-requiredbooleanfalse联系方式必填(匿名提交时跳过)
show-anonymousbooleanfalse匿名提交开关
historyBizFeedbackRecord[]—我的反馈记录(受控;传入后出现历史页签)
history-request() => Promise<BizFeedbackRecord[]>—历史懒加载(首次切页签 / refreshHistory 调用)
submit-request(payload: BizFeedbackPayload) => Promise<void>—提交实现:resolve 进成功页并外抛 submitted;reject 失败停留;未配置仅外抛 submit 事件
trigger-textstring'意见反馈'dialog / drawer 内置触发按钮文案
dialog-widthstring | number'min(560px, 94vw)'dialog 宽度
drawer-sizestring | number'480px'drawer 宽度
description-lengthnumber500问题描述字数上限
description-placeholderstring见说明问题描述占位文案
success-textstring'我们会尽快处理并向你反馈处理进展'提交成功副文案

BizFeedbackTypeNode ​

属性类型说明
valuestring类型标识(全树唯一)
labelstring类型名称
childrenBizFeedbackTypeNode[]二级类型
descstring补充说明

BizFeedbackPayload ​

属性类型说明
typestring[]类型路径 value 数组(单层类型长度 1)
typeLabelsstring[]类型路径 label 数组
descriptionstring问题描述(已 trim)
urgency'low' | 'normal' | 'urgent'紧急程度
imagesstring[]已上传截图地址
contactstring联系方式(匿名时空串)
anonymousboolean是否匿名

BizFeedbackRecord ​

属性类型说明
idstring记录 id
typeLabelstring类型展示文案
descriptionstring问题描述
urgencyBizFeedbackUrgency紧急程度(urgent 时记录卡加红色标)
status'pending' | 'processing' | 'replied' | 'closed'处理状态
createdAtstring提交时间(展示字符串)
reply / replyAt / replierstring官方回复内容 / 时间 / 回复人

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'