From 0667f45cd45e348abe66e18a87eb46bc403cf32b Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期四, 02 一月 2025 09:15:37 +0800
Subject: [PATCH] 1. 修改aod数据导入和监测数据导入页面覆盖旧数据复选框的展示位置 2. 修改 将用来控制dialog展示的按钮放在 aod数据导入和监测数据导入 页面内 3. 新增loading并修改aod数据导入和监测数据导入页面按钮的loading样式

---
 src/views/satellitetelemetry/component/SatelliteImport.vue |  287 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 215 insertions(+), 72 deletions(-)

diff --git a/src/views/satellitetelemetry/component/SatelliteImport.vue b/src/views/satellitetelemetry/component/SatelliteImport.vue
index eb962bd..9ed5ba6 100644
--- a/src/views/satellitetelemetry/component/SatelliteImport.vue
+++ b/src/views/satellitetelemetry/component/SatelliteImport.vue
@@ -1,47 +1,123 @@
 <template>
-  <CardDialog title="鐩戞祴鏁版嵁瀵煎叆" :model-value="modelValue" :width="420" @changed="handleChange">
+  <el-button
+    type="primary"
+    class="el-button-custom p-events-auto satellite-right-top"
+    @click="modelValue = !modelValue"
+  >
+    鐩戞祴鏁版嵁瀵煎叆
+  </el-button>
+  <CardDialog
+    title="鐩戞祴鏁版嵁瀵煎叆"
+    v-model="modelValue"
+    :width="420"
+    @changed="handleChange"
+    destroy-on-close
+    :before-close="init"
+  >
     <div class="download">
-      <el-button @click="downloadTemplate" type="primary" class="el-button-custom" size="small"
-        v-loading="downloadLoading">涓嬭浇妯℃澘</el-button>
+      <el-button
+        @click="downloadTemplate"
+        type="primary"
+        class="el-button-custom"
+        size="small"
+        :loading="downloadLoading"
+        >涓嬭浇妯℃澘</el-button
+      >
     </div>
-    <el-form :model="formObj" :rules="rules" ref="formRef" label-position="right" label-width="60px">
+    <el-form
+      :model="formObj"
+      :rules="rules"
+      ref="formRef"
+      label-position="right"
+      label-width="60px"
+    >
       <el-form-item label="鍖哄煙">
-        <OptionLocation2 :level="3" :initValue="true" :checkStrictly="false" :allOption="true" v-model="location"
-          width="200">
+        <OptionLocation2
+          :level="3"
+          :initValue="true"
+          :checkStrictly="false"
+          :allOption="true"
+          v-model="location"
+          width="200"
+        >
         </OptionLocation2>
       </el-form-item>
       <OptionGridGroup ref="gridGroupRef" v-model="gridGroup"></OptionGridGroup>
       <el-form-item label="鏃堕棿" prop="dateTime">
-        <el-date-picker v-model="formObj.dateTime" type="date" placeholder="閫夋嫨鏃堕棿" size="small" :clearable="false"/>
+        <el-date-picker
+          v-model="formObj.dateTime"
+          type="date"
+          placeholder="閫夋嫨鏃堕棿"
+          size="small"
+          :clearable="false"
+        />
       </el-form-item>
       <el-form-item label="">
         <el-row>
