更新PC端vue-element-plus-admin版本到1.8.7
This commit is contained in:
parent
417bfcde05
commit
9ee92305fc
25
README.md
25
README.md
@ -416,16 +416,15 @@ pnpm run build:pro
|
|||||||
|
|
||||||
## 移动端演示图
|
## 移动端演示图
|
||||||
|
|
||||||

|
<table>
|
||||||
|
<tr>
|
||||||

|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077811740.jpg"/></td>
|
||||||
|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077826257.jpg"/></td>
|
||||||

|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077835024.jpg"/></td>
|
||||||
|
</tr>
|
||||||

|
<tr>
|
||||||
|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077849753.jpg"/></td>
|
||||||

|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077860987.jpg"/></td>
|
||||||
|
<td><img src="https://gitee.com/ktianc/kinit/raw/master/images/uni/1670077870240.jpg"/></td>
|
||||||

|
</tr>
|
||||||
|
</table>
|
||||||

|
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "vue-element-plus-admin",
|
"name": "vue-element-plus-admin",
|
||||||
"version": "1.8.6",
|
"version": "1.8.7",
|
||||||
"description": "一套基于vue3、element-plus、typesScript、vite3的后台集成方案。",
|
"description": "一套基于vue3、element-plus、typesScript、vite3的后台集成方案。",
|
||||||
"author": "Archer <502431556@qq.com>",
|
"author": "Archer <502431556@qq.com>",
|
||||||
"private": false,
|
"private": false,
|
||||||
@ -34,6 +34,7 @@
|
|||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^1.1.3",
|
"axios": "^1.1.3",
|
||||||
"clipboard": "^2.0.11",
|
"clipboard": "^2.0.11",
|
||||||
|
"consola": "^2.15.3",
|
||||||
"echarts": "^5.4.0",
|
"echarts": "^5.4.0",
|
||||||
"echarts-wordcloud": "^2.0.0",
|
"echarts-wordcloud": "^2.0.0",
|
||||||
"element-plus": "2.2.21",
|
"element-plus": "2.2.21",
|
||||||
@ -47,6 +48,7 @@
|
|||||||
"pinia-plugin-persist": "^1.0.0",
|
"pinia-plugin-persist": "^1.0.0",
|
||||||
"qrcode": "^1.5.1",
|
"qrcode": "^1.5.1",
|
||||||
"qs": "^6.11.0",
|
"qs": "^6.11.0",
|
||||||
|
"terser": "^5.16.1",
|
||||||
"url": "^0.11.0",
|
"url": "^0.11.0",
|
||||||
"vue": "3.2.45",
|
"vue": "3.2.45",
|
||||||
"vue-i18n": "9.2.2",
|
"vue-i18n": "9.2.2",
|
||||||
@ -97,8 +99,8 @@
|
|||||||
"typescript": "4.9.3",
|
"typescript": "4.9.3",
|
||||||
"unplugin-vue-macros": "^0.16.3",
|
"unplugin-vue-macros": "^0.16.3",
|
||||||
"vite": "3.2.4",
|
"vite": "3.2.4",
|
||||||
|
"vite-plugin-ejs": "^1.6.4",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vite-plugin-html": "^3.2.0",
|
|
||||||
"vite-plugin-mock": "^2.9.6",
|
"vite-plugin-mock": "^2.9.6",
|
||||||
"vite-plugin-purge-icons": "^0.9.1",
|
"vite-plugin-purge-icons": "^0.9.1",
|
||||||
"vite-plugin-style-import": "2.0.0",
|
"vite-plugin-style-import": "2.0.0",
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { PropType } from 'vue'
|
import { PropType, ref } from 'vue'
|
||||||
import { Descriptions } from '@/components/Descriptions'
|
import { Descriptions } from '@/components/Descriptions'
|
||||||
import { ElSwitch } from 'element-plus'
|
import { ElSwitch } from 'element-plus'
|
||||||
// json内容展示组件
|
// json内容展示组件
|
||||||
import { JsonViewer } from 'vue3-json-viewer'
|
import { JsonViewer } from 'vue3-json-viewer'
|
||||||
import 'vue3-json-viewer/dist/index.css'
|
import 'vue3-json-viewer/dist/index.css'
|
||||||
import { DescriptionsSchema } from '@/types/descriptions'
|
import { DescriptionsSchema } from '@/types/descriptions'
|
||||||
|
import { DictDetail, selectDictLabel } from '@/utils/dict'
|
||||||
|
import { useDictStore } from '@/store/modules/dict'
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
currentRow: {
|
currentRow: {
|
||||||
@ -17,6 +19,18 @@ defineProps({
|
|||||||
default: () => []
|
default: () => []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const platformOptions = ref<DictDetail[]>([])
|
||||||
|
const loginMethodOptions = ref<DictDetail[]>([])
|
||||||
|
|
||||||
|
const getOptions = async () => {
|
||||||
|
const dictStore = useDictStore()
|
||||||
|
const dictOptions = await dictStore.getDictObj(['sys_vadmin_platform', 'sys_vadmin_login_method'])
|
||||||
|
platformOptions.value = dictOptions.sys_vadmin_platform
|
||||||
|
loginMethodOptions.value = dictOptions.sys_vadmin_login_method
|
||||||
|
}
|
||||||
|
|
||||||
|
getOptions()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@ -32,5 +46,13 @@ defineProps({
|
|||||||
<template #request="{ row }">
|
<template #request="{ row }">
|
||||||
<JsonViewer :value="JSON.parse(row.request)" copyable boxed sort />
|
<JsonViewer :value="JSON.parse(row.request)" copyable boxed sort />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<template #platform="{ row }">
|
||||||
|
{{ selectDictLabel(platformOptions, row.platform) }}
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #login_method="{ row }">
|
||||||
|
{{ selectDictLabel(loginMethodOptions, row.login_method) }}
|
||||||
|
</template>
|
||||||
</Descriptions>
|
</Descriptions>
|
||||||
</template>
|
</template>
|
||||||
|
@ -28,7 +28,7 @@ export const columns = reactive<TableColumn[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'platform',
|
field: 'platform',
|
||||||
label: '登陆平台',
|
label: '登录平台',
|
||||||
width: '150px',
|
width: '150px',
|
||||||
show: true,
|
show: true,
|
||||||
span: 24
|
span: 24
|
||||||
@ -42,7 +42,7 @@ export const columns = reactive<TableColumn[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'ip',
|
field: 'ip',
|
||||||
label: '登陆地址',
|
label: '登录地址',
|
||||||
show: true,
|
show: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
width: '150px',
|
width: '150px',
|
||||||
@ -50,7 +50,7 @@ export const columns = reactive<TableColumn[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'address',
|
field: 'address',
|
||||||
label: '登陆地点',
|
label: '登录地点',
|
||||||
show: true,
|
show: true,
|
||||||
span: 24
|
span: 24
|
||||||
},
|
},
|
||||||
@ -101,10 +101,10 @@ export const columns = reactive<TableColumn[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'action',
|
field: 'action',
|
||||||
width: '150px',
|
|
||||||
label: '操作',
|
label: '操作',
|
||||||
show: true,
|
show: true,
|
||||||
disabled: true,
|
disabled: false,
|
||||||
|
width: '100px',
|
||||||
span: 24
|
span: 24
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
@ -121,9 +121,20 @@ export const searchSchema = reactive<FormSchema[]>([
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'platform',
|
||||||
|
label: '登录平台',
|
||||||
|
component: 'Select',
|
||||||
|
componentProps: {
|
||||||
|
style: {
|
||||||
|
width: '214px'
|
||||||
|
},
|
||||||
|
options: []
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'ip',
|
field: 'ip',
|
||||||
label: '登陆地址',
|
label: '登录地址',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
clearable: false,
|
clearable: false,
|
||||||
@ -134,7 +145,7 @@ export const searchSchema = reactive<FormSchema[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'address',
|
field: 'address',
|
||||||
label: '登陆地点',
|
label: '登录地点',
|
||||||
component: 'Input',
|
component: 'Input',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
clearable: false,
|
clearable: false,
|
||||||
@ -153,11 +164,11 @@ export const searchSchema = reactive<FormSchema[]>([
|
|||||||
},
|
},
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: '登陆成功',
|
label: '登录成功',
|
||||||
value: true
|
value: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '登陆失败',
|
label: '登录失败',
|
||||||
value: false
|
value: false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -12,6 +12,7 @@ import Detail from './components/Detail.vue'
|
|||||||
import { Search } from '@/components/Search'
|
import { Search } from '@/components/Search'
|
||||||
import { selectDictLabel, DictDetail } from '@/utils/dict'
|
import { selectDictLabel, DictDetail } from '@/utils/dict'
|
||||||
import { useDictStore } from '@/store/modules/dict'
|
import { useDictStore } from '@/store/modules/dict'
|
||||||
|
import { FormSetPropsType } from '@/types/form'
|
||||||
|
|
||||||
const { register, elTableRef, tableObject, methods } = useTable({
|
const { register, elTableRef, tableObject, methods } = useTable({
|
||||||
getListApi: getRecordLoginListApi,
|
getListApi: getRecordLoginListApi,
|
||||||
@ -29,12 +30,18 @@ const dialogVisible = ref(false)
|
|||||||
const dialogTitle = ref('')
|
const dialogTitle = ref('')
|
||||||
const platformOptions = ref<DictDetail[]>([])
|
const platformOptions = ref<DictDetail[]>([])
|
||||||
const loginMethodOptions = ref<DictDetail[]>([])
|
const loginMethodOptions = ref<DictDetail[]>([])
|
||||||
|
const searchSetSchemaList = ref([] as FormSetPropsType[])
|
||||||
|
|
||||||
const getOptions = async () => {
|
const getOptions = async () => {
|
||||||
const dictStore = useDictStore()
|
const dictStore = useDictStore()
|
||||||
const dictOptions = await dictStore.getDictObj(['sys_vadmin_platform', 'sys_vadmin_login_method'])
|
const dictOptions = await dictStore.getDictObj(['sys_vadmin_platform', 'sys_vadmin_login_method'])
|
||||||
platformOptions.value = dictOptions.sys_vadmin_platform
|
platformOptions.value = dictOptions.sys_vadmin_platform
|
||||||
loginMethodOptions.value = dictOptions.sys_vadmin_login_method
|
loginMethodOptions.value = dictOptions.sys_vadmin_login_method
|
||||||
|
searchSetSchemaList.value.push({
|
||||||
|
field: 'platform',
|
||||||
|
path: 'componentProps.options',
|
||||||
|
value: dictOptions.sys_vadmin_platform
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
getOptions()
|
getOptions()
|
||||||
@ -69,7 +76,12 @@ getList()
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<Search :schema="searchSchema" @search="setSearchParams" @reset="setSearchParams" />
|
<Search
|
||||||
|
:schema="searchSchema"
|
||||||
|
:setSchemaList="searchSetSchemaList"
|
||||||
|
@search="setSearchParams"
|
||||||
|
@reset="setSearchParams"
|
||||||
|
/>
|
||||||
|
|
||||||
<div class="mb-8px flex justify-between">
|
<div class="mb-8px flex justify-between">
|
||||||
<ElRow />
|
<ElRow />
|
||||||
|
@ -10,8 +10,8 @@ import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-i
|
|||||||
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
|
||||||
import PurgeIcons from 'vite-plugin-purge-icons'
|
import PurgeIcons from 'vite-plugin-purge-icons'
|
||||||
import { viteMockServe } from 'vite-plugin-mock'
|
import { viteMockServe } from 'vite-plugin-mock'
|
||||||
import { createHtmlPlugin } from 'vite-plugin-html'
|
|
||||||
import VueMarcos from 'unplugin-vue-macros/vite'
|
import VueMarcos from 'unplugin-vue-macros/vite'
|
||||||
|
import { ViteEjsPlugin } from "vite-plugin-ejs"
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
const root = process.cwd()
|
const root = process.cwd()
|
||||||
@ -71,13 +71,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
|
|||||||
// `
|
// `
|
||||||
// }),
|
// }),
|
||||||
VueMarcos(),
|
VueMarcos(),
|
||||||
createHtmlPlugin({
|
ViteEjsPlugin({
|
||||||
inject: {
|
title: env.VITE_APP_TITLE
|
||||||
data: {
|
|
||||||
title: env.VITE_APP_TITLE,
|
|
||||||
injectScript: `<script src="./inject.js"></script>`,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -124,7 +119,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
|
|||||||
rewrite: path => path.replace(/^\/api/, '')
|
rewrite: path => path.replace(/^\/api/, '')
|
||||||
},
|
},
|
||||||
// 选项写法
|
// 选项写法
|
||||||
'/static': {
|
'/media': {
|
||||||
target: 'http://127.0.0.1:9000',
|
target: 'http://127.0.0.1:9000',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: path => path
|
rewrite: path => path
|
||||||
|
@ -18,9 +18,10 @@ class LoginParams(QueryParams):
|
|||||||
列表分页
|
列表分页
|
||||||
"""
|
"""
|
||||||
def __init__(self, ip: str = None, address: str = None, telephone: str = None, status: bool = None,
|
def __init__(self, ip: str = None, address: str = None, telephone: str = None, status: bool = None,
|
||||||
params: Paging = Depends()):
|
platform: str = None, params: Paging = Depends()):
|
||||||
super().__init__(params)
|
super().__init__(params)
|
||||||
self.ip = ("like", ip)
|
self.ip = ("like", ip)
|
||||||
self.telephone = ("like", telephone)
|
self.telephone = ("like", telephone)
|
||||||
self.address = ("like", address)
|
self.address = ("like", address)
|
||||||
self.status = status
|
self.status = status
|
||||||
|
self.platform = platform
|
||||||
|
Loading…
x
Reference in New Issue
Block a user