Browse Source

Merge remote-tracking branch 'origin/master'

master
xueyinfei 2 months ago
parent
commit
a520ca24cb
  1. 54
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 434
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 194
      vue-fastapi-backend/module_admin/entity/do/datastd_do.py
  4. 90
      vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
  5. 6
      vue-fastapi-backend/module_admin/service/approval_service.py
  6. 432
      vue-fastapi-backend/module_admin/service/datastd_service.py
  7. 10
      vue-fastapi-backend/sql/ruoyi-fastapi-pg.sql
  8. 6
      vue-fastapi-backend/sql/ruoyi-fastapi.sql
  9. 22
      vue-fastapi-backend/sql/syq20250204版本更新(数据安全模块).sql
  10. 2
      vue-fastapi-frontend/src/api/datastd/std.js
  11. 4
      vue-fastapi-frontend/src/main.js
  12. 17
      vue-fastapi-frontend/src/store/modules/user.js
  13. 507
      vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
  14. 112
      vue-fastapi-frontend/src/views/datastd/main/index.vue
  15. 50
      vue-fastapi-frontend/src/views/datastd/stdcode/codeComponents.vue
  16. 99
      vue-fastapi-frontend/src/views/datastd/stdcode/codeItem.vue
  17. 48
      vue-fastapi-frontend/src/views/datastd/stdcode/codeItemCommon.vue
  18. 129
      vue-fastapi-frontend/src/views/datastd/stdcode/codeMap.vue
  19. 22
      vue-fastapi-frontend/src/views/datastd/stdcode/codeStdMap.vue
  20. 93
      vue-fastapi-frontend/src/views/datastd/stdcode/index.vue
  21. 91
      vue-fastapi-frontend/src/views/datastd/stddict/AddEditForm.vue
  22. 60
      vue-fastapi-frontend/src/views/datastd/stddict/codeItem.vue
  23. 28
      vue-fastapi-frontend/src/views/datastd/stddict/codeItemCommon.vue
  24. 116
      vue-fastapi-frontend/src/views/datastd/stddict/index.vue
  25. 57
      vue-fastapi-frontend/src/views/system/flow/codeItemCommon.vue
  26. 18
      vue-fastapi-frontend/src/views/system/flow/dataStdCodeAppr.vue
  27. 140
      vue-fastapi-frontend/src/views/system/flow/dataStdDictAppr.vue
  28. 110
      vue-fastapi-frontend/src/views/system/flow/dataStdMainAppr.vue

54
vue-fastapi-backend/module_admin/controller/datastd_controller.py

