首页 > 其他分享 >vue.js客服系统实时聊天项目开发(十九)使用正则将消息格式替换为产品卡片信息

vue.js客服系统实时聊天项目开发(十九)使用正则将消息格式替换为产品卡片信息

时间:2023-02-04 12:33:13浏览次数:48  
标签:info vue return 卡片 img title js 正则 productCard

我们客服系统的消息列表中,会有产品卡片展示,这个是怎么实现的呢

 

 

产品信息其实就是下面这个字符串

product[{"title":"纯坚果零食大礼包一整箱干果类网红爆款解馋小吃休闲食品送女友","price":"¥9.9","img":"https://img.alicdn.com/bao/uploaded/i1/2201453915278/O1CN01dZolFu1orN8dFeKAj_!!0-item_pic.jpg_200x200q90.jpg_.webp","url":"https://www.taobao.com"}] 

只需要把上面的字符串解析成html格式就可以了

//转换产品卡片
function replaceProduct(str){
    return str.replace(/product\[([^\[\]]+?)\]/g, function (product) {
        console.log(str,arguments);
        if(!arguments[1]){
            return;
        }
        let jsonStr=arguments[1].replace(/\'/g,'"');
        try{
            let info=JSON.parse(jsonStr);
            if(typeof info=="undefined"){
                return;
            }
            if(!info.title) info.title="智能客服系统产品卡片";
            if(!info.price) info.price="¥0";
            if(info.img){
                info.img="<img src='"+info.img+"'/>";
            }else{
                info.img="";
            }
            if(!info.url) info.url="/";
            let html= `
                    <a class="productCard" href="`+info.url+`" target="_blank"/>
                    `+info.img+`

                    <div class="productCardTitle">
                        <p class="productCardTitle">`+info.title+`</p>
                        <p class="productCardPrice">`+info.price+`</p>
                    </div>
                    </a>
            `;
            return html;
        }catch (e) {
            return jsonStr;
        }
    });
}

然后给转换后的html增加相应的样式

.productCard{
        cursor: pointer;
        background: #fff;
        padding: 5px;
        border-radius: 2px;
        width: auto;
        max-width: 730px;
        display: flex;
        border-radius: 5px;
    }
    .productCard img{
        width: 100px;
        height: 100px;
        margin-right: 15px;
    }
    .productCard .productCardPrice{
        color: #ff7736;
        font-weight: bold;
        font-size: 16px;
        margin-top: 10px;
    }
    .productCard .productCardTitle{
        color: #333;
    }

唯一在线客服系统

https://gofly.v1kf.com

标签:info,vue,return,卡片,img,title,js,正则,productCard
From: https://www.cnblogs.com/taoshihan/p/17091266.html

相关文章

  • vue(五)-cnblog
    vue(五)1.动态组件组件的显示与隐藏切换1.1<component>组件组件的一个占位符通过设置属性来显示不同的组件is属性来指定要显示哪个属性示例<template><di......
  • vue(八)头条项目-cnblog
    vue(八)头条项目1.项目结构根据vuecreatemy-toutiao创建项目勾选上router2.生成的项目中的view文件夹和compoent文件夹都是用于存放组件view中的组件是通过路由......
  • Vue(六)-cnblog
    Vue(六)1.前端路由hash值与组件之间的对应关系hash值代表url地址中#号后面的内容,不同的hash地址对应不同的组件图解1.2简易路由<template><divclass="ap......
  • vue3
    Vue3的特性1.新的构建工具vite1.2基本使用vite基本使用:创建项目npminitvite-app项目名称或者yarncreatevite-app项目名称安装依赖npmi或者yarn启......
  • 1、配置vue项目支持es6语法-cnblog
    一些注意点1、配置vue项目支持es6语法在package.json文件中新增type节点package.json{"type":"module",}2.Vuex的挂载Vue.use方法调用了一个install的......
  • vue3 与vue2的区别-cnblog
    vue3与vue2的区别1.template节点vue2只允许一个根节点vue3允许多个根节点2.创建工具vue3:使用vite,也可使用vue-clivue2:使用vue-clivite创建3.调试工......
  • vue入门(二)-cnblog
    vue入门(二)1.过滤器一个函数在插值表达式中使用,对插值的值进行再处理{{username|toUpCase}}示例<!DOCTYPEhtml><htmllang="en"><head><metacharset......
  • vue入门(一)-cnblog
    vue入门(一)1.什么是vue一个框架(现有的解决方案)构造用户界面(操作html页面的内容)2.vue的特性数据驱动视图页面所依赖的数据发生变化时,vue会监听数据的变化,重新......
  • VUE学习笔记DAY01-cnblog
    webpack的使用(配合ppt)1.webpack前端工程化的具体解决方案作用代码压缩混淆处理浏览器端的JavaScript兼容性性能优化1.1基于webpack实现隔行变色npmij......
  • Vue(四)-cnblog
    Vue(四)1.生命周期一个组件从(创建->运行->销毁的整个阶段)生命周期函数:vue框架的内置函数,会随着组件的生命周期,自动按次序执行注意点生命周期强调整个时间段......