Compare commits

...

2 Commits

  1. 427
      vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
  2. 803
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 4
      vue-fastapi-backend/module_admin/dao/meta_dao.py
  4. 59
      vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
  5. 75
      vue-fastapi-backend/module_admin/entity/do/datastd_do.py
  6. 2
      vue-fastapi-backend/module_admin/entity/do/meta_do.py
  7. 1
      vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
  8. 157
      vue-fastapi-backend/module_admin/service/approval_service.py
  9. 17
      vue-fastapi-backend/module_admin/service/meta_service.py
  10. 8
      vue-fastapi-backend/module_admin/service/metadata_config_service.py
  11. 8
      vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
  12. 44
      vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
  13. 13
      vue-fastapi-frontend/src/views/system/flow/index.vue

427
vue-fastapi-backend/module_admin/controller/metadata_config_controller.py

@ -37,17 +37,17 @@ from utils.page_util import PageResponseModel
from utils.log_util import logger
from module_admin.service.login_service import LoginService
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.entity.vo.metatask_vo import DeleteMetataskModel,OperaMetataskModel
from module_admin.entity.vo.dataSource_vo import ProcessDefinition,ParmScheduleVo,ProcessInstancePage
from module_admin.entity.vo.metatask_vo import DeleteMetataskModel, OperaMetataskModel
from module_admin.entity.vo.dataSource_vo import ProcessDefinition, ParmScheduleVo, ProcessInstancePage
metadataConfigController = APIRouter(prefix='/metadataConfig')
@metadataConfigController.get('/clas/list', response_model=PageResponseModel)
async def get_metadata_clas_list(
request: Request,
query: MetadataClasPageQueryModel = Depends(MetadataClasPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: MetadataClasPageQueryModel = Depends(MetadataClasPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_clas_list_services(query_db, query, is_page=True)
logger.info('获取元数据分类列表成功')
@ -57,10 +57,10 @@ async def get_metadata_clas_list(
@metadataConfigController.post('/clas')
@ValidateFields(validate_model='add_metadata_clas')
async def add_metadata_clas(
request: Request,
add_clas: MetadataClasModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
add_clas: MetadataClasModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_clas.upd_time = datetime.now()
add_clas.rec_subm_prsn = current_user.user.user_name
@ -74,10 +74,10 @@ async def add_metadata_clas(
@metadataConfigController.put('/clas')
@ValidateFields(validate_model='edit_metadata_clas')
async def edit_metadata_clas(
request: Request,
edit_clas: MetadataClasModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
edit_clas: MetadataClasModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_clas.upd_time = datetime.now()
edit_clas.rec_subm_prsn = current_user.user.user_name
@ -88,9 +88,9 @@ async def edit_metadata_clas(
@metadataConfigController.delete('/clas/{clas_ids}')
async def delete_metadata_clas(
request: Request,
clas_ids: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
clas_ids: str,
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.delete_metadata_clas_services(query_db, clas_ids)
logger.info(result.message)
@ -99,9 +99,9 @@ async def delete_metadata_clas(
@metadataConfigController.get('/clas/{clas_id}', response_model=MetadataClasModel)
async def get_metadata_clas_detail(
request: Request,
clas_id: int,
query_db: AsyncSession = Depends(get_db),
request: Request,
clas_id: int,
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_clas_detail_services(query_db, clas_id)
logger.info(f'获取元数据分类ID={clas_id}详情成功')
@ -113,22 +113,32 @@ async def get_metadata_clas_detail(
@metadataConfigController.get('/sec/list', response_model=PageResponseModel)
async def get_metadata_sec_list(
request: Request,
query: MetadataSecPageQueryModel = Depends(MetadataSecPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: MetadataSecPageQueryModel = Depends(MetadataSecPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_sec_list_services(query_db, query, is_page=True)
logger.info('获取数据安全配置列表成功')
return ResponseUtil.success(model_content=result)
@metadataConfigController.get('/sec/optionList', response_model=PageResponseModel)
async def get_metadata_sec_list(
request: Request,
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_sec_option_list_services(query_db)
logger.info('获取数据安全配置列表成功')
return ResponseUtil.success(data=result)
@metadataConfigController.post('/sec')
@ValidateFields(validate_model='add_metadata_sec')
async def add_metadata_sec(
request: Request,
add_sec: MetadataSecModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
add_sec: MetadataSecModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_sec.upd_time = datetime.now()
add_sec.rec_subm_prsn = current_user.user.user_name
@ -141,10 +151,10 @@ async def add_metadata_sec(
@metadataConfigController.put('/sec')
@ValidateFields(validate_model='edit_metadata_sec')
async def edit_metadata_sec(
request: Request,
edit_sec: MetadataSecModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
edit_sec: MetadataSecModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_sec.upd_time = datetime.now()
edit_sec.rec_subm_prsn = current_user.user.user_name
@ -156,9 +166,9 @@ async def edit_metadata_sec(
@metadataConfigController.delete('/sec/{sec_ids}')
async def delete_metadata_sec(
request: Request,
sec_ids: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
sec_ids: str,
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.delete_metadata_sec_services(query_db, sec_ids)
logger.info(result.message)
@ -167,9 +177,9 @@ async def delete_metadata_sec(
@metadataConfigController.get('/sec/{sec_id}', response_model=MetadataSecModel)
async def get_metadata_sec_detail(
request: Request,
sec_id: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
sec_id: str,
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_sec_detail_services(query_db, sec_id)
logger.info(f'获取数据安全配置 onum={sec_id} 详情成功')
@ -181,9 +191,9 @@ async def get_metadata_sec_detail(
@metadataConfigController.get('/bizConfig/list', response_model=PageResponseModel)
async def get_biz_config_list(
request: Request,
query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
request: Request,
query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_config_list_services(db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@ -191,9 +201,9 @@ async def get_biz_config_list(
@metadataConfigController.get('/bizConfig/listall')
async def get_biz_config_list_all(
request: Request,
query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
request: Request,
query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_config_list_services(db, query, is_page=False)
return ResponseUtil.success(data=result)
@ -202,9 +212,9 @@ async def get_biz_config_list_all(
@metadataConfigController.post('/bizConfig/add')
@ValidateFields(['bizModule', 'configType', 'data_sec_lvl', 'applyType'])
async def add_biz_config(
item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
@ -215,9 +225,9 @@ async def add_biz_config(
@metadataConfigController.post('/bizConfig/edit')
@ValidateFields(['onum'])
async def edit_biz_config(
item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
item: SecuBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
@ -242,9 +252,9 @@ async def get_biz_config_detail(onum: str, db: AsyncSession = Depends(get_db)):
@metadataConfigController.get('/bizPermiConfig/list', response_model=PageResponseModel)
async def get_biz_permi_config_list(
request: Request,
query: SecuBizConfigModel = Depends(SecuBizPermiConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: SecuBizConfigModel = Depends(SecuBizPermiConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_permi_config_list_services(query_db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@ -252,9 +262,9 @@ async def get_biz_permi_config_list(
@metadataConfigController.post('/bizPermiConfig/add')
async def add_biz_permi_config(
item: SecuBizPermiConfigBatchModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
item: SecuBizPermiConfigBatchModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
create_by = current_user.user.user_name
create_time = datetime.now()
@ -265,9 +275,9 @@ async def add_biz_permi_config(
@metadataConfigController.post('/bizPermiConfig/edit')
@ValidateFields(['onum'])
async def edit_biz_permi_config(
item: SecuBizPermiConfigModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
item: SecuBizPermiConfigModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
@ -290,8 +300,8 @@ async def get_biz_permi_config_detail(onum: str, db: AsyncSession = Depends(get_
@metadataConfigController.get('/bizConfigRela/list/{bizOnum}')
async def get_biz_rela_config_list(
bizOnum: int,
query_db: AsyncSession = Depends(get_db),
bizOnum: int,
query_db: AsyncSession = Depends(get_db),
):
ai_chat_list_result = await MetadataConfigService.get_biz_config_rela_list_services(query_db, bizOnum)
logger.info('获取成功')
@ -300,9 +310,9 @@ async def get_biz_rela_config_list(
@metadataConfigController.get('/busiLabel/list', response_model=PageResponseModel)
async def get_busi_label_list(
request: Request,
query: BatchBusiLabelConfigModel = Depends(BatchBusiLabelConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: BatchBusiLabelConfigModel = Depends(BatchBusiLabelConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_busi_list_services(query_db, query, False)
logger.info('获取业务标签配置列表成功')
@ -312,10 +322,10 @@ async def get_busi_label_list(
@metadataConfigController.post('/busiLabel')
@ValidateFields(validate_model='add_busi_label')
async def add_busi_label(
request: Request,
model: BatchBusiLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchBusiLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@ -328,10 +338,10 @@ async def add_busi_label(
@metadataConfigController.put('/busiLabel')
@ValidateFields(validate_model='edit_busi_label')
async def edit_busi_label(
request: Request,
model: BatchBusiLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchBusiLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@ -343,9 +353,9 @@ async def edit_busi_label(
@metadataConfigController.delete('/busiLabel/{onum_list}')
async def delete_busi_label(
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.delete_busi_services(query_db, onum_list)
logger.info(result.message)
@ -354,9 +364,9 @@ async def delete_busi_label(
@metadataConfigController.get('/busiLabel/{onum}', response_model=BatchBusiLabelConfigModel)
async def get_busi_label_detail(
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_busi_detail_services(query_db, onum)
logger.info(f'获取业务标签配置 onum={onum} 详情成功')
@ -365,9 +375,9 @@ async def get_busi_label_detail(
@metadataConfigController.get('/dataopLabel/list', response_model=PageResponseModel)
async def get_dataop_label_list(
request: Request,
query: BatchDataopLabelConfigModel=Depends(BatchDataopLabelModelPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: BatchDataopLabelConfigModel = Depends(BatchDataopLabelModelPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_dataop_vo_services(query_db, query, is_page=True)
logger.info('获取操作标签配置列表成功')
@ -377,10 +387,10 @@ async def get_dataop_label_list(
@metadataConfigController.post('/dataopLabel')
@ValidateFields(validate_model='add_dataop_label')
async def add_dataop_label(
request: Request,
model: BatchDataopLabelConfigModelVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchDataopLabelConfigModelVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@ -393,10 +403,10 @@ async def add_dataop_label(
@metadataConfigController.put('/dataopLabel')
@ValidateFields(validate_model='edit_dataop_label')
async def edit_dataop_label(
request: Request,
model: BatchDataopLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchDataopLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@ -408,9 +418,9 @@ async def edit_dataop_label(
@metadataConfigController.delete('/dataopLabel/{onum_list}')
async def delete_dataop_label(
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.delete_dataop_services(query_db, onum_list)
logger.info(result.message)
@ -419,9 +429,9 @@ async def delete_dataop_label(
@metadataConfigController.get('/dataopLabel/{onum}', response_model=BatchDataopLabelConfigModel)
async def get_dataop_label_detail(
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_dataop_detail_services(query_db, onum)
logger.info(f'获取操作标签配置 onum={onum} 详情成功')
@ -430,12 +440,12 @@ async def get_dataop_label_detail(
@metadataConfigController.get('/datatypeLabel/list', response_model=PageResponseModel)
async def get_datatype_label_list(
request: Request,
query: BatchDatatypeLabelConfigModel = Depends(BatchDatatypeLabelConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: BatchDatatypeLabelConfigModel = Depends(BatchDatatypeLabelConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_datatype_list_services(query_db, query,False)
result = await BatchLabelConfigService.get_datatype_list_services(query_db, query, False)
logger.info('获取数据类型标签配置列表成功')
return ResponseUtil.success(data=result)
@ -443,14 +453,14 @@ async def get_datatype_label_list(
@metadataConfigController.post('/datatypeLabel')
@ValidateFields(validate_model='add_datatype_label')
async def add_datatype_label(
request: Request,
model: BatchDatatypeLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchDatatypeLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
model.upd_time = datetime.now()
result = await BatchLabelConfigService.add_datatype_services(query_db, model)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@ -459,10 +469,10 @@ async def add_datatype_label(
@metadataConfigController.put('/datatypeLabel')
@ValidateFields(validate_model='edit_datatype_label')
async def edit_datatype_label(
request: Request,
model: BatchDatatypeLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: BatchDatatypeLabelConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@ -474,9 +484,9 @@ async def edit_datatype_label(
@metadataConfigController.delete('/datatypeLabel/{onum_list}')
async def delete_datatype_label(
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum_list: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.delete_datatype_services(query_db, onum_list)
logger.info(result.message)
@ -485,18 +495,20 @@ async def delete_datatype_label(
@metadataConfigController.get('/datatypeLabel/{onum}', response_model=BatchDatatypeLabelConfigModel)
async def get_datatype_label_detail(
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_datatype_detail_services(query_db, onum)
logger.info(f'获取数据类型标签配置 onum={onum} 详情成功')
return ResponseUtil.success(data=result)
@metadataConfigController.get("/datasecConfig/list", response_model=PageResponseModel)
async def get_datasec_config_list(
request: Request,
query: DatasecConfigModel = Depends(DatasecConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
request: Request,
query: DatasecConfigModel = Depends(DatasecConfigPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await DatasecConfigService.get_datasec_list_services(query_db, query, True)
logger.info("获取数据安全参数配置列表成功")
@ -506,14 +518,14 @@ async def get_datasec_config_list(
@metadataConfigController.post("/datasecConfig")
@ValidateFields(validate_model="add_datasec_config")
async def add_datasec_config(
request: Request,
model: DatasecConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: DatasecConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.create_by = current_user.user.user_name
model.create_time = datetime.now()
result = await DatasecConfigService.add_datasec_services(query_db, model,current_user,request)
result = await DatasecConfigService.add_datasec_services(query_db, model, current_user, request)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@ -521,14 +533,14 @@ async def add_datasec_config(
@metadataConfigController.put("/datasecConfig")
@ValidateFields(validate_model="edit_datasec_config")
async def edit_datasec_config(
request: Request,
model: DatasecConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
model: DatasecConfigModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.update_by = current_user.user.user_name
model.update_time = datetime.now()
result = await DatasecConfigService.edit_datasec_services(query_db, model,current_user,request)
result = await DatasecConfigService.edit_datasec_services(query_db, model, current_user, request)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@ -543,77 +555,87 @@ async def edit_datasec_config(
# logger.info(result.message)
# return ResponseUtil.success(msg=result.message)
@metadataConfigController.delete('/datasecConfig/{metatask_ids}/{ds_ids}')
async def delete_system_config(request: Request, metatask_ids: str,ds_ids:str, query_db: AsyncSession = Depends(get_db),current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
delete_config = DeleteMetataskModel(metatask_ids=metatask_ids,ds_ids=ds_ids)
delete_config_result = await DatasecConfigService.delete_datasec_services(request, query_db, delete_config,current_user)
async def delete_system_config(request: Request, metatask_ids: str, ds_ids: str,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
delete_config = DeleteMetataskModel(metatask_ids=metatask_ids, ds_ids=ds_ids)
delete_config_result = await DatasecConfigService.delete_datasec_services(request, query_db, delete_config,
current_user)
logger.info(delete_config_result.message)
return ResponseUtil.success(msg=delete_config_result.message)
@metadataConfigController.get("/datasecConfig/{onum}", response_model=DatasecConfigModel)
async def get_datasec_config_detail(
request: Request,
onum: int,
query_db: AsyncSession = Depends(get_db),
request: Request,
onum: int,
query_db: AsyncSession = Depends(get_db),
):
result = await DatasecConfigService.get_datasec_detail_services(query_db, onum)
logger.info(f"获取数据安全参数配置 onum={onum} 详情成功")
return ResponseUtil.success(data=result)
@metadataConfigController.put('/upOrdown')
async def up_or_down_meta_metatask(
request: Request,
DownOrUpdate: OperaMetataskModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
DownOrUpdate: OperaMetataskModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_config_result = await DatasecConfigService.up_or_down_metatask_services(request, query_db,current_user, DownOrUpdate.id,DownOrUpdate.type)
edit_config_result = await DatasecConfigService.up_or_down_metatask_services(request, query_db, current_user,
DownOrUpdate.id, DownOrUpdate.type)
logger.info(edit_config_result.message)
return ResponseUtil.success(msg=edit_config_result.message)
# 元数据任务调度
@metadataConfigController.put('/DS')
async def DS_meta_metatask(
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
edit_config_result = await DatasecConfigService.ds_metatask_services(request, query_db, process,current_user)
edit_config_result = await DatasecConfigService.ds_metatask_services(request, query_db, process, current_user)
return ResponseUtil.success(msg=edit_config_result)
@metadataConfigController.get('/DS/{id}')
@metadataConfigController.get('/DS/{id}')
async def DS_meta_metatask_detail(
request: Request,
id: int,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
request: Request,
id: int,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
process=ParmScheduleVo()
process.processDefinitionCode=id
edit_config_result = await DatasecConfigService.ds_metatask_detail(request, query_db, process,current_user)
process = ParmScheduleVo()
process.processDefinitionCode = id
edit_config_result = await DatasecConfigService.ds_metatask_detail(request, query_db, process, current_user)
return ResponseUtil.success(data=edit_config_result)
@metadataConfigController.delete('/DS')
async def DS_meta_metatask_delete(
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
edit_config_result = await DatasecConfigService.ds_metatask_delete(request, query_db, process,current_user)
edit_config_result = await DatasecConfigService.ds_metatask_delete(request, query_db, process, current_user)
return ResponseUtil.success(msg=edit_config_result)
# ----------元数据标签调度任务 ----------
@metadataConfigController.get('/taskBizConfig/list', response_model=PageResponseModel)
async def get_task_biz_config_list(
request: Request,
query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
request: Request,
query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_task_biz_config_list_services(db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@ -621,9 +643,9 @@ async def get_task_biz_config_list(
@metadataConfigController.get('/taskBizConfig/listall')
async def get_task_biz_config_list_all(
request: Request,
query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
request: Request,
query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_task_biz_config_list_services(db, query, is_page=False)
return ResponseUtil.success(data=result)
@ -632,28 +654,28 @@ async def get_task_biz_config_list_all(
@metadataConfigController.post('/taskBizConfig/add')
@ValidateFields(['bizModule', 'configType', 'data_sec_lvl', 'applyType'])
async def add_task_biz_config(
request: Request,
item: TaskBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
item: TaskBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
result = await MetadataConfigService.add_task_biz_config_services(db, item,current_user,request)
result = await MetadataConfigService.add_task_biz_config_services(db, item, current_user, request)
return ResponseUtil.success(msg=result.message)
@metadataConfigController.post('/taskBizConfig/edit')
@ValidateFields(['onum'])
async def edit_task_biz_config(
request: Request,
item: TaskBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
item: TaskBizConfigAddModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
result = await MetadataConfigService.edit_task_biz_config_services(db, item,current_user,request)
result = await MetadataConfigService.edit_task_biz_config_services(db, item, current_user, request)
return ResponseUtil.success(msg=result.message)
@ -662,57 +684,64 @@ async def edit_task_biz_config(
# result = await MetadataConfigService.delete_task_biz_config_services(db, onums)
# return ResponseUtil.success(msg=result.message)
@metadataConfigController.delete('/taskBizConfig/{metatask_ids}/{ds_ids}')
async def delete_task_biz_config(request: Request, metatask_ids: str,ds_ids:str, query_db: AsyncSession = Depends(get_db),current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
delete_config = DeleteMetataskModel(metatask_ids=metatask_ids,ds_ids=ds_ids)
delete_config_result = await MetadataConfigService.delete_task_biz_config_services(request, query_db, delete_config,current_user)
async def delete_task_biz_config(request: Request, metatask_ids: str, ds_ids: str,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
delete_config = DeleteMetataskModel(metatask_ids=metatask_ids, ds_ids=ds_ids)
delete_config_result = await MetadataConfigService.delete_task_biz_config_services(request, query_db, delete_config,
current_user)
logger.info(delete_config_result.message)
return ResponseUtil.success(msg=delete_config_result.message)
@metadataConfigController.get('/taskBizConfig/detail')
async def get_task_biz_config_detail(onum: str, db: AsyncSession = Depends(get_db)):
data = await MetadataConfigService.get_task_biz_config_detail_services(db, onum)
return ResponseUtil.success(data=data)
@metadataConfigController.get('/taskBizConfigRela/list/{bizOnum}')
async def get_task_biz_rela_config_list(
bizOnum: int,
query_db: AsyncSession = Depends(get_db),
bizOnum: int,
query_db: AsyncSession = Depends(get_db),
):
ai_chat_list_result = await MetadataConfigService.get_task_biz_config_rela_list_services(query_db, bizOnum)
logger.info('获取成功')
return ResponseUtil.success(data=ai_chat_list_result)
@metadataConfigController.put('/taskBiz/upOrdown')
async def task_biz_up_or_down_meta_metatask(
request: Request,
DownOrUpdate: OperaMetataskModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
request: Request,
DownOrUpdate: OperaMetataskModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_config_result = await MetadataConfigService.up_or_down_metatask_services(request, query_db,current_user, DownOrUpdate.id,DownOrUpdate.type)
edit_config_result = await MetadataConfigService.up_or_down_metatask_services(request, query_db, current_user,
DownOrUpdate.id, DownOrUpdate.type)
logger.info(edit_config_result.message)
return ResponseUtil.success(msg=edit_config_result.message)
return ResponseUtil.success(msg=edit_config_result.message)
@metadataConfigController.put('/taskBiz/DS')
async def task_biz_DS_meta_metatask(
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
edit_config_result = await MetadataConfigService.ds_metatask_services(request, query_db, process, current_user)
edit_config_result = await MetadataConfigService.ds_metatask_services(request, query_db, process,current_user)
return ResponseUtil.success(msg=edit_config_result)
return ResponseUtil.success(msg=edit_config_result)
@metadataConfigController.delete('/taskBiz/DS')
async def task_biz_DS_meta_metatask_delete(
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
request: Request,
process: ParmScheduleVo,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
edit_config_result = await MetadataConfigService.ds_metatask_delete(request, query_db, process, current_user)
edit_config_result = await MetadataConfigService.ds_metatask_delete(request, query_db, process,current_user)
return ResponseUtil.success(msg=edit_config_result)
return ResponseUtil.success(msg=edit_config_result)

803
vue-fastapi-backend/module_admin/dao/datastd_dao.py

File diff suppressed because it is too large

4
vue-fastapi-backend/module_admin/dao/meta_dao.py

@ -178,6 +178,7 @@ class MetaDao:
MetadataFldSuppInfo.fld_clas,
MetadataFldSuppInfo.fld_null_rate,
MetadataFldSuppInfo.data_dict_id,
MetadataFldSuppInfo.data_sec_lvl,
DataStdDict.data_dict_cn_name.label('data_dict_name'),
MetadataFldSuppInfo.rec_stat.label('supp_rec_stat'),
MetadataFldSuppInfo.upd_time.label('supp_upd_time')
@ -329,6 +330,7 @@ class MetaDao:
"fld_clas": vett_info.fld_clas,
"fld_null_rate": vett_info.fld_null_rate,
"data_dict_id": vett_info.data_dict_id,
"data_sec_lvl": vett_info.data_sec_lvl,
"rec_stat": vett_info.rec_stat,
"upd_time": vett_info.upd_time,
"rec_subm_prsn": vett_info.rec_subm_prsn,
@ -389,6 +391,7 @@ class MetaDao:
fld_clas=column.fld_clas,
fld_null_rate=column.fld_null_rate,
data_dict_id=column.data_dict_id,
data_sec_lvl=column.data_sec_lvl,
rec_stat=column.rec_stat,
upd_time=column.upd_time if column.upd_time else datetime.now(),
)
@ -409,6 +412,7 @@ class MetaDao:
suppColumn.fld_clas = column.fld_clas
suppColumn.fld_null_rate = column.fld_null_rate
suppColumn.data_dict_id = column.data_dict_id
suppColumn.data_sec_lvl = column.data_sec_lvl
suppColumn.rec_stat = column.rec_stat
suppColumn.upd_time = column.upd_time
db.add(suppColumn)

59
vue-fastapi-backend/module_admin/dao/metadata_config_dao.py

@ -1,9 +1,10 @@
from datetime import datetime, time
from sqlalchemy import delete, select, update,and_
from sqlalchemy import delete, select, update, and_
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.meta_do import MetadataClas,MetadataExtractInfo # ORM 类
from module_admin.entity.do.metadata_config_do import MetadataSec,SecuBizConfig,SecuBizPermiConfig,SecuBizConfigRela,DatasecConfig ,\
TaskBizConfigRela,TaskBizConfig
from module_admin.entity.do.meta_do import MetadataClas, MetadataExtractInfo # ORM 类
from module_admin.entity.do.metadata_config_do import MetadataSec, SecuBizConfig, SecuBizPermiConfig, SecuBizConfigRela, \
DatasecConfig, \
TaskBizConfigRela, TaskBizConfig
# ORM 类
from typing import List
@ -11,6 +12,7 @@ from sqlalchemy.orm import joinedload
from sqlalchemy.sql import true
from utils.page_util import PageUtil
class MetadataConfigDao:
"""
标签信息数据库操作层
@ -37,6 +39,7 @@ class MetadataConfigDao:
)
)
return result.scalars().first()
@classmethod
async def get_clas_by_onum(cls, db: AsyncSession, clas_onum: int):
"""
@ -55,7 +58,8 @@ class MetadataConfigDao:
query = select(MetadataClas).where(
MetadataClas.clas_pri_clas.like(f"%{query_object.clas_pri_clas}%") if query_object.clas_pri_clas else True,
MetadataClas.clas_scd_clas.like(f"%{query_object.clas_scd_clas}%") if query_object.clas_scd_clas else True,
MetadataClas.clas_thre_clas.like(f"%{query_object.clas_thre_clas}%") if query_object.clas_thre_clas else True,
MetadataClas.clas_thre_clas.like(
f"%{query_object.clas_thre_clas}%") if query_object.clas_thre_clas else True,
MetadataClas.clas_name.like(f"%{query_object.clas_name}%") if query_object.clas_name else True,
MetadataClas.clas_eff_flag == query_object.clas_eff_flag if query_object.clas_eff_flag else True,
MetadataClas.upd_time.between(
@ -94,6 +98,7 @@ class MetadataConfigDao:
删除标签信息支持批量
"""
await db.execute(delete(MetadataClas).where(MetadataClas.clas_onum.in_(clas_onum_list)))
@classmethod
async def get_sec_detail_by_id(cls, db: AsyncSession, onum: str):
result = await db.execute(select(MetadataSec).where(MetadataSec.onum == onum))
@ -102,7 +107,8 @@ class MetadataConfigDao:
@classmethod
async def get_metadata_sec_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(MetadataSec).where(
MetadataSec.sec_level_name.like(f"%{query_object.sec_level_name}%") if query_object.sec_level_name else True,
MetadataSec.sec_level_name.like(
f"%{query_object.sec_level_name}%") if query_object.sec_level_name else True,
MetadataSec.sec_eff_flag == query_object.sec_eff_flag if query_object.sec_eff_flag else True,
MetadataSec.upd_time.between(
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(0, 0, 0)),
@ -113,12 +119,19 @@ class MetadataConfigDao:
from utils.page_util import PageUtil
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod
async def get_metadata_sec_option_list(cls, db: AsyncSession):
query = select(MetadataSec).where(MetadataSec.sec_eff_flag == '1').order_by(MetadataSec.sec_level_summary)
result = (await db.execute(query)).scalars().all()
return result
@classmethod
async def add_metadata_sec_dao(cls, db: AsyncSession, sec):
db_sec = MetadataSec(**sec.model_dump())
db.add(db_sec)
await db.flush()
return db_sec
return db_sec
@classmethod
async def get_by_sec_level_summary(cls, query_db: AsyncSession, sec_level_summary: str, exclude_onum: str = None):
stmt = select(MetadataSec).where(MetadataSec.sec_level_summary == sec_level_summary)
@ -136,7 +149,8 @@ class MetadataConfigDao:
@classmethod
async def delete_metadata_sec_dao(cls, db: AsyncSession, onum_list: list[str]):
await db.execute(delete(MetadataSec).where(MetadataSec.onum.in_(onum_list)))
# ------------- t_secu_biz_config 相关方法 --------------
# ------------- t_secu_biz_config 相关方法 --------------
@classmethod
async def get_biz_config_detail_by_id(cls, db: AsyncSession, onum: int):
@ -173,6 +187,7 @@ class MetadataConfigDao:
@classmethod
async def delete_biz_config(cls, db: AsyncSession, onum_list: list[int]):
await db.execute(delete(SecuBizConfig).where(SecuBizConfig.onum.in_(onum_list)))
@classmethod
async def add_biz_permi_config_batch(cls, db: AsyncSession, records: List[SecuBizPermiConfig]):
orm_objs = []
@ -190,6 +205,7 @@ class MetadataConfigDao:
)
orm_objs.append(orm_obj)
db.add_all(orm_objs)
# ------------- t_secu_biz_permi_config 相关方法 --------------
@classmethod
@ -247,6 +263,7 @@ class MetadataConfigDao:
return await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
@classmethod
async def add_biz_permi_config(cls, db: AsyncSession, obj):
db_obj = SecuBizPermiConfig(**obj.model_dump())
@ -262,26 +279,31 @@ class MetadataConfigDao:
@classmethod
async def delete_biz_permi_config(cls, db: AsyncSession, onum_list: list[int]):
await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
# ----------------------------------biz_confg_rela------------------------------
await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
# ----------------------------------biz_confg_rela------------------------------
@classmethod
async def delete_biz_rela_dao(cls, db: AsyncSession, biz_onum: int):
await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum == biz_onum) )
await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum == biz_onum))
@classmethod
async def delete_biz_rela_batch(cls, db: AsyncSession, bonum_list: list[int]):
await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum.in_(bonum_list)) )
await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum.in_(bonum_list)))
@classmethod
async def add_batch_biz_rela_dao(cls, db: AsyncSession, rela_list: List[SecuBizConfigRela]):
db.add_all(rela_list)
await db.flush()
await db.flush()
@classmethod
async def get_biz_rela_by_biz_id(cls, db: AsyncSession, biz_onum: int):
result = await db.execute(
select(MetadataExtractInfo)
.join(SecuBizConfigRela, MetadataExtractInfo.onum == SecuBizConfigRela.tab_onum)
.where(SecuBizConfigRela.biz_onum == biz_onum)
)
return result.scalars().all()
)
return result.scalars().all()
@classmethod
async def get_detail_by_id(cls, db: AsyncSession, onum: int):
"""
@ -332,8 +354,9 @@ class MetadataConfigDao:
"""
批量删除任务配置
"""
await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_(onum_list)))
# ----------------------------------元数据标签调度------------------------------
await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_(onum_list)))
# ----------------------------------元数据标签调度------------------------------
@classmethod
async def get_task_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(TaskBizConfig).where(
@ -398,4 +421,4 @@ class MetadataConfigDao:
.join(TaskBizConfigRela, MetadataExtractInfo.onum == TaskBizConfigRela.tab_onum)
.where(TaskBizConfigRela.biz_onum == biz_onum)
)
return result.scalars().all()
return result.scalars().all()

75
vue-fastapi-backend/module_admin/entity/do/datastd_do.py

@ -1,8 +1,9 @@
from sqlalchemy import Column, Integer, String, DateTime,Text, DateTime,Date, BigInteger
from sqlalchemy import Column, Integer, String, DateTime, Text, DateTime, Date, BigInteger
from config.database import Base
from datetime import datetime
from sqlalchemy.dialects.mysql import MEDIUMTEXT
# 数据标准模块相关表
class DataStdCode(Base):
@ -23,7 +24,8 @@ class DataStdCode(Base):
src_sys = Column(String(50), default=None, comment='归属系统')
class_id = Column(String(10), default=None, comment='代码类型(code:代码 codeItem:代码项)')
parent_id = Column(String(50), default=None, comment='父id')
code_map_id = Column(String(50), default=None,comment='标准代码Id')
code_map_id = Column(String(50), default=None, comment='标准代码Id')
class DataStdCodeAppr(Base):
"""
@ -43,19 +45,21 @@ class DataStdCodeAppr(Base):
src_sys = Column(String(50), default=None, comment='归属系统')
class_id = Column(String(10), default=None, comment='代码类型(code:代码 codeItem:代码项)')
parent_id = Column(String(50), default=None, comment='父id')
code_map_id = Column(String(50), default=None,comment='标准代码Id')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
code_map_id = Column(String(50), default=None, comment='标准代码Id')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None,
comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
class DataStdDict(Base):
"""
标准字典表 (Standard Code Table)
"""
__tablename__ = 't_data_dict' # 表名为 t_datastd_dict
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@ -73,12 +77,13 @@ class DataStdDict(Base):
src_sys_tab_fld_name = Column(MEDIUMTEXT, default=None, comment='来源系统表字段名')
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
class DataStdDictAppr(Base):
"""
标准字典审批表 (Standard Code Table)
"""
__tablename__ = 't_data_dict_appr' # 表名为 t_datastd_dict
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@ -95,15 +100,17 @@ class DataStdDictAppr(Base):
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
data_dict_data_type = Column(String(100), default=None, comment='数据类型')
src_sys_tab_fld_name = Column(MEDIUMTEXT, default=None, comment='来源系统表字段名')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None,
comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
class DataAstContent(Base):
__tablename__ = "t_data_std_content"
content_onum = Column(Integer, primary_key=True, autoincrement=True, comment='目录序号')
content_name = Column(String(255), nullable=False, comment='目录名称')
content_stat = Column(String(10), nullable=False, comment='目录状态(有效/废弃/停用)')
@ -115,11 +122,9 @@ class DataAstContent(Base):
upd_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
class DataAstContentRela(Base):
__tablename__ = "t_data_std_content_rela"
rela_onum = Column(Integer, primary_key=True, autoincrement=True, comment='关系序号')
content_onum = Column(Integer, nullable=False, comment='目录序号')
ast_onum = Column(Integer, nullable=False, comment='资产序号')
@ -128,14 +133,14 @@ class DataAstContentRela(Base):
rela_eff_end_date = Column(Date, nullable=True, comment='关系生效结束日期')
upd_prsn = Column(String(255), nullable=False, comment='更新人员')
rela_status = Column(String(18), nullable=True, comment='关系状态')
class DataStdMain(Base):
"""
数据标准表
"""
__tablename__ = 't_data_std'
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@ -157,16 +162,16 @@ class DataStdMain(Base):
data_std_it_ownership_prsn = Column(String(100), default=None, comment='技术认责人员')
belt_data_std_content = Column(Integer, default=None, comment='分类')
data_std_src = Column(String(20), default=None, comment='标准来源')
data_clas = Column(String(20), default=None, comment='数据类别')
typical_fld = Column(String(500), default=None, comment='典型字段')
data_clas = Column(String(20), default=None, comment='数据类别')
typical_fld = Column(String(500), default=None, comment='典型字段')
class DataStdMainAppr(Base):
"""
数据标准表
"""
__tablename__ = 't_data_std_appr'
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@ -188,11 +193,11 @@ class DataStdMainAppr(Base):
data_std_it_ownership_prsn = Column(String(100), default=None, comment='技术认责人员')
belt_data_std_content = Column(Integer, default=None, comment='分类')
data_std_src = Column(String(20), default=None, comment='标准来源')
data_clas = Column(String(20), default=None, comment='数据类别')
typical_fld = Column(String(500), default=None, comment='典型字段')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
data_clas = Column(String(20), default=None, comment='数据类别')
typical_fld = Column(String(500), default=None, comment='典型字段')
changeType = Column(String(10), default=None, comment='变更类型')
flowId = Column(String(50), default=None, comment='审批Id')
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None,
comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')

2
vue-fastapi-backend/module_admin/entity/do/meta_do.py

@ -130,6 +130,7 @@ class MetadataFldSuppInfo(Base):
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')
upd_time = Column(DateTime, comment='更新时间')
@ -153,6 +154,7 @@ class MetadataFldSuppInfoVett(Base):
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')
upd_time = Column(DateTime, comment='更新时间')
rec_subm_prsn = Column(String(255, collation='utf8_general_ci'), comment='记录提交人')

1
vue-fastapi-backend/module_admin/entity/vo/meta_vo.py

@ -41,6 +41,7 @@ class ColumnSuppleModel(BaseModel):
fld_null_rate: Optional[str] = None
rec_stat: Optional[str] = None
data_dict_id: Optional[str] = None
data_sec_lvl: Optional[str] = None
class SuppleModel(BaseModel):

157
vue-fastapi-backend/module_admin/service/approval_service.py

@ -4,7 +4,8 @@ import uuid
from typing import Optional
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.entity.vo.approval_vo import ApplyModel, OperateModel, ApprovalQueryObject, EditObjectModel, SaveConfModel
from module_admin.entity.vo.approval_vo import ApplyModel, OperateModel, ApprovalQueryObject, EditObjectModel, \
SaveConfModel
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.entity.do.approval_do import FlowApproval
from exceptions.exception import ServiceException, ServiceWarning
@ -15,9 +16,9 @@ from module_admin.dao.user_dao import UserDao
from module_admin.dao.meta_dao import MetaDao
from module_admin.dao.datastd_dao import DataStdDao
from module_admin.dao.dataast_dao import DataAstDao
from module_admin.entity.vo.dataast_vo import DataAstApprModel,DataAstInfoModel
from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DataStdDictModel,DataStdMainModel,DataStdMainApprModel,DataStdDictApprModel,DataStdDictModel,DataStdCodeApprModel
from module_admin.entity.vo.dataast_vo import DataAstApprModel, DataAstInfoModel
from module_admin.entity.vo.datastd_vo import DataStdCodeModel, DataStdDictModel, DataStdMainModel, \
DataStdMainApprModel, DataStdDictApprModel, DataStdDictModel, DataStdCodeApprModel
class ApprovalService:
@ -96,8 +97,8 @@ class ApprovalService:
await cls.syncSuppInfo(result_db, flow_approval.businessId, edit.status)
# 数据标准审批
elif flow_approval.businessType == 'dataStdMain':
await cls.syncStdMainInfo(result_db, flow_approval.businessId, edit.status)
# 数据字典审批
await cls.syncStdMainInfo(result_db, flow_approval.businessId, edit.status)
# 数据字典审批
elif flow_approval.businessType == 'dataStdDict':
await cls.syncStdDictInfo(result_db, flow_approval.businessId, edit.status)
# 标准代码审批
@ -138,103 +139,103 @@ class ApprovalService:
else:
await MetaDao.updateMetadataSuppInfo(suppTable.onum, table, result_db)
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def syncStdMainInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_main_appr_list(suppId, result_db)
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdMainApprModel.model_validate(appr)
change_type = appr_model.changeType
if operateType =='succeed':
if change_type == "add":
# 将 DataStdMainApprModel 转换为 DataStdMainModel
main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_main(result_db, main_model)
elif change_type == "edit":
# 使用 oldInstId 作为主键
main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_main(result_db, main_model)
elif change_type == "delete":
await DataStdDao.delete_std_main(result_db, appr_model.oldInstId)
if operateType == 'succeed':
if change_type == "add":
# 将 DataStdMainApprModel 转换为 DataStdMainModel
main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_main(result_db, main_model)
elif change_type == "edit":
# 使用 oldInstId 作为主键
main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_main(result_db, main_model)
elif change_type == "delete":
await DataStdDao.delete_std_main(result_db, appr_model.oldInstId)
# 更新 approStatus 状态
appr_model.approStatus = operateType
await DataStdDao.update_std_main_appr(result_db, appr_model)
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def syncStdDictInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_dict_appr_list(suppId, result_db)
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdDictApprModel.model_validate(appr)
change_type = appr_model.changeType
if operateType =='succeed':
if change_type == "add":
# 将 DataStdDictApprModel 转换为 DataStdDictModel
main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_dict(result_db, main_model)
elif change_type == "edit":
# 使用 oldInstId 作为主键
main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_dict(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":
await DataStdDao.delete_std_dict(result_db, appr_model.oldInstId)
if operateType == 'succeed':
if change_type == "add":
# 将 DataStdDictApprModel 转换为 DataStdDictModel
main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_dict(result_db, main_model)
elif change_type == "edit":
# 使用 oldInstId 作为主键
main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_dict(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":
await DataStdDao.delete_std_dict(result_db, appr_model.oldInstId)
# 更新 approStatus 状态
appr_model.approStatus = operateType
await DataStdDao.update_std_dict_appr(result_db, appr_model)
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def syncStdCodeInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_code_appr_list_Flow(suppId, result_db)
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdCodeApprModel.model_validate(appr)
change_type = appr_model.changeType
if operateType =='succeed':
if change_type == "add":
main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_code(result_db, main_model)
elif change_type == "update":
# 使用 oldInstId 作为主键
main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":
await DataStdDao.delete_std_code(result_db, appr_model.oldInstId)
if operateType == 'succeed':
if change_type == "add":
main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.add_std_code(result_db, main_model)
elif change_type == "update":
# 使用 oldInstId 作为主键
main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":
await DataStdDao.delete_std_code(result_db, appr_model.oldInstId)
# 更新 approStatus 状态
appr_model.approStatus = operateType
main_appro_model = DataStdCodeApprModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataStdDao.update_std_code_appr(result_db, main_appro_model.model_dump(exclude_unset=True))
await DataStdDao.update_std_code_appr(result_db, main_appro_model.model_dump(exclude_unset=True))
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def syncDataAstInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataAstDao.get_dataast_appr_list_Flow(suppId, result_db)
@ -243,14 +244,13 @@ class ApprovalService:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataAstApprModel.model_validate(appr)
change_type = appr_model.changeType
if operateType =='succeed':
if operateType == 'succeed':
if change_type == "add":
# logger.info(f"发现新增类型变更,准备添加数据资产,AST_NO: {appr_model.ast_no}")
main_model = DataAstInfoModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
await DataAstDao.add_dataast_data(result_db, main_model)
# logger.info(f"数据资产添加成功,AST_NO: {main_model.ast_no}")
# 更新 approStatus 状态
appr_model.approStatus = operateType
main_appro_model = DataStdCodeApprModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
@ -259,8 +259,6 @@ class ApprovalService:
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def get_flow_list_services(cls, query_db: AsyncSession, query_param: ApprovalQueryObject,
current_user: CurrentUserModel):
@ -282,27 +280,27 @@ class ApprovalService:
for item in approval_list:
nextRoles = json.loads(item.nextStepRole)
nextUsers = json.loads(item.nextStepUser)
if len(nextRoles)>0 and len(nextUsers) > 0:
if len(nextRoles) > 0 and len(nextUsers) > 0:
if current_user.user.user_name in nextUsers:
count = count+1
count = count + 1
break
if any(element in set(current_user.roles) for element in nextRoles):
count = count+1
count = count + 1
break
if len(nextRoles) > 0 and len(nextUsers) == 0:
if any(element in set(current_user.roles) for element in nextRoles):
count = count+1
count = count + 1
break
if len(nextRoles) == 0 and len(nextUsers) > 0:
if current_user.user.user_name in nextUsers:
count = count+1
count = count + 1
break
return count
@classmethod
async def cancel_apply_services(cls, query_db: AsyncSession, flow_id: str,
current_user: CurrentUserModel):
flow = await ApprovalDao.get_flow_by_idAndUser(query_db,flow_id, current_user.user.user_name)
current_user: CurrentUserModel):
flow = await ApprovalDao.get_flow_by_idAndUser(query_db, flow_id, current_user.user.user_name)
if flow is None:
raise ServiceException(message=f'所操作的流程不存在')
if flow.status == 'succeed' or flow.status == 'rejected':
@ -335,4 +333,3 @@ class ApprovalService:
await ApprovalDao.add_flow_config(query_db, confDict)
await query_db.commit()
return CrudResponseModel(is_success=True, message='操作成功')

17
vue-fastapi-backend/module_admin/service/meta_service.py

@ -46,8 +46,13 @@ class MetaService:
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
else:
# meta_rel_list = MetaDao.get_meta_rel_list(result_db, query_object, data_scope_sql)
return None
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
@classmethod
async def get_meta_col_list_services(cls, result_db: AsyncSession, query_object: MetaColObject):
@ -57,6 +62,10 @@ class MetaService:
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list)
if column['dataSecLvl'] is None and column['dataDictId'] is not None:
# 获取数据标准的安全等级
data_sec_lvl = await DataStdDao.get_data_sec_lvl_by_dict_id(result_db, column['dataDictId'])
column['dataSecLvl'] = data_sec_lvl
return result
@classmethod
@ -99,7 +108,7 @@ class MetaService:
supple.tab_eng_name,
column.fld_eng_name, result_db)
data_dict_name = ''
if oldColumn.data_dict_id and oldColumn.data_dict_id != '':
if oldColumn and oldColumn.data_dict_id and oldColumn.data_dict_id != '':
oldDict = await DataStdDao.get_data_dict_by_id(result_db, oldColumn.data_dict_id)
data_dict_name = oldDict.data_dict_cn_name if oldDict else ''
columnInfo = await MetaDao.get_meta_column(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name,
@ -117,6 +126,7 @@ class MetaService:
suppColumnInfo.fld_clas = column.fld_clas
suppColumnInfo.fld_null_rate = column.fld_null_rate
suppColumnInfo.data_dict_id = column.data_dict_id
suppColumnInfo.data_sec_lvl = column.data_sec_lvl
suppColumnInfo.rec_stat = column.rec_stat
suppColumnInfo.rec_subm_prsn = current_user.user.user_name
suppColumnInfo.apply_time = applyTime
@ -174,6 +184,7 @@ class MetaService:
fldClas=column.fld_clas if column and column.fld_clas else None,
fldNullRate=column.fld_null_rate if column and column.fld_null_rate else None,
dataDictId=column.data_dict_id if column and column.data_dict_id else None,
dataSecLvl=column.data_sec_lvl if column and column.data_sec_lvl else None,
dataDictName=dictName,
recStat=column.rec_stat if column and column.rec_stat else None,
updTime=column.upd_time.isoformat() if column and column.upd_time else None

8
vue-fastapi-backend/module_admin/service/metadata_config_service.py

@ -133,6 +133,14 @@ class MetadataConfigService:
result = await MetadataConfigDao.get_metadata_sec_list(query_db, query_object, is_page)
return result
@classmethod
async def get_metadata_sec_option_list_services(cls, query_db: AsyncSession):
"""
查询数据安全配置列表
"""
result = await MetadataConfigDao.get_metadata_sec_option_list(query_db)
return CamelCaseUtil.transform_result(result)
@classmethod
async def add_metadata_sec_services(cls, query_db: AsyncSession, page_object: MetadataSecModel):
"""

8
vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js

@ -53,6 +53,14 @@ export function listMetadataSec(query) {
})
}
// 查询数据安全配置列表,不带分页
export function listMetadataSecOptions() {
return request({
url: '/default-api/metadataConfig/sec/optionList',
method: 'get'
})
}
// 查询数据安全配置详情
export function getMetadataSec(secId) {
return request({

44
vue-fastapi-frontend/src/views/meta/metaInfo/index.vue

@ -313,6 +313,7 @@
</template>
</el-table-column>
<el-table-column label="引用字典/标准" align="center" prop="dataDictName"></el-table-column>
<el-table-column label="安全等级" align="center" prop="dataSecLvl"></el-table-column>
<el-table-column label="更新时间" align="center" prop="suppUpdTime" width="180">
<template #default="scope">
<template v-if="scope.row.suppUpdTime && scope.row.suppUpdTime !== ''">
@ -521,6 +522,21 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="安全等级">
<el-select
v-model="currentColumnData.dataSecLvl"
filterable
style="width: 192px"
placeholder="请输入关键词"
:loading="loading">
<el-option
v-for="item in secLvlOptions"
:key="item.onum"
:label="item.secLevelSummary + ' - ' + item.secLevelName"
:value="item.secLevelSummary">
</el-option>
</el-select>
</el-form-item>
</el-form>
<el-form :model="currentColumnTag" :inline="true" label-width="100px">
<el-form-item label="一级分类:" prop="userName">
@ -738,6 +754,7 @@
import cache from "@/plugins/cache";
import BusinssRelation from "./businssRelation.vue";
import BloodRelation from "./bloodRelation.vue";
import {listMetadataSecOptions} from "@/api/metadataConfig/metadataConfig.js";
const data = reactive({
queryParams:{
@ -823,6 +840,7 @@
"clasScdClas": ""
});
const stddictOptions = ref([])
const secLvlOptions = ref([])
function changeColumnTab(){
if (activeColumnTab.value === 'businessRelation'){
@ -858,6 +876,11 @@
})
}
}
function remoteSecLvl(){
listMetadataSecOptions().then(res=>{
secLvlOptions.value = res.data
})
}
function generateDemoData(){
let param ={
dataAstSrc: currentMetaData.value.ssysCd,
@ -965,6 +988,10 @@
columnList.value[i].dataDictName = currentColumnData.value.dataDictName
changed = true
}
if (columnList.value[i].dataSecLvl !== currentColumnData.value.dataSecLvl){
columnList.value[i].dataSecLvl = currentColumnData.value.dataSecLvl
changed = true
}
if (currentColumnData.value.showFldClas && currentColumnData.value.showFldClas.length > 0){
let showFldClas = currentColumnData.value.showFldClas
let fldClas = []
@ -1037,7 +1064,20 @@
}
columnInfoDialog.value = false
if (changed){
changedColumns.value.push(currentColumnData.value)
if (changedColumns.value.length>0){
let hasCol = false
for (let i = 0; i < changedColumns.value.length; i++) {
if (changedColumns.value[i].fldEngName === currentColumnData.value.fldEngName){
changedColumns.value[i] = currentColumnData.value
hasCol = true
}
}
if (!hasCol){
changedColumns.value.push(currentColumnData.value)
}
}else{
changedColumns.value.push(currentColumnData.value)
}
}
}
function addTableTag(){
@ -1188,6 +1228,7 @@
metaClasList.value = res.data
})
remoteStddict()
remoteSecLvl()
}
function showColumnDialog(row) {
let tableData = JSON.parse(JSON.stringify(row))
@ -1501,6 +1542,7 @@
fldClas: JSON.stringify(column.showFldClas),
fldNullRate: column.fldNullRate,
dataDictId: column.dataDictId,
dataSecLvl: column.dataSecLvl,
recStat: column.recStat
})
}

13
vue-fastapi-frontend/src/views/system/flow/index.vue

@ -344,6 +344,12 @@
<span v-else style="color: red">{{scope.row.dataDictName}}</span>
</template>
</el-table-column>
<el-table-column label="安全等级" align="center" prop="dataSecLvl">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].dataSecLvl === newColumnList[scope.$index].dataSecLvl">{{scope.row.dataSecLvl}}</span>
<span v-else style="color: red">{{scope.row.dataSecLvl}}</span>
</template>
</el-table-column>
</el-table>
</div>
<br><br>
@ -524,6 +530,12 @@
<span v-else style="color: red">{{scope.row.dataDictName}}</span>
</template>
</el-table-column>
<el-table-column label="安全等级" align="center" prop="dataSecLvl">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].dataSecLvl === newColumnList[scope.$index].dataSecLvl">{{scope.row.dataSecLvl}}</span>
<span v-else style="color: red">{{scope.row.dataSecLvl}}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
@ -983,6 +995,7 @@ function showBusinessDataDialog(row){
fldCnName:column.fldCnName,
fldType:column.fldType,
dataDictName: col.dataDictName,
dataSecLvl: col.dataSecLvl,
showColClas: showNewColClas
})
}

Loading…
Cancel
Save