Commit cd4fa09c by zhaochengxiang

批量编辑

parent 9da5f4cf
...@@ -280,4 +280,12 @@ export function* getResourceRelatedMetadataStatus() { ...@@ -280,4 +280,12 @@ export function* getResourceRelatedMetadataStatus() {
export function* getElementValues(payload) { export function* getElementValues(payload) {
return yield call(service.getElementValues, payload) return yield call(service.getElementValues, payload)
}
export function* getResourceBatchEditInfo(payload) {
return yield call(service.getResourceBatchEditInfo, payload)
}
export function* resourceBatchEdit(payload) {
return yield call(service.resourceBatchEdit, payload)
} }
\ No newline at end of file
...@@ -270,5 +270,12 @@ export function getPreviewRangeByDirId(payload) { ...@@ -270,5 +270,12 @@ export function getPreviewRangeByDirId(payload) {
export function getElementValues(payload) { export function getElementValues(payload) {
return GetJSON("/dataassetmanager/parameterApi/conf/getPropertiesByDataAssetType", payload); return GetJSON("/dataassetmanager/parameterApi/conf/getPropertiesByDataAssetType", payload);
}
export function getResourceBatchEditInfo(payload) {
return GetJSON("/dataassetmanager/resourceApi/getBatchEditInfo", payload)
}
} export function resourceBatchEdit(payload) {
\ No newline at end of file return PostJSON("/dataassetmanager/resourceApi/batchEdit", payload)
}
\ No newline at end of file
import React from 'react' import React from 'react'
import { Tooltip, Typography, Input, Space, Button, Form } from 'antd' import { Tooltip, Typography, Input, Space, Button, Form, Spin } from 'antd'
import { SettingOutlined } from '@ant-design/icons' import { SettingOutlined } from '@ant-design/icons'
import { useClickAway } from 'ahooks' import { useClickAway } from 'ahooks'
import LocalStorage from 'local-storage'
import { dispatch } from '../../../model'
import { usePage } from '../../../util/hooks/page' import { usePage } from '../../../util/hooks/page'
import Table from '../../../util/Component/Table' import Table from '../../../util/Component/Table'
import { getQueryParam, isSzseEnv } from '../../../util' import { getQueryParam, isSzseEnv } from '../../../util'
...@@ -10,789 +12,30 @@ import { EditableCell } from '../Model/Component/ImportActionTable' ...@@ -10,789 +12,30 @@ import { EditableCell } from '../Model/Component/ImportActionTable'
import '../Model/Component/EditModel.less' import '../Model/Component/EditModel.less'
const mockData = [
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"TEST_HANA_TAB1",
"",
"{\"tableEnName\":\"TEST_HANA_TAB1\",\"tableCnName\":\"\",\"tableName\":\"TEST_HANA_TAB1\",\"metadataTableId\":\"Table\\u003d1\\u003d4a326797fc4a475fa05d2d36ef3816bf\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d05ad5e743c1b4b3bbce314eecefb685c\",\"metadataColumnName\":\"ID\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d218f8cb5817749bd8ce62be4a7a40a14\",\"metadataColumnName\":\"NAME\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d6d10a4a7d1b24e5ba989e913f4c60d80\",\"metadataColumnName\":\"SEX\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d86029e9cfc614217993f4be1b2de2115\",\"metadataColumnName\":\"REMARK\"}]}"
],
"id": "6507ebb29e14e62b3165fa79",
"operationType": null,
"dirId": "6281bc809e14e650f88e2538",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"ACT_RU_TASK",
"",
"{\"tableEnName\":\"ACT_RU_TASK\",\"tableCnName\":\"\",\"tableName\":\"ACT_RU_TASK\",\"metadataTableId\":\"Table\\u003d1\\u003d06e5265d90ad447d93c4f58c178a4870\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003de6db702a66e645ad9b41abefc287de85\",\"metadataColumnName\":\"ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d594fa24dd82749aaa04029c347c0ff11\",\"metadataColumnName\":\"REV_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d9084633ffd6b4cfda290cada25dbfba7\",\"metadataColumnName\":\"EXECUTION_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d7bc0984ba5274aaa96901a0254d20ee6\",\"metadataColumnName\":\"PROC_INST_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd5a8523aabeb44989450c0c4d8a6282d\",\"metadataColumnName\":\"PROC_DEF_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d00c06862294e4efaa1ccf2062db39635\",\"metadataColumnName\":\"NAME_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d9bc17570851a441a99dc116b52166ab6\",\"metadataColumnName\":\"PARENT_TASK_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d0961ad8134de492084ca91345964c65e\",\"metadataColumnName\":\"DESCRIPTION_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d45ce6fe6a78041c29a5f755186978762\",\"metadataColumnName\":\"TASK_DEF_KEY_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d89baebbf47db4d63bb5d6cd33eb5b2a4\",\"metadataColumnName\":\"OWNER_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d6620d98c80bd499c9af90e869a1d7e4d\",\"metadataColumnName\":\"ASSIGNEE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd534401e791d41679332106aa2f26c1b\",\"metadataColumnName\":\"DELEGATION_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d1d35c60352f946eb94373e323bbfa578\",\"metadataColumnName\":\"PRIORITY_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d31b9dddd6944487caee2f589a96ab1fb\",\"metadataColumnName\":\"CREATE_TIME_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d4a3cbd7b361d46c193c0eccb58bfd7f4\",\"metadataColumnName\":\"DUE_DATE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d43c69f808c054cbb8115275e876d0c2c\",\"metadataColumnName\":\"CATEGORY_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d488b386af0d64edeb8521d30dc4308ee\",\"metadataColumnName\":\"SUSPENSION_STATE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d979dbc50b5604ba4a7b91d89afeb920d\",\"metadataColumnName\":\"TENANT_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d776f2eea6d2a4082832c341110be5ee3\",\"metadataColumnName\":\"FORM_KEY_\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "64ec458f9e14e618123d1b04",
"operationType": null,
"dirId": "6281bc809e14e650f88e2538",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"SZ001",
"证券数据资料汇总",
"SZ001",
"11",
""
],
"id": "65263cce88cbea456cf309c5",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e3",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"AK45555",
"AK45555",
"AK45555",
"",
""
],
"id": "64bb3d139e14e62a5ac80aaf",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d60f",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"zc001",
"",
"auth_user_catalogs",
"",
"{\"tableName\":\"auth_user_catalogs\",\"metadataTableId\":\"Table=1=346868b5688f4425afda60224b5ca68e\",\"columnItems\":[{\"metadataColumnId\":\"Column=1=390e1f9781ec4a96b0ffacaf80ae489e\",\"metadataColumnName\":\"user_id\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=4e585aae7bc74f00a6b4f28c3852b861\",\"metadataColumnName\":\"catalog_id\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "64a275929e14e667c02acd54",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "relatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"zc00000019",
"",
"ACT_RU_EVENT_SUBSCR",
"",
"{\"tableName\":\"ACT_RU_EVENT_SUBSCR\",\"metadataTableId\":\"Table=1=e4b37675620744d48bc0d9af6155ef7d\",\"columnItems\":[{\"metadataColumnId\":\"Column=1=e9fc240a0e4f4d7a9b10c938b15fde0f\",\"metadataColumnName\":\"EVENT_TYPE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=5d87d84f656c42f3ae527c58faf8c306\",\"metadataColumnName\":\"EVENT_NAME_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=307b5e31be8f4ef1a0559cf5b0272bb3\",\"metadataColumnName\":\"EXECUTION_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=39de4ad8605942c186f99489e995bf02\",\"metadataColumnName\":\"PROC_INST_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=b0f5d54112c14ff08dfa1e20b24ba487\",\"metadataColumnName\":\"ACTIVITY_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=87f4f1c9c63b4025b39735c0150a07fb\",\"metadataColumnName\":\"CONFIGURATION_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=c5cf43db01024f19b461bf08a76cc90b\",\"metadataColumnName\":\"CREATED_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=a98a87b0a6e640939d0a1f09e128ae91\",\"metadataColumnName\":\"PROC_DEF_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=43bc2acc0b4f4eb39db6de0b5e3ecdcc\",\"metadataColumnName\":\"TENANT_ID_\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "64a271b39e14e667c02acd50",
"operationType": null,
"dirId": "64a267e39e14e667c02acc9e",
"resourceState": "notRelatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"问题反馈",
"qi_question_info",
"",
"{\"tableEnName\":\"qi_question_info\",\"tableCnName\":\"问题反馈\",\"tableName\":\"问题反馈\",\"metadataTableId\":\"Table\\u003d1\\u003d08f25bf904d14a44b853669c7650aa03\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d3f35e74a984043f39709ff30ae54e66a\",\"metadataColumnName\":\"id\",\"metadataColumnCnName\":\"编号\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d36d3d43fe19a41c7834eef8fdbb29ebf\",\"metadataColumnName\":\"answer\",\"metadataColumnCnName\":\"问题回复\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d1472a983d1b04080a955be73860dd41a\",\"metadataColumnName\":\"comment\",\"metadataColumnCnName\":\"问题评论\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d55e7838b44b04e76ae676cdf8973dcb4\",\"metadataColumnName\":\"create_date\",\"metadataColumnCnName\":\"创建时间\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d1aa3e7abb73c4c2ca447fc50596e9ea0\",\"metadataColumnName\":\"create_user\",\"metadataColumnCnName\":\"创建用户\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d026940b9b4864417a6ad04b2ef8a1590\",\"metadataColumnName\":\"file_id\",\"metadataColumnCnName\":\"文件编号\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d099a8ad4d2a64cc294ad626b3c04fef0\",\"metadataColumnName\":\"file_name\",\"metadataColumnCnName\":\"附件存储名称\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd35264d2c45e49c7859d5c702cb3452e\",\"metadataColumnName\":\"file_real_name\",\"metadataColumnCnName\":\"附件原名称\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d34c26ae03d774b4e866e23a1761f4be4\",\"metadataColumnName\":\"module\",\"metadataColumnCnName\":\"问题模块\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d32b4e2e1874249c489f4f9df51723e94\",\"metadataColumnName\":\"question\",\"metadataColumnCnName\":\"问题描述\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd661feec250e45dfb8b5948fd8797eeb\",\"metadataColumnName\":\"status\",\"metadataColumnCnName\":\"问题状态(published\\u003d已发布,unanswered\\u003d未答复,answered\\u003d已答复)\"},{\"metadataColumnId\":\"Column\\u003d1\\u003db1fc32b19e7e442f82c2ed5e20e34788\",\"metadataColumnName\":\"title\",\"metadataColumnCnName\":\"问题标题\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d361224b9e3e347a888db19f4ced8f995\",\"metadataColumnName\":\"update_date\",\"metadataColumnCnName\":\"更新时间\"}]}"
],
"id": "64a2679c9e14e667c02acc9c",
"operationType": null,
"dirId": "64a267e39e14e667c02acc9e",
"resourceState": "relatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"cwb00002",
"超链接配置表",
"jimu_report_link",
"",
"{\"tableEnName\":\"qi_question_info\",\"tableCnName\":\"问题反馈\",\"tableName\":\"问题反馈\",\"metadataTableId\":\"Table\\u003d1\\u003d08f25bf904d14a44b853669c7650aa03\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d3f35e74a984043f39709ff30ae54e66a\",\"metadataColumnName\":\"id\",\"metadataColumnCnName\":\"编号\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d36d3d43fe19a41c7834eef8fdbb29ebf\",\"metadataColumnName\":\"answer\",\"metadataColumnCnName\":\"问题回复\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d1472a983d1b04080a955be73860dd41a\",\"metadataColumnName\":\"comment\",\"metadataColumnCnName\":\"问题评论\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d55e7838b44b04e76ae676cdf8973dcb4\",\"metadataColumnName\":\"create_date\",\"metadataColumnCnName\":\"创建时间\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d1aa3e7abb73c4c2ca447fc50596e9ea0\",\"metadataColumnName\":\"create_user\",\"metadataColumnCnName\":\"创建用户\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d026940b9b4864417a6ad04b2ef8a1590\",\"metadataColumnName\":\"file_id\",\"metadataColumnCnName\":\"文件编号\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d099a8ad4d2a64cc294ad626b3c04fef0\",\"metadataColumnName\":\"file_name\",\"metadataColumnCnName\":\"附件存储名称\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd35264d2c45e49c7859d5c702cb3452e\",\"metadataColumnName\":\"file_real_name\",\"metadataColumnCnName\":\"附件原名称\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d34c26ae03d774b4e866e23a1761f4be4\",\"metadataColumnName\":\"module\",\"metadataColumnCnName\":\"问题模块\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d32b4e2e1874249c489f4f9df51723e94\",\"metadataColumnName\":\"question\",\"metadataColumnCnName\":\"问题描述\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd661feec250e45dfb8b5948fd8797eeb\",\"metadataColumnName\":\"status\",\"metadataColumnCnName\":\"问题状态(published\\u003d已发布,unanswered\\u003d未答复,answered\\u003d已答复)\"},{\"metadataColumnId\":\"Column\\u003d1\\u003db1fc32b19e7e442f82c2ed5e20e34788\",\"metadataColumnName\":\"title\",\"metadataColumnCnName\":\"问题标题\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d361224b9e3e347a888db19f4ced8f995\",\"metadataColumnName\":\"update_date\",\"metadataColumnCnName\":\"更新时间\"}]}"
],
"id": "64a2679b9e14e667c02acc9a",
"operationType": null,
"dirId": "64a267e39e14e667c02acc9e",
"resourceState": "relatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"货币参数表",
"app_crcy",
"",
"{\"tableEnName\":\"app_crcy\",\"tableCnName\":\"货币参数表\",\"tableName\":\"货币参数表\",\"metadataTableId\":\"Table\\u003d1\\u003dc8f9b2f7b06245c2b02001bf528eb442\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003de1e792a6046149ceb676860f7a4d10b3\",\"metadataColumnName\":\"corpno\",\"metadataColumnCnName\":\"法人代码\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d65998d3786c74f018a6b6039ac277a7f\",\"metadataColumnName\":\"crcycd\",\"metadataColumnCnName\":\"币种\"},{\"metadataColumnId\":\"Column\\u003d1\\u003da6790532fa2e4621b05eb26f2bc85427\",\"metadataColumnName\":\"crcyna\",\"metadataColumnCnName\":\"贷币名称\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d4d9d83d5fc654f6f94c825f40041791b\",\"metadataColumnName\":\"ccynum\",\"metadataColumnCnName\":\"货币数字代码\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d9a0c5f869c4848d9956daa13f7568ad3\",\"metadataColumnName\":\"cntycd\",\"metadataColumnCnName\":\"国别代码\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dd0fe940359204bc6a03eb3fd346e715a\",\"metadataColumnName\":\"ccymin\",\"metadataColumnCnName\":\"币种精度位\"},{\"metadataColumnId\":\"Column\\u003d1\\u003df02d8a4bf9bf480ca33fe6802a1f2f4e\",\"metadataColumnName\":\"iamnun\",\"metadataColumnCnName\":\"计息精度位\"},{\"metadataColumnId\":\"Column\\u003d1\\u003da7c6ce0ef6d04f77937e7f36625c8b47\",\"metadataColumnName\":\"chgeun\",\"metadataColumnCnName\":\"货币找零位\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d3512b58e50e845f694fa2cfa6b87f66a\",\"metadataColumnName\":\"basefg\",\"metadataColumnCnName\":\"是否本币标志(1-是,0-否) \"},{\"metadataColumnId\":\"Column\\u003d1\\u003d45e6275ac8e5433caf131d7eb544d2d4\",\"metadataColumnName\":\"tmstmp\",\"metadataColumnCnName\":\"时间戳\"},{\"metadataColumnId\":\"Column\\u003d1\\u003da4fffa3c189445e3bae21013c699f675\",\"metadataColumnName\":\"DAC\",\"metadataColumnCnName\":\"数据验证码\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d28c145a29a02405580a7f4207d68bc06\",\"metadataColumnName\":\"MVMT_SMY_ERYPT\",\"metadataColumnCnName\":\"基于关键数字加密的动态摘要\"}]}"
],
"id": "64a2678e9e14e667c02acc98",
"operationType": null,
"dirId": "64a267e39e14e667c02acc9e",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"ACT_HI_ATTACHMENT",
"",
"{\"tableEnName\":\"ACT_HI_ATTACHMENT\",\"tableCnName\":\"\",\"tableName\":\"ACT_HI_ATTACHMENT\",\"metadataTableId\":\"Table\\u003d1\\u003d8b093dba7c374da89e3dac567c8abdaf\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003def45f837720a4bb3b0bf214e34d5cd58\",\"metadataColumnName\":\"ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dbd544741f4864dd191693d9082e1335e\",\"metadataColumnName\":\"REV_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d11bf86f972f243b6aa3f99d50811799a\",\"metadataColumnName\":\"USER_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d3b1e08bbbd8a471ebb4464cd8ff96427\",\"metadataColumnName\":\"NAME_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003dc9935eb405d54e379d1bb9d33e965cc1\",\"metadataColumnName\":\"DESCRIPTION_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d26e204e0af544adba28d223c08f2afda\",\"metadataColumnName\":\"TYPE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d90d38a64c0724cf4899cbb138c1707f4\",\"metadataColumnName\":\"TASK_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003de7756119b4b84be5a1fca0cf596f40f7\",\"metadataColumnName\":\"PROC_INST_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003de238fc1d31924543848b3aca0f09fc4d\",\"metadataColumnName\":\"URL_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d50e01cceb45540eba486d1dbe0f054fc\",\"metadataColumnName\":\"CONTENT_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column\\u003d1\\u003df4f7137ba264416b8759d7dc586e9815\",\"metadataColumnName\":\"TIME_\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "648841149e14e63ba57f2989",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d60e",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"sf123",
"",
"ACT_HI_ATTACHMENT",
"",
"{\"tableName\":\"ACT_HI_ATTACHMENT\",\"metadataTableId\":\"Table=1=5a817ade819d4d6b918b106b4856217d\",\"columnItems\":[{\"metadataColumnId\":\"Column=1=58155fd8c2904fbf9a388e35570971ed\",\"metadataColumnName\":\"ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=b313f2e4a5bd484d8d3f1decfda5ffa8\",\"metadataColumnName\":\"REV_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=e91148a6deb24185b7580b16a680cab0\",\"metadataColumnName\":\"USER_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=9ff2c8242c0140c0838f0b85750d8426\",\"metadataColumnName\":\"NAME_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=3afdc56599954ab1811e0ad4fdc53b87\",\"metadataColumnName\":\"DESCRIPTION_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=d760e0774bae4879b2cdc24514fdff88\",\"metadataColumnName\":\"TYPE_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=149850fb53814c6a80d366e9a592e7c2\",\"metadataColumnName\":\"TASK_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=b32c817167ab4666aaeb0cec0a5b845a\",\"metadataColumnName\":\"PROC_INST_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=8e39513c9ce54d39a3a912395d4a1855\",\"metadataColumnName\":\"URL_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=7b37bd3c038f4ce4b45f53eee93c25f8\",\"metadataColumnName\":\"CONTENT_ID_\",\"metadataColumnCnName\":\"\"},{\"metadataColumnId\":\"Column=1=0ae160fc340b445ea6726705a9e19dab\",\"metadataColumnName\":\"TIME_\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "6433e0779e14e62c867e01bb",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "notRelatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"123",
"",
"",
"100",
""
],
"id": "636a9de49e14e62297352673",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"pg_attrdef",
"",
"{\"tableEnName\":\"pg_attrdef\",\"tableName\":\"pg_attrdef\",\"metadataTableId\":\"Table\\u003d1\\u003d71ac0c944e584d0e9f4e06deaedc259b\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d877a95283f0e4be7b6ef7566197b01ae\",\"metadataColumnName\":\"adrelid\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d00a1c77a34e84d4cbf69da8b205c3b81\",\"metadataColumnName\":\"adnum\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d8398f970d6634c6ea1b2fedbf17c31aa\",\"metadataColumnName\":\"adbin\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d7487832a194c41dfa4ff71aa63be788c\",\"metadataColumnName\":\"adsrc\"}]}"
],
"id": "65263cbd88cbea456cf309c4",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"gp_id",
"",
"{\"tableEnName\":\"gp_id\",\"tableName\":\"gp_id\",\"metadataTableId\":\"Table\\u003d1\\u003d2b78eb80cd2c47baacdcebf1655745dc\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003dbf9db401b14a44e88303ea9ed129be60\",\"metadataColumnName\":\"gpname\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d353c01b811944c7f9697ade19cbca9e5\",\"metadataColumnName\":\"numsegments\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d24503bebf992489681033ffecc66a407\",\"metadataColumnName\":\"dbid\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d4e3da84aa6d24ea98f4fa3c30d4f9cd5\",\"metadataColumnName\":\"content\"}]}"
],
"id": "636a57a89e14e6229735266f",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"gp_fastsequence",
"",
"{\"tableEnName\":\"gp_id\",\"tableName\":\"gp_id\",\"metadataTableId\":\"Table\\u003d1\\u003d2b78eb80cd2c47baacdcebf1655745dc\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003dbf9db401b14a44e88303ea9ed129be60\",\"metadataColumnName\":\"gpname\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d353c01b811944c7f9697ade19cbca9e5\",\"metadataColumnName\":\"numsegments\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d24503bebf992489681033ffecc66a407\",\"metadataColumnName\":\"dbid\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d4e3da84aa6d24ea98f4fa3c30d4f9cd5\",\"metadataColumnName\":\"content\"}]}"
],
"id": "636a57a89e14e6229735266d",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e4",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"",
"",
"{\"tableEnName\":\"t1\",\"tableCnName\":\"好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名\",\"tableName\":\"好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名好长好长的中文名\",\"metadataTableId\":\"Table\\u003d1\\u003dbec70e9a029a4086ae0d4dfcc05d92c7\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d2ae8341682724e32977a32617b6dcfcb\",\"metadataColumnName\":\"col1\",\"metadataColumnCnName\":\"\"}]}"
],
"id": "63588aa29e14e62fef93c17d",
"operationType": null,
"dirId": "6252a0d39e14e64501aed051",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"t2",
"",
"{\"tableEnName\":\"t2\",\"tableName\":\"t2\",\"metadataTableId\":\"Table\\u003d1\\u003d4287bc775aaa49e0abed0cd61d0db90b\",\"columnItems\":[{\"metadataColumnId\":\"Column\\u003d1\\u003d28ed7e88a5be4f40b8c0604f72a30b6c\",\"metadataColumnName\":\"col1\",\"metadataColumnCnName\":\"3\"},{\"metadataColumnId\":\"Column\\u003d1\\u003d84c6c01819644b8882cbe3390e8cd6a3\",\"metadataColumnName\":\"test\",\"metadataColumnCnName\":\"任务类型\"}]}"
],
"id": "6322e3d89e14e62fef93c161",
"operationType": null,
"dirId": "6281bc149e14e650f88e2534",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"",
"",
"",
"",
"{\"tableEnName\":\"mysql\",\"tableCnName\":\"\",\"tableName\":\"mysql\",\"metadataTableId\":\"Database\\u003d1\\u003d397c510a90a845a890af041b7621645f\",\"columnItems\":[]}"
],
"id": "6322e31b9e14e62fef93c15f",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e3",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"INJC001001002001001007478",
"监察数据测试2",
"TB_SCORE_SYSTEMaw",
"",
"TB_SCORE_SYSTEM,积分体系;INDICATOR_ID,ID;NAME,指标名称;LAST_SCORE,同期指标计分;SCORE,指标计分;ORG_ID,机构ID;ORG_NAME,机构名称;TYP,类型(0:综合,1:改善);GROUP_ID,组ID;GROUP_NAME,组名称;TIME,时间;"
],
"id": "6316f5469e14e62fef93c157",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e3",
"resourceState": "notRelatedAsset",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
},
{
"resourceExtraAttribute": {
"sortingStatus": null,
"currentProcessor": null,
"taskNO": null,
"resourceStatus": null,
"transferDataAsset": null
},
"elementValues": [
"INJC00100100200100100309999",
"eeee",
"",
"",
""
],
"id": "62f22f849e14e6029dde003e",
"operationType": null,
"dirId": "6246b8da9e14e66fb100d5e3",
"resourceState": "uncombed",
"hasPermission": true,
"authorityExcludeStatus": null,
"allowButtons": [
"add",
"update",
"delete",
"import",
"export",
"changeDir",
"changeToNotAsset",
"changeToUncombed",
"preview"
]
}
]
const mockElements = [
{
"id": "6524f17e28089e421c4c38fc",
"type": "基本属性",
"name": "编号",
"interpretation": "资产统一编号(编号规则待定)",
"sample": null,
"fillingWay": "系统生成",
"manualMaintain": "是",
"attributeGetway": "系统根据规则自动生成",
"custom": "否",
"metadataItem": null,
"selectAble": "是",
"foldAble": "否",
"grantAble": null,
"globalParam": null,
"defaultSelected": null,
"dataAssetType": "resource",
"value": null,
"index": 1,
"rowNum": 0,
"errorMsg": null
},
{
"id": "6524f17e28089e421c4c38fe",
"type": "基本属性",
"name": "中文名称",
"interpretation": null,
"sample": null,
"fillingWay": "文件导入或者手工输入",
"manualMaintain": "是",
"attributeGetway": "文件导入",
"custom": "否",
"metadataItem": null,
"selectAble": "否",
"foldAble": "否",
"grantAble": null,
"globalParam": null,
"defaultSelected": "是",
"dataAssetType": "resource",
"value": null,
"index": 3,
"rowNum": 0,
"errorMsg": null
},
{
"id": "6524f17e28089e421c4c38ff",
"type": "基本属性",
"name": "英文名称",
"interpretation": null,
"sample": null,
"fillingWay": "文件导入或者手工输入",
"manualMaintain": "是",
"attributeGetway": "文件导入",
"custom": "否",
"metadataItem": null,
"selectAble": "是",
"foldAble": "否",
"grantAble": null,
"globalParam": null,
"defaultSelected": "是",
"dataAssetType": "resource",
"value": null,
"index": 4,
"rowNum": 0,
"errorMsg": null
},
{
"id": "6524f17e28089e421c4c3900",
"type": "基本属性",
"name": "描述",
"interpretation": null,
"sample": null,
"fillingWay": "文件导入或者手工输入",
"manualMaintain": "是",
"attributeGetway": "文件导入",
"custom": "否",
"metadataItem": null,
"selectAble": "是",
"foldAble": "否",
"grantAble": null,
"globalParam": null,
"defaultSelected": null,
"dataAssetType": "resource",
"value": null,
"index": 5,
"rowNum": 0,
"errorMsg": null
},
{
"id": "6526351b88cbea456cf309a1",
"type": "内容属性",
"name": "资产项",
"interpretation": "由来自不同资产实体(表、标准、接口等等)的属性构成,包含一个或多个",
"sample": "表A1的字段B3,表A2的字段B2",
"fillingWay": "系统生成",
"manualMaintain": "是",
"attributeGetway": "系统根据资产项情况自动生成",
"custom": "否",
"metadataItem": null,
"selectAble": "否",
"foldAble": null,
"grantAble": null,
"globalParam": null,
"defaultSelected": "是",
"dataAssetType": "resource",
"value": null,
"index": 39,
"rowNum": 0,
"errorMsg": null
}
]
const FC = (props) => { const FC = (props) => {
const ids = getQueryParam('ids', props.location?.search) const ids = getQueryParam('ids', props.location?.search)
const elementIds = getQueryParam('elementIds', props.location?.search) const elementIds = getQueryParam('elementIds', props.location?.search)
const [action, setAction] = React.useState('edit') const [action, setAction] = React.useState('edit')
const [waiting, setWaiting] = React.useState(false)
const editAssetsRef = React.useRef() const editAssetsRef = React.useRef()
React.useEffect(() => {
const interval = setInterval(() => {
heartbeat()
}, 10*60*1000)
return () => {
clearInterval(interval)
}
}, [])
const heartbeat = () => {
dispatch({
type: 'datamodel.heartbeat'
});
}
const cancel = (e) => { const cancel = (e) => {
e.stopPropagation() e.stopPropagation()
setAction('detail') setAction('detail')
...@@ -806,46 +49,62 @@ const FC = (props) => { ...@@ -806,46 +49,62 @@ const FC = (props) => {
const save = async (e) => { const save = async (e) => {
e.stopPropagation() e.stopPropagation()
try { try {
const modifyData = await editAssetsRef.current?.getModifyData() await editAssetsRef.current?.save()
setAction('detail') const modifyData = editAssetsRef.current?.getModifyData()
setWaiting(true)
dispatch({
type: 'assetmanage.resourceBatchEdit',
payload: {
data: modifyData
},
callback: data => {
setWaiting(false)
setAction('detail')
},
error: () => {
setWaiting(false)
}
})
} catch(e) { } catch(e) {
} }
} }
return ( return (
<div className='edit-model position-relative'> <Spin spinning={waiting}>
<div className='edit-header'> <div className='edit-model position-relative'>
<span style={{ fontSize: 16, fontWeight: 'bold', color: '#fff' }}>资产批量编辑</span> <div className='edit-header'>
</div> <span style={{ fontSize: 16, fontWeight: 'bold', color: '#fff' }}>资产批量编辑</span>
<div className='edit-container'>
<div className='edit-container-card' style={{ padding: '20px 20px 0' }}>
<EditAssets ref={editAssetsRef} action={action} ids={ids} elementIds={elementIds} />
</div> </div>
</div> <div className='edit-container'>
<div className='edit-footer'> <div className='edit-container-card' style={{ padding: '20px 20px 0' }}>
{ <EditAssets ref={editAssetsRef} action={action} ids={ids} elementIds={elementIds} />
action === 'edit' ? <Space> </div>
<Button onClick={cancel}>取消</Button> </div>
<Button <div className='edit-footer'>
type='primary' {
onClick={save} action === 'edit' ? <Space>
danger <Button onClick={cancel}>取消</Button>
> <Button
保存 type='primary'
</Button> onClick={save}
</Space> : <Space> danger
<Button >
type='primary' 保存
onClick={edit} </Button>
danger </Space> : <Space>
> <Button
编辑 type='primary'
</Button> onClick={edit}
</Space> danger
} >
</div> 编辑
</div> </Button>
</Space>
}
</div>
</div>
</Spin>
) )
} }
...@@ -856,7 +115,6 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -856,7 +115,6 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
const [data, setData] = React.useState() const [data, setData] = React.useState()
const [modifyData, setModifyData] = React.useState() const [modifyData, setModifyData] = React.useState()
const [loading, setLoading] = React.useState(false) const [loading, setLoading] = React.useState(false)
const [loadingElements, setLoadingElements] = React.useState(false)
const [editingKey, setEditingKey] = React.useState('') const [editingKey, setEditingKey] = React.useState('')
const [page, setPage] = usePage() const [page, setPage] = usePage()
...@@ -867,11 +125,16 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -867,11 +125,16 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
const isEditing = (record) => record.id === editingKey const isEditing = (record) => record.id === editingKey
React.useImperativeHandle(ref, () => ({ React.useImperativeHandle(ref, () => ({
getModifyData: async () => { save: async () => {
await save() await save()
return modifyData
}, },
}), [form, editingKey, modifyData]) getModifyData: () => {
return {
elementList: elements,
rowDataList: modifyData
}
},
}), [form, editingKey, modifyData, elements])
const getColumnBatchEditProps = (title, dataIndex) => ({ const getColumnBatchEditProps = (title, dataIndex) => ({
filterDropdown: ({ confirm }) => ( filterDropdown: ({ confirm }) => (
...@@ -920,7 +183,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -920,7 +183,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
const newModifyData = [...modifyData] const newModifyData = [...modifyData]
const index = parseInt(dataIndex.slice('element'.length)) const index = parseInt(dataIndex.slice('element'.length))
for (const item of newModifyData) { for (const item of newModifyData) {
item.elementValues[index] = rows[`${dataIndex}`] item.values[index] = rows[`${dataIndex}`]
} }
setModifyData(newModifyData) setModifyData(newModifyData)
...@@ -992,7 +255,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -992,7 +255,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
for (const item of (modifyData??[])) { for (const item of (modifyData??[])) {
const newAsset = {...item} const newAsset = {...item}
let index = 0 let index = 0
for (const elementValue of (item.elementValues??[])) { for (const elementValue of (item.values??[])) {
newAsset[`element${index}`] = elementValue newAsset[`element${index}`] = elementValue
index++ index++
} }
...@@ -1007,31 +270,31 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -1007,31 +270,31 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
}, tableRef) }, tableRef)
React.useEffect(() => { React.useEffect(() => {
getElements()
}, [elementIds])
React.useEffect(() => {
getAssets() getAssets()
}, [ids, action]) }, [ids, elementIds, action])
React.useEffect(() => { React.useEffect(() => {
setEditingKey('') setEditingKey('')
}, [action]) }, [action])
const getElements = () => {
setLoadingElements(true)
setTimeout(() => {
setLoadingElements(false)
setElements(mockElements)
})
}
const getAssets = () => { const getAssets = () => {
setLoading(true) setLoading(true)
setTimeout(() => { dispatch({
setLoading(false) type: 'assetmanage.getResourceBatchEditInfo',
setData(mockData) payload: {
setModifyData(mockData) elementIds: elementIds,
resourceIds: ids,
},
callback: data => {
setLoading(false)
setElements(data.elementList)
setData(data.rowDataList)
setModifyData(data.rowDataList)
LocalStorage.set('editAssetsChange', !(LocalStorage.get('editAssetsChange')??false))
},
error: () => {
setLoading(false)
}
}) })
} }
...@@ -1051,7 +314,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -1051,7 +314,7 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
for (const dataIndex in row) { for (const dataIndex in row) {
const elementIndex = parseInt(dataIndex.slice('element'.length)) const elementIndex = parseInt(dataIndex.slice('element'.length))
item.elementValues[elementIndex] = row[`${dataIndex}`] item.values[elementIndex] = row[`${dataIndex}`]
} }
setModifyData(newModifyData) setModifyData(newModifyData)
return '' return ''
...@@ -1068,16 +331,11 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds } ...@@ -1068,16 +331,11 @@ export const EditAssets = React.forwardRef(function ({ action, ids, elementIds }
<div ref={tableRef}> <div ref={tableRef}>
<Form form={form} component={false}> <Form form={form} component={false}>
<Table <Table
ref={tableRef}
maxHeight='calc(100vh - 245px)' maxHeight='calc(100vh - 245px)'
loading={loading||loadingElements} loading={loading}
columns={columns} columns={columns}
dataSource={tableData} dataSource={tableData}
components={{ bodyCell={EditableCell}
body: {
cell: EditableCell,
},
}}
pageSize={page.pageSize} pageNum={page.pageNum} total={(data??[]).length} pageSize={page.pageSize} pageNum={page.pageNum} total={(data??[]).length}
onRowClick={async (event, value) => { onRowClick={async (event, value) => {
if (action==='edit' && value?.id !== editingKey) { if (action==='edit' && value?.id !== editingKey) {
......
import React from 'react'
import { Modal, Button, Spin, Checkbox, Switch, Typography, Row, Col } from 'antd'
import { dispatch } from '../../../model'
import { getAssetRange, getAssetType, showMessage } from '../../../util'
const FC = (props) => {
const { type, visible, onCancel } = props
const [loading, setLoading] = React.useState(false)
const [elements, setElements] = React.useState()
const basicRef = React.useRef()
React.useEffect(() => {
if (visible) {
getElements()
}
}, [visible])
const getElements = () => {
setLoading(true)
dispatch({
type: 'assetmanage.listFilterElements',
payload: {
range: getAssetRange(type),
dataAssetType: getAssetType(type)
},
callback: data => {
setLoading(false)
setElements(data)
},
error: () => {
setLoading(false)
}
})
}
const close = (refresh = false, value = undefined) => {
setLoading(false)
onCancel?.(refresh, value)
}
const save = () => {
const selectedKeys = basicRef.current?.getSelectedKeys
if ((selectedKeys??[]).length === 0) {
showMessage('warn', '请先选择要批量编辑的属性')
return
}
onCancel(true, selectedKeys)
}
const footer = React.useMemo(() => {
return [
<Button key={'cancel'}
onClick={() => close()}
>取消</Button>,
<Button key={'save'} type='primary'
onClick={() => save()}
>确定</Button>
]
}, [close, save])
return (
<Modal
visible={visible}
footer={footer}
width={520}
bodyStyle={{ padding: '15px 15px 0px 15px', overflowX: 'auto', height: '80vh' }}
title='选择批量编辑属性'
centered destroyOnClose
onCancel={() => { close() }}
>
<Spin spinning={loading} >
<Basic ref={basicRef} elements={elements} />
</Spin>
</Modal>
)
}
export default FC
export const Basic = React.forwardRef(function ({ elements }, ref) {
const [attributes, setAttributes] = React.useState()
const [selectedKeys, setSelectedKeys] = React.useState([])
React.useImperativeHandle(ref, () => ({
getSelectedKeys: selectedKeys,
}), [selectedKeys])
React.useEffect(() => {
setAttributes(Array.from(new Set((elements??[]).map(item => item.type))))
}, [elements])
const onCheckAllChange = (checked) => {
if (checked) {
setSelectedKeys((elements??[]).map(item => item.id))
} else {
setSelectedKeys([])
}
}
const onCheckChange = (e) => {
if (e.target.checked) {
setSelectedKeys([...selectedKeys, e.target.value]);
} else {
const index = selectedKeys.findIndex(key => key === e.target.value);
selectedKeys.splice(index, 1)
setSelectedKeys([...selectedKeys]);
}
}
return (
<div>
<div className='flex'>
<Switch
checkedChildren="全不选"
unCheckedChildren="全选"
onChange={onCheckAllChange}
style={{ marginLeft: 'auto' }}
/>
</div>
<div className='mt-3' style={{ maxHeight: 450, overflow: 'auto' }}>
{
(attributes??[]).map((item, index) => {
return (
<div key={index}>
<div className='flex' style={{ alignItems: 'center', padding: '15px 0' }}>
<div style={{ width: 3, height: 14, backgroundColor: '#0069AC', marginRight: 5 }} />
<span style={{ fontWeight: 'bold', color: '#464646' }}>{item}</span>
</div>
<Row>
{
(elements??[]).filter(element => element.type === item).map((element, _index) => {
return (
<Col className='mb-3' key={_index} md={6}>
<div className='flex'>
<Checkbox
checked={(selectedKeys??[]).indexOf(element.id)!==-1}
value={element.id}
onChange={onCheckChange}
>
</Checkbox>
<Typography.Paragraph
className='ml-1'
title={element.name}
ellipsis
>
{element.name}
</Typography.Paragraph>
</div>
</Col>
);
})
}
</Row>
</div>
)
})
}
</div>
</div>
)
})
\ No newline at end of file
...@@ -20,11 +20,12 @@ import ChangeCatalog from './change-catalog' ...@@ -20,11 +20,12 @@ import ChangeCatalog from './change-catalog'
import AssetDelete from '../AssetManage/Component/AssetDeleteModal' import AssetDelete from '../AssetManage/Component/AssetDeleteModal'
import FilterElement from '../AssetManage/Component/FilterElementModal' import FilterElement from '../AssetManage/Component/FilterElementModal'
import FilterElementValue from './filter-element-value' import FilterElementValue from './filter-element-value'
import SelectBatchEditElements from './select-batch-edit-elements'
import '../AssetManage/Component/AssetTable.less'
import { AssetDirectorySubject } from '../AssetManage/Component/AssetDirectory' import { AssetDirectorySubject } from '../AssetManage/Component/AssetDirectory'
import { AssetActionSubject } from '../AssetManage/Component/AssetAction' import { AssetActionSubject } from '../AssetManage/Component/AssetAction'
import '../AssetManage/Component/AssetTable.less'
const FC = (props) => { const FC = (props) => {
const { type = ResourceManageReference, node, onClick, onFullScreenChange } = props const { type = ResourceManageReference, node, onClick, onFullScreenChange } = props
const [args, setArgs] = React.useState(() => ({ const [args, setArgs] = React.useState(() => ({
...@@ -80,11 +81,15 @@ const FC = (props) => { ...@@ -80,11 +81,15 @@ const FC = (props) => {
type: undefined, type: undefined,
reference: undefined reference: undefined
}) })
const [FilterElementValueParams, setFilterElementValueParams] = React.useState({ const [filterElementValueParams, setFilterElementValueParams] = React.useState({
visible: false, visible: false,
type: undefined, type: undefined,
defaultValue: undefined, defaultValue: undefined,
}) })
const [selectBatchEditElementsParams, setSelectBatchEditElementsParams] = React.useState({
visible: false,
type: undefined
})
const [page, setPage] = usePage() const [page, setPage] = usePage()
const [ modal, contextHolder ] = Modal.useModal() const [ modal, contextHolder ] = Modal.useModal()
...@@ -111,6 +116,12 @@ const FC = (props) => { ...@@ -111,6 +116,12 @@ const FC = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, []) }, [])
const storageChange = (e) => {
if (e.key === 'editAssetsChange') {
getAssets()
}
}
React.useEffect(() => { React.useEffect(() => {
getElements() getElements()
getResourceSortingStatus() getResourceSortingStatus()
...@@ -132,6 +143,12 @@ const FC = (props) => { ...@@ -132,6 +143,12 @@ const FC = (props) => {
} }
}) })
window?.addEventListener("storage", storageChange)
return () => {
window?.removeEventListener("storage", storageChange)
}
return () => { return () => {
$$keyword.unsubscribe() $$keyword.unsubscribe()
$$assetDirectorySubject.unsubscribe() $$assetDirectorySubject.unsubscribe()
...@@ -439,7 +456,10 @@ const FC = (props) => { ...@@ -439,7 +456,10 @@ const FC = (props) => {
} }
const onBatchEditClick = () => { const onBatchEditClick = () => {
setSelectBatchEditElementsParams({
visible: true,
type: ResourceManageReference
})
} }
const onReviewClick = () => { const onReviewClick = () => {
...@@ -569,7 +589,12 @@ const FC = (props) => { ...@@ -569,7 +589,12 @@ const FC = (props) => {
自动分配 自动分配
</div> </div>
</PermissionMenuItem> </PermissionMenuItem>
<PermissionMenuItem key='batchEdit' defaultPermission={true}> <PermissionMenuItem
key='batchEdit'
defaultPermission={true}
disabled={(selectedRows??[]).length===0}
tip={(selectedRows??[]).length===0?'请先选择资源':''}
>
<div className='text-center'> <div className='text-center'>
批量编辑 批量编辑
</div> </div>
...@@ -597,7 +622,7 @@ const FC = (props) => { ...@@ -597,7 +622,7 @@ const FC = (props) => {
key='changeDir' key='changeDir'
defaultPermission={changeDirectoryAble} defaultPermission={changeDirectoryAble}
disabled={(selectedRows??[]).length===0} disabled={(selectedRows??[]).length===0}
tip={(selectedRows??[]).length===0?'请先选择资':''} tip={(selectedRows??[]).length===0?'请先选择资':''}
> >
<div className='text-center'> <div className='text-center'>
变更目录 变更目录
...@@ -608,7 +633,7 @@ const FC = (props) => { ...@@ -608,7 +633,7 @@ const FC = (props) => {
key='delete' key='delete'
defaultPermission={deleteAble} defaultPermission={deleteAble}
disabled={(selectedRows??[]).length===0} disabled={(selectedRows??[]).length===0}
tip={(selectedRows??[]).length===0?'请先选择资':''} tip={(selectedRows??[]).length===0?'请先选择资':''}
> >
<div className='text-center'> <div className='text-center'>
删除 删除
...@@ -671,6 +696,8 @@ const FC = (props) => { ...@@ -671,6 +696,8 @@ const FC = (props) => {
<PermissionButton <PermissionButton
defaultPermission={true} defaultPermission={true}
onClick={onBatchEditClick} onClick={onBatchEditClick}
disabled={(selectedRows??[]).length===0}
tip={(selectedRows??[]).length===0?'请先选择资源':''}
> >
批量编辑 批量编辑
</PermissionButton> </PermissionButton>
...@@ -890,7 +917,7 @@ const FC = (props) => { ...@@ -890,7 +917,7 @@ const FC = (props) => {
}} }}
/> />
<FilterElementValue <FilterElementValue
{...FilterElementValueParams} {...filterElementValueParams}
onCancel={(refresh, val) => { onCancel={(refresh, val) => {
setFilterElementValueParams({ setFilterElementValueParams({
visible: false, visible: false,
...@@ -904,6 +931,19 @@ const FC = (props) => { ...@@ -904,6 +931,19 @@ const FC = (props) => {
} }
}} }}
/> />
<SelectBatchEditElements
{...selectBatchEditElementsParams}
onCancel={(refresh, value) => {
setSelectBatchEditElementsParams({
visible: false,
type: undefined,
})
if (refresh) {
window.open(`/data-govern/edit-assets?ids=${(selectedRows??[]).map(item => item.id).toString()}&elementIds=${(value??[]).toString()}`)
}
}}
/>
{contextHolder} {contextHolder}
</div> </div>
) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment