1
0
tangning 5 часов назад
Родитель
Сommit
171152b1b8
4 измененных файлов с 63 добавлено и 9 удалено
  1. 45 0
      src/App.vue
  2. 9 0
      src/assets/style/public.scss
  3. 1 1
      src/view/case/records/index.vue
  4. 8 8
      src/view/dossier/index.vue

+ 45 - 0
src/App.vue

@@ -38,5 +38,50 @@ if(!version){
   // })
 }
 console.log("getBrowserInfo", params, browser.isGreaterThan('128.0.0'));
+// 判断平板
+function isTablet() {
+  const ua = navigator.userAgent.toLowerCase();
 
+  // 1. 判断传统平板
+  const isTraditionalTablet = /ipad|tablet|sch-i|gt-p|sm-t|lenovo tb|microsoft surface/i.test(ua);
+
+  // 2. 重点:判断 新iPad(iOS13+)
+  const isNewIPad = 
+    /macintosh/.test(ua) && 
+    navigator.maxTouchPoints && 
+    navigator.maxTouchPoints > 2;
+
+  // 3. 安卓平板(非手机)
+  const isAndroidTablet = /android/.test(ua) && !/mobile/.test(ua);
+
+  // 4. 屏幕尺寸(短边 > 500 才是平板)
+  const isBigScreen = Math.min(screen.width, screen.height) > 500;
+
+  // 最终判断
+  return (isTraditionalTablet || isNewIPad || isAndroidTablet) && isBigScreen;
+}
+// 平板强制横屏
+function tabletLandscape() {
+  console.log("isTablet", isTablet());
+  if (!isTablet()) return;
+
+  const isPortrait = window.innerHeight > window.innerWidth;
+  console.log("isPortrait", isPortrait);
+  if (isPortrait) {
+    document.body.style.transform = 'rotate(90deg)';
+    document.body.style.transformOrigin = 'left top';
+    document.body.style.width = '100vh';
+    document.body.style.height = '100vw';
+    document.body.className = 'mobile landscape-rotate';
+  } else {
+    document.body.style.transform = '';
+    document.body.style.width = '';
+    document.body.style.height = '';
+    document.body.className = '';
+  }
+}
+
+window.addEventListener('resize', tabletLandscape);
+window.addEventListener('orientationchange', tabletLandscape);
+tabletLandscape();
 </script>

+ 9 - 0
src/assets/style/public.scss

@@ -35,6 +35,15 @@ body {
 
 }
 
+.landscape-rotate {
+  position: absolute;
+  transform: rotate(90deg);
+  transform-origin: left top;
+  width: 100vh;
+  height: 100vw;
+  left: 100%;
+  top: 0;
+}
 #app {
   position: relative;
   min-width: 1024px;

+ 1 - 1
src/view/case/records/index.vue

@@ -270,7 +270,7 @@
         <div class="textarea">
           <div>
             <span>现场勘验情况 :</span>
-            <!-- <span @click="handleShowAi" style="color:#26559B;cursor: pointer;float: right;font-weight: bold;">AI</span> -->
+            <span @click="handleShowAi" style="color:#26559B;cursor: pointer;float: right;font-weight: bold;">AI</span>
           </div>
           <el-input
             type="textarea"

+ 8 - 8
src/view/dossier/index.vue

@@ -33,7 +33,7 @@
             <!-- <upload-filled /> -->
             </el-icon>
           <div class="el-upload__text">
-            点击或拖拽文件上传<br />支持 jpg、png、jpeg、doc、pdf ≤ 500MB
+            点击或拖拽文件上传<br />支持 jpg、png、jpeg、doc、pdf、ppt、Excel ≤ 500MB
           </div>
         </el-upload>
       </div>
@@ -117,7 +117,7 @@ const showModal = ref(false);
 const caseId = computed(() => router.currentRoute.value?.params?.caseId);
 const fileInfo = ref({
   accept: ".jpg, .jpeg, .png, .mp4",
-  formats: [".jpg", ".png", ".jpeg", ".doc", ".docx", ".pdf"],
+  formats: [".jpg", ".png", ".jpeg", ".doc", ".docx", ".pdf", ".ppt", ".pptx", ".xls", ".xlsx"],
   DrawFormatDesc: "jpg、png、jpeg、doc、pdf上传",
   fileSize: 500 * 1024 * 1024,
 });
@@ -167,7 +167,7 @@ function getList() {
     active.value.filesTypeId = activeItem.filesTypeId;
     active.value.caseFilesList = activeItem.caseFilesList;
     let newsrcList = [];
-    activeItem.caseFilesList.map((ele) => {
+    activeItem.caseFilesList?.map((ele) => {
       if (isImage(ele.filesUrl)) {
         newsrcList.push(ele.filesUrl);
       }
@@ -195,14 +195,14 @@ const upload = async (file: File) => {
   const fileType = file.name
     .substring(file.name.lastIndexOf("."))
     .toUpperCase();
-  let imgList = [".jpg", ".png", ".jpeg", ".doc", ".docx", ".pdf"];
-  let fileList = [".doc", ".docx", ".pdf"];
+  let imgList = [".jpg", ".png", ".jpeg", ".doc", ".docx", ".pdf",".ppt", ".pptx", ".xls", ".xlsx"];
+  let fileList = [".doc", ".docx", ".pdf",".ppt", ".pptx", ".xls", ".xlsx"];
   if (!imgList.some((type) => type.toUpperCase() === fileType)) {
-    ElMessage.error(`请上传pdf、word 格式文件和 jpg、png、jpeg格式图片`);
+    ElMessage.error(`请上传pdf、doc、ppt、Excel 格式文件和 jpg、png、jpeg格式图片`);
     return false;
   } else if (fileList.includes(fileType.toLowerCase()) ? file.size > 500 * 1024 * 1024 : file.size > 10 * 1024 * 1024) {
     ElMessage.error(
-      `请上传≤10MB jpg、png、jpeg格式图片,及≤500MB pdf、doc文件`
+      `请上传≤10MB jpg、png、jpeg格式图片,及≤500MB pdf、doc、ppt、Excel文件`
     );
     return false;
   } else {
@@ -273,7 +273,7 @@ const handleItem = (item) => {
   active.value.filesTypeId = item.filesTypeId;
   active.value.caseFilesList = item.caseFilesList;
   let newsrcList = [];
-  item.caseFilesList.map((ele) => {
+  item.caseFilesList?.map((ele) => {
     if (isImage(ele.filesUrl)) {
       newsrcList.push(ele.filesUrl);
     }