<template> <div> <el-row type="flex" class="add-btn" justify="end"> <el-col :span="6" style="text-align: right;"> <el-button type="success" plain @click="add" v-if="!$store.state.readonly">添加回复</el-button> </el-col> </el-row> <el-table :data="list" style="width: 100%"> <el-table-column type="expand"> <template slot-scope="props"> <el-form label-position="top" class="demo-table-expand"> <el-form-item label="回复内容"> <div v-for="(item, index) in JSON.parse(props.row.desc)"> <span v-if="item.content && item.type==='text'"> 回复{{index+1}}: <span v-html="item.content.replace(/\#[\u4E00-\u9FA5]{1,3}\;/gi, emotion)"></span> </span> <span v-if="item.content && item.type==='image'">回复{{index+1}}:<img class="img" :src="item.content"/></span> <span v-if="item.variable">回复{{index+1}}:老师二维码</span> </div> </el-form-item> </el-form> </template> </el-table-column> <el-table-column label="ID" prop="id"> </el-table-column> <el-table-column label="关键词" prop="value"> </el-table-column> <el-table-column label="回复内容"> <template slot-scope="scope"> {{ JSON.parse(scope.row.desc).length }} 条回复 </template> </el-table-column> <el-table-column prop="created_at" label="创建时间"> </el-table-column> <el-table-column width="250" v-if="!$store.state.readonly" label="操作"> <template slot-scope="scope"> <el-button size="mini" plain type="warning" @click="edit(scope.row)"> 编辑 </el-button> <el-button size="mini" plain type="danger" @click="del(scope.row)" v-if="$store.state.deletePermission"> 删除 </el-button> </template> </el-table-column> </el-table> <dialog-com :dialogObj="dialogObj" @changeShow="changeShow" @reflash="getList"/> </div> </template> <script> import dialogCom from './autoReplyDialog' import {getConfigListApi,deleteConfigApi,getConfigDetailApi} from "../../service/api"; export default { name: "autoReply", data() { return { dialogObj:{ value:'', desc:'', show:false, id:'' }, list: [] } }, components:{ dialogCom }, mounted(){ this.getList() }, methods: { // 将匹配结果替换表情图片 emotion (res) { let word = res.replace(/\#|\;/gi,'') const list = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极'] let index = list.indexOf(word) return `<img src="https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/${index}.gif" align="middle">` }, changeShow(data){ this.dialogObj.show=data }, getList(){ getConfigListApi({key: 'keywords_reply'}).then(res => { this.list = res.list }) }, add(){ this.dialogObj.id = ''; this.dialogObj.value = ''; this.dialogObj.desc = ''; this.dialogObj.show = true }, edit(data){ getConfigDetailApi(data.id).then((res) => { this.dialogObj.id = res.id; this.dialogObj.value = res.value; this.dialogObj.desc = res.desc; this.dialogObj.show = true; }); }, del(data){ this.$confirm('此操作将删除该记录?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { deleteConfigApi(data.id).then(res=>{ this.getList() this.$message({ type: 'success', message: '删除成功!' }); }); }); } } } </script> <style scoped lang="less"> @import "../../util/public"; .add-btn { margin: 10px 0; } .img { width: 10%; } </style>