Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-R7-Res
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-R7-Res
提交
771e7c1e
提交
771e7c1e
编写于
3月 12, 2021
作者:
Shine-zwj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增单选项列表根据值类型进行转化
上级
76cadfbd
变更
1
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
126 行增加
和
33 行删除
+126
-33
app-radio-group.vue
src/components/app-radio-group/app-radio-group.vue
+126
-33
未找到文件。
src/components/app-radio-group/app-radio-group.vue
浏览文件 @
771e7c1e
<
template
>
<radio-group
class=
"app-radio-group"
v-model=
"
value"
>
<radio-group
class=
"app-radio-group"
v-model=
"
currentVal"
>
<radio
v-for=
"(_item,index) in items"
:key =
"index"
:label=
"_item.value"
:disabled=
"isDisabled || _item.disabled"
>
<span>
{{
Object
.
is
(
codelistType
,
'STATIC'
)
?
$t
(
'codelist.'
+
tag
+
'.'
+
_item
.
value
)
:
_item
.
text
}}
</span>
</radio>
...
...
@@ -28,22 +28,12 @@ export default class AppRadioGroup extends Vue {
@
Model
(
'change'
)
item
?:
any
;
/**
* 获取值
*
* @memberof AppRadioGroup
*/
get
value
()
{
return
this
.
item
;
}
/**
* 设置值
* 实际值
*
* @type {*}
* @memberof AppRadioGroup
*/
set
value
(
val
:
any
)
{
this
.
$emit
(
'change'
,
val
);
}
public
value
:
any
=
null
;
/**
* 代码表标识
...
...
@@ -69,13 +59,50 @@ export default class AppRadioGroup extends Vue {
*/
@
Prop
()
public
data
?:
any
;
/**
* 属性类型
*
* @type {'string' | 'number'}
* @memberof AppRadioGroup
*/
@
Prop
({
default
:
'string'
})
public
valueType
!
:
'string'
|
'number'
;
/**
* 监控值变化,根据属性类型强制转换
*
* @memberof AppRadioGroup
*/
@
Watch
(
'item'
,{
immediate
:
true
,
deep
:
true
})
public
itemWatch
(){
this
.
readyValue
();
}
/**
* 获取值
*
* @memberof AppRadioGroup
*/
get
currentVal
()
{
return
this
.
item
;
}
/**
* 设置值
*
* @memberof AppRadioGroup
*/
set
currentVal
(
val
:
any
)
{
this
.
$emit
(
'change'
,
val
);
}
/**
* 监听表单数据变化
*
* @memberof AppRadioGroup
*/
@
Watch
(
'data'
,{
immediate
:
true
,
deep
:
true
})
onDataChange
(
newVal
:
any
,
oldVal
:
any
)
{
public
onDataChange
(
newVal
:
any
,
oldVal
:
any
)
{
if
(
newVal
){
if
(
this
.
tag
&&
this
.
codelistType
==
'DYNAMIC'
){
// 公共参数处理
...
...
@@ -84,9 +111,8 @@ export default class AppRadioGroup extends Vue {
// 参数处理
let
_context
=
data
.
context
;
let
_param
=
data
.
param
;
console
.
log
(
"app-radio-group"
)
this
.
codeListService
.
getItems
(
this
.
tag
,
_context
,
_param
).
then
((
res
:
any
)
=>
{
this
.
items
=
res
;
this
.
formatCodeList
(
this
.
$util
.
deepCopy
(
res
))
;
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
`----
${
this
.
tag
}
----
${(
this
.
$t
(
'app.commonWords.codeNotExist'
)
as
string
)}
`
);
})
...
...
@@ -193,7 +219,8 @@ export default class AppRadioGroup extends Vue {
*/
public
created
()
{
if
(
this
.
tag
&&
this
.
codelistType
==
'STATIC'
){
this
.
items
=
this
.
$store
.
getters
.
getCodeListItems
(
this
.
tag
);
const
items
=
this
.
$store
.
getters
.
getCodeListItems
(
this
.
tag
);
this
.
formatCodeList
(
this
.
$util
.
deepCopy
(
items
));
}
else
if
(
this
.
tag
&&
this
.
codelistType
==
'DYNAMIC'
){
// 公共参数处理
let
data
:
any
=
{};
...
...
@@ -202,12 +229,78 @@ export default class AppRadioGroup extends Vue {
let
_context
=
data
.
context
;
let
_param
=
data
.
param
;
this
.
codeListService
.
getItems
(
this
.
tag
,
_context
,
_param
).
then
((
res
:
any
)
=>
{
this
.
items
=
res
;
this
.
formatCodeList
(
this
.
$util
.
deepCopy
(
res
))
;
}).
catch
((
error
:
any
)
=>
{
console
.
log
(
`----
${
this
.
tag
}
----
${(
this
.
$t
(
'app.commonWords.codeNotExist'
)
as
string
)}
`
);
})
}
}
/**
* 格式化代码表值类型
*
* @param {any[]} items
* @returns
* @memberof AppRadioGroup
*/
protected
formatCodeList
(
items
:
any
[]):
void
{
// 判断类型是否和属性一致
let
judge
=
false
;
this
.
items
=
[];
try
{
items
.
forEach
((
item
:
any
)
=>
{
const
type
=
this
.
$util
.
typeOf
(
item
.
value
);
if
(
type
!==
this
.
valueType
)
{
judge
=
true
;
if
(
type
===
'number'
)
{
item
.
value
=
item
.
value
.
toString
();
}
else
{
if
(
type
==
"null"
)
{
this
.
valueType
==
"number"
?
item
.
value
=
0
:
item
.
value
=
''
;
}
else
if
(
item
.
value
.
indexOf
(
'.'
)
===
-
1
)
{
item
.
value
=
parseInt
(
item
.
value
);
}
else
{
item
.
value
=
parseFloat
(
item
.
value
);
}
}
}
this
.
items
.
push
(
item
);
});
if
(
judge
)
{
console
.
warn
(
`代码表「
${
this
.
tag
}
」值类型和属性类型不符,目前采用强制转换模式。请修正代码表值类型和属性类型匹配。`
);
}
}
catch
(
error
)
{
console
.
warn
(
'代码表值类型和属性类型不符,目前采用强制转换模式。转换过程异常,请修正代码表值类型和属性类型匹配。'
);
}
}
/**
* 准备值
*
* @memberof AppRadioGroup
*/
public
readyValue
()
{
if
(
this
.
item
==
null
)
{
this
.
value
=
null
;
return
;
}
if
(
this
.
$util
.
typeOf
(
this
.
item
)
===
this
.
valueType
)
{
this
.
value
=
this
.
item
;
}
else
if
(
this
.
valueType
===
'number'
)
{
if
(
this
.
item
.
indexOf
(
'.'
)
===
-
1
)
{
this
.
value
=
parseInt
(
this
.
item
);
}
else
{
this
.
value
=
parseFloat
(
this
.
item
);
}
}
else
{
this
.
value
=
this
.
item
.
toString
();
}
this
.
$emit
(
'change'
,
this
.
value
);
}
}
</
script
>
<
style
lang=
"less"
>
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录