从0开始搭建vue + flask 旅游景点数据分析系统(十):Element-UI消息插件封装

上一期我们使用过了elementui的Message来弹出消息提示框,但是上期的写法每次都要在vue文件中引入Message,并且要写不少重复代码,这一期就以插件方式将message封装到Vue的实例中。

创建plugins/message.js

这边加了判断的作用是,如果是直接塞入返回的数据,则不需要判断成功失败,根据返回的response.data.code自行判断。

如果手动传入(我们自己给出消息)这种情况,可以自己给出消息信息和类型,当然如果不传,那么默认是success,消息显示的时间默认是2000ms。

jsx 复制代码
import { Message } from 'element-ui';

Vue.prototype.$message = function(response, type='success', duration = 2000,) {
            let message;
            let messageType;

            // 检查 response.data 是否存在
            if (response.data) {
                message = response.data.message;
                messageType = response.data.code === 0 ? 'success' : 'error';
            } else {
                // 如果 response.data 不存在,直接使用 response
                message = response || '未知错误';
                messageType = type || 'error'; // 使用传入的类型或者默认为 'error'
            }

            // 显示消息
            Message({
                message: message,
                type: messageType,
                duration: duration
            });
        };

export default MessagePlugin;

修改main.js

jsx 复制代码
import MessagePlugin from './plugins/message'; // 引入插件

Vue.use(ElementUI)
Vue.use(MessagePlugin); // 使用插件

然后就可以把之间用到message的地方全部替换掉,例如这样

jsx 复制代码
handleSaveTour() {
      if (this.form.id) {
        updateTour(this.form.id, this.form).then(res=>{
          // console.log(res.data.message)
          this.$message(res); // 使用封装的 $message 函数
        })
      } else {
        addTour(this.form).then(res=>{
          console.log(res.data.message)
          this.$message(res); // 使用封装的 $message 函数
        })
      }

效果:

再测试下错误的情况,在后端添加一个字段验证:

python 复制代码
@main.route('/tour', methods=['POST'])
def add_tour():
    data = request.json  # 获取JSON数据
    # 这里可以进行数据验证,例如检查必填字段是否存在
    required_fields = ['img', 'title', 'title_en', 'comments', 'score', 'select_comment', 'nation', 'city']
    for field in required_fields:
        if field not in data:
            return make_response(code=1, message= f'错误,缺少字段: {field}')

    notnull_fields = ['title']
    for field in notnull_fields:
        if data[field]=='' or data[field]==None:
            return make_response(code=1, message= f'错误,字段不能为空: {field}')

新增一个空的景点(注意,在前端我们没有做任何验证),然后得到的是错误提示,这个是使用插件化的消息框得到的效果:

相关推荐
计算机学姐2 小时前
基于微信小程序的剧本杀游玩一体化平台
java·vue.js·spring boot·微信小程序·小程序·intellij-idea·mybatis
青云交3 小时前
大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
大数据·vue.js·信息可视化·echarts·d3.js·数据驱动·大数据可视化
全栈技术负责人4 小时前
vue3中使用nexttick
前端·javascript·vue.js
程楠楠&M4 小时前
uni-app页面调用接口和路由(四)
前端·vue.js·小程序·uni-app·flex布局·弹性布局
晨枫阳4 小时前
Flask项目入门和视图
后端·python·flask
qq22951165026 小时前
Python基于flask框架的智能停车场车位系统 数据可视化分析系统fyfc81
python·信息可视化·flask
小夏同学呀6 小时前
vue3ElementPlus使两个日期联动控制(限制结束时间为开始时间的一个月)
前端·javascript·vue.js
默子昂6 小时前
yolo自动化项目实例解析(五)ui页面整理2 (1.85)
yolo·ui·自动化
变形金刚卖人寿保险还是汽车保险6 小时前
elementplus修改表格数据
javascript·vue.js·elementui
变形金刚卖人寿保险还是汽车保险6 小时前
element-plus表格操作
前端·javascript·vue.js