一:登录前端,创建业务字典
系统管理——>业务字典——>新增业务字典,输入
字典编号:settlementMethod
字典名称:结算方式
字典排序:1
是否封存:否
然后保存
然后右边增加业务字典详情:
字典名称:微信
字典键值:1
字典排序:1
是否封存:否
保存,增加第二个字典详细:
字典名称:支付宝
字典键值:2
字典排序:2
是否封存:否
然后保存
要使用的是字典编号:settlementMethod和字典键值1和2
二:前端VUE页面增加
1:增加模板插槽
<template slot-scope="{row}"
slot="settlementMethod">
<el-tag>{{row.smName}}</el-tag>
</template>
插槽的slotsettlementMethod要对应列中的prop
而row.smName中的smName即为字典返回的字典名称,如:微信
2:配置列
{
label: "结算方式",
type: "select",
dicUrl: "/api/blade-system/dict-biz/dictionary?code=settlementMethod",
props: {
label: "dictValue",
value: "dictKey"
},
dataType: "number",
slot: true,
prop: "settlementMethod",
search: true,
rules: [
{
required: true,
message: "请选择结算方式",
trigger: "blur"
}
]
},
注意业务字典调用API为:/api/blade-system/dict-biz/dictionary?code=settlementMethod
其中的settlementMethod为第一步创建的业务字典编号
字段prop为settlementMethod,对应插槽的 slot
三:后端
1、在VO中增加返回字典值名称的列:smName(第二条第1点中设置的smName)
private String smName;
2、在Wrapper中包装VO,根据字典编号来返回字典名称
String dictValue= DictBizCache.getValue("settlementMethod",paymentVO.getSettlementMethod());
paymentVO.setSmName(dictValue);
3、在Controller中修改返回的对象为上面包装好的VO,而不是Entity
将详情detailAPI
public R<PaymentEntity> detail(PaymentEntity payment) {
PaymentEntity detail = paymentService.getOne(Condition.getQueryWrapper(payment));
return R.data(detail);
}
修改为:
public R<PaymentVO> detail(PaymentEntity payment) {
PaymentEntity detail = paymentService.getOne(Condition.getQueryWrapper(payment));
return R.data(PaymentWrapper.build().entityVO(detail));
}
同样的方法,将List也修改一下,注意是pageVO方法:
PaymentWrapper.build().pageVO(pages)
注意:dataType: "number",要和数据库字段的类似对应,否则可能显示不正确
字段prop为settlementMethod,也是对应插槽的 slot名称,为数据库字段名