【功能完善】公司管理界面--是否归属集团字段,显示是或者否

需求

在这里插入图片描述
公司管理界面–是否归属集团字段,在数据库中存储的字段是 belong字段,记录如下:
在这里插入图片描述
这里不想让它显示1或者0,而是让它显示 是或者否

这里提供三个解决方案

解决方案A

在数据库中使用case when进行判断.

原SQL语句如下:

SELECT
	company_id,
	company_name,
	company_shortname,
	belong,
	create_by,
	create_time,
	STATUS,
	del_flag,
	update_by,
	update_time
FROM
	dig_company

修改后的SQL语句如下:

SELECT
	company_id,
	company_name,
	company_shortname,
	CASE
WHEN belong = 1 THEN
	'是'
WHEN belong = 0 THEN
	'否'
ELSE
	'其他'
END AS belong,
 create_by,
 create_time,
 STATUS,
 del_flag,
 update_by,
 update_time
FROM
	dig_company

查询后结果集如下:
在这里插入图片描述

优缺点分析

在这里插入图片描述
原本数据库的belong字段是tinyint类型,在后端java的实体类中是Integer类型
在这里插入图片描述
使用case when进行SQL判断后,就把它变成了String类型,前台实体类需要进行把该字段变为String类型,然后重写getter和setter方法。

这样既要重写xml中的SQL语句,又要修改实体类,还是比较麻烦的。

解决方案B

在这里插入图片描述

我们看到账号状态这个字段,在页面上显示的是个类似图标的样式,而这个字段在数据库中这样存储的:

在这里插入图片描述
为什么它存储的是0,显示的却是正常呢?

我们看前台是如何实现的。

在这里插入图片描述
它定义了一个statusOptions,来看下它是如何初始化的。

在这里插入图片描述
它是在created方法中,去查询了一个名为sys_normal_disable的字典数据。

这个sys_normal_disable数据在字典中是如何定义的呢?
在这里插入图片描述
看一下数据是如何匹配到标签。
在这里插入图片描述

它定义的status中,如果数据键值为0dictValue),则数据标签显示正常dict_label),回显样式显示 主要listClass
如果数据键值为1,则数据标签显示停用,回显样式显示 危险

那我仿照上面定义的样式,也来定义一个字典数据,取名为is_blog_group


INSERT INTO `ry-cloud`.`sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('101', '归属集团', 'is_blog_group', '0', 'admin', '2021-11-12 08:52:29', '', NULL, '公司是否归属集团');

INSERT INTO `ry-cloud`.`sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('101', '1', '是', '1', 'is_blog_group', NULL, 'primary', 'N', '0', 'admin', '2021-11-12 09:31:15', '', NULL, '是否归属集团');
INSERT INTO `ry-cloud`.`sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ('102', '2', '否', '0', 'is_blog_group', NULL, 'danger', 'N', '0', 'admin', '2021-11-12 09:31:51', '', NULL, '是否归属集团');

is_blog_group定义好了,怎么初始化呢。

字典数据定义好之后,还要进行前端页面的改造,如下:
:
在这里插入图片描述
在这里插入图片描述
因为this.getDicts()方法后端已经定义好了,它先取缓存,如果没有再查询数据库,因此后端的代码无需改造。

因此改动以上三处,就可以在前端页面使用该字典数据了。

部署测试

在这里插入图片描述

优缺点分析
  • 优点:只改动前端,无需改动后端
  • 缺点:首先要定义字典数据,然后再前端页面进行改造,改动地方比较大

解决方案C

这个方案,是我在写解决方案B的时候,查看代码时,无意中看到的。

请注意一下 回显样式(listClass)在前端页面是如何显示的?

在这里插入图片描述
它是一个下拉框,但是跟我之前写的下拉框是不一样的。

我之前的下拉框,是要先去数据库查询数据,然后在前台页面展示。

修改车间隶属公司字段进行展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我为什么要去数据库中查询?

首先,公司这个信息是在后台维护的,它不是固定值,它是动态变化的,可能需要添加,修改,删除等功能。

如果写到字典里,那么每添加一个公司,就需要在字典表里新增一条记录,还需要关联公司表的company_id,这样数据库耦合度太高,而且功能太繁琐了。

因此,我写在了后端,单表增删改即可。

有点扯远了,还是回到回显样式这个字段上。

这个字段是如何展示的,让我们看一下前端的 代码。

在这里插入图片描述
在这里插入图片描述
可以看到,它的初始化方法是写在前端页面上,而且是写死的,是固定值,不会在变动。

我灵机一动,我的是否归属集团,也是固定值,只有0和1,我是不是也可以写死在页面上呢?

仿照一下这个回显样式的代码,修改前端代码,如下:

 // 帐号状态字典
      statusOptions: [],
      belongOptions: [
        {
          value: "1",
          label: "是"       
        },
        {          
          value: "0",
          label: "否"
        }
      ],
测试部署1

在这里插入图片描述
我了个大草,怎么啥也不显示呢

我不禁陷入了沉思,回显样式是个下拉框,而我要做的是在列表中显示。

这两个似乎是不同的功能。

我察觉到了一些不同的地方:

在这里插入图片描述
一个是el-option 标签,一个是dict-tag标签

dict-tag标签 这个标签是字典标签,本来的数据是通过getDits方法进行获取,这个方法获取的值是个对象,里面有固定的属性值。
在这里插入图片描述

既然这样,仿一个代码,如下:

 // 帐号状态字典
      statusOptions: [],
      belongOptions: [
        {
          dictLabel: "是",
          dictValue: "1"
        },
        {
          dictLabel: "否",
          dictValue: "0"
        }
      ],
  • 补充内容

dictLabel:前端页面显示的值
dictValue: 是数据库中的值

部署测试2

在这里插入图片描述
虽然显示是和否,但是它们的样式是一样的,既然这样给它添加个样式先。

 // 帐号状态字典
      belongOptions: [
        {
          dictLabel: "是",
          dictValue: "1",
          listClass: "primary"
        },
        {
          dictLabel: "否",
          dictValue: "0",
          listClass: "danger"
        }
      ],
  • 补充说明

dictLabel:前端页面显示的值
dictValue: 是数据库中的值
listClass:前端页面展示的样式

以上三个数据不是胡乱添加的,它是SysDictData实体类中的属性名。

测试部署3

在这里插入图片描述

优缺点分析

这个方案更加方便,只需要改动一个前端页面,只需要改动两处功能即可。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值