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/ReplyForm.vue | 80 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 80 insertions(+), 0 deletions(-)
diff --git a/src/views/mp/autoReply/components/ReplyForm.vue b/src/views/mp/autoReply/components/ReplyForm.vue
new file mode 100644
index 0000000..1c9dee4
--- /dev/null
+++ b/src/views/mp/autoReply/components/ReplyForm.vue
@@ -0,0 +1,80 @@
+<template>
+ <div>
+ <el-form ref="formRef" :model="replyForm" :rules="rules" label-width="80px">
+ <el-form-item label="娑堟伅绫诲瀷" prop="requestMessageType" v-if="msgType === MsgType.Message">
+ <el-select v-model="replyForm.requestMessageType" placeholder="璇烽�夋嫨">
+ <template v-for="dict in getDictOptions(DICT_TYPE.MP_MESSAGE_TYPE)" :key="dict.value">
+ <el-option
+ v-if="RequestMessageTypes.includes(dict.value)"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </template>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍖归厤绫诲瀷" prop="requestMatch" v-if="msgType === MsgType.Keyword">
+ <el-select v-model="replyForm.requestMatch" placeholder="璇烽�夋嫨鍖归厤绫诲瀷" clearable>
+ <el-option
+ v-for="dict in getIntDictOptions(DICT_TYPE.MP_AUTO_REPLY_REQUEST_MATCH)"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍏抽敭璇�" prop="requestKeyword" v-if="msgType === MsgType.Keyword">
+ <el-input v-model="replyForm.requestKeyword" placeholder="璇疯緭鍏ュ唴瀹�" clearable />
+ </el-form-item>
+ <el-form-item label="鍥炲娑堟伅">
+ <WxReplySelect v-model="reply" />
+ </el-form-item>
+ </el-form>
+ </div>
+</template>
+
+<script lang="ts" setup>
+import WxReplySelect, { type Reply } from '@/views/mp/components/wx-reply'
+import type { FormInstance } from 'element-plus'
+import { MsgType } from './types'
+import { DICT_TYPE, getDictOptions, getIntDictOptions } from '@/utils/dict'
+
+defineOptions({ name: 'ReplyForm' })
+
+const props = defineProps<{
+ modelValue: any
+ reply: Reply
+ msgType: MsgType
+}>()
+
+const emit = defineEmits<{
+ (e: 'update:reply', v: Reply)
+ (e: 'update:modelValue', v: any)
+}>()
+
+const reply = computed<Reply>({
+ get: () => props.reply,
+ set: (val) => emit('update:reply', val)
+})
+
+const replyForm = computed<any>({
+ get: () => props.modelValue,
+ set: (val) => emit('update:modelValue', val)
+})
+
+const formRef = ref<FormInstance | null>(null) // 琛ㄥ崟 ref
+
+const RequestMessageTypes = ['text', 'image', 'voice', 'video', 'shortvideo', 'location', 'link'] // 鍏佽閫夋嫨鐨勮姹傛秷鎭被鍨�
+
+// 琛ㄥ崟鏍¢獙
+const rules = {
+ requestKeyword: [{ required: true, message: '璇锋眰鐨勫叧閿瓧涓嶈兘涓虹┖', trigger: 'blur' }],
+ requestMatch: [{ required: true, message: '璇锋眰鐨勫叧閿瓧鐨勫尮閰嶄笉鑳戒负绌�', trigger: 'blur' }]
+}
+
+defineExpose({
+ resetFields: () => formRef.value?.resetFields(),
+ validate: async () => formRef.value?.validate()
+})
+</script>
+
+<style scoped></style>
--
Gitblit v1.8.0