提取公共CommonStatus
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Generated by Django 5.2.1 on 2025-07-01 04:57
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("system", "0002_post_alter_dept_creator_alter_dept_is_deleted_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="dictdata",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="dicttype",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="menu",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="post",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="role",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="角色状态"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="user",
|
||||
name="status",
|
||||
field=models.IntegerField(
|
||||
choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态"
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -2,14 +2,37 @@ from django.contrib.auth.models import AbstractUser
|
||||
from django.db import models
|
||||
|
||||
from backend import settings
|
||||
from utils.models import CoreModel
|
||||
from utils.models import CoreModel, CommonStatus
|
||||
from utils.utils import validate_mobile
|
||||
|
||||
|
||||
# 定义状态枚举(可根据实际业务扩展)
|
||||
class DepartmentStatus(models.IntegerChoices):
|
||||
DISABLED = 0, "禁用" # 对应数据中的 status: 0
|
||||
ENABLED = 1, "启用" # 对应数据中的 status: 1
|
||||
# 菜单类型枚举
|
||||
class MenuType(models.TextChoices):
|
||||
CATALOG = 'catalog', '目录'
|
||||
MENU = 'menu', '菜单'
|
||||
BUTTON = 'button', '按钮'
|
||||
EMBEDDED = 'embedded', '内嵌页面'
|
||||
LINK = 'link', '外部链接'
|
||||
|
||||
# 菜单元数据模型(单独存储元数据,避免 JSONField)
|
||||
class MenuMeta(CoreModel):
|
||||
title = models.CharField(max_length=200, verbose_name='标题')
|
||||
icon = models.CharField(max_length=100, blank=True, verbose_name='图标')
|
||||
order = models.IntegerField(default=0, verbose_name='排序')
|
||||
affix_tab = models.BooleanField(default=False, verbose_name='固定标签页')
|
||||
badge = models.CharField(max_length=50, blank=True, verbose_name='徽章文本')
|
||||
badge_type = models.CharField(max_length=20, blank=True, verbose_name='徽章类型')
|
||||
badge_variants = models.CharField(max_length=20, blank=True, verbose_name='徽章样式')
|
||||
iframe_src = models.URLField(blank=True, verbose_name='内嵌页面URL')
|
||||
link = models.URLField(blank=True, verbose_name='外部链接')
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
class Meta:
|
||||
db_table = 'system_menu_meta'
|
||||
verbose_name = '菜单元数据'
|
||||
verbose_name_plural = '菜单元数据'
|
||||
|
||||
class Dept(CoreModel):
|
||||
pid = models.ForeignKey(
|
||||
@@ -22,8 +45,8 @@ class Dept(CoreModel):
|
||||
)
|
||||
name = models.CharField(max_length=100, verbose_name="部门名称")
|
||||
status = models.SmallIntegerField(
|
||||
choices=DepartmentStatus.choices,
|
||||
default=DepartmentStatus.DISABLED,
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.DISABLED,
|
||||
verbose_name="部门状态"
|
||||
)
|
||||
create_time = models.DateTimeField(
|
||||
@@ -61,39 +84,6 @@ class Dept(CoreModel):
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ["-create_time"] # 按创建时间倒序排列
|
||||
|
||||
# 菜单类型枚举
|
||||
class MenuType(models.TextChoices):
|
||||
CATALOG = 'catalog', '目录'
|
||||
MENU = 'menu', '菜单'
|
||||
BUTTON = 'button', '按钮'
|
||||
EMBEDDED = 'embedded', '内嵌页面'
|
||||
LINK = 'link', '外部链接'
|
||||
|
||||
# 菜单状态枚举
|
||||
class MenuStatus(models.IntegerChoices):
|
||||
ENABLED = 1, '启用'
|
||||
DISABLED = 0, '禁用'
|
||||
|
||||
# 菜单元数据模型(单独存储元数据,避免 JSONField)
|
||||
class MenuMeta(CoreModel):
|
||||
title = models.CharField(max_length=200, verbose_name='标题')
|
||||
icon = models.CharField(max_length=100, blank=True, verbose_name='图标')
|
||||
order = models.IntegerField(default=0, verbose_name='排序')
|
||||
affix_tab = models.BooleanField(default=False, verbose_name='固定标签页')
|
||||
badge = models.CharField(max_length=50, blank=True, verbose_name='徽章文本')
|
||||
badge_type = models.CharField(max_length=20, blank=True, verbose_name='徽章类型')
|
||||
badge_variants = models.CharField(max_length=20, blank=True, verbose_name='徽章样式')
|
||||
iframe_src = models.URLField(blank=True, verbose_name='内嵌页面URL')
|
||||
link = models.URLField(blank=True, verbose_name='外部链接')
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
class Meta:
|
||||
db_table = 'system_menu_meta'
|
||||
verbose_name = '菜单元数据'
|
||||
verbose_name_plural = '菜单元数据'
|
||||
|
||||
# 主菜单模型
|
||||
class Menu(CoreModel):
|
||||
pid = models.ForeignKey(
|
||||
@@ -105,7 +95,7 @@ class Menu(CoreModel):
|
||||
verbose_name='父菜单'
|
||||
)
|
||||
name = models.CharField(max_length=100, verbose_name='菜单名称')
|
||||
status = models.IntegerField(choices=MenuStatus.choices, default=MenuStatus.ENABLED, verbose_name='状态')
|
||||
status = models.IntegerField(choices=CommonStatus.choices, default=CommonStatus.ENABLED, verbose_name='状态')
|
||||
type = models.CharField(choices=MenuType.choices, max_length=20, verbose_name='菜单类型')
|
||||
path = models.CharField(max_length=200, blank=True, verbose_name='路由路径')
|
||||
component = models.CharField(max_length=200, blank=True, verbose_name='组件路径')
|
||||
@@ -120,19 +110,14 @@ class Menu(CoreModel):
|
||||
verbose_name_plural = '菜单管理'
|
||||
ordering = ['meta__order', 'id']
|
||||
|
||||
# 角色状态枚举
|
||||
class RoleStatus(models.IntegerChoices):
|
||||
ENABLED = 1, '启用'
|
||||
DISABLED = 0, '禁用'
|
||||
|
||||
class Role(CoreModel):
|
||||
name = models.CharField(
|
||||
max_length=100,
|
||||
verbose_name='角色名称'
|
||||
)
|
||||
status = models.IntegerField(
|
||||
choices=RoleStatus.choices,
|
||||
default=RoleStatus.ENABLED,
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.ENABLED,
|
||||
verbose_name='角色状态'
|
||||
)
|
||||
sort = models.IntegerField(
|
||||
@@ -186,7 +171,11 @@ class DictType(CoreModel):
|
||||
"""字典类型表"""
|
||||
name = models.CharField(max_length=100, default='', verbose_name='字典名称')
|
||||
type = models.CharField(max_length=100, default='', verbose_name='字典类型', db_index=True)
|
||||
status = models.BooleanField(default=True)
|
||||
status = models.IntegerField(
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.ENABLED,
|
||||
verbose_name='状态'
|
||||
)
|
||||
deleted_time = models.DateTimeField(null=True, blank=True, verbose_name='删除时间')
|
||||
|
||||
class Meta:
|
||||
@@ -210,7 +199,11 @@ class DictData(CoreModel):
|
||||
related_name='dict_data',
|
||||
verbose_name='字典类型'
|
||||
)
|
||||
status = models.BooleanField(default=True)
|
||||
status = models.IntegerField(
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.ENABLED,
|
||||
verbose_name='状态'
|
||||
)
|
||||
color_type = models.CharField(max_length=100, blank=True, default='', verbose_name='颜色类型')
|
||||
css_class = models.CharField(max_length=100, blank=True, default='', verbose_name='css 样式')
|
||||
|
||||
@@ -228,7 +221,11 @@ class Post(CoreModel):
|
||||
code = models.CharField(max_length=64, db_comment='岗位编码')
|
||||
name = models.CharField(max_length=50, db_comment='岗位名称')
|
||||
sort = models.IntegerField(default=0, db_comment='显示顺序')
|
||||
status = models.BooleanField(default=False, db_comment='状态')
|
||||
status = models.IntegerField(
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.ENABLED,
|
||||
verbose_name='状态'
|
||||
)
|
||||
|
||||
class Meta:
|
||||
db_table = 'system_post'
|
||||
@@ -257,7 +254,11 @@ class User(AbstractUser, CoreModel):
|
||||
'Post', blank=True, verbose_name='岗位', db_constraint=False,
|
||||
related_name='users'
|
||||
)
|
||||
status = models.BooleanField(default=False, verbose_name='<帐号状态>(1正常 0停用)', db_comment="帐号状态")
|
||||
status = models.IntegerField(
|
||||
choices=CommonStatus.choices,
|
||||
default=CommonStatus.ENABLED,
|
||||
verbose_name='状态'
|
||||
)
|
||||
login_date = models.DateTimeField("<最后登录时间>", blank=True, null=True, db_comment="最后登录时间")
|
||||
login_ip = models.GenericIPAddressField(blank=True, null=True, db_comment="最后登录IP")
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ class PostViewSet(CustomModelViewSet):
|
||||
"""
|
||||
岗位信息表 视图集
|
||||
"""
|
||||
queryset = Post.objects.filter(is_deleted=False).order_by('-id')
|
||||
queryset = Post.objects.filter(is_deleted=False)
|
||||
serializer_class = PostSerializer
|
||||
filterset_fields = ['id', 'remark', 'creator', 'modifier', 'is_deleted', 'code', 'name', 'sort', 'status']
|
||||
search_fields = ['name'] # 根据实际字段调整
|
||||
ordering_fields = ['create_time', 'id']
|
||||
ordering = ['-create_time']
|
||||
ordering_fields = ['create_time', 'id', 'sort']
|
||||
ordering = ['sort']
|
||||
|
||||
@@ -5,6 +5,10 @@
|
||||
"""
|
||||
from django.db import models
|
||||
|
||||
class CommonStatus(models.IntegerChoices):
|
||||
DISABLED = 0, '禁用'
|
||||
ENABLED = 1, '启用'
|
||||
|
||||
class CoreModel(models.Model):
|
||||
remark = models.CharField(max_length=256, db_comment="备注", null=True, blank=True, help_text="备注")
|
||||
creator = models.CharField(max_length=64, null=True, blank=True, help_text="创建人", db_comment="创建人")
|
||||
|
||||
@@ -100,8 +100,8 @@ export function useSchema(): VbenFormSchema[] {
|
||||
componentProps: {
|
||||
buttonStyle: 'solid',
|
||||
options: [
|
||||
{ label: '开启', value: true },
|
||||
{ label: '关闭', value: false },
|
||||
{ label: '开启', value: 1 },
|
||||
{ label: '关闭', value: 0 },
|
||||
],
|
||||
optionType: 'button',
|
||||
},
|
||||
@@ -166,10 +166,6 @@ export function useColumns(
|
||||
{
|
||||
cellRender: {
|
||||
name: 'CellTag',
|
||||
options: [
|
||||
{ label: $t('common.enabled'), value: true },
|
||||
{ label: $t('common.disabled'), value: false },
|
||||
],
|
||||
},
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
|
||||
@@ -42,8 +42,8 @@ export function useSchema(): VbenFormSchema[] {
|
||||
componentProps: {
|
||||
buttonStyle: 'solid',
|
||||
options: [
|
||||
{ label: '开启', value: true },
|
||||
{ label: '关闭', value: false },
|
||||
{ label: '开启', value: 1 },
|
||||
{ label: '关闭', value: 0 },
|
||||
],
|
||||
optionType: 'button',
|
||||
},
|
||||
@@ -97,10 +97,7 @@ export function useColumns(
|
||||
{
|
||||
cellRender: {
|
||||
name: 'CellTag',
|
||||
options: [
|
||||
{ label: $t('common.enabled'), value: true },
|
||||
{ label: $t('common.disabled'), value: false },
|
||||
],
|
||||
|
||||
},
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
|
||||
@@ -75,13 +75,13 @@ export function useColumns(
|
||||
field: 'code',
|
||||
title: '岗位编码',
|
||||
},
|
||||
{
|
||||
field: 'sort',
|
||||
title: '排序',
|
||||
},
|
||||
{
|
||||
cellRender: {
|
||||
name: 'CellTag',
|
||||
options: [
|
||||
{ label: $t('common.enabled'), value: true },
|
||||
{ label: $t('common.disabled'), value: false },
|
||||
],
|
||||
},
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
|
||||
Reference in New Issue
Block a user