添加了相关测试文件,引入Tailwindcss

Change-Id: I12054143571bb688590af0357125a0ed26ff2050
diff --git a/src/mock/index.js b/src/mock/index.js
new file mode 100644
index 0000000..8fd2118
--- /dev/null
+++ b/src/mock/index.js
@@ -0,0 +1,147 @@
+import Mock from 'mockjs'
+
+// 模拟延迟
+Mock.setup({
+  timeout: '300-600'
+})
+
+// 模拟用户数据
+const users = [
+  {
+    id: 1,
+    username: 'admin',
+    password: 'admin123',
+    email: 'admin@example.com',
+    role: 'admin',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=admin'
+  },
+  {
+    id: 2,
+    username: 'user',
+    password: 'user123',
+    email: 'user@example.com',
+    role: 'user',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=user'
+  },
+  {
+    id: 3,
+    username: 'moderator',
+    password: 'mod123',
+    email: 'mod@example.com',
+    role: 'moderator',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=moderator'
+  },
+  {
+    id: 4,
+    username: 'blacklisted',
+    password: 'black123',
+    email: 'black@example.com',
+    role: 'blacklisted',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=blacklisted'
+  },
+  {
+    id: 5,
+    username: 'veteran',
+    password: 'vet123',
+    email: 'veteran@example.com',
+    role: 'veteran',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=veteran'
+  },
+  {
+    id: 6,
+    username: 'newbie',
+    password: 'new123',
+    email: 'newbie@example.com',
+    role: 'newbie',
+    avatar: 'https://api.dicebear.com/7.x/avataaars/svg?seed=newbie'
+  }
+]
+
+// 模拟登录接口
+Mock.mock('/api/auth/login', 'post', (options) => {
+  const { username, password } = JSON.parse(options.body)
+  const user = users.find(u => u.username === username && u.password === password)
+  
+  if (user) {
+    const { password, ...userWithoutPassword } = user
+    return {
+      code: 200,
+      message: '登录成功',
+      data: {
+        token: `mock-token-${user.id}-${Date.now()}`,
+        user: userWithoutPassword
+      }
+    }
+  } else {
+    return {
+      code: 401,
+      message: '用户名或密码错误',
+      data: null
+    }
+  }
+})
+
+// 模拟注册接口
+Mock.mock('/api/auth/register', 'post', (options) => {
+  const { username, email, password } = JSON.parse(options.body)
+  
+  // 检查用户名是否已存在
+  if (users.some(u => u.username === username)) {
+    return {
+      code: 400,
+      message: '用户名已存在',
+      data: null
+    }
+  }
+  
+  // 检查邮箱是否已存在
+  if (users.some(u => u.email === email)) {
+    return {
+      code: 400,
+      message: '邮箱已被注册',
+      data: null
+    }
+  }
+  
+  // 创建新用户
+  const newUser = {
+    id: users.length + 1,
+    username,
+    password,
+    email,
+    role: 'newbie', // 默认为新人角色
+    avatar: `https://api.dicebear.com/7.x/avataaars/svg?seed=${username}`
+  }
+  
+  users.push(newUser)
+  
+  return {
+    code: 200,
+    message: '注册成功',
+    data: null
+  }
+})
+
+// 模拟获取用户信息接口
+Mock.mock('/api/user/info', 'get', (options) => {
+  // 在实际应用中,这里会从token中解析用户ID
+  // 这里简化处理,假设已登录用户是admin
+  const user = users.find(u => u.username === 'admin')
+  
+  if (user) {
+    const { password, ...userWithoutPassword } = user
+    return {
+      code: 200,
+      message: '获取用户信息成功',
+      data: userWithoutPassword
+    }
+  } else {
+    return {
+      code: 401,
+      message: '获取用户信息失败',
+      data: null
+    }
+  }
+})
+
+export default Mock
\ No newline at end of file