-          <el-col>
-            <label><el-checkbox v-model="formObj.update" label="" size="small"
-                :disabled="hasGridData == undefined || hasGridData == false" />鍚屾剰</label>
-          </el-col>
-          <el-col>
-            <el-text class="mx-1" type="danger" v-if="hasGridData == true">褰撴棩閬ユ祴鏁版嵁宸插瓨鍦紝璇峰嬀閫夊悓鎰忓悗杩涜鏁版嵁鏇存柊瑕嗙洊</el-text>
-            <el-text class="mx-1" type="success" v-else-if="hasGridData == false">褰撴棩閬ユ祴鏃犳暟鎹紝鍙柊澧炲鍏�</el-text>
+          <el-col
+            v-loading="tipTextLoading"
+            v-if="!formObj.file || (formObj.file && formObj.file.length == 0)"
+          >
+            <el-text class="mx-1" type="danger" v-if="hasGridData == true"
+              >褰撴棩閬ユ祴鏁版嵁宸插瓨鍦紝璇峰嬀閫�
+              <el-checkbox
+                v-model="formObj.update"
+                label="鍚屾剰"
+                size="small"
+                :disabled="hasGridData == undefined || hasGridData == false"
+              />鍚庤繘琛屾暟鎹洿鏂拌鐩�</el-text
+            >
+            <el-text
+              class="mx-1"
+              type="success"
+              v-else-if="hasGridData == false"
+              >褰撴棩閬ユ祴鏃犳暟鎹紝鍙柊澧炲鍏�</el-text
+            >
           </el-col>
         </el-row>
       </el-form-item>
       <el-form-item>
-        <el-upload v-model:file-list="formObj.file" accept=".xlsx" :limit="1" :auto-upload="false" ref="uploadRef"
-          :on-exceed="handleUploadExceed" :on-change="handleUploadChange">
+        <el-upload
+          v-model:file-list="formObj.file"
+          accept=".xlsx"
+          :limit="1"
+          :auto-upload="false"
+          ref="uploadRef"
+          :on-exceed="handleUploadExceed"
+          :on-change="handleUploadChange"
+        >
           <template #trigger>
-            <el-button :disabled="formObj.update == undefined || (hasGridData == true && formObj.update == false)"
-              type="primary" class="el-button-custom select-file-button" size="small" accept=".xlsx">閫夋嫨鏂囦欢</el-button>
+            <el-button
+              :disabled="
+                formObj.update == undefined ||
+                (hasGridData == true && formObj.update == false)
+              "
+              type="primary"
+              class="el-button-custom select-file-button"
+              size="small"
+              accept=".xlsx"
+              >閫夋嫨鏂囦欢</el-button
+            >
           </template>
-          <el-button @click="onSubmit" type="primary" class="el-button-custom import-button" size="small" :disabled="!formObj.file || formObj.file.length == 0"
-            v-loading="loading">
+          <el-button
+            @click="onSubmit"
+            type="primary"
+            class="el-button-custom import-button"
+            size="small"
+            :disabled="!formObj.file || formObj.file.length == 0"
+            :loading="loading"
+          >
             瀵煎叆
           </el-button>
         </el-upload>
       </el-form-item>
       <el-form-item>
-        <el-text class="mx-1" type="danger">{{ errorTipMsg }}</el-text>
-        <el-text class="mx-1" type="success">{{ successTipMsg }}</el-text>
+        <el-text class="mx-1" type="danger" truncated>{{
+          errorTipMsg
+        }}</el-text>
+        <el-text class="mx-1" type="success" truncated>{{
+          successTipMsg
+        }}</el-text>
       </el-form-item>
     </el-form>
   </CardDialog>
@@ -54,7 +130,7 @@
 
 const gridGroupRef = ref(null);
 const uploadRef = ref(null);
-// 鏄惁鏈夋暟鎹竷灏旂被鍨� 榛樿涓虹┖ 
+// 鏄惁鏈夋暟鎹竷灏旂被鍨� 榛樿涓虹┖
 const hasGridData = ref(null);
 const location = ref({});
 const gridGroup = ref({});
@@ -62,19 +138,30 @@
 const loading = ref(false);
 // 涓嬭浇妯℃澘鏃跺睍绀哄湪涓嬭浇鎸夐挳涓婄殑鍔犺浇
 const downloadLoading = ref(false);
+// 鎻愮ず褰撴棩缃戞牸缁勬槸鍚︽湁鏁版嵁鐨刲oading
+const tipTextLoading = ref(false);
 // 鍦ㄥ鍏ユ寜閽笅鏂癸紙鐣岄潰鐨勪笅闈級閿欒鍜屾纭俊鎭�
 const errorTipMsg = ref('');
 const successTipMsg = ref('');
 const rules = {
-  dateTime: [{ required: true, message: '鏃堕棿涓嶈兘涓虹┖', trigger: 'blur' }],
+  dateTime: [{ required: true, message: '鏃堕棿涓嶈兘涓虹┖', trigger: 'blur' }]
 };
