feat 添加自定按钮
This commit is contained in:
parent
4935b9c24c
commit
d01a491c22
@ -20,9 +20,10 @@
|
|||||||
"@types/node": "^18.11.10",
|
"@types/node": "^18.11.10",
|
||||||
"@vitejs/plugin-vue": "^3.2.0",
|
"@vitejs/plugin-vue": "^3.2.0",
|
||||||
"@vitejs/plugin-vue-jsx": "^2.1.1",
|
"@vitejs/plugin-vue-jsx": "^2.1.1",
|
||||||
"typescript": "^4.9.3",
|
|
||||||
"vite": "^3.2.4",
|
|
||||||
"less": "^4.1.3",
|
"less": "^4.1.3",
|
||||||
|
"typescript": "^4.9.3",
|
||||||
|
"unplugin-vue-define-options": "^1.0.0",
|
||||||
|
"vite": "^3.2.4",
|
||||||
"vue-tsc": "^1.0.11"
|
"vue-tsc": "^1.0.11"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
94
admin-fe/src/components/button/Index.vue
Normal file
94
admin-fe/src/components/button/Index.vue
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<template>
|
||||||
|
<button :disabled="disabled || loading" class="btn" :class="{
|
||||||
|
'btn-primary':btnType == 'primary',
|
||||||
|
'btn-default':btnType == 'default',
|
||||||
|
'btn-text':btnType == 'text',
|
||||||
|
'btn-link':btnType == 'link',
|
||||||
|
}">
|
||||||
|
<span v-if="loading" class="btn-icon">
|
||||||
|
<Loading v-if="loading" class="btn-icon-loading"/>
|
||||||
|
</span>
|
||||||
|
<slot></slot>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {defineOptions} from "unplugin-vue-define-options/macros";
|
||||||
|
import {computed} from "vue";
|
||||||
|
import Loading from "../icon/Loading.vue";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'PButton'
|
||||||
|
})
|
||||||
|
type ButtonProps = {
|
||||||
|
type: 'primary' | 'default' | 'text' | 'link'
|
||||||
|
/**
|
||||||
|
* 是否正在加载中
|
||||||
|
*/
|
||||||
|
loading: boolean
|
||||||
|
disabled: boolean
|
||||||
|
}
|
||||||
|
const props = defineProps<ButtonProps>()
|
||||||
|
const btnType = computed(() => props.type || 'primary')
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
@keyframes anim-loading {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 5px 15px;
|
||||||
|
line-height: 20px;
|
||||||
|
border-radius: var(--border-radius-middle);
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
|
||||||
|
&.btn-primary {
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
color: white;
|
||||||
|
&:hover{
|
||||||
|
background-color: var(--primary-color-hover);
|
||||||
|
}
|
||||||
|
&:active{
|
||||||
|
background-color: var(--primary-color-active);
|
||||||
|
}
|
||||||
|
&[disabled]{
|
||||||
|
background-color: var(--primary-3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.btn-default {
|
||||||
|
}
|
||||||
|
|
||||||
|
&.btn-text {
|
||||||
|
}
|
||||||
|
|
||||||
|
&.btn-link {
|
||||||
|
background: none;
|
||||||
|
text-decoration: underline;
|
||||||
|
color: var(--primary-color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-icon {
|
||||||
|
margin-right: 5px;
|
||||||
|
|
||||||
|
.btn-icon-loading {
|
||||||
|
height: 16px !important;
|
||||||
|
width: 16px !important;
|
||||||
|
vertical-align: middle;
|
||||||
|
animation: anim-loading 1s infinite linear;
|
||||||
|
//transition: transform ;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
18
admin-fe/src/components/icon/Loading.vue
Normal file
18
admin-fe/src/components/icon/Loading.vue
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<template>
|
||||||
|
<svg :style="sizeStyle" class="icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||||
|
<path fill="currentColor"
|
||||||
|
d="M270.4 214.4C336 160 420 128 512 128c212 0 384 172 384 384h64c0-247.2-200.8-448-448-448-107.2 0-205.6 37.6-282.4 100l40.8 50.4z"
|
||||||
|
p-id="2703"></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import {defineComponent} from "vue";
|
||||||
|
import iconComponent from "./iconComponent";
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: "Loading",
|
||||||
|
props: iconComponent.props,
|
||||||
|
setup: iconComponent.setup
|
||||||
|
})
|
||||||
|
</script>
|
@ -24,144 +24,145 @@ import Eye from "../icon/Eye.vue";
|
|||||||
import EyeClose from "../icon/EyeClose.vue";
|
import EyeClose from "../icon/EyeClose.vue";
|
||||||
|
|
||||||
interface PInputEvents {
|
interface PInputEvents {
|
||||||
'update:modelValue': (value: any) => void
|
'update:modelValue': (value: any) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
type PInputProps = {
|
type PInputProps = {
|
||||||
placeholder?: string
|
placeholder?: string
|
||||||
modelValue?: any
|
modelValue?: any
|
||||||
type?: 'text' | 'password' | 'textarea'
|
type?: 'text' | 'password' | 'textarea'
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = defineProps<PInputProps>()
|
const props = defineProps<PInputProps>()
|
||||||
const emit = defineEmits<PInputEvents>()
|
const emit = defineEmits<PInputEvents>()
|
||||||
const slots = useSlots()
|
const slots = useSlots()
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
focus: false,
|
focus: false,
|
||||||
hover: false,
|
hover: false,
|
||||||
passwordVisible: false
|
passwordVisible: false
|
||||||
})
|
})
|
||||||
const inputType = computed(() => {
|
const inputType = computed(() => {
|
||||||
const type = props.type || 'text';
|
const type = props.type || 'text';
|
||||||
if (type === 'password' && state.passwordVisible) return 'text';
|
if (type === 'password' && state.passwordVisible) return 'text';
|
||||||
return type;
|
return type;
|
||||||
})
|
})
|
||||||
const value = computed({
|
const value = computed({
|
||||||
get() {
|
get() {
|
||||||
return props.modelValue
|
return props.modelValue
|
||||||
},
|
},
|
||||||
set(value) {
|
set(value) {
|
||||||
emit('update:modelValue', value)
|
emit('update:modelValue', value)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
.p-input-box-focus {
|
.p-input-box-focus {
|
||||||
|
|
||||||
border-color: #2a7dc9;
|
border-color: #2a7dc9;
|
||||||
box-shadow: 0 0 0 2px #0960bd33;
|
box-shadow: 0 0 0 2px #0960bd33;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input {
|
.p-input {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 4px 11px;
|
padding: 4px 11px;
|
||||||
color: #000000d9;
|
color: #000000d9;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 1.5715;
|
line-height: 1.5715;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
border: 1px solid #d9d9d9;
|
border: 1px solid #d9d9d9;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
transition: all .3s;
|
transition: all .3s;
|
||||||
|
|
||||||
&::-moz-placeholder {
|
&::-moz-placeholder {
|
||||||
opacity: 1
|
opacity: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
&::placeholder {
|
&::placeholder {
|
||||||
color: #bfbfbf;
|
color: #bfbfbf;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
-moz-user-select: none;
|
-moz-user-select: none;
|
||||||
user-select: none
|
user-select: none
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
&:placeholder-shown {
|
&:placeholder-shown {
|
||||||
text-overflow: ellipsis
|
text-overflow: ellipsis
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: #2a7dc9;
|
border-color: #2a7dc9;
|
||||||
border-right-width: 1px !important
|
border-right-width: 1px !important
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input-rtl .p-input:hover {
|
.p-input-rtl .p-input:hover {
|
||||||
border-right-width: 0;
|
border-right-width: 0;
|
||||||
border-left-width: 1px !important
|
border-left-width: 1px !important
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus, .p-input-focused {
|
&:focus, .p-input-focused {
|
||||||
border-right-width: 1px !important;
|
border-right-width: 1px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input-disabled {
|
.p-input-disabled {
|
||||||
color: #00000040;
|
color: #00000040;
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
border-color: #d9d9d9;
|
border-color: #d9d9d9;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
opacity: 1
|
opacity: 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.p-input-wrapper {
|
.p-input-wrapper {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input-wrapper-group {
|
.p-input-wrapper-group {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
position: relative;
|
position: relative;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
padding: 4px 6px;
|
padding: 4px 6px;
|
||||||
color: #000000d9;
|
color: #000000d9;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 1.5715;
|
line-height: 1.5715;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-image: none;
|
background-image: none;
|
||||||
border: 1px solid #d9d9d9;
|
border: 1px solid #d9d9d9;
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
transition: all .3s;
|
transition: all .3s;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: #2a7dc9;
|
border-color: #2a7dc9;
|
||||||
border-right-width: 1px !important
|
border-right-width: 1px !important
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input {
|
.p-input {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
border: none;
|
||||||
outline: none;
|
outline: none;
|
||||||
margin: 0 6px;
|
margin: 0 6px;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.p-input-prefix, .p-input-suffix {
|
.p-input-prefix, .p-input-suffix {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: none;
|
flex: none;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -1,7 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="modal" v-if="modalVisible">
|
<div class="modal" v-if="modalVisible">
|
||||||
<div class="modal-mask"></div>
|
<div class="modal-mask"></div>
|
||||||
<div class="modal-content">
|
<div class="modal-content" :style="{
|
||||||
|
width: width+(/(px|%)/.test(width)?'':'px')
|
||||||
|
}">
|
||||||
<div class="modal-close" @click="modalVisible = false">关闭</div>
|
<div class="modal-close" @click="modalVisible = false">关闭</div>
|
||||||
<slot/>
|
<slot/>
|
||||||
</div>
|
</div>
|
||||||
@ -12,8 +14,12 @@
|
|||||||
import {computed} from "vue";
|
import {computed} from "vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "modal",
|
name: "Modal",
|
||||||
props: {
|
props: {
|
||||||
|
width: {
|
||||||
|
type: String,
|
||||||
|
default: '500px'
|
||||||
|
},
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
require: true
|
require: true
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="upload-wrapper">
|
<div class="upload-wrapper">
|
||||||
<input type="file" :accept="accept" @change="onFileSelectChange"/>
|
<input type="file" :id="fileUploaderId" :accept="accept" @change="onFileSelectChange" class="file-handler"/>
|
||||||
<span>
|
<label :for="fileUploaderId">
|
||||||
<!-- 上传触发元素的插槽 -->
|
<!-- 上传触发元素的插槽 -->
|
||||||
<slot/>
|
<slot/>
|
||||||
</span>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -45,6 +45,7 @@ type FileUploadResultModel = {
|
|||||||
}
|
}
|
||||||
const props = defineProps<PropsType>()
|
const props = defineProps<PropsType>()
|
||||||
const emits = defineEmits<EmitsType>()
|
const emits = defineEmits<EmitsType>()
|
||||||
|
const fileUploaderId = Math.random().toString(16).substring(3)
|
||||||
|
|
||||||
async function onFileSelectChange(e: InputEvent) {
|
async function onFileSelectChange(e: InputEvent) {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
@ -58,5 +59,13 @@ async function onFileSelectChange(e: InputEvent) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.upload-wrapper{
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.file-handler{
|
||||||
|
opacity: 0;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
@ -52,7 +52,6 @@ export const useUserStore = defineStore('user-store', () => {
|
|||||||
const data = await http.get<AdminLoginModel>('/admin/user/info')
|
const data = await http.get<AdminLoginModel>('/admin/user/info')
|
||||||
localStorage.removeItem(TOKEN_KEY)
|
localStorage.removeItem(TOKEN_KEY)
|
||||||
userinfo.value = null
|
userinfo.value = null
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {userinfo, login, logout, updateInfo, token}
|
return {userinfo, login, logout, updateInfo, token}
|
||||||
|
@ -63,7 +63,7 @@ p{
|
|||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
.login-wrapper {
|
.login-wrapper {
|
||||||
width: 500px;
|
width: 300px;
|
||||||
margin: 50px auto;
|
margin: 50px auto;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -10,8 +10,8 @@
|
|||||||
<option v-for="(text,value) in CategoryEnum" :key="value" :value="value">{{ text }}</option>
|
<option v-for="(text,value) in CategoryEnum" :key="value" :value="value">{{ text }}</option>
|
||||||
</select>
|
</select>
|
||||||
</span>
|
</span>
|
||||||
<button @click="onReset">重置</button>
|
<PButton type="default" @click="onReset">重置</PButton>
|
||||||
<button @click="onSearch">搜索</button>
|
<PButton :disabled="true" :loading="searching" @click="onSearch">搜索</PButton>
|
||||||
</div>
|
</div>
|
||||||
<div class="toolbar-extra">
|
<div class="toolbar-extra">
|
||||||
<button @click="onEditData({id:0})">新增</button>
|
<button @click="onEditData({id:0})">新增</button>
|
||||||
@ -90,7 +90,6 @@
|
|||||||
<img :src="editData.cover" alt="" style="width: 120px;height: 120px;">
|
<img :src="editData.cover" alt="" style="width: 120px;height: 120px;">
|
||||||
</div>
|
</div>
|
||||||
<div v-else>选择商品图</div>
|
<div v-else>选择商品图</div>
|
||||||
|
|
||||||
</Uploader>
|
</Uploader>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
@ -138,6 +137,7 @@
|
|||||||
<button @click="saveGoodsData">提交</button>
|
<button @click="saveGoodsData">提交</button>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@ -147,6 +147,8 @@ import message from "../../components/message";
|
|||||||
import Modal from "../../components/modal/modal.vue";
|
import Modal from "../../components/modal/modal.vue";
|
||||||
import Pager from "../../components/pager/Pager.vue";
|
import Pager from "../../components/pager/Pager.vue";
|
||||||
import Uploader from "../../components/uploader/uploader.vue";
|
import Uploader from "../../components/uploader/uploader.vue";
|
||||||
|
import PButton from "../../components/button/Index.vue";
|
||||||
|
|
||||||
//
|
//
|
||||||
//商品类别(1:普通 2:精选 3:秒杀 4:抽奖)
|
//商品类别(1:普通 2:精选 3:秒杀 4:抽奖)
|
||||||
const CategoryEnum = {
|
const CategoryEnum = {
|
||||||
@ -179,6 +181,7 @@ const editData = reactive<GoodsModel>({
|
|||||||
id: 0
|
id: 0
|
||||||
});
|
});
|
||||||
const totalCount = ref(0)
|
const totalCount = ref(0)
|
||||||
|
const searching = ref(false)
|
||||||
|
|
||||||
function onPageChange(currentPage: number) {
|
function onPageChange(currentPage: number) {
|
||||||
param.page = currentPage;
|
param.page = currentPage;
|
||||||
@ -198,16 +201,17 @@ function onSearch() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loadDataList() {
|
function loadDataList() {
|
||||||
|
searching.value = true
|
||||||
http.post<DataListModel<GoodsModel>>('/admin/goods/list', param).then(res => {
|
http.post<DataListModel<GoodsModel>>('/admin/goods/list', param).then(res => {
|
||||||
goodsList.value = res.items
|
goodsList.value = res.items
|
||||||
totalCount.value = res.total
|
totalCount.value = res.total
|
||||||
})
|
}).finally(() => searching.value = false)
|
||||||
}
|
}
|
||||||
|
|
||||||
function fillDataToObject(obj: any, data: any, keys: string[]) {
|
function fillDataToObject(obj: any, data: any, keys: string[]) {
|
||||||
keys.forEach(key => {
|
keys.forEach(key => {
|
||||||
if (typeof (data[key]) === 'undefined') {
|
if (typeof (data[key]) === 'undefined') {
|
||||||
if(typeof(obj[key]) != 'undefined'){
|
if (typeof (obj[key]) != 'undefined') {
|
||||||
// 如果数据的字段不存在则将在字段的值设置为null
|
// 如果数据的字段不存在则将在字段的值设置为null
|
||||||
obj[key] = null;
|
obj[key] = null;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<span>
|
<span>
|
||||||
{{ userStore.userinfo?.account }}
|
{{ userStore.userinfo?.account }}
|
||||||
</span>
|
</span>
|
||||||
|
<span @click="logout">退出</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
@ -28,9 +29,15 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {useUserStore} from "../../service/store";
|
import {useUserStore} from "../../service/store";
|
||||||
|
import {useRouter} from "vue-router";
|
||||||
|
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
|
function logout() {
|
||||||
|
userStore.logout()
|
||||||
|
router.replace('/login')
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
.app-admin-layout {
|
.app-admin-layout {
|
||||||
@ -65,26 +72,31 @@ const userStore = useUserStore();
|
|||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
}
|
}
|
||||||
.title{
|
|
||||||
|
.title {
|
||||||
height: var(--header-height);
|
height: var(--header-height);
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
line-height: var(--header-height);
|
line-height: var(--header-height);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: var(--font-size-large);
|
font-size: var(--font-size-large);
|
||||||
}
|
}
|
||||||
.menu-list{
|
|
||||||
|
.menu-list {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
a{
|
|
||||||
|
a {
|
||||||
display: block;
|
display: block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color:white;
|
color: white;
|
||||||
padding:10px 20px;
|
padding: 10px 20px;
|
||||||
&.active-menu{
|
|
||||||
|
&.active-menu {
|
||||||
background-color: #666666;
|
background-color: #666666;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-wrapper {
|
.content-wrapper {
|
||||||
margin: 20px;
|
margin: 20px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
"**/*.js"
|
"**/*.js"
|
||||||
],
|
],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"jsx": "preserve"
|
"jsx": "preserve",
|
||||||
|
"types": [
|
||||||
|
"unplugin-vue-define-options/macros-global"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
import vueJsxPlugin from "@vitejs/plugin-vue-jsx";
|
import vueJsxPlugin from "@vitejs/plugin-vue-jsx";
|
||||||
|
import DefineOptions from 'unplugin-vue-define-options/vite'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
hmr: true,
|
hmr: true,
|
||||||
@ -10,6 +11,7 @@ export default {
|
|||||||
// 必须配置vue插件
|
// 必须配置vue插件
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
|
DefineOptions(),
|
||||||
vueJsxPlugin(), // 如果需要使用jsx或者tsx
|
vueJsxPlugin(), // 如果需要使用jsx或者tsx
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -200,7 +200,7 @@
|
|||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
"@babel/parser@^7.16.4", "@babel/parser@^7.18.10", "@babel/parser@^7.20.5":
|
"@babel/parser@^7.16.4", "@babel/parser@^7.18.10", "@babel/parser@^7.20.0", "@babel/parser@^7.20.5":
|
||||||
version "7.20.5"
|
version "7.20.5"
|
||||||
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
|
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8"
|
||||||
integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
|
integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==
|
||||||
@ -253,7 +253,7 @@
|
|||||||
debug "^4.1.0"
|
debug "^4.1.0"
|
||||||
globals "^11.1.0"
|
globals "^11.1.0"
|
||||||
|
|
||||||
"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5":
|
"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5":
|
||||||
version "7.20.5"
|
version "7.20.5"
|
||||||
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
|
resolved "https://registry.npmmirror.com/@babel/types/-/types-7.20.5.tgz#e206ae370b5393d94dfd1d04cd687cace53efa84"
|
||||||
integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
|
integrity sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==
|
||||||
@ -312,6 +312,14 @@
|
|||||||
"@jridgewell/resolve-uri" "3.1.0"
|
"@jridgewell/resolve-uri" "3.1.0"
|
||||||
"@jridgewell/sourcemap-codec" "1.4.14"
|
"@jridgewell/sourcemap-codec" "1.4.14"
|
||||||
|
|
||||||
|
"@rollup/pluginutils@^4.2.1":
|
||||||
|
version "4.2.1"
|
||||||
|
resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
|
||||||
|
integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
|
||||||
|
dependencies:
|
||||||
|
estree-walker "^2.0.1"
|
||||||
|
picomatch "^2.2.2"
|
||||||
|
|
||||||
"@types/node@^18.11.10":
|
"@types/node@^18.11.10":
|
||||||
version "18.11.10"
|
version "18.11.10"
|
||||||
resolved "https://registry.npmmirror.com/@types/node/-/node-18.11.10.tgz#4c64759f3c2343b7e6c4b9caf761c7a3a05cee34"
|
resolved "https://registry.npmmirror.com/@types/node/-/node-18.11.10.tgz#4c64759f3c2343b7e6c4b9caf761c7a3a05cee34"
|
||||||
@ -376,6 +384,15 @@
|
|||||||
"@volar/typescript" "1.0.11"
|
"@volar/typescript" "1.0.11"
|
||||||
"@volar/vue-language-core" "1.0.11"
|
"@volar/vue-language-core" "1.0.11"
|
||||||
|
|
||||||
|
"@vue-macros/common@~0.13.4":
|
||||||
|
version "0.13.4"
|
||||||
|
resolved "https://registry.npmmirror.com/@vue-macros/common/-/common-0.13.4.tgz#f1a12c63aad18ad0020101bf386f5e9c95d444ba"
|
||||||
|
integrity sha512-mQooO33XcY4kQyKBrbGfdIPPsYhpcfmH75SQnXx2vNsNLSNvhLuDaIIV0fhMJ0HV5Z02V9Ka1gx7v1g5bk9Q0A==
|
||||||
|
dependencies:
|
||||||
|
"@babel/types" "^7.20.2"
|
||||||
|
"@vue/compiler-sfc" "^3.2.45"
|
||||||
|
magic-string "^0.26.7"
|
||||||
|
|
||||||
"@vue/babel-helper-vue-transform-on@^1.0.2":
|
"@vue/babel-helper-vue-transform-on@^1.0.2":
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc"
|
resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz#9b9c691cd06fc855221a2475c3cc831d774bc7dc"
|
||||||
@ -491,6 +508,11 @@
|
|||||||
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
|
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz#a3fffa7489eafff38d984e23d0236e230c818bc2"
|
||||||
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
|
integrity sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==
|
||||||
|
|
||||||
|
acorn@^8.8.1:
|
||||||
|
version "8.8.1"
|
||||||
|
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
|
||||||
|
integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
|
||||||
|
|
||||||
ansi-styles@^3.2.1:
|
ansi-styles@^3.2.1:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||||
@ -498,11 +520,32 @@ ansi-styles@^3.2.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
color-convert "^1.9.0"
|
color-convert "^1.9.0"
|
||||||
|
|
||||||
|
anymatch@~3.1.2:
|
||||||
|
version "3.1.3"
|
||||||
|
resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
|
||||||
|
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
|
||||||
|
dependencies:
|
||||||
|
normalize-path "^3.0.0"
|
||||||
|
picomatch "^2.0.4"
|
||||||
|
|
||||||
|
ast-walker-scope@^0.3.0:
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.npmmirror.com/ast-walker-scope/-/ast-walker-scope-0.3.0.tgz#955b00af19946e76d39ba86d3046b9bc2b7312d9"
|
||||||
|
integrity sha512-bsOBv3jB+1kGaxwPHhkLiagS+75KfzEqtkNWvATgMGtXM6kJZG3PlG4fYQFMiHeLpoAkwc6G61w07+hEXx39aA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/parser" "^7.20.0"
|
||||||
|
"@babel/types" "^7.20.0"
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
balanced-match@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||||
|
|
||||||
|
binary-extensions@^2.0.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||||
|
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||||
|
|
||||||
brace-expansion@^2.0.1:
|
brace-expansion@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||||
@ -510,6 +553,13 @@ brace-expansion@^2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
|
|
||||||
|
braces@~3.0.2:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||||
|
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||||
|
dependencies:
|
||||||
|
fill-range "^7.0.1"
|
||||||
|
|
||||||
browserslist@^4.21.3:
|
browserslist@^4.21.3:
|
||||||
version "4.21.4"
|
version "4.21.4"
|
||||||
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
|
resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
|
||||||
@ -539,6 +589,21 @@ chalk@^2.0.0:
|
|||||||
escape-string-regexp "^1.0.5"
|
escape-string-regexp "^1.0.5"
|
||||||
supports-color "^5.3.0"
|
supports-color "^5.3.0"
|
||||||
|
|
||||||
|
chokidar@^3.5.3:
|
||||||
|
version "3.5.3"
|
||||||
|
resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||||
|
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||||
|
dependencies:
|
||||||
|
anymatch "~3.1.2"
|
||||||
|
braces "~3.0.2"
|
||||||
|
glob-parent "~5.1.2"
|
||||||
|
is-binary-path "~2.1.0"
|
||||||
|
is-glob "~4.0.1"
|
||||||
|
normalize-path "~3.0.0"
|
||||||
|
readdirp "~3.6.0"
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
@ -742,11 +807,18 @@ escape-string-regexp@^1.0.5:
|
|||||||
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||||
|
|
||||||
estree-walker@^2.0.2:
|
estree-walker@^2.0.1, estree-walker@^2.0.2:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||||
|
|
||||||
|
fill-range@^7.0.1:
|
||||||
|
version "7.0.1"
|
||||||
|
resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||||
|
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
||||||
|
dependencies:
|
||||||
|
to-regex-range "^5.0.1"
|
||||||
|
|
||||||
fsevents@~2.3.2:
|
fsevents@~2.3.2:
|
||||||
version "2.3.2"
|
version "2.3.2"
|
||||||
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||||
@ -762,6 +834,13 @@ gensync@^1.0.0-beta.2:
|
|||||||
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
||||||
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
||||||
|
|
||||||
|
glob-parent@~5.1.2:
|
||||||
|
version "5.1.2"
|
||||||
|
resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||||
|
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
|
||||||
|
dependencies:
|
||||||
|
is-glob "^4.0.1"
|
||||||
|
|
||||||
globals@^11.1.0:
|
globals@^11.1.0:
|
||||||
version "11.12.0"
|
version "11.12.0"
|
||||||
resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
|
||||||
@ -806,6 +885,13 @@ image-size@~0.5.0:
|
|||||||
resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
|
resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
|
||||||
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
||||||
|
|
||||||
|
is-binary-path@~2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||||
|
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
|
||||||
|
dependencies:
|
||||||
|
binary-extensions "^2.0.0"
|
||||||
|
|
||||||
is-core-module@^2.9.0:
|
is-core-module@^2.9.0:
|
||||||
version "2.11.0"
|
version "2.11.0"
|
||||||
resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
|
resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
|
||||||
@ -813,6 +899,23 @@ is-core-module@^2.9.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has "^1.0.3"
|
has "^1.0.3"
|
||||||
|
|
||||||
|
is-extglob@^2.1.1:
|
||||||
|
version "2.1.1"
|
||||||
|
resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||||
|
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||||
|
|
||||||
|
is-glob@^4.0.1, is-glob@~4.0.1:
|
||||||
|
version "4.0.3"
|
||||||
|
resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||||
|
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||||
|
dependencies:
|
||||||
|
is-extglob "^2.1.1"
|
||||||
|
|
||||||
|
is-number@^7.0.0:
|
||||||
|
version "7.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||||
|
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||||
|
|
||||||
is-what@^3.14.1:
|
is-what@^3.14.1:
|
||||||
version "3.14.1"
|
version "3.14.1"
|
||||||
resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
||||||
@ -857,6 +960,13 @@ magic-string@^0.25.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
sourcemap-codec "^1.4.8"
|
sourcemap-codec "^1.4.8"
|
||||||
|
|
||||||
|
magic-string@^0.26.7:
|
||||||
|
version "0.26.7"
|
||||||
|
resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
|
||||||
|
integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
|
||||||
|
dependencies:
|
||||||
|
sourcemap-codec "^1.4.8"
|
||||||
|
|
||||||
make-dir@^2.1.0:
|
make-dir@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||||
@ -911,6 +1021,11 @@ node-releases@^2.0.6:
|
|||||||
resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
|
resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
|
||||||
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
|
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
|
||||||
|
|
||||||
|
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||||
|
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||||
|
|
||||||
parse-node-version@^1.0.1:
|
parse-node-version@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
|
resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
|
||||||
@ -926,6 +1041,11 @@ picocolors@^1.0.0:
|
|||||||
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||||
|
|
||||||
|
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||||
|
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||||
|
|
||||||
pify@^4.0.1:
|
pify@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||||
@ -953,6 +1073,13 @@ prr@~1.0.1:
|
|||||||
resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||||
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
||||||
|
|
||||||
|
readdirp@~3.6.0:
|
||||||
|
version "3.6.0"
|
||||||
|
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
|
||||||
|
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
|
||||||
|
dependencies:
|
||||||
|
picomatch "^2.2.1"
|
||||||
|
|
||||||
resolve@^1.22.1:
|
resolve@^1.22.1:
|
||||||
version "1.22.1"
|
version "1.22.1"
|
||||||
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
|
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
|
||||||
@ -1026,6 +1153,13 @@ to-fast-properties@^2.0.0:
|
|||||||
resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
|
resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
|
||||||
integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
|
integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
|
||||||
|
|
||||||
|
to-regex-range@^5.0.1:
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||||
|
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
||||||
|
dependencies:
|
||||||
|
is-number "^7.0.0"
|
||||||
|
|
||||||
tslib@^2.3.0:
|
tslib@^2.3.0:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
|
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
|
||||||
@ -1036,6 +1170,26 @@ typescript@^4.9.3:
|
|||||||
resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db"
|
resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db"
|
||||||
integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==
|
integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==
|
||||||
|
|
||||||
|
unplugin-vue-define-options@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/unplugin-vue-define-options/-/unplugin-vue-define-options-1.0.0.tgz#0aabe28748d5b445e68b6d44bc1170e3d01622a9"
|
||||||
|
integrity sha512-j90zM7NhZXBL5uMlHKzSOjvU98lFcIErdgAhj7bEEdvZarkwOkEUgMFsZDwStN9FEcMAiS/BTvcyGfItu3ry/g==
|
||||||
|
dependencies:
|
||||||
|
"@rollup/pluginutils" "^4.2.1"
|
||||||
|
"@vue-macros/common" "~0.13.4"
|
||||||
|
ast-walker-scope "^0.3.0"
|
||||||
|
unplugin "^1.0.0"
|
||||||
|
|
||||||
|
unplugin@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.0.0.tgz#8d12e0d116bf56313d42755094fc370e9c18da86"
|
||||||
|
integrity sha512-H5UnBUxfhTXBXGo2AwKsl0UaLSHzSNDZNehPQSgdhVfO/t+XAS1Yoj3vmLrrlBrS9ZwtH5tejbX/TCp5DcyCKg==
|
||||||
|
dependencies:
|
||||||
|
acorn "^8.8.1"
|
||||||
|
chokidar "^3.5.3"
|
||||||
|
webpack-sources "^3.2.3"
|
||||||
|
webpack-virtual-modules "^0.4.6"
|
||||||
|
|
||||||
update-browserslist-db@^1.0.9:
|
update-browserslist-db@^1.0.9:
|
||||||
version "1.0.10"
|
version "1.0.10"
|
||||||
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
|
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
|
||||||
@ -1094,3 +1248,13 @@ vue@^3.2.45:
|
|||||||
"@vue/runtime-dom" "3.2.45"
|
"@vue/runtime-dom" "3.2.45"
|
||||||
"@vue/server-renderer" "3.2.45"
|
"@vue/server-renderer" "3.2.45"
|
||||||
"@vue/shared" "3.2.45"
|
"@vue/shared" "3.2.45"
|
||||||
|
|
||||||
|
webpack-sources@^3.2.3:
|
||||||
|
version "3.2.3"
|
||||||
|
resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
|
||||||
|
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||||
|
|
||||||
|
webpack-virtual-modules@^0.4.6:
|
||||||
|
version "0.4.6"
|
||||||
|
resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45"
|
||||||
|
integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==
|
||||||
|
@ -43,7 +43,7 @@ public class UserAdminController {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@PostMapping("login")
|
@PostMapping("login")
|
||||||
public UserAdminInfo login(@Validated @RequestBody UserAdminInfo user) {
|
public UserAdminInfo login(@Validated @RequestBody UserAdminInfo user) {
|
||||||
Thread.sleep(1);
|
Thread.sleep(2000);
|
||||||
// 判断是否存在账号
|
// 判断是否存在账号
|
||||||
if (!userStoreMap.containsKey(user.getAccount())) {
|
if (!userStoreMap.containsKey(user.getAccount())) {
|
||||||
throw BizException.create("账号不存在");
|
throw BizException.create("账号不存在");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user