From b69d202509a8adef39e794b35cbd6cfb42639602 Mon Sep 17 00:00:00 2001 From: X1627315083 <1627315083@qq.com> Date: Thu, 19 Jun 2025 09:21:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/style/style.css | 6 + src/assets/style/style.less | 9 + .../DetailCopy/model/modelPosition.vue | 1 + src/component/Events/eventsDetail.vue | 2 +- src/component/HomePage/Generate.vue | 5 - src/component/HomePage/scaleImage.vue | 2 +- src/component/LoginPage/login/enterprise.vue | 10 +- src/component/LoginPage/login/personal.vue | 11 +- src/component/LoginPage/login/school.vue | 9 +- src/component/WorksPage/Falls.vue | 25 + src/component/home/chat/index.vue | 1 + .../design/collection/PrintboardUpload.vue | 16 +- .../design/collection/SketchboardUpload.vue | 16 +- src/component/home/design/index.vue | 27 +- src/component/home/index.vue | 1 + src/component/home/newProject/index.vue | 1 + .../mainPage/signUp/registerModel.vue | 9 +- src/component/modules/generalMiniCanvas.vue | 911 ++---------------- src/main.ts | 2 +- src/tool/flexible.js | 7 +- src/tool/util.js | 14 +- src/views/HomeMain.vue | 15 +- src/views/HomeView/Events.vue | 5 +- src/views/HomeView/Works.vue | 53 +- 24 files changed, 301 insertions(+), 857 deletions(-) diff --git a/src/assets/style/style.css b/src/assets/style/style.css index 93aae752..1ce865f0 100644 --- a/src/assets/style/style.css +++ b/src/assets/style/style.css @@ -886,6 +886,12 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte overflow: hidden; box-sizing: border-box; } +.ant-select-dropdown .ant-select-item { + font-size: 1.6rem; + line-height: 2.4rem; + padding: 0.8rem 1.8rem; + min-height: 3.2rem; +} .generalModel { -moz-user-select: none; -webkit-user-select: none; diff --git a/src/assets/style/style.less b/src/assets/style/style.less index c5c3c8be..9f921e86 100644 --- a/src/assets/style/style.less +++ b/src/assets/style/style.less @@ -970,6 +970,15 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte overflow: hidden; box-sizing: border-box; } + .ant-select-item{ + font-size: 1.6rem; + line-height: 2.4rem; + padding: .8rem 1.8rem; + min-height: 3.2rem; + .ant-select-item-option-content{ + + } + } } .generalModel{//自带关闭的页面 diff --git a/src/component/DetailCopy/model/modelPosition.vue b/src/component/DetailCopy/model/modelPosition.vue index 75baaf9a..6fc2e352 100644 --- a/src/component/DetailCopy/model/modelPosition.vue +++ b/src/component/DetailCopy/model/modelPosition.vue @@ -485,6 +485,7 @@ export default defineComponent({ float: left; user-select:none; -webkit-user-drag: none; + object-fit: cover; } .modal_imgItem{ position: absolute; diff --git a/src/component/Events/eventsDetail.vue b/src/component/Events/eventsDetail.vue index 6d2a6841..541e6956 100644 --- a/src/component/Events/eventsDetail.vue +++ b/src/component/Events/eventsDetail.vue @@ -101,7 +101,7 @@ export default defineComponent({ eventLangData = eventDataCn } eventLangData.eventsItem.forEach((item:any)=>{ - if(item.id == router.currentRoute.value.query.id){ + if(item.id == router.currentRoute.value.query.eventId){ filter.eventsDetail = item; } }) diff --git a/src/component/HomePage/Generate.vue b/src/component/HomePage/Generate.vue index 766a819b..5c355e72 100644 --- a/src/component/HomePage/Generate.vue +++ b/src/component/HomePage/Generate.vue @@ -728,11 +728,6 @@ export default defineComponent({ if(rv.filter((item:any)=>item.status == 'Invalid').length ==dataNum){ message.info(this.t('Generate.effectPoor')); }else{ - nextTick().then(()=>{ - if(this.driver__.driver){ - driverObj__.moveNext() - } - }) } this.store.dispatch('getCredits') diff --git a/src/component/HomePage/scaleImage.vue b/src/component/HomePage/scaleImage.vue index 2e6e609e..95684c2d 100644 --- a/src/component/HomePage/scaleImage.vue +++ b/src/component/HomePage/scaleImage.vue @@ -687,7 +687,7 @@ export default defineComponent({ display: flex; align-items: center; justify-content: center; - z-index: 2; + z-index: 99; .operate_icon{ font-size: 1.8rem; color: #fff; diff --git a/src/component/LoginPage/login/enterprise.vue b/src/component/LoginPage/login/enterprise.vue index 42a79785..8ec69abc 100644 --- a/src/component/LoginPage/login/enterprise.vue +++ b/src/component/LoginPage/login/enterprise.vue @@ -247,7 +247,7 @@ - \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 099a2418..1afa9d9d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -22,7 +22,7 @@ import 'swiper/css/pagination'; // import "@/tool/fabric.min.js"; const app = createApp(App); flexible() - +// alert(window.innerWidth) import { getCookie, setCookie } from "@/tool/cookie"; document.addEventListener('touchstart', function(event) { event.preventDefault(); // 阻止长按选中 diff --git a/src/tool/flexible.js b/src/tool/flexible.js index e3bcadda..f49fddf0 100644 --- a/src/tool/flexible.js +++ b/src/tool/flexible.js @@ -1,11 +1,16 @@ +import { getUniversalZoomLevel } from "@/tool/util"; + let flexible = (designWidth, maxWidth,minWidth) =>{ var doc = document, win = window, docEl = doc.documentElement, remStyle = document.createElement("style"), tid; designWidth = designWidth || 1920; maxWidth = maxWidth || 2560; - minWidth = minWidth || 1024; + minWidth = minWidth || 500; + // minWidth = minWidth || 1024; function refreshRem() { var width = docEl.getBoundingClientRect().width; var height = docEl.getBoundingClientRect().height; + width = getUniversalZoomLevel() * width + height = getUniversalZoomLevel() * height maxWidth = maxWidth || 1920; if(width/height>1.98) width = height * 1.98; width > maxWidth && (width = maxWidth); diff --git a/src/tool/util.js b/src/tool/util.js index ef28bbff..6cef33e7 100644 --- a/src/tool/util.js +++ b/src/tool/util.js @@ -5,7 +5,18 @@ const isEmail = (email) => { let result = reg.test(email) return result } - +function getUniversalZoomLevel() { + // 现代浏览器方案 + if (window.visualViewport) { + return window.visualViewport.scale; + } + // 备用方案1 + if (window.devicePixelRatio) { + return window.devicePixelRatio; + } + // 备用方案2(不精确) + return window.outerWidth / window.innerWidth; +} const getUploadUrl = () => { let url = process.env.VUE_APP_BASE_URL || '' // let url = "http://18.167.251.121:10086" @@ -569,6 +580,7 @@ function segmentImage(markerImage,fullImage,size){ export { isEmail, getUploadUrl, + getUniversalZoomLevel, rgbaToHex, getMinioUrl, base64ToFile, diff --git a/src/views/HomeMain.vue b/src/views/HomeMain.vue index cc51950f..43333e11 100644 --- a/src/views/HomeMain.vue +++ b/src/views/HomeMain.vue @@ -35,7 +35,7 @@
Today
Yesterday
-
Within a wseek
+
Within a week
Earlier
@@ -844,13 +844,13 @@ export default defineComponent({ }; await Https.axiosPost(Https.httpUrls.accountLogout, data).then((rv) => { // WriteCookie("token"); + clonAllCookie() }); this.$router.replace("/"); this.store.commit('createDetail') this.store.commit('createProbject') // WriteCookie("token"); - clonAllCookie() // window.location.reload() }, @@ -983,6 +983,11 @@ export default defineComponent({ border-radius: 2rem; &.history{ flex: 1; + > .detailBox{ + >.detail{ + min-height: 10rem; + } + } } > .titleBox{ padding: 1.2rem; @@ -1027,7 +1032,6 @@ export default defineComponent({ > .detail{ position: relative; height: 100%; - min-height: 10rem; > img{ width: 100%; } @@ -1421,7 +1425,7 @@ export default defineComponent({ height: 6rem; width: 6rem; position: relative; - transform-origin: top; + // transform-origin: top; overflow: hidden; z-index: 2; left: 0; @@ -1429,9 +1433,10 @@ export default defineComponent({ cursor: pointer; background: #fff; img{ + background: #000; width: 100%; height: 100%; - object-fit: contain; + object-fit: cover; } // transition: all .3s; } diff --git a/src/views/HomeView/Events.vue b/src/views/HomeView/Events.vue index 9d3b6c5f..1b214d24 100644 --- a/src/views/HomeView/Events.vue +++ b/src/views/HomeView/Events.vue @@ -123,7 +123,7 @@ export default defineComponent({ let {t} = useI18n() let openEventsDetail = (item:any)=>{ let path = router.currentRoute._value.path.split('/')[1] - router.push(`/${path}/eventsDetail?id=${item.id}`) + router.push(`/${path}/eventsDetail?eventId=${item.id}`) // router.push(`${path}?id=${item.id}`) } onMounted (()=>{ @@ -244,7 +244,7 @@ export default defineComponent({ display: flex; flex-wrap: wrap; .page_content_item{ - max-width: 25%; + width: 25%; padding: 2rem; @media (max-width: 768px) { max-width: 100%; @@ -265,6 +265,7 @@ export default defineComponent({ color: #5f5f5f; } .page_content_item_title{ + font-size: 1.6rem; text-overflow: ellipsis; /* 显示省略号 */ overflow: hidden; /* 溢出隐藏 */ display: -webkit-box; diff --git a/src/views/HomeView/Works.vue b/src/views/HomeView/Works.vue index b98d889c..af6cfbc3 100644 --- a/src/views/HomeView/Works.vue +++ b/src/views/HomeView/Works.vue @@ -10,7 +10,7 @@
-->
- +
@@ -72,6 +72,7 @@ export default defineComponent({ let filter:any = reactive({ worksSelect: 'all', isNull:true, + failWidth:300, worksType: [ { name: useI18n().t('works.all'), @@ -163,16 +164,57 @@ export default defineComponent({ } let getImgScale = (item:any)=>{ let newScaleModel = null - if(window.innerWidth < 768){ - newScaleModel = newScaleImageMobile - }else{ + if(getScreenOrientation() == 'landscape'){ newScaleModel = newScaleImage newScaleModel.value.scaleImageMask = true - + }else{ + newScaleModel = newScaleImageMobile } newScaleModel.value.init(item) } + function getScreenOrientation() { + // 优先使用标准API + if (screen.orientation) { + return screen.orientation.type.includes('portrait') ? 'portrait' : 'landscape'; + } + // 回退到宽高比检测 + return window.innerWidth > window.innerHeight ? 'landscape' : 'portrait'; + } + + // 监听方向变化 + function setupOrientationListener(callback) { + // 标准事件 + const handleOrientationChange = () => { + callback(getScreenOrientation()); + }; + + // 优先使用标准API + if (screen.orientation) { + screen.orientation.addEventListener('change', handleOrientationChange); + } + // 回退到resize事件 + else { + window.addEventListener('resize', handleOrientationChange); + } + // 返回清除监听的方法 + return () => { + if (screen.orientation) { + screen.orientation.removeEventListener('change', handleOrientationChange); + } else { + window.removeEventListener('resize', handleOrientationChange); + } + }; + } + const cleanup = setupOrientationListener((orientation) => { + if (orientation === 'portrait') { + // 竖屏逻辑 + return 'portrait' + } else { + // 横屏逻辑 + return 'landscape' + } + }); let getPorfolio = ()=>{ let data = filter.getListDate if(filter.isShowMark && !filter.isNoData)return @@ -253,6 +295,7 @@ export default defineComponent({ { immediate: true } // 立即触发一次以处理初始参数 ); onMounted (()=>{ + if(window.innerWidth < 1200)filter.failWidth = 120 nextTick(()=>{ setPorfolioDom() })