-const props = defineProps({
-  modelValue: Boolean
-});
+const modelValue = ref(false);
+
+
+const init = (done) => {
+  loading.value = false
+  downloadLoading.value = false
+  tipTextLoading.value = false
+  hasGridData.value = undefined
+  formObj.value.dateTime = undefined
+  resetApiTipMsg()
+  done()
+}
 
 const resetApiTipMsg = () => {
-  successTipMsg.value = ''
-  errorTipMsg.value = ''
+  successTipMsg.value = '';
+  errorTipMsg.value = '';
 };
 
 const emit = defineEmits(['update:modelValue']);
@@ -84,23 +171,42 @@
 };
 
 const downloadTemplate = () => {
-  downloadLoading.value = true
-  gridApi.downloadTemplate().then(res => {
-    downloadLoading.value = false
-  }).catch(e => {
-    downloadLoading.value = false
-  });
+  downloadLoading.value = true;
+  gridApi
+    .downloadTemplate()
+    .then((res) => {
+      downloadLoading.value = false;
+    })
+    .catch((e) => {
+      downloadLoading.value = false;
+    });
 };
 // 閫氳繃缃戞牸缁勫拰鏃堕棿 鏌ヨ 鍦ㄨ繖涓や釜鍙傛暟鏉′欢涓嬫槸鍚︽湁缃戞牸鏁版嵁锛屽苟鎻愮ず鍦ㄧ晫闈腑鏈夋垨鑰呮病鏈�
 const checkEmpty = () => {
-  gridApi.fetchGridData(gridGroup.value.id, dayjs(formObj.value.dateTime).format('YYYY-MM-DD HH:mm:ss')).then(res => {
-    if (res.data && res.data.length > 0) {
-      hasGridData.value = true;
-    } else {
-      formObj.value.update = false
-      hasGridData.value = false;
-    }
-  })
+  tipTextLoading.value = true;
+  gridApi
+    .fetchGridData(
+      gridGroup.value.id,
+      dayjs(formObj.value.dateTime).format('YYYY-MM-DD HH:mm:ss')
+    )
+    .then((res) => {
+      // 寤惰繜100ms缁撴潫loading鐘舵��
+      setTimeout(() => {
+        tipTextLoading.value = false;
+      }, 100);
+      if (res.data && res.data.length > 0) {
+        hasGridData.value = true;
+      } else {
+        formObj.value.update = false;
+        hasGridData.value = false;
+      }
+    })
+    .catch((e) => {
+      // 寤惰繜100ms缁撴潫loading鐘舵��
+      setTimeout(() => {
+        tipTextLoading.value = false;
+      }, 100);
+    });
 };
 const handleImportClick = () => {
   loading.value = true;
@@ -112,7 +218,9 @@
   const reader = new FileReader();
   reader.readAsArrayBuffer(formObj.value.file[0].raw);
   reader.onload = async (theFile) => {
-    const binary = new Blob([theFile.target.result], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
+    const binary = new Blob([theFile.target.result], {
+      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+    });
     formData.append('excel', binary);
     formData.append('groupId', gridGroup.value.id);
     formData.append('type', type);
@@ -124,53 +232,60 @@
     gridApi
       .importData(formData)
       .then((res) => {
-        resetApiTipMsg()
+        resetApiTipMsg();
         loading.value = false;
         if (res && res.success == true) {
           // 瀵煎叆鎴愬姛锛�1.瀵煎叆鎴栬�呰鐩栨垚鍔燂紝鏄惁涓虹┖鐘舵�佹敼鍙樹簡锛岄噸鏂版鏌�
-          checkEmpty()
-          successTipMsg.value = res.data.result
+          checkEmpty();
+          // 鏍规嵁褰撳墠鎿嶄綔鏄彃鍏ヨ繕鏄洿鏂板睍绀烘垚鍔熸秷鎭�
+          if (isUpdate) {
+            successTipMsg.value = '瑕嗙洊鎴愬姛';
+          }else {
+            successTipMsg.value = '瀵煎叆鎴愬姛';
+          }
         } else {
-          errorTipMsg.value = res.message
+          errorTipMsg.value = res.message;
         }
-      }).catch(e => {
-        loading.value = false;
-        errorTipMsg.value = e
       })
-  }
+      .catch((e) => {
+        loading.value = false;
+        errorTipMsg.value = e;
+      });
+  };
 };
 // 褰撻�夋嫨鏂囦欢鍚庯細 1. 閲嶇疆鎻愮ず淇℃伅锛岄槻姝㈣瀵� 2.瀵规枃浠剁被鍨嬬殑妫�鏌�
 const handleUploadChange = (file, files) => {
-  resetApiTipMsg()
+  resetApiTipMsg();
   const fileType = file.raw.type;
   // 妫�鏌ユ枃浠剁被鍨嬫槸鍚︿负 'xlsx'
-  if (fileType !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
+  if (
+    fileType !==
+    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+  ) {
     ElMessage({
       message: '鏂囦欢绫诲瀷閿欒锛岃閲嶆柊涓婁紶xlsx绫诲瀷鏂囦欢',
       type: 'error'
-    })
+    });
     files.splice(0, 1); // 闃绘涓婁紶
   }
 };
 // 鏂伴�夋嫨鏂囦欢鏇挎崲鏃ф枃浠�
 const handleUploadExceed = (files) => {
-  const file = files[0]
-  uploadRef.value.clearFiles()
-  uploadRef.value.handleStart(file)
+  const file = files[0];
+  uploadRef.value.clearFiles();
+  uploadRef.value.handleStart(file);
 };
 const { formObj, formRef, edit, onSubmit, onCancel } = useFormConfirm({
   submit: {
     do: handleImportClick
   },
   cancel: {
-    do: () => {
-
-    }
+    do: () => {}
   }
 });
 watch(location, (nv, ov) => {
   if (nv != ov) {
-    resetApiTipMsg()
+    resetApiTipMsg();
     const area = {
       provinceCode: nv.pCode,
       provinceName: nv.pName,
@@ -185,17 +300,30 @@
   }
 });
 // 褰撶綉鏍肩粍鍜屾椂闂撮兘涓嶄负绌� 骞朵笖 鏈変竴涓潯浠舵敼鍙樺悗閲嶆柊妫�鏌ユ槸鍚︽湁缃戞牸鏁版嵁
-watch(gridGroup, (nv) => {
-  if (nv && Object.keys(nv).length === 0 && formObj.value.dateTime && Object.keys(formObj.value.dateTime).length === 0) {
-    checkEmpty()
-  }
-}, { deep: true });
+watch(
+  gridGroup,
+  (nv) => {
+    if (
+      nv &&
+      Object.keys(nv).length === 0 &&
+      formObj.value.dateTime &&
+      Object.keys(formObj.value.dateTime).length === 0
+    ) {
+      checkEmpty();
+    }
+  },
+  { deep: true }
+);
 
-watch(formObj, (nv) => {
-  if (nv.dateTime && gridGroup.value) {
-    checkEmpty()
-  }
-}, { deep: true });
+watch(
+  formObj,
+  (nv) => {
+    if (nv.dateTime && gridGroup.value) {
+      checkEmpty();
+    }
+  },
+  { deep: true }
+);
 </script>
 <style scoped>
 .download {
@@ -222,4 +350,19 @@
 ::v-deep .el-select {
   width: 200px !important;
 }
+
+::v-deep .el-checkbox.el-checkbox--small .el-checkbox__label {
+  font-size: 15px !important;
+}
+
+::v-deep .el-upload-list__item-file-name {
+  color: white;
+  overflow: visible;
+}
+
+.satellite-right-top {
+  width: 120px;
+  position: absolute;
+  right: 0px;
+}
 </style>

--
Gitblit v1.9.3