Merge branch 'master' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 into dev
This commit is contained in:
commit
9402b29684
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yudao-ui-admin-vue3",
|
"name": "yudao-ui-admin-vue3",
|
||||||
"version": "2.0.1-snapshot",
|
"version": "2.1.0-snapshot",
|
||||||
"description": "基于vue3、vite4、element-plus、typesScript",
|
"description": "基于vue3、vite4、element-plus、typesScript",
|
||||||
"author": "xingyu",
|
"author": "xingyu",
|
||||||
"private": false,
|
"private": false,
|
||||||
|
@ -17,6 +17,11 @@ export const SeckillConfigApi = {
|
|||||||
return await request.get({ url: `/promotion/seckill-config/page`, params })
|
return await request.get({ url: `/promotion/seckill-config/page`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 查询秒杀时段列表
|
||||||
|
getSimpleSeckillConfigList: async () => {
|
||||||
|
return await request.get({ url: `/promotion/seckill-config/simple-list` })
|
||||||
|
},
|
||||||
|
|
||||||
// 查询秒杀时段详情
|
// 查询秒杀时段详情
|
||||||
getSeckillConfig: async (id: number) => {
|
getSeckillConfig: async (id: number) => {
|
||||||
return await request.get({ url: `/promotion/seckill-config/get?id=` + id })
|
return await request.get({ url: `/promotion/seckill-config/get?id=` + id })
|
||||||
|
@ -62,7 +62,14 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<div class="h-3 flex justify-between">
|
<div class="h-3 flex justify-between">
|
||||||
<span>{{ t('workplace.project') }}</span>
|
<span>{{ t('workplace.project') }}</span>
|
||||||
<el-link type="primary" :underline="false">{{ t('action.more') }}</el-link>
|
<el-link
|
||||||
|
type="primary"
|
||||||
|
:underline="false"
|
||||||
|
href="https://github.com/yudaocode"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
{{ t('action.more') }}
|
||||||
|
</el-link>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-skeleton :loading="loading" animated>
|
<el-skeleton :loading="loading" animated>
|
||||||
@ -76,13 +83,13 @@
|
|||||||
:sm="24"
|
:sm="24"
|
||||||
:xs="24"
|
:xs="24"
|
||||||
>
|
>
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover" class="mr-5px mt-5px">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<Icon :icon="item.icon" :size="25" class="mr-8px" />
|
<Icon :icon="item.icon" :size="25" class="mr-8px" />
|
||||||
<span class="text-16px">{{ item.name }}</span>
|
<span class="text-16px">{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-16px text-14px text-gray-400">{{ t(item.message) }}</div>
|
<div class="mt-12px text-9px text-gray-400">{{ t(item.message) }}</div>
|
||||||
<div class="mt-16px flex justify-between text-12px text-gray-400">
|
<div class="mt-12px flex justify-between text-12px text-gray-400">
|
||||||
<span>{{ item.personal }}</span>
|
<span>{{ item.personal }}</span>
|
||||||
<span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
<span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@ -204,45 +211,45 @@ let projects = reactive<Project[]>([])
|
|||||||
const getProject = async () => {
|
const getProject = async () => {
|
||||||
const data = [
|
const data = [
|
||||||
{
|
{
|
||||||
name: 'Github',
|
name: 'ruoyi-vue-pro',
|
||||||
icon: 'akar-icons:github-fill',
|
icon: 'akar-icons:github-fill',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/YunaiV/ruoyi-vue-pro',
|
||||||
personal: 'Archer',
|
personal: 'Spring Boot 单体架构',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Vue',
|
name: 'yudao-ui-admin-vue3',
|
||||||
icon: 'logos:vue',
|
icon: 'logos:vue',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/yudaocode/yudao-ui-admin-vue3',
|
||||||
personal: 'Archer',
|
personal: 'Vue3 + element-plus',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Angular',
|
name: 'yudao-ui-admin-vben',
|
||||||
icon: 'logos:angular-icon',
|
icon: 'logos:vue',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/yudaocode/yudao-ui-admin-vben',
|
||||||
personal: 'Archer',
|
personal: 'Vue3 + vben(antd)',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'React',
|
name: 'yudao-cloud',
|
||||||
icon: 'logos:react',
|
icon: 'akar-icons:github',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/YunaiV/yudao-cloud',
|
||||||
personal: 'Archer',
|
personal: 'Spring Cloud 微服务架构',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Webpack',
|
name: 'yudao-ui-mall-uniapp',
|
||||||
icon: 'logos:webpack',
|
icon: 'logos:vue',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/yudaocode/yudao-ui-admin-uniapp',
|
||||||
personal: 'Archer',
|
personal: 'Vue3 + uniapp',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Vite',
|
name: 'yudao-ui-admin-vue2',
|
||||||
icon: 'vscode-icons:file-type-vite',
|
icon: 'logos:vue',
|
||||||
message: 'workplace.introduction',
|
message: 'https://github.com/yudaocode/yudao-ui-admin-vue2',
|
||||||
personal: 'Archer',
|
personal: 'Vue2 + element-ui',
|
||||||
time: new Date()
|
time: new Date()
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -254,27 +261,27 @@ let notice = reactive<Notice[]>([])
|
|||||||
const getNotice = async () => {
|
const getNotice = async () => {
|
||||||
const data = [
|
const data = [
|
||||||
{
|
{
|
||||||
title: '系统升级版本',
|
title: '系统支持 JDK 8/17/21,Vue 2/3',
|
||||||
type: '通知',
|
type: '通知',
|
||||||
keys: ['通知', '升级'],
|
keys: ['通知', '8', '17', '21', '2', '3'],
|
||||||
date: new Date()
|
date: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '系统凌晨维护',
|
title: '后端提供 Spring Boot 2.7/3.2 + Cloud 双架构',
|
||||||
type: '公告',
|
type: '公告',
|
||||||
keys: ['公告', '维护'],
|
keys: ['公告', 'Boot', 'Cloud'],
|
||||||
date: new Date()
|
date: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '系统升级版本',
|
title: '全部开源,个人与企业可 100% 直接使用,无需授权',
|
||||||
type: '通知',
|
type: '通知',
|
||||||
keys: ['通知', '升级'],
|
keys: ['通知', '无需授权'],
|
||||||
date: new Date()
|
date: new Date()
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '系统凌晨维护',
|
title: '国内使用最广泛的快速开发平台,超 300+ 人贡献',
|
||||||
type: '公告',
|
type: '公告',
|
||||||
keys: ['公告', '维护'],
|
keys: ['公告', '最广泛'],
|
||||||
date: new Date()
|
date: new Date()
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -157,7 +157,7 @@
|
|||||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
import * as SeckillActivityApi from '@/api/mall/promotion/seckill/seckillActivity'
|
import * as SeckillActivityApi from '@/api/mall/promotion/seckill/seckillActivity'
|
||||||
import * as SeckillConfigApi from '@/api/mall/promotion/seckill/seckillConfig'
|
import { SeckillConfigApi } from '@/api/mall/promotion/seckill/seckillConfig'
|
||||||
import SeckillActivityForm from './SeckillActivityForm.vue'
|
import SeckillActivityForm from './SeckillActivityForm.vue'
|
||||||
import { formatDate } from '@/utils/formatTime'
|
import { formatDate } from '@/utils/formatTime'
|
||||||
import { fenToYuanFormat } from '@/utils/formatter'
|
import { fenToYuanFormat } from '@/utils/formatter'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
|
import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
|
||||||
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
|
import { dateFormatter2 } from '@/utils/formatTime'
|
||||||
import { getSimpleSeckillConfigList } from '@/api/mall/promotion/seckill/seckillConfig'
|
import { SeckillConfigApi } from '@/api/mall/promotion/seckill/seckillConfig'
|
||||||
|
|
||||||
// 表单校验
|
// 表单校验
|
||||||
export const rules = reactive({
|
export const rules = reactive({
|
||||||
@ -88,7 +88,7 @@ const crudSchemas = reactive<CrudSchema[]>([
|
|||||||
valueField: 'id'
|
valueField: 'id'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
api: getSimpleSeckillConfigList
|
api: SeckillConfigApi.getSimpleSeckillConfigList
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
width: 300
|
width: 300
|
||||||
|
@ -26,9 +26,9 @@
|
|||||||
icon="ep:view"
|
icon="ep:view"
|
||||||
icon-color="bg-blue-100"
|
icon-color="bg-blue-100"
|
||||||
icon-bg-color="text-blue-500"
|
icon-bg-color="text-blue-500"
|
||||||
prefix="¥"
|
prefix=""
|
||||||
:decimals="2"
|
:decimals="0"
|
||||||
:value="fenToYuan(trendSummary?.value?.browseCount || 0)"
|
:value="trendSummary?.value?.browseCount || 0"
|
||||||
:percent="
|
:percent="
|
||||||
calculateRelativeRate(
|
calculateRelativeRate(
|
||||||
trendSummary?.value?.browseCount,
|
trendSummary?.value?.browseCount,
|
||||||
@ -44,9 +44,9 @@
|
|||||||
icon="ep:user-filled"
|
icon="ep:user-filled"
|
||||||
icon-color="bg-purple-100"
|
icon-color="bg-purple-100"
|
||||||
icon-bg-color="text-purple-500"
|
icon-bg-color="text-purple-500"
|
||||||
prefix="¥"
|
prefix=""
|
||||||
:decimals="2"
|
:decimals="0"
|
||||||
:value="fenToYuan(trendSummary?.value?.browseUserCount || 0)"
|
:value="trendSummary?.value?.browseUserCount || 0"
|
||||||
:percent="
|
:percent="
|
||||||
calculateRelativeRate(
|
calculateRelativeRate(
|
||||||
trendSummary?.value?.browseUserCount,
|
trendSummary?.value?.browseUserCount,
|
||||||
@ -62,9 +62,9 @@
|
|||||||
icon="fa-solid:money-check-alt"
|
icon="fa-solid:money-check-alt"
|
||||||
icon-color="bg-yellow-100"
|
icon-color="bg-yellow-100"
|
||||||
icon-bg-color="text-yellow-500"
|
icon-bg-color="text-yellow-500"
|
||||||
prefix="¥"
|
prefix=""
|
||||||
:decimals="2"
|
:decimals="0"
|
||||||
:value="fenToYuan(trendSummary?.value?.orderPayCount || 0)"
|
:value="trendSummary?.value?.orderPayCount || 0"
|
||||||
:percent="
|
:percent="
|
||||||
calculateRelativeRate(
|
calculateRelativeRate(
|
||||||
trendSummary?.value?.orderPayCount,
|
trendSummary?.value?.orderPayCount,
|
||||||
@ -98,9 +98,9 @@
|
|||||||
icon="fa-solid:wallet"
|
icon="fa-solid:wallet"
|
||||||
icon-color="bg-cyan-100"
|
icon-color="bg-cyan-100"
|
||||||
icon-bg-color="text-cyan-500"
|
icon-bg-color="text-cyan-500"
|
||||||
prefix="¥"
|
prefix=""
|
||||||
:decimals="2"
|
:decimals="0"
|
||||||
:value="fenToYuan(trendSummary?.value?.afterSaleCount || 0)"
|
:value="trendSummary?.value?.afterSaleCount || 0"
|
||||||
:percent="
|
:percent="
|
||||||
calculateRelativeRate(
|
calculateRelativeRate(
|
||||||
trendSummary?.value?.afterSaleCount,
|
trendSummary?.value?.afterSaleCount,
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
|
<doc-alert title="大屏设计器" url="https://doc.iocoder.cn/report/screen/" />
|
||||||
|
|
||||||
<IFrame :src="src" />
|
<IFrame :src="src" />
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
|
<doc-alert title="报表设计器" url="https://doc.iocoder.cn/report/" />
|
||||||
|
|
||||||
<IFrame :src="src" />
|
<IFrame :src="src" />
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user