前端反馈弹框组件封装

一、需求背景

需要针对某个功能进行用户调查反馈,设计一个弹框,进行后端入表记录,以便后期进行数据分析。

二、实现UI

三、代码留存

以vue为例

vue 复制代码
<template>
    <div class="advice-container">
        <van-dialog
            v-model="showAdviceDialog"
            show-cancel-button
            confirm-button-color="#1774fd"
            confirm-button-text="提交"
        >
            <div class="advice-dialog">
                <div class="title">
                    进一步反馈:
                </div>
                <div>
                    <van-checkbox-group v-model="result" class="content" @change="handleCheckChange">
                        <van-checkbox name="无法理解上下文" shape="square">
                            无法理解上下文
                        </van-checkbox>
                        <van-checkbox name="答非所问" shape="square">
                            答非所问
                        </van-checkbox>
                        <van-checkbox name="回答对我没有帮助" shape="square">
                            回答对我没有帮助
                        </van-checkbox>
                        <van-checkbox name="回答逻辑混乱" shape="square">
                            回答逻辑混乱
                        </van-checkbox>
                        <van-checkbox name="没能理解指令" shape="square">
                            没能理解指令
                        </van-checkbox>
                    </van-checkbox-group>
                </div>
                <div style="font-size: 16px; margin: 12px 0;">
                    将您更多的宝贵建议反馈给我们:
                </div>
                <van-field
                    v-model="inputMessage"
                    rows="2"
                    autosize
                    type="textarea"
                    maxlength="100"
                    placeholder="请输入您的宝贵建议..."
                    show-word-limit
                    @input="handleInput"
                />
            </div>
        </van-dialog>
    </div>
</template>

<script>
export default {
    name: 'Advice',
    data() {
        return {
            showAdviceDialog: true,
            result: [],
            inputMessage: '',
            afterInput: ''
        };
    },
    methods: {
        handleInput(inputStr) {
            if (inputStr) {
                // 获取用户输入的内容
                this.afterInput =  inputStr.substring(this.result.toString().length);
            }
        },
        handleCheckChange(checkStr) {
            // 拼接用户输入的内容和选择的内容
            this.inputMessage = checkStr.toString() + this.afterInput;
        }
    }
};
</script>

<style scoped lang="scss">
    .advice-container {
        /deep/ .van-dialog {
            border-radius: 6px;
        }

        /deep/ .van-checkbox__label {
            width: 200px;
            font-size: 14px;
        }

        /deep/ .van-icon {
            width: 14px;
            height: 14px;
        }

        /deep/ .van-field {
            border: 1px solid #d9d9d9;
        }

        .advice-dialog {
            padding: 16px;

            .title {
                font-size: 16px;
                margin-bottom: 12px;
            }

            .content {
                display: flex;
                flex-wrap: wrap;
            }
        }
    }
</style>
相关推荐
白帽攻防录7 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛7 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
2603_965148117 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
lpfasd1237 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
xixiaoyunya8 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的8 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务9 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Data analyse45610 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai10 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
打工仔折腾 AI10 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战