|
@@ -0,0 +1,177 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <div class="hello-demo">
|
|
|
|
|
+ <el-card>
|
|
|
|
|
+ <template #header>
|
|
|
|
|
+ <div class="card-header">
|
|
|
|
|
+ <span>🎮 功能演示</span>
|
|
|
|
|
+ <el-tag type="warning">Keep-Alive 页面</el-tag>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="demo-sections">
|
|
|
|
|
+ <!-- 示例 1: 基础交互 -->
|
|
|
|
|
+ <div class="demo-section">
|
|
|
|
|
+ <h3>🔘 基础交互</h3>
|
|
|
|
|
+ <el-space wrap>
|
|
|
|
|
+ <el-button @click="count++">点击次数:{{ count }}</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="showMessage">显示消息</el-button>
|
|
|
|
|
+ <el-button type="success" @click="showSuccess">成功提示</el-button>
|
|
|
|
|
+ </el-space>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 示例 2: 表单演示 -->
|
|
|
|
|
+ <div class="demo-section">
|
|
|
|
|
+ <h3>📝 表单演示</h3>
|
|
|
|
|
+ <el-form :model="formData" label-width="100px" style="max-width: 500px;">
|
|
|
|
|
+ <el-form-item label="用户名">
|
|
|
|
|
+ <el-input v-model="formData.username" placeholder="请输入用户名" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="邮箱">
|
|
|
|
|
+ <el-input v-model="formData.email" placeholder="请输入邮箱" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="备注">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="formData.note"
|
|
|
|
|
+ type="textarea"
|
|
|
|
|
+ :rows="3"
|
|
|
|
|
+ placeholder="请输入备注"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item>
|
|
|
|
|
+ <el-button type="primary" @click="submitForm">提交表单</el-button>
|
|
|
|
|
+ <el-button @click="resetForm">重置表单</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 示例 3: 数据表格 -->
|
|
|
|
|
+ <div class="demo-section">
|
|
|
|
|
+ <h3>📊 数据表格</h3>
|
|
|
|
|
+ <el-table :data="tableData" style="width: 100%" border stripe>
|
|
|
|
|
+ <el-table-column prop="id" label="ID" width="80" />
|
|
|
|
|
+ <el-table-column prop="name" label="姓名" />
|
|
|
|
|
+ <el-table-column prop="age" label="年龄" width="80" />
|
|
|
|
|
+ <el-table-column prop="email" label="邮箱" />
|
|
|
|
|
+ <el-table-column label="操作" width="150" fixed="right">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-button size="small" type="primary" @click="handleEdit(row)">编辑</el-button>
|
|
|
|
|
+ <el-button size="small" type="danger" @click="handleDelete(row)">删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 示例 4: Keep-Alive 测试 -->
|
|
|
|
|
+ <div class="demo-section">
|
|
|
|
|
+ <h3>⏸️ Keep-Alive 测试</h3>
|
|
|
|
|
+ <el-alert
|
|
|
|
|
+ title="此页面启用了 keep-alive,切换路由后状态会保留"
|
|
|
|
|
+ type="info"
|
|
|
|
|
+ :closable="false"
|
|
|
|
|
+ show-icon
|
|
|
|
|
+ />
|
|
|
|
|
+ <p style="margin-top: 10px; color: #606266;">
|
|
|
|
|
+ 当前输入的内容:<strong>{{ formData.username || '无' }}</strong>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p style="color: #606266;">
|
|
|
|
|
+ 点击次数:<strong>{{ count }}</strong>
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-card>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script setup>
|
|
|
|
|
+import { ref } from 'vue'
|
|
|
|
|
+import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
|
|
+
|
|
|
|
|
+// 基础交互
|
|
|
|
|
+const count = ref(0)
|
|
|
|
|
+
|
|
|
|
|
+const showMessage = () => {
|
|
|
|
|
+ ElMessage.info('这是一个普通消息提示')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const showSuccess = () => {
|
|
|
|
|
+ ElMessage.success('操作成功!')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 表单演示
|
|
|
|
|
+const formData = ref({
|
|
|
|
|
+ username: '',
|
|
|
|
|
+ email: '',
|
|
|
|
|
+ note: ''
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const submitForm = () => {
|
|
|
|
|
+ if (!formData.value.username) {
|
|
|
|
|
+ ElMessage.warning('请输入用户名')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ ElMessage.success(`表单已提交,用户名:${formData.value.username}`)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const resetForm = () => {
|
|
|
|
|
+ formData.value = {
|
|
|
|
|
+ username: '',
|
|
|
|
|
+ email: '',
|
|
|
|
|
+ note: ''
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 数据表格
|
|
|
|
|
+const tableData = ref([
|
|
|
|
|
+ { id: 1, name: '张三', age: 25, email: 'zhangsan@example.com' },
|
|
|
|
|
+ { id: 2, name: '李四', age: 30, email: 'lisi@example.com' },
|
|
|
|
|
+ { id: 3, name: '王五', age: 28, email: 'wangwu@example.com' }
|
|
|
|
|
+])
|
|
|
|
|
+
|
|
|
|
|
+const handleEdit = (row) => {
|
|
|
|
|
+ ElMessage.info(`编辑:${row.name}`)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const handleDelete = (row) => {
|
|
|
|
|
+ ElMessageBox.confirm(`确定要删除 ${row.name} 吗?`, '提示', {
|
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
|
+ type: 'warning'
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ ElMessage.success('删除成功')
|
|
|
|
|
+ }).catch(() => {
|
|
|
|
|
+ ElMessage.info('已取消删除')
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style scoped>
|
|
|
|
|
+.hello-demo {
|
|
|
|
|
+ padding: 20px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.card-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-sections {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ flex-direction: column;
|
|
|
|
|
+ gap: 30px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-section {
|
|
|
|
|
+ padding-bottom: 20px;
|
|
|
|
|
+ border-bottom: 1px solid #ebeef5;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-section:last-child {
|
|
|
|
|
+ border-bottom: none;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.demo-section h3 {
|
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
|
+ color: #303133;
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|