From 96be59a64cc1d8fcaf1034e787717663c68df4a7 Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期一, 26 五月 2025 10:39:58 +0800 Subject: [PATCH] 2025-5-26提交 --- src/assets/js/toolClass.js | 398 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 391 insertions(+), 7 deletions(-) diff --git a/src/assets/js/toolClass.js b/src/assets/js/toolClass.js index d80ffcd..fb39473 100644 --- a/src/assets/js/toolClass.js +++ b/src/assets/js/toolClass.js @@ -1,5 +1,13 @@ import SparkMD5 from 'spark-md5' -import { getPublicImage } from '@/assets/js/middleGround/tool.js' +import { + getPublicImage +} from '@/assets/js/middleGround/tool.js' +import config from './config' +import moment from "moment"; + +import dps5Api from '@/assets/js/middleGround/api/dps5.js' + + var tool = { secondToTime(second) { @@ -94,9 +102,7 @@ nrr.push({ linkProtectType: e.linkProtectType, linkType: e.linkType, - md5: e.md5, - fileName: e.fileName ?? '', - extension: e.extension ?? '' + md5: e.md5 }) ) } @@ -169,7 +175,9 @@ obj.setDataAndFileLinkListRequest = linkList } else if (typeof value[k] == 'object' && k == 'region') { obj.strValue = value[k]?.join('/') - obj.setDataAndFileLinkListRequest = [{ area: value[k] }] + obj.setDataAndFileLinkListRequest = [{ + area: value[k] + }] } else { obj.strValue = value[k].toString() } @@ -289,6 +297,376 @@ }) } +// 鑾峰彇鏂囦欢 +export function getPublicFile(md5, isToken) { + const { + tokenKey, + requestCtx + } = config + let src = null + let token = localStorage.getItem(tokenKey) + if (md5) { + if (isToken) { + src = requestCtx + `/file/api/ApiDownloadForAuthorize?md5=${md5}&token=${token}` + } else { + src = requestCtx + `/file/api/ApiDownload?md5=${md5}` + } + } else { + return '' + } + return src +} + + + +export function getCmsItem({ + path, + storeId, + repositoryId, + type, + paging, + sort, + linkTypes, + fields, + filters, + subQuery, + keyword, + itemId, + resType, + havePublishInfo, + isRightSlider, + direction, + queryParent +}) { + const query = { + AccessControl: { + Path: path, + StoreId: storeId + '', + RepositoryId: repositoryId + '', + Type: type ? type : '\\' + }, + PageQuery: paging, + SortQuery: sort ? [sort] : [], + CreateDate: [], + Description: [], + Name: [], + RefCode: [], + Type: [], + SysType: [], + TypeId: [], + State: [], + Tag: [], + LinkDepartment: [], + LinkOrg: [], + LinkInfo: [], + LinkId: [], + LinkOrder: [], + LinkParentId: [], + LinkFile: [], + LinkType: linkTypes ?? [], + LinkStore: [], + LinkRepository: [], + LinkPath: [], + LinkAppId: [], + Creator: [], + ...fields, + ...filters, + ...subQuery + }; + if (havePublishInfo) { + query['PublishInfo'] = []; + } + if (queryParent) { + query['QueryParent'] = { + ...queryParent + }; + } + if (keyword) { + delete query.Name; + query['Name*'] = [keyword]; + } + if (direction && isRightSlider) { + query['Direction'] = [direction]; + } + if (itemId) query['Id='] = [`${itemId}`]; + if (query['CreatorAndAppRole'] != null) { + delete query.Creator; + } + const body = { + query: JSON.stringify({ + Query: [{ + Q1: query + }] + }) + }; + return dps5Api.QueryCmsItem(body).then((res) => { + if (res && res.length > 0) { + const data = res[0]; + const datas = handleCmsItemListRequestData(data.datas, fields, path, storeId, repositoryId); + return { + datas, + total: data.totalCount + }; + } else { + return { + datas: [], + total: 0 + }; + } + }); +} + + + +export const handleCmsItemListRequestData = (datas, fields, path, storeId, repositoryId) => { + const dataList = []; + for (let i = 0; i < datas.length; i++) { + const item = datas[i]; + const _fields = {}; + const _datas = []; + if (fields != null) { + for (let fieldKey in fields) { + // 鍏煎绛涢�夋潯浠剁殑瀛楁鍊艰幏鍙栵紝鍥犱负鍚庡彴绛涢�夊拰鍙栧�煎彧鑳戒紶涓�涓紝閮戒細杩斿洖鍊� + fieldKey = fieldKey.replace(/[!=<>*]/g, ''); + if (item.datas[fieldKey]) { + let values = []; + if (typeof item.datas[fieldKey] == 'string') { + values = JSON.parse(item.datas[fieldKey]); + } else { + values = item.datas[fieldKey]; + } + if (values ?.length > 0) { + // 鐢ㄥ瓧娈靛悕澶勭悊杩斿洖鐨勫瓧娈靛�� + if (values[0].Value) { + _fields[fieldKey] = values[0].Value; + values[0].sequenceNum = values[0].SequenceNum; + } + // 鍏煎澶勭悊鏁版嵁杩斿洖鐨刱ey鏄疌msItemData + // if (values[0].CmsItemData) { + // _fields[fieldKey] = values[0].CmsItemData.Value; + // values[0].sequenceNum = values[0].CmsItemData.SequenceNum; + // } + + item.datas[fieldKey] = values[0]; + if (values ?.length > 1) { + const isFile = values.find((citem) => citem.FileList ?.length > 0); + const dataItems = deduplicateArray(values, 'FieldId'); + if (!isFile) { + _datas.push(dataItems[0]); + } else { + const customFile = { + customFileList: values, + name: fieldKey, + md5: _fields[fieldKey], + FieldId: values[0].FieldId, + SequenceNum: values[0].SequenceNum + }; + _datas.push(customFile); + } + } else { + _datas.push(values[0]); + } + } + } + } + } + + if (item.datas.LogQuery) { + item.datas.LogQuery = JSON.parse(item.datas.LogQuery); + } + + const subDatas = {}; + if (item.subDatas) { + for (let subData of item.subDatas) { + const tag = subData.queryTag.replace('Query', ''); + subDatas[tag] = subData.datas; + } + } + dataList.push({ + ...item, + id: item.id, + name: item.datas.Name ? item.datas.Name : item.name, + icon: item.datas.Icon, + storeId: storeId, + repositoryId: repositoryId, + refCode: item.datas.RefCode === '[]' ? null : item.datas.RefCode, + state: item.datas.State, + type: item.datas.Type, + tag: item.datas.Tag, + creator: item.datas.Creator ? JSON.parse(item.datas.Creator) : undefined, + linkType: item.datas.LinkType, + childrenCount: parseInt(item.datas.ChildrenCount ?? '0'), + childrenFolderCount: parseInt(item.datas.ChildrenFolderCount ?? '0'), + childrenChannelCount: parseInt(item.datas.ChildrenChannelCount ?? '0'), + childrenCmsItemCount: parseInt(item.datas.ChildrenCmsItemCount ?? '0'), + childrenFileCount: parseInt(item.datas.ChildrenFileCount ?? '0'), + createDate: moment(item.datas.CreateDate).format('YYYY-MM-DD HH:mm:ss'), + description: item.datas.Description, + sysType: item.datas.SysType, + idPath: path + '\\' + item.id, + typeId: parseInt(item.datas.TypeId), + linkAppId: item.datas.linkAppId, + linkFile: JSON.parse(item.datas.LinkFile ?? '[]'), + PublishInfo: JSON.parse(item.datas.PublishInfo ?? '[]'), + linkInfo: item.datas.LinkInfo ? JSON.parse(item.datas.LinkInfo) : [], + linkPath: item.datas.LinkPath ?? null, + linkOrg: item.datas.LinkOrg ? JSON.parse(item.datas.LinkOrg) : [], + linkDepartment: item.datas.LinkDepartment? JSON.parse(item.datas.LinkDepartment) : [], + ..._fields, + datas: item.datas, + fieldList: _datas, + subDatas + }); + } + return dataList; +}; + +// type缁撴瀯澶勭悊 +export const handleTypeList = (list) => { + for (let i = 0; i < list.length; i++) { + const type = list[i]; + try { + type.cfg = JSON.parse(type.config); + } catch (error) { + type.cfg = null; + } + const fieldRefcodeMap = {}; + const tableHeaderFieldList = []; + const isSearchFieldList = []; + const isAdvSearchFieldList = []; + const isFilterFieldList = []; + handleType({ + typeFieldList: type.typeLinkList, + fieldRefcodeMap, + tableHeaderFieldList, + isSearchFieldList, + isAdvSearchFieldList, + isFilterFieldList + }); + type.fieldRefcodeMap = fieldRefcodeMap; + type.tableHeaderFieldList = tableHeaderFieldList; + type.isSearchFieldList = isSearchFieldList; + type.isAdvSearchFieldList = isAdvSearchFieldList; + type.isFilterFieldList = isFilterFieldList; + } + + return list; +}; + +const handleType = ({ + typeFieldList, + fieldRefcodeMap, + tableHeaderFieldList, + isSearchFieldList, + isAdvSearchFieldList, + isFilterFieldList +}) => { + for (let i = 0; i < typeFieldList.length; i++) { + const item = typeFieldList[i]; + try { + item.cfg = JSON.parse(item.config); + } catch (error) { + item.cfg = null; + } + if (item.typeField) { + try { + item.typeField.cfg = JSON.parse(item.typeField.config); + } catch (error) { + item.typeField.cfg = null; + } + fieldRefcodeMap[item.typeField.refCode] = item; + } + if (item.cfg && item.cfg.isColHeader) { + tableHeaderFieldList.push(item); + } + if (item.cfg && item.cfg.isSearch) { + isSearchFieldList.push(item); + } + if (item.cfg && item.cfg.isAdvSearch) { + isAdvSearchFieldList.push(item); + } + if (item.cfg && item.cfg.isFilter) { + isFilterFieldList.push(item); + } + if (item.children && item.children.length) { + handleType({ + typeFieldList: item.children, + fieldRefcodeMap, + tableHeaderFieldList, + isSearchFieldList, + isAdvSearchFieldList, + isFilterFieldList + }); + } + } +}; + + +//澶勭悊鏍戝舰缁撴瀯 +const handleTreeData = (datas, parent, noTriggerSelect = false) => { + let parentData = {}; + if (parent) { + parentData = { ...parent, parent: null }; + } else { + parentData = null; + } + const list = []; + for (let i = 0; i < datas.length; i++) { + const data = datas[i]; + const obj = { + label: data.name, + key: parentData ? parentData.key + "_" + i : i + "", + namePath: parentData ? parentData.namePath + "\\" + data.name : data.name, + icon: data.icon, + data: data, + parent: parentData, + leaf: false, + children: [], + }; + if (data["children"] && data["children"].length) { + obj.leaf = false; + obj.children = handleTreeData( + data["children"], + { + ...data, + key: obj.key, + namePath: obj.namePath, + }, + i == 0 ? false : true // 濡傛灉鏈夊瓙鏁版嵁澶勭悊锛屽彧鏈夌涓�鏉℃暟鎹渶瑕佸睍寮�鍜屽洖璋� + ); + } else { + obj.leaf = + !data["childrenChannelCount"] || data["childrenChannelCount"] == 0; + } + list.push(obj); + } + console.log(list, "list"); + return list; +}; + + +//鑾峰彇璧勬簮 + +const getResourceItem = async (path,storeInfo,filters,fields) => { + const params = { + path:path.data.idPath, + storeId:storeInfo.storeId, + repositoryId:storeInfo.repositoryId, + type: "\\", + sort: { + LinkOrder: "Asc", + }, + paging: { + Start: 0, + Size: 50, + }, + filters:{...filters}, + fields:{...fields} + } + const res = await getCmsItem(params); + + return res; +} export default { @@ -298,5 +676,11 @@ worksDataBytool, UpdateworksDataBytool, getPublicImage, - worksData -} + worksData, + getCmsItem, + getPublicFile, + handleTypeList, + handleTreeData, + getResourceItem + // parseHtml, +} \ No newline at end of file -- Gitblit v1.9.1