review code.

This commit is contained in:
lijiahang
2023-08-03 14:21:27 +08:00
parent 598e33b0b5
commit d86b301628
22 changed files with 83 additions and 47 deletions

0
docker/.gitkeep Normal file
View File

View File

@@ -26,6 +26,6 @@ public class Const implements com.orion.lang.constant.Const {
public static final Long ROOT_MENU_ID = 0L; public static final Long ROOT_MENU_ID = 0L;
public static final Integer DEFAULT_SORT = 0; public static final Integer DEFAULT_SORT = 10;
} }

View File

@@ -1,14 +1,12 @@
/**
* If you use the template method for development, you can use the unplugin-vue-components plugin to enable on-demand loading support.
* 按需引入
* https://github.com/antfu/unplugin-vue-components
* https://arco.design/vue/docs/start
* Although the Pro project is full of imported components, this plugin will be used by default.
* 虽然Pro项目中是全量引入组件但此插件会默认使用。
*/
import Components from 'unplugin-vue-components/vite'; import Components from 'unplugin-vue-components/vite';
import { ArcoResolver } from 'unplugin-vue-components/resolvers'; import { ArcoResolver } from 'unplugin-vue-components/resolvers';
/**
* 按需引入
* https://github.com/antfu/unplugin-vue-components
* https://arco.design/vue/docs/start
* 虽然Pro项目中是全量引入组件但此插件会默认使用。
*/
export default function configArcoResolverPlugin() { export default function configArcoResolverPlugin() {
const arcoResolverPlugin = Components({ const arcoResolverPlugin = Components({
dirs: [], // Avoid parsing src/components. 避免解析到src/components dirs: [], // Avoid parsing src/components. 避免解析到src/components

View File

@@ -1,12 +1,10 @@
import { vitePluginForArco } from '@arco-plugins/vite-vue';
/** /**
* Theme import
* 样式按需引入 * 样式按需引入
* https://github.com/arco-design/arco-plugins/blob/main/packages/plugin-vite-vue/README.md * https://github.com/arco-design/arco-plugins/blob/main/packages/plugin-vite-vue/README.md
* https://arco.design/vue/docs/start * https://arco.design/vue/docs/start
*/ */
import { vitePluginForArco } from '@arco-plugins/vite-vue';
export default function configArcoStyleImportPlugin() { export default function configArcoStyleImportPlugin() {
const arcoResolverPlugin = vitePluginForArco({}); return vitePluginForArco({});
return arcoResolverPlugin;
} }

View File

@@ -1,11 +1,10 @@
/**
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
* gzip压缩
* https://github.com/anncwb/vite-plugin-compression
*/
import type { Plugin } from 'vite'; import type { Plugin } from 'vite';
import compressPlugin from 'vite-plugin-compression'; import compressPlugin from 'vite-plugin-compression';
/**
* gzip压缩
* https://github.com/anncwb/vite-plugin-compression
*/
export default function configCompressPlugin( export default function configCompressPlugin(
compress: 'gzip' | 'brotli', compress: 'gzip' | 'brotli',
deleteOriginFile = false deleteOriginFile = false

View File

@@ -1,10 +1,9 @@
import viteImagemin from 'vite-plugin-imagemin';
/** /**
* Image resource files used to compress the output of the production environment
* 图片压缩 * 图片压缩
* https://github.com/anncwb/vite-plugin-imagemin * https://github.com/anncwb/vite-plugin-imagemin
*/ */
import viteImagemin from 'vite-plugin-imagemin';
export default function configImageminPlugin() { export default function configImageminPlugin() {
const imageminPlugin = viteImagemin({ const imageminPlugin = viteImagemin({
gifsicle: { gifsicle: {

View File

@@ -1,10 +1,9 @@
/**
* Generation packaging analysis
* 生成打包分析
*/
import visualizer from 'rollup-plugin-visualizer'; import visualizer from 'rollup-plugin-visualizer';
import { isReportMode } from '../utils'; import { isReportMode } from '../utils';
/**
* 生成打包分析
*/
export default function configVisualizerPlugin() { export default function configVisualizerPlugin() {
if (isReportMode()) { if (isReportMode()) {
return visualizer({ return visualizer({

View File

@@ -1,5 +1,4 @@
/** /**
* Whether to generate package preview
* 是否生成打包报告 * 是否生成打包报告
*/ */
export default {}; export default {};

View File

@@ -0,0 +1,5 @@
.layout-container {
background-color: var(--color-fill-2);
padding: 16px 16px 0 16px;
display: flex;
}

View File

@@ -1,5 +1,11 @@
<template> <template>
<a-layout-footer class="footer">Orion Ops Pro</a-layout-footer> <a-layout-footer class="footer">
<div class="footer-text">
项目地址 <a target="_blank" href="https://github.com/lijiahangmax/orion-ops-pro">github</a> - <a
target="_blank" href="https://gitee.com/lijiahangmax/orion-ops-pro">gitee</a>
<a class="license" target="_blank" href="https://github.com/lijiahangmax/orion-ops-pro/blob/main/LICENSE">License - Apache 2.0</a>
</div>
</a-layout-footer>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@@ -13,5 +19,18 @@
height: 40px; height: 40px;
color: var(--color-text-2); color: var(--color-text-2);
text-align: center; text-align: center;
&-text {
text-wrap: none;
a {
text-decoration: none;
}
.license {
display: inline-block;
margin-left: 16px;
}
}
} }
</style> </style>

View File

@@ -179,5 +179,9 @@
width: 28px; width: 28px;
display: inline-block; display: inline-block;
} }
.arco-menu-title {
user-select: none;
}
} }
</style> </style>

View File

@@ -1,6 +1,5 @@
import { computed } from 'vue'; import { computed } from 'vue';
import { RouteRecordRaw, RouteRecordNormalized } from 'vue-router'; import { RouteRecordRaw, RouteRecordNormalized } from 'vue-router';
import usePermission from '@/hooks/permission';
import { useAppStore } from '@/store'; import { useAppStore } from '@/store';
import { cloneDeep } from 'lodash'; import { cloneDeep } from 'lodash';

View File

@@ -6,7 +6,7 @@
<span> {{ item.title }}{{ formatUnreadLength(item.key) }} </span> <span> {{ item.title }}{{ formatUnreadLength(item.key) }} </span>
</template> </template>
<a-result v-if="!renderList.length" status="404"> <a-result v-if="!renderList.length" status="404">
<template #subtitle> {{ $t('messageBox.noContent') }} </template> <template #subtitle> {{ $t('messageBox.noContent') }}</template>
</a-result> </a-result>
<List <List
:render-list="renderList" :render-list="renderList"
@@ -31,7 +31,7 @@
setMessageStatus, setMessageStatus,
MessageRecord, MessageRecord,
MessageListType, MessageListType,
} from '@/api/message'; } from '@/api/message/message';
import useLoading from '@/hooks/loading'; import useLoading from '@/hooks/loading';
import List from './list.vue'; import List from './list.vue';
@@ -40,6 +40,7 @@
title: string; title: string;
avatar?: string; avatar?: string;
} }
const { loading, setLoading } = useLoading(true); const { loading, setLoading } = useLoading(true);
const messageType = ref('message'); const messageType = ref('message');
const { t } = useI18n(); const { t } = useI18n();
@@ -65,6 +66,7 @@
title: t('messageBox.tab.title.todo'), title: t('messageBox.tab.title.todo'),
}, },
]; ];
async function fetchSourceData() { async function fetchSourceData() {
setLoading(true); setLoading(true);
try { try {
@@ -76,11 +78,13 @@
setLoading(false); setLoading(false);
} }
} }
async function readMessage(data: MessageListType) { async function readMessage(data: MessageListType) {
const ids = data.map((item) => item.id); const ids = data.map((item) => item.id);
await setMessageStatus({ ids }); await setMessageStatus({ ids });
fetchSourceData(); fetchSourceData();
} }
const renderList = computed(() => { const renderList = computed(() => {
return messageData.messageList.filter( return messageData.messageList.filter(
(item) => messageType.value === item.type (item) => messageType.value === item.type
@@ -116,12 +120,15 @@
:deep(.arco-list-item-meta) { :deep(.arco-list-item-meta) {
align-items: flex-start; align-items: flex-start;
} }
:deep(.arco-tabs-nav) { :deep(.arco-tabs-nav) {
padding: 14px 0 12px 16px; padding: 14px 0 12px 16px;
border-bottom: 1px solid var(--color-neutral-3); border-bottom: 1px solid var(--color-neutral-3);
} }
:deep(.arco-tabs-content) { :deep(.arco-tabs-content) {
padding-top: 0; padding-top: 0;
.arco-result-subtitle { .arco-result-subtitle {
color: rgb(var(--gray-6)); color: rgb(var(--gray-6));
} }

View File

@@ -36,7 +36,8 @@
:ellipsis="{ :ellipsis="{
rows: 1, rows: 1,
}" }"
>{{ item.content }}</a-typography-paragraph >{{ item.content }}
</a-typography-paragraph
> >
<a-typography-text <a-typography-text
v-if="item.type === 'message'" v-if="item.type === 'message'"
@@ -72,7 +73,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { PropType } from 'vue'; import { PropType } from 'vue';
import { MessageRecord, MessageListType } from '@/api/message'; import { MessageRecord, MessageListType } from '@/api/message/message';
const props = defineProps({ const props = defineProps({
renderList: { renderList: {
@@ -103,45 +104,57 @@
min-height: 86px; min-height: 86px;
border-bottom: 1px solid rgb(var(--gray-3)); border-bottom: 1px solid rgb(var(--gray-3));
} }
.arco-list-item-extra { .arco-list-item-extra {
position: absolute; position: absolute;
right: 20px; right: 20px;
} }
.arco-list-item-meta-content { .arco-list-item-meta-content {
flex: 1; flex: 1;
} }
.item-wrap { .item-wrap {
cursor: pointer; cursor: pointer;
} }
.time-text { .time-text {
font-size: 12px; font-size: 12px;
color: rgb(var(--gray-6)); color: rgb(var(--gray-6));
} }
.arco-empty { .arco-empty {
display: none; display: none;
} }
.arco-list-footer { .arco-list-footer {
padding: 0; padding: 0;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
border-top: none; border-top: none;
.arco-space-item { .arco-space-item {
width: 100%; width: 100%;
border-right: 1px solid rgb(var(--gray-3)); border-right: 1px solid rgb(var(--gray-3));
&:last-child { &:last-child {
border-right: none; border-right: none;
} }
} }
.add-border-top { .add-border-top {
border-top: 1px solid rgb(var(--gray-3)); border-top: 1px solid rgb(var(--gray-3));
} }
} }
.footer-wrap { .footer-wrap {
text-align: center; text-align: center;
} }
.arco-typography { .arco-typography {
margin-bottom: 0; margin-bottom: 0;
} }
.add-border { .add-border {
border-top: 1px solid rgb(var(--gray-3)); border-top: 1px solid rgb(var(--gray-3));
} }

View File

@@ -95,6 +95,10 @@
display: none; display: none;
} }
} }
.tag-link {
user-select: none;
}
} }
} }
} }

View File

@@ -8,10 +8,9 @@ import i18n from './locale';
import directive from './directive'; import directive from './directive';
import './mock'; import './mock';
import App from './App.vue'; import App from './App.vue';
// Styles are imported via arco-plugin. See config/plugin/arcoStyleImport.ts in the directory for details // 样式通过 arco-plugin 插件导入 详见目录文件 config/plugin/arcoStyleImport.ts
// 样式通过 arco-plugin 插件导入。详见目录文件 config/plugin/arcoStyleImport.ts
// https://arco.design/docs/designlab/use-theme-package
import '@/assets/style/global.less'; import '@/assets/style/global.less';
import '@/assets/style/layout.less';
import '@/api/interceptor'; import '@/api/interceptor';
const app = createApp(App); const app = createApp(App);

View File

@@ -1,4 +1,4 @@
import { isEmptyStr } from '@/utils/index'; import { isEmptyStr } from './index';
/** /**
* 获取 base64 实际数据 * 获取 base64 实际数据

View File

@@ -1,5 +1,5 @@
<template> <template>
<div class="container"> <div class="layout-container">
<div class="left-side"> <div class="left-side">
<div class="panel"> <div class="panel">
<Banner /> <Banner />
@@ -61,12 +61,6 @@
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.container {
background-color: var(--color-fill-2);
padding: 16px 20px;
padding-bottom: 0;
display: flex;
}
.left-side { .left-side {
flex: 1; flex: 1;
@@ -140,7 +134,7 @@
<style lang="less" scoped> <style lang="less" scoped>
// responsive // responsive
.mobile { .mobile {
.container { .layout-container {
display: block; display: block;
} }

View File

@@ -57,7 +57,7 @@
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useUserStore } from '@/store'; import { useUserStore } from '@/store';
import useLoading from '@/hooks/loading'; import useLoading from '@/hooks/loading';
import type { LoginData } from '@/api/user'; import type { LoginRequest } from '@/api/user/auth';
const router = useRouter(); const router = useRouter();
const { t } = useI18n(); const { t } = useI18n();
@@ -82,7 +82,7 @@
setLoading(true); setLoading(true);
try { try {
// 执行登陆 // 执行登陆
await userStore.login(values as LoginData); await userStore.login(values as LoginRequest);
// 跳转路由 // 跳转路由
const { redirect, ...othersQuery } = router.currentRoute.value.query; const { redirect, ...othersQuery } = router.currentRoute.value.query;
router.push({ router.push({

0
sql/常用sql.txt Normal file
View File