From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/mp/autoReply/components/ReplyTable.vue | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 115 insertions(+), 0 deletions(-)
diff --git a/src/views/mp/autoReply/components/ReplyTable.vue b/src/views/mp/autoReply/components/ReplyTable.vue
new file mode 100644
index 0000000..2abe9f2
--- /dev/null
+++ b/src/views/mp/autoReply/components/ReplyTable.vue
@@ -0,0 +1,115 @@
+<template>
+ <el-table v-loading="props.loading" :data="props.list">
+ <el-table-column
+ label="璇锋眰娑堟伅绫诲瀷"
+ align="center"
+ prop="requestMessageType"
+ v-if="msgType === MsgType.Message"
+ />
+ <el-table-column
+ label="鍏抽敭璇�"
+ align="center"
+ prop="requestKeyword"
+ v-if="msgType === MsgType.Keyword"
+ />
+ <el-table-column
+ label="鍖归厤绫诲瀷"
+ align="center"
+ prop="requestMatch"
+ v-if="msgType === MsgType.Keyword"
+ >
+ <template #default="scope">
+ <dict-tag :type="DICT_TYPE.MP_AUTO_REPLY_REQUEST_MATCH" :value="scope.row.requestMatch" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍥炲娑堟伅绫诲瀷" align="center">
+ <template #default="scope">
+ <dict-tag :type="DICT_TYPE.MP_MESSAGE_TYPE" :value="scope.row.responseMessageType" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍥炲鍐呭" align="center">
+ <template #default="scope">
+ <div v-if="scope.row.responseMessageType === 'text'">{{ scope.row.responseContent }}</div>
+ <div v-else-if="scope.row.responseMessageType === 'voice'">
+ <WxVoicePlayer v-if="scope.row.responseMediaUrl" :url="scope.row.responseMediaUrl" />
+ </div>
+ <div v-else-if="scope.row.responseMessageType === 'image'">
+ <a target="_blank" :href="scope.row.responseMediaUrl">
+ <img :src="scope.row.responseMediaUrl" style="width: 100px" />
+ </a>
+ </div>
+ <div
+ v-else-if="
+ scope.row.responseMessageType === 'video' ||
+ scope.row.responseMessageType === 'shortvideo'
+ "
+ >
+ <WxVideoPlayer
+ v-if="scope.row.responseMediaUrl"
+ :url="scope.row.responseMediaUrl"
+ style="margin-top: 10px"
+ />
+ </div>
+ <div v-else-if="scope.row.responseMessageType === 'news'">
+ <WxNews :articles="scope.row.responseArticles" />
+ </div>
+ <div v-else-if="scope.row.responseMessageType === 'music'">
+ <WxMusic
+ :title="scope.row.responseTitle"
+ :description="scope.row.responseDescription"
+ :thumb-media-url="scope.row.responseThumbMediaUrl"
+ :music-url="scope.row.responseMusicUrl"
+ :hq-music-url="scope.row.responseHqMusicUrl"
+ />
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍒涘缓鏃堕棿"
+ align="center"
+ prop="createTime"
+ :formatter="dateFormatter"
+ width="180"
+ />
+ <el-table-column label="鎿嶄綔" align="center">
+ <template #default="scope">
+ <el-button
+ type="primary"
+ link
+ @click="emit('on-update', scope.row.id)"
+ v-hasPermi="['mp:auto-reply:update']"
+ >
+ 淇敼
+ </el-button>
+ <el-button
+ type="danger"
+ link
+ @click="emit('on-delete', scope.row.id)"
+ v-hasPermi="['mp:auto-reply:delete']"
+ >
+ 鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+</template>
+<script lang="ts" setup>
+import WxVideoPlayer from '@/views/mp/components/wx-video-play'
+import WxVoicePlayer from '@/views/mp/components/wx-voice-play'
+import WxMusic from '@/views/mp/components/wx-music'
+import WxNews from '@/views/mp/components/wx-news'
+import { dateFormatter } from '@/utils/formatTime'
+import { DICT_TYPE } from '@/utils/dict'
+import { MsgType } from './types'
+
+const props = defineProps<{
+ loading: boolean
+ list: any[]
+ msgType: MsgType
+}>()
+
+const emit = defineEmits<{
+ (e: 'on-update', v: number)
+ (e: 'on-delete', v: number)
+}>()
+</script>
--
Gitblit v1.8.0