diff --git a/vue-fastapi-backend/module_admin/controller/datastd_controller.py b/vue-fastapi-backend/module_admin/controller/datastd_controller.py
index c3789d9..a27c742 100644
--- a/vue-fastapi-backend/module_admin/controller/datastd_controller.py
+++ b/vue-fastapi-backend/module_admin/controller/datastd_controller.py
@@ -639,7 +639,7 @@ async def get_std_main_appr_list(
)
async def get_std_main_select_list(
request: Request,
- main_page_query: DataStdMainModel = Depends(DataStdMainModel),
+ main_page_query: DataStdMainPageQueryModel = Depends(DataStdMainPageQueryModel.as_query), # 关键
query_db: AsyncSession = Depends(get_db),
):
main_query_result = await DataStdService.get_std_main_list_all(query_db, main_page_query)
@@ -811,8 +811,10 @@ async def get_code_map_list2(
request: Request,
id: str,
query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+
):
- code_page_query_result = await DataStdService.get_code_map_list2(request,query_db, id)
+ code_page_query_result = await DataStdService.get_code_map_list2(request,query_db, id,current_user)
logger.info('获取列配置列表成功')
return ResponseUtil.success(data=code_page_query_result)
@datastdController.get(
diff --git a/vue-fastapi-backend/module_admin/dao/datastd_dao.py b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
index b0519f7..6b9d6a0 100644
--- a/vue-fastapi-backend/module_admin/dao/datastd_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
@@ -518,6 +518,20 @@ class DataStdDao:
)
).scalars().all()
return List
+ @classmethod
+ async def get_data_main_list_by_info(cls, db: AsyncSession, query_object: DataStdMain):
+ stmt = select(DataStdMain)
+
+ # 动态拼接条件
+ if query_object.data_std_no:
+ stmt = stmt.where(DataStdMain.data_std_no == query_object.data_std_no)
+
+ if query_object.company_level_data_std_no:
+ stmt = stmt.where(DataStdMain.company_level_data_std_no == query_object.company_level_data_std_no)
+
+ result = await db.execute(stmt)
+ return result.scalars().all()
+
@classmethod
async def get_meta_field_list_by_onum(cls, db: AsyncSession, onum: str):
@@ -1045,6 +1059,10 @@ class DataStdDao:
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.company_level_data_std_no:
+ filters.append(DataStdMain.company_level_data_std_no == query_object.company_level_data_std_no)
+ if query_object.data_std_vest:
+ filters.append(DataStdMain.data_std_vest == query_object.data_std_vest)
if query_object.cd_id:
filters.append(DataStdMain.cd_id == query_object.cd_id)
if query_object.data_std_type:
diff --git a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
index b0e85dc..10eaf5a 100644
--- a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
@@ -164,6 +164,7 @@ class DataStdMain(Base):
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='典型字段')
+ company_level_data_std_no = Column(String(50), default=None, comment='所属公司级数据标准编号')
class DataStdMainAppr(Base):
@@ -200,4 +201,5 @@ class DataStdMainAppr(Base):
oldInstId = Column(String(50), default=None, comment='原始正式id')
compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
approStatus = Column(String(10), default=None,
- comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+ comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+ company_level_data_std_no = Column(String(50), default=None, comment='所属公司级数据标准编号')
diff --git a/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py b/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
index 79b9e0f..7198cd0 100644
--- a/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
+++ b/vue-fastapi-backend/module_admin/entity/vo/datastd_vo.py
@@ -130,6 +130,7 @@ class DataStdMainModel(BaseModel):
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='典型字段')
+ company_level_data_std_no: Optional[str] = Field(default=None, description='公司级数据标准编号')
@as_query
diff --git a/vue-fastapi-backend/module_admin/service/datastd_service.py b/vue-fastapi-backend/module_admin/service/datastd_service.py
index 52b02a0..d915740 100644
--- a/vue-fastapi-backend/module_admin/service/datastd_service.py
+++ b/vue-fastapi-backend/module_admin/service/datastd_service.py
@@ -1240,7 +1240,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
model.std_status="1"
- model.belt_data_std_content=2
+ if not model.belt_data_std_content or model.belt_data_std_content == 1:
+ model.belt_data_std_content = 2
await DataStdDao.add_std_main(query_db, model)
return CrudResponseModel(is_success=True, message='新增标准成功')
@@ -1261,7 +1262,8 @@ class DataStdService:
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")
model.onum=str(uuid.uuid4())
model.std_status="1"
- model.belt_data_std_content=2
+ if model.belt_data_std_content is None or model.belt_data_std_content == 1:
+ model.belt_data_std_content = 2
# 将 DataStdMainModel 转换为 DataStdMainApprModel,保留字段原始名
apprModel = DataStdMainApprModel(**model.model_dump(exclude_unset=True, by_alias=True))
apprModel.changeType="add"
@@ -1608,9 +1610,32 @@ class DataStdService:
# "children": children
# }
@classmethod
- async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str):
+ async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str,current_user: CurrentUserModel):
check_model = DataStdDictModel()
+ table_data = [] # 存储表格数据
+ children = [] # 存储图谱数据
dataStdNo = await DataStdDao.get_std_main_by_id(query_db, id)
+ if dataStdNo.data_std_vest == 'company':
+ check_data_std = DataStdMainModel()
+ check_data_std.company_level_data_std_no=dataStdNo.data_std_no
+ data_tree_result = await MetataskService.get_data_source_tree( request,current_user)
+ sys_map = {str(item.id): item.name for item in data_tree_result}
+ main_query_result= await DataStdDao.get_data_main_list_by_info(query_db, check_data_std)
+ if main_query_result:
+ for main in main_query_result:
+ sys_name = sys_map.get(str(main.src_sys), str(main.src_sys)) # 找不到时就用id
+ sys_main_node = {
+ "id": f"dict_{main.onum}",
+ "name": main.data_std_cn_name,
+ "label": main.data_std_eng_name,
+ "rate": 1.0,
+ "status": "G",
+ "variableValue": "系统级标准:"+sys_name,
+
+ "variableUp": True,
+ "children": [],
+ }
+ children.append(sys_main_node)
cd_type = dataStdNo.src_sys
check_model.data_std_no = dataStdNo.onum
@@ -1618,14 +1643,13 @@ class DataStdService:
hasDict = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.std.dict')
hasDict = hasDict.decode() if isinstance(hasDict, bytes) else hasDict
- table_data = [] # 存储表格数据
- children = [] # 存储图谱数据
+
if hasDict == "是":
# 获取字典列表
main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
if not main_list:
- return {"children": []}
+ return {"children": children}
for main in main_list:
dict_node = {
@@ -1683,7 +1707,7 @@ class DataStdService:
# 获取该字典直接引用的元数据列表
meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, id)
if not meta_list:
- return {"children": []}
+ return {"children": children}
children = []
for meta in meta_list:
diff --git a/vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue b/vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
index c078f00..6e9b2bd 100644
--- a/vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
+++ b/vue-fastapi-frontend/src/views/datastd/main/components/AddEditForm.vue
@@ -42,6 +42,22 @@
/>
+
+
+
+
+
[] }
})
// 表单数据(完整映射所有数据库字段)
const formData = ref({ ...props.data });
-
+const filterStdList = (query) => {
+ searchQuery.value = query; // 更新搜索词
+};
// 初始化表单数据
watch(() => props.data, (newVal) => {
if (newVal) {
-formData.value=props.data
+ formData.value=props.data
+ if (formData.value.dataStdVest !== "company") {
+ showSys.value = true
+ } else {
+ showSys.value = false
+ }
}
}, { immediate: true })
+const searchQuery = ref(''); // 存储用户输入的搜索词
+const filteredStdList = computed(() => {
+ if (!searchQuery.value) return props.stdList; // 如果没有输入,返回全部
+ const query = searchQuery.value.toLowerCase();
+ return props.stdList.filter(dict =>
+ dict.dataStdNo.toLowerCase().includes(query) ||
+ dict.dataStdEngName.toLowerCase().includes(query) ||
+ dict.dataStdCnName.toLowerCase().includes(query)
+ );
+});
// 表单验证规则
const formRules = ref({
dataStdNo: [{ required: true, message: '请输入标准编号', trigger: 'blur' }],
@@ -261,8 +298,8 @@ const formRules = ref({
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' }]
+ // dataStdBusiOwnershipDept: [{ required: true, message: '请选择业务认责部门', trigger: 'change' }],
+ // dataStdItOwnershipDept: [{ required: true, message: '请选择技术认责部门', trigger: 'change' }]
})
// 组件状态
diff --git a/vue-fastapi-frontend/src/views/datastd/main/index.vue b/vue-fastapi-frontend/src/views/datastd/main/index.vue
index 6cec359..6e9e515 100644
--- a/vue-fastapi-frontend/src/views/datastd/main/index.vue
+++ b/vue-fastapi-frontend/src/views/datastd/main/index.vue
@@ -377,6 +377,7 @@
{
upload.isUploading = true;
};
+
const handleFileSuccess = (response, file, fileList) => {
upload.open = false;
upload.isUploading = false;
@@ -532,6 +535,9 @@ const getSrcSysName = (id) => {
const match = dbResourceOldList.value.find(item => item.id === id);
return match ? match.name : "公司级";
};
+const queryStd = ref({
+ dataStdVest: "company",
+});
const single = ref(true);
const multiple = ref(true);
const dialogVisible = ref(false);
@@ -560,6 +566,12 @@ const handleMapCodeClick = (row) => {
codeMapId.value=row.onum
mapVisible.value = true;
+};
+const getStdMainSelect = async () => {
+ const response = await listStdMainSelect(queryStd.value);
+
+ stdList.value = response.data;
+
};
const resetQuery = () => {
queryParams.value = { dataStdNo: '', dataStdBusiDefn: '' , pageNum: 1,
@@ -630,6 +642,7 @@ const handleRemove = (row) => {
.catch(() => {});
};
const dbResourceOldList = ref([]);
+const stdList = ref([]);
const handleAdd = () => {
isEdit.value = false;
@@ -641,11 +654,13 @@ const handleAdd = () => {
dataStdEngName: '',
dataStdType: '0',
dataStdBusiDefn: '',
+ beltDataStdContent:queryParams.value.beltDataStdContent,
dataStdSrc: '',
dataClas: '',
dataSecLvl: '1',
dataStdVest: '',
typicalFld: '',
+ companyLevelDataStdNo: '',
// 系统关联
srcSys: null,
@@ -870,6 +885,7 @@ onMounted(() => {
});
getList();
+ getStdMainSelect();
});