Commit 3378ef5b7553b833c6187893a93fff0471f1a531
Merge branch 'f-dev' into 'main'
fix:修改记住我无效问题 See merge request huang/yun-teng-iot-front!322
Showing
7 changed files
with
71 additions
and
71 deletions
| ... | ... | @@ -12,17 +12,17 @@ |
| 12 | 12 | overlayClassName="app-locale-picker-overlay" |
| 13 | 13 | > |
| 14 | 14 | <span class="cursor-pointer flex items-center" :style="{ color: color }"> |
| 15 | - <Icon icon="ion:language" /> | |
| 16 | - <span v-if="showText" class="ml-1">{{ getLocaleText }}</span> | |
| 15 | + <!-- <Icon icon="ion:language" /> --> | |
| 16 | + <!-- <span v-if="showText" class="ml-1">{{ getLocaleText }}</span> --> | |
| 17 | 17 | </span> |
| 18 | 18 | </Dropdown> |
| 19 | 19 | </template> |
| 20 | 20 | <script lang="ts" setup> |
| 21 | 21 | import type { LocaleType } from '/#/config'; |
| 22 | 22 | import type { DropMenu } from '/@/components/Dropdown'; |
| 23 | - import { ref, watchEffect, unref, computed } from 'vue'; | |
| 23 | + import { ref, watchEffect, unref } from 'vue'; | |
| 24 | 24 | import { Dropdown } from '/@/components/Dropdown'; |
| 25 | - import { Icon } from '/@/components/Icon'; | |
| 25 | + // import { Icon } from '/@/components/Icon'; | |
| 26 | 26 | import { useLocale } from '/@/locales/useLocale'; |
| 27 | 27 | import { localeList } from '/@/settings/localeSetting'; |
| 28 | 28 | |
| ... | ... | @@ -45,13 +45,13 @@ |
| 45 | 45 | |
| 46 | 46 | const { changeLocale, getLocale } = useLocale(); |
| 47 | 47 | |
| 48 | - const getLocaleText = computed(() => { | |
| 49 | - const key = selectedKeys.value[0]; | |
| 50 | - if (!key) { | |
| 51 | - return ''; | |
| 52 | - } | |
| 53 | - return localeList.find((item) => item.event === key)?.text; | |
| 54 | - }); | |
| 48 | + // const getLocaleText = computed(() => { | |
| 49 | + // const key = selectedKeys.value[0]; | |
| 50 | + // if (!key) { | |
| 51 | + // return ''; | |
| 52 | + // } | |
| 53 | + // return localeList.find((item) => item.event === key)?.text; | |
| 54 | + // }); | |
| 55 | 55 | |
| 56 | 56 | watchEffect(() => { |
| 57 | 57 | selectedKeys.value = [unref(getLocale)]; | ... | ... |
| ... | ... | @@ -37,8 +37,8 @@ |
| 37 | 37 | > |
| 38 | 38 | <img |
| 39 | 39 | style="border-radius: 50%; height: 8.75rem; width: 10rem" |
| 40 | - v-if="peresonalPic" | |
| 41 | - :src="peresonalPic" | |
| 40 | + v-if="peresonalPic || headerImg" | |
| 41 | + :src="peresonalPic || headerImg" | |
| 42 | 42 | alt="avatar" |
| 43 | 43 | /> |
| 44 | 44 | <div v-else> |
| ... | ... | @@ -93,6 +93,7 @@ |
| 93 | 93 | import { useUserStore } from '/@/store/modules/user'; |
| 94 | 94 | import type { FileItem } from '/@/components/Upload/src/typing'; |
| 95 | 95 | import { LoadingOutlined } from '@ant-design/icons-vue'; |
| 96 | + import headerImg from '/@/assets/images/logo.png'; | |
| 96 | 97 | |
| 97 | 98 | const schema: DescItem[] = [ |
| 98 | 99 | { |
| ... | ... | @@ -247,7 +248,8 @@ |
| 247 | 248 | registerModal, |
| 248 | 249 | registerForm, |
| 249 | 250 | loading, |
| 250 | - mockData | |
| 251 | + mockData, | |
| 252 | + headerImg, | |
| 251 | 253 | }; |
| 252 | 254 | }, |
| 253 | 255 | }); | ... | ... |
| ... | ... | @@ -67,7 +67,7 @@ |
| 67 | 67 | import { useI18n } from '/@/hooks/web/useI18n'; |
| 68 | 68 | import { useDesign } from '/@/hooks/web/useDesign'; |
| 69 | 69 | import { useModal } from '/@/components/Modal'; |
| 70 | - import headerImg from '/@/assets/images/header.jpg'; | |
| 70 | + import headerImg from '/@/assets/images/logo.png'; | |
| 71 | 71 | import { propTypes } from '/@/utils/propTypes'; |
| 72 | 72 | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
| 73 | 73 | import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | ... | ... |
| ... | ... | @@ -74,7 +74,7 @@ |
| 74 | 74 | import moment from 'moment'; |
| 75 | 75 | // 导入一些静态图片,避免打包时不能正确解析 |
| 76 | 76 | import djx from '/@/assets/images/djx.png'; |
| 77 | - import locationJx from '/@/assets/images/location.png'; | |
| 77 | + // import locationJx from '/@/assets/images/location.png'; | |
| 78 | 78 | import zx from '/@/assets/images/zx.png'; |
| 79 | 79 | import lx from '/@/assets/images/lx.png'; |
| 80 | 80 | import djh from '/@/assets/images/djh.png'; |
| ... | ... | @@ -142,26 +142,15 @@ |
| 142 | 142 | const BMap = (window as any).BMap; |
| 143 | 143 | if (!wrapEl) return; |
| 144 | 144 | const map = new BMap.Map(wrapEl); |
| 145 | - | |
| 146 | - const getLocation = new BMap.Geolocation(); | |
| 147 | - getLocation.getCurrentPosition((position) => { | |
| 148 | - if (position) { | |
| 149 | - let preMarker = null; | |
| 150 | - const point = new BMap.Point(position.point.lng, position.point.lat); | |
| 151 | - let mapIcon = new BMap.Icon(locationJx, new BMap.Size(50, 80)); | |
| 152 | - let marker = new BMap.Marker(point, { icon: mapIcon }); | |
| 153 | - if (marker) { | |
| 154 | - map.removeOverlay(preMarker); | |
| 155 | - } | |
| 156 | - map.addOverlay(marker); | |
| 157 | - map.centerAndZoom(point, 15); | |
| 158 | - map.enableScrollWheelZoom(true); | |
| 159 | - } else { | |
| 160 | - const point = new BMap.Point(104.04666605565338, 30.543516387560476); | |
| 161 | - map.centerAndZoom(point, 15); | |
| 162 | - map.enableScrollWheelZoom(true); | |
| 163 | - } | |
| 164 | - }); | |
| 145 | + function myFun(result) { | |
| 146 | + let mk = new BMap.Marker(result.center); | |
| 147 | + map.addOverlay(mk); | |
| 148 | + map.panTo(result.center); | |
| 149 | + map.centerAndZoom(result.center, 15); | |
| 150 | + map.enableScrollWheelZoom(true); | |
| 151 | + } | |
| 152 | + let myCity = new BMap.LocalCity(); | |
| 153 | + myCity.get(myFun); | |
| 165 | 154 | } |
| 166 | 155 | // 点击表格某一行触发 |
| 167 | 156 | const deviceRowClick = async (record) => { |
| ... | ... | @@ -192,7 +181,7 @@ |
| 192 | 181 | // 创建信息窗口对象 |
| 193 | 182 | const res = await getDeviceActiveTime(entityId); |
| 194 | 183 | |
| 195 | - let { value: activeStatus, lastUpdateTs } = res[0]; | |
| 184 | + let { lastUpdateTs } = res[0]; | |
| 196 | 185 | lastUpdateTs = moment(lastUpdateTs).format('YYYY-MM-DD HH:mm:ss'); |
| 197 | 186 | let infoWindow = new BMap.InfoWindow( |
| 198 | 187 | ` | ... | ... |
| ... | ... | @@ -10,7 +10,9 @@ |
| 10 | 10 | <BasicForm @register="registerForm" /> |
| 11 | 11 | <template #footer> |
| 12 | 12 | <a-button @click="handleCancel">取消</a-button> |
| 13 | - <a-button :disabled="draftDisable" @click="handleSaveDraft">保存草稿</a-button> | |
| 13 | + <Authority value="api:yt:notice:save:post"> | |
| 14 | + <a-button :disabled="draftDisable" @click="handleSaveDraft">保存草稿</a-button> | |
| 15 | + </Authority> | |
| 14 | 16 | <a-button :disabled="sendDisable" type="primary" @click="handleSend">发布通知</a-button> |
| 15 | 17 | </template> |
| 16 | 18 | </BasicDrawer> |
| ... | ... | @@ -26,9 +28,11 @@ |
| 26 | 28 | notifyAddLeaseApi, |
| 27 | 29 | } from '/@/api/stationnotification/stationnotifyApi'; |
| 28 | 30 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 31 | + import { Authority } from '/@/components/Authority'; | |
| 32 | + | |
| 29 | 33 | export default defineComponent({ |
| 30 | 34 | name: 'ConfigDrawer', |
| 31 | - components: { BasicDrawer, BasicForm }, | |
| 35 | + components: { BasicDrawer, BasicForm,Authority }, | |
| 32 | 36 | emits: ['success', 'register'], |
| 33 | 37 | setup(_, { emit }) { |
| 34 | 38 | const draftDisable = ref(false); | ... | ... |
| ... | ... | @@ -21,11 +21,7 @@ |
| 21 | 21 | <div class="hidden min-h-full pl-4 mr-4 xl:flex xl:flex-col xl:w-6/12"> |
| 22 | 22 | <!-- <AppLogo class="-enter-x" /> --> |
| 23 | 23 | <div style="display: flex; margin-top: 10px"> |
| 24 | - <img | |
| 25 | - v-if="defaultLogo || getLogo" | |
| 26 | - :src="defaultLogo || getLogo" | |
| 27 | - style="width: 48px; height: 48px" | |
| 28 | - /> | |
| 24 | + <img v-if="defaultLogo" :src="defaultLogo" style="width: 48px; height: 48px" /> | |
| 29 | 25 | <img style="width: 48px; height: 48px" v-else src="/src/assets/images/logo.png" /> |
| 30 | 26 | <div |
| 31 | 27 | class="ml-2 truncate md:opacity-100" |
| ... | ... | @@ -37,7 +33,7 @@ |
| 37 | 33 | font-weight: 700; |
| 38 | 34 | " |
| 39 | 35 | > |
| 40 | - {{ defaultTitle || getTitle }} | |
| 36 | + {{ defaultTitle }} | |
| 41 | 37 | </div> |
| 42 | 38 | </div> |
| 43 | 39 | <div v-if="ifCustom" class="my-auto"> |
| ... | ... | @@ -70,7 +66,7 @@ |
| 70 | 66 | </div> |
| 71 | 67 | </template> |
| 72 | 68 | <script lang="ts" setup> |
| 73 | - import { computed, ref, onMounted } from 'vue'; | |
| 69 | + import { ref, onMounted } from 'vue'; | |
| 74 | 70 | // import { AppLogo } from '/@/components/Application'; |
| 75 | 71 | import { AppLocalePicker, AppDarkModeToggle } from '/@/components/Application'; |
| 76 | 72 | import LoginForm from './LoginForm.vue'; |
| ... | ... | @@ -81,7 +77,7 @@ |
| 81 | 77 | import { useI18n } from '/@/hooks/web/useI18n'; |
| 82 | 78 | import { useDesign } from '/@/hooks/web/useDesign'; |
| 83 | 79 | import { useLocaleStore } from '/@/store/modules/locale'; |
| 84 | - import { useUserStore } from '/@/store/modules/user'; | |
| 80 | + // import { useUserStore } from '/@/store/modules/user'; | |
| 85 | 81 | import { getPlatForm } from '/@/api/oem/index'; |
| 86 | 82 | import defaultShowLogoImg from '/@/assets/svg/login-bg.svg'; |
| 87 | 83 | |
| ... | ... | @@ -90,14 +86,21 @@ |
| 90 | 86 | type: Boolean, |
| 91 | 87 | }, |
| 92 | 88 | }); |
| 89 | + const { title } = useGlobSetting(); | |
| 93 | 90 | const defaultTitle = ref(''); |
| 94 | 91 | const defaultLogo = ref(''); |
| 95 | 92 | const logoUrl = ref(''); |
| 96 | 93 | onMounted(async () => { |
| 97 | 94 | const res = await getPlatForm(); |
| 98 | 95 | logoUrl.value = res?.background; |
| 99 | - defaultTitle.value = res?.name; | |
| 96 | + defaultTitle.value = res?.name || title; | |
| 100 | 97 | defaultLogo.value = res?.logo; |
| 98 | + let link = (document.querySelector("link[rel*='icon']") || | |
| 99 | + document.createElement('link')) as HTMLLinkElement; | |
| 100 | + link.type = 'image/x-icon'; | |
| 101 | + link.rel = 'shortcut icon'; | |
| 102 | + link.href = res.icon ?? '/favicon.ico'; | |
| 103 | + document.getElementsByTagName('head')[0].appendChild(link); | |
| 101 | 104 | if (logoUrl.value !== undefined) { |
| 102 | 105 | ifCustom.value = false; |
| 103 | 106 | } else { |
| ... | ... | @@ -105,29 +108,28 @@ |
| 105 | 108 | } |
| 106 | 109 | }); |
| 107 | 110 | |
| 108 | - const userStore = useUserStore(); | |
| 111 | + // const userStore = useUserStore(); | |
| 109 | 112 | |
| 110 | 113 | const ifCustom = ref(true); |
| 111 | - const getLogo = computed(() => { | |
| 112 | - return userStore.platInfo?.logo; | |
| 113 | - }); | |
| 114 | - const { title } = useGlobSetting(); | |
| 115 | - const getTitle = computed(() => { | |
| 116 | - // 设置icon | |
| 117 | - let link = (document.querySelector("link[rel*='icon']") || | |
| 118 | - document.createElement('link')) as HTMLLinkElement; | |
| 119 | - link.type = 'image/x-icon'; | |
| 120 | - link.rel = 'shortcut icon'; | |
| 121 | - link.href = userStore.platInfo?.icon ?? '/favicon.ico'; | |
| 122 | - document.getElementsByTagName('head')[0].appendChild(link); | |
| 123 | - // logoUrl.value = userStore.platInfo?.background; | |
| 124 | - // if (logoUrl.value !== undefined) { | |
| 125 | - // ifCustom.value = false; | |
| 126 | - // } else { | |
| 127 | - // logoUrl.value = 'url(' + defaultShowLogoImg + ')'; | |
| 128 | - // } | |
| 129 | - return userStore.platInfo?.name ?? title; | |
| 130 | - }); | |
| 114 | + // const getLogo = computed(() => { | |
| 115 | + // return userStore.platInfo?.logo; | |
| 116 | + // }); | |
| 117 | + // const getTitle = computed(() => { | |
| 118 | + // // 设置icon | |
| 119 | + // let link = (document.querySelector("link[rel*='icon']") || | |
| 120 | + // document.createElement('link')) as HTMLLinkElement; | |
| 121 | + // link.type = 'image/x-icon'; | |
| 122 | + // link.rel = 'shortcut icon'; | |
| 123 | + // link.href = userStore.platInfo?.icon ?? '/favicon.ico'; | |
| 124 | + // document.getElementsByTagName('head')[0].appendChild(link); | |
| 125 | + // // logoUrl.value = userStore.platInfo?.background; | |
| 126 | + // // if (logoUrl.value !== undefined) { | |
| 127 | + // // ifCustom.value = false; | |
| 128 | + // // } else { | |
| 129 | + // // logoUrl.value = 'url(' + defaultShowLogoImg + ')'; | |
| 130 | + // // } | |
| 131 | + // return userStore.platInfo?.name ?? title; | |
| 132 | + // }); | |
| 131 | 133 | // const globSetting = useGlobSetting(); |
| 132 | 134 | const { prefixCls } = useDesign('login'); |
| 133 | 135 | const { t } = useI18n(); | ... | ... |
| ... | ... | @@ -73,7 +73,7 @@ |
| 73 | 73 | import { LoginStateEnum, useLoginState, useFormRules, useFormValid } from './useLogin'; |
| 74 | 74 | import { useDesign } from '/@/hooks/web/useDesign'; |
| 75 | 75 | import { getPlatForm } from '/@/api/oem'; |
| 76 | - import { createLocalStorage } from '/@/utils/cache'; | |
| 76 | + import { createLocalStorage, createSessionStorage } from '/@/utils/cache'; | |
| 77 | 77 | |
| 78 | 78 | const ACol = Col; |
| 79 | 79 | const ARow = Row; |
| ... | ... | @@ -87,10 +87,11 @@ |
| 87 | 87 | const { setLoginState, getLoginState } = useLoginState(); |
| 88 | 88 | const { getFormRules } = useFormRules(); |
| 89 | 89 | const storage = createLocalStorage(); |
| 90 | + const sStorage = createSessionStorage(); | |
| 90 | 91 | const formRef = ref(); |
| 91 | 92 | const loading = ref(false); |
| 92 | 93 | const rememberMe = ref(false); |
| 93 | - const userInfo = storage.get('userInfo'); | |
| 94 | + const userInfo = storage.get('userInfo') || sStorage.get('userInfo'); | |
| 94 | 95 | const formData = reactive({ |
| 95 | 96 | account: userInfo?.account ?? '', |
| 96 | 97 | password: userInfo?.password ?? '', |
| ... | ... | @@ -105,8 +106,10 @@ |
| 105 | 106 | if (!data) return; |
| 106 | 107 | if (unref(rememberMe)) { |
| 107 | 108 | storage.set('userInfo', formData); |
| 109 | + sStorage.set('userInfo', formData); | |
| 108 | 110 | } else { |
| 109 | 111 | storage.set('userInfo', null); |
| 112 | + sStorage.set('userInfo', null); | |
| 110 | 113 | } |
| 111 | 114 | loading.value = true; |
| 112 | 115 | const userInfo = await userStore | ... | ... |