29 changed files with 2992 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||
<component name="InspectionProjectProfileManager"> |
|||
<profile version="1.0"> |
|||
<option name="myName" value="Project Default" /> |
|||
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true"> |
|||
<option name="ignoredErrors"> |
|||
<list> |
|||
<option value="N802" /> |
|||
<option value="N803" /> |
|||
<option value="N806" /> |
|||
</list> |
|||
</option> |
|||
</inspection_tool> |
|||
</profile> |
|||
</component> |
@ -0,0 +1,38 @@ |
|||
from typing import List |
|||
|
|||
from fastapi import APIRouter, Depends, Request |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from config.get_db import get_db |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import CdplbPageObject, SaveCdplbModel |
|||
from module_admin.service.login_service import LoginService |
|||
from module_admin.service.cdplb_service import CdplbService |
|||
from utils.response_util import ResponseUtil |
|||
|
|||
cdplbController = APIRouter(prefix='/dataint/cdplb', dependencies=[Depends(LoginService.get_current_user)]) |
|||
|
|||
|
|||
@cdplbController.get("/list") |
|||
async def get_tsmcb_list(request: Request, cdplb_query: CdplbPageObject = Depends(CdplbPageObject.as_query), |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await CdplbService.get_cdplb_list_services(query_db, cdplb_query, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@cdplbController.post("/save") |
|||
async def save_tsmcb(request: Request, |
|||
saveCdplbModel: SaveCdplbModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await CdplbService.save_cdplb(query_db, saveCdplbModel, current_user) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
|
|||
@cdplbController.post("/delete") |
|||
async def delete_tsmcb(request: Request, |
|||
array: List[str], |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await CdplbService.delete_cdplb(query_db, array) |
|||
return ResponseUtil.success(msg=result.message) |
@ -0,0 +1,38 @@ |
|||
from typing import List |
|||
|
|||
from fastapi import APIRouter, Depends, Request |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from config.get_db import get_db |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import FccbdPageObject, SaveFccbdModel |
|||
from module_admin.service.login_service import LoginService |
|||
from module_admin.service.fccbd_service import FccbdService |
|||
from utils.response_util import ResponseUtil |
|||
|
|||
fccbdController = APIRouter(prefix='/dataint/fccbd', dependencies=[Depends(LoginService.get_current_user)]) |
|||
|
|||
|
|||
@fccbdController.get("/list") |
|||
async def get_tsmcb_list(request: Request, fccbd_query: FccbdPageObject = Depends(FccbdPageObject.as_query), |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await FccbdService.get_fccbd_list_services(query_db, fccbd_query, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@fccbdController.post("/save") |
|||
async def save_tsmcb(request: Request, |
|||
saveFccbdModel: SaveFccbdModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await FccbdService.save_fccbd(query_db, saveFccbdModel, current_user) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
|
|||
@fccbdController.post("/delete") |
|||
async def delete_tsmcb(request: Request, |
|||
array: List[str], |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await FccbdService.delete_fccbd(query_db, array) |
|||
return ResponseUtil.success(msg=result.message) |
@ -0,0 +1,55 @@ |
|||
from typing import List |
|||
|
|||
from fastapi import APIRouter, Depends, Request |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from config.get_db import get_db |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import SscfPageObject, SaveSscfModel, TreeOperateModel |
|||
from module_admin.service.login_service import LoginService |
|||
from module_admin.service.sscf_service import SscfService |
|||
from utils.response_util import ResponseUtil |
|||
|
|||
sscfController = APIRouter(prefix='/dataint/sscf', dependencies=[Depends(LoginService.get_current_user)]) |
|||
|
|||
|
|||
@sscfController.get("/list") |
|||
async def get_tsmcb_list(request: Request, sscf_query: SscfPageObject = Depends(SscfPageObject.as_query), |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await SscfService.get_sscf_list_services(query_db, sscf_query, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@sscfController.get("/tree") |
|||
async def get_tsmcb_list(request: Request, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await SscfService.get_dasset_tree_services(query_db, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@sscfController.post("/tree") |
|||
async def get_tsmcb_list(request: Request, |
|||
treeOperate: TreeOperateModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await SscfService.save_dasset_tree_services(query_db, treeOperate, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@sscfController.post("/save") |
|||
async def save_tsmcb(request: Request, |
|||
saveSscfModel: SaveSscfModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await SscfService.save_sscf(query_db, saveSscfModel, current_user) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
|
|||
@sscfController.post("/delete") |
|||
async def delete_tsmcb(request: Request, |
|||
array: List[str], |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await SscfService.delete_sscf(query_db, array) |
|||
return ResponseUtil.success(msg=result.message) |
@ -0,0 +1,41 @@ |
|||
from typing import List |
|||
|
|||
from fastapi import APIRouter, Depends, Request |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from config.get_db import get_db |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import TsmcbPageObject, SaveTsmcbModel |
|||
from module_admin.service.login_service import LoginService |
|||
from module_admin.service.tsmcb_service import TsmcbService |
|||
from utils.response_util import ResponseUtil |
|||
|
|||
|
|||
tsmcbController = APIRouter(prefix='/dataint/tsmcb', dependencies=[Depends(LoginService.get_current_user)]) |
|||
|
|||
|
|||
@tsmcbController.get("/list") |
|||
async def get_tsmcb_list(request: Request, tsmcb_query: TsmcbPageObject = Depends(TsmcbPageObject.as_query), |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await TsmcbService.get_tsmcb_list_services(query_db, tsmcb_query, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@tsmcbController.post("/save") |
|||
async def save_tsmcb(request: Request, |
|||
saveTsmcbModel: SaveTsmcbModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await TsmcbService.save_tsmcb(query_db, saveTsmcbModel, current_user) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
@tsmcbController.post("/delete") |
|||
async def delete_tsmcb(request: Request, |
|||
array: List[str], |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await TsmcbService.delete_tsmcb(query_db, array) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
|
|||
|
@ -0,0 +1,41 @@ |
|||
from typing import List |
|||
|
|||
from fastapi import APIRouter, Depends, Request |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from config.get_db import get_db |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import VecsetPageObject, SaveVecsetModel |
|||
from module_admin.service.login_service import LoginService |
|||
from module_admin.service.vecset_service import VecsetService |
|||
from utils.response_util import ResponseUtil |
|||
|
|||
|
|||
vecsetController = APIRouter(prefix='/dataint/vecset', dependencies=[Depends(LoginService.get_current_user)]) |
|||
|
|||
|
|||
@vecsetController.get("/list") |
|||
async def get_vecset_list(request: Request, vecset_query: VecsetPageObject = Depends(VecsetPageObject.as_query), |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
meta_query_result = await VecsetService.get_vecset_list_services(query_db, vecset_query, current_user) |
|||
return ResponseUtil.success(data=meta_query_result) |
|||
|
|||
|
|||
@vecsetController.post("/save") |
|||
async def save_Vecset(request: Request, |
|||
saveVecsetModel: SaveVecsetModel, |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await VecsetService.save_vecset(query_db, saveVecsetModel, current_user) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
@vecsetController.post("/delete") |
|||
async def delete_vecset(request: Request, |
|||
array: List[str], |
|||
query_db: AsyncSession = Depends(get_db), |
|||
current_user: CurrentUserModel = Depends(LoginService.get_current_user)): |
|||
result = await VecsetService.delete_vecset(query_db, array) |
|||
return ResponseUtil.success(msg=result.message) |
|||
|
|||
|
|||
|
@ -0,0 +1,53 @@ |
|||
from typing import List |
|||
|
|||
from sqlalchemy import desc, delete, func, select, update |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import CdplbPageObject |
|||
from module_admin.entity.do.dataint_do import SysCdplb |
|||
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class CdplbDao: |
|||
""" |
|||
菜单管理模块数据库操作层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_cdplb_list(cls, db: AsyncSession, cdplb_query: CdplbPageObject): |
|||
query = ( |
|||
select(SysCdplb).where( |
|||
SysCdplb.bath_obj_tabName == cdplb_query.bath_obj_tabName if cdplb_query.bath_obj_tabName else True, |
|||
SysCdplb.bath_obj_fldName == cdplb_query.bath_obj_fldName if cdplb_query.bath_obj_fldName else True, |
|||
SysCdplb.pos_name == cdplb_query.pos_name if cdplb_query.pos_name else True, |
|||
SysCdplb.status == cdplb_query.status if cdplb_query.status else True |
|||
).distinct() |
|||
) |
|||
query_result = await PageUtil.paginate(db, query, cdplb_query.page_num, cdplb_query.page_size, True) |
|||
return query_result |
|||
|
|||
@classmethod |
|||
async def insert_cdplb(cls, db: AsyncSession, sysCdplb: SysCdplb): |
|||
db.add(sysCdplb) |
|||
await db.flush() |
|||
return sysCdplb |
|||
|
|||
@classmethod |
|||
async def get_cdplb_by_id(cls, db: AsyncSession, onum: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysCdplb).where(SysCdplb.onum == onum).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def update_cdplb(cls, db: AsyncSession, saveObj: dict): |
|||
await db.execute(update(SysCdplb), [saveObj]) |
|||
|
|||
@classmethod |
|||
async def delete_cdplb(cls, db: AsyncSession, array: List[str]): |
|||
await db.execute(delete(SysCdplb).where(SysCdplb.onum.in_(array))) |
@ -0,0 +1,53 @@ |
|||
from typing import List |
|||
|
|||
from sqlalchemy import desc, delete, func, select, update |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import FccbdPageObject |
|||
from module_admin.entity.do.dataint_do import SysFccbd |
|||
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class FccbdDao: |
|||
""" |
|||
菜单管理模块数据库操作层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_fccbd_list(cls, db: AsyncSession, fccbd_query: FccbdPageObject): |
|||
query = ( |
|||
select(SysFccbd).where( |
|||
SysFccbd.pos == fccbd_query.pos if fccbd_query.pos else True, |
|||
SysFccbd.pos_name == fccbd_query.pos_name if fccbd_query.pos_name else True, |
|||
SysFccbd.term == fccbd_query.term if fccbd_query.term else True, |
|||
SysFccbd.status == fccbd_query.status if fccbd_query.status else True |
|||
).distinct() |
|||
) |
|||
query_result = await PageUtil.paginate(db, query, fccbd_query.page_num, fccbd_query.page_size, True) |
|||
return query_result |
|||
|
|||
@classmethod |
|||
async def insert_fccbd(cls, db: AsyncSession, sysFccbd: SysFccbd): |
|||
db.add(sysFccbd) |
|||
await db.flush() |
|||
return sysFccbd |
|||
|
|||
@classmethod |
|||
async def get_fccbd_by_id(cls, db: AsyncSession, onum: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysFccbd).where(SysFccbd.onum == onum).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def update_fccbd(cls, db: AsyncSession, saveObj: dict): |
|||
await db.execute(update(SysFccbd), [saveObj]) |
|||
|
|||
@classmethod |
|||
async def delete_fccbd(cls, db: AsyncSession, array: List[str]): |
|||
await db.execute(delete(SysFccbd).where(SysFccbd.onum.in_(array))) |
@ -0,0 +1,96 @@ |
|||
import uuid |
|||
from typing import List |
|||
|
|||
from sqlalchemy import desc, delete, func, select, update |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import SscfPageObject, TreeOperateModel |
|||
from module_admin.entity.do.dataint_do import SysSscf, SysDassetTree |
|||
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class SscfDao: |
|||
""" |
|||
菜单管理模块数据库操作层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_sscf_list(cls, db: AsyncSession, sscf_query: SscfPageObject): |
|||
query = ( |
|||
select(SysSscf).where( |
|||
SysSscf.keyword == sscf_query.keyword if sscf_query.keyword else True, |
|||
SysSscf.type == sscf_query.type if sscf_query.type else True, |
|||
SysSscf.dasset_id == sscf_query.dasset_id if sscf_query.dasset_id else True, |
|||
SysSscf.status == sscf_query.status if sscf_query.status else True |
|||
).distinct() |
|||
) |
|||
query_result = await PageUtil.paginate(db, query, sscf_query.page_num, sscf_query.page_size, True) |
|||
return query_result |
|||
|
|||
@classmethod |
|||
async def insert_sscf(cls, db: AsyncSession, sysSscf: SysSscf): |
|||
db.add(sysSscf) |
|||
await db.flush() |
|||
return sysSscf |
|||
|
|||
@classmethod |
|||
async def get_sscf_by_id(cls, db: AsyncSession, onum: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysSscf).where(SysSscf.onum == onum).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def update_sscf(cls, db: AsyncSession, saveObj: dict): |
|||
await db.execute(update(SysSscf), [saveObj]) |
|||
|
|||
@classmethod |
|||
async def delete_sscf(cls, db: AsyncSession, array: List[str]): |
|||
await db.execute(delete(SysSscf).where(SysSscf.onum.in_(array))) |
|||
|
|||
@classmethod |
|||
async def get_dasset_tree(cls, db: AsyncSession): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysDassetTree).distinct() |
|||
) |
|||
).scalars().all() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def get_dasset_tree_by_code(cls, db: AsyncSession, code: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysDassetTree).where(SysDassetTree.dasset_code == code).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def insert_dasset_tree(cls, db: AsyncSession, treeOperate: TreeOperateModel): |
|||
tree = SysDassetTree() |
|||
tree.onum = uuid.uuid4() |
|||
tree.dasset_code = treeOperate.dasset_code |
|||
tree.dasset_name = treeOperate.dasset_name |
|||
tree.parent_code = "1" |
|||
db.add(tree) |
|||
await db.flush() |
|||
return tree |
|||
|
|||
@classmethod |
|||
async def save_dasset_tree(cls, db: AsyncSession, treeOperate: dict): |
|||
await db.execute(update(SysDassetTree), [treeOperate]) |
|||
|
|||
@classmethod |
|||
async def delete_dasset_tree(cls, db: AsyncSession, onum: str): |
|||
await db.execute(delete(SysDassetTree).where(SysDassetTree.onum == onum)) |
|||
|
@ -0,0 +1,53 @@ |
|||
from typing import List |
|||
|
|||
from sqlalchemy import desc, delete, func, select, update |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import TsmcbPageObject |
|||
from module_admin.entity.do.dataint_do import SysTsmcb |
|||
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class TsmcbDao: |
|||
""" |
|||
菜单管理模块数据库操作层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_tsmcb_list(cls, db: AsyncSession, tsmcb_query: TsmcbPageObject): |
|||
query = ( |
|||
select(SysTsmcb).where( |
|||
SysTsmcb.pos == tsmcb_query.pos if tsmcb_query.pos else True, |
|||
SysTsmcb.type == tsmcb_query.type if tsmcb_query.type else True, |
|||
SysTsmcb.std_rpl_str == tsmcb_query.std_rpl_str if tsmcb_query.std_rpl_str else True, |
|||
SysTsmcb.status == tsmcb_query.status if tsmcb_query.status else True |
|||
).distinct() |
|||
) |
|||
query_result = await PageUtil.paginate(db, query, tsmcb_query.page_num, tsmcb_query.page_size, True) |
|||
return query_result |
|||
|
|||
@classmethod |
|||
async def insert_tsmcb(cls, db: AsyncSession, sysTsmcb: SysTsmcb): |
|||
db.add(sysTsmcb) |
|||
await db.flush() |
|||
return sysTsmcb |
|||
|
|||
@classmethod |
|||
async def get_tsmcb_by_id(cls, db: AsyncSession, onum: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysTsmcb).where(SysTsmcb.onum == onum).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def update_tsmcb(cls, db: AsyncSession, saveObj: dict): |
|||
await db.execute(update(SysTsmcb), [saveObj]) |
|||
|
|||
@classmethod |
|||
async def delete_tsmcb(cls, db: AsyncSession, array: List[str]): |
|||
await db.execute(delete(SysTsmcb).where(SysTsmcb.onum.in_(array))) |
@ -0,0 +1,54 @@ |
|||
from typing import List |
|||
|
|||
from sqlalchemy import desc, delete, func, select, update |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import VecsetPageObject |
|||
from module_admin.entity.do.dataint_do import SysVecset |
|||
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join |
|||
from utils.page_util import PageUtil |
|||
|
|||
|
|||
class VecsetDao: |
|||
""" |
|||
菜单管理模块数据库操作层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_vecset_list(cls, db: AsyncSession, vecset_query: VecsetPageObject): |
|||
query = ( |
|||
select(SysVecset).where( |
|||
SysVecset.dasset_id == vecset_query.dasset_id if vecset_query.dasset_id else True, |
|||
SysVecset.stab_name == vecset_query.stab_name if vecset_query.stab_name else True, |
|||
SysVecset.squery == vecset_query.squery if vecset_query.squery else True, |
|||
SysVecset.sanal_plan == vecset_query.sanal_plan if vecset_query.sanal_plan else True, |
|||
SysVecset.status == vecset_query.status if vecset_query.status else True |
|||
).distinct() |
|||
) |
|||
query_result = await PageUtil.paginate(db, query, vecset_query.page_num, vecset_query.page_size, True) |
|||
return query_result |
|||
|
|||
@classmethod |
|||
async def insert_vecset(cls, db: AsyncSession, sysVecset: SysVecset): |
|||
db.add(sysVecset) |
|||
await db.flush() |
|||
return sysVecset |
|||
|
|||
@classmethod |
|||
async def get_vecset_by_id(cls, db: AsyncSession, onum: str): |
|||
result = ( |
|||
( |
|||
await db.execute( |
|||
select(SysVecset).where(SysVecset.onum == onum).distinct() |
|||
) |
|||
).scalars().first() |
|||
) |
|||
return result |
|||
|
|||
@classmethod |
|||
async def update_vecset(cls, db: AsyncSession, saveObj: dict): |
|||
await db.execute(update(SysVecset), [saveObj]) |
|||
|
|||
@classmethod |
|||
async def delete_vecset(cls, db: AsyncSession, array: List[str]): |
|||
await db.execute(delete(SysVecset).where(SysVecset.onum.in_(array))) |
@ -0,0 +1,123 @@ |
|||
from sqlalchemy import Column, Float, Integer, String, Text, DateTime, Boolean, ForeignKey, UniqueConstraint, Index, \ |
|||
text |
|||
from config.database import Base |
|||
from datetime import datetime |
|||
|
|||
|
|||
class SysTsmcb(Base): |
|||
""" |
|||
词性文本替换表 |
|||
""" |
|||
__tablename__ = 't_pos_txt_rpl' |
|||
|
|||
onum = Column(String(50), primary_key=True, comment='序号') |
|||
pos = Column(String(500, collation='utf8_general_ci'), comment='词性') |
|||
type = Column(String(500, collation='utf8_general_ci'), comment='类型') |
|||
std_rpl_str = Column(String(500, collation='utf8_general_ci'), comment='标准化替换字符串') |
|||
prefix_supp_str = Column(String(500, collation='utf8_general_ci'), comment='前缀补充字符串') |
|||
suffix_supp_str = Column(String(500, collation='utf8_general_ci'), comment='后缀补充字符串') |
|||
status = Column(String(1, collation='utf8_general_ci'), default='0', comment='状态(0正常 1停用)') |
|||
create_by = Column(String(64), default='', comment='创建者') |
|||
create_time = Column(DateTime, comment='创建时间') |
|||
update_by = Column(String(64), default='', comment='更新者') |
|||
update_time = Column(DateTime, comment='更新时间') |
|||
remark = Column(String(500), nullable=True, default='', comment='备注') |
|||
|
|||
|
|||
class SysFccbd(Base): |
|||
""" |
|||
词典配置表 |
|||
""" |
|||
__tablename__ = 't_dict_config' |
|||
|
|||
onum = Column(String(50), primary_key=True, comment='序号') |
|||
term = Column(String(500, collation='utf8_general_ci'), comment='词语') |
|||
freq = Column(String(500, collation='utf8_general_ci'), comment='频次') |
|||
pos = Column(String(500, collation='utf8_general_ci'), comment='词性') |
|||
pos_name = Column(String(500, collation='utf8_general_ci'), comment='词性名称') |
|||
status = Column(String(500, collation='utf8_general_ci'), comment='状态(0正常 1停用)') |
|||
create_by = Column(String(500, collation='utf8_general_ci'), comment='创建者') |
|||
create_time = Column(DateTime, comment='创建时间') |
|||
update_by = Column(String(64, collation='utf8_general_ci'), comment='更新者') |
|||
update_time = Column(DateTime, comment='更新时间') |
|||
remark = Column(String(500, collation='utf8_general_ci'), comment='备注') |
|||
|
|||
|
|||
class SysCdplb(Base): |
|||
""" |
|||
词典配置表 |
|||
""" |
|||
__tablename__ = 't_bath_dict_config' |
|||
|
|||
onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='序号') |
|||
bath_obj_tab_name = Column(String(500, collation='utf8_general_ci'), comment='批量对象表名') |
|||
bath_obj_fld_name = Column(String(500, collation='utf8_general_ci'), comment='批里对象字段名') |
|||
freq = Column(String(500, collation='utf8_general_ci'), comment='频次') |
|||
pos = Column(String(500, collation='utf8_general_ci'), comment='词性') |
|||
pos_name = Column(String(500, collation='utf8_general_ci'), comment='词性名称') |
|||
status = Column(String(1, collation='utf8_general_ci'), comment='状态(0正常 1停用)') |
|||
create_by = Column(String(64, collation='utf8_general_ci'), comment='创建者') |
|||
create_time = Column(DateTime, comment='创建时间') |
|||
update_by = Column(String(64, collation='utf8_general_ci'), comment='更新者') |
|||
update_time = Column(DateTime, comment='更新时间') |
|||
remark = Column(String(500, collation='utf8_general_ci'), comment='备注') |
|||
|
|||
|
|||
class SysSscf(Base): |
|||
""" |
|||
短句配置表 |
|||
""" |
|||
__tablename__ = 't_keyword' |
|||
|
|||
onum = Column(String(60), primary_key=True, comment='序号') |
|||
dasset_id = Column(String(500), comment='数据域名ID') |
|||
keywords = Column(String(500), comment='关键词JSON') # 根据你的注释,这里使用了String而不是JSON |
|||
keyword = Column(String(500), comment='关键词') |
|||
algorithm = Column(String(500), comment='算法') |
|||
order = Column(String(500), comment='指令') |
|||
whole_sentence = Column(String(500), comment='整句') |
|||
type = Column(String(500), comment='类型') |
|||
supp_expl = Column(String(500), comment='补充说明') |
|||
bak1 = Column(String(500), comment='备注1') |
|||
bak2 = Column(String(500), comment='备注2') |
|||
bak3 = Column(String(500), comment='备注3') |
|||
bak4 = Column(String(500), comment='备注4') |
|||
bak5 = Column(String(500), comment='备注5') |
|||
status = Column(String(1), comment='有效标志') |
|||
del_flag = Column(String(1), comment='删除标志') |
|||
update_time = Column(DateTime, comment='更新时间') |
|||
update_by = Column(String(50), comment='更新者') |
|||
create_time = Column(DateTime, comment='创建时间') |
|||
create_by = Column(String(50), comment='创建者') |
|||
|
|||
|
|||
class SysDassetTree(Base): |
|||
__tablename__ = 't_dasset_tree' |
|||
|
|||
onum = Column(String(60), primary_key=True, comment='序号') |
|||
dasset_code = Column(String(500), comment='code') |
|||
dasset_name = Column(String(500), comment='name') # 根据你的注释,这里使用了String而不是JSON |
|||
parent_code = Column(String(500), comment='父节点code') |
|||
|
|||
|
|||
class SysVecset(Base): |
|||
""" |
|||
智能语句配置表 |
|||
""" |
|||
__tablename__ = 't_vecset' |
|||
|
|||
onum = Column(String(60), primary_key=True, comment='序号') |
|||
dasset_id = Column(String(500), comment='数据域名') |
|||
squery = Column(String(500), comment='查询语句') |
|||
sanal_plan = Column(String(500), comment='分析方法') |
|||
sintnt_term = Column(String(500), comment='意图词') |
|||
stab_name = Column(String(500), comment='表名称') |
|||
ssql = Column(String(8000), comment='参考sql') |
|||
sim_thrsh = Column(String(500), comment='相似阈值') |
|||
status = Column(String(1), comment='状态(0正常 1停用)') |
|||
del_flag = Column(String(1), comment='删除标志(0代表存在 2代表删除)') |
|||
create_by = Column(String(64), comment='创建者') |
|||
create_time = Column(DateTime, comment='创建时间') |
|||
update_by = Column(String(64), comment='更新者') |
|||
update_time = Column(DateTime, comment='更新时间') |
|||
remark = Column(String(500), comment='备注') |
@ -0,0 +1,127 @@ |
|||
from pydantic import BaseModel |
|||
from typing import Union, Optional, List |
|||
from module_admin.annotation.pydantic_annotation import as_query |
|||
from pydantic import BaseModel, ConfigDict, Field, model_validator |
|||
from pydantic.alias_generators import to_camel |
|||
|
|||
|
|||
@as_query |
|||
class TsmcbPageObject(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
page_num: int |
|||
page_size: int |
|||
pos: Optional[str] = None |
|||
type: Optional[str] = None |
|||
std_rpl_str: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
class SaveTsmcbModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
onum: Optional[str] = None |
|||
pos: Optional[str] = None |
|||
type: Optional[str] = None |
|||
std_rpl_str: Optional[str] = None |
|||
prefix_supp_str: Optional[str] = None |
|||
suffix_supp_str: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
@as_query |
|||
class FccbdPageObject(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
page_num: int |
|||
page_size: int |
|||
pos: Optional[str] = None |
|||
term: Optional[str] = None |
|||
pos_name: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
class SaveFccbdModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
onum: Optional[str] = None |
|||
term: Optional[str] = None |
|||
freq: Optional[str] = None |
|||
pos: Optional[str] = None |
|||
pos_name: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
@as_query |
|||
class CdplbPageObject(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
page_num: int |
|||
page_size: int |
|||
bath_obj_tabName: Optional[str] = None |
|||
bath_obj_fldName: Optional[str] = None |
|||
pos_name: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
class SaveCdplbModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
onum: Optional[str] = None |
|||
bath_obj_tab_name: Optional[str] = None |
|||
bath_obj_fld_name: Optional[str] = None |
|||
freq: Optional[str] = None |
|||
pos: Optional[str] = None |
|||
pos_name: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
@as_query |
|||
class SscfPageObject(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
page_num: int |
|||
page_size: int |
|||
keyword: Optional[str] = None |
|||
type: Optional[str] = None |
|||
dasset_id: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
class SaveSscfModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
onum: Optional[str] = None |
|||
dasset_id: Optional[str] = None |
|||
keyword: Optional[str] = None |
|||
status: Optional[str] = None |
|||
algorithm: Optional[str] = None |
|||
order: Optional[str] = None |
|||
whole_sentence: Optional[str] = None |
|||
type: Optional[str] = None |
|||
supp_expl: Optional[str] = None |
|||
|
|||
@as_query |
|||
class VecsetPageObject(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
page_num: int |
|||
page_size: int |
|||
stab_name: Optional[str] = None |
|||
squery: Optional[str] = None |
|||
sanal_plan: Optional[str] = None |
|||
dasset_id: Optional[str] = None |
|||
status: Optional[str] = None |
|||
|
|||
|
|||
class SaveVecsetModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
onum: Optional[str] = None |
|||
dasset_id: Optional[str] = None |
|||
stab_name: Optional[str] = None |
|||
squery: Optional[str] = None |
|||
sanal_plan: Optional[str] = None |
|||
ssql: Optional[str] = None |
|||
sintnt_term: Optional[str] = None |
|||
status: Optional[str] = None |
|||
sim_thrsh: Optional[str] = None |
|||
|
|||
|
|||
class TreeOperateModel(BaseModel): |
|||
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) |
|||
operate: Optional[str] = None |
|||
onum: Optional[str] = None |
|||
dasset_code: Optional[str] = None |
|||
dasset_name: Optional[str] = None |
|||
|
@ -0,0 +1,54 @@ |
|||
import json |
|||
import uuid |
|||
|
|||
from typing import Optional, List |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import CdplbPageObject, SaveCdplbModel |
|||
from module_admin.entity.do.dataint_do import SysCdplb |
|||
from module_admin.dao.cdplb_dao import CdplbDao |
|||
from exceptions.exception import ServiceException, ServiceWarning |
|||
from datetime import datetime |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class CdplbService: |
|||
""" |
|||
智能问答服务层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_cdplb_list_services(cls, result_db: AsyncSession, cdplb_query: CdplbPageObject, current_user: CurrentUserModel): |
|||
result = await CdplbDao.get_cdplb_list(result_db, cdplb_query) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def save_cdplb(cls, result_db: AsyncSession, saveCdplbModel: SaveCdplbModel, current_user: CurrentUserModel): |
|||
if saveCdplbModel.onum is None: |
|||
# add |
|||
saveCdplbModel.onum = uuid.uuid4() |
|||
addObj = SysCdplb(**saveCdplbModel.model_dump()) |
|||
addObj.create_by = current_user.user.user_name |
|||
addObj.create_time = datetime.now() |
|||
addObj.update_by = current_user.user.user_name |
|||
addObj.update_time = datetime.now() |
|||
await CdplbDao.insert_cdplb(result_db, addObj) |
|||
else: |
|||
# update |
|||
oldObj = await CdplbDao.get_cdplb_by_id(result_db, saveCdplbModel.onum) |
|||
if oldObj is None: |
|||
raise ServiceException(message='所改对象不存在') |
|||
saveObj = saveCdplbModel.model_dump(exclude_unset=True) |
|||
saveObj['update_by'] = current_user.user.user_name |
|||
saveObj['update_time'] = datetime.now() |
|||
await CdplbDao.update_cdplb(result_db, saveObj) |
|||
await result_db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def delete_cdplb(cls, db: AsyncSession, array: List[str]): |
|||
await CdplbDao.delete_cdplb(db, array) |
|||
await db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
@ -0,0 +1,54 @@ |
|||
import json |
|||
import uuid |
|||
|
|||
from typing import Optional, List |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import FccbdPageObject, SaveFccbdModel |
|||
from module_admin.entity.do.dataint_do import SysFccbd |
|||
from module_admin.dao.fccbd_dao import FccbdDao |
|||
from exceptions.exception import ServiceException, ServiceWarning |
|||
from datetime import datetime |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class FccbdService: |
|||
""" |
|||
智能问答服务层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_fccbd_list_services(cls, result_db: AsyncSession, fccbd_query: FccbdPageObject, current_user: CurrentUserModel): |
|||
result = await FccbdDao.get_fccbd_list(result_db, fccbd_query) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def save_fccbd(cls, result_db: AsyncSession, saveFccbdModel: SaveFccbdModel, current_user: CurrentUserModel): |
|||
if saveFccbdModel.onum is None: |
|||
# add |
|||
saveFccbdModel.onum = uuid.uuid4() |
|||
addObj = SysFccbd(**saveFccbdModel.model_dump()) |
|||
addObj.create_by = current_user.user.user_name |
|||
addObj.create_time = datetime.now() |
|||
addObj.update_by = current_user.user.user_name |
|||
addObj.update_time = datetime.now() |
|||
await FccbdDao.insert_fccbd(result_db, addObj) |
|||
else: |
|||
# update |
|||
oldObj = await FccbdDao.get_fccbd_by_id(result_db, saveFccbdModel.onum) |
|||
if oldObj is None: |
|||
raise ServiceException(message='所改对象不存在') |
|||
saveObj = saveFccbdModel.model_dump(exclude_unset=True) |
|||
saveObj['update_by'] = current_user.user.user_name |
|||
saveObj['update_time'] = datetime.now() |
|||
await FccbdDao.update_fccbd(result_db, saveObj) |
|||
await result_db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def delete_fccbd(cls, db: AsyncSession, array: List[str]): |
|||
await FccbdDao.delete_fccbd(db, array) |
|||
await db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
@ -0,0 +1,96 @@ |
|||
import json |
|||
import uuid |
|||
|
|||
from typing import Optional, List |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import SscfPageObject, SaveSscfModel, TreeOperateModel |
|||
from module_admin.entity.do.dataint_do import SysSscf |
|||
from module_admin.dao.sscf_dao import SscfDao |
|||
from exceptions.exception import ServiceException, ServiceWarning |
|||
from datetime import datetime |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class SscfService: |
|||
""" |
|||
智能问答服务层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_sscf_list_services(cls, result_db: AsyncSession, sscf_query: SscfPageObject, current_user: CurrentUserModel): |
|||
result = await SscfDao.get_sscf_list(result_db, sscf_query) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def get_dasset_tree_services(cls, result_db: AsyncSession, current_user: CurrentUserModel): |
|||
result = await SscfDao.get_dasset_tree(result_db) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def save_dasset_tree_services(cls, result_db: AsyncSession, treeOperate: TreeOperateModel, current_user: CurrentUserModel): |
|||
tree = await SscfDao.get_dasset_tree_by_code(result_db, treeOperate.dasset_code) |
|||
if treeOperate.operate == 'ADD': |
|||
if tree: |
|||
raise ServiceException(message="已存在code为:"+treeOperate.dasset_code+"的目录,无法重复新增,请修改code后新增") |
|||
else: |
|||
await SscfDao.insert_dasset_tree(result_db, treeOperate) |
|||
await result_db.commit() |
|||
if treeOperate.operate == 'UPDATE': |
|||
if tree: |
|||
if tree.onum == treeOperate.onum: |
|||
treeObj = dict( |
|||
onum=treeOperate.onum, |
|||
dasset_code=treeOperate.dasset_code, |
|||
dasset_name=treeOperate.dasset_name |
|||
) |
|||
await SscfDao.save_dasset_tree(result_db, treeObj) |
|||
await result_db.commit() |
|||
else: |
|||
raise ServiceException(message="已存在code为:"+treeOperate.dasset_code+"的目录") |
|||
else: |
|||
treeObj = dict( |
|||
onum=treeOperate.onum, |
|||
dasset_code=treeOperate.dasset_code, |
|||
dasset_name=treeOperate.dasset_name |
|||
) |
|||
await SscfDao.save_dasset_tree(result_db, treeObj) |
|||
await result_db.commit() |
|||
if treeOperate.operate == 'DELETE': |
|||
if tree: |
|||
await SscfDao.delete_dasset_tree(result_db, treeOperate.onum) |
|||
await result_db.commit() |
|||
else: |
|||
raise ServiceException(mssage="不存在code为:"+treeOperate.dasset_code+"的目录") |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def save_sscf(cls, result_db: AsyncSession, saveSscfModel: SaveSscfModel, current_user: CurrentUserModel): |
|||
if saveSscfModel.onum is None: |
|||
# add |
|||
saveSscfModel.onum = uuid.uuid4() |
|||
addObj = SysSscf(**saveSscfModel.model_dump()) |
|||
addObj.create_by = current_user.user.user_name |
|||
addObj.create_time = datetime.now() |
|||
addObj.update_by = current_user.user.user_name |
|||
addObj.update_time = datetime.now() |
|||
await SscfDao.insert_sscf(result_db, addObj) |
|||
else: |
|||
# update |
|||
oldObj = await SscfDao.get_sscf_by_id(result_db, saveSscfModel.onum) |
|||
if oldObj is None: |
|||
raise ServiceException(message='所改对象不存在') |
|||
saveObj = saveSscfModel.model_dump(exclude_unset=True) |
|||
saveObj['update_by'] = current_user.user.user_name |
|||
saveObj['update_time'] = datetime.now() |
|||
await SscfDao.update_sscf(result_db, saveObj) |
|||
await result_db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def delete_sscf(cls, db: AsyncSession, array: List[str]): |
|||
await SscfDao.delete_sscf(db, array) |
|||
await db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
@ -0,0 +1,54 @@ |
|||
import json |
|||
import uuid |
|||
|
|||
from typing import Optional, List |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import TsmcbPageObject, SaveTsmcbModel |
|||
from module_admin.entity.do.dataint_do import SysTsmcb |
|||
from module_admin.dao.tsmcb_dao import TsmcbDao |
|||
from exceptions.exception import ServiceException, ServiceWarning |
|||
from datetime import datetime |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class TsmcbService: |
|||
""" |
|||
智能问答服务层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_tsmcb_list_services(cls, result_db: AsyncSession, tsmcb_query: TsmcbPageObject, current_user: CurrentUserModel): |
|||
result = await TsmcbDao.get_tsmcb_list(result_db, tsmcb_query) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def save_tsmcb(cls, result_db: AsyncSession, saveTsmcbModel: SaveTsmcbModel, current_user: CurrentUserModel): |
|||
if saveTsmcbModel.onum is None: |
|||
# add |
|||
saveTsmcbModel.onum = uuid.uuid4() |
|||
addObj = SysTsmcb(**saveTsmcbModel.model_dump()) |
|||
addObj.create_by = current_user.user.user_name |
|||
addObj.create_time = datetime.now() |
|||
addObj.update_by = current_user.user.user_name |
|||
addObj.update_time = datetime.now() |
|||
await TsmcbDao.insert_tsmcb(result_db, addObj) |
|||
else: |
|||
# update |
|||
oldObj = await TsmcbDao.get_tsmcb_by_id(result_db, saveTsmcbModel.onum) |
|||
if oldObj is None: |
|||
raise ServiceException(message='所改对象不存在') |
|||
saveObj = saveTsmcbModel.model_dump(exclude_unset=True) |
|||
saveObj['update_by'] = current_user.user.user_name |
|||
saveObj['update_time'] = datetime.now() |
|||
await TsmcbDao.update_tsmcb(result_db, saveObj) |
|||
await result_db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def delete_tsmcb(cls, db: AsyncSession, array: List[str]): |
|||
await TsmcbDao.delete_tsmcb(db, array) |
|||
await db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
@ -0,0 +1,54 @@ |
|||
import json |
|||
import uuid |
|||
|
|||
from typing import Optional, List |
|||
from sqlalchemy.ext.asyncio import AsyncSession |
|||
from module_admin.entity.vo.common_vo import CrudResponseModel |
|||
from module_admin.entity.vo.user_vo import CurrentUserModel |
|||
from module_admin.entity.vo.dataint_vo import VecsetPageObject, SaveVecsetModel |
|||
from module_admin.entity.do.dataint_do import SysVecset |
|||
from module_admin.dao.vecset_dao import VecsetDao |
|||
from exceptions.exception import ServiceException, ServiceWarning |
|||
from datetime import datetime |
|||
from utils.common_util import CamelCaseUtil |
|||
|
|||
|
|||
class VecsetService: |
|||
""" |
|||
智能问答服务层 |
|||
""" |
|||
|
|||
@classmethod |
|||
async def get_vecset_list_services(cls, result_db: AsyncSession, vecset_query: VecsetPageObject, current_user: CurrentUserModel): |
|||
result = await VecsetDao.get_vecset_list(result_db, vecset_query) |
|||
return CamelCaseUtil.transform_result(result) |
|||
|
|||
@classmethod |
|||
async def save_vecset(cls, result_db: AsyncSession, saveVecsetModel: SaveVecsetModel, current_user: CurrentUserModel): |
|||
if saveVecsetModel.onum is None: |
|||
# add |
|||
saveVecsetModel.onum = uuid.uuid4() |
|||
addObj = SysVecset(**saveVecsetModel.model_dump()) |
|||
addObj.create_by = current_user.user.user_name |
|||
addObj.create_time = datetime.now() |
|||
addObj.update_by = current_user.user.user_name |
|||
addObj.update_time = datetime.now() |
|||
await VecsetDao.insert_vecset(result_db, addObj) |
|||
else: |
|||
# update |
|||
oldObj = await VecsetDao.get_vecset_by_id(result_db, saveVecsetModel.onum) |
|||
if oldObj is None: |
|||
raise ServiceException(message='所改对象不存在') |
|||
saveObj = saveVecsetModel.model_dump(exclude_unset=True) |
|||
saveObj['update_by'] = current_user.user.user_name |
|||
saveObj['update_time'] = datetime.now() |
|||
await VecsetDao.update_vecset(result_db, saveObj) |
|||
await result_db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
|||
@classmethod |
|||
async def delete_vecset(cls, db: AsyncSession, array: List[str]): |
|||
await VecsetDao.delete_vecset(db, array) |
|||
await db.commit() |
|||
return CrudResponseModel(is_success=True, message='操作成功') |
|||
|
@ -0,0 +1,26 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
|
|||
export function getCdplbList(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/cdplb/list', |
|||
method: 'get', |
|||
params: data |
|||
}) |
|||
} |
|||
|
|||
export function saveCdplb(data){ |
|||
return request({ |
|||
url: '/default-api/dataint/cdplb/save', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
export function deleteCdplb(array){ |
|||
return request({ |
|||
url: '/default-api/dataint/cdplb/delete', |
|||
method: 'post', |
|||
data: array |
|||
}) |
|||
} |
@ -0,0 +1,26 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
|
|||
export function getFccbdList(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/fccbd/list', |
|||
method: 'get', |
|||
params: data |
|||
}) |
|||
} |
|||
|
|||
export function saveFccbd(data){ |
|||
return request({ |
|||
url: '/default-api/dataint/fccbd/save', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
export function deleteFccbd(array){ |
|||
return request({ |
|||
url: '/default-api/dataint/fccbd/delete', |
|||
method: 'post', |
|||
data: array |
|||
}) |
|||
} |
@ -0,0 +1,41 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
|
|||
export function getSscfList(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/sscf/list', |
|||
method: 'get', |
|||
params: data |
|||
}) |
|||
} |
|||
|
|||
export function saveSscf(data){ |
|||
return request({ |
|||
url: '/default-api/dataint/sscf/save', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
export function deleteSscf(array){ |
|||
return request({ |
|||
url: '/default-api/dataint/sscf/delete', |
|||
method: 'post', |
|||
data: array |
|||
}) |
|||
} |
|||
|
|||
export function get_dasset_tree() { |
|||
return request({ |
|||
url: '/default-api/dataint/sscf/tree', |
|||
method: 'get', |
|||
}) |
|||
} |
|||
|
|||
export function saveDassetTreeNode(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/sscf/tree', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
@ -0,0 +1,26 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
|
|||
export function getTsmcbList(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/tsmcb/list', |
|||
method: 'get', |
|||
params: data |
|||
}) |
|||
} |
|||
|
|||
export function saveTsmcb(data){ |
|||
return request({ |
|||
url: '/default-api/dataint/tsmcb/save', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
export function deleteTsmcb(array){ |
|||
return request({ |
|||
url: '/default-api/dataint/tsmcb/delete', |
|||
method: 'post', |
|||
data: array |
|||
}) |
|||
} |
@ -0,0 +1,26 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
|
|||
export function getVecsetList(data) { |
|||
return request({ |
|||
url: '/default-api/dataint/vecset/list', |
|||
method: 'get', |
|||
params: data |
|||
}) |
|||
} |
|||
|
|||
export function saveVecset(data){ |
|||
return request({ |
|||
url: '/default-api/dataint/vecset/save', |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
export function deleteVecset(array){ |
|||
return request({ |
|||
url: '/default-api/dataint/vecset/delete', |
|||
method: 'post', |
|||
data: array |
|||
}) |
|||
} |
@ -0,0 +1,271 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form inline :model="queryParams"> |
|||
<el-form-item label="批量对象表名:"> |
|||
<el-input v-model="queryParams.bathObjTabName"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="批里对象字段名:"> |
|||
<el-input v-model="queryParams.bathObjFldName"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性名称:"> |
|||
<el-input v-model="queryParams.posName"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-select v-model="queryParams.status" style="width: 200px" clearable> |
|||
<el-option label="正常" key="tsmcb-query-status-1" value="1"></el-option> |
|||
<el-option label="弃用" key="tsmcb-query-status-1" value="0"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
|||
<el-button icon="Refresh" @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-row :gutter="10" class="mb8"> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="primary" |
|||
plain |
|||
icon="Plus" |
|||
@click="handleAdd" |
|||
>新增</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="danger" |
|||
plain |
|||
icon="Minus" |
|||
@click="multDelete" |
|||
>删除</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="info" |
|||
plain |
|||
icon="Upload" |
|||
@click="handleImport" |
|||
>导入</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="warning" |
|||
plain |
|||
icon="Download" |
|||
@click="handleExport" |
|||
>导出</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table :data="dataList" @selection-change="handleSelection"> |
|||
<el-table-column type="selection" width="50" align="center" /> |
|||
<!-- <el-table-column label="序号" align="center" prop="onum"></el-table-column>--> |
|||
<el-table-column label="批量对象表名" align="center" prop="bathObjTabName"></el-table-column> |
|||
<el-table-column label="批里对象字段名" align="center" prop="bathObjFldName"></el-table-column> |
|||
<el-table-column label="频次" align="center" prop="freq"></el-table-column> |
|||
<el-table-column label="词性" align="center" prop="pos"></el-table-column> |
|||
<el-table-column label="词性名称" align="center" prop="posName"></el-table-column> |
|||
<el-table-column label="状态" align="center" prop="status"> |
|||
<template #default="scope"> |
|||
<el-switch v-model="scope.row.status" |
|||
active-value="1" |
|||
inactive-value="0" @change="changeStatus(scope.row)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="负责人员" align="center" prop="updateBy"></el-table-column> |
|||
<el-table-column label="更新时间" align="center" prop="updateTime"> |
|||
<template #default="scope"> |
|||
<span>{{scope.row.updateTime.replace("T"," ")}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" prop="operation"> |
|||
<template #default="scope"> |
|||
<el-link type="primary" @click="handleEdit(scope.row)" :underline="false">修改</el-link> |
|||
<el-link type="danger" style="margin-left: 10px" @click="handleDelete([scope.row.onum])" :underline="false">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<pagination |
|||
v-show="total > 0" |
|||
:total="total" |
|||
v-model:page="queryParams.pageNum" |
|||
v-model:limit="queryParams.pageSize" |
|||
@pagination="getList" |
|||
/> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="currentForm.operate === 'ADD'?'新增词典配置表':'编辑词典配置表'" |
|||
width="500" |
|||
> |
|||
<el-form v-if="showDialog" |
|||
:model="currentForm" |
|||
ref="formRef" |
|||
:rules="rules" |
|||
label-width="125px"> |
|||
<el-form-item label="批量对象表名:" prop="bathObjTabName"> |
|||
<el-input |
|||
v-model="currentForm.bathObjTabName" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="批量对象字段名:" prop="bathObjFldName"> |
|||
<el-input |
|||
v-model="currentForm.bathObjFldName" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="频次:" prop="freq"> |
|||
<el-input |
|||
v-model="currentForm.freq" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性:" prop="pos"> |
|||
<el-input |
|||
v-model="currentForm.pos" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性名称:" prop="posName"> |
|||
<el-input |
|||
v-model="currentForm.posName" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-radio-group v-model="currentForm.status"> |
|||
<el-radio value="1" size="large">正常</el-radio> |
|||
<el-radio value="0" size="large">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSave"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|||
import { getCdplbList, saveCdplb, deleteCdplb } from "@/api/dataint/cdplb" |
|||
const { proxy } = getCurrentInstance(); |
|||
|
|||
const queryParams = ref({ |
|||
bathObjTabName:'', |
|||
bathObjFldName:'', |
|||
posName:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
}) |
|||
const showDialog = ref(false) |
|||
const rules = ref({ |
|||
bathObjTabName: [{required: true, message: '批量对象表名不能为空!', trigger: 'change',},], |
|||
bathObjFldName: [{required: true, message: '批里对象字段名不能为空!!', trigger: 'change',},], |
|||
pos: [{required: true, message: '词性不能为空!', trigger: 'change',},], |
|||
posName: [{required: true, message: '词性名称不能为空!', trigger: 'change',},], |
|||
freq: [{required: true, message: '频次不能为空!', trigger: 'change',},], |
|||
}) |
|||
const currentForm = ref({ |
|||
operate: 'ADD', |
|||
bathObjTabName:'', |
|||
bathObjFldName:'', |
|||
pos:'', |
|||
posName:'', |
|||
freq:'', |
|||
status:'1' |
|||
}) |
|||
const multSelection = ref([]) |
|||
const dataList = ref([]) |
|||
const total = ref(0) |
|||
function handleQuery(){ |
|||
queryParams.value.pageNum = 1; |
|||
getList() |
|||
} |
|||
function getList(){ |
|||
getCdplbList(queryParams.value).then(res=>{ |
|||
dataList.value = res.data.rows |
|||
total.value = res.data.total |
|||
}) |
|||
} |
|||
function resetQuery(){ |
|||
queryParams.value = { |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
} |
|||
handleQuery() |
|||
} |
|||
function handleAdd(){ |
|||
showDialog.value = true |
|||
currentForm.value ={ |
|||
operate: 'ADD', |
|||
bathObjTabName:'', |
|||
bathObjFldName:'', |
|||
pos:'', |
|||
posName:'', |
|||
freq:'', |
|||
status:'1' |
|||
} |
|||
} |
|||
function handleSave(){ |
|||
proxy.$refs.formRef.validate(valid => { |
|||
if (valid) { |
|||
saveCdplb(currentForm.value).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
showDialog.value = false |
|||
getList() |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
function handleEdit(row){ |
|||
currentForm.value = JSON.parse(JSON.stringify(row)) |
|||
currentForm.value.operate = 'UPDATE' |
|||
showDialog.value = true |
|||
} |
|||
function changeStatus(row){ |
|||
let param = { |
|||
onum: row.onum, |
|||
status: row.status |
|||
} |
|||
saveCdplb(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function multDelete(){ |
|||
let array = [] |
|||
if (multSelection.value.length>0){ |
|||
for (let i = 0; i < multSelection.value.length; i++) { |
|||
array.push(multSelection.value[i].onum) |
|||
} |
|||
handleDelete(array) |
|||
}else{ |
|||
proxy.$modal.msgWarning("请至少选择一条数据") |
|||
} |
|||
|
|||
} |
|||
function handleDelete(array){ |
|||
deleteCdplb(array).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleImport(){ |
|||
|
|||
} |
|||
function handleExport(){ |
|||
|
|||
} |
|||
function handleSelection(val){ |
|||
multSelection.value= val |
|||
} |
|||
onMounted(() => { |
|||
handleQuery() |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
|
|||
</style> |
@ -0,0 +1,263 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form inline :model="queryParams"> |
|||
<el-form-item label="词语:"> |
|||
<el-input v-model="queryParams.term"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性:"> |
|||
<el-input v-model="queryParams.pos"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性名称:"> |
|||
<el-input v-model="queryParams.posName"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-select v-model="queryParams.status" style="width: 200px" clearable> |
|||
<el-option label="正常" key="tsmcb-query-status-1" value="0"></el-option> |
|||
<el-option label="弃用" key="tsmcb-query-status-1" value="1"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
|||
<el-button icon="Refresh" @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-row :gutter="10" class="mb8"> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="primary" |
|||
plain |
|||
icon="Plus" |
|||
@click="handleAdd" |
|||
>新增</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="danger" |
|||
plain |
|||
icon="Minus" |
|||
@click="multDelete" |
|||
>删除</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="info" |
|||
plain |
|||
icon="Upload" |
|||
@click="handleImport" |
|||
>导入</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="warning" |
|||
plain |
|||
icon="Download" |
|||
@click="handleExport" |
|||
>导出</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table :data="dataList" @selection-change="handleSelection"> |
|||
<el-table-column type="selection" width="50" align="center" /> |
|||
<!-- <el-table-column label="序号" align="center" prop="onum"></el-table-column>--> |
|||
<el-table-column label="词语" align="center" prop="term"></el-table-column> |
|||
<el-table-column label="频次" align="center" prop="freq"></el-table-column> |
|||
<el-table-column label="词性" align="center" prop="pos"></el-table-column> |
|||
<el-table-column label="词性名称" align="center" prop="posName"></el-table-column> |
|||
<el-table-column label="状态" align="center" prop="status"> |
|||
<template #default="scope"> |
|||
<el-switch v-model="scope.row.status" |
|||
active-value="1" |
|||
inactive-value="0" @change="changeStatus(scope.row)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="负责人员" align="center" prop="updateBy"></el-table-column> |
|||
<el-table-column label="更新时间" align="center" prop="updateTime"> |
|||
<template #default="scope"> |
|||
<span>{{scope.row.updateTime.replace("T"," ")}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" prop="operation"> |
|||
<template #default="scope"> |
|||
<el-link type="primary" @click="handleEdit(scope.row)" :underline="false">修改</el-link> |
|||
<el-link type="danger" style="margin-left: 10px" @click="handleDelete([scope.row.onum])" :underline="false">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
<pagination |
|||
v-show="total > 0" |
|||
:total="total" |
|||
v-model:page="queryParams.pageNum" |
|||
v-model:limit="queryParams.pageSize" |
|||
@pagination="getList" |
|||
/> |
|||
</el-table> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="currentForm.operate === 'ADD'?'新增词典配置表':'编辑词典配置表'" |
|||
width="500" |
|||
> |
|||
<el-form v-if="showDialog" |
|||
:model="currentForm" |
|||
ref="formRef" |
|||
:rules="rules" |
|||
label-width="125px"> |
|||
<el-form-item label="词语:" prop="term"> |
|||
<el-input |
|||
v-model="currentForm.term" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="频次:" prop="freq"> |
|||
<el-input |
|||
v-model="currentForm.freq" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="词性:" prop="pos"> |
|||
<el-input |
|||
v-model="currentForm.pos" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="词性名称:" prop="posName"> |
|||
<el-input |
|||
v-model="currentForm.posName" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-radio-group v-model="currentForm.status"> |
|||
<el-radio value="1" size="large">正常</el-radio> |
|||
<el-radio value="0" size="large">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSave"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|||
import { getFccbdList, saveFccbd, deleteFccbd } from "@/api/dataint/fccbd" |
|||
|
|||
const { proxy } = getCurrentInstance(); |
|||
|
|||
const queryParams = ref({ |
|||
pos:'', |
|||
posName:'', |
|||
term:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
}) |
|||
const showDialog = ref(false) |
|||
const rules = ref({ |
|||
pos: [{required: true, message: '词性不能为空!', trigger: 'change',},], |
|||
freq: [{required: true, message: '频次不能为空!', trigger: 'change',},], |
|||
posName: [{required: true, message: '词性名称不能为空!', trigger: 'change',},], |
|||
term: [{required: true, message: '词语不能为空!', trigger: 'change',},], |
|||
}) |
|||
const multSelection = ref([]) |
|||
const currentForm = ref({ |
|||
operate: 'ADD', |
|||
pos:'', |
|||
freq:'', |
|||
posName:'', |
|||
term:'', |
|||
status:'1' |
|||
}) |
|||
const dataList = ref([]) |
|||
const total = ref(0) |
|||
function handleQuery(){ |
|||
queryParams.value.pageNum = 1; |
|||
getList() |
|||
} |
|||
function getList(){ |
|||
getFccbdList(queryParams.value).then(res=>{ |
|||
dataList.value = res.data.rows |
|||
total.value = res.data.total |
|||
}) |
|||
} |
|||
function resetQuery(){ |
|||
queryParams.value = { |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
} |
|||
handleQuery() |
|||
} |
|||
function changeStatus(row){ |
|||
let param = { |
|||
onum: row.onum, |
|||
status: row.status |
|||
} |
|||
saveFccbd(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleAdd(){ |
|||
showDialog.value = true |
|||
currentForm.value ={ |
|||
operate: 'ADD', |
|||
pos:'', |
|||
freq:'', |
|||
posName:'', |
|||
term:'', |
|||
status:'1' |
|||
} |
|||
} |
|||
function handleEdit(row){ |
|||
currentForm.value = JSON.parse(JSON.stringify(row)) |
|||
currentForm.value.operate = 'UPDATE' |
|||
showDialog.value = true |
|||
} |
|||
function handleSave(){ |
|||
proxy.$refs.formRef.validate(valid => { |
|||
if (valid) { |
|||
saveFccbd(currentForm.value).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
showDialog.value = false |
|||
getList() |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
function multDelete(){ |
|||
let array = [] |
|||
if (multSelection.value.length>0){ |
|||
for (let i = 0; i < multSelection.value.length; i++) { |
|||
array.push(multSelection.value[i].onum) |
|||
} |
|||
handleDelete(array) |
|||
}else{ |
|||
proxy.$modal.msgWarning("请至少选择一条数据") |
|||
} |
|||
|
|||
} |
|||
function handleDelete(array){ |
|||
deleteFccbd(array).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleImport(){ |
|||
|
|||
} |
|||
function handleExport(){ |
|||
|
|||
} |
|||
function handleSelection(val){ |
|||
multSelection.value= val |
|||
} |
|||
onMounted(() => { |
|||
handleQuery() |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
|
|||
</style> |
@ -0,0 +1,281 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form inline :model="queryParams"> |
|||
<el-form-item label="词性:"> |
|||
<el-input v-model="queryParams.pos"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="类型:"> |
|||
<el-input v-model="queryParams.type"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="标准化替换字符:"> |
|||
<el-input v-model="queryParams.stdRplStr"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-select v-model="queryParams.status" style="width: 200px" clearable> |
|||
<el-option label="正常" key="tsmcb-query-status-1" value="1"></el-option> |
|||
<el-option label="弃用" key="tsmcb-query-status-1" value="0"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
|||
<el-button icon="Refresh" @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-row :gutter="10" class="mb8"> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="primary" |
|||
plain |
|||
icon="Plus" |
|||
@click="handleAdd" |
|||
>新增</el-button> |
|||
</el-col> |
|||
<!-- <el-col :span="1.5">--> |
|||
<!-- <el-button--> |
|||
<!-- type="success"--> |
|||
<!-- plain--> |
|||
<!-- icon="Edit"--> |
|||
<!-- @click="handleEdit"--> |
|||
<!-- >修改</el-button>--> |
|||
<!-- </el-col>--> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="danger" |
|||
plain |
|||
icon="Minus" |
|||
@click="multDelete" |
|||
>删除</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="info" |
|||
plain |
|||
icon="Upload" |
|||
@click="handleImport" |
|||
>导入</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="warning" |
|||
plain |
|||
icon="Download" |
|||
@click="handleExport" |
|||
>导出</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table :data="dataList" @selection-change="handleSelection"> |
|||
<el-table-column type="selection" width="50" align="center" /> |
|||
<!-- <el-table-column label="序号" align="center" prop="onum"></el-table-column>--> |
|||
<el-table-column label="词性" align="center" prop="pos"></el-table-column> |
|||
<el-table-column label="类型" align="center" prop="type"></el-table-column> |
|||
<el-table-column label="标准化替换字符" align="center" prop="stdRplStr"></el-table-column> |
|||
<el-table-column label="前缀补充字符" align="center" prop="prefixSuppStr"></el-table-column> |
|||
<el-table-column label="后缀补充字符" align="center" prop="suffixSuppStr"></el-table-column> |
|||
<el-table-column label="状态" align="center" prop="status"> |
|||
<template #default="scope"> |
|||
<el-switch v-model="scope.row.status" |
|||
active-value="1" |
|||
inactive-value="0" @change="changeStatus(scope.row)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="负责人员" align="center" prop="updateBy"></el-table-column> |
|||
<el-table-column label="更新时间" align="center" prop="updateTime"> |
|||
<template #default="scope"> |
|||
<span>{{scope.row.updateTime.replace("T"," ")}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" prop="operation"> |
|||
<template #default="scope"> |
|||
<el-link type="primary" @click="handleEdit(scope.row)" :underline="false">修改</el-link> |
|||
<el-link type="danger" style="margin-left: 10px" @click="handleDelete([scope.row.onum])" :underline="false">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<pagination |
|||
v-show="total > 0" |
|||
:total="total" |
|||
v-model:page="queryParams.pageNum" |
|||
v-model:limit="queryParams.pageSize" |
|||
@pagination="getList" |
|||
/> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="currentForm.operate === 'ADD'?'新增词性文本替换':'编辑词性文本替换'" |
|||
width="500" |
|||
> |
|||
<el-form |
|||
v-if="showDialog" |
|||
:model="currentForm" |
|||
ref="formRef" |
|||
:rules="rules" |
|||
label-width="125px"> |
|||
<el-form-item label="词性:" prop="pos"> |
|||
<el-input |
|||
v-model="currentForm.pos" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="类型:" prop="type"> |
|||
<el-input |
|||
v-model="currentForm.type" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="标准化替换字符:" prop="stdRplStr"> |
|||
<el-input |
|||
v-model="currentForm.stdRplStr" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="前缀补充字符:" prop="prefixSuppStr"> |
|||
<el-input |
|||
v-model="currentForm.prefixSuppStr" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="后缀补充字符:" prop="suffixSuppStr"> |
|||
<el-input |
|||
v-model="currentForm.suffixSuppStr" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态:"> |
|||
<el-radio-group v-model="currentForm.status"> |
|||
<el-radio value="1" size="large">正常</el-radio> |
|||
<el-radio value="0" size="large">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSave"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|||
import { getTsmcbList, saveTsmcb, deleteTsmcb } from "@/api/dataint/tsmcb" |
|||
|
|||
const { proxy } = getCurrentInstance(); |
|||
|
|||
const queryParams = ref({ |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
}) |
|||
const currentForm = ref({ |
|||
operate: 'ADD', |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
prefixSuppStr:'', |
|||
suffixSuppStr:'', |
|||
status:'1' |
|||
}) |
|||
const rules = ref({ |
|||
pos: [{required: true, message: '词性不能为空!', trigger: 'change',},], |
|||
type: [{required: true, message: '类型不能为空!', trigger: 'change',},], |
|||
stdRplStr: [{required: true, message: '标准化替换字符不能为空!', trigger: 'change',},], |
|||
prefixSuppStr: [{required: true, message: '前缀补充字符不能为空!', trigger: 'change',},], |
|||
suffixSuppStr: [{required: true, message: '后缀补充字符不能为空!', trigger: 'change',},], |
|||
}) |
|||
const multSelection =ref([]) |
|||
const dataList = ref([]) |
|||
const total = ref(0) |
|||
const showDialog = ref(false) |
|||
function handleQuery(){ |
|||
queryParams.value.pageNum = 1; |
|||
getList() |
|||
} |
|||
function getList(){ |
|||
getTsmcbList(queryParams.value).then(res=>{ |
|||
dataList.value = res.data.rows |
|||
total.value = res.data.total |
|||
}) |
|||
} |
|||
function resetQuery(){ |
|||
queryParams.value = { |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
} |
|||
handleQuery() |
|||
} |
|||
function handleAdd(){ |
|||
showDialog.value = true |
|||
currentForm.value ={ |
|||
operate: 'ADD', |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
prefixSuppStr:'', |
|||
suffixSuppStr:'', |
|||
status:'1' |
|||
} |
|||
} |
|||
function handleEdit(row){ |
|||
currentForm.value = JSON.parse(JSON.stringify(row)) |
|||
currentForm.value.operate = 'UPDATE' |
|||
showDialog.value = true |
|||
} |
|||
function changeStatus(row){ |
|||
let param = { |
|||
onum: row.onum, |
|||
status: row.status |
|||
} |
|||
saveTsmcb(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleSave(){ |
|||
proxy.$refs.formRef.validate(valid => { |
|||
if (valid) { |
|||
saveTsmcb(currentForm.value).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
showDialog.value = false |
|||
getList() |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
function multDelete(){ |
|||
let array = [] |
|||
if (multSelection.value.length>0){ |
|||
for (let i = 0; i < multSelection.value.length; i++) { |
|||
array.push(multSelection.value[i].onum) |
|||
} |
|||
handleDelete(array) |
|||
}else{ |
|||
proxy.$modal.msgWarning("请至少选择一条数据") |
|||
} |
|||
|
|||
} |
|||
function handleDelete(array){ |
|||
deleteTsmcb(array).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleImport(){ |
|||
|
|||
} |
|||
function handleExport(){ |
|||
|
|||
} |
|||
function handleSelection(val){ |
|||
multSelection.value= val |
|||
} |
|||
onMounted(() => { |
|||
handleQuery() |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
|
|||
</style> |
@ -0,0 +1,451 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="4" :xs="24"> |
|||
<div class="head-container"> |
|||
<el-input |
|||
v-model="dasset" |
|||
placeholder="请输入数据资产名称" |
|||
clearable |
|||
prefix-icon="Search" |
|||
style="margin-bottom: 20px" |
|||
/> |
|||
</div> |
|||
<div class="head-container"> |
|||
<el-tree |
|||
:data="dassetOptions" |
|||
:props="{ label: 'dassetName', children: 'children' }" |
|||
:expand-on-click-node="false" |
|||
:filter-node-method="filterNode" |
|||
ref="deptTreeRef" |
|||
node-key="onum" |
|||
highlight-current |
|||
default-expand-all |
|||
@node-click="handleNodeClick" |
|||
> |
|||
<template #default="{ data }"> |
|||
<div class="custom-tree-node" @mouseenter="data.show = true" @mouseleave="data.show = false"> |
|||
<span>{{ data.dassetName }}</span> |
|||
<div v-if="data.parentCode === '0' && data.show"> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="primary" icon="Plus" @click="handleAddTree(data)"></el-link> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|||
</div> |
|||
<div v-if="data.parentCode !== '0' && data.show"> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="danger" icon="Delete" @click="handleDeleteTree(data)"></el-link> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
</el-tree> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="20" :xs="24"> |
|||
<el-form inline :model="queryParams"> |
|||
<el-form-item label="关键词:"> |
|||
<el-input v-model="queryParams.keyword"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="类型:"> |
|||
<el-input v-model="queryParams.type"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="字段状态:"> |
|||
<el-select v-model="queryParams.status" style="width: 200px" clearable> |
|||
<el-option label="正常" key="sscf-query-status-1" value="1"></el-option> |
|||
<el-option label="弃用" key="sscf-query-status-2" value="0"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
|||
<el-button icon="Refresh" @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-row :gutter="10" class="mb8"> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="primary" |
|||
plain |
|||
icon="Plus" |
|||
@click="handleAdd" |
|||
>新增</el-button> |
|||
</el-col> |
|||
<!-- <el-col :span="1.5">--> |
|||
<!-- <el-button--> |
|||
<!-- type="success"--> |
|||
<!-- plain--> |
|||
<!-- icon="Edit"--> |
|||
<!-- @click="handleEdit"--> |
|||
<!-- >修改</el-button>--> |
|||
<!-- </el-col>--> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="danger" |
|||
plain |
|||
icon="Minus" |
|||
@click="multDelete" |
|||
>删除</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="info" |
|||
plain |
|||
icon="Upload" |
|||
@click="handleImport" |
|||
>导入</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="warning" |
|||
plain |
|||
icon="Download" |
|||
@click="handleExport" |
|||
>导出</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table :data="dataList" @selection-change="handleSelection"> |
|||
<el-table-column type="selection" width="50" align="center" /> |
|||
<!-- <el-table-column label="序号" align="center" prop="onum"></el-table-column>--> |
|||
<el-table-column label="关键词" align="center" prop="keyword"></el-table-column> |
|||
<el-table-column label="算法" align="center" prop="algorithm"></el-table-column> |
|||
<el-table-column label="按顺序匹配标志" align="center" prop="order"></el-table-column> |
|||
<el-table-column label="整句" align="center" prop="wholeSentence"></el-table-column> |
|||
<el-table-column label="类型" align="center" prop="type"></el-table-column> |
|||
<el-table-column label="补充说明" align="center" prop="suppExpl"></el-table-column> |
|||
<el-table-column label="状态" align="center" prop="status"> |
|||
<template #default="scope"> |
|||
<el-switch v-model="scope.row.status" |
|||
active-value="1" |
|||
inactive-value="0" @change="changeStatus(scope.row)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="负责人员" align="center" prop="updateBy"></el-table-column> |
|||
<el-table-column label="更新时间" align="center" prop="updateTime"> |
|||
<template #default="scope"> |
|||
<span>{{scope.row.updateTime.replace("T"," ")}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" prop="operation"> |
|||
<template #default="scope"> |
|||
<el-link type="primary" @click="handleEdit(scope.row)" :underline="false">修改</el-link> |
|||
<el-link type="danger" style="margin-left: 10px" @click="handleDelete([scope.row.onum])" :underline="false">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<pagination |
|||
v-show="total > 0" |
|||
:total="total" |
|||
v-model:page="queryParams.pageNum" |
|||
v-model:limit="queryParams.pageSize" |
|||
@pagination="getList" |
|||
/> |
|||
</el-col> |
|||
</el-row> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="currentForm.operate === 'ADD'?'新增字段':'编辑字段'" |
|||
width="500" |
|||
> |
|||
<el-form |
|||
v-if="showDialog" |
|||
:model="currentForm" |
|||
ref="formRef" |
|||
:rules="rules" |
|||
label-width="125px"> |
|||
<el-form-item label="归属资产名:" prop="dassetId"> |
|||
<el-select v-model="currentForm.dassetId" style="width: 100%;" clearable> |
|||
<el-option v-for="item in dassetList" :key="item.onum" :value="item.onum" :label="item.dassetName"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="关键词:" prop="keyword"> |
|||
<el-input |
|||
v-model="currentForm.keyword" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="字段状态:"> |
|||
<el-radio-group v-model="currentForm.status"> |
|||
<el-radio value="1" size="large">正常</el-radio> |
|||
<el-radio value="0" size="large">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="算法:"> |
|||
<el-radio-group v-model="currentForm.algorithm"> |
|||
<el-radio value="包含" size="large">包含</el-radio> |
|||
<el-radio value="等于" size="large">等于</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="按顺序匹配标志:"> |
|||
<el-switch v-model="currentForm.order" |
|||
active-value="True" |
|||
inactive-value="False" /> |
|||
</el-form-item> |
|||
<el-form-item label="整句:"> |
|||
<el-switch v-model="currentForm.wholeSentence" |
|||
active-value="True" |
|||
inactive-value="False" /> |
|||
</el-form-item> |
|||
<el-form-item label="类型:"> |
|||
<el-radio-group v-model="currentForm.type"> |
|||
<el-radio value="补充" size="large">补充</el-radio> |
|||
<el-radio value="替换" size="large">替换</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="补充说明:"> |
|||
<el-input |
|||
v-model="currentForm.suppExpl" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSave"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
<el-dialog |
|||
v-model="showTreeDialog" |
|||
:title="currentTreeNode.operate === 'ADD'?'新增目录':'编辑目录'" |
|||
width="500" |
|||
> |
|||
<el-form |
|||
v-if="showTreeDialog" |
|||
:model="currentTreeNode" |
|||
ref="formRef" |
|||
:rules="dassetRules" |
|||
label-width="125px"> |
|||
<el-form-item label="目录编码:" prop="dassetCode"> |
|||
<el-input |
|||
v-model="currentTreeNode.dassetCode" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="目录名称:" prop="dassetName"> |
|||
<el-input |
|||
v-model="currentTreeNode.dassetName" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showTreeDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSaveTree"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|||
import { getSscfList, saveSscf, deleteSscf, get_dasset_tree, saveDassetTreeNode } from "@/api/dataint/sscf" |
|||
|
|||
const { proxy } = getCurrentInstance(); |
|||
|
|||
const queryParams = ref({ |
|||
dassetId:'', |
|||
keyword:'', |
|||
type:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
}) |
|||
const currentForm = ref({ |
|||
operate: 'ADD', |
|||
dassetId:'', |
|||
status:'1', |
|||
keyword:'', |
|||
algorithm:'包含', |
|||
order:'True', |
|||
wholeSentence:'True', |
|||
type:'补充', |
|||
suppExpl:'' |
|||
}) |
|||
const dassetList = ref([]) |
|||
const rules = ref({ |
|||
dassetId: [{required: true, message: '归属资产不能为空!', trigger: 'change',},], |
|||
keyword: [{required: true, message: '关键词不能为空!', trigger: 'change',},], |
|||
}) |
|||
const dassetRules = ref({ |
|||
dassetCode: [{required: true, message: 'code不能为空!', trigger: 'change',},], |
|||
dassetName: [{required: true, message: '名称不能为空!', trigger: 'change',},], |
|||
}) |
|||
const multSelection =ref([]) |
|||
const dassetOptions = ref([]) |
|||
const dasset =ref('') |
|||
const dataList = ref([]) |
|||
const total = ref(0) |
|||
const showDialog = ref(false) |
|||
const showTreeDialog = ref(false) |
|||
const currentTreeNode = ref({}) |
|||
function handleAddTree(){ |
|||
showTreeDialog.value = true |
|||
currentTreeNode.value = { |
|||
operate: 'ADD', |
|||
dassetCode: '', |
|||
dassetName: '' |
|||
} |
|||
} |
|||
function handleEditTree(data){ |
|||
currentTreeNode.value = data |
|||
currentTreeNode.value.operate = 'UPDATE' |
|||
showTreeDialog.value = true |
|||
} |
|||
function handleSaveTree(){ |
|||
let param = { |
|||
operate: currentTreeNode.value.operate, |
|||
dassetCode: currentTreeNode.value.dassetCode, |
|||
dassetName: currentTreeNode.value.dassetName, |
|||
onum: currentTreeNode.value.onum |
|||
} |
|||
saveDassetTreeNode(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功") |
|||
showTreeDialog.value = false |
|||
get_tree_data() |
|||
}) |
|||
} |
|||
function handleDeleteTree(data){ |
|||
let param = { |
|||
onum: data.onum, |
|||
dassetCode: data.dassetCode, |
|||
operate: 'DELETE' |
|||
} |
|||
saveDassetTreeNode(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功") |
|||
get_tree_data() |
|||
}) |
|||
} |
|||
function handleQuery(){ |
|||
queryParams.value.pageNum = 1; |
|||
getList() |
|||
} |
|||
function getList(){ |
|||
getSscfList(queryParams.value).then(res=>{ |
|||
dataList.value = res.data.rows |
|||
total.value = res.data.total |
|||
}) |
|||
} |
|||
/** 节点单击事件 */ |
|||
function handleNodeClick(data) { |
|||
queryParams.value.dassetId = data.onum; |
|||
handleQuery(); |
|||
} |
|||
function resetQuery(){ |
|||
queryParams.value = { |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
} |
|||
handleQuery() |
|||
} |
|||
function handleAdd(){ |
|||
showDialog.value = true |
|||
currentForm.value ={ |
|||
operate: 'ADD', |
|||
dassetId:'', |
|||
status:'1', |
|||
keyword:'', |
|||
algorithm:'包含', |
|||
order:'True', |
|||
wholeSentence:'True', |
|||
type:'补充', |
|||
suppExpl:'' |
|||
} |
|||
} |
|||
function handleEdit(row){ |
|||
currentForm.value = JSON.parse(JSON.stringify(row)) |
|||
currentForm.value.operate = 'UPDATE' |
|||
showDialog.value = true |
|||
} |
|||
function changeStatus(row){ |
|||
let param = { |
|||
onum: row.onum, |
|||
status: row.status |
|||
} |
|||
saveSscf(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleSave(){ |
|||
proxy.$refs.formRef.validate(valid => { |
|||
if (valid) { |
|||
saveSscf(currentForm.value).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
showDialog.value = false |
|||
getList() |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
function multDelete(){ |
|||
let array = [] |
|||
if (multSelection.value.length>0){ |
|||
for (let i = 0; i < multSelection.value.length; i++) { |
|||
array.push(multSelection.value[i].onum) |
|||
} |
|||
handleDelete(array) |
|||
}else{ |
|||
proxy.$modal.msgWarning("请至少选择一条数据") |
|||
} |
|||
|
|||
} |
|||
function handleDelete(array){ |
|||
deleteSscf(array).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleImport(){ |
|||
|
|||
} |
|||
function handleExport(){ |
|||
|
|||
} |
|||
function handleSelection(val){ |
|||
multSelection.value= val |
|||
} |
|||
function get_tree_data(){ |
|||
get_dasset_tree().then(res=>{ |
|||
let treeList = res.data |
|||
if(treeList.length > 0){ |
|||
let children = [] |
|||
dassetOptions.value = [] |
|||
for (let i = 0; i < treeList.length; i++) { |
|||
if (treeList[i].dassetCode === "1"){ |
|||
dassetOptions.value.push(treeList[i]) |
|||
}else { |
|||
children.push(treeList[i]) |
|||
} |
|||
} |
|||
dassetOptions.value[0].children = children |
|||
dassetList.value = children |
|||
} |
|||
}) |
|||
} |
|||
/** 通过条件过滤节点 */ |
|||
const filterNode = (value, data) => { |
|||
if (!value) return true; |
|||
return data.label.indexOf(value) !== -1; |
|||
}; |
|||
|
|||
onMounted(() => { |
|||
get_tree_data() |
|||
handleQuery() |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
.custom-tree-node { |
|||
flex: 1; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
.tree-node__action { |
|||
padding: 0 8px; |
|||
display: flex; |
|||
justify-content: flex-end; |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,473 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="4" :xs="24"> |
|||
<div class="head-container"> |
|||
<el-input |
|||
v-model="dasset" |
|||
placeholder="请输入数据资产名称" |
|||
clearable |
|||
prefix-icon="Search" |
|||
style="margin-bottom: 20px" |
|||
/> |
|||
</div> |
|||
<div class="head-container"> |
|||
<el-tree |
|||
:data="dassetOptions" |
|||
:props="{ label: 'dassetName', children: 'children' }" |
|||
:expand-on-click-node="false" |
|||
:filter-node-method="filterNode" |
|||
ref="deptTreeRef" |
|||
node-key="onum" |
|||
highlight-current |
|||
default-expand-all |
|||
@node-click="handleNodeClick" |
|||
> |
|||
<template #default="{ data }"> |
|||
<div class="custom-tree-node" @mouseenter="data.show = true" @mouseleave="data.show = false"> |
|||
<span>{{ data.dassetName }}</span> |
|||
<div v-if="data.parentCode === '0' && data.show"> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="primary" icon="Plus" @click="handleAddTree(data)"></el-link> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|||
</div> |
|||
<div v-if="data.parentCode !== '0' && data.show"> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="success" icon="Edit" @click="handleEditTree(data)"></el-link> |
|||
<el-link :underline="false" style="font-size: 16px;margin: 5px" type="danger" icon="Delete" @click="handleDeleteTree(data)"></el-link> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
</el-tree> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="20" :xs="24"> |
|||
<el-form inline :model="queryParams"> |
|||
<el-form-item label="表名称:"> |
|||
<el-input v-model="queryParams.stabName"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="查询语句:"> |
|||
<el-input v-model="queryParams.squery"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="分析方法:"> |
|||
<el-input v-model="queryParams.sanalPlan"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="字段状态:"> |
|||
<el-select v-model="queryParams.status" style="width: 200px" clearable> |
|||
<el-option label="正常" key="vecset-query-status-1" value="1"></el-option> |
|||
<el-option label="弃用" key="vecset-query-status-2" value="0"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
|||
<el-button icon="Refresh" @click="resetQuery">重置</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-row :gutter="10" class="mb8"> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="primary" |
|||
plain |
|||
icon="Plus" |
|||
@click="handleAdd" |
|||
>新增</el-button> |
|||
</el-col> |
|||
<!-- <el-col :span="1.5">--> |
|||
<!-- <el-button--> |
|||
<!-- type="success"--> |
|||
<!-- plain--> |
|||
<!-- icon="Edit"--> |
|||
<!-- @click="handleEdit"--> |
|||
<!-- >修改</el-button>--> |
|||
<!-- </el-col>--> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="danger" |
|||
plain |
|||
icon="Minus" |
|||
@click="multDelete" |
|||
>删除</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="info" |
|||
plain |
|||
icon="Upload" |
|||
@click="handleImport" |
|||
>导入</el-button> |
|||
</el-col> |
|||
<el-col :span="1.5"> |
|||
<el-button |
|||
type="warning" |
|||
plain |
|||
icon="Download" |
|||
@click="handleExport" |
|||
>导出</el-button> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table :data="dataList" @selection-change="handleSelection"> |
|||
<el-table-column type="selection" width="50" align="center" /> |
|||
<!-- <el-table-column label="序号" align="center" prop="onum"></el-table-column>--> |
|||
<el-table-column label="表名称" align="center" prop="stabName"></el-table-column> |
|||
<el-table-column label="查询语句" align="center" prop="squery"></el-table-column> |
|||
<el-table-column label="分析方法" align="center" prop="sanalPlan"></el-table-column> |
|||
<el-table-column label="意图词" align="center" prop="sintntTerm"></el-table-column> |
|||
<el-table-column label="参考sql" align="center" prop="ssql"></el-table-column> |
|||
<el-table-column label="相似阈值" align="center" prop="simThrsh"></el-table-column> |
|||
<el-table-column label="状态" align="center" prop="status"> |
|||
<template #default="scope"> |
|||
<el-switch v-model="scope.row.status" |
|||
active-value="1" |
|||
inactive-value="0" @change="changeStatus(scope.row)" /> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="负责人员" align="center" prop="updateBy"></el-table-column> |
|||
<el-table-column label="更新时间" align="center" prop="updateTime"> |
|||
<template #default="scope"> |
|||
<span>{{scope.row.updateTime.replace("T"," ")}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" align="center" prop="operation"> |
|||
<template #default="scope"> |
|||
<el-link type="primary" @click="handleEdit(scope.row)" :underline="false">修改</el-link> |
|||
<el-link type="danger" style="margin-left: 10px" @click="handleDelete([scope.row.onum])" :underline="false">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<pagination |
|||
v-show="total > 0" |
|||
:total="total" |
|||
v-model:page="queryParams.pageNum" |
|||
v-model:limit="queryParams.pageSize" |
|||
@pagination="getList" |
|||
/> |
|||
</el-col> |
|||
</el-row> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="currentForm.operate === 'ADD'?'新增字段':'编辑字段'" |
|||
width="800" |
|||
> |
|||
<el-form |
|||
v-if="showDialog" |
|||
:model="currentForm" |
|||
ref="formRef" |
|||
inline |
|||
:rules="rules" |
|||
label-width="100px"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="归属资产名:" prop="dassetId"> |
|||
<el-select v-model="currentForm.dassetId" style="width: 250px;" clearable> |
|||
<el-option v-for="item in dassetList" :key="item.onum" :value="item.onum" :label="item.dassetName"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="表名:"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.stabName" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="查询语句:" prop="squery"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.squery" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="分析方法:"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.sanalPlan" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="参考sql:"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.ssql" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="意图词:"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.sintntTerm" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="字段状态:"> |
|||
<el-radio-group v-model="currentForm.status"> |
|||
<el-radio value="1" size="large">正常</el-radio> |
|||
<el-radio value="0" size="large">停用</el-radio> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="相似阈值:"> |
|||
<el-input style="width: 250px;" |
|||
v-model="currentForm.simThrsh" clearable |
|||
></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSave"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
<el-dialog |
|||
v-model="showTreeDialog" |
|||
:title="currentTreeNode.operate === 'ADD'?'新增目录':'编辑目录'" |
|||
width="500" |
|||
> |
|||
<el-form |
|||
v-if="showTreeDialog" |
|||
:model="currentTreeNode" |
|||
ref="formRef" |
|||
:rules="dassetRules" |
|||
label-width="125px"> |
|||
<el-form-item label="目录编码:" prop="dassetCode"> |
|||
<el-input |
|||
v-model="currentTreeNode.dassetCode" clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="目录名称:" prop="dassetName"> |
|||
<el-input |
|||
v-model="currentTreeNode.dassetName" clearable |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="showTreeDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="handleSaveTree"> |
|||
确定 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, nextTick, computed, watch, reactive, onMounted } from 'vue' |
|||
import { getVecsetList, saveVecset, deleteVecset } from "@/api/dataint/vecset" |
|||
import { get_dasset_tree, saveDassetTreeNode } from "@/api/dataint/sscf" |
|||
|
|||
const { proxy } = getCurrentInstance(); |
|||
|
|||
const queryParams = ref({ |
|||
dassetId:'', |
|||
stabName:'', |
|||
squery:'', |
|||
sanalPlan:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
}) |
|||
const currentForm = ref({ |
|||
operate: 'ADD', |
|||
dassetId:'', |
|||
stabName:'', |
|||
squery:'', |
|||
sanalPlan:'', |
|||
ssql:'', |
|||
sintntTerm:'', |
|||
status:'1', |
|||
simThrsh:'', |
|||
}) |
|||
const rules = ref({ |
|||
dassetId: [{required: true, message: '归属资产不能为空!', trigger: 'change',},], |
|||
squery: [{required: true, message: '查询语句不能为空!', trigger: 'change',},], |
|||
}) |
|||
const dassetRules = ref({ |
|||
dassetCode: [{required: true, message: 'code不能为空!', trigger: 'change',},], |
|||
dassetName: [{required: true, message: '名称不能为空!', trigger: 'change',},], |
|||
}) |
|||
const multSelection =ref([]) |
|||
const dassetOptions = ref([]) |
|||
const dassetList = ref([]) |
|||
const dasset =ref('') |
|||
const dataList = ref([]) |
|||
const total = ref(0) |
|||
const showDialog = ref(false) |
|||
const showTreeDialog = ref(false) |
|||
const currentTreeNode = ref({}) |
|||
function handleAddTree(){ |
|||
showTreeDialog.value = true |
|||
currentTreeNode.value = { |
|||
operate: 'ADD', |
|||
dassetCode: '', |
|||
dassetName: '' |
|||
} |
|||
} |
|||
function handleEditTree(data){ |
|||
currentTreeNode.value = data |
|||
currentTreeNode.value.operate = 'UPDATE' |
|||
showTreeDialog.value = true |
|||
} |
|||
function handleSaveTree(){ |
|||
let param = { |
|||
operate: currentTreeNode.value.operate, |
|||
dassetCode: currentTreeNode.value.dassetCode, |
|||
dassetName: currentTreeNode.value.dassetName, |
|||
onum: currentTreeNode.value.onum |
|||
} |
|||
saveDassetTreeNode(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功") |
|||
showTreeDialog.value = false |
|||
get_tree_data() |
|||
}) |
|||
} |
|||
function handleDeleteTree(data){ |
|||
let param = { |
|||
onum: data.onum, |
|||
dassetCode: data.dassetCode, |
|||
operate: 'DELETE' |
|||
} |
|||
saveDassetTreeNode(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功") |
|||
get_tree_data() |
|||
}) |
|||
} |
|||
function handleQuery(){ |
|||
queryParams.value.pageNum = 1; |
|||
getList() |
|||
} |
|||
function getList(){ |
|||
getVecsetList(queryParams.value).then(res=>{ |
|||
dataList.value = res.data.rows |
|||
total.value = res.data.total |
|||
}) |
|||
} |
|||
/** 节点单击事件 */ |
|||
function handleNodeClick(data) { |
|||
queryParams.value.dassetId = data.onum; |
|||
handleQuery(); |
|||
} |
|||
function resetQuery(){ |
|||
queryParams.value = { |
|||
pos:'', |
|||
type:'', |
|||
stdRplStr:'', |
|||
status:'', |
|||
pageNum:1, |
|||
pageSize:10 |
|||
} |
|||
handleQuery() |
|||
} |
|||
function handleAdd(){ |
|||
showDialog.value = true |
|||
currentForm.value ={ |
|||
operate: 'ADD', |
|||
dassetId:'', |
|||
status:'1', |
|||
keyword:'', |
|||
algorithm:'包含', |
|||
order:'True', |
|||
wholeSentence:'True', |
|||
type:'补充', |
|||
suppExpl:'' |
|||
} |
|||
} |
|||
function handleEdit(row){ |
|||
currentForm.value = JSON.parse(JSON.stringify(row)) |
|||
currentForm.value.operate = 'UPDATE' |
|||
showDialog.value = true |
|||
} |
|||
function changeStatus(row){ |
|||
let param = { |
|||
onum: row.onum, |
|||
status: row.status |
|||
} |
|||
saveVecset(param).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleSave(){ |
|||
proxy.$refs.formRef.validate(valid => { |
|||
if (valid) { |
|||
saveVecset(currentForm.value).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
showDialog.value = false |
|||
getList() |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
function multDelete(){ |
|||
let array = [] |
|||
if (multSelection.value.length>0){ |
|||
for (let i = 0; i < multSelection.value.length; i++) { |
|||
array.push(multSelection.value[i].onum) |
|||
} |
|||
handleDelete(array) |
|||
}else{ |
|||
proxy.$modal.msgWarning("请至少选择一条数据") |
|||
} |
|||
|
|||
} |
|||
function handleDelete(array){ |
|||
deleteVecset(array).then(res=>{ |
|||
proxy.$modal.msgSuccess("操作成功"); |
|||
getList() |
|||
}) |
|||
} |
|||
function handleImport(){ |
|||
|
|||
} |
|||
function handleExport(){ |
|||
|
|||
} |
|||
function handleSelection(val){ |
|||
multSelection.value= val |
|||
} |
|||
function get_tree_data(){ |
|||
get_dasset_tree().then(res=>{ |
|||
let treeList = res.data |
|||
if(treeList.length > 0){ |
|||
let children = [] |
|||
dassetOptions.value = [] |
|||
for (let i = 0; i < treeList.length; i++) { |
|||
if (treeList[i].dassetCode === "1"){ |
|||
dassetOptions.value.push(treeList[i]) |
|||
}else { |
|||
children.push(treeList[i]) |
|||
} |
|||
} |
|||
dassetOptions.value[0].children = children |
|||
dassetList.value = children |
|||
} |
|||
}) |
|||
} |
|||
/** 通过条件过滤节点 */ |
|||
const filterNode = (value, data) => { |
|||
if (!value) return true; |
|||
return data.label.indexOf(value) !== -1; |
|||
}; |
|||
|
|||
onMounted(() => { |
|||
get_tree_data() |
|||
handleQuery() |
|||
}) |
|||
</script> |
|||
<style scoped lang="scss"> |
|||
.custom-tree-node { |
|||
flex: 1; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
.tree-node__action { |
|||
padding: 0 8px; |
|||
display: flex; |
|||
justify-content: flex-end; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue