Browse Source

Merge remote-tracking branch 'origin/master'

master
xueyinfei 4 weeks ago
parent
commit
eea389051c
  1. 138
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  2. 17
      vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue
  3. 86
      vue-fastapi-frontend/src/views/metadataConfig/bizPermiConfig/index.vue

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

@ -1004,64 +1004,86 @@ 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):

17
vue-fastapi-frontend/src/views/meta/metatask/secConfig.vue

@ -19,21 +19,7 @@
/>
</el-form-item>
<el-form-item label="任务类型" prop="metataskType">
<el-select
v-model="queryParams.metataskType"
placeholder="任务类型"
clearable
style="width: 240px"
>
<el-option
v-for="dict in meta_task_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="dateRange"
@ -473,7 +459,6 @@ const data = reactive({
status: "",
dsId: undefined,
metataskName: undefined,
metataskType: undefined,
dbRCode: undefined
},
rules: {

86
vue-fastapi-frontend/src/views/metadataConfig/bizPermiConfig/index.vue

@ -117,19 +117,19 @@
<el-option label="用户" value="1" />
</el-select>
</el-form-item>
<!-- @change="handleObjValueChange" -->
<el-form-item label="对象名称" prop="objName">
<el-form-item label="对象名称" prop="objValue">
<el-select
v-model="form.objName"
v-model="form.objValue"
placeholder="请选择"
maxlength="30"
@change="handleObjValueChange"
>
<el-option
v-for="dict in userOrRoleList"
:key="dict.id"
:label="dict.name"
:value="dict.name"
:value="dict.id"
></el-option>
</el-select>
</el-form-item>
@ -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) {

Loading…
Cancel
Save