Commit b4c6a3c4 by zhaochengxiang

资产草稿增加未挂载资产

parent 4c592d32
.asset-draft {
height: calc(100vh - 64px - 30px);
// padding: 20px;
background: #fff;
overflow: auto;
.yy-tabs-nav {
margin: 0;
}
}
\ No newline at end of file
import React from "react"
import { useDebounceEffect } from 'ahooks'
import LocalStorage from 'local-storage'
import { Space, Select, Button, Tooltip, Input, Typography, Modal, Pagination, Divider } from 'antd'
import { appId } from "../../../App"
import Table from '../ResizeableTable'
import { highlightSearchContentByTerms, isSzseEnv, showMessage } from "../../../util"
import { AssetItem } from "../AssetManage/Component/AssetTable"
import UpdateAsset from "../AssetManage/Component/AssetDetailDrawer"
import { dispatch } from '../../../model'
import { AssetManageReference, AssetRecycleReference } from "../../../util/constant"
import { getTemplateType } from "../../../util/axios"
import FilterElementModal from '../AssetManage/Component/FilterElementModal'
const FC = (props) => {
const [loadingTemplates, setLoadingTemplates] = React.useState(false)
const [templates, setTemplates] = React.useState()
const [currentTemplateValue, setTemplateValue] = React.useState()
const [pagination, setPagination] = React.useState({ pageNum: 1, pageSize: 20 })
const [keyword, setKeyword] = React.useState()
const [selectedRows, setSelectedRows] = React.useState()
const [loadingFilterElements, setLoadingFilterElements] = React.useState(false)
const [filterElements, setFilterElements] = React.useState()
const [loading, setLoading] = React.useState(false)
const [data, setData] = React.useState()
const [row, setRow] = React.useState()
const [updateAssetParams, setUpdateAssetParams] = React.useState({
visible: false,
id: undefined,
dirId: undefined,
})
const [filterElementParams, setFilterElementParams] = React.useState({
visible: false,
})
React.useEffect(() => {
getTemplates()
}, [])
React.useEffect(() => {
if (currentTemplateValue) {
getFilterElements()
}
}, [currentTemplateValue])
useDebounceEffect(() => {
if (currentTemplateValue) {
getRecycles()
}
}, [currentTemplateValue, keyword, pagination], { wait: 300 })
const indexCol = {
title: '序号',
dataIndex: 'key',
fixed: 'left',
render: (text, record, index) => ((pagination.pageNum-1)*pagination.pageSize+index+1),
width: 60,
ellipsis: true,
filter: false,
}
const [columns, tableData, total] = React.useMemo(() => {
let [newColumns, newTableData] = [[], []]
for (const element of filterElements??[]) {
for (const name of element.names??[]) {
const column = {
title: name,
dataIndex: name,
ellipsis: true,
width: 120,
render: (text, record) => {
return (
<Tooltip title={text}>
<Typography.Text ellipsis={true}>
{highlightSearchContentByTerms(text, [keyword??''], true)}
</Typography.Text>
</Tooltip>
);
}
}
if (name === '编号') {
column.width = 60
} else if (name === '中文名称'|| name === '岗位中文名') {
column.width = isSzseEnv ? 230 : 160
} else if (name === '英文名称' || name === '岗位英文名') {
column.width = isSzseEnv ? 224 : 160
} else if (name === '资产项') {
column.width = isSzseEnv ? 250 : 120
column.render = (text) => {
let metadata = null
try {
metadata = JSON.parse(text)
} catch(error) {
metadata = text;
}
return (
<AssetItem metadata={metadata} terms={[keyword??'']} />
);
}
}
newColumns.push(column)
}
}
if (!loadingFilterElements) {
for (const item of (data?.data??[])) {
let index = 0
let newItem = {}
for (const elementValue of (item.elementValues??[])) {
for (const value of elementValue.values) {
if ((newColumns??[]).length > index) {
const name = newColumns[index].dataIndex
newItem[name] = value
}
index++
}
}
newTableData.push({...item, ...newItem})
}
}
return [[indexCol, ...newColumns]
, newTableData, data?.total??0]
}, [filterElements, data, loadingFilterElements, keyword, indexCol, pagination])
const getTemplates = () => {
setLoadingTemplates(true)
dispatch({
type: 'assetmanage.getTemplates',
callback: data => {
setLoadingTemplates(false)
setTemplates(data)
if ((data??[]).length > 0) {
LocalStorage.set(`templateType-${appId}`, data[0].type)
setTemplateValue(data[0].type)
}
},
error: () => {
setLoadingTemplates(false)
}
})
}
const getFilterElements = () => {
setLoadingFilterElements(true)
dispatch({
type: 'assetmanage.listFilterElementsGroupByType',
payload: {
isAdmin: true,
},
callback: data => {
setLoadingFilterElements(false)
setFilterElements(data)
},
error: () => {
setLoadingFilterElements(false)
}
})
}
const getRecycles = () => {
setLoading(true)
dispatch({
type: 'assetmanage.listRecycleBinDataAssetsByPage',
payload: {
templateType: currentTemplateValue,
keyword: encodeURIComponent(keyword??''),
pageNum: pagination.pageNum,
pageSize: pagination.pageSize,
},
callback: data => {
setLoading(false)
setData(data)
},
error: () => {
setLoading(false)
}
})
}
const onTemplateChange = (value) => {
setData()
setSelectedRows()
LocalStorage.set(`templateType-${appId}`, value)
setTemplateValue(value)
setPagination({ ...pagination, pageNum: 1 })
}
const onExportClick = () => {
window.open(`/api/dataassetmanager/dataAssetApi/exportByDataAssetIds?dataAssetIds=${(selectedRows??[]).map(item=>item.id).toString()}&templateType=${getTemplateType()}`);
}
return (
<div style={{ backgroundColor: '#fff', height: '100%' }}>
<div className='flex p-3' style={{
alignItems: 'center',
justifyContent: 'space-between',
borderBottom: '1px solid rgb(239, 239, 239)',
}}>
<Space>
<Select
loading={loadingTemplates}
value={currentTemplateValue}
onChange={onTemplateChange}
style={{ width: 100 }}
>
{
(templates??[]).map((item, index) => <Select.Option key={index} value={item.type}>{item.name}</Select.Option>)
}
</Select>
<Tooltip title={((selectedRows??[]).length === 0) ? '请先选择资产' : ''}>
<Button onClick={onExportClick} disabled={(selectedRows??[]).length === 0}>导出</Button>
</Tooltip>
<Button onClick={() => {
setFilterElementParams({ visible: true })
}}>可见列设置</Button>
</Space>
<Space>
<Input size="middle"
placeholder="请输入关键字"
value={keyword}
bordered={true} allowClear
onChange={(e) => {
setKeyword(e.target.value)
}} />
</Space>
</div>
<div className='p-3'>
<Table
extraColWidth={32}
loading={loadingFilterElements||loading}
columns={columns}
dataSource={tableData}
rowKey='id'
pagination={false}
rowSelection={{
selectedRowKeys: (selectedRows??[]).map(item => item.id),
onChange: (selectedRowKeys, selectedRows) => {
setSelectedRows(selectedRows)
}
}}
onRow={(record) => {
return {
onClick: (e) => {
setRow(record)
setUpdateAssetParams({
visible: true,
id: record?.id,
dirId: record?.dirId,
})
}
}
}}
rowClassName={(record, index) => {
return (record?.id === row?.id) ? 'yy-table-select-row' : ''
}}
scroll={{ y: 'calc(100vh - 209px - 72px - 57px)' }}
/>
<Pagination
className="text-center mt-3"
showSizeChanger
onChange={(page, size) => {
setSelectedRows()
setPagination({ pageNum: page, pageSize: size })
}}
onShowSizeChange={(page,size) => {
setSelectedRows()
setPagination({ pageNum: page, pageSize: size })
}}
current={pagination.pageNum}
pageSize={pagination.pageSize}
defaultCurrent={1}
total={total}
showTotal={total => ` ${total} `}
/>
</div>
<UpdateAsset
{...updateAssetParams}
reference={AssetRecycleReference}
readonly
onCancel={(refresh) => {
setUpdateAssetParams({
visible: false,
id: undefined,
dirId: undefined,
})
refresh && getRecycles()
}}
/>
<FilterElementModal
type='admin'
reference={AssetManageReference}
{...filterElementParams}
onCancel={(refresh) => {
setFilterElementParams({ visible: false })
if (refresh) {
getFilterElements()
getRecycles()
}
}}
/>
</div>
)
}
export default FC
\ No newline at end of file
......@@ -1221,14 +1221,17 @@ const AssetAction = (props) => {
const index1 = (users||[]).findIndex(item => item.pernr === changedValues[name]);
if (index1 !== -1) {
const index2 = (elements??[]).findIndex(item => item.enName === 'dataKeyUserName')
let newFieldsValue = {}
if (index2 !== -1) {
form.setFieldsValue({[elements[index2].name]: users[index].nachn})
newFieldsValue[elements[index2].name] = users[index1].nachn
}
const index3 = (elements??[]).findIndex(item => item.enName === 'dataKeyUserDepartment')
if (index3 !== -1) {
form.setFieldsValue({[elements[index3].name]: users[index].org3TXT})
newFieldsValue[elements[index3].name] = users[index1].org3TXT
}
form.setFieldsValue(newFieldsValue)
}
}
......@@ -1236,14 +1239,17 @@ const AssetAction = (props) => {
const index1 = (users||[]).findIndex(item => item.pernr === changedValues[name]);
if (index1 !== -1) {
const index2 = (elements??[]).findIndex(item => item.enName === 'businessDepartmentOwnerName')
let newFieldsValue = {}
if (index2 !== -1) {
form.setFieldsValue({[elements[index2].name]: users[index].nachn})
newFieldsValue[elements[index2].name] = users[index1].nachn
}
const index3 = (elements??[]).findIndex(item => item.enName === 'businessResponsibleDepartment')
if (index3 !== -1) {
form.setFieldsValue({[elements[index3].name]: users[index].org3TXT})
newFieldsValue[elements[index3].name] = users[index1].org3TXT
}
form.setFieldsValue(newFieldsValue)
}
}
......@@ -1251,14 +1257,17 @@ const AssetAction = (props) => {
const index1 = (users||[]).findIndex(item => item.pernr === changedValues[name]);
if (index1 !== -1) {
const index2 = (elements??[]).findIndex(item => item.enName === 'itResponsiblePersonName')
let newFieldsValue = {}
if (index2 !== -1) {
form.setFieldsValue({[elements[index2].name]: users[index].nachn})
newFieldsValue[elements[index2].name] = users[index1].nachn
}
const index3 = (elements??[]).findIndex(item => item.enName === 'itResponsibleDepartment')
if (index3 !== -1) {
form.setFieldsValue({[elements[index3].name]: users[index].org3TXT})
newFieldsValue[elements[index3].name] = users[index1].org3TXT
}
form.setFieldsValue(newFieldsValue)
}
}
}
......@@ -1328,9 +1337,11 @@ const AssetAction = (props) => {
</React.Fragment>
}
<Button onClick={shareAsset}>分享</Button>
{
reference !== AssetDraftReference && <SubsribeButton id={assets?.id} appType='dataAssetManager' subType={assets?.templateType} env={app?.env?.domainId||catalog||LocalStorage.get('assetsEnv')} />
reference !== AssetRecycleReference && <Button onClick={shareAsset}>分享</Button>
}
{
reference !== AssetDraftReference && reference !== AssetRecycleReference && <SubsribeButton id={assets?.id} appType='dataAssetManager' subType={assets?.templateType} env={app?.env?.domainId||catalog||LocalStorage.get('assetsEnv')} />
}
{
!isPostAsset(assets?.templateType) && <Dropdown overlay={
......
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