一:登錄前端,創建業務字典
系統管理——>業務字典——>新增業務字典,輸入
字典編號: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名稱,為數據庫字段名