!73 修复全局属性找不到的问题
* Merge remote-tracking branch 'origin/dev' into dev
* fix 修复全局属性找不到的问题
* fix 修复变量问题
* fix 修复变量问题
* Merge remote-tracking branch 'origin/dev' into dev
* update 依赖升级
* update 依赖升级
* Merge remote-tracking branch 'origin/dev' into dev
* 升级依赖
* Merge remote-tracking branch 'origin/ts' into ts
* 升级依赖
* Merge branch 'dev' of gitee.com:JavaLionLi/plus-ui into ts
* 升级依赖
* !61 fix: 删除重复环境变量ElUploadInstance
* fix: 删除重复环境变量ElUploadInstance
| | |
| | | "@unocss/preset-attributify": "^0.58.0", |
| | | "@unocss/preset-icons": "^0.58.0", |
| | | "@unocss/preset-uno": "^0.58.0", |
| | | "@vue/compiler-sfc": "3.3.9", |
| | | "@vue/compiler-sfc": "3.3.11", |
| | | "@vue/runtime-core": "3.3.11", |
| | | "@vitejs/plugin-vue": "4.5.2", |
| | | "autoprefixer": "10.4.14", |
| | | "eslint": "8.55.0", |
| | |
| | | const topNavChange = (val: any) => { |
| | | if (!val) { |
| | | appStore.toggleSideBarHide(false); |
| | | permissionStore.setSidebarRouters(permissionStore.defaultRoutes); |
| | | permissionStore.setSidebarRouters(permissionStore.defaultRoutes as any); |
| | | } |
| | | }; |
| | | |
| | |
| | | :collapse-transition="false" |
| | | mode="vertical" |
| | | > |
| | | <sidebar-item v-for="(r, index) in sidebarRouters" :key="r.path + index" :item="r" :base-path="r.path" /> |
| | | <sidebar-item v-for="(route, index) in sidebarRouters" :key="route.path + index" :item="route" :base-path="route.path" /> |
| | | </el-menu> |
| | | </transition> |
| | | </el-scrollbar> |
| | |
| | | import usePermissionStore from '@/store/modules/permission'; |
| | | import { RouteRecordRaw } from 'vue-router'; |
| | | |
| | | const { proxy } = getCurrentInstance(); |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | | |
| | | const route = useRoute(); |
| | | const appStore = useAppStore(); |
| | |
| | | const openSearch = () => { |
| | | state.menuQuery = ''; |
| | | state.isShowSearch = true; |
| | | state.menuList = generateRoutes(routes.value); |
| | | state.menuList = generateRoutes(routes.value as any); |
| | | nextTick(() => { |
| | | setTimeout(() => { |
| | | layoutMenuAutocompleteRef.value.focus(); |
| | |
| | | router.addRoute(route); // 动态添加可访问路由表 |
| | | } |
| | | }); |
| | | const n = { ...to, replace: true }; |
| | | console.log(n); |
| | | next({ path: to.path, replace: true, params: to.params, query: to.query, hash: to.hash, name: to.name as string }); // hack方法 确保addRoutes已完成 |
| | | } |
| | | } else { |
| | |
| | | import axios from 'axios'; |
| | | |
| | | export {}; |
| | | declare module 'axios' { |
| | | interface AxiosResponse<T = any> { |
| | | code: number; |
| | |
| | | declare type ElTableInstance = ep.TableInstance; |
| | | declare type ElUploadInstance = ep.UploadInstance; |
| | | declare type ElScrollbarInstance = ep.ScrollbarInstance; |
| | | declare type ElInputInstance = ep.InputInstance; |
| | | declare type ElInputNumberInstance = ep.InputNumberInstance; |
| | | declare type ElRadioInstance = ep.RadioInstance; |
| | | declare type ElRadioGroupInstance = ep.RadioGroupInstance; |
| | | declare type ElRadioButtonInstance = ep.RadioButtonInstance; |
| | | declare type ElCheckboxInstance = ep.CheckboxInstance; |
| | | declare type ElSwitchInstance = ep.SwitchInstance; |
| | | declare type ElCascaderInstance = ep.CascaderInstance; |
| | | declare type ElColorPickerInstance = ep.ColorPickerInstance; |
| | | declare type ElRateInstance = ep.RateInstance; |
| | | declare type ElSliderInstance = ep.SliderInstance; |
| | | |
| | | declare type ElTreeInstance = InstanceType<typeof ep.ElTree>; |
| | | declare type ElTreeSelectInstance = InstanceType<typeof ep.ElTreeSelect>; |
| | | declare type ElSelectInstance = InstanceType<typeof ep.ElSelect>; |
| | | declare type ElCardInstance = InstanceType<typeof ep.ElCard>; |
| | | declare type ElDialogInstance = InstanceType<typeof ep.ElDialog>; |
| | | declare type ElInputInstance = InstanceType<typeof ep.ElInput>; |
| | | declare type ElInputNumberInstance = InstanceType<typeof ep.ElInputNumber>; |
| | | declare type ElRadioInstance = InstanceType<typeof ep.ElRadio>; |
| | | declare type ElRadioGroupInstance = InstanceType<typeof ep.ElRadioGroup>; |
| | | declare type ElRadioButtonInstance = InstanceType<typeof ep.ElRadioButton>; |
| | | declare type ElCheckboxInstance = InstanceType<typeof ep.ElCheckbox>; |
| | | declare type ElCheckboxGroupInstance = InstanceType<typeof ep.ElCheckboxGroup>; |
| | | declare type ElSwitchInstance = InstanceType<typeof ep.ElSwitch>; |
| | | declare type ElDatePickerInstance = InstanceType<typeof ep.ElDatePicker>; |
| | | declare type ElTimePickerInstance = InstanceType<typeof ep.ElTimePicker>; |
| | | declare type ElTimeSelectInstance = InstanceType<typeof ep.ElTimeSelect>; |
| | | declare type ElCascaderInstance = InstanceType<typeof ep.ElCascader>; |
| | | declare type ElColorPickerInstance = InstanceType<typeof ep.ElColorPicker>; |
| | | declare type ElRateInstance = InstanceType<typeof ep.ElRate>; |
| | | declare type ElSliderInstance = InstanceType<typeof ep.ElSlider>; |
| | | |
| | | declare type TransferKey = ep.TransferKey; |
| | | declare type CheckboxValueType = ep.CheckboxValueType; |
| | | declare type ElFormRules = ep.FormRules; |
| | | declare type DateModelType = ep.DateModelType; |
| | | declare type UploadFile = typeof ep.UploadFile; |
| | | declare type UploadFile = ep.UploadFile; |
| | | |
| | | } |
| | |
| | | import type { ComponentInternalInstance as ComponentInstance } from 'vue/runtime-core'; |
| | | import type { PropType as VuePropType } from 'vue'; |
| | | import type { PropType as VuePropType, ComponentInternalInstance as ComponentInstance } from 'vue'; |
| | | import { LanguageEnum } from '@/enums/LanguageEnum'; |
| | | |
| | | declare global { |
| | |
| | | import cache from '@/plugins/cache'; |
| | | import animate from '@/animate'; |
| | | import { useDict } from '@/utils/dict'; |
| | | import handleTree, { addDateRange, selectDictLabel, selectDictLabels, parseTime } from '@/utils/ruoyi'; |
| | | import { handleTree, addDateRange, selectDictLabel, selectDictLabels, parseTime } from '@/utils/ruoyi'; |
| | | import { getConfigKey, updateConfigByKey } from '@/api/system/config'; |
| | | import { download as rd } from '@/utils/request'; |
| | | |
| | | export {}; |
| | | |
| | | declare module '@vue/runtime-core' { |
| | | interface ComponentCustomProperties { |
| | | // 全局方法声明 |
| | |
| | | <script setup name="Cache" lang="ts"> |
| | | import { getCache } from '@/api/monitor/cache'; |
| | | import * as echarts from 'echarts'; |
| | | import { CacheVO } from '@/api/monitor/cache/types'; |
| | | |
| | | const cache = ref<any>({}); |
| | | const cache = ref<Partial<CacheVO>>({}); |
| | | const commandstats = ref(); |
| | | const usedmemory = ref(); |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | |
| | | email: undefined, |
| | | status: '0' |
| | | }; |
| | | const data = reactive<PageData<DeptForm, DeptQuery>>({ |
| | | const initData: PageData<DeptForm, DeptQuery> = { |
| | | form: { ...initFormData }, |
| | | queryParams: { |
| | | pageNum: 1, |
| | |
| | | email: [{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }], |
| | | phone: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: '请输入正确的手机号码', trigger: 'blur' }] |
| | | } |
| | | }); |
| | | }; |
| | | const data = reactive<PageData<DeptForm, DeptQuery>>(initData); |
| | | |
| | | const { queryParams, form, rules } = toRefs<PageData<DeptForm, DeptQuery>>(data); |
| | | |
| | |
| | | import { globalHeaders } from '@/utils/request'; |
| | | |
| | | const router = useRouter(); |
| | | const { proxy } = getCurrentInstance(); |
| | | const { proxy } = getCurrentInstance() as ComponentInternalInstance; |
| | | const { sys_normal_disable, sys_user_sex } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'sys_user_sex')); |
| | | const userList = ref<UserVO[]>(); |
| | | const loading = ref(true); |
| | |
| | | </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.dept" class="pull-right">{{ state.user.dept?.deptName }} / {{ state.postGroup }}</div> |
| | | </li> |
| | | <li class="list-group-item"> |
| | | <svg-icon icon-class="peoples" />所属角色 |
| | |
| | | import ThirdParty from './thirdParty.vue'; |
| | | import { getAuthList } from '@/api/system/social/auth'; |
| | | import { getUserProfile } from '@/api/system/user'; |
| | | import { UserVO } from '@/api/system/user/types'; |
| | | |
| | | const activeTab = ref('userinfo'); |
| | | const state = ref<Record<string, any>>({ |
| | | interface State { |
| | | user: Partial<UserVO>; |
| | | roleGroup: string; |
| | | postGroup: string; |
| | | auths: any; |
| | | } |
| | | const state = ref<State>({ |
| | | user: {}, |
| | | roleGroup: '', |
| | | postGroup: '', |
| | |
| | | "module": "esnext", |
| | | // "useDefineForClassFields": true, |
| | | "moduleResolution": "bundler", |
| | | "strict": false, |
| | | "strict": true, |
| | | "jsx": "preserve", |
| | | "strictNullChecks": false, |
| | | "sourceMap": true, |
| | | "resolveJsonModule": true, |
| | | "esModuleInterop": true, |