| 
					
				 | 
			
			
				@@ -0,0 +1,416 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useMessage } from '/@/hooks/web/useMessage'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defHttp } from '/@/utils/http/axios'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useGlobSetting } from '/@/hooks/setting'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const globSetting = useGlobSetting(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const baseUploadUrl = globSetting.uploadUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, toRaw, unref, reactive } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { uploadMyFile } from '/@/api/common/api'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import excel from '/@/assets/svg/fileType/excel.svg'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import other from '/@/assets/svg/fileType/other.svg'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import pdf from '/@/assets/svg/fileType/pdf.svg'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import txt from '/@/assets/svg/fileType/txt.svg'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import word from '/@/assets/svg/fileType/word.svg'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { createImgPreview } from '/@/components/Preview'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {EmojiIndex} from "emoji-mart-vue-fast/src"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import data from "emoji-mart-vue-fast/data/apple.json"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+enum Api { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  list = '/sys/comment/listByForm', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  addText = '/sys/comment/addText', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  deleteOne = '/sys/comment/deleteOne', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  fileList = '/sys/comment/fileList', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  logList = '/sys/dataLog/queryDataVerList', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  queryById = '/sys/comment/queryById', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  getFileViewDomain = '/sys/comment/getFileViewDomain', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 文件预览地址的domain 在后台配置的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let onlinePreviewDomain = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 获取文件预览的domain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const getViewFileDomain = () => defHttp.get({ url: Api.getFileViewDomain }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 列表接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const list = (params) => defHttp.get({ url: Api.list, params }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 查询单条记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const queryById = (id) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let params = { id: id }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return defHttp.get({ url: Api.queryById, params },{ isTransformResponse: false }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 文件列表接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const fileList = (params) => defHttp.get({ url: Api.fileList, params }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 删除单个 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const deleteOne = (params) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 保存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const saveOne = (params) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let url = Api.addText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return defHttp.post({ url: url, params }, { isTransformResponse: false }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 数据日志列表接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const getLogList = (params) => defHttp.get({ url: Api.logList, params }, {isTransformResponse: false}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 文件上传接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const uploadFileUrl = `${baseUploadUrl}/sys/comment/addFile`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function useCommentWithFile(props) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let uploadData = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    biz: 'comment', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    commentId: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const { createMessage } = useMessage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const buttonLoading = ref(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  //确定按钮触发 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function saveCommentAndFiles(obj, fileList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buttonLoading.value = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setTimeout(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      buttonLoading.value = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await saveComment(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await uploadFiles(fileList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 保存评论 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function saveComment(obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const {fromUserId, toUserId, commentId, commentContent} = obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let commentData = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tableName: props.tableName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tableDataId: props.dataId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      fromUserId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      commentContent, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      toUserId: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      commentId: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(toUserId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      commentData.toUserId = toUserId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(commentId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      commentData.commentId = commentId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    uploadData.commentId = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const res = await saveOne(commentData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (res.success) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uploadData.commentId = res.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      createMessage.warning(res.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return Promise.reject('保存评论失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function uploadOne(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let url = uploadFileUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const formData = new FormData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formData.append('file', file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formData.append('tableName', props.tableName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formData.append('tableDataId', props.dataId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Object.keys(uploadData).map((k) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      formData.append(k, uploadData[k]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uploadMyFile(url, formData).then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('uploadMyFile', res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res && res.data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res.data.result == 'success') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            resolve(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            createMessage.warning(res.data.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            reject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          reject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function uploadFiles(fileList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (fileList && fileList.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let i = 0; i < fileList.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let file = toRaw(fileList[i]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await uploadOne(file.originFileObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    saveCommentAndFiles, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buttonLoading, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function uploadMu(fileList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const formData = new FormData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // let arr = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for(let file of fileList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formData.append('files[]', file.originFileObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  console.log(formData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let url = `${baseUploadUrl}/sys/comment/addFile2`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  uploadMyFile(url, formData).then((res: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('uploadMyFile', res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 显示文件列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function useFileList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const imageSrcMap = reactive({}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const typeMap = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    xls: excel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    xlsx: excel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdf: pdf, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    txt: txt, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    docx: word, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    doc: word, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   function getBackground(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('获取文件背景图', item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isImage(item)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return 'none' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const name = item.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(!name){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 'none'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const suffix = name.substring(name.lastIndexOf('.') + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('suffix', suffix) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let bg = typeMap[suffix]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!bg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bg = other; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return bg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function getBase64(file, id){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      //声明js的文件流 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let reader = new FileReader(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(file){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //通过文件流将文件转换成Base64字符串 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reader.readAsDataURL(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //转换成功后 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reader.onload = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let base = reader.result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log('base', base) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          imageSrcMap[id] = base; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log('imageSrcMap', imageSrcMap) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          resolve(base) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        reject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function handleImageSrc(file){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(isImage(file)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let id = file.uid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getBase64(file, id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function downLoad(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let url = getFileAccessHttpUrl(file.url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (url) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      window.open(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function getFileSize(item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let size = item.fileSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!size) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return '0B'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let temp = Math.round(size / 1024); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return temp + ' KB'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const selectFileList = ref<any[]>([]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function beforeUpload(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleImageSrc(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    selectFileList.value = [...selectFileList.value, file]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('selectFileList', unref(selectFileList)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function handleRemove(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const index = selectFileList.value.indexOf(file); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const newFileList = selectFileList.value.slice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    newFileList.splice(index, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    selectFileList.value = newFileList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function isImage(item){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const type = item.type||''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (type.indexOf('image') >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function getImageSrc(file){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(isImage(file)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let id = file.uid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(id){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(imageSrcMap[id]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return imageSrcMap[id]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }else if(file.url){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //数据库中地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let url = getFileAccessHttpUrl(file.url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return url; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 显示图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * @param item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function getImageAsBackground(item){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let url = getImageSrc(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(url){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "backgroundImage": "url('"+url+"')" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 预览列表 cell 图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * @param text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function viewImage(file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(isImage(file)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let text = getImageSrc(file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (text) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let imgList = [text]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        createImgPreview({ imageList: imgList }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(file.url){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //数据库中地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let url = getFileAccessHttpUrl(file.url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await initViewDomain(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //本地测试需要将文件地址的localhost/127.0.0.1替换成IP, 或是直接修改全局domain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //url = url.replace('localhost', '192.168.1.100') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //如果集成的KkFileview-v3.3.0+ 需要对url再做一层base64编码 encodeURIComponent(encryptByBase64(url)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        window.open(onlinePreviewDomain+'?officePreviewType=pdf&url='+encodeURIComponent(url)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 初始化domain 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async function initViewDomain(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(!onlinePreviewDomain){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      onlinePreviewDomain = await getViewFileDomain(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(!onlinePreviewDomain.startsWith('http')){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      onlinePreviewDomain = 'http://'+ onlinePreviewDomain; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    selectFileList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getBackground, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getFileSize, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    downLoad, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    beforeUpload, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleRemove, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    isImage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getImageSrc, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getImageAsBackground, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    viewImage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 用于emoji渲染 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function useEmojiHtml(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const COLONS_REGEX = new RegExp('([^:]+)?(:[a-zA-Z0-9-_+]+:(:skin-tone-[2-6]:)?)','g'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let emojisToShowFilter = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let emojiIndex = new EmojiIndex(data, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emojisToShowFilter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    exclude:['recent','people','nature','foods','activity','places','objects','symbols','flags'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function getHtml(text) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(!text){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return text.replace(COLONS_REGEX, function (match, p1, p2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const before = p1 || '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (endsWith(before, 'alt="') || endsWith(before, 'data-text="')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return match 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let emoji = emojiIndex.findEmoji(p2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!emoji) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return match 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return before + emoji2Html(emoji) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return text; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function endsWith(str, temp){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return str.endsWith(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  function emoji2Html(emoji) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let style = `position: absolute;top: -3px;left: 3px;width: 18px; height: 18px;background-position: ${emoji.getPosition()}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return `<span style="width: 24px" class="emoji-mart-emoji"><span class="my-emoji-icon emoji-set-apple emoji-type-image" style="${style}"> </span> </span>` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    emojiIndex, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getHtml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 获取modal窗体高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function getModalHeight(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return window.innerHeight; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |