xiongzhu пре 2 година
родитељ
комит
6bccf4787d
4 измењених фајлова са 85 додато и 1 уклоњено
  1. 8 0
      src/router/index.js
  2. 73 0
      src/views/GalleryView.vue
  3. 3 0
      src/views/HomeView.vue
  4. 1 1
      src/views/MainView.vue

+ 8 - 0
src/router/index.js

@@ -77,6 +77,14 @@ const router = createRouter({
                     meta: {
                         title: '系统设置'
                     }
+                },
+                {
+                    path: 'gallery',
+                    name: 'gallery',
+                    component: () => import('../views/GalleryView.vue'),
+                    meta: {
+                        title: '虚拟数据'
+                    }
                 }
             ]
         }

+ 73 - 0
src/views/GalleryView.vue

@@ -0,0 +1,73 @@
+<template>
+    <PagingTable url="/admin/users" :where="where" ref="table">
+        <template #filter>
+            <EnumSelect :enum="UserRole" v-model="where.roles"></EnumSelect>
+            <ElButton :icon="Plus" @click="onEdit()">添加</ElButton>
+        </template>
+        <ElTableColumn prop="id" label="#" width="80" />
+        <ElTableColumn prop="username" label="用户名" min-width="120" />
+        <ElTableColumn prop="name" label="昵称" min-width="120" />
+        <ElTableColumn prop="phone" label="手机" min-width="120" />
+        <ElTableColumn prop="createdAt" label="注册时间" :formatter="timeFormatter" width="150" />
+        <ElTableColumn prop="invitor" label="上级" />
+        <ElTableColumn label="操作" align="center" width="120">
+            <template #default="{ row }">
+                <ElButton @click="getToken(row)">Token</ElButton>
+            </template>
+        </ElTableColumn>
+    </PagingTable>
+    <EditDialog v-model="showEditDialog" :model="model" :rules="rules" :on-submit="submit" @success="table.refresh()">
+        <ElFormItem prop="username" label="用户名">
+            <ElInput v-model="model.username" placeholder="请输入用户名" />
+        </ElFormItem>
+        <ElFormItem prop="name" label="昵称">
+            <ElInput v-model="model.name" placeholder="请输入昵称" />
+        </ElFormItem>
+        <ElFormItem prop="phone" label="手机">
+            <ElInput v-model="model.phone" placeholder="请输入手机" />
+        </ElFormItem>
+        <ElFormItem prop="password" label="密码">
+            <ElInput v-model="model.password" placeholder="请输入密码" />
+        </ElFormItem>
+        <ElFormItem prop="roles" label="角色">
+            <EnumSelect v-model="model.roles" :enum="UserRole" multiple :multiple-limit="1"/>
+        </ElFormItem>
+    </EditDialog>
+</template>
+<script setup>
+import { ref } from 'vue'
+import PagingTable from '@/components/PagingTable.vue'
+import { useTimeFormatter } from '@/utils/formatter'
+import { Plus } from '@vicons/tabler'
+import EditDialog from '@/components/EditDialog.vue'
+import { setupEditDialog } from '@/utils/editDialog'
+import EnumSelect from '@/components/EnumSelect.vue'
+import { UserRole } from '@/enums'
+import { http } from '@/plugins/http'
+import { ElMessage } from 'element-plus'
+import { useClipboard } from '@vueuse/core'
+
+const where = ref({ roles: 'user' })
+const timeFormatter = useTimeFormatter()
+const table = ref(null)
+const model = ref({})
+const rules = {
+    username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
+    name: [{ required: true, message: '请输入昵称', trigger: 'blur' }],
+    phone: [{ required: true, message: '请输入手机', trigger: 'blur' }],
+    password: [{ required: true, message: '请输入密码', trigger: 'blur' }],
+    roles: [{ required: true, message: '请选择角色', trigger: 'blur' }]
+}
+const { showEditDialog, onEdit } = setupEditDialog(model)
+async function submit() {
+    await http.put('/gallery', model.value)
+    ElMessage.success('保存成功')
+}
+function getToken(row) {
+    http.get(`/auth/admin/user/${row.id}/token`).then((res) => {
+        const { copy } = useClipboard({ legacy: true })
+        copy(res.access_token)
+        ElMessage.success('复制成功')
+    })
+}
+</script>

+ 3 - 0
src/views/HomeView.vue

@@ -28,6 +28,9 @@
             <ElFormItem label="版本号">
                 <ElInput v-model="model.value.appInfo.versionCode" disabled />
             </ElFormItem>
+            <ElFormItem label="审核版">
+                <ElInput v-model="model.value.appInfo.reviewVersionCode" />
+            </ElFormItem>
             <ElFormItem label="开屏广告">
                 <SingleUpload v-model="model.value.splash.imageUrl" />
             </ElFormItem>

+ 1 - 1
src/views/MainView.vue

@@ -55,7 +55,7 @@ import SideMenu from '@/components/SideMenu.vue'
 import { useRoute } from 'vue-router'
 import { ref, watch, shallowRef, inject } from 'vue'
 import LogoSvg from '@/components/LogoSvg.vue'
-import { User, MoodSmile, Wallet, Home, ExternalLink, Menu2, Settings } from '@vicons/tabler'
+import { User, MoodSmile, Wallet, Home, ExternalLink, Menu2, Settings, Photo } from '@vicons/tabler'
 import UserAvatar from '@/components/UserAvatar.vue'
 import ChangePwd from '@/components/ChangePwd.vue'
 import { http } from '@/plugins/http'