Merge branch 'dev' into future/flowable
This commit is contained in:
commit
8f53dfc98d
@ -11,7 +11,7 @@ dist
|
||||
.husky
|
||||
.local
|
||||
/bin
|
||||
.eslintrc.js
|
||||
.eslintrc.cjs
|
||||
prettier.config.js
|
||||
src/assets
|
||||
tailwind.config.js
|
||||
|
@ -1,46 +0,0 @@
|
||||
/**
|
||||
* 代码格式化配置
|
||||
*/
|
||||
module.exports = {
|
||||
// 一行最多多少个字符
|
||||
printWidth: 150,
|
||||
// 指定每个缩进级别的空格数
|
||||
tabWidth: 2,
|
||||
// 使用制表符而不是空格缩进行
|
||||
useTabs: false,
|
||||
// 在语句末尾是否需要分号
|
||||
semi: true,
|
||||
// 是否使用单引号
|
||||
singleQuote: true,
|
||||
// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
|
||||
quoteProps: 'as-needed',
|
||||
// 在JSX中使用单引号而不是双引号
|
||||
jsxSingleQuote: false,
|
||||
// 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
|
||||
trailingComma: 'none',
|
||||
// 在对象文字中的括号之间打印空格
|
||||
bracketSpacing: true,
|
||||
// jsx 标签的反尖括号需要换行
|
||||
jsxBracketSameLine: false,
|
||||
embeddedLanguageFormatting: 'off',
|
||||
// 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
|
||||
arrowParens: 'always',
|
||||
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
|
||||
rangeStart: 0,
|
||||
rangeEnd: Infinity,
|
||||
// 指定要使用的解析器,不需要写文件开头的 @prettier
|
||||
requirePragma: false,
|
||||
// 不需要自动在文件开头插入 @prettier
|
||||
insertPragma: false,
|
||||
// 使用默认的折行标准 always\never\preserve
|
||||
proseWrap: 'preserve',
|
||||
// 指定HTML文件的全局空格敏感度 css\strict\ignore
|
||||
htmlWhitespaceSensitivity: 'css',
|
||||
// Vue文件脚本和样式标签缩进
|
||||
vueIndentScriptAndStyle: false,
|
||||
// 在 windows 操作系统中换行符通常是回车 (CR) 加换行分隔符 (LF),也就是回车换行(CRLF),
|
||||
// 然而在 Linux 和 Unix 中只使用简单的换行分隔符 (LF)。
|
||||
// 对应的控制字符为 "\n" (LF) 和 "\r\n"(CRLF)。auto意为保持现有的行尾
|
||||
// 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
|
||||
endOfLine: 'auto'
|
||||
};
|
50
package.json
50
package.json
@ -4,6 +4,7 @@
|
||||
"description": "RuoYi-Vue-Plus多租户管理系统",
|
||||
"author": "LionLi",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite serve --mode development",
|
||||
"build:prod": "vite build --mode production",
|
||||
@ -22,13 +23,13 @@
|
||||
"@vueup/vue-quill": "1.2.0",
|
||||
"@vueuse/core": "10.7.0",
|
||||
"animate.css": "4.1.1",
|
||||
"await-to-js": "^3.0.0",
|
||||
"axios": "^1.6.0",
|
||||
"crypto-js": "^4.2.0",
|
||||
"await-to-js": "3.0.0",
|
||||
"axios": "1.6.0",
|
||||
"crypto-js": "4.2.0",
|
||||
"echarts": "5.4.3",
|
||||
"element-plus": "2.4.4",
|
||||
"file-saver": "2.0.5",
|
||||
"fuse.js": "6.6.2",
|
||||
"fuse.js": "7.0.0",
|
||||
"js-cookie": "3.0.5",
|
||||
"jsencrypt": "3.3.2",
|
||||
"nprogress": "0.2.0",
|
||||
@ -37,29 +38,28 @@
|
||||
"pinia": "2.1.7",
|
||||
"screenfull": "6.0.0",
|
||||
"vform3-builds": "3.0.8",
|
||||
"vue": "3.3.13",
|
||||
"vue": "3.4.5",
|
||||
"vue-cropper": "1.1.1",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-i18n": "9.8.0",
|
||||
"vue-router": "4.2.5",
|
||||
"vue-types": "5.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iconify/json": "^2.2.157",
|
||||
"@intlify/unplugin-vue-i18n": "1.6.0",
|
||||
"@types/crypto-js": "^4.2.0",
|
||||
"@iconify/json": "2.2.167",
|
||||
"@intlify/unplugin-vue-i18n": "2.0.0",
|
||||
"@types/crypto-js": "4.2.0",
|
||||
"@types/file-saver": "2.0.5",
|
||||
"@types/js-cookie": "3.0.5",
|
||||
"@types/node": "18.14.2",
|
||||
"@types/nprogress": "0.2.0",
|
||||
"@types/path-browserify": "^1.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "6.14.0",
|
||||
"@typescript-eslint/parser": "6.14.0",
|
||||
"@unocss/preset-attributify": "^0.58.0",
|
||||
"@unocss/preset-icons": "^0.58.0",
|
||||
"@unocss/preset-uno": "^0.58.0",
|
||||
"@vue/compiler-sfc": "3.3.11",
|
||||
"@vue/runtime-core": "3.3.11",
|
||||
"@vitejs/plugin-vue": "4.5.2",
|
||||
"@types/path-browserify": "1.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "6.17.0",
|
||||
"@typescript-eslint/parser": "6.17.0",
|
||||
"@unocss/preset-attributify": "0.58.3",
|
||||
"@unocss/preset-icons": "0.58.3",
|
||||
"@unocss/preset-uno": "0.58.3",
|
||||
"@vue/compiler-sfc": "3.4.5",
|
||||
"@vitejs/plugin-vue": "5.0.2",
|
||||
"autoprefixer": "10.4.14",
|
||||
"eslint": "8.55.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
@ -69,22 +69,22 @@
|
||||
"eslint-plugin-node": "11.1.0",
|
||||
"eslint-plugin-import": "2.29.0",
|
||||
"eslint-plugin-vue": "9.19.2",
|
||||
"fast-glob": "^3.2.11",
|
||||
"husky": "7.0.4",
|
||||
"postcss": "^8.4.21",
|
||||
"fast-glob": "3.3.2",
|
||||
"husky": "8.0.3",
|
||||
"postcss": "8.4.33",
|
||||
"prettier": "3.1.1",
|
||||
"sass": "1.69.5",
|
||||
"typescript": "5.3.3",
|
||||
"unocss": "^0.58.0",
|
||||
"unocss": "0.58.0",
|
||||
"unplugin-auto-import": "0.17.2",
|
||||
"unplugin-icons": "0.18.1",
|
||||
"unplugin-vue-components": "0.26.0",
|
||||
"unplugin-vue-setup-extend-plus": "1.0.0",
|
||||
"vite-plugin-compression": "0.5.1",
|
||||
"vite-plugin-svg-icons": "2.0.1",
|
||||
"vitest": "^0.29.7",
|
||||
"vitest": "1.1.3",
|
||||
"vue-eslint-parser": "9.3.2",
|
||||
"vue-tsc": "0.35.0",
|
||||
"vite": "5.0.5"
|
||||
"vue-tsc": "1.8.27",
|
||||
"vite": "5.0.10"
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-config-provider :locale="appStore.locale" :size="size">
|
||||
<el-config-provider :locale="appStore.locale" :size="appStore.size">
|
||||
<router-view />
|
||||
</el-config-provider>
|
||||
</template>
|
||||
@ -10,7 +10,6 @@ import { handleThemeStyle } from '@/utils/theme';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
|
||||
const appStore = useAppStore();
|
||||
const size = computed(() => appStore.size);
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => {
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { DeptVO } from './../dept/types';
|
||||
import { RoleVO } from '@/api/system/role/types';
|
||||
import { PostVO } from '@/api/system/post/types';
|
||||
|
||||
@ -40,7 +39,7 @@ export interface UserVO extends BaseEntity {
|
||||
loginIp: string;
|
||||
loginDate: string;
|
||||
remark: string;
|
||||
dept: DeptVO;
|
||||
deptName: string;
|
||||
roles: RoleVO[];
|
||||
roleIds: any;
|
||||
postIds: any;
|
||||
|
29
src/assets/icons/svg/topiam.svg
Normal file
29
src/assets/icons/svg/topiam.svg
Normal file
@ -0,0 +1,29 @@
|
||||
<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_446_540)">
|
||||
<path d="M113.069 160.072C103.717 170.743 93.0453 180.216 81.5345 188.609C61.5105 174.46 44.3642 156.595 30.9349 135.971C23.5009 124.46 17.2659 112.11 12.4697 99.0407C9.592 91.3668 7.19392 83.3332 5.27545 75.2996C2.03803 61.3907 0.359375 47.0022 0.359375 32.1341C0.359375 30.6953 0.359375 29.1365 0.359375 27.6977C6.35459 23.9806 12.7095 20.7432 19.0644 17.7456C20.7431 32.1341 24.1004 46.043 28.8966 59.3524C31.6544 66.9063 34.7719 74.3404 38.4889 81.4147C44.604 93.5251 52.0381 104.796 60.4314 115.228C75.1796 133.093 92.9254 148.321 113.069 160.072Z" fill="url(#paint0_linear_446_540)"/>
|
||||
<path d="M196.643 67.6256C195.084 76.3786 192.926 84.8918 190.168 93.1652C178.897 91.1269 167.266 90.0477 155.276 90.0477C154.197 90.0477 153.118 90.0477 152.039 90.0477C126.859 90.4074 102.878 95.6832 80.9352 105.036C72.302 94.8439 64.868 83.453 58.9927 71.3427C81.6546 61.8702 106.475 56.7144 132.614 56.7144C141.487 56.7144 150.24 57.3139 158.753 58.5129C171.823 60.1916 184.533 63.3091 196.643 67.6256Z" fill="url(#paint1_linear_446_540)"/>
|
||||
<path d="M199.64 34.0528C199.64 39.2087 199.401 44.3646 199.041 49.4005C186.691 44.1247 173.621 40.048 160.072 37.53C148.321 35.2518 136.211 34.0528 123.981 34.0528C97.7218 34.0528 72.6619 39.3286 49.88 48.9209C42.6858 51.9185 35.7313 55.3958 29.0167 59.2327C24.2205 46.0432 20.8632 32.0144 19.1846 17.6259C26.6186 14.1487 34.2925 11.271 42.2062 8.75301C60.3117 3.11751 79.4964 0 99.4005 0C119.904 0 139.568 3.23741 158.153 9.11272C172.782 13.789 186.691 20.2638 199.52 28.1775C199.64 30.2159 199.64 32.1343 199.64 34.0528Z" fill="url(#paint2_linear_446_540)"/>
|
||||
<path d="M190.168 93.2855C182.494 116.547 170.384 137.65 154.796 155.875C149.76 161.751 144.364 167.386 138.609 172.542C126.858 183.214 113.789 192.446 99.7601 200C93.4052 196.523 87.41 192.686 81.5347 188.609C93.0455 180.336 103.717 170.744 113.069 160.072C117.866 154.676 122.302 148.921 126.499 143.046C137.65 127.098 146.403 109.233 152.158 90.1679C153.237 90.1679 154.316 90.1679 155.396 90.1679C167.146 90.048 178.777 91.1272 190.168 93.2855Z" fill="url(#paint3_linear_446_540)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_446_540" x1="15.8569" y1="27.5782" x2="86.4712" y2="182.06" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#57A4F7"/>
|
||||
<stop offset="1" stop-color="#2158F9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_446_540" x1="58.9501" y1="80.8427" x2="196.648" y2="80.8427" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#2158F9"/>
|
||||
<stop offset="1" stop-color="#33E1E5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_446_540" x1="19.1564" y1="29.6353" x2="199.647" y2="29.6353" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#255DF9"/>
|
||||
<stop offset="1" stop-color="#7C35BA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_446_540" x1="95.3808" y1="192.567" x2="174.674" y2="97.4815" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#54A0F7"/>
|
||||
<stop offset="1" stop-color="#2158F9"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_446_540">
|
||||
<rect width="200" height="200" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
@ -2,7 +2,6 @@
|
||||
<div>
|
||||
<el-upload
|
||||
v-if="type === 'url'"
|
||||
ref="uploadRef"
|
||||
:action="upload.url"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-success="handleUploadSuccess"
|
||||
@ -12,17 +11,18 @@
|
||||
:show-file-list="false"
|
||||
:headers="upload.headers"
|
||||
>
|
||||
<i ref="uploadRef"></i>
|
||||
</el-upload>
|
||||
<div class="editor">
|
||||
<quill-editor
|
||||
ref="quillEditorRef"
|
||||
v-model:content="content"
|
||||
content-type="html"
|
||||
:options="options"
|
||||
:style="styles"
|
||||
@text-change="(e: any) => $emit('update:modelValue', content)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="editor">
|
||||
<quill-editor
|
||||
ref="quillEditorRef"
|
||||
v-model:content="content"
|
||||
content-type="html"
|
||||
:options="options"
|
||||
:style="styles"
|
||||
@text-change="(e: any) => $emit('update:modelValue', content)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -57,6 +57,7 @@ const upload = reactive<UploadOption>({
|
||||
url: import.meta.env.VITE_APP_BASE_API + '/resource/oss/upload'
|
||||
});
|
||||
const quillEditorRef = ref();
|
||||
const uploadRef = ref<HTMLDivElement>();
|
||||
|
||||
const options = ref<any>({
|
||||
theme: 'snow',
|
||||
@ -78,10 +79,10 @@ const options = ref<any>({
|
||||
['link', 'image', 'video'] // 链接、图片、视频
|
||||
],
|
||||
handlers: {
|
||||
image: function (value: any) {
|
||||
image: (value: boolean) => {
|
||||
if (value) {
|
||||
// 调用element图片上传
|
||||
(document.querySelector('.editor-img-uploader>.el-upload') as HTMLDivElement)?.click();
|
||||
uploadRef.value.click();
|
||||
} else {
|
||||
Quill.format('image', true);
|
||||
}
|
||||
@ -107,7 +108,7 @@ const styles = computed(() => {
|
||||
const content = ref('');
|
||||
watch(
|
||||
() => props.modelValue,
|
||||
(v) => {
|
||||
(v: string) => {
|
||||
if (v !== content.value) {
|
||||
content.value = v === undefined ? '<p></p>' : v;
|
||||
}
|
||||
@ -129,7 +130,7 @@ const handleUploadSuccess = (res: any) => {
|
||||
quill.setSelection(length + 1);
|
||||
proxy?.$modal.closeLoading();
|
||||
} else {
|
||||
proxy?.$modal.loading(res.msg);
|
||||
proxy?.$modal.msgError('图片插入失败');
|
||||
proxy?.$modal.closeLoading();
|
||||
}
|
||||
};
|
||||
@ -157,7 +158,6 @@ const handleBeforeUpload = (file: any) => {
|
||||
|
||||
// 图片失败拦截
|
||||
const handleUploadError = (err: any) => {
|
||||
console.error(err);
|
||||
proxy?.$modal.msgError('上传文件失败');
|
||||
};
|
||||
</script>
|
||||
|
@ -35,7 +35,7 @@
|
||||
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
|
||||
</el-link>
|
||||
<div class="ele-upload-list__item-content-action">
|
||||
<el-link :underline="false" type="danger" @click="handleDelete(index)">删除</el-link>
|
||||
<el-button type="danger" link @click="handleDelete(index)">删除</el-button>
|
||||
</div>
|
||||
</li>
|
||||
</transition-group>
|
||||
@ -43,8 +43,8 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { listByIds, delOss } from '@/api/system/oss';
|
||||
import { propTypes } from '@/utils/propTypes';
|
||||
import { delOss, listByIds } from '@/api/system/oss';
|
||||
import { globalHeaders } from '@/utils/request';
|
||||
|
||||
const props = defineProps({
|
||||
@ -88,12 +88,11 @@ watch(
|
||||
} else {
|
||||
const res = await listByIds(val);
|
||||
list = res.data.map((oss) => {
|
||||
const data = {
|
||||
return {
|
||||
name: oss.originalName,
|
||||
url: oss.url,
|
||||
ossId: oss.ossId
|
||||
};
|
||||
return data;
|
||||
});
|
||||
}
|
||||
// 然后将数组转为对象数组
|
||||
|
25
src/lang/en_US.json
Normal file
25
src/lang/en_US.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"route": {
|
||||
"dashboard": "Dashboard",
|
||||
"document": "Document"
|
||||
},
|
||||
"login": {
|
||||
"username": "Username",
|
||||
"password": "Password",
|
||||
"login": "Login",
|
||||
"code": "Verification Code",
|
||||
"copyright": ""
|
||||
},
|
||||
"navbar": {
|
||||
"full": "Full Screen",
|
||||
"language": "Language",
|
||||
"dashboard": "Dashboard",
|
||||
"document": "Document",
|
||||
"message": "Message",
|
||||
"layoutSize": "Layout Size",
|
||||
"selectTenant": "Select Tenant",
|
||||
"layoutSetting": "Layout Setting",
|
||||
"personalCenter": "Personal Center",
|
||||
"logout": "Logout"
|
||||
}
|
||||
}
|
@ -1,19 +1,8 @@
|
||||
// 自定义国际化配置
|
||||
import { createI18n } from 'vue-i18n';
|
||||
|
||||
// 本地语言包
|
||||
import enUSLocale from './en_US';
|
||||
import zhCNLocale from './zh_CN';
|
||||
import { LanguageEnum } from '@/enums/LanguageEnum';
|
||||
|
||||
const messages = {
|
||||
zh_CN: {
|
||||
...zhCNLocale
|
||||
},
|
||||
en_US: {
|
||||
...enUSLocale
|
||||
}
|
||||
};
|
||||
import messages from '@intlify/unplugin-vue-i18n/messages';
|
||||
|
||||
/**
|
||||
* 获取当前语言
|
||||
@ -28,6 +17,7 @@ export const getLanguage = (): LanguageEnum => {
|
||||
};
|
||||
|
||||
const i18n = createI18n({
|
||||
globalInjection: true,
|
||||
legacy: false,
|
||||
locale: getLanguage(),
|
||||
messages
|
||||
|
25
src/lang/zh_CN.json
Normal file
25
src/lang/zh_CN.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"route": {
|
||||
"dashboard": "首页",
|
||||
"document": "项目文档"
|
||||
},
|
||||
"login": {
|
||||
"username": "用户名",
|
||||
"password": "密码",
|
||||
"login": "登 录",
|
||||
"code": "请输入验证码",
|
||||
"copyright": ""
|
||||
},
|
||||
"navbar": {
|
||||
"full": "全屏",
|
||||
"language": "语言",
|
||||
"dashboard": "首页",
|
||||
"document": "项目文档",
|
||||
"message": "消息",
|
||||
"layoutSize": "布局大小",
|
||||
"selectTenant": "选择租户",
|
||||
"layoutSetting": "布局设置",
|
||||
"personalCenter": "个人中心",
|
||||
"logout": "退出登录"
|
||||
}
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
:collapse-transition="false"
|
||||
mode="vertical"
|
||||
>
|
||||
<sidebar-item v-for="(route, index) in sidebarRouters" :key="route.path + index" :item="route" :base-path="route.path" />
|
||||
<sidebar-item v-for="(r, index) in sidebarRouters" :key="r.path + index" :item="r" :base-path="r.path" />
|
||||
</el-menu>
|
||||
</transition>
|
||||
</el-scrollbar>
|
||||
|
2
src/types/module.d.ts
vendored
2
src/types/module.d.ts
vendored
@ -11,7 +11,7 @@ import { download as rd } from '@/utils/request';
|
||||
|
||||
export {};
|
||||
|
||||
declare module '@vue/runtime-core' {
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
// 全局方法声明
|
||||
$modal: typeof modal;
|
||||
|
@ -34,6 +34,9 @@
|
||||
<el-button circle title="MaxKey登录" @click="doSocialLogin('maxkey')">
|
||||
<svg-icon icon-class="maxkey" />
|
||||
</el-button>
|
||||
<el-button circle title="TopIam登录" @click="doSocialLogin('topiam')">
|
||||
<svg-icon icon-class="topiam" />
|
||||
</el-button>
|
||||
<el-button circle title="Gitee登录" @click="doSocialLogin('gitee')">
|
||||
<svg-icon icon-class="gitee" />
|
||||
</el-button>
|
||||
|
@ -101,14 +101,7 @@
|
||||
<el-table-column v-if="columns[0].visible" key="userId" label="用户编号" align="center" prop="userId" />
|
||||
<el-table-column v-if="columns[1].visible" key="userName" label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" />
|
||||
<el-table-column v-if="columns[2].visible" key="nickName" label="用户昵称" align="center" prop="nickName" :show-overflow-tooltip="true" />
|
||||
<el-table-column
|
||||
v-if="columns[3].visible"
|
||||
key="deptName"
|
||||
label="部门"
|
||||
align="center"
|
||||
prop="dept.deptName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column v-if="columns[3].visible" key="deptName" label="部门" align="center" prop="deptName" :show-overflow-tooltip="true" />
|
||||
<el-table-column v-if="columns[4].visible" key="phonenumber" label="手机号码" align="center" prop="phonenumber" width="120" />
|
||||
<el-table-column v-if="columns[5].visible" key="status" label="状态" align="center">
|
||||
<template #default="scope">
|
||||
@ -298,12 +291,12 @@
|
||||
<script setup name="User" lang="ts">
|
||||
import api from '@/api/system/user';
|
||||
import { UserForm, UserQuery, UserVO } from '@/api/system/user/types';
|
||||
import { treeselect } from '@/api/system/dept';
|
||||
import { DeptVO } from '@/api/system/dept/types';
|
||||
import { RoleVO } from '@/api/system/role/types';
|
||||
import { PostVO } from '@/api/system/post/types';
|
||||
import { to } from 'await-to-js';
|
||||
import { treeselect } from '@/api/system/dept';
|
||||
import { globalHeaders } from '@/utils/request';
|
||||
import { to } from 'await-to-js';
|
||||
|
||||
const router = useRouter();
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
@ -27,7 +27,7 @@
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<svg-icon icon-class="tree" />所属部门
|
||||
<div v-if="state.user.dept" class="pull-right">{{ state.user.dept?.deptName }} / {{ state.postGroup }}</div>
|
||||
<div v-if="state.user.deptName" class="pull-right">{{ state.user.deptName }} / {{ state.postGroup }}</div>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<svg-icon icon-class="peoples" />所属角色
|
||||
|
@ -32,6 +32,12 @@
|
||||
</div>
|
||||
<span class="app-name">MaxKey</span>
|
||||
</a>
|
||||
<a class="third-app" href="#" title="使用 TopIam 账号授权登录" @click="authUrl('topiam')">
|
||||
<div class="git-other-login-icon">
|
||||
<svg-icon icon-class="topiam" />
|
||||
</div>
|
||||
<span class="app-name">TopIam</span>
|
||||
</a>
|
||||
<a class="third-app" href="#" title="使用 Gitee 账号授权登录" @click="authUrl('gitee')">
|
||||
<div class="git-other-login-icon">
|
||||
<svg-icon icon-class="gitee" />
|
||||
|
@ -19,6 +19,9 @@
|
||||
"paths": {
|
||||
"@/*": ["src/*"]
|
||||
},
|
||||
"compilerOptions": {
|
||||
"types": ["element-plus/global"]
|
||||
},
|
||||
"types": ["vite/client"],
|
||||
"skipLibCheck": true,
|
||||
"removeComments": true,
|
||||
|
6
vite/plugins/i18n.ts
Normal file
6
vite/plugins/i18n.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
|
||||
export default (path: any) => {
|
||||
return VueI18nPlugin({
|
||||
include: [path.resolve(__dirname, '../../src/lang/**.json')]
|
||||
});
|
||||
};
|
@ -6,6 +6,7 @@ import createIcons from './icons';
|
||||
import createSvgIconsPlugin from './svg-icon';
|
||||
import createCompression from './compression';
|
||||
import createSetupExtend from './setup-extend';
|
||||
import createI18n from './i18n';
|
||||
import path from 'path';
|
||||
|
||||
export default (viteEnv: any, isBuild = false): [] => {
|
||||
@ -18,5 +19,6 @@ export default (viteEnv: any, isBuild = false): [] => {
|
||||
vitePlugins.push(createIcons());
|
||||
vitePlugins.push(createSvgIconsPlugin(path, isBuild));
|
||||
vitePlugins.push(createSetupExtend());
|
||||
vitePlugins.push(createI18n(path));
|
||||
return vitePlugins;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user