diff --git a/shandan-control/src/main/resources/static/js/directory/reviewDirectory.js b/shandan-control/src/main/resources/static/js/directory/reviewDirectory.js new file mode 100644 index 0000000..d855bf2 --- /dev/null +++ b/shandan-control/src/main/resources/static/js/directory/reviewDirectory.js @@ -0,0 +1,256 @@ +/** + *
+ * 修改:在数据管控系统中目录审核页面改为按目录结构显示 + * xiongcl 20210412 + *
+ * + * @author Administrator + * @since 2021/6/1 + */ +// 目录树数据缓存 +const dirCache = new Map(); + +function startRender() { + layui.use(['ReviewComponent'], function () { + const ReviewComponent = layui.ReviewComponent; + // 目录树 + let dirTree, metaListTable, tempNode; + /** + * 加载数据资源列表 + */ + const loadMetadataList = function (directory) { + const {basicData} = directory; + if (!basicData) return; + let dirId = basicData.id, uploadPermis = true, viewPermis = true, removePermis = true, + permis = {uploadPermis, viewPermis, removePermis}; + if (!WritePermisDirIds.includes(basicData.id) || dirId == DIR_ROOT_ID) { + permis.uploadPermis = false; + permis.removePermis = false; + } + if (!ReadPermisDirIds.includes(basicData.id)) { + permis.viewPermis = false; + dirId = DIR_ROOT_ID + } + metaListTable = listPage.init({ + table: { + permis: permis, + id: 'dirMetadataTable', + //reviewStatusC: directory.basicData.reviewStatus, + toolbar: '#tableToolBar', + searchFieldNames: 'metadataName', + url: `${ctx}/business/metadata/list/directory?directoryId=${dirId}&allChild=true`, + height: 'full-110', + method: 'get', + text: {none: permis.viewPermis ? '没有数据' : '没有权限'}, + parseData: function (res) { //res 即为原始返回的数据 + let data = res.data || {}; + data.records = data.records.map(item => { + item.permis = permis + return item; + }); + return { + "flag": res.flag, //解析接口状态 + "msg": res.msg, //解析提示文本 + "records": data.records || res.records || data, //解析数据长度 + "total": data.total || data.length //解析数据列表 + }; + }, + cols: [[ + {field: 'id', title: 'ID', hide: true}, + {field: 'resourceName', title: '数据名称', width: 300}, + {field: 'directoryPath', title: '所属目录'}, + {field: 'resourceComment', title: '中文注释/描述'}, + {field: 'themeTask', title: '主题任务', hide: true}, + { + field: 'dataSource', + title: '数据来源', + width: 160, + templet: data => DICT.getText('data_source', data.dataSource) || data.dataSource + }, + {field: 'taskTime', title: '任务时间', width: 160, align: 'center'}, + { + fixed: 'right', + title: '操作', + toolbar: `#rowToolBar`, + width: 100, + align: 'center' + } + ]], + }, + }); + + // 查看按钮监听 + metaListTable.addTableRowEvent('details', function (obj) { + if (obj.resourceType === 'file') { + openMaxLayerWithURL(`${ctx}/sys/file/view?fileId=${obj.id}`) + } else { + openMaxLayerWithURL(`${ctx}/business/metadata/details/${obj.id}`) + } + }) + } + + // 加载并渲染目录树 + let currentNode, currentParentNode; + let treeChildrenUrl = `${ctx}/business/directory/tree?busType=` + bus_type + let treeOps = { + id: 'directoryTree', + url: treeChildrenUrl, + cache: false, + // type: 'all', + initLevel: 1, // 默认展开一级 + scroll: '#tree-toobar-div', + width: 'fit-content', + toolbar: true, + toolbarShow: [], //置空默认菜单项 + sendSuccess: function (res) { + if (res.flag) { + res.data.forEach(item => { + dirCache.set(item.id, item); + }) + + setTimeout(() => { + $('.dtree-nav-div.dtree-theme-item').each((index, elem) => { + let data = $(elem).data('basic'); + if (data) { + if (typeof data === 'string') { + data = JSON.parse(data); + } + let title = data.metadataComment || data.directoryName || data.fileName + data.fileSuffix; + $(elem).attr('title', title) + } + }); + }, 200) + } + }, + done: function (nodes, elem) { + // 模拟鼠标点击事件展开第一层目录 + elem.find('li:first>div:first>i:first').click(); + $('#directoryTree cite span').on('click', function (event) { + event.stopPropagation(); + const target = event.target; + const id = $(target).data('id'); + const status = $(target).data('status') + if (status == ReviewStatus.FAIL || status == ReviewStatus.REJECTED) { + showLoading() + $.get(`${ctx}/business/review/get/entity?entityId=${id}`, {}, function (res) { + closeLoading() + if (res.flag) { + const reviewData = res.data; + const content = ` +