Explorar o código

Merge branch 'bug-cd-3911'

hbchen hai 9 meses
pai
achega
ba9d250227
Modificáronse 1 ficheiros con 26 adicións e 14 borrados
  1. 26 14
      src/views/dataEntry_manage/onlineExcelCopy.vue

+ 26 - 14
src/views/dataEntry_manage/onlineExcelCopy.vue

@@ -263,9 +263,23 @@ created() {
         }
       }
 
-      // 处理复制粘贴造成的漏洞 - 还原数据
+      // 处理复制粘贴造成的漏洞 - 还原数据 PS:这个钩子函数只有在单元格在可是区域内才会执行
       this.options.hook.cellRenderBefore=(cell,position,sheet,ctx)=>{
-        // console.log('cellRenderBeforecellRenderBefore');
+        // 清除两边空格
+        if(cell && cell.m && typeof(cell.m)=='string'){
+          cell.m = cell.m.trim()  
+        }
+        if(cell && cell.v && typeof(cell.v)=='string'){
+          cell.v = cell.v.trim()  
+        }
+        /**
+         * 从excel整个单元格复制,到这里进入编辑模式的粘贴,出来个cell.ct.s,不知道啥东西,官网也没写
+         * 看似有内容,实则保存没内容,因为cell.m和cell.v 都是空。直接清掉了
+         */
+        if(cell && cell.ct && cell.ct.s){
+          cell.ct.s='' 
+        }
+        
         // 是否更改了受保护的数据
         let haveUpdatedProtectedData=false
         if([3,4].includes(position.r) && position.c>=0 && position.c<=dataList.length){
@@ -318,7 +332,6 @@ created() {
           this.refreshManual()
         }
       }
-
       // 拿出所有数组
       let arr = dataList.map((item => item.DataList)).flat()
       // 拿出所有数组的日期并展平排序
@@ -509,27 +522,16 @@ created() {
         this.secondClassName = this.secondClassifyArray[0].ClassifyName
       }
       luckysheet.refresh()
-      // for (let i= 1;  i< col+1 ; i++) {
-      //   luckysheet.setCellValue(0,i,this.firstClassName,{isRefresh:false})
-      //   luckysheet.setCellValue(1,i,this.secondClassName,{isRefresh:i==col?true:false})
-      // }
     },
     // 切换选择二级分类
     changeSecondClassify(id){
       let col = this.options.column
       let item = this.secondClassifyArray.find(item => item.ClassifyId == id)
       this.secondClassName=item.ClassifyName
-      // for (let i= 1;  i< col+1; i++) {
-      //   luckysheet.setCellValue(1,i,this.secondClassName,{isRefresh:i==col?true:false})
-      // }
       luckysheet.refresh()
     },
     // 切换选择频度
     changeFrequency(value){
-      // let col = this.options.column
-      // for (let i= 1;  i< col+1; i++) {
-      //   luckysheet.setCellValue(2,i,value,{isRefresh:i==col?true:false})
-      // }
       luckysheet.refresh()
     },
     saveExcel(){
@@ -537,6 +539,16 @@ created() {
         if(valid){
           this.saveLoading=true
           let data = luckysheet.getAllSheets()
+          for (let i = 0; i < data[0].data.length; i++) {
+            // 清除日期列的两边的空格,防止保存时日期变成0000-00-00
+            const element = data[0].data[i][0];
+            if(element && element.v && typeof(element.v)=='string'){
+              element.v = element.v.trim()  
+            }
+            if(element && element.m && typeof(element.m)=='string'){
+              element.m = element.m.trim()  
+            }
+          }
           dataInterence.saveOnlineExcel({...data[0],ClassifyId:this.dataForm.secondClassify}).then(res=>{
           if(res.Ret == 200) {
             this.setCache('submit')