@ -87,8 +87,8 @@ async def add_std_code(
add_std_code.create_by = current_user.user.user_name
add_std_code.create_time = datetime.now()
add_std_code.update_by = current_user.user.user_name
add_std_code.update_time = datetime.now()
add_std_code.upd_prsn = current_user.user.user_name
add_std_code.upd_time = datetime.now()
add_std_code_result = await DataStdService.add_std_code_services(request, query_db, add_std_code)
logger.info(add_std_code_result.message)
return ResponseUtil.success(msg=add_std_code_result.message)
@ -102,8 +102,8 @@ async def edit_std_code(
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_std_code.update_by = current_user.user.user_name
edit_std_code.update_time = datetime.now()
edit_std_code.upd_prsn = current_user.user.user_name
edit_std_code.upd_time = datetime.now()
edit_std_code_result = await DataStdService.edit_std_code_services(request, query_db, edit_std_code)
logger.info(edit_std_code_result.message)
return ResponseUtil.success(msg=edit_std_code_result.message)
@ -145,9 +145,9 @@ async def add_std_code_with_items(
# 设置标准代码的创建和更新时间
code.create_by = current_user.user.user_name
code.create_time = datetime.now()
code.update_by = current_user.user.user_name
code.update_time = datetime.now()
code.sys_name='公司级' if 'company'==code.code_type else code.sys_name
code.upd_prsn = current_user.user.user_name
code.upd_time = datetime.now()
code.src_sys='公司级' if 'company'==code.cd_type else code.src_sys
# 传递给服务层,处理标准代码和代码项的添加
result = await DataStdService.add_std_code_with_items_services(request, query_db, code, code_item_list)
@ -181,9 +181,9 @@ async def edit_std_code_with_items(
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
# 设置标准代码的创建和更新时间
code.sys_name='公司级' if 'company'==code.code_type else code.sys_name
code.update_by = current_user.user.user_name
code.update_time = datetime.now()
code.src_sys='公司级' if 'company'==code.cd_type else code.src_sys
code.upd_prsn = current_user.user.user_name
code.upd_time = datetime.now()
# 传递给服务层,处理标准代码和代码项的添加
result = await DataStdService.edit_std_code_with_items_services(request, query_db, code, code_item_list)
@ -258,8 +258,8 @@ async def add_std_dict(
add_std_dict.create_by = current_user.user.user_name
add_std_dict.create_time = datetime.now()
add_std_dict.update_by = current_user.user.user_name
add_std_dict.update_time = datetime.now()
add_std_dict.upd_prsn = current_user.user.user_name
add_std_dict.upd_time = datetime.now()
add_std_dict_result = await DataStdService.add_std_dict_services(request, query_db, add_std_dict)
logger.info(add_std_dict_result.message)
return ResponseUtil.success(msg=add_std_dict_result.message)
@ -273,8 +273,8 @@ async def edit_std_dict(
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_std_dict.update_by = current_user.user.user_name
edit_std_dict.update_time = datetime.now()
edit_std_dict.upd_prsn = current_user.user.user_name
edit_std_dict.upd_time = datetime.now()
edit_std_dict_result = await DataStdService.edit_std_dict_services(request, query_db, edit_std_dict)
logger.info(edit_std_dict_result.message)
return ResponseUtil.success(msg=edit_std_dict_result.message)
@ -310,8 +310,8 @@ async def add_std_dict_appr(
):
add_std_dict.create_by = current_user.user.user_name
add_std_dict.create_time = datetime.now()
add_std_dict.update_by = current_user.user.user_name
add_std_dict.update_time = datetime.now()
add_std_dict.upd_prsn = current_user.user.user_name
add_std_dict.upd_time = datetime.now()
add_std_dict_result = await DataStdService.add_std_dict_appr(query_db, add_std_dict)
logger.info(add_std_dict_result.message)
return ResponseUtil.success(msg=add_std_dict_result.message)
@ -323,8 +323,8 @@ async def edit_std_dict_appr(
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_std_dict.update_by = current_user.user.user_name
edit_std_dict.update_time = datetime.now()
edit_std_dict.upd_prsn = current_user.user.user_name
edit_std_dict.upd_time = datetime.now()
edit_std_dict_result = await DataStdService.edit_std_dict_appr(query_db, edit_std_dict)
logger.info(edit_std_dict_result.message)
return ResponseUtil.success(msg=edit_std_dict_result.message)
@ -574,8 +574,8 @@ async def add_std_main(
):
add_std_main.create_by = current_user.user.user_name
add_std_main.create_time = datetime.now()
add_std_main.update_by = current_user.user.user_name
add_std_main.update_time = datetime.now()
add_std_main.upd_prsn = current_user.user.user_name
add_std_main.upd_time = datetime.now()
add_std_main_result = await DataStdService.add_std_main(query_db, add_std_main)
logger.info(add_std_main_result.message)
return ResponseUtil.success(msg=add_std_main_result.message)
@ -590,8 +590,8 @@ async def add_std_main_appr(
):
add_std_main.create_by = current_user.user.user_name
add_std_main.create_time = datetime.now()
add_std_main.update_by = current_user.user.user_name
add_std_main.update_time = datetime.now()
add_std_main.upd_prsn = current_user.user.user_name
add_std_main.upd_time = datetime.now()
add_std_main_result = await DataStdService.add_std_main_appr(query_db, add_std_main)
logger.info(add_std_main_result.message)
return ResponseUtil.success(msg=add_std_main_result.message)
@ -605,8 +605,8 @@ async def edit_std_main(
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_std_main.update_by = current_user.user.user_name
edit_std_main.update_time = datetime.now()
edit_std_main.upd_prsn = current_user.user.user_name
edit_std_main.upd_time = datetime.now()
edit_std_main_result = await DataStdService.edit_std_main(query_db, edit_std_main)
logger.info(edit_std_main_result.message)
return ResponseUtil.success(msg=edit_std_main_result.message)
@ -618,8 +618,8 @@ async def edit_std_main_appr(
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_std_main.update_by = current_user.user.user_name
edit_std_main.update_time = datetime.now()
edit_std_main.upd_prsn = current_user.user.user_name
edit_std_main.upd_time = datetime.now()
edit_std_main_result = await DataStdService.edit_std_main_appr(query_db, edit_std_main)
logger.info(edit_std_main_result.message)
return ResponseUtil.success(msg=edit_std_main_result.message)
@ -651,7 +651,7 @@ async def change_std_main_onum(
edit_std_main: DataStdMainModel,
query_db: AsyncSession = Depends(get_db),
):
delete_std_main_result = await DataStdService.change_std_main_onum(query_db, edit_std_main.id,edit_std_main.sys_id)
delete_std_main_result = await DataStdService.change_std_main_onum(query_db, edit_std_main.onum,edit_std_main.belt_data_std_content)
logger.info(delete_std_main_result.message)
return ResponseUtil.success(msg=delete_std_main_result.message)
# 标准代码映射图谱

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

@ -25,49 +25,68 @@ class DataStdDao:
filters.append(DataStdCodeAppr.flowId == flowId)
query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time))
return await PageUtil.paginate(db, query, 0, 0, False)
@classmethod
async def get_std_code_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False):
"""
获取 DataStdCode 的列表信息支持模糊查询和分页
:param db: ORM对象
:param query_object: 查询参数对象
:param is_page: 是否开启分页
:return: 列表信息
"""
# 构建查询条件
filters = []
if query_object.code_name:
filters.append(DataStdCode.code_name.like(f"%{query_object.code_name}%"))
if query_object.code_num:
filters.append( or_(
DataStdCode.code_name.like(f"%{query_object.code_num}%"),
DataStdCode.code_num.like(f"%{query_object.code_num}%")
))
if query_object.code_status:
filters.append(DataStdCode.code_status==query_object.code_status)
if query_object.sys_id:
filters.append(DataStdCode.sys_id==query_object.sys_id)
if query_object.code_type:
filters.append(DataStdCode.code_type==query_object.code_type)
if query_object.class_id:
filters.append(DataStdCode.class_id==query_object.class_id)
if query_object.class_id=='codeItem' and not query_object.parent_id:
filters.append(1==2)
if query_object.parent_id:
filters.append(DataStdCode.parent_id==query_object.parent_id)
# 构建查询语句
query = (
select(DataStdCode)
.where(*filters)
.order_by(desc(DataStdCode.create_time)) # 按创建时间降序排序
)
"""
查询 DataStdCode 列表带出 code_map_cn 字段通过 code_map_id 关联同表获取 cd_val_cn_mean
:param db: ORM 会话对象
:param query_object: 查询条件对象
:param is_page: 是否分页
:return: 列表结果分页或不分页
"""
# 构建别名
c1 = aliased(DataStdCode) # 当前记录
c2 = aliased(DataStdCode) # 关联 code_map_id
# 构建过滤条件
filters = []
if query_object.cd_val_cn_mean:
filters.append(c1.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%"))
if query_object.cd_no:
filters.append(or_(
c1.cd_val_cn_mean.like(f"%{query_object.cd_no}%"),
c1.cd_no.like(f"%{query_object.cd_no}%")
))
if query_object.cd_val_stat:
filters.append(c1.cd_val_stat == query_object.cd_val_stat)
if query_object.src_sys:
filters.append(c1.src_sys == query_object.src_sys)
if query_object.cd_type:
filters.append(c1.cd_type == query_object.cd_type)
if query_object.class_id:
filters.append(c1.class_id == query_object.class_id)
if query_object.class_id == 'codeItem' and not query_object.parent_id:
filters.append(1 == 2)
if query_object.parent_id:
filters.append(c1.parent_id == query_object.parent_id)
# 构建查询
query = (
select(
c1.onum, # 当前 code 数据的 Id
c1.cd_no, # 当前代码编号
c1.cd_val_cn_mean, # 当前代码值
c1.cd_type, # 当前代码类型
c1.cd_val_stat, # 当前代码状态
c1.src_sys, # 当前归属系统
c1.class_id, # 当前代码类别
c1.parent_id, # 当前代码父 id
c1.code_map_id, # 当前代码映射 Id
c2.cd_val_cn_mean.label("code_map_cn") # 映射名称
)
.select_from(c1)
.outerjoin(c2, c1.code_map_id == c2.onum)
.where(*filters)
.order_by(desc(c1.create_time))
)
# 分页处理
result = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
return result
# 分页处理
col_list = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
return col_list
@classmethod
async def get_appr_std_code_list(cls, db: AsyncSession, query_object: DataStdCodeApprModel, is_page: bool = False):
"""
@ -79,19 +98,19 @@ class DataStdDao:
"""
# 构建查询条件
filters = []
if query_object.code_name:
filters.append(DataStdCodeAppr.code_name.like(f"%{query_object.code_name}%"))
if query_object.code_num:
if query_object.cd_val_cn_mean:
filters.append(DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%"))
if query_object.cd_no:
filters.append( or_(
DataStdCodeAppr.code_name.like(f"%{query_object.code_num}%"),
DataStdCodeAppr.code_num.like(f"%{query_object.code_num}%")
DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_no}%"),
DataStdCodeAppr.cd_no.like(f"%{query_object.cd_no}%")
))
if query_object.code_status:
filters.append(DataStdCodeAppr.code_status==query_object.code_status)
if query_object.sys_id:
filters.append(DataStdCodeAppr.sys_id==query_object.sys_id)
if query_object.code_type:
filters.append(DataStdCodeAppr.code_type==query_object.code_type)
if query_object.cd_val_stat:
filters.append(DataStdCodeAppr.cd_val_stat==query_object.cd_val_stat)
if query_object.src_sys:
filters.append(DataStdCodeAppr.src_sys==query_object.src_sys)
if query_object.cd_type:
filters.append(DataStdCodeAppr.cd_type==query_object.cd_type)
if query_object.class_id:
filters.append(DataStdCodeAppr.class_id==query_object.class_id)
@ -119,7 +138,7 @@ class DataStdDao:
DataStdCodeAppr.oldInstId == Id,
DataStdCodeAppr.approStatus == "succeed"
)
.order_by(DataStdCodeAppr.update_time.desc())
.order_by(DataStdCodeAppr.upd_time.desc())
.limit(1)
)
return result.scalar_one_or_none()
@ -133,7 +152,7 @@ class DataStdDao:
c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码
c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码
if query_object.parent_id:
if query_object.code_type =='sys':
if query_object.cd_type =='sys':
filters.append(c1.parent_id == query_object.parent_id)
else:
filters.append(c3.parent_id == query_object.parent_id)
@ -143,21 +162,21 @@ class DataStdDao:
# 3. 构建基础查询,使用连接和别名
query = (
select(
c2.sys_id.label("target_sys_id"), # 父级系统编号
c2.sys_name.label("target_sys_name"), # 父级系统名称
c2.code_num.label("target_code_num"), # 父级代码编号
c2.code_name.label("target_code_name"), # 父级代码名称
c1.code_num.label("target_code_num_item"), # 当前 codeItem 的编号
c1.code_name.label("target_code_name_item"), # 当前 codeItem 的名称
c4.code_num.label("resource_code_num"), # 映射的父级代码编号
c4.code_name.label("resource_code_name"), # 映射的父级代码名称
c3.code_num.label("resource_code_num_item"), # 映射的父级代码编号
c3.code_name.label("resource_code_name_item") # 映射的父级代码名称
c2.src_sys.label("target_sys_id"), # 父级系统编号
c2.src_sys.label("target_sys_name"), # 父级系统名称
c2.cd_no.label("target_code_num"), # 父级代码编号
c2.cd_val_cn_mean.label("target_code_name"), # 父级代码名称
c1.cd_no.label("target_code_num_item"), # 当前 codeItem 的编号
c1.cd_val_cn_mean.label("target_code_name_item"), # 当前 codeItem 的名称
c4.cd_no.label("resource_code_num"), # 映射的父级代码编号
c4.cd_val_cn_mean.label("resource_code_name"), # 映射的父级代码名称
c3.cd_no.label("resource_code_num_item"), # 映射的父级代码编号
c3.cd_val_cn_mean.label("resource_code_name_item") # 映射的父级代码名称
)
.select_from(c1) # 从 c1 开始查询
.join(c2, c1.parent_id == c2.id, isouter=True) # 连接 c2
.join(c3, c1.code_map_id == c3.id, isouter=True) # 连接 c3
.join(c4, c3.parent_id == c4.id, isouter=True) # 连接 c4
.join(c2, c1.parent_id == c2.onum, isouter=True) # 连接 c2
.join(c3, c1.code_map_id == c3.onum, isouter=True) # 连接 c3
.join(c4, c3.parent_id == c4.onum, isouter=True) # 连接 c4
.where(*filters) # 使用所有过滤条件
.order_by(desc(c1.create_time)) # 按照创建时间降序排列
)
@ -172,11 +191,11 @@ class DataStdDao:
await db.execute(
select(DataStdCode)
.where(
DataStdCode.code_name == query_object.code_name if query_object.code_name else True,
DataStdCode.id == query_object.id if query_object.id else True,
DataStdCode.code_status == query_object.code_status if query_object.code_status else True,
DataStdCode.sys_id == query_object.sys_id if query_object.sys_id else True,
DataStdCode.code_type == query_object.code_type if query_object.code_type else True,
DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
DataStdCode.onum == query_object.onum if query_object.onum else True,
DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
DataStdCode.code_map_id == query_object.code_map_id if query_object.code_map_id else True,
DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
DataStdCode.class_id == query_object.class_id if query_object.class_id else True
@ -190,11 +209,11 @@ class DataStdDao:
await db.execute(
select(DataStdCode)
.where(
DataStdCode.code_name == query_object.code_name if query_object.code_name else True,
DataStdCode.code_num == query_object.code_num if query_object.code_num else True,
DataStdCode.code_status == query_object.code_status if query_object.code_status else True,
DataStdCode.sys_id == query_object.sys_id if query_object.sys_id else True,
DataStdCode.code_type == query_object.code_type if query_object.code_type else True,
DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
DataStdCode.cd_no == query_object.cd_no if query_object.cd_no else True,
DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
DataStdCode.class_id == query_object.class_id if query_object.class_id else True
)
@ -206,7 +225,7 @@ class DataStdDao:
col = (
await db.execute(
select(DataStdCode)
.where(DataStdCode.id == Id)
.where(DataStdCode.onum == Id)
)
).scalars().first()
return col
@ -215,7 +234,7 @@ class DataStdDao:
col = (
await db.execute(
select(DataStdCodeAppr)
.where(DataStdCodeAppr.id == Id)
.where(DataStdCodeAppr.onum == Id)
)
).scalars().first()
return col
@ -240,7 +259,7 @@ class DataStdDao:
@classmethod
async def delete_std_code(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdCode).where(DataStdCode.id == Id))
await db.execute(delete(DataStdCode).where(DataStdCode.onum == Id))
@classmethod
async def update_std_code_appr(cls, db: AsyncSession, update_data: DataStdCodeApprModel):
@ -254,17 +273,17 @@ class DataStdDao:
await db.flush()
@classmethod
async def check_code_num_exists(cls, query_db: AsyncSession, code_num: str) -> bool:
async def check_code_num_exists(cls, query_db: AsyncSession, cd_no: str) -> bool:
"""
检查标准代码或代码项的code_num是否已经存在
"""
# 查询标准代码表中是否存在相同的code_num
result = await query_db.execute(select(DataStdCodeModel).filter(DataStdCodeModel.code_num == code_num))
result = await query_db.execute(select(DataStdCodeModel).filter(DataStdCodeModel.cd_no == cd_no))
existing_code = result.scalar_one_or_none()
# 如果不存在,则检查代码项表中是否存在相同的code_num
if not existing_code:
result = await query_db.execute(select(DataStdCode).filter(DataStdCodeModel.code_num == code_num))
result = await query_db.execute(select(DataStdCode).filter(DataStdCodeModel.cd_no == cd_no))
existing_code_item = result.scalar_one_or_none()
return existing_code_item is not None
@ -281,51 +300,50 @@ class DataStdDao:
"""
# 构建查询条件
filters = []
if query_object.dict_name:
filters.append(DataStdDict.dict_name.like(f"%{query_object.dict_name}%"))
if query_object.dict_code:
filters.append(DataStdDict.dict_code.like(f"%{query_object.dict_code}%"))
if query_object.dict_level:
filters.append(DataStdDict.dict_level == query_object.dict_level)
if query_object.sys_id:
filters.append(DataStdDict.sys_id == query_object.sys_id)
if query_object.dict_type:
filters.append(DataStdDict.dict_type == query_object.dict_type)
if query_object.dict_status:
filters.append(DataStdDict.dict_status == query_object.dict_status)
c1 = aliased(SysDept) # 技术部门
c2 = aliased(SysDept) # 业务部门
if query_object.data_dict_cn_name:
filters.append(DataStdDict.data_dict_cn_name.like(f"%{query_object.data_dict_cn_name}%"))
if query_object.data_dict_eng_name:
filters.append(DataStdDict.data_dict_eng_name.like(f"%{query_object.data_dict_eng_name}%"))
if query_object.data_dict_vest:
filters.append(DataStdDict.data_dict_vest == query_object.data_dict_vest)
if query_object.src_sys:
filters.append(DataStdDict.src_sys == query_object.src_sys)
if query_object.data_dict_data_type:
filters.append(DataStdDict.data_dict_data_type == query_object.data_dict_data_type)
if query_object.data_dict_stat:
filters.append(DataStdDict.data_dict_stat == query_object.data_dict_stat)
c1 = aliased(DataStdDict) # 技术部门
# 构建查询语句
query = (
select(DataStdDict.id,
select(DataStdDict.onum,
DataStdDict.create_by,
DataStdDict.create_time,
DataStdDict.update_by,
DataStdDict.update_time,
DataStdDict.dict_num,
DataStdDict.dict_code,
DataStdDict.dict_name,
DataStdDict.dict_level,
DataStdDict.dict_type,
DataStdDict.sys_name,
DataStdDict.sys_id,
DataStdDict.dict_menu,
DataStdDict.data_type,
DataStdDict.std_code,
DataStdDict.std_name,
DataStdDict.dict_status,
DataStdDict.buss_dept_id,
DataStdDict.tech_dept_id,
DataStdDict.buss_user,
DataStdDict.tech_user,
c1.dept_name.label("tech_dept_name"),
c2.dept_name.label("buss_dept_name")).select_from(DataStdDict)
.join(c1,c1.dept_id ==DataStdDict.tech_dept_id, isouter=True)
.join(c2,c2.dept_id ==DataStdDict.buss_dept_id, isouter=True)
DataStdDict.upd_prsn,
DataStdDict.upd_time,
DataStdDict.data_dict_no,
DataStdDict.data_dict_eng_name,
DataStdDict.data_dict_cn_name,
DataStdDict.data_dict_vest,
DataStdDict.data_dict_data_type,
DataStdDict.src_sys,
DataStdDict.src_sys,
DataStdDict.data_dict_busi_mean,
DataStdDict.data_dict_data_type,
DataStdDict.data_std_no,
DataStdDict.data_dict_stat,
DataStdMain.data_std_it_ownership_dept.label("data_std_it_ownership_dept") ,
DataStdMain.data_std_busi_ownership_dept.label("data_std_busi_ownership_dept") ,
DataStdMain.data_std_it_ownership_prsn.label("data_std_it_ownership_prsn") ,
DataStdMain.data_std_busi_ownership_prsn.label("data_std_busi_ownership_prsn")
)
.outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
DataStdDict,
DataStdMain.data_std_no == DataStdDict.data_std_no
)
.where(*filters)
.order_by(desc(DataStdDict.create_time)) # 按创建时间降序排序
)
# 分页处理
col_list = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
@ -343,12 +361,12 @@ class DataStdDao:
@classmethod
async def delete_std_dict(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdDict).where(DataStdDict.id == Id))
await db.execute(delete(DataStdDict).where(DataStdDict.onum == Id))
@classmethod
async def get_std_dict_list_all(cls, db: AsyncSession, query_object: DataStdDict):
filters = []
if query_object.std_code:
filters.append(DataStdDict.std_code.like(f"%{query_object.std_code}%"))
if query_object.data_std_no:
filters.append(DataStdDict.data_std_no.like(f"%{query_object.data_std_no}%"))
query = select(DataStdDict).where(*filters).order_by(desc(DataStdDict.create_time))
return await PageUtil.paginate(db, query, 0, 0, False)
@classmethod
@ -362,7 +380,7 @@ class DataStdDao:
col = (
await db.execute(
select(DataStdDict)
.where(DataStdDict.id == Id)
.where(DataStdDict.onum == Id)
)
).scalars().first()
return col
@ -372,12 +390,12 @@ class DataStdDao:
await db.execute(
select(DataStdDict)
.where(
DataStdDict.dict_name == query_object.dict_name if query_object.dict_name else True,
DataStdDict.dict_num == query_object.dict_num if query_object.dict_num else True,
DataStdDict.dict_status == query_object.dict_status if query_object.dict_status else True,
DataStdDict.std_code == query_object.std_code if query_object.std_code else True,
DataStdDict.sys_id == query_object.sys_id if query_object.sys_id else True,
DataStdDict.dict_type == query_object.dict_type if query_object.dict_type else True,
DataStdDict.data_dict_cn_name == query_object.data_dict_cn_name if query_object.data_dict_cn_name else True,
DataStdDict.data_dict_no == query_object.data_dict_no if query_object.data_dict_no else True,
DataStdDict.data_dict_stat == query_object.data_dict_stat if query_object.data_dict_stat else True,
DataStdDict.data_std_no == query_object.data_std_no if query_object.data_std_no else True,
DataStdDict.src_sys == query_object.src_sys if query_object.src_sys else True,
DataStdDict.data_dict_data_type == query_object.data_dict_data_type if query_object.data_dict_data_type else True,
)
)
).scalars().first()
@ -756,38 +774,104 @@ class DataStdDao:
@classmethod
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False):
filters = []
if query_object.std_name:
filters.append(DataStdMain.std_name.like(f"%{query_object.std_name}%"))
if query_object.std_code:
filters.append(DataStdMain.std_code.like(f"%{query_object.std_code}%"))
if query_object.sys_id:
filters.append(DataStdMain.sys_id == query_object.sys_id)
if query_object.std_type:
filters.append(DataStdMain.std_type == query_object.std_type)
if query_object.data_std_cn_name:
filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
if query_object.data_std_no:
filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%"))
if query_object.src_sys:
filters.append(DataStdMain.src_sys == query_object.src_sys)
if query_object.data_std_type:
filters.append(DataStdMain.data_std_type == query_object.data_std_type)
if query_object.std_status:
filters.append(DataStdMain.std_status == query_object.std_status)
if query_object.content_onum:
filters.append(DataStdMain.content_onum == query_object.content_onum)
if query_object.belt_data_std_content:
filters.append(DataStdMain.belt_data_std_content == query_object.belt_data_std_content)
query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time))
query = (
select(
DataStdMain.onum,
DataStdMain.create_by,
DataStdMain.create_time,
DataStdMain.upd_prsn,
DataStdMain.upd_time,
DataStdMain.data_std_no,
DataStdMain.data_std_eng_name,
DataStdMain.data_std_cn_name,
DataStdMain.data_std_type,
DataStdMain.securityLevel,
DataStdMain.src_sys,
DataStdMain.data_std_vest,
DataStdMain.data_std_busi_defn,
DataStdMain.cd_id,
DataStdMain.std_status,
DataStdMain.data_std_busi_ownership_dept,
DataStdMain.data_std_it_ownership_dept,
DataStdMain.data_std_busi_ownership_prsn,
DataStdMain.data_std_it_ownership_prsn,
DataStdMain.belt_data_std_content,
DataStdMain.data_std_src,
DataStdMain.data_clas,
DataStdMain.typical_fld,
DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
)
.outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
DataStdCode,
DataStdMain.cd_id == DataStdCode.onum
)
.where(*filters)
.order_by(desc(DataStdMain.create_time))
)
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod
async def get_std_main_list_all(cls, db: AsyncSession, query_object: DataStdMainModel):
filters = []
if query_object.std_name:
filters.append(DataStdMain.std_name.like(f"%{query_object.std_name}%"))
if query_object.std_code:
filters.append(DataStdMain.std_code.like(f"%{query_object.std_code}%"))
if query_object.sys_id:
filters.append(DataStdMain.sys_id == query_object.sys_id)
if query_object.code_id:
filters.append(DataStdMain.code_id == query_object.code_id)
if query_object.std_type:
filters.append(DataStdMain.std_type == query_object.std_type)
if query_object.data_std_cn_name:
filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
if query_object.data_std_no:
filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%"))
if query_object.src_sys:
filters.append(DataStdMain.src_sys == query_object.src_sys)
if query_object.cd_id:
filters.append(DataStdMain.cd_id == query_object.cd_id)
if query_object.data_std_type:
filters.append(DataStdMain.data_std_type == query_object.data_std_type)
if query_object.std_status:
filters.append(DataStdMain.std_status == query_object.std_status)
query = select(DataStdMain).where(*filters).order_by(desc(DataStdMain.create_time))
query = (
select(
DataStdMain.onum,
DataStdMain.create_by,
DataStdMain.create_time,
DataStdMain.upd_prsn,
DataStdMain.upd_time,
DataStdMain.data_std_no,
DataStdMain.data_std_eng_name,
DataStdMain.data_std_cn_name,
DataStdMain.data_std_type,
DataStdMain.securityLevel,
DataStdMain.src_sys,
DataStdMain.data_std_vest,
DataStdMain.data_std_busi_defn,
DataStdMain.cd_id,
DataStdMain.std_status,
DataStdMain.data_std_busi_ownership_dept,
DataStdMain.data_std_it_ownership_dept,
DataStdMain.data_std_busi_ownership_prsn,
DataStdMain.data_std_it_ownership_prsn,
DataStdMain.belt_data_std_content,
DataStdMain.data_std_src,
DataStdMain.data_clas,
DataStdMain.typical_fld,
DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
)
.outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
DataStdCode,
DataStdMain.cd_id == DataStdCode.onum
)
.where(*filters)
.order_by(desc(DataStdMain.create_time))
)
return await PageUtil.paginate(db, query, 0, 0, False)
@classmethod
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel):
@ -809,10 +893,10 @@ class DataStdDao:
return col
@classmethod
async def delete_std_main(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdMain).where(DataStdMain.id == Id))
await db.execute(delete(DataStdMain).where(DataStdMain.onum == Id))
@classmethod
async def delete_std_dict_appr(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdDictAppr).where(DataStdDictAppr.id == Id))
await db.execute(delete(DataStdDictAppr).where(DataStdDictAppr.onum == Id))
@classmethod
async def update_std_main(cls, db: AsyncSession, update_data: DataStdMainModel):
@ -827,19 +911,19 @@ class DataStdDao:
@classmethod
async def get_std_main_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdMain).where(DataStdMain.id == Id))
col = await db.execute(select(DataStdMain).where(DataStdMain.onum == Id))
return col.scalars().first()
@classmethod
async def get_data_main_by_info(cls, db: AsyncSession, query_object: DataStdMainModel):
col = await db.execute(
select(DataStdMain).where(
DataStdMain.std_name == query_object.std_name if query_object.std_name else True,
DataStdMain.std_code == query_object.std_code if query_object.std_code else True,
DataStdMain.std_num == query_object.std_num if query_object.std_num else True,
DataStdMain.sys_id == query_object.sys_id if query_object.sys_id else True,
DataStdMain.std_type == query_object.std_type if query_object.std_type else True,
DataStdMain.code_id == query_object.code_id if query_object.code_id else True,
DataStdMain.data_std_cn_name == query_object.data_std_cn_name if query_object.data_std_cn_name else True,
DataStdMain.data_std_no == query_object.data_std_no if query_object.data_std_no else True,
DataStdMain.data_std_no == query_object.data_std_no if query_object.data_std_no else True,
DataStdMain.src_sys == query_object.src_sys if query_object.src_sys else True,
DataStdMain.data_std_type == query_object.data_std_type if query_object.data_std_type else True,
DataStdMain.cd_id == query_object.cd_id if query_object.cd_id else True,
DataStdMain.std_status == query_object.std_status if query_object.std_status else True
)
)
@ -848,18 +932,18 @@ class DataStdDao:
async def get_std_main_appr_list_all(cls, db: AsyncSession, query_object: DataStdMainApprModel):
filters = []
if query_object.std_name:
filters.append(DataStdMainAppr.std_name.like(f"%{query_object.std_name}%"))
if query_object.std_code:
filters.append(DataStdMainAppr.std_code.like(f"%{query_object.std_code}%"))
if query_object.sys_id:
filters.append(DataStdMainAppr.sys_id == query_object.sys_id)
if query_object.code_id:
filters.append(DataStdMainAppr.code_id == query_object.code_id)
if query_object.data_std_cn_name:
filters.append(DataStdMainAppr.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
if query_object.data_std_no:
filters.append(DataStdMainAppr.data_std_no.like(f"%{query_object.data_std_no}%"))
if query_object.src_sys:
filters.append(DataStdMainAppr.src_sys == query_object.src_sys)
if query_object.cd_id:
filters.append(DataStdMainAppr.cd_id == query_object.cd_id)
if query_object.flowId:
filters.append(DataStdMainAppr.flowId == query_object.flowId)
if query_object.std_type:
filters.append(DataStdMainAppr.std_type == query_object.std_type)
if query_object.data_std_type:
filters.append(DataStdMainAppr.data_std_type == query_object.data_std_type)
if query_object.std_status:
filters.append(DataStdMainAppr.std_status == query_object.std_status)
query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time))
@ -880,11 +964,11 @@ class DataStdDao:
@classmethod
async def get_std_main_appr_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdMainAppr).where(DataStdMainAppr.id == Id))
col = await db.execute(select(DataStdMainAppr).where(DataStdMainAppr.onum == Id))
return col.scalars().first()
@classmethod
async def get_std_dict_appr_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdDictAppr).where(DataStdDictAppr.id == Id))
col = await db.execute(select(DataStdDictAppr).where(DataStdDictAppr.onum == Id))
return col.scalars().first()
@classmethod
async def get_last_std_main_appr_by_id(cls,db: AsyncSession, Id: str ):
@ -894,7 +978,7 @@ class DataStdDao:
DataStdMainAppr.oldInstId == Id,
DataStdMainAppr.approStatus == "succeed"
)
.order_by(DataStdMainAppr.update_time.desc())
.order_by(DataStdMainAppr.upd_time.desc())
.limit(1)
)
return result.scalar_one_or_none()
@ -906,7 +990,7 @@ class DataStdDao:
DataStdDictAppr.oldInstId == Id,
DataStdDictAppr.approStatus == "succeed"
)
.order_by(DataStdDictAppr.update_time.desc())
.order_by(DataStdDictAppr.upd_time.desc())
.limit(1)
)
return result.scalar_one_or_none()

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

@ -8,46 +8,41 @@ class DataStdCode(Base):
"""
标准代码表 (Standard Code Table)
"""
__tablename__ = 't_datastd_code'
__tablename__ = 't_data_cd_val'
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
code_num = Column(String(50), default=None, comment='标准代码编号')
code_name = Column(String(200), default=None, comment='标准代码值')
code_type = Column(String(10), default=None, comment='标准代码类型(sys:系统级 company:公司级)')
code_status = Column(String(1), default=None, comment='代码状态(0:有效 1:无效)')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
cd_no = Column(String(50), default=None, comment='标准代码编号')
cd_val_cn_mean = Column(String(200), default=None, comment='标准代码值')
cd_type = Column(String(10), default=None, comment='标准代码类型(sys:系统级 company:公司级)')
cd_val_stat = Column(String(1), default=None, comment='代码状态(0:有效 1:无效)')
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_num = Column(String(50), default=None, comment='标准代码编号')
code_map_name = Column(String(200), default=None, comment='标准代码值')
class DataStdCodeAppr(Base):
"""
标准代码表 (Standard Code Table)
"""
__tablename__ = 't_datastd_code_appr'
__tablename__ = 't_data_cd_val_appr'
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
code_num = Column(String(50), default=None, comment='标准代码编号')
code_name = Column(String(200), default=None, comment='标准代码值')
code_type = Column(String(10), default=None, comment='标准代码类型(sys:系统级 company:公司级)')
code_status = Column(String(1), default=None, comment='代码状态(0:有效 1:无效)')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
cd_no = Column(String(50), default=None, comment='标准代码编号')
cd_val_cn_mean = Column(String(200), default=None, comment='标准代码值')
cd_type = Column(String(10), default=None, comment='标准代码类型(sys:系统级 company:公司级)')
cd_val_stat = Column(String(1), default=None, comment='代码状态(0:有效 1:无效)')
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_num = Column(String(50), default=None, comment='标准代码编号')
code_map_name = Column(String(200), 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')
@ -58,56 +53,47 @@ class DataStdDict(Base):
"""
标准字典表 (Standard Code Table)
"""
__tablename__ = 't_datastd_dict' # 表名为 t_datastd_dict
__tablename__ = 't_data_dict' # 表名为 t_datastd_dict
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
dict_num = Column(String(50), default=None, comment='字典编号')
dict_code = Column(String(50), default=None, comment='字典英文名')
dict_name = Column(String(200), default=None, comment='字典中文名')
dict_level = Column(String(10), default=None, comment='字典归属(sys:系统级 company:公司级)')
dict_type = Column(String(1), default=None, comment='字典类型(0:基础数据 1:指标数据)')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
dict_menu = Column(String(200), default=None, comment='字典业务定义')
data_type = Column(String(20), default=None, comment='数据类型')
std_code = Column(String(50), default=None, comment='数据标准编号')
std_name = Column(String(50), default=None, comment='数据标准名称')
dict_status = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
buss_dept_id = Column(BigInteger, default=None, comment='业务认责部门')
tech_dept_id = Column(BigInteger, default=None, comment='技术认责部门')
buss_user = Column(String(20), default=None, comment='业务认责人员')
tech_user = Column(String(20), default=None, comment='技术认责人员')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
data_dict_no = Column(String(50), default=None, comment='字典编号')
data_dict_eng_name = Column(String(50), default=None, comment='字典英文名')
data_dict_cn_name = Column(String(200), default=None, comment='字典中文名')
data_dict_vest = Column(String(10), default=None, comment='字典归属(sys:系统级 company:公司级)')
data_dict_type = Column(String(1), default=None, comment='字典类型(0:基础数据 1:指标数据)')
src_sys = Column(Integer, default=None, comment='归属系统')
data_dict_busi_mean = Column(String(200), default=None, comment='字典业务定义')
data_dict_data_type = Column(String(20), default=None, comment='数据类型')
data_std_no = Column(String(50), default=None, comment='数据标准编号')
src_sys_tab_fld_name = Column(String(1000), default=None, comment='来源系统表字段名')
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
class DataStdDictAppr(Base):
"""
标准字典审批表 (Standard Code Table)
"""
__tablename__ = 't_datastd_dict_appr' # 表名为 t_datastd_dict
__tablename__ = 't_data_dict_appr' # 表名为 t_datastd_dict
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
dict_num = Column(String(50), default=None, comment='字典编号')
dict_code = Column(String(50), default=None, comment='字典英文名')
dict_name = Column(String(200), default=None, comment='字典中文名')
dict_level = Column(String(10), default=None, comment='字典归属(sys:系统级 company:公司级)')
dict_type = Column(String(1), default=None, comment='字典类型(0:基础数据 1:指标数据)')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
dict_menu = Column(String(200), default=None, comment='字典业务定义')
data_type = Column(String(20), default=None, comment='数据类型')
std_code = Column(String(50), default=None, comment='数据标准编号')
std_name = Column(String(50), default=None, comment='数据标准名称')
dict_status = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
buss_dept_id = Column(BigInteger, default=None, comment='业务认责部门')
tech_dept_id = Column(BigInteger, default=None, comment='技术认责部门')
buss_user = Column(String(20), default=None, comment='业务认责人员')
tech_user = Column(String(20), default=None, comment='技术认责人员')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
data_dict_no = Column(String(50), default=None, comment='字典编号')
data_dict_eng_name = Column(String(50), default=None, comment='字典英文名')
data_dict_cn_name = Column(String(200), default=None, comment='字典中文名')
data_dict_vest = Column(String(10), default=None, comment='字典归属(sys:系统级 company:公司级)')
data_dict_type = Column(String(1), default=None, comment='字典类型(0:基础数据 1:指标数据)')
src_sys = Column(String(50), default=None, comment='归属系统')
data_dict_busi_mean = Column(String(200), default=None, comment='字典业务定义')
data_std_no = Column(String(50), default=None, comment='数据标准编号')
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
data_dict_data_type = Column(String(20), default=None, comment='数据类型')
src_sys_tab_fld_name = Column(String(1000), 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')
@ -147,64 +133,62 @@ class DataStdMain(Base):
"""
数据标准表
"""
__tablename__ = 't_datastd_main'
__tablename__ = 't_data_std'
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
std_num = Column(String(50), default=None, comment='标准编号')
std_code = Column(String(50), default=None, comment='标准英文名')
std_name = Column(String(200), default=None, comment='标准中文名')
std_type = Column(String(1), default=None, comment='标准类型(0:基础数据 1:指标数据)')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
data_std_no = Column(String(50), default=None, comment='标准编号')
data_std_eng_name = Column(String(50), default=None, comment='标准英文名')
data_std_cn_name = Column(String(200), default=None, comment='标准中文名')
data_std_type = Column(String(1), default=None, comment='标准类型(0:基础数据 1:指标数据)')
securityLevel = Column(String(1), default=None, comment='安全等级')
sourceSystem = Column(String(50), default=None, comment='来源系统')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
std_menu = Column(String(200), default=None, comment='标准业务定义')
code_num = Column(String(50), default=None, comment='代码编号')
code_id = Column(String(50), default=None, comment='代码id')
src_sys = Column(String(50), default=None, comment='来源系统')
data_std_vest = Column(String(50), default=None, comment='数据标准归属(公司级、系统级)')
data_std_busi_defn = Column(String(200), default=None, comment='标准业务定义')
cd_id = Column(String(50), default=None, comment='代码id')
std_status = Column(String(1), default=None, comment='标准状态(1:有效 0:无效)')
buss_dept_id = Column(BigInteger, default=None, comment='业务认责部门')
tech_dept_id = Column(BigInteger, default=None, comment='技术认责部门')
buss_user = Column(String(20), default=None, comment='业务认责人员')
tech_user = Column(String(20), default=None, comment='技术认责人员')
content_onum = Column(Integer, default=None, comment='分类')
std_src = Column(String(20), default=None, comment='标准来源')
data_std_busi_ownership_dept = Column(String(100), default=None, comment='业务认责部门')
data_std_it_ownership_dept = Column(String(100), default=None, comment='技术认责部门')
data_std_busi_ownership_prsn = Column(String(100), default=None, comment='业务认责人员')
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='典型字段')
class DataStdMainAppr(Base):
"""
数据标准表
"""
__tablename__ = 't_datastd_main_appr'
__tablename__ = 't_data_std_appr'
id = Column(String(50), primary_key=True, comment='标准代码Id')
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='创建时间')
update_by = Column(String(20), default='', comment='更新者')
update_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
std_num = Column(String(50), default=None, comment='标准编号')
std_code = Column(String(50), default=None, comment='标准英文名')
std_name = Column(String(200), default=None, comment='标准中文名')
std_type = Column(String(1), default=None, comment='标准类型(0:基础数据 1:指标数据)')
upd_prsn = Column(String(20), default='', comment='更新者')
upd_time = Column(DateTime, nullable=True, default=None, comment='更新时间')
data_std_no = Column(String(50), default=None, comment='标准编号')
data_std_eng_name = Column(String(50), default=None, comment='标准英文名')
data_std_cn_name = Column(String(200), default=None, comment='标准中文名')
data_std_type = Column(String(1), default=None, comment='标准类型(0:基础数据 1:指标数据)')
securityLevel = Column(String(1), default=None, comment='安全等级')
sourceSystem = Column(String(50), default=None, comment='来源系统')
sys_name = Column(String(50), default=None, comment='归属系统')
sys_id = Column(Integer, default=None, comment='归属系统Id')
std_menu = Column(String(200), default=None, comment='标准业务定义')
code_num = Column(String(50), default=None, comment='代码编号')
code_id = Column(String(50), default=None, comment='代码id')
src_sys = Column(Integer, default=None, comment='来源系统')
data_std_vest = Column(String(50), default=None, comment='数据标准归属(公司级、系统级)')
data_std_busi_defn = Column(String(200), default=None, comment='标准业务定义')
cd_id = Column(String(50), default=None, comment='代码id')
std_status = Column(String(1), default=None, comment='标准状态(1:有效 0:无效)')
buss_dept_id = Column(BigInteger, default=None, comment='业务认责部门')
tech_dept_id = Column(BigInteger, default=None, comment='技术认责部门')
buss_user = Column(String(20), default=None, comment='业务认责人员')
tech_user = Column(String(20), default=None, comment='技术认责人员')
content_onum = Column(Integer, default=None, comment='分类')
std_src = Column(String(20), default=None, comment='标准来源')
data_clas = Column(String(20), default=None, comment='数据类别')
data_std_busi_ownership_dept = Column(String(100), default=None, comment='业务认责部门')
data_std_it_ownership_dept = Column(String(100), default=None, comment='技术认责部门')
data_std_busi_ownership_prsn = Column(String(100), default=None, comment='业务认责人员')
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')

90
vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py

@ -18,22 +18,20 @@ class DataStdCodeModel(BaseModel):
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
id: Optional[str] = Field(default=None, description='标准代码主键')
code_num: Optional[str] = Field(default=None, description='标准代码编号')
code_name: Optional[str] = Field(default=None, description='标准代码名称')
code_type: Optional[str] = Field(default=None, description='标准代码类型')
code_status: Optional[str] = Field(default=None, description='标准代码状态')
sys_name: Optional[str] = Field(default=None, description='系统名称')
sys_id: Optional[int] = Field(default=None, description='系统ID')
onum: Optional[str] = Field(default=None, description='序号')
cd_no: Optional[str] = Field(default=None, description='标准代码编号')
cd_val_cn_mean: Optional[str] = Field(default=None, description='标准代码名称')
cd_type: Optional[str] = Field(default=None, description='标准代码类型')
cd_val_stat: Optional[str] = Field(default=None, description='标准代码状态')
src_sys: Optional[int] = Field(default=None, description='系统ID')
parent_id: Optional[str] = Field(default=None, description='父级ID')
class_id: Optional[str] = Field(default=None, description='类目ID')
create_by: Optional[str] = Field(default=None, description='创建者')
create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间')
upd_prsn: Optional[str] = Field(default=None, description='更新者')
upd_time: Optional[datetime] = Field(default=None, description='更新时间')
code_map_id: Optional[str] = Field(default=None, description='标准代码主键(映射)')
code_map_num: Optional[str] = Field(default=None, description='标准代码编号(映射)')
code_map_name: Optional[str] = Field(default=None, description='标准代码名称(映射)')
class DataStdCodeApprModel(DataStdCodeModel):
changeType: Optional[str] = Field(default=None, description='变更类型')
@ -64,27 +62,23 @@ class DataStdDictModel(BaseModel):
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
id: Optional[str] = Field(default=None, description='标准字典主键')
onum: Optional[str] = Field(default=None, description='标准字典主键')
create_by: Optional[str] = Field(default='', description='创建者')
create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default='', description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间')
dict_num: Optional[str] = Field(default=None, description='字典编号')
dict_code: Optional[str] = Field(default=None, description='字典英文名')
dict_name: Optional[str] = Field(default=None, description='字典中文名')
dict_level: Optional[str] = Field(default=None, description='字典归属(sys:系统级 company:公司级)')
dict_type: Optional[str] = Field(default=None, description='字典类型(0:基础数据 1:指标数据)')
sys_name: Optional[str] = Field(default=None, description='归属系统')
sys_id: Optional[int] = Field(default=None, description='归属系统Id')
dict_menu: Optional[str] = Field(default=None, description='字典业务定义')
data_type: Optional[str] = Field(default=None, description='数据类型')
std_code: Optional[str] = Field(default=None, description='数据标准编号')
std_name: Optional[str] = Field(default=None, description='数据标准名称')
dict_status: Optional[str] = Field(default=None, description='字典状态(1:有效 0:无效)')
buss_dept_id: Optional[int] = Field(default=None, description='业务认责部门')
tech_dept_id: Optional[int] = Field(default=None, description='技术认责部门')
buss_user: Optional[str] = Field(default=None, description='业务认责人员')
tech_user: Optional[str] = Field(default=None, description='技术认责人员')
upd_prsn: Optional[str] = Field(default='', description='更新者')
upd_time: Optional[datetime] = Field(default=None, description='更新时间')
data_dict_no: Optional[str] = Field(default=None, description='字典编号')
data_dict_eng_name: Optional[str] = Field(default=None, description='字典英文名')
data_dict_cn_name: Optional[str] = Field(default=None, description='字典中文名')
data_dict_vest: Optional[str] = Field(default=None, description='字典归属(sys:系统级 company:公司级)')
data_dict_type: Optional[str] = Field(default=None, description='字典类型(0:基础数据 1:指标数据)')
src_sys: Optional[int] = Field(default=None, description='归属系统')
data_dict_busi_mean: Optional[str] = Field(default=None, description='字典业务定义')
data_dict_data_type: Optional[str] = Field(default=None, description='数据类型')
src_sys_tab_fld_name: Optional[str] = Field(default=None, description='来源系统表字段名')
data_std_no: Optional[str] = Field(default=None, description='数据标准编号')
data_dict_stat: Optional[str] = Field(default=None, description='字典状态(1:有效 0:无效)')
@as_query
class DataStdDictPageQueryModel(DataStdDictModel):
"""
@ -104,30 +98,28 @@ class DataStdMainModel(BaseModel):
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
id: Optional[str] = Field(default=None, description='标准代码Id')
onum: Optional[str] = Field(default=None, description='标准代码Id')
create_by: Optional[str] = Field(default='', description='创建者')
create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default='', description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间')
std_num: Optional[str] = Field(default=None, description='标准编号')
std_code: Optional[str] = Field(default=None, description='标准英文名')
std_name: Optional[str] = Field(default=None, description='标准中文名')
std_type: Optional[str] = Field(default=None, description='标准类型(0:基础数据 1:指标数据)')
upd_prsn: Optional[str] = Field(default='', description='更新者')
upd_time: Optional[datetime] = Field(default=None, description='更新时间')
data_std_no: Optional[str] = Field(default=None, description='标准编号')
data_std_eng_name: Optional[str] = Field(default=None, description='标准英文名')
data_std_cn_name: Optional[str] = Field(default=None, description='标准中文名')
data_std_type: Optional[str] = Field(default=None, description='标准类型(0:基础数据 1:指标数据)')
securityLevel: Optional[str] = Field(default=None, description='安全等级')
sourceSystem: Optional[str] = Field(default=None, description='来源系统')
sys_name: Optional[str] = Field(default=None, description='归属系统')
sys_id: Optional[int] = Field(default=None, description='归属系统Id')
std_menu: Optional[str] = Field(default=None, description='标准业务定义')
code_num: Optional[str] = Field(default=None, description='代码编号')
code_id: Optional[str] = Field(default=None, description='代码id')
src_sys: Optional[int] = Field(default=None, description='归属系统')
data_std_busi_defn: Optional[str] = Field(default=None, description='标准业务定义')
cd_id: Optional[str] = Field(default=None, description='代码id')
std_status: Optional[str] = Field(default=None, description='标准状态(1:有效 0:无效)')
buss_dept_id: Optional[int] = Field(default=None, description='业务认责部门')
tech_dept_id: Optional[int] = Field(default=None, description='技术认责部门')
buss_user: Optional[str] = Field(default=None, description='业务认责人员')
tech_user: Optional[str] = Field(default=None, description='技术认责人员')
content_onum: Optional[int] = Field(default=None, description='分类')
std_src: Optional[str] = Field(default=None, description='标准来源')
data_std_busi_ownership_dept: Optional[str] = Field(default=None, description='业务认责部门')
data_std_it_ownership_dept: Optional[str] = Field(default=None, description='技术认责部门')
data_std_busi_ownership_prsn: Optional[str] = Field(default=None, description='业务认责人员')
data_std_it_ownership_prsn: Optional[str] = Field(default=None, description='技术认责人员')
belt_data_std_content: Optional[int] = Field(default=None, description='分类')
data_std_src: Optional[str] = Field(default=None, description='标准来源')
data_clas: Optional[str] = Field(default=None, description='数据类别')
typical_fld: Optional[str] = Field(default=None, description='典型字段')
@as_query
class DataStdMainPageQueryModel(DataStdMainModel):
"""

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

@ -151,7 +151,7 @@ class ApprovalService:
elif change_type == "edit":
# 使用 oldInstId 作为主键
main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.id = appr_model.oldInstId
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_main(result_db, main_model)
elif change_type == "delete":
@ -184,7 +184,7 @@ class ApprovalService:
# 使用 oldInstId 作为主键
main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.id = appr_model.oldInstId
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_dict(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":
@ -216,7 +216,7 @@ class ApprovalService:
# 使用 oldInstId 作为主键
main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
main_model.id = appr_model.oldInstId
main_model.onum = appr_model.oldInstId
await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True))
elif change_type == "delete":

432
vue-fastapi-backend/module_admin/service/datastd_service.py

@ -40,7 +40,7 @@ class DataStdService:
# col_list_result = await DataStdDao.get_appr_std_code_list(query_db, query_object, is_page)
# # for 循环col_list_result.rows 如果changeType是update的 去查他的compareId 用oldItem= get_std_code_appr_by_id(compareId ) 获取原始数据 比较 code_num code_name code_map_id (code_map_id都为空的情况应该判断一致) 如果三个属性都一致的 判定一致 移除这个col_list_result,不一致的把改属性改为 item.code_num=oldItem.code_num-->item.code_num
# # for 循环col_list_result.rows 如果changeType是update的 去查他的compareId 用oldItem= get_std_code_appr_by_id(compareId ) 获取原始数据 比较 cd_no cd_val_cn_mean code_map_id (code_map_id都为空的情况应该判断一致) 如果三个属性都一致的 判定一致 移除这个col_list_result,不一致的把改属性改为 item.cd_no=oldItem.cd_no-->item.cd_no
# return col_list_result
@classmethod
async def get_appr_std_code_list_services(
@ -54,8 +54,8 @@ class DataStdService:
old_item = await DataStdDao.get_std_code_appr_by_id(query_db, item.get("compareId"))
# 判断三个字段是否一致(空值也算一致)
is_code_num_same = item.get("codeNum") == old_item.code_num
is_code_name_same = item.get("codeName") == old_item.code_name
is_code_num_same = item.get("cdNo") == old_item.cd_no
is_code_name_same = item.get("cdValCnMean") == old_item.cd_val_cn_mean
is_code_map_id_same = (
(not item.get("codeMapId") and not old_item.code_map_id) or
(item.get("codeMapId") == old_item.code_map_id)
@ -66,9 +66,9 @@ class DataStdService:
else:
# 拼接变更格式:旧值 ==> 新值
if not is_code_num_same:
item["codeNum"] = f"{old_item.code_num or ''} ==> {item.get('codeNum', '')}"
item["cdNo"] = f"{old_item.cd_no or ''} ==> {item.get('cdNo', '')}"
if not is_code_name_same:
item["codeName"] = f"{old_item.code_name or ''} ==> {item.get('codeName', '')}"
item["cdValCnMean"] = f"{old_item.cd_val_cn_mean or ''} ==> {item.get('cdValCnMean', '')}"
if not is_code_map_id_same:
old_val = old_item.code_map_id or ""
new_val = item.get("codeMapId") or ""
@ -127,7 +127,7 @@ class DataStdService:
try:
# 创建新的 page_object 实例,避免修改原始对象
new_page_object = DataStdCodeModel(**page_object.model_dump(by_alias=True))
new_page_object.code_status="9"
new_page_object.cd_val_stat="9"
# 调用 DAO 方法插入数据
await DataStdDao.add_std_code(query_db, new_page_object)
return CrudResponseModel(is_success=True, message='新增标准代码成功')
@ -155,19 +155,37 @@ class DataStdService:
@classmethod
async def code_appr_detail_services(cls, query_db: AsyncSession, col: str):
"""
获取参数配置详细信息service
获取参数配置详细信息 service
:param query_db: orm对象
:param config_id: 参数配置id
:return: 参数配置id对应的信息
:param col: 参数配置 id
:return: 参数配置 id 对应的信息标记变更字段
"""
config = await DataStdDao.get_std_code_appr_by_id(query_db, col)
if config:
result = DataStdCodeApprModel(**CamelCaseUtil.transform_result(config))
else:
result = DataStdCodeApprModel(**dict())
if not config:
return DataStdCodeApprModel(**dict())
old_config = await DataStdDao.get_std_code_appr_by_id(query_db, config.compareId)
# 将 ORM 对象转为 dict 并驼峰命名
current = CamelCaseUtil.transform_result(config)
result_data = current.copy()
if old_config:
old = CamelCaseUtil.transform_result(old_config)
def diff(field):
old_val = str(old.get(field, '') or '')
new_val = str(current.get(field, '') or '')
return f"{old_val} ==> {new_val}" if old_val != new_val else new_val
# 比较指定字段
result_data["cdNo"] = diff("cdNo")
result_data["cdValCnMean"] = diff("cdValCnMean")
result_data["srcSys"] = diff("srcSys")
return result_data
return result
@classmethod
async def edit_std_code_services(cls, request: Request, query_db: AsyncSession, page_object: DataStdCodeModel):
"""
@ -179,7 +197,7 @@ class DataStdService:
:return: 编辑列配置校验结果
"""
edit_col = page_object.model_dump(exclude_unset=True)
col_info = await cls.get_std_code_by_id_services(query_db, page_object.id)
col_info = await cls.get_std_code_by_id_services(query_db, page_object.onum)
if col_info:
try:
@ -189,7 +207,7 @@ class DataStdService:
await query_db.rollback()
raise e
else:
raise ServiceException(message=f'标准代码{page_object.id}不存在')
raise ServiceException(message=f'标准代码{page_object.onum}不存在')
@classmethod
async def delete_std_code_with_items_appr(
@ -208,8 +226,8 @@ class DataStdService:
raise ServiceException(message="请提供有效的标准代码ID列表")
for std_id in id_list:
std_code = await DataStdDao.get_std_code_by_id(query_db, std_id)
if not std_code:
data_std_no = await DataStdDao.get_std_code_by_id(query_db, std_id)
if not data_std_no:
raise ServiceException(message=f"ID 为 {std_id} 的标准代码不存在,无法提交删除审批")
@ -217,19 +235,19 @@ class DataStdService:
last_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,std_id)
# 标准代码审批记录
std_code_appr = DataStdCodeApprModel(**CamelCaseUtil.transform_result(std_code))
std_code_appr = DataStdCodeApprModel(**CamelCaseUtil.transform_result(data_std_no))
std_code_appr.changeType = "delete"
std_code_appr.compareId = last_appr.id
std_code_appr.oldInstId = std_code.id
std_code_appr.compareId = last_appr.onum
std_code_appr.oldInstId = data_std_no.onum
std_code_appr.approStatus = "waiting"
std_code_appr.code_status = "9"
std_code_appr.cd_val_stat = "9"
std_code_appr.flowId = flow_id
std_code_appr.id=str(uuid.uuid4())
std_code_appr.onum=str(uuid.uuid4())
std_code_appr.create_by = current_user.user.user_name
std_code_appr.create_time = datetime.now()
await DataStdDao.add_std_code_appr(query_db, std_code_appr)
queryCodeItem = DataStdCodePageQueryModel()
queryCodeItem.parent_id=std_code.id
queryCodeItem.parent_id=data_std_no.onum
queryCodeItem.class_id="codeItem"
queryCodeItem.page_size=100
queryCodeItem.page_num=1
@ -238,13 +256,13 @@ class DataStdService:
appr_item=DataStdCodeApprModel(**code_item)
last_appr_item= await DataStdDao.get_last_std_code_appr_by_id(query_db,std_id)
appr_item.changeType = "delete"
appr_item.parent_id = std_code_appr.id
appr_item.compareId = last_appr_item.id
appr_item.oldInstId = appr_item.id
appr_item.parent_id = std_code_appr.onum
appr_item.compareId = last_appr_item.onum
appr_item.oldInstId = appr_item.onum
appr_item.approStatus = "waiting"
appr_item.code_status = "9"
appr_item.cd_val_stat = "9"
appr_item.flowId = flow_id
appr_item.id=str(uuid.uuid4())
appr_item.onum=str(uuid.uuid4())
appr_item.create_by = current_user.user.user_name
appr_item.create_time = datetime.now()
await DataStdDao.add_std_code_appr(query_db, appr_item)
@ -297,26 +315,26 @@ class DataStdService:
try:
# 先校验标准代码是否唯一
if not await cls.check_code_unique_services(query_db, code):
raise ServiceException(message=f'新增代码{code.code_name}失败,{code.code_num}代码已存在')
raise ServiceException(message=f'新增代码{code.cd_val_cn_mean}失败,{code.cd_no}代码已存在')
else:
# 保存标准代码
code.id=str(uuid.uuid4())
code.onum=str(uuid.uuid4())
await cls.add_std_code_services(request, query_db, code)
# 为每个代码项设置parent_id,并进行校验
for code_item in code_item_list:
# 校验同一个父级下,code是否已存在
code_item.parent_id = code.id
code_item.parent_id = code.onum
if not await cls.check_code_unique_services(query_db, code_item):
raise ServiceException(message=f"父级代码{code.code_num}下的代码项{code_item.code_num}已存在")
raise ServiceException(message=f"父级代码{code.cd_no}下的代码项{code_item.cd_no}已存在")
# 将parent_id设为code的ID
code_item.id=str(uuid.uuid4())
code_item.onum=str(uuid.uuid4())
code_item.create_by=code.create_by
code_item.create_time=code.create_time
code_item.update_by=code.update_by
code_item.update_time=code.update_time
code_item.upd_prsn=code.upd_prsn
code_item.upd_time=code.upd_time
await cls.add_std_code_services(request, query_db, code_item)
# 提交事务
@ -335,23 +353,22 @@ class DataStdService:
current_user: CurrentUserModel
):
# 设置标准代码的创建和更新时间
code.id = str(uuid.uuid4()) # 新生成 ID
code.onum = str(uuid.uuid4()) # 新生成 ID
code.create_by = current_user.user.user_name
code.create_time = datetime.now()
code.update_by = current_user.user.user_name
code.update_time = datetime.now()
code.sys_name = '公司级' if 'company' == code.code_type else code.sys_name
code.upd_prsn = current_user.user.user_name
code.upd_time = datetime.now()
# 校验标准代码是否已存在于正式表中
if not await cls.check_code_unique_services(query_db, code):
raise ServiceException(message=f'标准代码{code.code_num}已经存在于正式表中,无法新增')
raise ServiceException(message=f'标准代码{code.cd_no}已经存在于正式表中,无法新增')
# 先创建标准代码的审批记录
appr_model = DataStdCodeApprModel(**code.model_dump(exclude_unset=True, by_alias=True))
appr_model.changeType = "add"
appr_model.compareId = code.id
appr_model.oldInstId = code.id
appr_model.code_status="9"
appr_model.compareId = code.onum
appr_model.oldInstId = code.onum
appr_model.cd_val_stat="9"
appr_model.approStatus = "waiting"
appr_model.flowId = str(uuid.uuid4()) # 新生成 Flow ID
@ -359,23 +376,23 @@ class DataStdService:
await DataStdDao.add_std_code_appr(query_db, appr_model)
# 同时处理代码项的添加
for item in code_item_list:
item.id = str(uuid.uuid4()) # 新生成 ID
item.onum = str(uuid.uuid4()) # 新生成 ID
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
item.sys_name = '公司级' if 'company' == item.code_type else item.sys_name
item.parent_id = appr_model.id # 设置父级 ID
item.upd_prsn = current_user.user.user_name
item.upd_time = datetime.now()
item.src_sys = '公司级' if 'company' == item.cd_type else item.src_sys
item.parent_id = appr_model.onum # 设置父级 ID
# 校验代码项是否已存在于正式表中
if not await cls.check_code_unique_services(query_db, item):
raise ServiceException(message=f'代码项{item.code_num}已经存在于正式表中,无法新增')
raise ServiceException(message=f'代码项{item.cd_no}已经存在于正式表中,无法新增')
# 同样需要创建审批记录
item_appr_model = DataStdCodeApprModel(**item.model_dump(exclude_unset=True, by_alias=True))
item_appr_model.changeType = "add"
item_appr_model.compareId = item.id
item_appr_model.oldInstId = item.id
item_appr_model.compareId = item.onum
item_appr_model.oldInstId = item.onum
item_appr_model.approStatus = "waiting"
item_appr_model.flowId = appr_model.flowId # 使用相同的 Flow ID
@ -397,34 +414,34 @@ class DataStdService:
try:
# 校验标准代码是否存在并且唯一
if not await cls.check_code_unique_services(query_db, code):
raise ServiceException(message=f'修改代码{code.code_name}失败,{code.code_num}代码不存在或已存在')
raise ServiceException(message=f'修改代码{code.cd_val_cn_mean}失败,{code.cd_no}代码不存在或已存在')
# 更新标准代码
await cls.edit_std_code_services(request, query_db, code)
# 为每个代码项设置parent_id,并进行校验
for code_item in code_item_list:
code_item.parent_id = code.id
if code_item.id :
code_item.parent_id = code.onum
if code_item.onum :
# 校验同一个父级下,code_num是否已存在
if not await cls.check_code_unique_services(query_db, code_item):
raise ServiceException(message=f"父级代码{code.code_num}下的代码项{code_item.code_num}已存在")
raise ServiceException(message=f"父级代码{code.cd_no}下的代码项{code_item.cd_no}已存在")
# 更新代码项的相关信息
code_item.update_time = code.update_time
code_item.update_by = code.update_by
code_item.upd_time = code.upd_time
code_item.upd_prsn = code.upd_prsn
await cls.edit_std_code_services(request, query_db, code_item) # 执行更新操作
else: # 如果code_item的id不为0,表示是修改操作
# 校验同一个父级下,code_num是否已存在
if not await cls.check_code_unique_services(query_db, code_item):
raise ServiceException(message=f"父级代码{code.code_num}下的代码项{code_item.code_num}已存在")
raise ServiceException(message=f"父级代码{code.cd_no}下的代码项{code_item.cd_no}已存在")
# 生成新的UUID,并新增代码项
code_item.id = str(uuid.uuid4()) # 新生成的UUID
code_item.create_time = code.update_time
code_item.onum = str(uuid.uuid4()) # 新生成的UUID
code_item.create_time = code.upd_time
code_item.create_by = code.create_by
code_item.update_time = code.update_time
code_item.update_by = code.update_by
code_item.upd_time = code.upd_time
code_item.upd_prsn = code.upd_prsn
await cls.add_std_code_services(request, query_db, code_item) # 执行新增操作
# 提交事务
await query_db.commit()
@ -444,92 +461,93 @@ class DataStdService:
):
"""
修改标准代码及其代码项的审批流程修改审批
code_item.id 存在为修改若为空则为新增
code_item.onum 存在为修改若为空则为新增
"""
# 更新时间及人
code.create_by = current_user.user.user_name
code.create_time = datetime.now()
code.sys_name = '公司级' if 'company' == code.code_type else code.sys_name
# 校验标准代码是否存在并且唯一
if not await cls.check_code_unique_services(query_db, code):
raise ServiceException(message=f'标准代码{code.code_num}不存在或已存在,无法提交修改审批')
raise ServiceException(message=f'标准代码{code.cd_no}不存在或已存在,无法提交修改审批')
# 创建标准代码的审批记录(changeType 为 update)
appr_model = DataStdCodeApprModel(**code.model_dump(exclude_unset=True, by_alias=True))
last_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,code.id)
last_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,code.onum)
appr_model.changeType = "update"
appr_model.compareId = last_appr.id # 对比对象为正式表的 ID
appr_model.oldInstId = code.id
appr_model.code_status = "9"
appr_model.compareId = last_appr.onum # 对比对象为正式表的 ID
appr_model.oldInstId = code.onum
appr_model.cd_val_stat = "9"
appr_model.approStatus = "waiting"
appr_model.flowId = str(uuid.uuid4()) # flowId 共用
appr_model.id = str(uuid.uuid4()) # flowId 共用
appr_model.onum = str(uuid.uuid4()) # flowId 共用
await DataStdDao.add_std_code_appr(query_db, appr_model)
# query_object.
query_object = DataStdCodePageQueryModel(
)
query_object.parent_id=code.id
query_object.parent_id=code.onum
query_object.class_id="codeItem"
query_object.page_size=100
query_object.page_num=1
code_item_list_old = await DataStdDao.get_std_code_list(query_db, query_object, False)
new_ids = {item.id for item in code_item_list if item.id}
new_ids = {item.onum for item in code_item_list if item.onum}
# 同步处理代码项
for item in code_item_list:
item.parent_id = code.id
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
item.sys_name = '公司级' if 'company' == item.code_type else item.sys_name
item.parent_id = code.onum
item.upd_prsn = current_user.user.user_name
item.upd_time = datetime.now()
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
item.src_sys = '公司级' if 'company' == item.cd_type else item.src_sys
if item.id: # 修改项
if item.onum: # 修改项
if not await cls.check_code_unique_services(query_db, item):
raise ServiceException(message=f'父级代码{code.code_num}下代码项{item.code_num}重复,无法提交修改审批')
raise ServiceException(message=f'父级代码{code.cd_no}下代码项{item.cd_no}重复,无法提交修改审批')
item_appr_model = DataStdCodeApprModel(**item.model_dump(exclude_unset=True, by_alias=True))
last_item_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,item_appr_model.id)
last_item_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,item_appr_model.onum)
item_appr_model.changeType = "update"
item_appr_model.compareId = last_item_appr.id
item_appr_model.parent_id = appr_model.id
item_appr_model.oldInstId = item.id
item_appr_model.compareId = last_item_appr.onum
item_appr_model.parent_id = appr_model.onum
item_appr_model.oldInstId = item.onum
item_appr_model.approStatus = "waiting"
item_appr_model.flowId = appr_model.flowId
item_appr_model.id = str(uuid.uuid4()) # flowId 共用
item_appr_model.onum = str(uuid.uuid4()) # flowId 共用
await DataStdDao.add_std_code_appr(query_db, item_appr_model)
else: # 新增项
item.id = str(uuid.uuid4())
item.onum = str(uuid.uuid4())
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
if not await cls.check_code_unique_services(query_db, item):
raise ServiceException(message=f'父级代码{code.code_num}下代码项{item.code_num}重复,无法提交新增审批')
raise ServiceException(message=f'父级代码{code.cd_no}下代码项{item.cd_no}重复,无法提交新增审批')
item_appr_model = DataStdCodeApprModel(**item.model_dump(exclude_unset=True, by_alias=True))
item_appr_model.changeType = "add"
item_appr_model.compareId = item.id
item_appr_model.oldInstId = item.id
item_appr_model.compareId = item.onum
item_appr_model.oldInstId = item.onum
item_appr_model.approStatus = "waiting"
item_appr_model.flowId = appr_model.flowId
item_appr_model.parent_id = appr_model.id
item_appr_model.parent_id = appr_model.onum
await DataStdDao.add_std_code_appr(query_db, item_appr_model)
for old_item in code_item_list_old:
if old_item["id"] not in new_ids:
if old_item["onum"] not in new_ids:
# 创建“删除”审批记录
delete_appr_model = DataStdCodeApprModel(**old_item)
delete_appr_model.changeType = "delete"
last_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,old_item["id"])
delete_appr_model.compareId = last_appr.id
delete_appr_model.oldInstId = old_item["id"]
last_appr= await DataStdDao.get_last_std_code_appr_by_id(query_db,old_item["onum"])
delete_appr_model.compareId = last_appr.onum
delete_appr_model.oldInstId = old_item["onum"]
delete_appr_model.approStatus = "waiting"
delete_appr_model.flowId = appr_model.flowId
delete_appr_model.id = str(uuid.uuid4())
delete_appr_model.parent_id = appr_model.id
delete_appr_model.onum = str(uuid.uuid4())
delete_appr_model.parent_id = appr_model.onum
delete_appr_model.create_by = current_user.user.user_name
delete_appr_model.create_time = datetime.now()
@ -539,7 +557,7 @@ class DataStdService:
apply_model = ApplyModel()
apply_model.businessType = "dataStdCode"
apply_model.businessId = appr_model.flowId
apply_model.applicant = appr_model.update_by
apply_model.applicant = appr_model.upd_prsn
await ApprovalService.apply_services(query_db, apply_model, 'dataStdCode')
return CrudResponseModel(is_success=True, message='提交修改标准代码审批成功!')
@ -553,15 +571,15 @@ class DataStdService:
:param page_object: 字典类型对象
:return: 校验结果
"""
id = -1 if page_object.id is None else page_object.id
id = -1 if page_object.onum is None else page_object.onum
codemodel=DataStdCodeModel()
codemodel.code_num=page_object.code_num
codemodel.cd_no=page_object.cd_no
codemodel.class_id=page_object.class_id
codemodel.parent_id=page_object.parent_id
codemodel.code_type=page_object.code_type
dict_type = await DataStdDao.get_data_code_by_info(query_db, codemodel
codemodel.cd_type=page_object.cd_type
data_dict_data_type = await DataStdDao.get_data_code_by_info(query_db, codemodel
)
if dict_type and dict_type.id != id:
if data_dict_data_type and data_dict_data_type.onum != id:
return CommonConstant.NOT_UNIQUE
return CommonConstant.UNIQUE
# ----------------------------------------------------------------数据字典----------------------------------------------------------------------------------------------------
@ -611,11 +629,11 @@ class DataStdService:
"""
try:
if not await cls.check_dict_unique_services(query_db, page_object):
raise ServiceException(message=f"数据字典{page_object.dict_num}已存在")
raise ServiceException(message=f"数据字典{page_object.data_dict_no}已存在")
# 创建新的 page_object 实例,避免修改原始对象
new_page_object = DataStdDictModel(**page_object.model_dump(by_alias=True))
new_page_object.dict_status="9"
new_page_object.id=str(uuid.uuid4())
new_page_object.data_dict_stat="9"
new_page_object.onum=str(uuid.uuid4())
# 调用 DAO 方法插入数据
await DataStdDao.add_std_dict(query_db, new_page_object)
return CrudResponseModel(is_success=True, message='新增数据字典成功')
@ -651,9 +669,9 @@ class DataStdService:
:return: 编辑列配置校验结果
"""
if not await cls.check_dict_unique_services(query_db, page_object):
raise ServiceException(message=f"数据字典编号:{page_object.dict_num}已存在")
raise ServiceException(message=f"数据字典编号:{page_object.data_dict_no}已存在")
edit_col = page_object.model_dump(exclude_unset=True)
col_info = await cls.get_std_dict_by_id_services(query_db, page_object.id)
col_info = await cls.get_std_dict_by_id_services(query_db, page_object.onum)
if col_info:
try:
await DataStdDao.update_std_dict(query_db, edit_col)
@ -662,7 +680,7 @@ class DataStdService:
await query_db.rollback()
raise e
else:
raise ServiceException(message=f'数据字典{page_object.id}不存在')
raise ServiceException(message=f'数据字典{page_object.onum}不存在')
@classmethod
@ -700,13 +718,13 @@ class DataStdService:
:param page_object: 字典类型对象
:return: 校验结果
"""
id ='-1' if page_object.id is None else page_object.id
id ='-1' if page_object.onum is None else page_object.onum
codemodel=DataStdDictModel()
codemodel.dict_num=page_object.dict_num
codemodel.data_dict_no=page_object.data_dict_no
dict_type = await DataStdDao.get_data_dict_by_info(query_db, codemodel
data_dict_data_type = await DataStdDao.get_data_dict_by_info(query_db, codemodel
)
if dict_type and dict_type.id != id:
if data_dict_data_type and data_dict_data_type.onum != id:
return CommonConstant.NOT_UNIQUE
return CommonConstant.UNIQUE
# ----------------------------------------------------------------数据标准分类----------------------------------------------------------------------------------------------------
@ -732,7 +750,7 @@ class DataStdService:
nodes = {} # 存储所有处理后的节点
# 处理每个组,生成节点
for content_onum, items in grouped.items():
for belt_data_std_content, items in grouped.items():
first_item = items[0]
is_leaf = first_item['leafNodeFlag'] == 1
rela_onum = first_item['relaOnum'] is not None
@ -751,12 +769,12 @@ class DataStdService:
'children': []
}
nodes[content_onum] = common_fields
nodes[belt_data_std_content] = common_fields
# 构建父子关系
root = None
for content_onum, node in nodes.items():
for belt_data_std_content, node in nodes.items():
supr = node['suprContentOnum']
if supr is None:
root = node
@ -766,7 +784,7 @@ class DataStdService:
parent['children'].append(node)
# 对每个父节点的children进行排序,将'临时的节点'放到最后
for content_onum, node in nodes.items():
for belt_data_std_content, node in nodes.items():
if 'children' in node:
# 排序时,'临时的节点'会被放到最后
node['children'] = sorted(
@ -782,16 +800,16 @@ class DataStdService:
return catalog_list_result
@classmethod
async def get_catalog_detail_services(cls, query_db: AsyncSession, content_onum: int):
async def get_catalog_detail_services(cls, query_db: AsyncSession, belt_data_std_content: int):
"""
获取数据目录详细信息service
:param query_db: orm对象
:param content_onum: 数据目录ID
:param belt_data_std_content: 数据目录ID
:return: 数据目录详细信息对象
"""
catalog_detail_result = await DataStdDao.get_catalog_by_id(query_db, content_onum)
catalog_detail_result = await DataStdDao.get_catalog_by_id(query_db, belt_data_std_content)
return catalog_detail_result
@ -918,12 +936,12 @@ class DataStdService:
if request.content_onums:
content_onum_list = request.content_onums.split(',')
try:
for content_onum in content_onum_list:
catalog = await cls.get_catalog_detail_services(query_db, int(content_onum))
for belt_data_std_content in content_onum_list:
catalog = await cls.get_catalog_detail_services(query_db, int(belt_data_std_content))
if not catalog:
raise ServiceException(message=f'目录ID {content_onum} 不存在')
await DataStdDao.delete_catalog_dao(query_db, DeleteDataCatalogModel(content_onums=content_onum))
# await DataStdDao.delete_ast_book_mark_rela_by_content_onum(query_db, int(content_onum), user_id)
raise ServiceException(message=f'目录ID {belt_data_std_content} 不存在')
await DataStdDao.delete_catalog_dao(query_db, DeleteDataCatalogModel(content_onums=belt_data_std_content))
# await DataStdDao.delete_ast_book_mark_rela_by_content_onum(query_db, int(belt_data_std_content), user_id)
await query_db.commit()
return CrudResponseModel(is_success=True, message='删除成功')
except Exception as e:
@ -949,16 +967,16 @@ class DataStdService:
sys_groups = {}
for item in rows:
sys_name, eng_name, cn_name, ast_no = item
src_sys, eng_name, cn_name, ast_no = item
# 创建或获取系统分组
if sys_name not in sys_groups:
sys_groups[sys_name] = {
"dataAssetSysName": sys_name,
if src_sys not in sys_groups:
sys_groups[src_sys] = {
"dataAssetSysName": src_sys,
"children": []
}
# 添加子节点
sys_groups[sys_name]["children"].append({
sys_groups[src_sys]["children"].append({
"dataAssetCatalogNo": eng_name,
"dataAssetCatalogName": cn_name,
"dataAssetCatalogAstno": ast_no
@ -1070,11 +1088,11 @@ class DataStdService:
"""
校验标准编号是否唯一
"""
id = '-1' if model.id is None else model.id
id = '-1' if model.onum is None else model.onum
check_model = DataStdMainModel()
check_model.std_num=model.std_num
check_model.data_std_no=model.data_std_no
existing = await DataStdDao.get_data_main_by_info(query_db, check_model)
return CommonConstant.NOT_UNIQUE if existing and existing.id != id else CommonConstant.UNIQUE
return CommonConstant.NOT_UNIQUE if existing and existing.onum != id else CommonConstant.UNIQUE
@classmethod
async def get_std_main_list(cls, query_db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False):
@ -1162,10 +1180,10 @@ class DataStdService:
@classmethod
async def add_std_main(cls, query_db: AsyncSession, model: DataStdMainModel):
if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
model.id=str(uuid.uuid4())
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
model.std_status="9"
model.content_onum=2
model.belt_data_std_content=2
await DataStdDao.add_std_main(query_db, model)
return CrudResponseModel(is_success=True, message='新增标准成功')
@ -1173,25 +1191,25 @@ class DataStdService:
@classmethod
async def edit_std_main(cls, query_db: AsyncSession, model: DataStdMainModel):
if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
existing = await cls.get_std_main_by_id(query_db, model.id)
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
existing = await cls.get_std_main_by_id(query_db, model.onum)
if existing:
await DataStdDao.update_std_main(query_db, model.model_dump(exclude_unset=True))
return CrudResponseModel(is_success=True, message='编辑标准成功')
else:
raise ServiceException(message=f'标准 {model.id} 不存在')
raise ServiceException(message=f'标准 {model.onum} 不存在')
@classmethod
async def add_std_main_appr(cls, query_db: AsyncSession, model: DataStdMainModel):
if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
model.id=str(uuid.uuid4())
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
model.std_status="9"
model.content_onum=2
model.belt_data_std_content=2
# 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名
apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="add"
apprModel.compareId=model.id
apprModel.oldInstId=model.id
apprModel.compareId=model.onum
apprModel.oldInstId=model.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_main_appr(query_db, apprModel)
@ -1204,14 +1222,14 @@ class DataStdService:
@classmethod
async def add_std_dict_appr(cls, query_db: AsyncSession, model: DataStdDictModel):
if not await cls.check_dict_unique_services(query_db, model):
raise ServiceException(message=f"字典编号 {model.dict_num} 已存在")
model.id=str(uuid.uuid4())
model.dict_status="9"
raise ServiceException(message=f"字典编号 {model.data_dict_no} 已存在")
model.onum=str(uuid.uuid4())
model.data_dict_stat="9"
# 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名
apprModel = DataStdDictApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="add"
apprModel.compareId=model.id
apprModel.oldInstId=model.id
apprModel.compareId=model.onum
apprModel.oldInstId=model.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_dict_appr(query_db, apprModel)
@ -1224,19 +1242,19 @@ class DataStdService:
@classmethod
async def edit_std_main_appr(cls, query_db: AsyncSession, model: DataStdMainModel):
if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.std_num} 已存在")
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.std_status="9"
# 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名
watingList=await DataStdDao.check_std_main_waiting(model.id, query_db)
watingList=await DataStdDao.check_std_main_waiting(model.onum, query_db)
if len(watingList)>0 : # 如果 watingList 存在,意味着标准正在审批中
raise ServiceException(message="标准正在审批中,请等待审批完成")
lastAppr =await DataStdDao.get_last_std_main_appr_by_id(query_db,model.id)
lastAppr =await DataStdDao.get_last_std_main_appr_by_id(query_db,model.onum)
apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="edit"
apprModel.id=str(uuid.uuid4())
apprModel.oldInstId=model.id
apprModel.compareId=lastAppr.id
apprModel.onum=str(uuid.uuid4())
apprModel.oldInstId=model.onum
apprModel.compareId=lastAppr.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_main_appr(query_db, apprModel)
@ -1250,17 +1268,17 @@ class DataStdService:
async def edit_std_dict_appr(cls, query_db: AsyncSession, model: DataStdDictModel):
if not await cls.check_dict_unique_services(query_db, model):
raise ServiceException(message=f"字典编号 {model.c} 已存在")
model.dict_status="9"
model.data_dict_stat="9"
watingList=await DataStdDao.check_std_dict_waiting(model.id, query_db)
watingList=await DataStdDao.check_std_dict_waiting(model.onum, query_db)
if len(watingList)>0 : # 如果 watingList 存在,意味着标准正在审批中
raise ServiceException(message="标准正在审批中,请等待审批完成")
lastAppr =await DataStdDao.get_last_std_dict_appr_by_id(query_db,model.id)
lastAppr =await DataStdDao.get_last_std_dict_appr_by_id(query_db,model.onum)
apprModel = DataStdDictApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="edit"
apprModel.id=str(uuid.uuid4())
apprModel.oldInstId=model.id
apprModel.compareId=lastAppr.id
apprModel.onum=str(uuid.uuid4())
apprModel.oldInstId=model.onum
apprModel.compareId=lastAppr.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_dict_appr(query_db, apprModel)
@ -1278,13 +1296,13 @@ class DataStdService:
for col_id in col_id_list:
col_info = await cls.get_std_main_by_id(query_db, col_id)
if col_info:
watingList=await DataStdDao.check_std_main_waiting(col_info.id,query_db )
watingList=await DataStdDao.check_std_main_waiting(col_info.onum,query_db )
if len(watingList)>0 : # 如果 watingList 存在,意味着标准正在审批中
raise ServiceException(message="标准正在审批中,请等待审批完成")
apprModel = DataStdMainApprModel(**col_info.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="delete"
apprModel.id=str(uuid.uuid4())
apprModel.oldInstId=col_info.id
apprModel.onum=str(uuid.uuid4())
apprModel.oldInstId=col_info.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_main_appr(query_db, apprModel)
@ -1308,13 +1326,13 @@ class DataStdService:
for col_id in col_id_list:
col_info = await cls.get_std_dict_by_id_services(query_db, col_id)
if col_info:
watingList=await DataStdDao.check_std_dict_waiting(col_info.id,query_db )
watingList=await DataStdDao.check_std_dict_waiting(col_info.onum,query_db )
if len(watingList)>0 : # 如果 watingList 存在,意味着标准正在审批中
raise ServiceException(message="标准正在审批中,请等待审批完成")
apprModel = DataStdDictApprModel(**col_info.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="delete"
apprModel.id=str(uuid.uuid4())
apprModel.oldInstId=col_info.id
apprModel.onum=str(uuid.uuid4())
apprModel.oldInstId=col_info.onum
apprModel.approStatus="waiting"
apprModel.flowId=str(uuid.uuid4())
await DataStdDao.add_std_dict_appr(query_db, apprModel)
@ -1348,15 +1366,15 @@ class DataStdService:
else:
raise ServiceException(message='传入标准ID为空')
@classmethod
async def change_std_main_onum(cls, query_db: AsyncSession, ids: str,onum:int):
async def change_std_main_onum(cls, query_db: AsyncSession, ids: str,belt_data_std_content:int):
if ids:
col_id_list = ids.split(',')
try:
for col_id in col_id_list:
col_info = await cls.get_std_main_by_id(query_db, col_id)
if col_info:
col_info.content_onum=onum
await DataStdDao.update_std_main(query_db,col_info.model_dump(exclude_unset=True) )
col_info.belt_data_std_content=belt_data_std_content
await DataStdDao.update_std_main(query_db,col_info )
await query_db.commit()
return CrudResponseModel(is_success=True, message='修改标准分类成功')
except Exception as e:
@ -1370,9 +1388,9 @@ class DataStdService:
async def get_code_std_map_list_services(cls, query_db: AsyncSession, id: str):
# 查询 A 表(t_datastd_main)
check_model = DataStdMainModel()
check_model.code_id = id
check_model.cd_id = id
main_list = await DataStdDao.get_std_main_list_all(query_db, check_model)
stdCode=await DataStdDao.get_std_code_by_id(query_db, id)
dataStdNo=await DataStdDao.get_std_code_by_id(query_db, id)
if not main_list:
return {"tableData": [], "children": []} # 如果 A 表没有数据,返回空结构
@ -1381,43 +1399,43 @@ class DataStdService:
children = [] # 存储图谱数据
for main in main_list:
# 查询 B 表(t_datastd_dict),通过 A 表的 id 匹配 std_code
# 查询 B 表(t_datastd_dict),通过 A 表的 id 匹配 data_std_no
dict_model = DataStdDictModel()
dict_model.std_code = main.get('id') # 使用 get() 方法访问字段
dict_model.data_std_no = main.get('id') # 使用 get() 方法访问字段
dict_list = await DataStdDao.get_std_dict_list_all(query_db, dict_model)
# 组织表格数据
if dict_list:
for dict_item in dict_list:
table_data.append({
"codeNum": stdCode.code_num, # 使用 get() 方法访问字段
"codeName": stdCode.code_name, # 使用 get() 方法访问字段
"stdNum": main.get('stdNum'), # 使用 get() 方法访问字段
"stdName": main.get('stdName'), # 使用 get() 方法访问字段
"stdCode": main.get('stdCode'), # 使用 get() 方法访问字段
"dictNum": dict_item.get('dictNum'), # 使用 get() 方法访问字段
"dictName": dict_item.get('dictName'), # 使用 get() 方法访问字段
"dictCode": dict_item.get('dictCode'), # 使用 get() 方法访问字段
"cdNo": dataStdNo.cd_no, # 使用 get() 方法访问字段
"cdValCnMean": dataStdNo.cd_val_cn_mean, # 使用 get() 方法访问字段
"dataStdNo": main.get('dataStdNo'), # 使用 get() 方法访问字段
"dataStdCnName": main.get('dataStdCnName'), # 使用 get() 方法访问字段
"dataStdNo": main.get('dataStdNo'), # 使用 get() 方法访问字段
"dataDictNo": dict_item.get('dataDictNo'), # 使用 get() 方法访问字段
"dataDictCnName": dict_item.get('dataDictCnName'), # 使用 get() 方法访问字段
"dataDictEngName": dict_item.get('dataDictEngName'), # 使用 get() 方法访问字段
})
else :
table_data.append({
"codeNum": stdCode.code_num, # 使用 get() 方法访问字段
"codeName": stdCode.code_name, # 使用 get() 方法访问字段
"stdNum": main.get('stdNum'), # 使用 get() 方法访问字段
"stdName": main.get('stdName'), # 使用 get() 方法访问字段
"stdCode": main.get('stdCode'), # 使用 get() 方法访问字段
"dictNum": "", # 使用 get() 方法访问字段
"dictName":"", # 使用 get() 方法访问字段
"dictCode": "", # 使用 get() 方法访问字段
"cdNo": dataStdNo.cd_no, # 使用 get() 方法访问字段
"cdValCnMean": dataStdNo.cd_val_cn_mean, # 使用 get() 方法访问字段
"dataStdNo": main.get('dataStdNo'), # 使用 get() 方法访问字段
"dataStdCnName": main.get('dataStdCnName'), # 使用 get() 方法访问字段
"dataStdNo": main.get('dataStdNo'), # 使用 get() 方法访问字段
"dataDictNo": "", # 使用 get() 方法访问字段
"dataDictCnName":"", # 使用 get() 方法访问字段
"dataDictEngName": "", # 使用 get() 方法访问字段
})
# 组织图谱数据(A 表作为父节点)
node = {
"id": f"node_{main.get('id')}", # 使用 get() 方法访问字段
"name": main.get('stdName'), # 使用 get() 方法访问字段
"label": main.get('stdCode'), # 使用 get() 方法访问字段
"name": main.get('dataStdCnName'), # 使用 get() 方法访问字段
"label": main.get('dataStdNo'), # 使用 get() 方法访问字段
"rate": 1.0,
"status": "B",
"currency": main.get('stdNum'), # 使用 get() 方法访问字段
"currency": main.get('dataStdNo'), # 使用 get() 方法访问字段
"variableValue": "标准",
"variableUp": True,
"children": [],
@ -1427,11 +1445,11 @@ class DataStdService:
for dict_item in dict_list:
node["children"].append({
"id": f"dict_{dict_item.get('id')}", # 使用 get() 方法访问字段
"name": dict_item.get('dictName'), # 使用 get() 方法访问字段
"label": dict_item.get('dictCode'), # 使用 get() 方法访问字段
"name": dict_item.get('dataDictCnName'), # 使用 get() 方法访问字段
"label": dict_item.get('dataDictEngName'), # 使用 get() 方法访问字段
"rate": 1.0,
"status": "R",
"currency": dict_item.get('dictNum'), # 使用 get() 方法访问字段
"currency": dict_item.get('dataDictNo'), # 使用 get() 方法访问字段
"variableValue": "词典",
"variableUp": True,
})
@ -1445,16 +1463,16 @@ class DataStdService:
@classmethod
async def get_code_map_list(cls, query_db: AsyncSession, id: str):
check_model = DataStdCodeModel()
stdCode=await DataStdDao.get_std_code_by_id(query_db, id)
code_type="公司级"
if stdCode.code_type=='sys':
if stdCode.code_map_id:
check_model.id=stdCode.code_map_id
dataStdNo=await DataStdDao.get_std_code_by_id(query_db, id)
cd_type="公司级"
if dataStdNo.cd_type=='sys':
if dataStdNo.code_map_id:
check_model.onum=dataStdNo.code_map_id
else:
check_model.id="no"
check_model.onum="no"
else:
check_model.code_map_id = id
code_type="系统级"
cd_type="系统级"
main_list = await DataStdDao.get_data_code_list_by_info(query_db, check_model)
@ -1467,13 +1485,13 @@ class DataStdService:
for main in main_list:
# 组织图谱数据(A 表作为父节点)
node = {
"id": f"node_{main.id}", # 使用 get() 方法访问字段
"name": main.code_name, # 使用 get() 方法访问字段
"label": main.code_num, # 使用 get() 方法访问字段
"id": f"node_{main.onum}", # 使用 get() 方法访问字段
"name": main.cd_val_cn_mean, # 使用 get() 方法访问字段
"label": main.cd_no, # 使用 get() 方法访问字段
"rate": 1.0,
"status": "B",
# "currency": main.get('stdNum'), # 使用 get() 方法访问字段
"variableValue": code_type,
# "currency": main.get('dataStdNo'), # 使用 get() 方法访问字段
"variableValue": cd_type,
"variableUp": True,
"children": [],
}

10
vue-fastapi-backend/sql/ruoyi-fastapi-pg.sql

@ -553,7 +553,7 @@ comment on table sys_oper_log is '操作日志记录';
drop table if exists sys_dict_type;
create table sys_dict_type (
dict_id bigserial not null,
dict_name varchar(100) default '',
data_dict_cn_name varchar(100) default '',
dict_type varchar(100) unique default '',
status char(1) default '0',
create_by varchar(64) default '',
@ -565,7 +565,7 @@ create table sys_dict_type (
);
alter sequence sys_dict_type_dict_id_seq restart 100;
comment on column sys_dict_type.dict_id is '字典主键';
comment on column sys_dict_type.dict_name is '字典名称';
comment on column sys_dict_type.data_dict_cn_name is '字典名称';
comment on column sys_dict_type.dict_type is '字典类型';
comment on column sys_dict_type.status is '状态(0正常 1停用)';
comment on column sys_dict_type.create_by is '创建者';
@ -595,7 +595,7 @@ insert into sys_dict_type values(11, '系统状态', 'sys_common_status', '0
-- ----------------------------
drop table if exists sys_dict_data;
create table sys_dict_data (
dict_code bigserial not null,
data_dict_eng_name bigserial not null,
dict_sort int4 default 0,
dict_label varchar(100) default '',
dict_value varchar(100) default '',
@ -609,10 +609,10 @@ create table sys_dict_data (
update_by varchar(64) default '',
update_time timestamp(0),
remark varchar(500) default null,
primary key (dict_code)
primary key (data_dict_eng_name)
);
alter sequence sys_dict_data_dict_code_seq restart 100;
comment on column sys_dict_data.dict_code is '字典编码';
comment on column sys_dict_data.data_dict_eng_name is '字典编码';
comment on column sys_dict_data.dict_sort is '字典排序';
comment on column sys_dict_data.dict_label is '字典标签';
comment on column sys_dict_data.dict_value is '字典键值';

6
vue-fastapi-backend/sql/ruoyi-fastapi.sql

@ -448,7 +448,7 @@ drop table if exists sys_dict_type;
create table sys_dict_type
(
dict_id bigint(20) not null auto_increment comment '字典主键',
dict_name varchar(100) default '' comment '字典名称',
data_dict_cn_name varchar(100) default '' comment '字典名称',
dict_type varchar(100) default '' comment '字典类型',
status char(1) default '0' comment '状态(0正常 1停用)',
create_by varchar(64) default '' comment '创建者',
@ -479,7 +479,7 @@ insert into sys_dict_type values(11, '系统状态', 'sys_common_status', '0
drop table if exists sys_dict_data;
create table sys_dict_data
(
dict_code bigint(20) not null auto_increment comment '字典编码',
data_dict_eng_name bigint(20) not null auto_increment comment '字典编码',
dict_sort int(4) default 0 comment '字典排序',
dict_label varchar(100) default '' comment '字典标签',
dict_value varchar(100) default '' comment '字典键值',
@ -493,7 +493,7 @@ create table sys_dict_data
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
remark varchar(500) default null comment '备注',
primary key (dict_code)
primary key (data_dict_eng_name)
) engine=innodb auto_increment=100 comment = '字典数据表';
insert into sys_dict_data values(1, 1, '', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', sysdate(), '', null, '性别男');

22
vue-fastapi-backend/sql/syq20250204版本更新(数据安全模块).sql

@ -47,17 +47,17 @@ CREATE TABLE `meta_security_row` (
SET FOREIGN_KEY_CHECKS = 1;
--
INSERT INTO `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 (110, 0, '不可见', '0', 'metasecurity_ctr', NULL, 'danger', 'N', '0', 'admin', '2025-01-26 00:07:29', 'admin', '2025-02-03 13:40:02', NULL);
INSERT INTO `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 (111, 0, '可见', '1', 'metasecurity_ctr', NULL, 'primary', 'N', '0', 'admin', '2025-01-26 00:07:52', 'admin', '2025-02-03 13:40:23', NULL);
INSERT INTO `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 (112, 1, '用户', '0', 'metasecurity_obj', NULL, 'primary', 'N', '0', 'admin', '2025-01-26 00:48:48', 'admin', '2025-01-26 00:48:48', NULL);
INSERT INTO `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 (113, 1, '角色', '1', 'metasecurity_obj', NULL, 'warning', 'N', '0', 'admin', '2025-01-26 00:49:08', 'admin', '2025-01-26 00:49:08', NULL);
INSERT INTO `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 (114, 0, '固定值', '0', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:04', 'admin', '2025-01-26 00:53:04', NULL);
INSERT INTO `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 (115, 0, '表和字段', '1', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:12', 'admin', '2025-02-03 14:27:24', NULL);
INSERT INTO `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 (116, 0, '程序', '2', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:26', 'admin', '2025-02-03 14:27:32', NULL);
INSERT INTO `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 (117, 3, '应用', '2', 'metasecurity_obj', NULL, 'danger', 'N', '0', 'admin', '2025-02-03 14:25:37', 'admin', '2025-02-03 14:25:37', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (105, '控制方向', 'metasecurity_ctr', '0', 'admin', '2025-01-26 00:07:04', 'admin', '2025-01-26 01:19:54', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (106, '对象类型', 'metasecurity_obj', '0', 'admin', '2025-01-26 00:48:20', 'admin', '2025-01-26 00:48:20', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (107, '控制类型', 'metasecurity_type', '0', 'admin', '2025-01-26 00:52:24', 'admin', '2025-01-26 00:52:24', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (110, 0, '不可见', '0', 'metasecurity_ctr', NULL, 'danger', 'N', '0', 'admin', '2025-01-26 00:07:29', 'admin', '2025-02-03 13:40:02', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (111, 0, '可见', '1', 'metasecurity_ctr', NULL, 'primary', 'N', '0', 'admin', '2025-01-26 00:07:52', 'admin', '2025-02-03 13:40:23', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (112, 1, '用户', '0', 'metasecurity_obj', NULL, 'primary', 'N', '0', 'admin', '2025-01-26 00:48:48', 'admin', '2025-01-26 00:48:48', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (113, 1, '角色', '1', 'metasecurity_obj', NULL, 'warning', 'N', '0', 'admin', '2025-01-26 00:49:08', 'admin', '2025-01-26 00:49:08', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (114, 0, '固定值', '0', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:04', 'admin', '2025-01-26 00:53:04', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (115, 0, '表和字段', '1', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:12', 'admin', '2025-02-03 14:27:24', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (116, 0, '程序', '2', 'metasecurity_type', NULL, 'default', 'N', '0', 'admin', '2025-01-26 00:53:26', 'admin', '2025-02-03 14:27:32', NULL);
INSERT INTO `sys_dict_data` (`data_dict_eng_name`, `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 (117, 3, '应用', '2', 'metasecurity_obj', NULL, 'danger', 'N', '0', 'admin', '2025-02-03 14:25:37', 'admin', '2025-02-03 14:25:37', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `data_dict_cn_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (105, '控制方向', 'metasecurity_ctr', '0', 'admin', '2025-01-26 00:07:04', 'admin', '2025-01-26 01:19:54', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `data_dict_cn_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (106, '对象类型', 'metasecurity_obj', '0', 'admin', '2025-01-26 00:48:20', 'admin', '2025-01-26 00:48:20', NULL);
INSERT INTO `sys_dict_type` (`dict_id`, `data_dict_cn_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (107, '控制类型', 'metasecurity_type', '0', 'admin', '2025-01-26 00:52:24', 'admin', '2025-01-26 00:52:24', NULL);
--
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2020, '删除', 2014, 4, '', '', '', '', 1, 0, 'F', '0', '0', 'meta:metaSecurityCol:remove', '#', 'admin', '2025-01-15 22:26:08', '', NULL, '');
INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2019, '修改', 2014, 3, '', '', '', '', 1, 0, 'F', '0', '0', 'meta:metaSecurityCol:edit', '#', 'admin', '2025-01-15 22:26:08', '', NULL, '');

2
vue-fastapi-frontend/src/api/datastd/std.js

@ -20,7 +20,7 @@ export function listStdCodeCompany() {
return request({
url: '/default-api/datastd/stdcode/code/list',
method: 'get',
params: {classId:'code',codeType:"company"}
params: {classId:'code',cdType:"company"}
})
}
export function listStdCodemap(query) {

4
vue-fastapi-frontend/src/main.js

@ -13,6 +13,7 @@ import App from './App'
import store from './store'
import router from './router'
import directive from './directive' // directive
import useUserStore from '@/store/modules/user'
// 注册指令
import plugins from './plugins' // plugins
@ -81,5 +82,6 @@ app.use(ElementPlus, {
// 支持 large、default、small
size: Cookies.get('size') || 'default'
})
const userStore = useUserStore()
userStore.getdsSysList()
app.mount('#app')

17
vue-fastapi-frontend/src/store/modules/user.js

@ -4,6 +4,7 @@ import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'
import md5 from 'js-md5'
import cache from "@/plugins/cache.js";
import { datasourcetree } from "@/api/meta/metatask";
const useUserStore = defineStore(
@ -15,6 +16,7 @@ const useUserStore = defineStore(
name: '',
avatar: '',
roles: [],
dsSysList:[],
permissions: []
}),
actions: {
@ -34,6 +36,20 @@ const useUserStore = defineStore(
})
})
},
getdsSysList(){
return new Promise((resolve, reject) => {
datasourcetree()
.then(res => {
this.dsSysList = res.rows || [] // 确保为空时不报错
resolve(res)
})
.catch(error => {
this.dsSysList = [] // 请求失败也清空列表,避免残留
reject(error)
})
})
},
// 获取用户信息
getInfo() {
return new Promise((resolve, reject) => {
@ -58,6 +74,7 @@ const useUserStore = defineStore(
})
})
},
// 退出系统
logOut() {
return new Promise((resolve, reject) => {

507
vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue

@ -1,35 +1,81 @@
<template>
<el-dialog width="500px" append-to-body :title="isShow?'查看数据标准':isEdit ? '修改数据标准' : '新增数据标准'" v-model="visible" @close="handleClose">
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules">
<el-form-item label="标准编号" prop="stdNum">
<el-input v-model="formData.stdNum" :disabled="isEdit" placeholder="请输入标准编号" clearable />
<el-dialog
width="500px"
append-to-body
:title="isShow ? '查看数据标准' : isEdit ? '修改数据标准' : '新增数据标准'"
v-model="visible"
@close="handleClose"
>
<el-form
:model="formData"
ref="formRef"
label-width="120px"
:rules="formRules"
>
<el-form-item label="标准编号" prop="dataStdNo">
<el-input
v-model="formData.dataStdNo"
:disabled="isEdit || isShow"
placeholder="请输入标准编号"
clearable
/>
</el-form-item>
<el-form-item label="标准中文名" prop="stdName">
<el-input v-model="formData.stdName" placeholder="请输入标准中文名" clearable />
<el-form-item label="标准中文名" prop="dataStdCnName">
<el-input
v-model="formData.dataStdCnName"
:disabled="isShow"
placeholder="请输入标准中文名"
clearable
/>
</el-form-item>
<el-form-item label="标准英文名" prop="stdCode">
<el-input v-model="formData.stdCode" placeholder="请输入标准英文名" clearable />
<el-form-item label="标准英文名" prop="dataStdEngName">
<el-input
v-model="formData.dataStdEngName"
:disabled="isShow"
placeholder="请输入标准英文名"
clearable
/>
</el-form-item>
<el-form-item label="标准业务定义" prop="stdMenu">
<el-input v-model="formData.stdMenu" placeholder="请输入标准业务定义" clearable />
<el-form-item label="标准业务定义" prop="dataStdBusiDefn">
<el-input
v-model="formData.dataStdBusiDefn"
:disabled="isShow"
placeholder="请输入标准业务定义"
clearable
/>
</el-form-item>
<el-form-item label="标准类型" prop="stdType">
<el-select v-model="formData.stdType" placeholder="请输入标准类型">
<el-form-item label="标准类型" prop="dataStdType">
<el-select
v-model="formData.dataStdType"
:disabled="isShow"
placeholder="请选择标准类型"
>
<el-option label="基础数据" value="0" />
<el-option label="指标数据" value="1" />
</el-select>
</el-form-item>
<el-form-item label="标准来源" prop="stdSrc">
<el-select v-model="formData.stdSrc" placeholder="请选择标准来源">
</el-select>
</el-form-item>
<el-form-item label="标准来源" prop="dataStdSrc">
<el-select
v-model="formData.dataStdSrc"
:disabled="isShow"
placeholder="请选择标准来源"
>
<el-option label="行业标准" value="行业标准" />
<el-option label="自建标准" value="自建标准" />
</el-select>
</el-form-item>
<el-form-item label="数据类别" prop="dataClas">
<el-select v-model="formData.dataClas" placeholder="请选择数据类别">
</el-select>
</el-form-item>
<el-form-item label="数据类别" prop="dataClas">
<el-select
v-model="formData.dataClas"
:disabled="isShow"
placeholder="请选择数据类别"
>
<el-option label="日期类" value="日期类" />
<el-option label="文本类" value="文本类" />
<el-option label="数值类" value="数值类" />
@ -37,89 +83,109 @@
<el-option label="编码类" value="编码类" />
<el-option label="标志类" value="标志类" />
<el-option label="码值类" value="码值类" />
</el-select>
</el-form-item>
<el-form-item label="来源系统" prop="sourceSystem">
</el-select>
</el-form-item>
<el-form-item label="来源系统" prop="srcSys">
<el-select
v-model="formData.sourceSystem"
placeholder="请选择来源系统"
maxlength="30"
@change="dataChange"
>
<el-option
v-for="dict in dbResourceOldList"
:key="dict.id"
:label="dict.name"
:value="dict.name"
></el-option>
</el-select>
v-model="formData.srcSys"
:disabled="isShow"
placeholder="请选择来源系统"
@change="handleSystemChange"
>
<el-option
v-for="dict in dbResourceOldList"
:key="dict.id"
:label="dict.name"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="安全等级" prop="securityLevel">
<el-select v-model="formData.securityLevel" placeholder="请选择安全等级">
<el-option label="1" value="1" />
<el-option label="2" value="2" />
<el-option label="3" value="3" />
<el-option label="4" value="4" />
<el-select
v-model="formData.securityLevel"
:disabled="isShow"
placeholder="请选择安全等级"
>
<el-option label="1级" value="1" />
<el-option label="2级" value="2" />
<el-option label="3级" value="3" />
<el-option label="4级" value="4" />
</el-select>
</el-form-item>
<el-form-item label="代码编号" prop="codeNum">
<el-form-item label="代码编号" prop="cdId">
<el-input
v-model="formData.codeNum"
placeholder="请输入代码编号"
clearable
style="width: 80%;"
:disabled="true"
/>
<el-button
icon="Edit"
:disabled="single"
@click="codeVisible = true"
style="margin-left: 5px;"
v-hasPermi="['meta:metaSecurityCol:edit']"
></el-button>
</el-form-item>
<el-form-item label="业务认责部门" prop="bussDeptId">
<el-tree-select
v-model="formData.bussDeptId"
:data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择业务认责部门"
check-strictly />
</el-form-item>
<el-form-item label="业务认责人员" prop="bussUser">
<el-select v-model="formData.bussUser" placeholder="请选择业务认责人员">
v-model="formData.cdNo"
placeholder="代码编号"
clearable
style="width: 80%;"
:disabled="true"
/>
<el-button
icon="Edit"
:disabled="isShow"
@click="codeVisible = true"
style="margin-left: 5px;"
/>
</el-form-item>
<el-form-item label="业务认责部门" prop="dataStdBusiOwnershipDept">
<el-tree-select
v-model="formData.dataStdBusiOwnershipDept"
:data="deptOptions"
:props="{ value: 'label', label: 'label', children: 'children' }"
value-key="id"
:disabled="isShow"
placeholder="请选择业务认责部门"
check-strictly
/>
</el-form-item>
<el-form-item label="业务认责人员" prop="dataStdBusiOwnershipPrsn">
<el-select
v-model="formData.dataStdBusiOwnershipPrsn"
:disabled="isShow"
placeholder="请选择业务认责人员"
>
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="技术认责部门" prop="techDeptId">
<el-tree-select
v-model="formData.techDeptId"
:data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择技术认责部门"
check-strictly />
</el-form-item>
<el-form-item label="技术认责人员" prop="techUser">
<el-select v-model="formData.techUser" placeholder="技术认责人员">
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
/>
</el-select>
</el-form-item>
<el-form-item label="技术认责部门" prop="dataStdItOwnershipDept">
<el-tree-select
v-model="formData.dataStdItOwnershipDept"
:data="deptOptions"
:props="{ value: 'label', label: 'label', children: 'children' }"
value-key="id"
:disabled="isShow"
placeholder="请选择技术认责部门"
check-strictly
/>
</el-form-item>
<el-form-item label="技术认责人员" prop="dataStdItOwnershipPrsn">
<el-select
v-model="formData.dataStdItOwnershipPrsn"
:disabled="isShow"
placeholder="请选择技术认责人员"
>
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
></el-option>
</el-select>
</el-form-item>
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
/>
</el-select>
</el-form-item>
<!-- 底部按钮区域 -->
<el-row justify="center" style="margin-top: 20px;" v-if="!isShow">
<el-row justify="center" style="margin-top: 20px;" v-if="!isShow">
<el-col :span="4" style="padding-right: 10px;">
<el-button @click="handleClose" style="width: 100%" plain>取消</el-button>
</el-col>
@ -127,155 +193,152 @@
<el-button type="primary" @click="handleSubmit" style="width: 100%">保存</el-button>
</el-col>
</el-row>
</el-form>
<el-dialog title="选择代码" v-model="codeVisible" width="1000px">
<!-- 引入第二个页面组件 -->
<code-components ref="showCodeDialog" v-if="codeVisible" />
<template #footer >
<el-button
@click="codeCancel">取消</el-button>
<el-button
type="primary" @click="codeSave">确定</el-button>
<el-dialog title="选择代码" v-model="codeVisible" width="1000px" append-to-body>
<code-components ref="showCodeDialog" v-if="codeVisible" />
<template #footer>
<el-button @click="codeVisible = false">取消</el-button>
<el-button type="primary" @click="handleCodeSelect">确定</el-button>
</template>
</el-dialog>
</el-dialog>
</template>
<script setup>
import { ref, watch } from 'vue';
import { updateStdMain, addStdMain } from '@/api/datastd/std'; //
import { listUser, deptTreeSelect } from "@/api/system/user";
import codeComponents from '../../stdcode/codeComponents.vue';
import { ref, watch, computed } from 'vue'
import { ElMessage } from 'element-plus'
import { updateStdMain, addStdMain } from '@/api/datastd/std'
import { listUser, deptTreeSelect } from "@/api/system/user"
import codeComponents from '../../stdcode/codeComponents.vue'
const { proxy } = getCurrentInstance();
const { std_code_status,std_code_appr } = proxy.useDict("std_code_status","std_code_appr");
const { proxy } = getCurrentInstance()
const emit = defineEmits(['update:visible', 'refresh'])
const props = defineProps({
data: {
type: Object,
required: false,
},
isEdit: {
type: Boolean,
},
isShow: {
type: Boolean,
default:false
},
dbResourceOldList: {
type: Object,
},
visible: {
type: Boolean,
},
dbResourceOldList: {
type: Object,
},
});
//
const formRules = ref({
stdNum: [{ required: true, message: '请输入标准编号', trigger: 'blur' }],
stdType: [{ required: true, message: '请选择标准类型', trigger: 'change' }],
stdSrc: [{ required: true, message: '请选择标准来源', trigger: 'change' }],
dataClas: [{ required: true, message: '请选择数据类别', trigger: 'change' }],
bussDeptId: [{ required: true, message: '请选择业务认责部门', trigger: 'blur' }],
techDeptId: [{ required: true, message: '请选择技术认责部门', trigger: 'blur' }],
bussUser: [{ required: true, message: '请输入业务认责人', trigger: 'blur' }],
techUser: [{ required: true, message: '请输入技术认责人', trigger: 'blur' }],
});
const codeCancel = () => {
codeVisible.value = false;
};
const codeSave = () => {
const child = proxy.$refs.showCodeDialog;
const mapList=child.selections
if(mapList.length!=1){
proxy.$modal.msgWarning("请选择一条代码进行映射");
data: { type: Object, default: () => ({}) },
isEdit: { type: Boolean, default: false },
isShow: { type: Boolean, default: false },
visible: { type: Boolean, required: true },
dbResourceOldList: { type: Array, default: () => [] }
})
}else{
const mapCodeItem=child.selections[0]
//
formData.value.codeNum=mapCodeItem.codeNum
formData.value.codeId=mapCodeItem.id
const formData = ref({ ...props.data });
codeVisible.value = false;
//
watch(() => props.data, (newVal) => {
if (newVal) {
formData.value=props.data
}
}, { immediate: true })
proxy.$modal.msgSuccess("代码引用成功");
//
const formRules = ref({
dataStdNo: [{ required: true, message: '请输入标准编号', trigger: 'blur' }],
dataStdCnName: [{ required: true, message: '请输入标准中文名', trigger: 'blur' }],
dataStdType: [{ required: true, message: '请选择标准类型', trigger: 'change' }],
dataStdSrc: [{ required: true, message: '请选择标准来源', trigger: 'change' }],
dataClas: [{ required: true, message: '请选择数据类别', trigger: 'change' }],
dataStdBusiOwnershipDept: [{ required: true, message: '请选择业务认责部门', trigger: 'change' }],
dataStdItOwnershipDept: [{ required: true, message: '请选择技术认责部门', trigger: 'change' }]
})
}};
//
const visible = computed({
get: () => props.visible,
set: (val) => emit('update:visible', val)
})
const codeVisible = ref(false)
const deptOptions = ref([])
const userList = ref([])
const showSys = ref(false);
const codeVisible = ref(false);
const emit = defineEmits(['update:visible', 'refresh']);
const userList = ref([]);
const formData = ref({ ...props.data });
const visible = ref(props.visible); // 使 prop visible
function dataChange(data) {
// dbResourceOldList name
const selectedItem = props.dbResourceOldList.find(item => item.id === data);
if (selectedItem) {
// name formData.value.dbRName
formData.value.sysName = selectedItem.name;
} else {
// formData.value.dbRName
formData.value.sysName = '';
//
const initData = async () => {
try {
const [deptRes, userRes] = await Promise.all([
deptTreeSelect(),
listUser({ pageSize: 1000, pageNum: 1 })
])
deptOptions.value = deptRes.data
userList.value = userRes.rows
} catch (error) {
ElMessage.error('初始化数据失败')
console.error(error)
}
}
// props.visible local visible
watch(() => props.visible, (newVal) => {
visible.value = newVal;
formData.value = { ...props.data }
});
function getList() {
listUser({pageSize:1000,pageNum:1}).then(res => {
userList.value = res.rows;
});
};
const handleClose = () => {
emit('update:visible', false); //
};
const deptOptions = ref(undefined);
//
const handleSystemChange = (id) => {
const system = props.dbResourceOldList.find(item => item.id === id)
if (system) {
formData.value.sysName = system.name
}
}
function getDeptTree() {
deptTreeSelect().then(response => {
deptOptions.value = response.data;
});
};
function changeCodeType(data) {
if (data != "company") {
showSys.value = true;
formData.value.sysName = "";
formData.value.sysId = undefined;
} else {
showSys.value = false;
formData.value.sysName = "公司级";
formData.value.sysId = 10000;
//
const handleCodeSelect = () => {
const selectedCodes = proxy.$refs.showCodeDialog?.selections || []
if (selectedCodes.length !== 1) {
ElMessage.warning('请选择一条代码')
return
}
const code = selectedCodes[0]
formData.value.cdId = code.onum
formData.value.cdNo = code.cdNo || code.onum
codeVisible.value = false
ElMessage.success('代码选择成功')
}
getDeptTree();
getList();
//
const handleSubmit = () => {
const formRef = proxy.$refs.formRef;
formRef.validate((valid) => {
if (valid) {
const apiCall = props.isEdit ? updateStdMain(formData.value) : addStdMain(formData.value);
apiCall
.then((response) => {
if (response.success) {
emit('refresh');
handleClose();
} else {
proxy.$message.error(response.data || '操作失败,请稍后重试');
}
})
} else {
console.log('表单验证失败');
return false;
proxy.$refs.formRef.validate(async (valid) => {
if (!valid) return;
try {
// 使线
const submitData = { ...formData.value };
//
submitData.srcSys = Number(submitData.srcSys) || null;
submitData.beltDataStdContent = Number(submitData.beltDataStdContent) || null;
//
submitData.dataStdItOwnershipPrsn = submitData.dataStdItOwnershipPrsn || '';
submitData.dataStdBusiOwnershipPrsn = submitData.dataStdBusiOwnershipPrsn || '';
// API
const api = props.isEdit ? updateStdMain : addStdMain;
const res = await api(submitData);
if (res.code === 200) {
ElMessage.success(props.isEdit ? '修改成功' : '新增成功');
emit('refresh');
handleClose();
} else {
ElMessage.error(res.msg || '操作失败');
}
} catch (error) {
console.error('提交失败:', error);
ElMessage.error(`请求失败: ${error.message}`);
//
if (error.message.includes('cannot be null')) {
const column = error.message.match(/Column '(.*?)'/)[1];
ElMessage.warning(`字段 ${column} 不能为空`);
}
}
});
};
</script>
//
const handleClose = () => {
proxy.$refs.formRef.resetFields()
visible.value = false
}
//
initData()
</script>

112
vue-fastapi-frontend/src/views/datastd/main/index.vue

@ -172,10 +172,10 @@
<el-col :span="19">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="标准编号/名称">
<el-input v-model="queryParams.stdNum" placeholder="请输入标准编号" />
<el-input v-model="queryParams.dataStdNo" placeholder="请输入标准编号" />
</el-form-item>
<el-form-item label="业务定义">
<el-input v-model="queryParams.stdMenu" placeholder="请输入业务定义" />
<el-input v-model="queryParams.dataStdBusiDefn" placeholder="请输入业务定义" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
@ -235,19 +235,19 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="标准编号" prop="stdNum" width="150"></el-table-column>
<el-table-column label="标准英文名" prop="stdCode" width="150"></el-table-column>
<el-table-column label="标准中文名" prop="stdName" width="150"></el-table-column>
<el-table-column label="标准业务定义" prop="stdMenu" width="150"></el-table-column>
<el-table-column label="类型" prop="stdType" width="150">
<el-table-column label="标准编号" prop="dataStdNo" width="150"></el-table-column>
<el-table-column label="标准英文名" prop="dataStdEngName" width="150"></el-table-column>
<el-table-column label="标准中文名" prop="dataStdCnName" width="150"></el-table-column>
<el-table-column label="标准业务定义" prop="dataStdBusiDefn" width="150"></el-table-column>
<el-table-column label="类型" prop="dataStdType" width="150">
<template #default="scope">
<!-- 根据 dataClas 的值来显示不同颜色的标签 -->
<el-tag v-if="scope.row.stdType =='0'" type="primary">基础数据</el-tag>
<el-tag v-if="scope.row.dataStdType =='0'" type="primary">基础数据</el-tag>
<el-tag v-else type="warning">指标数据</el-tag>
</template>
</el-table-column><el-table-column label="" prop="stdSrc" width="150"></el-table-column>
</el-table-column><el-table-column label="" prop="dataStdSrc" width="150"></el-table-column>
<el-table-column label="数据类别" prop="dataClas" width="150"></el-table-column>
<el-table-column label="代码编号" prop="codeNum" width="150">
<el-table-column label="代码编号" prop="cdNo" width="150">
<template #default="scope">
<el-link
type="primary"
@ -255,20 +255,26 @@
@click="handleCodeClick(scope.row)"
style="cursor: pointer"
>
{{ scope.row.codeNum }}
{{ scope.row.cdNo }}
</el-link>
</template>
</el-table-column>
<el-table-column label="安全等级" prop="securityLevel" width="150"></el-table-column>
<el-table-column label="来源系统" prop="sourceSystem" width="150"></el-table-column>
<el-table-column label="业务认责部门" prop="bussDeptId" width="150"></el-table-column>
<el-table-column label="业务认责部门" prop="bussDeptId" width="150"></el-table-column>
<el-table-column label="业务认责部门" prop="bussDeptId" width="150"></el-table-column>
<el-table-column label="业务认责人员" prop="bussUser" width="150"></el-table-column>
<el-table-column label="技术认责部门" prop="techDeptId" width="150"></el-table-column>
<el-table-column label="技术认责人员" prop="techUser" width="150"></el-table-column>
<el-table-column label="来源系统" align="center" prop="srcSys">
<template #default="scope">
<span >
{{
getSrcSysName(scope.row.srcSys)
}}
</span>
</template>
</el-table-column> <el-table-column label="" prop="dataStdBusiOwnershipDept" width="150"></el-table-column>
<el-table-column label="业务认责人员" prop="dataStdBusiOwnershipPrsn" width="150"></el-table-column>
<el-table-column label="技术认责部门" prop="dataStdItOwnershipDept" width="150"></el-table-column>
<el-table-column label="技术认责人员" prop="dataStdItOwnershipPrsn" width="150"></el-table-column>
<!-- <el-table-column label="分类" prop="contentOnum" width="150"></el-table-column> -->
<el-table-column label="更新时间" prop="updateTime" width="180"></el-table-column>
<el-table-column label="更新时间" prop="updTime" width="180"></el-table-column>
<el-table-column label="操作" align="center" width="180">
<template #default="scope">
<el-button
@ -406,12 +412,16 @@ const handleTargetCatalogNodeClick = (data) => {
const directoryTableData = ref([])
const queryParams = ref({
stdNum: '',
stdMenu: '',
contentOnum:null,
dataStdNo: '',
dataStdBusiDefn: '',
beltDataStdContent:null,
pageNum: 1,
pageSize: 10,
});
const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id === id);
return match ? match.name : id;
};
const single = ref(true);
const multiple = ref(true);
const dialogVisible = ref(false);
@ -432,12 +442,12 @@ const handlePagination = (pageNum, pageSize) => {
};
//
const handleCodeClick = (row) => {
codeId.value=row.codeId
codeId.value=row.cdId
codeVisible.value = true;
};
const resetQuery = () => {
queryParams.value = { stdNum: '', stdMenu: '' , pageNum: 1,
queryParams.value = { dataStdNo: '', dataStdBusiDefn: '' , pageNum: 1,
pageSize: 10}
handleQuery()
}
@ -447,7 +457,7 @@ const handleQuery = () => {
};
const submitTree = async () => {
const response = await changeStdMainOum({id:ids.value.toString(),sysId:chooseOnumNum.value});
const response = await changeStdMainOum({onum:ids.value.toString(),beltDataStdContent:chooseOnumNum.value});
if (response.success){
treeVisible.value=false
getList();
@ -462,8 +472,8 @@ const submitTree = async () => {
const handleSelectionChange = (selection) => {
single.value = selection.length !== 1;
multiple.value = !selection.length;
ids.value = selection.map((item) => item.id);
stdNums.value = selection.map((item) => item.stdNum);
ids.value = selection.map((item) => item.onum);
stdNums.value = selection.map((item) => item.dataStdNo);
};
const setDirectoryTree = () => {
return getDirectoryTree({
@ -487,8 +497,8 @@ const getList = async () => {
loading.value = false;
};
const handleRemove = (row) => {
const idsToDelete = row.id ? [row.id] : ids.value;
const codesToDelete = row.stdNum ? [row.stdNum] : stdNums.value;
const idsToDelete = row.onum ? [row.onum] : ids.value;
const codesToDelete = row.dataStdNo ? [row.dataStdNo] : stdNums.value;
proxy.$modal
.confirm(
'是否确认删除标准编号为"' + codesToDelete.toString() + '"的数据项?'
@ -507,19 +517,29 @@ const dbResourceOldList = ref([]);
const handleAdd = () => {
isEdit.value = false;
selectedRow.value = {
stdType: "",
stdNum: "",
stdCode: "",
stdName: "",
stdMenu: "",
dataType: "",
stdCode: "",
bussDeptId: "",
bussUser: "",
techDeptId: "",
techUser: "",
securityLevel:"",
sourceSystem:""
//
onum: '',
dataStdNo: '',
dataStdCnName: '',
dataStdEngName: '',
dataStdType: '0',
dataStdBusiDefn: '',
dataStdSrc: '',
dataClas: '',
securityLevel: '1',
dataStdVest: '',
typicalFld: '',
//
srcSys: null,
cdId: '',
cdNo: '',
//
dataStdBusiOwnershipDept: '',
dataStdBusiOwnershipPrsn: '',
dataStdItOwnershipDept: '',
dataStdItOwnershipPrsn: '',
};
//
@ -527,7 +547,7 @@ const handleAdd = () => {
};
const handleEdit = (row) => {
const id = row.id ? row.id : ids.value.toString();
const id = row.onum ? row.onum : ids.value.toString();
getStdMain(id).then((response) => {
selectedRow.value = response.data;
isEdit.value = true;
@ -602,9 +622,9 @@ const activeName = ref('1')
const handleNodeClick = async (data) => {
if(data.contentOnum==1){
queryParams.value.contentOnum=null
queryParams.value.beltDataStdContent=null
}else{
queryParams.value.contentOnum=data.contentOnum
queryParams.value.beltDataStdContent=data.contentOnum
}
handleQuery();
@ -616,7 +636,7 @@ const handleCollect = (data, e) => {
e.stopPropagation()
addDirectoryCollection({
dataAstNo: String(data.dataAstNo),
userId: String(userStore.id),
userId: String(userStore.onum),
}).then(() => {
proxy.$modal.msgSuccess('收藏成功')
setDirectoryTree()

50
vue-fastapi-frontend/src/views/datastd/stdcode/codeComponents.vue

@ -35,11 +35,11 @@
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="标准代码编号" prop="codeNum">
<el-input v-model="queryParams.codeNum" placeholder="请输入标准代码编号" clearable style="width: 220px" />
<el-form-item label="标准代码编号" prop="cdNo">
<el-input v-model="queryParams.cdNo" placeholder="请输入标准代码编号" clearable style="width: 220px" />
</el-form-item>
<el-form-item label="标准代码值" prop="codeName">
<el-input v-model="queryParams.codeName" placeholder="请输入标准代码值" clearable style="width: 220px" />
<el-form-item label="标准代码值" prop="cdValCnMean">
<el-input v-model="queryParams.cdValCnMean" placeholder="请输入标准代码值" clearable style="width: 220px" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
@ -52,8 +52,8 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="代码归属" align="center" prop="sysName" />
<el-table-column label="标准代码编号" align="center" prop="codeNum" />
<el-table-column label="标准代码名称" align="center" prop="codeName" >
<el-table-column label="标准代码编号" align="center" prop="cdNo" />
<el-table-column label="标准代码名称" align="center" prop="cdValCnMean" >
<template #default="scope">
<el-link
type="primary"
@ -61,15 +61,15 @@
@click="handleCodeClick(scope.row)"
style="cursor: pointer"
>
{{ scope.row.codeName }}
{{ scope.row.cdValCnMean }}
</el-link>
</template>
</el-table-column>
<el-table-column label="代码状态" align="center" prop="codeStatus">
<el-table-column label="代码状态" align="center" prop="cdValStat">
<template #default="scope">
<dict-tag
:options="std_code_appr"
:value="scope.row.codeStatus"
:value="scope.row.cdValStat"
/>
</template>
</el-table-column>
@ -94,7 +94,7 @@
@click="handleMapCodeClick(scope.row)"
style="cursor: pointer"
>
<span v-if="!scope.row.codeMapName||scope.row.codeType=='company'">代码映射</span>
<span v-if="!scope.row.codeMapName||scope.row.cdType=='company'">代码映射</span>
<span v-else>{{ scope.row.codeMapName }}</span>
</el-link>
</template>
@ -144,9 +144,9 @@ const { proxy } = getCurrentInstance();
const { std_code_status,std_code_appr } = proxy.useDict("std_code_status","std_code_appr");
const queryParams = ref({
codeNum: '',
codeName: '',
codeType: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId:'code',
sysId: '',
@ -188,15 +188,15 @@ const handleNodeClick = (data) => {
const dbResourceOptions = ref(undefined);
const form = ref({
id: '',
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
sysId: undefined
});
const ids = ref([]);
const codeNums = ref([]);
const cdNos = ref([]);
//
const getList = async () => {
@ -237,9 +237,9 @@ defineExpose({
});
const resetQuery = () => {
queryParams.value = {
codeNum: '',
codeName: '',
codeType: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
sysName: '',
sysId: '',
pageNum: 1,
@ -252,10 +252,10 @@ const handleAdd = () => {
dialogTitle.value = "新增标准代码";
form.value = {
id: '',
codeNum: '',
codeName: '',
codeType: '',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
cdValStat: '',
sysName: '',
sysId: '',
};

99
vue-fastapi-frontend/src/views/datastd/stdcode/codeItem.vue

@ -4,15 +4,15 @@
<el-row :gutter="20">
<!-- 代码编号 -->
<el-col :span="8">
<el-form-item label="代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入代码编号" />
<el-form-item label="代码编号" prop="cdNo">
<el-input v-model="form.cdNo" placeholder="请输入代码编号" />
</el-form-item>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<el-form-item label="代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入代码名称" />
<el-form-item label="代码名称" prop="cdValCnMean">
<el-input v-model="form.cdValCnMean" placeholder="请输入代码名称" />
</el-form-item>
</el-col>
</el-row>
@ -20,9 +20,9 @@
<el-row :gutter="20">
<!-- 代码类型 -->
<el-col :span="8">
<el-form-item label="代码类型" prop="codeType">
<el-form-item label="代码类型" prop="cdType">
<el-select
v-model="form.codeType"
v-model="form.cdType"
placeholder="请选择代码类型"
maxlength="30"
@change="changeCodeType"
@ -39,9 +39,9 @@
<!-- 归属系统 -->
<el-col :span="8" v-show="showSys">
<el-form-item label="归属系统" prop="sysId">
<el-form-item label="归属系统" prop="srcSys">
<el-select
v-model="form.sysId"
v-model="form.srcSys"
placeholder="请选择归属系统"
maxlength="30"
@change="dataChange"
@ -66,9 +66,9 @@
>
<el-option
v-for="dict in companyist"
:key="dict.id"
:label="dict.codeName"
:value="dict.id"
:key="dict.onum"
:label="dict.cdValCnMean"
:value="dict.onum"
></el-option>
</el-select>
</el-form-item>
@ -79,9 +79,9 @@
<!-- 查询表单 -->
<!-- <div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-form-item label="代码值/名称" prop="cdNo">
<el-input
v-model="queryParams.codeNum"
v-model="queryParams.cdNo"
placeholder="请输入代码编号"
clearable
style="width: 220px"
@ -133,36 +133,36 @@
<el-table-column
label="代码值"
align="center"
prop="codeNum"
prop="cdNo"
:editable="true"
>
<template #default="scope">
<el-input
v-if="scope.row.isEditing"
v-model="scope.row.codeNum"
v-model="scope.row.cdNo"
size="small"
placeholder="请输入代码值"
@blur="handleBlur(scope.row)"
/>
<span v-else>{{ scope.row.codeNum }}</span>
<span v-else>{{ scope.row.cdNo }}</span>
</template>
</el-table-column>
<el-table-column
label="代码含义"
align="center"
prop="codeName"
prop="cdValCnMean"
:editable="true"
>
<template #default="scope">
<el-input
v-if="scope.row.isEditing"
v-model="scope.row.codeName"
v-model="scope.row.cdValCnMean"
size="small"
placeholder="请输入代码含义"
@blur="handleBlur(scope.row)"
/>
<span v-else>{{ scope.row.codeName }}</span>
<span v-else>{{ scope.row.cdValCnMean }}</span>
</template>
</el-table-column>
@ -179,8 +179,8 @@
@click="handleCodeClick(scope.row, scope.$index)"
style="cursor: pointer"
>
<span v-if="!scope.row.codeMapName">代码映射</span>
<span v-else>{{ scope.row.codeMapName }}</span>
<span v-if="!scope.row.codeMapId">代码映射</span>
<span v-else>{{ scope.row.codeMapCn }}</span>
</el-link>
</template>
</el-table-column>
@ -215,29 +215,27 @@ const props = defineProps({
});
const queryParams = ref({
codeNum: '',
parentId: props.rowData.id,
codeName: '',
codeType: '',
sysName: '',
cdNo: '',
parentId: props.rowData.onum,
cdValCnMean: '',
cdType: '',
classId: 'codeItem',
sysId: '',
srcSys: '',
pageNum: 1,
pageSize: 100
});
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
sysName: '',
onum: "",
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
classId: 'code',
codeMapId: '',
codeMapName: '',
codeMapNum: '',
sysId: undefined
srcSys: undefined
});
const handleCancel2 = () => {
mapVisible.value = false;
@ -251,32 +249,31 @@ const mapVisible = ref(false);
const multiple = ref(false);
function dataChange(data) {
// dbResourceOldList name
const selectedItem = props.dbResourceOldList.find(item => item.id === data);
const selectedItem = props.dbResourceOldList.find(item => item.onum === data);
if (selectedItem) {
// name form.value.dbRName
form.value.sysName = selectedItem.name;
} else {
// form.value.dbRName
form.value.sysName = '';
}
}
function mapChange(data) {
const selectedItem = companyist.value.find(item => item.id === data);
const selectedItem = companyist.value.find(item => item.onum === data);
console.log("selectmap",selectedItem,data)
if (selectedItem) {
// name form.value.dbRName
form.value.codeMapName = selectedItem.codeName;
form.value.codeMapNum = selectedItem.codeNum;
form.value.codeMapName = selectedItem.cdValCnMean;
form.value.codeMapNum = selectedItem.cdNo;
} else {
// form.value.codeMapName
form.value.codeMapName = '';
}
}
//
if (props.rowData.id) {
if (props.rowData.onum) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;
@ -311,8 +308,8 @@ const getcompanyList = async () => {
companyist.value = response.rows;
};
const formRules = reactive({
codeNum: [{ required: true, message: "请输入代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入代码名称", trigger: "blur" }]
cdNo: [{ required: true, message: "请输入代码编号", trigger: "blur" }],
cdValCnMean: [{ required: true, message: "请输入代码名称", trigger: "blur" }]
});
const handleCodeClick = (row,index) => {
selectedRow.value=row
@ -335,9 +332,9 @@ const handleSave2 =async () => {
}else{
const mapCodeItem=child.selections[0]
if (selectedRow.value) {
tableData.value[selectedRowIndex.value].codeMapId = mapCodeItem.id;
tableData.value[selectedRowIndex.value].codeMapName = mapCodeItem.codeName;
tableData.value[selectedRowIndex.value].codeMapNum = mapCodeItem.codeNum;
tableData.value[selectedRowIndex.value].codeMapId = mapCodeItem.onum;
tableData.value[selectedRowIndex.value].codeMapName = mapCodeItem.cdValCnMean;
tableData.value[selectedRowIndex.value].codeMapNum = mapCodeItem.cdNo;
tableData.value = [...tableData.value]; // This ensures reactivity is triggered
@ -353,7 +350,7 @@ const handleSave = async () => {
try {
let response;
if (props.rowData.id) {
if (props.rowData.onum) {
// ID updateStdCode
response = await updateStdCode(params);
if (response.success) {
@ -418,17 +415,15 @@ const handleRemove = () => {
function changeCodeType(data) {
if (data != "company") {
showSys.value = true;
form.value.sysName = "";
form.value.sysId = undefined;
form.value.srcSys = undefined;
} else {
showSys.value = false;
form.value.sysName = "公司级";
form.value.sysId = 10000;
form.value.srcSys = 10000;
}
}
//
const handleAdd = () => {
const newRow = {id:'',classId: 'codeItem',parentId: props.rowData.id,codeNum: '', codeName: '', codeMapId: '',
const newRow = {onum:'',classId: 'codeItem',parentId: props.rowData.onum,cdNo: '', cdValCnMean: '', codeMapId: '',
codeMapName: '',
codeMapNum: '', isEditing: true };
tableData.value.push(newRow);

48
vue-fastapi-frontend/src/views/datastd/stdcode/codeItemCommon.vue

@ -3,18 +3,21 @@
<div class="form-container">
<el-row :gutter="20">
<!-- 代码归属 -->
<el-col :span="8">
<span class="info-text">代码归属: {{ form.sysName || '暂无代码归属' }}</span>
</el-col>
<el-col :span="8">
<span class="info-text" v-if="form.cdType === 'company'">代码归属 :公司级</span>
<span class="info-text" v-else-if="form.cdType === 'sys'">
代码归属 :{{ getSrcSysName(form.srcSys) }}
</span>
</el-col>
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
<span class="info-text">代码编号: {{ form.cdNo || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
<span class="info-text">代码名称: {{ form.cdValCnMean || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
@ -23,9 +26,9 @@
<!-- 查询表单 -->
<div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-form-item label="代码值/名称" prop="cdNo">
<el-input
v-model="queryParams.codeNum"
v-model="queryParams.cdNo"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
@ -54,7 +57,7 @@
<el-table-column
label="代码值"
align="center"
prop="codeNum"
prop="cdNo"
:editable="true"
>
@ -63,7 +66,7 @@
<el-table-column
label="代码含义"
align="center"
prop="codeName"
prop="cdValCnMean"
:editable="true"
>
@ -84,28 +87,35 @@ const props = defineProps({
codeId: {
type: Object,
required: false
},
dbResourceOldList: {
type: Object,
required: false
}
});
console.log(props.codeNum)
console.log(props.cdNo)
const queryParams = ref({
codeNum: '',
cdNo: '',
parentId: props.codeId,
codeName: '',
codeType: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
pageNum: 1,
pageSize: 100
});
const getSrcSysName = (id) => {
const match = props.dbResourceOldList.find(item => item.id === id);
return match ? match.name : id;
};
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
classId: 'code',
codeMapId: '',
@ -124,7 +134,7 @@ const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;

129
vue-fastapi-frontend/src/views/datastd/stdcode/codeMap.vue

@ -9,18 +9,21 @@
<div class="form-container">
<el-row :gutter="20">
<!-- 代码归属 -->
<el-col :span="8">
<span class="info-text">代码归属: {{ form.sysName || '暂无代码归属' }}</span>
</el-col>
<el-col :span="8">
<span class="info-text" v-if="form.cdType === 'company'">代码归属 :公司级</span>
<span class="info-text" v-else-if="form.cdType === 'sys'">
代码归属 :{{ getSrcSysName(form.srcSys) }}
</span>
</el-col>
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
<span class="info-text">代码编号: {{ form.cdNo || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
<span class="info-text">代码名称: {{ form.cdValCnMean || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
@ -40,69 +43,24 @@
style="width: 100%"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="源系统"
align="center"
prop="targetSysName"
>
</el-table-column>
<el-table-column
label="系统级代码编号"
align="center"
prop="targetCodeNum"
>
</el-table-column>
<el-table-column
label="系统级代码名称"
align="center"
prop="targetCodeName"
>
</el-table-column>
<el-table-column
label="系统级代码"
align="center"
prop="targetCodeNumItem"
>
</el-table-column>
<el-table-column
label="系统级代码含义"
align="center"
prop="targetCodeNameItem"
>
</el-table-column>
<el-table-column
label="公司级代码名称"
align="center"
prop="resourceCodeNum"
>
</el-table-column>
<el-table-column
label="公司级代码编号"
align="center"
prop="resourceCodeName"
>
</el-table-column>
<el-table-column
label="公司级代码"
align="center"
prop="resourceCodeNumItem"
>
</el-table-column>
<el-table-column
label="公司级代码含义"
align="center"
prop="resourceCodeNameItem"
>
</el-table-column>
<el-table-column label="源系统" align="center" prop="targetSysName">
<template #default="scope">
<span >
{{
getSrcSysName(scope.row.targetSysName)
}}
</span>
</template>
</el-table-column>
<el-table-column label="系统级代码编号" align="center" prop="targetCodeNum" />
<el-table-column label="系统级代码名称" align="center" prop="targetCodeName" />
<el-table-column label="系统级代码" align="center" prop="targetCodeNumItem" />
<el-table-column label="系统级代码含义" align="center" prop="targetCodeNameItem" />
<el-table-column label="公司级代码编号" align="center" prop="resourceCodeNum" />
<el-table-column label="公司级代码名称" align="center" prop="resourceCodeName" />
<el-table-column label="公司级代码" align="center" prop="resourceCodeNumItem" />
<el-table-column label="公司级代码含义" align="center" prop="resourceCodeNameItem" />
</el-table>
</el-tab-pane>
@ -115,7 +73,10 @@ import treeNodeg6 from "./treeNodeg6.vue";
const { proxy } = getCurrentInstance();
const { std_code_status } = proxy.useDict("std_code_status");
import useUserStore from '@/store/modules/user'; //
const userStore = useUserStore(); //
const dsSysList = userStore.dsSysList; // 访
const props = defineProps({
codeId: {
type: Object,
@ -123,13 +84,16 @@ const props = defineProps({
},
});
const getSrcSysName = (id) => {
const match = dsSysList.find(item => item.id === id);
return match ? match.name : id;
};
const queryParams = ref({
codeNum: '',
cdNo: '',
parentId: props.codeId,
codeName: '',
codeType: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
@ -139,16 +103,15 @@ const queryParams = ref({
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
classId: 'code',
codeMapId: '',
codeMapName: '',
codeMapNum: '',
sysId: undefined
});
const activeName = ref("1"); //
const tableData = ref([]);
@ -161,7 +124,7 @@ const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;
@ -232,11 +195,11 @@ onMounted(() => {
nextTick(() => {
getStdCode(props.codeId).then(response => {
form.value = response.data;
queryParams.value.codeType=form.value.codeType
mockData.value.variableValue=form.value.codeType == "sys"?"系统级":"公司级"
mockData.value.name=form.value.codeName
mockData.value.label=form.value.codeNum
getStdCodeMap(form.value.id).then(response => {
queryParams.value.cdType=form.value.cdType
mockData.value.variableValue=form.value.cdType == "sys"?"系统级":"公司级"
mockData.value.name=form.value.cdValCnMean
mockData.value.label=form.value.cdNo
getStdCodeMap(form.value.onum).then(response => {
mockData.value.children = response.data.children;
tableData.value = response.data.tableData;
if (treeGraph.value) {

22
vue-fastapi-frontend/src/views/datastd/stdcode/codeStdMap.vue

@ -1,6 +1,6 @@
<template>
<el-tabs v-model="activeName" style="margin-top: 8px">
<el-tab-pane label="图谱" name="1">
<el-tab-pane label="图谱1" name="1">
<treeNodeg6 ref="treeGraph" :mockData="mockData" />
</el-tab-pane>
<el-tab-pane label="表格" name="2">
@ -12,14 +12,14 @@
style="width: 100%"
>
<el-table-column label="代码编号" align="center" prop="codeNum" />
<el-table-column label="代码名称" align="center" prop="codeName" />
<el-table-column label="引用标准编号" align="center" prop="stdNum" />
<el-table-column label="引用标准英文名" align="center" prop="stdCode" />
<el-table-column label="引用标准中文名" align="center" prop="stdName" />
<el-table-column label="引用字典编号" align="center" prop="dictNum" />
<el-table-column label="引用字典英文名" align="center" prop="dictCode" />
<el-table-column label="引用字典中文名" align="center" prop="dictName" />
<el-table-column label="代码编号" align="center" prop="cdNo" />
<el-table-column label="代码名称" align="center" prop="cdValCnMean" />
<el-table-column label="引用标准编号" align="center" prop="dataStdNo" />
<el-table-column label="引用标准英文名" align="center" prop="dataStdNo" />
<el-table-column label="引用标准中文名" align="center" prop="dataStdCnName" />
<el-table-column label="引用字典编号" align="center" prop="dataDictNo" />
<el-table-column label="引用字典英文名" align="center" prop="dataDictEngName" />
<el-table-column label="引用字典中文名" align="center" prop="dataDictCnName" />
</el-table>
</el-tab-pane>
</el-tabs>
@ -46,9 +46,9 @@ const props = defineProps({
// mocked data
const mockData = ref({
id: "g1",
name: props.rowData.codeName,
name: props.rowData.cdValCnMean,
count: 123456,
label: props.rowData.codeNum,
label: props.rowData.cdNo,
rate: 1.0,
status: "G",
variableValue: "代码",

93
vue-fastapi-frontend/src/views/datastd/stdcode/index.vue

@ -35,11 +35,11 @@
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="标准代码编号" prop="codeNum">
<el-input v-model="queryParams.codeNum" placeholder="请输入标准代码编号" clearable style="width: 220px" />
<el-form-item label="标准代码编号" prop="cdNo">
<el-input v-model="queryParams.cdNo" placeholder="请输入标准代码编号" clearable style="width: 220px" />
</el-form-item>
<el-form-item label="标准代码值" prop="codeName">
<el-input v-model="queryParams.codeName" placeholder="请输入标准代码值" clearable style="width: 220px" />
<el-form-item label="标准代码值" prop="cdValCnMean">
<el-input v-model="queryParams.cdValCnMean" placeholder="请输入标准代码值" clearable style="width: 220px" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleQuery">搜索</el-button>
@ -83,9 +83,17 @@
<el-table v-loading="loading" :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="代码归属" align="center" prop="sysName" />
<el-table-column label="标准代码编号" align="center" prop="codeNum" />
<el-table-column label="标准代码名称" align="center" prop="codeName" >
<el-table-column label="代码归属" align="center" prop="cdType">
<template #default="scope">
<span v-if="scope.row.cdType === 'company'">公司级</span>
<span v-else-if="scope.row.cdType === 'sys'">
{{
getSrcSysName(scope.row.srcSys)
}}
</span>
</template>
</el-table-column> <el-table-column label="标准代码编号" align="center" prop="cdNo" />
<el-table-column label="标准代码名称" align="center" prop="cdValCnMean" >
<template #default="scope">
<el-link
type="primary"
@ -93,15 +101,15 @@
@click="handleCodeClick(scope.row)"
style="cursor: pointer"
>
{{ scope.row.codeName }}
{{ scope.row.cdValCnMean }}
</el-link>
</template>
</el-table-column>
<el-table-column label="代码状态" align="center" prop="codeStatus">
<el-table-column label="代码状态" align="center" prop="cdValStat">
<template #default="scope">
<dict-tag
:options="std_code_appr"
:value="scope.row.codeStatus"
:value="scope.row.cdValStat"
/>
</template>
</el-table-column>
@ -126,7 +134,7 @@
@click="handleMapCodeClick(scope.row)"
style="cursor: pointer"
>
<span v-if="!scope.row.codeMapName||scope.row.codeType=='company'">代码映射</span>
<span v-if="!scope.row.codeMapName||scope.row.cdType=='company'">代码映射</span>
<span v-else>{{ scope.row.codeMapName }}</span>
</el-link>
</template>
@ -156,7 +164,7 @@
</el-dialog>
<el-dialog v-model="codeVisible" width="1000px">
<!-- 引入第二个页面组件 -->
<code-item-common ref="showCodeDialog" v-if="codeVisible" :codeId="codeMapId"/>
<code-item-common ref="showCodeDialog" v-if="codeVisible" :codeId="codeMapId" :dbResourceOldList="dbResourceOldList"/>
</el-dialog>
<el-dialog v-model="mapVisible" width="1200px">
@ -186,12 +194,12 @@ const { proxy } = getCurrentInstance();
const { std_code_status,std_code_appr } = proxy.useDict("std_code_status","std_code_appr");
const queryParams = ref({
codeNum: '',
codeName: '',
codeType: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId:'code',
sysId: '',
srcSys: '',
pageNum: 1,
pageSize: 10
});
@ -211,16 +219,21 @@ const handlePagination = (pageNum, pageSize) => {
queryParams.value.pageSize = pageSize;
handleQuery();
};
const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id === id);
return match ? match.name : id;
};
const filterNode = (value, data) => {
if (!value) return true;
return data.name.indexOf(value) !== -1;
};
const handleNodeClick = (data) => {
if(data==9999){
queryParams.value.sysId =undefined;
queryParams.value.srcSys =undefined;
}else{
queryParams.value.sysId = data.id;
queryParams.value.srcSys = data.id;
}
@ -230,15 +243,15 @@ const handleNodeClick = (data) => {
const dbResourceOptions = ref(undefined);
const form = ref({
id: '',
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
sysId: undefined
srcSys: undefined
});
const ids = ref([]);
const codeNums = ref([]);
const cdNos = ref([]);
//
const getList = async () => {
@ -255,12 +268,12 @@ const codeMapId = ref(null);
//
const handleCodeClick = (row) => {
codeMapId.value=row.id
codeMapId.value=row.onum
codeVisible.value = true;
};
const handleMapCodeClick = (row) => {
codeMapId.value=row.id
codeMapId.value=row.onum
mapVisible.value = true;
};
@ -270,8 +283,8 @@ const handleMapCodeStdClick = (row) => {
};
function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id);
codeNums.value = selection.map(item => item.codeNum);
ids.value = selection.map(item => item.onum);
cdNos.value = selection.map(item => item.cdNo);
single.value = ids.value.length !== 1;
multiple.value = !ids.value.length > 0;
}
@ -283,11 +296,11 @@ const handleQuery = () => {
const resetQuery = () => {
queryParams.value = {
codeNum: '',
codeName: '',
codeType: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
sysName: '',
sysId: '',
srcSys: '',
pageNum: 1,
pageSize: 10
};
@ -298,19 +311,19 @@ const handleAdd = () => {
dialogTitle.value = "新增标准代码";
form.value = {
id: '',
codeNum: '',
codeName: '',
codeType: '',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: '',
cdValStat: '',
sysName: '',
sysId: '',
srcSys: '',
};
selectedRow.value={...form.value}
dialogVisible2.value = true;
};
const handleEdit = (row) => {
const id = row.id ?row.id: ids.value.toString()
const id = row.onum ?row.onum: ids.value.toString()
dialogTitle.value = "编辑标准代码";
getStdCode(id).then(response => {
form.value = response.data;
@ -321,8 +334,8 @@ const handleEdit = (row) => {
};
const handleRemove = (row) => {
const idsToDelete = row.id ? [row.id] : ids.value;
const codesToDelete = row.codeNum ? [row.codeNum] : codeNums.value;
const idsToDelete = row.onum ? [row.onum] : ids.value;
const codesToDelete = row.cdNo ? [row.cdNo] : cdNos.value;
proxy.$modal.confirm('是否确认删除ID为"' + codesToDelete.toString() + '"的数据项?').then(function () {
return deleteStdCode(idsToDelete.toString());
}).then((res) => {

91
vue-fastapi-frontend/src/views/datastd/stddict/AddEditForm.vue

@ -1,9 +1,9 @@
<template>
<el-dialog width="500px" append-to-body :title="isEdit ? '修改数据字典' : '新增数据字典'" v-model="visible" @close="handleClose">
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules">
<el-form-item label="字典归属" prop="dictLevel">
<el-form-item label="字典归属" prop="dataDictVest">
<el-select
v-model="formData.dictLevel"
v-model="formData.dataDictVest"
placeholder="请选择字典归属"
maxlength="30"
@change="changeCodeType"
@ -18,7 +18,7 @@
</el-form-item>
<el-form-item label="来源系统" prop="sysId" v-show="showSys">
<el-select
v-model="formData.sysId"
v-model="formData.srcSys"
placeholder="请选择来源系统"
maxlength="30"
@change="dataChange"
@ -37,69 +37,32 @@
<el-option label="指标数据" value="1" />
</el-select>
</el-form-item>
<el-form-item label="数据字典编号" prop="dictNum">
<el-input v-model="formData.dictNum" :disabled=isEdit placeholder="请输入数据字典编号" clearable />
<el-form-item label="数据字典编号" prop="dataDictNo">
<el-input v-model="formData.dataDictNo" :disabled=isEdit placeholder="请输入数据字典编号" clearable />
</el-form-item>
<el-form-item label="字典英文名" prop="dictCode">
<el-input v-model="formData.dictCode" placeholder="请输入字典英文名" clearable />
<el-form-item label="字典英文名" prop="dataDictEngName">
<el-input v-model="formData.dataDictEngName" placeholder="请输入字典英文名" clearable />
</el-form-item>
<el-form-item label="字典中文名" prop="dictName">
<el-input v-model="formData.dictName" placeholder="请输入字典中文名" clearable />
<el-form-item label="字典中文名" prop="dataDictCnName">
<el-input v-model="formData.dataDictCnName" placeholder="请输入字典中文名" clearable />
</el-form-item>
<el-form-item label="字典业务定义" prop="dictMenu">
<el-input v-model="formData.dictMenu" placeholder="请输入业务定义" clearable />
<el-form-item label="字典业务定义" prop="dataDictBusiMean">
<el-input v-model="formData.dataDictBusiMean" placeholder="请输入业务定义" clearable />
</el-form-item>
<el-form-item label="数据类型" prop="dataType">
<el-input v-model="formData.dataType" placeholder="请输入数据类型" clearable />
<el-form-item label="数据类型" prop="dataDictDataType">
<el-input v-model="formData.dataDictDataType" placeholder="请输入数据类型" clearable />
</el-form-item>
<el-form-item label="数据标准" prop="stdCode">
<el-select v-model="formData.stdCode" placeholder="数据标准">
<el-form-item label="数据标准" prop="dataStdNo">
<el-select v-model="formData.dataStdNo" placeholder="数据标准">
<el-option
v-for="dict in stdList"
:key="dict.id"
:label="dict.stdNum+'-'+dict.stdCode"
:value="dict.id"
:key="dict.onum"
:label="dict.dataStdNo+'-'+dict.dataStdEngName+'-'+dict.dataStdCnName"
:value="dict.dataStdNo"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="业务认责部门" prop="bussDeptId">
<el-tree-select
v-model="formData.bussDeptId"
:data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择业务认责部门"
check-strictly />
</el-form-item>
<el-form-item label="业务认责人员" prop="bussUser">
<el-select v-model="formData.bussUser" placeholder="请选择业务认责人员">
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="技术认责部门" prop="techDeptId">
<el-tree-select
v-model="formData.techDeptId"
:data="deptOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择技术认责部门"
check-strictly />
</el-form-item>
<el-form-item label="技术认责人员" prop="techUser">
<el-select v-model="formData.techUser" placeholder="技术认责人员">
<el-option
v-for="dict in userList"
:key="dict.id"
:label="dict.userName"
:value="dict.userName"
></el-option>
</el-select>
</el-form-item>
<!-- 底部按钮区域 -->
<el-row justify="center" style="margin-top: 20px;">
@ -144,13 +107,13 @@ const props = defineProps({
});
//
const formRules = ref({
dictLevel: [{ required: true, message: '请选择字典归属', trigger: 'blur' }],
dataDictVest: [{ required: true, message: '请选择字典归属', trigger: 'blur' }],
dictType: [{ required: true, message: '请选择数据字典类型', trigger: 'blur' }],
bussDeptId: [{ required: true, message: '请选择业务认责部门', trigger: 'blur' }],
techDeptId: [{ required: true, message: '请选择技术认责部门', trigger: 'blur' }],
dictNum: [{ required: true, message: '请输入数据字典编号', trigger: 'blur' }],
bussUser: [{ required: true, message: '请输入业务认责人', trigger: 'blur' }],
techUser: [{ required: true, message: '请输入技术认责人', trigger: 'blur' }],
dataStdBusiOwnershipDept: [{ required: true, message: '请选择业务认责部门', trigger: 'blur' }],
dataStdItOwnershipDept: [{ required: true, message: '请选择技术认责部门', trigger: 'blur' }],
dataDictNo: [{ required: true, message: '请输入数据字典编号', trigger: 'blur' }],
dataStdBusiOwnershipPrsn: [{ required: true, message: '请输入业务认责人', trigger: 'blur' }],
dataStdItOwnershipPrsn: [{ required: true, message: '请输入技术认责人', trigger: 'blur' }],
});
const showSys = ref(false);
const emit = defineEmits(['update:visible', 'refresh']);
@ -193,11 +156,11 @@ function changeCodeType(data) {
if (data != "company") {
showSys.value = true;
formData.value.sysName = "";
formData.value.sysId = undefined;
formData.value.srcSys = undefined;
} else {
showSys.value = false;
formData.value.sysName = "公司级";
formData.value.sysId = 10000;
formData.value.srcSys = 10000;
}
}
getDeptTree();

60
vue-fastapi-frontend/src/views/datastd/stddict/codeItem.vue

@ -4,15 +4,15 @@
<el-row :gutter="20">
<!-- 标准代码编号 -->
<el-col :span="8">
<el-form-item label="标准代码编号" prop="codeNum">
<el-input v-model="form.codeNum" placeholder="请输入标准代码编号" />
<el-form-item label="标准代码编号" prop="cdNo">
<el-input v-model="form.cdNo" placeholder="请输入标准代码编号" />
</el-form-item>
</el-col>
<!-- 标准代码名称 -->
<el-col :span="8">
<el-form-item label="标准代码名称" prop="codeName">
<el-input v-model="form.codeName" placeholder="请输入标准代码名称" />
<el-form-item label="标准代码名称" prop="cdValCnMean">
<el-input v-model="form.cdValCnMean" placeholder="请输入标准代码名称" />
</el-form-item>
</el-col>
</el-row>
@ -20,9 +20,9 @@
<el-row :gutter="20">
<!-- 标准代码类型 -->
<el-col :span="8">
<el-form-item label="标准代码类型" prop="codeType">
<el-form-item label="标准代码类型" prop="cdType">
<el-select
v-model="form.codeType"
v-model="form.cdType"
placeholder="请选择标准代码类型"
maxlength="30"
@change="changeCodeType"
@ -67,7 +67,7 @@
<el-option
v-for="dict in companyist"
:key="dict.id"
:label="dict.codeName"
:label="dict.cdValCnMean"
:value="dict.id"
></el-option>
</el-select>
@ -79,9 +79,9 @@
<!-- 查询表单 -->
<!-- <div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-form-item label="代码值/名称" prop="cdNo">
<el-input
v-model="queryParams.codeNum"
v-model="queryParams.cdNo"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
@ -133,36 +133,36 @@
<el-table-column
label="代码值"
align="center"
prop="codeNum"
prop="cdNo"
:editable="true"
>
<template #default="scope">
<el-input
v-if="scope.row.isEditing"
v-model="scope.row.codeNum"
v-model="scope.row.cdNo"
size="small"
placeholder="请输入代码值"
@blur="handleBlur(scope.row)"
/>
<span v-else>{{ scope.row.codeNum }}</span>
<span v-else>{{ scope.row.cdNo }}</span>
</template>
</el-table-column>
<el-table-column
label="代码含义"
align="center"
prop="codeName"
prop="cdValCnMean"
:editable="true"
>
<template #default="scope">
<el-input
v-if="scope.row.isEditing"
v-model="scope.row.codeName"
v-model="scope.row.cdValCnMean"
size="small"
placeholder="请输入代码含义"
@blur="handleBlur(scope.row)"
/>
<span v-else>{{ scope.row.codeName }}</span>
<span v-else>{{ scope.row.cdValCnMean }}</span>
</template>
</el-table-column>
@ -215,10 +215,10 @@ const props = defineProps({
});
const queryParams = ref({
codeNum: '',
cdNo: '',
parentId: props.rowData.id,
codeName: '',
codeType: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
@ -228,10 +228,10 @@ const queryParams = ref({
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
classId: 'code',
codeMapId: '',
@ -266,8 +266,8 @@ function mapChange(data) {
console.log("selectmap",selectedItem,data)
if (selectedItem) {
// name form.value.dbRName
form.value.codeMapName = selectedItem.codeName;
form.value.codeMapNum = selectedItem.codeNum;
form.value.codeMapName = selectedItem.cdValCnMean;
form.value.codeMapNum = selectedItem.cdNo;
} else {
// form.value.codeMapName
form.value.codeMapName = '';
@ -276,7 +276,7 @@ function mapChange(data) {
//
if (props.rowData.id) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;
@ -312,8 +312,8 @@ const getcompanyList = async () => {
console.log(companyist.value,"companyCodeList")
};
const formRules = reactive({
codeNum: [{ required: true, message: "请输入标准代码编号", trigger: "blur" }],
codeName: [{ required: true, message: "请输入标准代码名称", trigger: "blur" }]
cdNo: [{ required: true, message: "请输入标准代码编号", trigger: "blur" }],
cdValCnMean: [{ required: true, message: "请输入标准代码名称", trigger: "blur" }]
});
const handleCodeClick = (row,index) => {
selectedRow.value=row
@ -337,8 +337,8 @@ const handleSave2 =async () => {
const mapCodeItem=child.selections[0]
if (selectedRow.value) {
tableData.value[selectedRowIndex.value].codeMapId = mapCodeItem.id;
tableData.value[selectedRowIndex.value].codeMapName = mapCodeItem.codeName;
tableData.value[selectedRowIndex.value].codeMapNum = mapCodeItem.codeNum;
tableData.value[selectedRowIndex.value].codeMapName = mapCodeItem.cdValCnMean;
tableData.value[selectedRowIndex.value].codeMapNum = mapCodeItem.cdNo;
tableData.value = [...tableData.value]; // This ensures reactivity is triggered
@ -407,7 +407,7 @@ function changeCodeType(data) {
}
//
const handleAdd = () => {
const newRow = {id:'',classId: 'codeItem',parentId: props.rowData.id,codeNum: '', codeName: '', codeMapId: '',
const newRow = {id:'',classId: 'codeItem',parentId: props.rowData.id,cdNo: '', cdValCnMean: '', codeMapId: '',
codeMapName: '',
codeMapNum: '', isEditing: true };
tableData.value.push(newRow);

28
vue-fastapi-frontend/src/views/datastd/stddict/codeItemCommon.vue

@ -9,12 +9,12 @@
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
<span class="info-text">代码编号: {{ form.cdNo || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
<span class="info-text">代码名称: {{ form.cdValCnMean || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
@ -23,9 +23,9 @@
<!-- 查询表单 -->
<div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-form-item label="代码值/名称" prop="cdNo">
<el-input
v-model="queryParams.codeNum"
v-model="queryParams.cdNo"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
@ -54,7 +54,7 @@
<el-table-column
label="代码值"
align="center"
prop="codeNum"
prop="cdNo"
:editable="true"
>
@ -63,7 +63,7 @@
<el-table-column
label="代码含义"
align="center"
prop="codeName"
prop="cdValCnMean"
:editable="true"
>
@ -89,10 +89,10 @@ const props = defineProps({
});
const queryParams = ref({
codeNum: '',
cdNo: '',
parentId: props.codeId,
codeName: '',
codeType: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
@ -102,10 +102,10 @@ const queryParams = ref({
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
classId: 'code',
codeMapId: '',
@ -124,7 +124,7 @@ const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;

116
vue-fastapi-frontend/src/views/datastd/stddict/index.vue

@ -34,9 +34,9 @@
<el-col :span="20" :xs="24">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="字典编号" prop="dictNum">
<el-form-item label="字典编号" prop="dataDictNo">
<el-input
v-model="queryParams.dictNum"
v-model="queryParams.dataDictNo"
placeholder="请输入标准字典编号"
clearable
style="width: 220px"
@ -93,13 +93,15 @@
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="归属" align="center" width="200">
<template #default="{ row }">
{{
row.dictLevel === "company"
? "公司级"
: "系统级(" + row.sysName + ")"
}}
</template>
<template #default="scope">
<span v-if="scope.row.dataDictVest === 'company'">公司级</span>
<span v-else-if="scope.row.dataDictVest === 'sys'">
{{
getSrcSysName(scope.row.srcSys)
}}
</span>
</template>
</el-table-column>
<el-table-column label="类型" align="center">
<template #default="{ row }">
@ -111,44 +113,44 @@
label="字典编号"
width="150"
align="center"
prop="dictNum"
prop="dataDictNo"
/>
<el-table-column
label="字典英文名"
width="120"
align="center"
prop="dictCode"
prop="dataDictEngName"
/>
<el-table-column
label="字典中文名"
width="120"
align="center"
prop="dictName"
prop="dataDictCnName"
/>
<el-table-column
label="字典业务定义"
width="120"
align="center"
prop="dictMenu"
prop="dataDictBusiMean"
/>
<el-table-column label="数据类型" align="center" prop="dataType" />
<el-table-column label="数据标准" align="center" prop="stdCode" >
<el-table-column label="数据类型" align="center" prop="dataDictDataType" />
<el-table-column label="数据标准" align="center" prop="dataStdNo" >
<template #default="{ row }">
<el-link
type="primary"
:underline="true"
@click="handleStdClick(row.stdCode)"
@click="handleStdClick(row.dataStdNo)"
style="cursor: pointer"
>
<span >{{transIdtoCode(row.stdCode)}}</span>
<span >{{row.dataStdNo}}</span>
</el-link>
</template>
</el-table-column>
<el-table-column label="字典状态" align="center" prop="dictStatus">
<el-table-column label="字典状态" align="center" prop="dataDictStat">
<template #default="scope">
<dict-tag
:options="std_code_appr"
:value="scope.row.dictStatus"
:value="scope.row.dataDictStat"
/>
</template>
</el-table-column>
@ -156,37 +158,37 @@
label="业务认责部门"
width="120"
align="center"
prop="bussDeptName"
prop="dataStdBusiOwnershipDept"
/>
<el-table-column
label="业务认责人员"
width="120"
align="center"
prop="bussUser"
prop="dataStdBusiOwnershipPrsn"
/>
<el-table-column
label="技术认责部门"
width="120"
align="center"
prop="techDeptName"
prop="dataStdItOwnershipDept"
/>
<el-table-column
label="技术认责人员"
width="120"
align="center"
prop="techUser"
prop="dataStdItOwnershipPrsn"
/>
<el-table-column
label="更新者"
width="120"
align="center"
prop="updateBy"
prop="updPrsn"
/>
<el-table-column
label="更新时间"
width="120"
align="center"
prop="updateTime"
prop="updTime"
/>
<el-table-column label="操作" align="center" width="180">
<template #default="scope">
@ -254,8 +256,8 @@ const { std_code_status, std_code_appr } = proxy.useDict(
);
const queryParams = ref({
dictNum: "",
dictName: "",
dataDictNo: "",
dataDictCnName: "",
dictType: "",
sysName: "",
classId: "dict",
@ -264,7 +266,7 @@ const queryParams = ref({
pageSize: 10,
});
const queryStd = ref({
stdNum: "",
dataStdNo: "",
});
const single = ref(true);
const multiple = ref(true);
@ -280,10 +282,14 @@ const total = ref(0);
const loading = ref(false);
const stdVisible = ref(false);
const ids = ref([]);
const codeNums = ref([]);
const cdNos = ref([]);
const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id == id);
return match ? "系统级:"+ match.name : id;
};
const dbResourceOptions = ref([]);
const handleStdClick = (id) => {
const handleStdClick = (code) => {
var id =transCodetoId(code)
getStdMain(id).then((response) => {
stdRow.value = response.data;
stdVisible.value = true;
@ -295,9 +301,10 @@ const handlePagination = (pageNum, pageSize) => {
queryParams.value.pageSize = pageSize;
handleQuery();
};
const transIdtoCode = (stdCode) => {
const match = stdList.value.find(item => item.id === stdCode);
return match ? match.stdNum : '';
const transCodetoId = (dataStdNo) => {
const match = stdList.value.find(item => item.dataStdNo === dataStdNo);
return match ? match.onum : '';
};
const filterNode = (value, data) => {
if (!value) return true;
@ -305,15 +312,16 @@ const filterNode = (value, data) => {
};
const handleNodeClick = (data) => {
queryParams.value.sysId = data.id === 9999 ? undefined : data.id;
queryParams.value.srcSys = data.id === 99999||data.id === 10000 ? undefined : data.id;
queryParams.value.dataDictVest=data.id === 10000 ? "company":"sys"
handleQuery();
};
const handleSelectionChange = (selection) => {
single.value = selection.length !== 1;
multiple.value = !selection.length;
ids.value = selection.map((item) => item.id);
codeNums.value = selection.map((item) => item.dictNum);
ids.value = selection.map((item) => item.onum);
cdNos.value = selection.map((item) => item.dataDictNo);
};
const getList = async () => {
@ -336,8 +344,8 @@ const handleQuery = () => {
const resetQuery = () => {
queryParams.value = {
dictNum: "",
dictName: "",
dataDictNo: "",
dataDictCnName: "",
dictType: "",
sysName: "",
sysId: undefined,
@ -348,8 +356,8 @@ const resetQuery = () => {
};
const handleRemove = (row) => {
const idsToDelete = row.id ? [row.id] : ids.value;
const codesToDelete = row.codeNum ? [row.codeNum] : codeNums.value;
const idsToDelete = row.onum ? [row.onum] : ids.value;
const codesToDelete = row.cdNo ? [row.cdNo] : cdNos.value;
proxy.$modal
.confirm(
'是否确认删除字典编号为"' + codesToDelete.toString() + '"的数据项?'
@ -359,7 +367,7 @@ const handleRemove = (row) => {
})
.then(() => {
handleQuery();
proxy.$modal.msgSuccess("删除成功");
proxy.$modal.msgSuccess("提交删除审批成功");
})
.catch(() => {});
};
@ -369,20 +377,20 @@ const handleAdd = () => {
console.log("update:visible", 111);
isEdit.value = false;
selectedRow.value = {
dictLevel: "company",
dataDictVest: "company",
sysId: 10000,
sysName: "公司级",
dictType: "",
dictNum: "",
dictCode: "",
dictName: "",
dictMenu: "",
dataType: "",
stdCode: "",
bussDeptId: "",
bussUser: "",
techDeptId: "",
techUser: "",
dataDictNo: "",
dataDictEngName: "",
dataDictCnName: "",
dataDictBusiMean: "",
dataDictDataType: "",
dataStdNo: "",
dataStdBusiOwnershipDept: "",
dataStdBusiOwnershipPrsn: "",
dataStdItOwnershipDept: "",
dataStdItOwnershipPrsn: "",
};
//
@ -390,7 +398,7 @@ const handleAdd = () => {
};
const handleEdit = (row) => {
const id = row.id ? row.id : ids.value.toString();
const id = row.onum ? row.onum : ids.value.toString();
getStdDict(id).then((response) => {
selectedRow.value = response.data;
isEdit.value = true;

57
vue-fastapi-frontend/src/views/system/flow/codeItemCommon.vue

@ -3,18 +3,21 @@
<div class="form-container">
<el-row :gutter="20">
<!-- 代码归属 -->
<el-col :span="8">
<span class="info-text">代码归属: {{ form.sysName || '暂无代码归属' }}</span>
</el-col>
<el-col :span="8">
<span class="info-text" v-if="form.cdType === 'company'">代码归属 :公司级</span>
<span class="info-text" v-else-if="form.cdType === 'sys'">
代码归属 :{{ getSrcSysName(form.srcSys) }}
</span>
</el-col>
<!-- 代码编号 -->
<el-col :span="8">
<span class="info-text">代码编号: {{ form.codeNum || '暂无代码编号' }}</span>
<span class="info-text">代码编号: {{ form.cdNo || '暂无代码编号' }}</span>
</el-col>
<!-- 代码名称 -->
<el-col :span="8">
<span class="info-text">代码名称: {{ form.codeName || '暂无代码名称' }}</span>
<span class="info-text">代码名称: {{ form.cdValCnMean || '暂无代码名称' }}</span>
</el-col>
</el-row>
</div>
@ -23,9 +26,9 @@
<!-- 查询表单 -->
<div class="query-form-container">
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="代码值/名称" prop="codeNum">
<el-form-item label="代码值/名称" prop="cdNo">
<el-input
v-model="queryParams.codeNum"
v-model="queryParams.cdNo"
placeholder="请输入标准代码编号"
clearable
style="width: 220px"
@ -55,7 +58,7 @@
<el-table-column
label="代码值"
align="center"
prop="codeNum"
prop="cdNo"
:editable="true"
>
@ -64,7 +67,7 @@
<el-table-column
label="代码含义"
align="center"
prop="codeName"
prop="cdValCnMean"
:editable="true"
>
@ -84,7 +87,10 @@ import { listStdCodeApprById,getStdCodeAppr} from "@/api/datastd/std"; // 更新
const { proxy } = getCurrentInstance();
const { std_code_status } = proxy.useDict("std_code_status");
import useUserStore from '@/store/modules/user'; //
const userStore = useUserStore(); //
const dsSysList = userStore.dsSysList; // 访
const props = defineProps({
codeId: {
type: Object,
@ -92,12 +98,27 @@ const props = defineProps({
}
});
console.log(props.codeNum)
const getSrcSysName = (id) => {
if (!id) return '';
const getName = (val) => {
const match = dsSysList.find(item => item.id == val.trim());
return match ? match.name : val;
};
if (typeof id === 'string' && id.includes('==>')) {
const [oldId, newId] = id.split('==>');
return `${getName(oldId)} ==> ${getName(newId)}`;
}
return getName(id);
};
const queryParams = ref({
codeNum: '',
cdNo: '',
parentId: props.codeId,
codeName: '',
codeType: '',
cdValCnMean: '',
cdType: '',
sysName: '',
classId: 'codeItem',
sysId: '',
@ -107,10 +128,10 @@ const queryParams = ref({
const form = ref({
id: "",
codeNum: '',
codeName: '',
codeType: 'company',
codeStatus: '',
cdNo: '',
cdValCnMean: '',
cdType: 'company',
cdValStat: '',
sysName: '',
classId: 'code',
codeMapId: '',
@ -129,7 +150,7 @@ const multiple = ref(false);
//
if (props.codeId) {
form.value = { ...props.rowData };
if (form.value.codeType == "sys") {
if (form.value.cdType == "sys") {
showSys.value = true;
} else {
showSys.value = false;

18
vue-fastapi-frontend/src/views/system/flow/dataStdCodeAppr.vue

@ -12,9 +12,9 @@
<el-table-column label="归属" align="center" width="200">
<template #default="{ row }">
{{
row.dictLevel === 'company'
row.dataDictVest === 'company'
? '公司级'
: '系统级(' + row.sysName + ')'
: '系统级(' + getSrcSysName(row.srcSys) + ')'
}}
</template>
</el-table-column>
@ -27,8 +27,8 @@
<el-table-column label="代码归属" align="center" prop="sysName" />
<el-table-column label="标准代码编号" align="center" prop="codeNum" />
<el-table-column label="标准代码名称" align="center" prop="codeName" />
<el-table-column label="标准代码编号" align="center" prop="cdNo" />
<el-table-column label="标准代码名称" align="center" prop="cdValCnMean" />
<el-table-column label="变更类型" align="center">
<template #default="{ row }">
@ -45,7 +45,7 @@
<!-- 查看 操作列固定右侧 -->
<el-table-column fixed="right" label="操作" width="100" align="center">
<template #default="{ row }">
<el-button text type="primary" @click="handleView(row.id)">
<el-button text type="primary" @click="handleView(row.onum)">
查看
</el-button>
</template>
@ -74,7 +74,10 @@
import { ref, watch } from 'vue';
import { listStdCodeAppr,} from '@/api/datastd/std';
import codeItemCommon from './codeItemCommon.vue'; //
import useUserStore from '@/store/modules/user'; //
const userStore = useUserStore(); //
const dsSysList = userStore.dsSysList; // 访
const props = defineProps({
flowId: {
type: String,
@ -85,7 +88,10 @@ const props = defineProps({
required: true
}
});
const getSrcSysName = (id) => {
const match = dsSysList.find(item => item.id == id);
return match ? match.name : id;
};
//
function tableRowClassName({ row }) {
switch (row.changeType) {

140
vue-fastapi-frontend/src/views/system/flow/dataStdDictAppr.vue

@ -12,7 +12,7 @@
<el-table-column label="归属" align="center" width="200">
<template #default="{ row }">
{{
row.dictLevel === 'company'
row.dataDictVest === 'company'
? '公司级'
: '系统级(' + row.sysName + ')'
}}
@ -25,15 +25,15 @@
</template>
</el-table-column>
<el-table-column label="字典编号" width="150" align="center" prop="dictNum" />
<el-table-column label="字典英文名" width="120" align="center" prop="dictCode" />
<el-table-column label="字典中文名" width="120" align="center" prop="dictName" />
<el-table-column label="字典业务定义" width="120" align="center" prop="dictMenu" />
<el-table-column label="数据类型" align="center" prop="dataType" />
<el-table-column label="字典编号" width="150" align="center" prop="dataDictNo" />
<el-table-column label="字典英文名" width="120" align="center" prop="dataDictEngName" />
<el-table-column label="字典中文名" width="120" align="center" prop="dataDictCnName" />
<el-table-column label="字典业务定义" width="120" align="center" prop="dataDictBusiMean" />
<el-table-column label="数据类型" align="center" prop="dataDictDataType" />
<el-table-column label="数据标准" align="center" prop="stdCode">
<el-table-column label="数据标准" align="center" prop="dataStdNo">
<template #default="{ row }">
<span>{{ transIdtoCode(row.stdCode) }}</span>
<span>{{row.dataStdNo }}</span>
</template>
</el-table-column>
@ -52,7 +52,7 @@
<!-- 查看 操作列固定右侧 -->
<el-table-column fixed="right" label="操作" width="100" align="center">
<template #default="{ row }">
<el-button text type="primary" @click="handleView(row.id)">
<el-button text type="primary" @click="handleView(row.onum)">
查看
</el-button>
</template>
@ -71,14 +71,14 @@
<!-- 第一行3 -->
<el-row gutter="20">
<el-col :span="6">
<el-form-item prop="dictLevel">
<el-form-item prop="dataDictVest">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dictLevel) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictVest) }">
字典归属
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dictLevel) }">
{{ formatValue(formData.dictLevel === 'company' ? '公司级' : '系统级(' + formData.sysName + ')') }}
<span :class="{ 'changed-value': isChanged(formData.dataDictVest) }">
{{ formatValue(formData.dataDictVest === 'company' ? '公司级' : '系统级(' + formData.sysName + ')') }}
</span>
</el-form-item>
</el-col>
@ -111,38 +111,38 @@
<!-- 第二行3 -->
<el-row gutter="20">
<el-col :span="6">
<el-form-item prop="dictNum">
<el-form-item prop="dataDictNo">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dictNum) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictNo) }">
数据字典编号
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dictNum) }">
{{ formatValue(formData.dictNum) }}
<span :class="{ 'changed-value': isChanged(formData.dataDictNo) }">
{{ formatValue(formData.dataDictNo) }}
</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="dictCode">
<el-form-item prop="dataDictEngName">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dictCode) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictEngName) }">
字典英文名
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dictCode) }">
{{ formatValue(formData.dictCode) }}
<span :class="{ 'changed-value': isChanged(formData.dataDictEngName) }">
{{ formatValue(formData.dataDictEngName) }}
</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="dictName">
<el-form-item prop="dataDictCnName">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dictName) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictCnName) }">
字典中文名
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dictName) }">
{{ formatValue(formData.dictName) }}
<span :class="{ 'changed-value': isChanged(formData.dataDictCnName) }">
{{ formatValue(formData.dataDictCnName) }}
</span>
</el-form-item>
</el-col>
@ -151,99 +151,45 @@
<!-- 第三行4 -->
<el-row gutter="20">
<el-col :span="6">
<el-form-item prop="dictMenu">
<el-form-item prop="dataDictBusiMean">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dictMenu) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictBusiMean) }">
字典业务定义
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dictMenu) }">
{{ formatValue(formData.dictMenu) }}
<span :class="{ 'changed-value': isChanged(formData.dataDictBusiMean) }">
{{ formatValue(formData.dataDictBusiMean) }}
</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="dataType">
<el-form-item prop="dataDictDataType">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.dataType) }">
<span :class="{ 'changed-label': isChanged(formData.dataDictDataType) }">
数据类型
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.dataType) }">
{{ formatValue(formData.dataType) }}
<span :class="{ 'changed-value': isChanged(formData.dataDictDataType) }">
{{ formatValue(formData.dataDictDataType) }}
</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="stdCode">
<el-form-item prop="dataStdNo">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdCode) }">
<span :class="{ 'changed-label': isChanged(formData.dataStdNo) }">
数据标准
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdCode) }">
{{ formatValue(transIdtoCode(formData.stdCode)) }}
<span :class="{ 'changed-value': isChanged(formData.dataStdNo) }">
{{ formatValue(formData.dataStdNo) }}
</span>
</el-form-item>
</el-col>
</el-row>
<!-- 第四行2 -->
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="bussDeptName">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.bussDeptName) }">
业务认责部门
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.bussDeptName) }">
{{ formatValue(formData.bussDeptName) }}
</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="bussUser">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.bussUser) }">
业务认责人员
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.bussUser) }">
{{ formatValue(formData.bussUser) }}
</span>
</el-form-item>
</el-col>
</el-row>
<!-- 第五行2 -->
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="techDeptName">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.techDeptName) }">
技术认责部门
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.techDeptName) }">
{{ formatValue(formData.techDeptName) }}
</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="techUser">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.techUser) }">
技术认责人员
</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.techUser) }">
{{ formatValue(formData.techUser) }}
</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
@ -286,7 +232,7 @@ function tableRowClassName({ row }) {
}
const stdList = ref([]);
const queryStd = ref({
stdNum: "",
dataStdNo: "",
});
const isChanged = (val) => !!val && typeof val === 'string' && val.includes('==>');
const formatValue = (val) => {
@ -299,9 +245,9 @@ const formatValue = (val) => {
}
const loading = ref(false);
const tableData = ref([]);
const transIdtoCode = (stdCode) => {
const match = stdList.value.find(item => item.id === stdCode);
return match ? match.stdNum : '';
const transIdtoCode = (dataStdNo) => {
const match = stdList.value.find(item => item.onum === dataStdNo);
return match ? match.dataStdNo : '';
};
const changeTypeMap = {
add: '新增',
@ -364,7 +310,7 @@ const handleView = async (id) => {
try {
const res = await getStdDictAppr(id);
const data = res.data || {};
data.stdType = stdTypeMap[data.stdType] || data.stdType;
data.dataStdType = stdTypeMap[data.dataStdType] || data.dataStdType;
data.dataClas = dataClasMap[data.dataClas] || data.dataClas;
formData.value = data;
formVisible.value = true;

110
vue-fastapi-frontend/src/views/system/flow/dataStdMainAppr.vue

@ -7,18 +7,25 @@
:row-class-name="tableRowClassName"
>
<el-table-column prop="stdNum" label="标准编号" align="center" />
<el-table-column prop="stdCode" label="英文名" align="center" />
<el-table-column prop="stdName" label="中文名" align="center" />
<el-table-column label="类型" prop="stdType" width="150">
<el-table-column prop="dataStdNo" label="标准编号" align="center" />
<el-table-column prop="dataStdNo" label="英文名" align="center" />
<el-table-column prop="dataStdCnName" label="中文名" align="center" />
<el-table-column label="类型" prop="dataStdType" width="150">
<template #default="scope">
<el-tag v-if="scope.row.stdType == '0'" type="primary">基础数据</el-tag>
<el-tag v-if="scope.row.dataStdType == '0'" type="primary">基础数据</el-tag>
<el-tag v-else type="warning">指标数据</el-tag>
</template>
</el-table-column>
<el-table-column prop="securityLevel" label="安全等级" align="center" />
<el-table-column prop="sourceSystem" label="来源系统" align="center" />
<el-table-column prop="codeNum" label="代码编号" align="center" />
<el-table-column label="来源系统" align="center" prop="srcSys">
<template #default="scope">
<span >
{{
getSrcSysName(scope.row.srcSys)
}}
</span>
</template>
</el-table-column> <el-table-column prop="cdNo" label="代码编号" align="center" />
<el-table-column label="变更类型" align="center">
<template #default="{ row }">
{{ changeTypeMap[row.changeType] || row.changeType }}
@ -31,7 +38,7 @@
</el-table-column>
<el-table-column label="操作" width="100" align="center">
<template #default="scope">
<el-button @click="handleView(scope.row.id)" size="small" type="primary">查看详情</el-button>
<el-button @click="handleView(scope.row.onum)" size="small" type="primary">查看详情</el-button>
</template>
</el-table-column>
</el-table>
@ -42,27 +49,27 @@
<!-- 第一行3 -->
<el-row gutter="20">
<el-col :span="6">
<el-form-item prop="stdNum">
<el-form-item prop="dataStdNo">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdNum) }">标准编号</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdNo) }">标准编号</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdNum) }">{{ formatValue(formData.stdNum) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdNo) }">{{ formatValue(formData.dataStdNo) }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="stdName">
<el-form-item prop="dataStdCnName">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdName) }">标准中文名</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdCnName) }">标准中文名</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdName) }">{{ formatValue(formData.stdName) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdCnName) }">{{ formatValue(formData.dataStdCnName) }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="stdCode">
<el-form-item prop="dataStdNo">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdCode) }">标准英文名</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdNo) }">标准英文名</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdCode) }">{{ formatValue(formData.stdCode) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdNo) }">{{ formatValue(formData.dataStdNo) }}</span>
</el-form-item>
</el-col>
</el-row>
@ -70,19 +77,19 @@
<!-- 第二行3 -->
<el-row gutter="20">
<el-col :span="6">
<el-form-item prop="stdMenu">
<el-form-item prop="dataStdBusiDefn">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdMenu) }">标准业务定义</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdBusiDefn) }">标准业务定义</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdMenu) }">{{ formatValue(formData.stdMenu) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdBusiDefn) }">{{ formatValue(formData.dataStdBusiDefn) }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="stdType">
<el-form-item prop="dataStdType">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.stdType) }">标准类型</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdType) }">标准类型</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.stdType) }">{{ formatValue(stdTypeMap[formData.stdType] || formData.stdType) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdType) }">{{ formatValue(stdTypeMap[formData.dataStdType] || formData.dataStdType) }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
@ -106,11 +113,11 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="sourceSystem">
<el-form-item prop="srcSys">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.sourceSystem) }">来源系统</span>
<span :class="{ 'changed-label': isChanged(formData.srcSys) }">来源系统</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.sourceSystem) }">{{ formatValue(formData.sourceSystem) }}</span>
<span :class="{ 'changed-value': isChanged(formData.srcSys) }">{{ formatSrcValue(formData.srcSys) }}</span>
</el-form-item>
</el-col>
<el-col :span="6">
@ -122,11 +129,11 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item prop="codeNum">
<el-form-item prop="cdNo">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.codeNum) }">代码编号</span>
<span :class="{ 'changed-label': isChanged(formData.cdNo) }">代码编号</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.codeNum) }">{{ formatValue(formData.codeNum) }}</span>
<span :class="{ 'changed-value': isChanged(formData.cdNo) }">{{ formatValue(formData.cdNo) }}</span>
</el-form-item>
</el-col>
</el-row>
@ -134,19 +141,19 @@
<!-- 第四行2 -->
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="bussDeptId">
<el-form-item prop="dataStdBusiOwnershipDept">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.bussDeptId) }">业务认责部门</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdBusiOwnershipDept) }">业务认责部门</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.bussDeptId) }">{{ formatValue(formData.bussDeptId) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdBusiOwnershipDept) }">{{ formatValue(formData.dataStdBusiOwnershipDept) }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="bussUser">
<el-form-item prop="dataStdBusiOwnershipPrsn">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.bussUser) }">业务认责人员</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdBusiOwnershipPrsn) }">业务认责人员</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.bussUser) }">{{ formatValue(formData.bussUser) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdBusiOwnershipPrsn) }">{{ formatValue(formData.dataStdBusiOwnershipPrsn) }}</span>
</el-form-item>
</el-col>
</el-row>
@ -154,19 +161,19 @@
<!-- 第五行2 -->
<el-row gutter="20">
<el-col :span="12">
<el-form-item prop="techDeptId">
<el-form-item prop="dataStdItOwnershipDept">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.techDeptId) }">技术认责部门</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdItOwnershipDept) }">技术认责部门</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.techDeptId) }">{{ formatValue(formData.techDeptId) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdItOwnershipDept) }">{{ formatValue(formData.dataStdItOwnershipDept) }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="techUser">
<el-form-item prop="dataStdItOwnershipPrsn">
<template #label>
<span :class="{ 'changed-label': isChanged(formData.techUser) }">技术认责人员</span>
<span :class="{ 'changed-label': isChanged(formData.dataStdItOwnershipPrsn) }">技术认责人员</span>
</template>
<span :class="{ 'changed-value': isChanged(formData.techUser) }">{{ formatValue(formData.techUser) }}</span>
<span :class="{ 'changed-value': isChanged(formData.dataStdItOwnershipPrsn) }">{{ formatValue(formData.dataStdItOwnershipPrsn) }}</span>
</el-form-item>
</el-col>
</el-row>
@ -180,7 +187,10 @@
<script setup>
import { ref, watch } from 'vue';
import { listStdMainAppr, getStdMainAppr } from '@/api/datastd/std';
import useUserStore from '@/store/modules/user'; //
const userStore = useUserStore(); //
const dsSysList = userStore.dsSysList; // 访
const props = defineProps({
flowId: {
type: String,
@ -192,6 +202,10 @@ const props = defineProps({
}
});
const getSrcSysName = (id) => {
const match = dsSysList.find(item => item.id == id);
return match ? match.name : id;
};
const isChanged = (val) => typeof val === 'string' && val.includes('==>')
const formatValue = (val) => {
if (!val) return ''
@ -201,6 +215,18 @@ const formatValue = (val) => {
}
return val
}
const formatSrcValue = (val) => {
if (!val) return ''
if (val) {
const strVal = val.toString();
if(!strVal.includes('==>')){
return `${getSrcSysName(strVal).trim()} `
}
const [oldVal, newVal] = strVal.split('==>');
return `${getSrcSysName(oldVal).trim()} ==> ${getSrcSysName(newVal)}`
}
return val
}
const loading = ref(false);
const tableData = ref([]);
function tableRowClassName({ row }) {
@ -274,7 +300,7 @@ const handleView = async (id) => {
try {
const res = await getStdMainAppr(id);
const data = res.data || {};
data.stdType = stdTypeMap[data.stdType] || data.stdType;
data.dataStdType = stdTypeMap[data.dataStdType] || data.dataStdType;
data.dataClas = dataClasMap[data.dataClas] || data.dataClas;
formData.value = data;
formVisible.value = true;

Loading…
Cancel
Save