1. 自定义字典
使用场景:该数据为一个枚举类型,数据库存储的是对应的英文缩写或者数字,页面需要显示类型对应的中文名称
例如:订单状态有 待付款、待发货、已完成、退款中 对应数据库的状态为1、2、3、4
接口返回的只有对应的数字,怎么一一对应?
解决方案:字典新增订单类型
使用接口获取:项目/mdiy/dict/list.do?dictType="订单状态"&pageSize=10 获取状态对的的值
具体参考以下后台管理中自定页面列表使用
<!--自定义页面部分代码示例-->
<el-table v-loading="loading" ref="multipleTable" height="calc(100% - 68px)" class="ms-table-pagination" border :data="treeList" tooltip-effect="dark" @selection-change="handleSelectionChange">
<template slot="empty">
{{emptyText}}
</template>
<el-table-column type="selection" :selectable="isChecked" width="40"></el-table-column>
<el-table-column label="标题" min-width="150px" align="left" prop="pageTitle">
</el-table-column>
<el-table-column label="分类" :formatter="PageTypeFormat" align="left" prop="pageType">
</el-table-column>
<el-table-column label="绑定模板" min-width="200px" align="left" prop="pagePath">
</el-table-column>
<el-table-column label="路径关键字" min-width="150px" align="left" prop="pageKey">
</el-table-column>
<el-table-column label="访问地址" min-width="150px" align="left" >
<template slot-scope="scope">
<el-link :underline="false" target="_blank" type="primary" size="medium"
:href="location.origin+ms.base+'/'+(scope.row.pageKey.startsWith('people/')?scope.row.pageKey:'mdiyPage/'+scope.row.pageKey)+'.do'">
{{location.origin+ms.base+'/'+(scope.row.pageKey.startsWith('people/')?scope.row.pageKey:'mdiyPage/'+scope.row.pageKey)+'.do'}}</el-link>
</template>
</el-table-column>
<@shiro.hasPermission name="mdiy:page:update">
<el-table-column label="操作" align="center" width="180">
<template slot-scope="scope">
<el-link :underline="false" type="primary" size="medium" @click="save(scope.row.pageId)">编辑</el-link>
<@shiro.hasPermission name="mdiy:page:del">
<el-link :underline="false" type="primary" v-if="scope.row.del != 3" @click="del([scope.row])">删除</el-link>
</@shiro.hasPermission>
</template>
</el-table-column>
</@shiro.hasPermission>
</el-table>
// vue 方法代码
PageTypeFormat(row, column, cellValue, index) {
var value = cellValue;
var data = this.pageTypeOptions.find(function(value) {
return value.dictValue == cellValue;
})
if(data){
value = data.dictLabel;
}
return value;
},
//获取pageType字典数据源
pageTypeOptionsGet() {
var that = this;
ms.http.get(ms.base+'/mdiy/dict/list.do', {dictType:'自定义页面类型',pageSize:99999}).then(function (data) {
that.pageTypeOptions = data.rows;
}).catch(function (err) {
console.log(err);
});
}
java DictUtil工具类
package net.mingsoft.mdiy.util;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.mdiy.biz.IDictBiz;
import net.mingsoft.mdiy.entity.DictEntity;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class DictUtil {
/**
* 获取字典实体
* @param dictLabel 标签名
* @param dictType 类型
* @return DictEntity 字典实体
*/
public static DictEntity get(String dictLabel,String dictType){
DictEntity dict = new DictEntity();
dict.setDictLabel(dictLabel);
dict.setDictType(dictType);
dict.setAppId(BasicUtil.getAppId());
return (DictEntity) SpringUtil.getBean(IDictBiz.class).getEntity(dict);
}
/**
* 获取字典实体
* @param dictLabel 标签名
* @param dictType 类型
* @param dictValue 数据值
* @return DictEntity 字典实体
*/
public static DictEntity get(String dictType,String dictLabel,String dictValue){
DictEntity dict = new DictEntity();
dict.setDictLabel(dictLabel);
dict.setDictType(dictType);
dict.setDictValue(dictValue);
dict.setAppId(BasicUtil.getAppId());
return (DictEntity) SpringUtil.getBean(IDictBiz.class).getEntity(dict);
}
/**
* 获取字典实体Json数据
* @param dictLabel 标签名
* @param dictType 类型
* @param dictValue 数据值
* @return DictEntity 字典实体
*/
public static String getToJson(String dictType,String dictLabel,String dictValue){
DictEntity dict = new DictEntity();
dict.setDictLabel(dictLabel);
dict.setDictType(dictType);
dict.setDictValue(dictValue);
dict.setAppId(BasicUtil.getAppId());
DictEntity dictEntity = (DictEntity) SpringUtil.getBean(IDictBiz.class).getEntity(dict);
return JSON.toJSONString(dictEntity);
}
/**
* 根据字典类型获取列表
* @param dictType 字典类型
* @return
*/
public static List<DictEntity> list(String dictType){
DictEntity dict = new DictEntity();
dict.setDictType(dictType);
dict.setAppId(BasicUtil.getAppId());
return (List<DictEntity>) SpringUtil.getBean(IDictBiz.class).query(dict);
}
/**
* 根据字典类型获取列表json数据
* @param dictType 字典类型
* @return
*/
public static String listJson(String dictType){
return JSON.toJSONString(list(dictType));
}
/**
* 根据字典类型与标签名获取字典值
* @param dictType 字典类型
* @param dictLabel 标签名
* @param defaultValue 默认值
* @return
*/
public static String getDictValue(String dictType, String dictLabel, String defaultValue) {
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictLabel)) {
DictEntity dictEntity = get(dictType, dictLabel, null);
if(ObjectUtil.isNotNull(dictEntity)){
return dictEntity.getDictValue();
}
}
return defaultValue;
}
/**
* 根据字典类型与标签名获取字典值
* @param dictType 字典类型
* @param dictLabel 数据值
* @return
*/
public static String getDictValue(String dictType, String dictLabel) {
return getDictValue(dictType,dictLabel,"");
}
/**根据字典类型与字典值获取标签名
* @param dictType 字典类型
* @param dictValue 数据值
* @param defaultValue 默认值
* @return
*/
public static String getDictLabel(String dictType, String dictValue, String defaultValue) {
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictValue)) {
DictEntity dictEntity = get(dictType, null, dictValue);
if(ObjectUtil.isNotNull(dictEntity)){
return dictEntity.getDictLabel();
}
}
return defaultValue;
}
/**
* 根据字典类型与字典值获取标签名
* @param dictType 字典类型
* @param dictValue 数据值
* @return
*/
public static String getDictLabel(String dictType, String dictValue) {
return getDictLabel(dictType,dictValue,"");
}
/**
* 根据字典类型与逗号分隔的字典值获取逗号分隔的字典名
* @param dictType 字典类型
* @param dictValues 逗号分隔的字典值
* @param defaultValue 默认值
* @return
*/
public static String getDictLabels(String dictType, String dictValues, String defaultValue) {
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictValues)) {
List labels = new ArrayList();
String[] values = dictValues.split(",");
for(int i = 0; i < values.length;i++) {
String value = values[i];
String dictLabel = getDictLabel(dictType, value, defaultValue);
if(!StringUtils.isBlank(dictLabel)){
labels.add(dictLabel);
}
}
return StringUtils.join(labels, ",");
} else {
return defaultValue;
}
}
/**
* 根据字典类型与逗号分隔的字典值获取字典集合
* @param dictType 字典类型
* @param dictValues 逗号分隔的字典值
* @return
*/
public static String getJsonByValues(String dictType, String dictValues) {
List labels = new ArrayList();
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictValues)) {
String[] values = dictValues.split(",");
for(int i = 0; i < values.length;i++) {
String value = values[i];
DictEntity dictEntity = get(dictType, null, value);
if(ObjectUtil.isNotNull(dictEntity)){
labels.add(dictEntity);
}
}
}
return JSON.toJSONString(labels);
}
/**
* 根据字典类型与逗号分隔的字典值获取逗号分隔的字典名
* @param dictType 字典类型
* @param dictValues 逗号分隔的字典值
* @return
*/
public static String getDictLabels(String dictType, String dictValues) {
return getDictLabels(dictType,dictValues,"");
}
/**
* 根据字典类型与逗号分隔的字典值获取字典集合
* @param dictType 字典类型
* @param dictLabels 逗号分隔的字典值
* @return
*/
public static String getJsonByLabels(String dictType, String dictLabels) {
List values = new ArrayList();
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictLabels)) {
String[] labels = dictLabels.split(",");
for(int i = 0; i < labels.length;i++) {
String value = labels[i];
DictEntity dictEntity = get(dictType, value,null );
if(ObjectUtil.isNotNull(dictEntity)){
values.add(dictEntity);
}
}
}
return JSON.toJSONString(values);
}
/**
* 根据字典类型与逗号分隔的字典名获取逗号分隔的字典值
* @param dictType 字典类型
* @param dictLabels 逗号分隔的字典名
* @param defaultValue 默认值
* @return
*/
public static String getDictValues(String dictType, String dictLabels, String defaultValue) {
if (StringUtils.isNotBlank(dictType) && StringUtils.isNotBlank(dictLabels)) {
List values= new ArrayList();
String[] labels = dictLabels.split(",");
for(int i = 0; i < labels.length;i++) {
String value = labels[i];
values.add(getDictValue(dictType, value, defaultValue));
}
return StringUtils.join(values, ",");
} else {
return defaultValue;
}
}
/**
* 根据字典类型与逗号分隔的字典名获取逗号分隔的字典值
* @param dictType 字典类型
* @param dictLabels 逗号分隔的字典名
* @return
*/
public static String getDictValues(String dictType, String dictLabels) {
return getDictValues(dictType,dictLabels,"");
}
}