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