前端反馈弹框组件封装

一、需求背景

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

二、实现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>
相关推荐
码事漫谈14 分钟前
解决 Anki 启动器下载错误的完整指南
前端
qq_49244844624 分钟前
Jmeter设置负载阶梯式压测场景(详解教程)
开发语言·python·jmeter
im_AMBER33 分钟前
Web 开发 27
前端·javascript·笔记·后端·学习·web
ID_180079054731 小时前
京东获取整站实时商品详情数据|商品标题|数据分析提取教程
java·开发语言
蓝胖子的多啦A梦1 小时前
低版本Chrome导致弹框无法滚动的解决方案
前端·css·html·chrome浏览器·版本不同造成问题·弹框页面无法滚动
玩代码1 小时前
vue项目安装chromedriver超时解决办法
前端·javascript·vue.js
訾博ZiBo1 小时前
React 状态管理中的循环更新陷阱与解决方案
前端
StarPrayers.2 小时前
旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
前端·人工智能·python·算法·pycharm·启发式算法
qiuiuiu4132 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
一壶浊酒..2 小时前
ajax局部更新
前端·ajax·okhttp