1. 新增软删除功能
2. Form组件新增设置单个值功能
This commit is contained in:
parent
cbfd2e4074
commit
49d9ca7652
@ -3,6 +3,7 @@ import { ElForm } from 'element-plus'
|
||||
|
||||
export interface FormExpose {
|
||||
setValues: (data: Recordable) => void
|
||||
setValue: (key: string, value: any) => void
|
||||
setProps: (props: Recordable) => void
|
||||
delSchema: (field: string) => void
|
||||
addSchema: (formSchema: FormSchema, index?: number) => void
|
||||
|
@ -75,6 +75,11 @@ export default defineComponent({
|
||||
formModel.value = Object.assign(unref(formModel), data)
|
||||
}
|
||||
|
||||
// 对表单单个属性赋值
|
||||
const setValue = (key: string, value: any) => {
|
||||
formModel.value[key] = value
|
||||
}
|
||||
|
||||
const setProps = (props: FormProps = {}) => {
|
||||
mergeProps.value = Object.assign(unref(mergeProps), props)
|
||||
outsideProps.value = props
|
||||
@ -115,6 +120,7 @@ export default defineComponent({
|
||||
|
||||
expose({
|
||||
setValues,
|
||||
setValue,
|
||||
formModel,
|
||||
setProps,
|
||||
delSchema,
|
||||
|
@ -32,6 +32,7 @@ export const useForm = (props?: FormProps) => {
|
||||
const methods: {
|
||||
setProps: (props: Recordable) => void
|
||||
setValues: (data: Recordable) => void
|
||||
setValue: (key: string, value: any) => void
|
||||
getFormData: <T = Recordable | undefined>() => Promise<T>
|
||||
setSchema: (schemaProps: FormSetPropsType[]) => void
|
||||
addSchema: (formSchema: FormSchema, index?: number) => void
|
||||
@ -46,13 +47,15 @@ export const useForm = (props?: FormProps) => {
|
||||
const form = await getForm()
|
||||
form?.setValues(data)
|
||||
},
|
||||
setValue: async (key: string, value: any) => {
|
||||
const form = await getForm()
|
||||
form?.setValue(key, value)
|
||||
},
|
||||
/**
|
||||
* @param schemaProps 需要设置的schemaProps
|
||||
*/
|
||||
setSchema: async (schemaProps: FormSetPropsType[]) => {
|
||||
const form = await getForm()
|
||||
console.log(1111111111, schemaProps)
|
||||
console.log(222222, form)
|
||||
form?.setSchema(schemaProps)
|
||||
},
|
||||
|
||||
|
@ -7,16 +7,17 @@
|
||||
# @desc : 数据库 增删改查操作
|
||||
|
||||
# sqlalchemy 查询操作:https://segmentfault.com/a/1190000016767008
|
||||
# sqlalchemy 增删改操作:https://www.osgeo.cn/sqlalchemy/tutorial/orm_data_manipulation.html#updating-orm-objects
|
||||
# SQLAlchemy lazy load和eager load: https://www.jianshu.com/p/dfad7c08c57a
|
||||
# Mysql中内连接,左连接和右连接的区别总结:https://www.cnblogs.com/restartyang/articles/9080993.html
|
||||
# SQLAlchemy join 内连接
|
||||
# selectinload 官方文档:
|
||||
# https://www.osgeo.cn/sqlalchemy/orm/loading_relationships.html?highlight=selectinload#sqlalchemy.orm.selectinload
|
||||
|
||||
import datetime
|
||||
from typing import List
|
||||
from fastapi import HTTPException
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
from sqlalchemy import func, delete, and_
|
||||
from sqlalchemy import func, delete, update
|
||||
from sqlalchemy.future import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import selectinload
|
||||
@ -61,11 +62,11 @@ class DalBase:
|
||||
if key != "order" and key != "return_none" and value and getattr(self.model, key, None):
|
||||
kwargs_exist = True
|
||||
break
|
||||
sql = select(self.model).where(self.model.delete_datetime.is_(None))
|
||||
if data_id or kwargs_exist or keys_exist:
|
||||
sql = select(self.model).where(self.model.id == data_id) if data_id else select(self.model)
|
||||
if data_id:
|
||||
sql = sql.where(self.model.id == data_id)
|
||||
sql = self.add_filter_condition(sql, keys, options, **kwargs)
|
||||
else:
|
||||
sql = select(self.model)
|
||||
if order and order == "desc":
|
||||
sql = sql.order_by(self.model.create_datetime.desc())
|
||||
queryset = await self.db.execute(sql)
|
||||
@ -97,7 +98,9 @@ class DalBase:
|
||||
order_field = kwargs.get("order_field", None)
|
||||
return_objs = kwargs.get("return_objs", False)
|
||||
start_sql = kwargs.get("start_sql", None)
|
||||
sql = self.add_filter_condition(start_sql if isinstance(start_sql, Select) else select(self.model), keys, options, **kwargs)
|
||||
if not isinstance(start_sql, Select):
|
||||
start_sql = select(self.model).where(self.model.delete_datetime.is_(None))
|
||||
sql = self.add_filter_condition(start_sql, keys, options, **kwargs)
|
||||
if order_field and order == "desc":
|
||||
sql = sql.order_by(getattr(self.model, order_field).desc(), self.model.id.desc())
|
||||
elif order_field:
|
||||
@ -115,7 +118,7 @@ class DalBase:
|
||||
|
||||
async def get_count(self, keys: dict = None, **kwargs):
|
||||
"""获取数据总数"""
|
||||
sql = select(func.count(self.model.id).label('total'))
|
||||
sql = select(func.count(self.model.id).label('total')).where(self.model.delete_datetime.is_(None))
|
||||
sql = self.add_filter_condition(sql, keys, **kwargs)
|
||||
queryset = await self.db.execute(sql)
|
||||
return queryset.one()['total']
|
||||
@ -153,12 +156,17 @@ class DalBase:
|
||||
return schema.from_orm(obj).dict()
|
||||
return self.out_dict(obj)
|
||||
|
||||
async def delete_datas(self, ids: List[int]):
|
||||
async def delete_datas(self, ids: List[int], soft: bool = False):
|
||||
"""
|
||||
删除多个数据
|
||||
删除多条数据
|
||||
:param ids: 数据集
|
||||
:param soft: 是否执行软删除
|
||||
"""
|
||||
for data_id in ids:
|
||||
await self.db.execute(delete(self.model).where(self.model.id == data_id))
|
||||
if soft:
|
||||
await self.db.execute(update(self.model).where(self.model.id.in_(ids)).
|
||||
values(delete_datetime=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
|
||||
else:
|
||||
await self.db.execute(delete(self.model).where(self.model.id.in_(ids)))
|
||||
|
||||
def add_filter_condition(self, sql: select, keys: dict = None, options: list = None, **kwargs) -> select:
|
||||
"""
|
||||
|
@ -21,3 +21,4 @@ class BaseModel(Model):
|
||||
id = Column(Integer, primary_key=True, unique=True, comment='主键ID', index=True)
|
||||
create_datetime = Column(DateTime, server_default=func.now(), comment='创建时间')
|
||||
update_datetime = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment='更新时间')
|
||||
delete_datetime = Column(DateTime, nullable=True, comment='删除时间')
|
Loading…
x
Reference in New Issue
Block a user