diff --git a/vue-fastapi-backend/module_admin/dao/datastd_dao.py b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
index 9fc0659..9e6b8aa 100644
--- a/vue-fastapi-backend/module_admin/dao/datastd_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
@@ -1004,65 +1004,87 @@ class DataStdDao:
# ------------------------------------------------------------数据标准(658行)-------------------------------------------------------------------------------------------------
@classmethod
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False):
- filters = []
- 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_eng_name:
- filters.append(
- or_(
- DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"),
- DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%")
- )
- )
- if query_object.data_std_busi_defn:
- filters.append(DataStdMain.data_std_busi_defn.like(f"%{query_object.data_std_busi_defn}%"))
- 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.belt_data_std_content:
- filters.append(DataStdMain.belt_data_std_content == query_object.belt_data_std_content)
-
- 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.data_sec_lvl,
- 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)
-
+ filters = []
+
+ 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_eng_name:
+ filters.append(
+ or_(
+ DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"),
+ DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%")
+ )
+ )
+ if query_object.data_std_busi_defn:
+ filters.append(DataStdMain.data_std_busi_defn.like(f"%{query_object.data_std_busi_defn}%"))
+ 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.belt_data_std_content:
+ # 定义递归CTE
+ content_alias = aliased(DataAstContent) # 假设SQLAlchemy模型叫 DataStdContent
+ cte = (
+ select(DataAstContent.content_onum)
+ .where(DataAstContent.content_onum == query_object.belt_data_std_content)
+ .cte(name="content_cte", recursive=True)
+ )
+
+ cte = cte.union_all(
+ select(content_alias.content_onum)
+ .where(content_alias.supr_content_onum == cte.c.content_onum)
+ )
+ # 只取叶子节点
+ filters.append(
+ DataStdMain.belt_data_std_content.in_(
+ select(DataAstContent.content_onum)
+ .where(DataAstContent.content_onum == cte.c.content_onum)
+ )
+ )
+ # === 查询 ===
+ 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.data_sec_lvl,
+ 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")
+ )
+ .outerjoin(
+ 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 = []
diff --git a/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue b/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue
index 28a78fc..c3792ba 100644
--- a/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue
+++ b/vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue
@@ -19,21 +19,7 @@
/>
-
-
-
-
-
+
-
-
-
+
@@ -174,18 +174,12 @@ const total = ref(0)
const loading = ref(false)
const open = ref(false)
const title = ref('')
-// const handleObjValueChange = (selectedValues) => {
-// // 根据当前对象类型获取对应的列表
-// const sourceList = form.value.objType === '0'
-// ? userList.value
-// : roleList.value;
-
-// // 转换选中的值为名称数组
-// const names = selectedValues.map(value => {
-// const item = sourceList.find(item => item.id === value);
-// return item ? item.name : '';
-// });
-// }
+function handleObjValueChange(value) {
+ const selected = userOrRoleList.value.find(item => item.id === value)
+ form.objName = selected ? selected.name : '' // objName 保存展示名
+}
+
+
const roleList = ref([]);
const userList = ref([]);
const userOrRoleList = ref([]);
@@ -209,6 +203,7 @@ const form = reactive({
bizOnum: null,
objType: '',
objName: '',
+ objValue: '',
isStop: null
})
function changeMetaSecurityObj(data){
@@ -290,44 +285,51 @@ function openEditDialog(row) {
ElMessage.warning('请选择一条记录进行编辑')
return
}
- isAddMode.value = false
-
+ isAddMode.value = false
title.value = '编辑业务域权限配置'
Object.assign(form, row)
if(form.objType=="0"){
- userOrRoleList.value=roleList.value
- }else{
- userOrRoleList.value=userList.value
+ userOrRoleList.value=roleList.value
+ } else {
+ userOrRoleList.value=userList.value
}
+
+ // 设置 objValue
+ const selected = userOrRoleList.value.find(item => item.name === row.objName)
+ form.objValue = selected ? selected.id : ''
open.value = true
}
+
function submitForm() {
permFormRef.value.validate(async (valid) => {
if (!valid) return
try {
- if (title.value.includes('新增')) {
- const submitData = {
- bizOnumList: form.bizOnum, // 传递数组
- objType: form.objType,
- objName: form.objName,
- isStop: form.isStop,
- }
- await addBizPermiConfig(submitData)
- ElMessage.success('新增成功')
- } else {
- const submitData = {
- onum: form.onum, // 传递数组
- bizOnum: form.bizOnum, // 传递数组
- objType: form.objType,
- objName: form.objName,
- isStop: form.isStop,
- }
- await updateBizPermiConfig(submitData)
- ElMessage.success('编辑成功')
- }
+if (title.value.includes('新增')) {
+ const submitData = {
+ bizOnumList: form.bizOnum,
+ objType: form.objType,
+ objName: form.objName,
+ objValue: form.objValue, // 新增
+ isStop: form.isStop,
+ }
+ await addBizPermiConfig(submitData)
+ ElMessage.success('新增成功')
+} else {
+ const submitData = {
+ onum: form.onum,
+ bizOnum: form.bizOnum,
+ objType: form.objType,
+ objName: form.objName,
+ objValue: form.objValue, // 修改
+ isStop: form.isStop,
+ }
+ await updateBizPermiConfig(submitData)
+ ElMessage.success('编辑成功')
+}
+
open.value = false
getList()
} catch (error) {