Component({ properties: { /** 控制弹窗显示/隐藏 */ visible: { type: Boolean, value: false, }, /** 客户名(弹窗标题显示) */ customerName: { type: String, value: '', }, /** 初始评分 0-10 */ initialScore: { type: Number, value: 0, }, /** 初始备注内容 */ initialContent: { type: String, value: '', }, }, observers: { 'visible, initialScore, initialContent'(visible: boolean) { if (visible) { const clamped = Math.max(0, Math.min(10, this.data.initialScore)) this.setData({ starValue: clamped / 2, content: this.data.initialContent, score: clamped, }) } }, }, data: { /** 星星值 0-5(半星制) */ starValue: 0, /** 内部评分 0-10 */ score: 0, /** 备注内容 */ content: '', }, methods: { /** 星星评分变化 */ onRateChange(e: WechatMiniprogram.CustomEvent<{ value: number }>) { const starVal = e.detail.value this.setData({ starValue: starVal, score: starVal * 2, }) }, /** 文本内容变化 */ onContentChange(e: WechatMiniprogram.CustomEvent<{ value: string }>) { this.setData({ content: e.detail.value }) }, /** 确认提交 */ onConfirm() { if (!this.data.content.trim()) return this.triggerEvent('confirm', { score: this.data.score, content: this.data.content.trim(), }) }, /** 取消关闭 */ onCancel() { this.triggerEvent('cancel') }, /** 阻止冒泡 */ noop() {}, }, })