Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wisdom-components
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ReactWeb5
wisdom-components
Commits
07038a22
Commit
07038a22
authored
Dec 13, 2022
by
陈龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 修复函数未引用导致的bug
parent
7bc835a7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
204 additions
and
202 deletions
+204
-202
package.json
packages/base-components/BasicReport/package.json
+2
-1
handlers.js
...omponents/BasicReport/src/ReportsManage/utils/handlers.js
+202
-201
No files found.
packages/base-components/BasicReport/package.json
View file @
07038a22
...
...
@@ -32,6 +32,7 @@
"test"
:
"echo
\"
Error: run tests from root
\"
&& exit 1"
},
"dependencies"
:
{
"@babel/runtime"
:
"^7.17.9"
"@babel/runtime"
:
"^7.17.9"
,
"@wisdom-components/basictable"
:
"^1.5.25"
}
}
packages/base-components/BasicReport/src/ReportsManage/utils/handlers.js
View file @
07038a22
import
style
from
'../ReportsManage.less'
;
import
extraComponents
from
'../extra/extraComponents'
;
import
moment
from
'moment'
;
import
{
Tag
}
from
'antd'
;
import
{
hasMoney
,
isNumber
}
from
'./utils'
;
import
{
tagColors
,
tagBackgroundColors
}
from
'./constant'
;
import
{
Tag
}
from
'antd'
;
import
{
hasMoney
,
isNumber
,
returnHandledNumber
}
from
'./utils'
;
import
{
tagColors
,
tagBackgroundColors
}
from
'./constant'
;
/**
* @params: config下的数值的configRule结构如下,[{最大值: 10,最小值: 0,颜色:'#AAAAAA'}];
...
...
@@ -15,259 +15,260 @@ import { tagColors, tagBackgroundColors } from './constant';
// 链接 功能 弹窗功能待提出需求
// 函数名、属性、...
const
clickLink
=
(
config
)
=>
{
return
window
.
open
(
config
.
configItems
,
'_blank'
);
return
window
.
open
(
config
.
configItems
,
'_blank'
);
};
const
handleUrl
=
(
allWidgets
,
config
)
=>
{
};
const
handleUrl
=
(
allWidgets
,
config
)
=>
{};
const
handleConfigUrl
=
(
config
,
record
)
=>
{
let
_configs
=
config
.
configItems
.
split
(
'|'
);
// type = 替换|跳转;
let
_type
=
''
;
//url=project/pandawork/contractDetails/index?ageSize=100&accountName=软件订单台账|contractCode=${订单编号}|company=${分公司}
let
_url
=
''
;
let
_params
=
{};
_configs
.
forEach
((
item
)
=>
{
if
(
item
.
includes
(
'type='
))
_type
=
item
.
replace
(
'type='
,
''
);
if
(
item
.
includes
(
'url='
))
{
let
_tempUrl
=
item
.
replace
(
'url='
,
''
);
let
_urlArray
=
_tempUrl
.
split
(
'?'
);
if
(
_urlArray
[
1
])
{
_urlArray
[
1
].
split
(
'&'
).
forEach
((
param
)
=>
{
let
_paramArr
=
param
.
split
(
'='
);
if
(
_paramArr
[
1
]
&&
_paramArr
[
1
].
includes
(
'${'
)
&&
_paramArr
[
1
].
includes
(
'}'
))
{
let
_key
=
_paramArr
[
1
].
replace
(
/
\$\{
|
\}
/g
,
''
);
_params
[
_paramArr
[
0
]]
=
record
[
_key
];
}
else
{
_params
[
_paramArr
[
0
]]
=
_paramArr
[
1
];
}
});
}
_url
=
_urlArray
[
0
];
}
});
return
{
url
:
_url
,
type
:
_type
,
params
:
_params
};
let
_configs
=
config
.
configItems
.
split
(
'|'
);
// type = 替换|跳转;
let
_type
=
''
;
//url=project/pandawork/contractDetails/index?ageSize=100&accountName=软件订单台账|contractCode=${订单编号}|company=${分公司}
let
_url
=
''
;
let
_params
=
{};
_configs
.
forEach
((
item
)
=>
{
if
(
item
.
includes
(
'type='
))
_type
=
item
.
replace
(
'type='
,
''
);
if
(
item
.
includes
(
'url='
))
{
let
_tempUrl
=
item
.
replace
(
'url='
,
''
);
let
_urlArray
=
_tempUrl
.
split
(
'?'
);
if
(
_urlArray
[
1
])
{
_urlArray
[
1
].
split
(
'&'
).
forEach
((
param
)
=>
{
let
_paramArr
=
param
.
split
(
'='
);
if
(
_paramArr
[
1
]
&&
_paramArr
[
1
].
includes
(
'${'
)
&&
_paramArr
[
1
].
includes
(
'}'
))
{
let
_key
=
_paramArr
[
1
].
replace
(
/
\$\{
|
\}
/g
,
''
);
_params
[
_paramArr
[
0
]]
=
record
[
_key
];
}
else
{
_params
[
_paramArr
[
0
]]
=
_paramArr
[
1
];
}
});
}
_url
=
_urlArray
[
0
];
}
});
return
{
url
:
_url
,
type
:
_type
,
params
:
_params
};
};
const
clickWidget
=
(
config
,
text
,
record
,
showComponents
,
setDetailsConfig
)
=>
{
// 功能跳转接口
// type=替换|url=product/ReportsManage/ReportsSetting?accountName=${ID}&pageSize=100&title=${name}
if
(
!
config
.
configItems
)
return
message
.
error
(
'未配置跳转信息'
);
// setDetailsComponentVisible(true);
showComponents
(
true
);
let
urlConfig
=
handleConfigUrl
(
config
,
record
);
// setDetailConfig(urlConfig);
setDetailsConfig
(
urlConfig
);
// 功能跳转接口
// type=替换|url=product/ReportsManage/ReportsSetting?accountName=${ID}&pageSize=100&title=${name}
if
(
!
config
.
configItems
)
return
message
.
error
(
'未配置跳转信息'
);
// setDetailsComponentVisible(true);
showComponents
(
true
);
let
urlConfig
=
handleConfigUrl
(
config
,
record
);
// setDetailConfig(urlConfig);
setDetailsConfig
(
urlConfig
);
};
const
clickModal
=
(
config
,
showModal
,
setExtra
)
=>
{
let
_splitArr
=
config
.
configItems
.
split
(
'&'
);
let
_fn
=
_splitArr
[
0
]
||
'default'
;
_splitArr
.
splice
(
0
,
1
);
let
_data
=
{};
_splitArr
.
forEach
((
item
)
=>
{
let
_item
=
item
.
split
(
'='
);
_data
[
_item
[
0
]]
=
_item
[
1
];
});
// setExtraModal(true);
showModal
(
true
);
return
setExtra
(
extraComponents
[
_fn
](
_data
));
let
_splitArr
=
config
.
configItems
.
split
(
'&'
);
let
_fn
=
_splitArr
[
0
]
||
'default'
;
_splitArr
.
splice
(
0
,
1
);
let
_data
=
{};
_splitArr
.
forEach
((
item
)
=>
{
let
_item
=
item
.
split
(
'='
);
_data
[
_item
[
0
]]
=
_item
[
1
];
});
// setExtraModal(true);
showModal
(
true
);
return
setExtra
(
extraComponents
[
_fn
](
_data
));
};
const
returnOpacity
=
(
rgba
)
=>
{
if
(
!
rgba
)
rgba
=
'rgba(0,0,0,.65)'
;
let
_str
=
rgba
.
replace
(
'rgba('
,
''
).
replace
(
')'
,
''
);
let
_splitStr
=
_str
.
split
(
','
);
return
`rgba(
${
_splitStr
[
0
]}
,
${
_splitStr
[
1
]}
,
${
_splitStr
[
2
]}
,.25)`
;
if
(
!
rgba
)
rgba
=
'rgba(0,0,0,.65)'
;
let
_str
=
rgba
.
replace
(
'rgba('
,
''
).
replace
(
')'
,
''
);
let
_splitStr
=
_str
.
split
(
','
);
return
`rgba(
${
_splitStr
[
0
]}
,
${
_splitStr
[
1
]}
,
${
_splitStr
[
2
]}
,.25)`
;
};
export
const
handleNumber
=
(
config
,
number
)
=>
{
let
_color
=
''
;
let
_number
;
if
(
number
)
_number
=
Number
(
number
);
// 当设置精度后,会被转成字符串
if
(
config
.
type
===
'数值'
&&
config
.
numericalConfigs
&&
config
.
numericalConfigs
.
length
)
{
config
.
numericalConfigs
.
forEach
((
item
)
=>
{
// 接口对于数值类型的返回为null
if
(
!
_color
)
{
let
_max
=
isNumber
(
item
.
maxValue
)
?
item
.
maxValue
:
''
;
let
_min
=
isNumber
(
item
.
minValue
)
?
item
.
minValue
:
''
;
if
(
_max
!==
''
&&
_min
===
''
)
{
_color
=
_number
<=
Number
(
_max
)
?
''
:
item
.
color
;
}
else
if
(
_min
!==
''
&&
_max
===
''
)
{
_color
=
_number
>
Number
(
_min
)
?
item
.
color
:
''
;
}
else
{
_color
=
_number
>
Number
(
_min
)
&&
_number
<=
Number
(
_max
)
?
item
.
color
:
''
;
}
}
});
}
else
if
(
config
.
type
===
'数值标签'
&&
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
console
.
log
(
'数值标签'
);
_color
=
'red'
;
}
else
if
(
config
.
color
)
{
_color
=
config
.
color
;
}
return
number
?
(
<
span
>
let
_color
=
''
;
let
_number
;
if
(
number
)
_number
=
Number
(
number
);
// 当设置精度后,会被转成字符串
if
(
config
.
type
===
'数值'
&&
config
.
numericalConfigs
&&
config
.
numericalConfigs
.
length
)
{
config
.
numericalConfigs
.
forEach
((
item
)
=>
{
// 接口对于数值类型的返回为null
if
(
!
_color
)
{
let
_max
=
isNumber
(
item
.
maxValue
)
?
item
.
maxValue
:
''
;
let
_min
=
isNumber
(
item
.
minValue
)
?
item
.
minValue
:
''
;
if
(
_max
!==
''
&&
_min
===
''
)
{
_color
=
_number
<=
Number
(
_max
)
?
''
:
item
.
color
;
}
else
if
(
_min
!==
''
&&
_max
===
''
)
{
_color
=
_number
>
Number
(
_min
)
?
item
.
color
:
''
;
}
else
{
_color
=
_number
>
Number
(
_min
)
&&
_number
<=
Number
(
_max
)
?
item
.
color
:
''
;
}
}
});
}
else
if
(
config
.
type
===
'数值标签'
&&
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
console
.
log
(
'数值标签'
);
_color
=
'red'
;
}
else
if
(
config
.
color
)
{
_color
=
config
.
color
;
}
return
number
?
(
<
span
>
<
span
className
=
{
style
.
prefixOrSuffix
}
style
=
{{
color
:
_color
,
}}
className
=
{
style
.
prefixOrSuffix
}
style
=
{{
color
:
_color
,
}}
>
{
config
.
prefix
||
''
}
<
/span
>
<
span
style
=
{{
color
:
_color
,
margin
:
'0 5px'
,
}}
style
=
{{
color
:
_color
,
margin
:
'0 5px'
,
}}
>
{
returnHandledNumber
(
config
.
configItems
,
number
)}
<
/span
>
<
span
className
=
{
style
.
prefixOrSuffix
}
style
=
{{
color
:
_color
}}
>
<
span
className
=
{
style
.
prefixOrSuffix
}
style
=
{{
color
:
_color
}}
>
{
config
.
suffix
||
''
}
<
/span
>
<
/span
>
)
:
(
'-'
);
)
:
(
'-'
);
};
export
const
handleNumberTag
=
(
config
,
number
)
=>
{
let
_color
=
''
;
let
_map
=
{};
// 标签需要设置分隔符 2022年7月13日 ChenLong
let
_configItems
=
config
.
configItems
.
split
(
'|'
);
let
_configMap
=
{};
_configItems
.
forEach
((
item
)
=>
{
let
_arr
=
item
.
split
(
'='
);
_configMap
[
_arr
[
0
]]
=
_arr
[
1
];
});
// 处理label的颜色
if
(
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
config
.
labelConfigs
.
forEach
((
item
)
=>
{
_map
[
item
.
labelValue
]
=
item
.
color
;
let
_color
=
''
;
let
_map
=
{};
// 标签需要设置分隔符 2022年7月13日 ChenLong
let
_configItems
=
config
.
configItems
.
split
(
'|'
);
let
_configMap
=
{};
_configItems
.
forEach
((
item
)
=>
{
let
_arr
=
item
.
split
(
'='
);
_configMap
[
_arr
[
0
]]
=
_arr
[
1
];
});
}
_color
=
config
.
color
||
'rgba(0,0,0,.85)'
;
// String(text)为了解决可能存在数值类型的数据需要设置成标签的需求
// return String(text).split(_configMap['分隔符']).map(item => <Tag color={_map[item]}>{item}</Tag>);
// let a = 'abc' a.split(undefined); a = ['abc']
return
(
<
Tag
style
=
{{
background
:
mapTag
(
_map
,
number
)
||
_color
,
border
:
`1px solid
${
mapTag
(
_map
,
number
)
||
_color
}
`
,
borderRadius
:
2
,
color
:
mapTag
(
_map
,
number
)
?
tagColors
[
tagBackgroundColors
.
findIndex
((
c
)
=>
c
===
mapTag
(
_map
,
number
))]
:
`rgba(0, 0, 0, .65)`
,
}}
>
{(
config
.
prefix
||
''
)
+
returnHandledNumber
(
config
.
configItems
,
number
)
+
(
config
.
suffix
||
''
)}
<
/Tag
>
);
// 处理label的颜色
if
(
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
config
.
labelConfigs
.
forEach
((
item
)
=>
{
_map
[
item
.
labelValue
]
=
item
.
color
;
});
}
_color
=
config
.
color
||
'rgba(0,0,0,.85)'
;
// String(text)为了解决可能存在数值类型的数据需要设置成标签的需求
// return String(text).split(_configMap['分隔符']).map(item => <Tag color={_map[item]}>{item}</Tag>);
// let a = 'abc' a.split(undefined); a = ['abc']
return
(
<
Tag
style
=
{{
background
:
mapTag
(
_map
,
number
)
||
_color
,
border
:
`1px solid
${
mapTag
(
_map
,
number
)
||
_color
}
`
,
borderRadius
:
2
,
color
:
mapTag
(
_map
,
number
)
?
tagColors
[
tagBackgroundColors
.
findIndex
((
c
)
=>
c
===
mapTag
(
_map
,
number
))]
:
`rgba(0, 0, 0, .65)`
,
}}
>
{(
config
.
prefix
||
''
)
+
returnHandledNumber
(
config
.
configItems
,
number
)
+
(
config
.
suffix
||
''
)}
<
/Tag
>
);
};
/** @params: 标签形态的configRule,[{标签值:'字符串',颜色: '#AAAAAA'}]; */
/* 支持正则配置 RegExp */
export
const
handleTag
=
(
config
,
text
)
=>
{
let
_color
=
''
;
let
_map
=
{};
// 标签需要设置分隔符 2022年7月13日 ChenLong
let
_configItems
=
config
.
configItems
.
split
(
'|'
);
let
_configMap
=
{};
_configItems
.
forEach
((
item
)
=>
{
let
_arr
=
item
.
split
(
'='
);
_configMap
[
_arr
[
0
]]
=
_arr
[
1
];
});
// 处理label的颜色
if
(
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
config
.
labelConfigs
.
forEach
((
item
)
=>
{
_map
[
item
.
labelValue
]
=
item
.
color
;
let
_color
=
''
;
let
_map
=
{};
// 标签需要设置分隔符 2022年7月13日 ChenLong
let
_configItems
=
config
.
configItems
.
split
(
'|'
);
let
_configMap
=
{};
_configItems
.
forEach
((
item
)
=>
{
let
_arr
=
item
.
split
(
'='
);
_configMap
[
_arr
[
0
]]
=
_arr
[
1
];
});
}
_color
=
config
.
color
||
'rgba(0,0,0,.85)'
;
// String(text)为了解决可能存在数值类型的数据需要设置成标签的需求
// return String(text).split(_configMap['分隔符']).map(item => <Tag color={_map[item]}>{item}</Tag>);
// let a = 'abc' a.split(undefined); a = ['abc']
return
String
(
text
)
.
split
(
_configMap
[
'分隔符'
])
.
map
((
item
)
=>
(
<
Tag
style
=
{{
background
:
mapTag
(
_map
,
item
)
||
_color
,
border
:
`1px solid
${
mapTag
(
_map
,
item
)
||
_color
}
`
,
borderRadius
:
2
,
color
:
mapTag
(
_map
,
item
)
?
tagColors
[
tagBackgroundColors
.
findIndex
((
c
)
=>
c
===
mapTag
(
_map
,
item
))]
:
`rgba(0, 0, 0, .65)`
,
}}
>
{
item
}
<
/Tag
>
));
// 处理label的颜色
if
(
config
.
labelConfigs
&&
config
.
labelConfigs
.
length
)
{
config
.
labelConfigs
.
forEach
((
item
)
=>
{
_map
[
item
.
labelValue
]
=
item
.
color
;
});
}
_color
=
config
.
color
||
'rgba(0,0,0,.85)'
;
// String(text)为了解决可能存在数值类型的数据需要设置成标签的需求
// return String(text).split(_configMap['分隔符']).map(item => <Tag color={_map[item]}>{item}</Tag>);
// let a = 'abc' a.split(undefined); a = ['abc']
return
String
(
text
)
.
split
(
_configMap
[
'分隔符'
])
.
map
((
item
)
=>
(
<
Tag
style
=
{{
background
:
mapTag
(
_map
,
item
)
||
_color
,
border
:
`1px solid
${
mapTag
(
_map
,
item
)
||
_color
}
`
,
borderRadius
:
2
,
color
:
mapTag
(
_map
,
item
)
?
tagColors
[
tagBackgroundColors
.
findIndex
((
c
)
=>
c
===
mapTag
(
_map
,
item
))]
:
`rgba(0, 0, 0, .65)`
,
}}
>
{
item
}
<
/Tag
>
));
};
const
mapTag
=
(
map
,
key
)
=>
{
if
(
map
[
key
])
{
return
map
[
key
];
}
else
{
let
_keys
=
Object
.
keys
(
map
);
return
_keys
.
reduce
((
final
,
_key
)
=>
{
let
isRegExp
=
_key
.
includes
(
'RegExp='
);
let
reg
=
new
RegExp
(
_key
.
replace
(
'RegExp='
,
''
));
if
(
isRegExp
&&
reg
.
test
(
key
))
{
final
=
map
[
_key
];
}
return
final
;
},
''
);
}
if
(
map
[
key
])
{
return
map
[
key
];
}
else
{
let
_keys
=
Object
.
keys
(
map
);
return
_keys
.
reduce
((
final
,
_key
)
=>
{
let
isRegExp
=
_key
.
includes
(
'RegExp='
);
let
reg
=
new
RegExp
(
_key
.
replace
(
'RegExp='
,
''
));
if
(
isRegExp
&&
reg
.
test
(
key
))
{
final
=
map
[
_key
];
}
return
final
;
},
''
);
}
};
export
const
handleText
=
(
config
,
text
)
=>
{
return
<
span
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
}}
>
{
text
}
<
/span>
;
return
<
span
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
}}
>
{
text
}
<
/span>
;
};
export
const
handleLink
=
(
config
,
text
)
=>
{
return
(
<
span
className
=
{
style
.
link
}
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
,
}}
onClick
=
{()
=>
clickLink
(
config
)}
>
return
(
<
span
className
=
{
style
.
link
}
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
,
}}
onClick
=
{()
=>
clickLink
(
config
)}
>
{
text
}
<
/span
>
);
);
};
export
const
handleWidget
=
(
config
,
text
,
record
,
showComponents
,
setDetailsConfig
)
=>
{
return
(
<
span
style
=
{{
color
:
config
.
color
}}
className
=
{
style
.
link
}
onClick
=
{()
=>
clickWidget
(
config
,
text
,
record
,
showComponents
,
setDetailsConfig
)}
>
return
(
<
span
style
=
{{
color
:
config
.
color
}}
className
=
{
style
.
link
}
onClick
=
{()
=>
clickWidget
(
config
,
text
,
record
,
showComponents
,
setDetailsConfig
)}
>
{
text
}
<
/span
>
);
);
};
export
const
handleModal
=
(
config
,
text
,
showModal
,
setExtra
)
=>
{
return
(
<
span
className
=
{
style
.
link
}
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
}}
onClick
=
{()
=>
clickModal
(
config
,
showModal
,
setExtra
)}
>
return
(
<
span
className
=
{
style
.
link
}
style
=
{{
color
:
config
.
color
||
'rgba(0,0,0,.85)'
}}
onClick
=
{()
=>
clickModal
(
config
,
showModal
,
setExtra
)}
>
{
text
}
<
/span
>
);
);
};
// 日期
export
const
handleDateString
=
(
config
,
text
)
=>
{
return
text
?
moment
(
text
).
format
(
'YYYY-MM-DD'
)
:
'-'
;
return
text
?
moment
(
text
).
format
(
'YYYY-MM-DD'
)
:
'-'
;
};
// 时刻
export
const
handleDateTimeString
=
(
config
,
text
)
=>
{
return
text
?
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
'-'
;
return
text
?
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
'-'
;
};
// 处理pageSize
export
const
handlePageSize
=
(
numStr
)
=>
{
return
numStr
&&
isNumber
(
Number
(
numStr
))
?
Number
(
numStr
)
:
false
;
return
numStr
&&
isNumber
(
Number
(
numStr
))
?
Number
(
numStr
)
:
false
;
};
// 处理默认排序
export
const
handleSortFields
=
(
sortFields
)
=>
{
return
(
sortFields
&&
sortFields
.
split
(
','
))
||
[];
return
(
sortFields
&&
sortFields
.
split
(
','
))
||
[];
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment