panhui 2 anni fa
parent
commit
22549217e6

+ 3 - 1
src/app.module.ts

@@ -30,6 +30,7 @@ import { LikesModule } from './likes/likes.module'
 import { ConditionModule } from './condition/condition.module'
 import { OrgModule } from './org/org.module';
 import { KnowledgeBaseModule } from './knowledge-base/knowledge-base.module';
+import { FormModule } from './form/form.module'
 @Module({
     imports: [
         DevtoolsModule.register({
@@ -112,7 +113,8 @@ import { KnowledgeBaseModule } from './knowledge-base/knowledge-base.module';
         ApiUserModule,
         ConditionModule,
         OrgModule,
-        KnowledgeBaseModule
+        KnowledgeBaseModule,
+        FormModule
     ],
     providers: [
         {

+ 3 - 3
src/form/dto/form.dto.ts

@@ -2,10 +2,10 @@ import { IsNumber, IsString } from "class-validator";
 
 export class FormDto {
 
-    name: string
+    orgId: number
 
-    text: string
+    name: string
 
-    relId: number
+    remark: string
 
 }

+ 70 - 0
src/form/entities/filed.entity.ts

@@ -0,0 +1,70 @@
+import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'
+
+@Entity()
+export class Field {
+    @PrimaryGeneratedColumn()
+    id: number
+
+    //formId
+    @Column()
+    formId: string
+
+    //字段名
+    @Column()
+    name: string
+
+    //备注
+    @Column()
+    remark: string
+
+    //占位字段
+    @Column()
+    placeholder:string
+
+    //表单类型
+    @Column()
+    formType: string
+
+    //表单必填
+    @Column()
+    required: boolean
+
+    //表单验证
+    @Column()
+    validate: boolean
+
+    //最短长度
+    @Column()
+    minLength: number
+
+    //最大长度
+    @Column()
+    maxLength: number
+
+    //最小值
+    @Column()
+    min: number
+
+    //最大值
+    @Column()
+    max: number
+
+    //验证类型
+    @Column()
+    validatorType: string
+
+    //下拉框类型 1 枚举, 2 接口, 3 读表
+    @Column()
+    apiFlag: string
+
+    //选项值,在枚举是用该值解析
+    @Column()
+    optionsValue: string
+
+    //显示值
+    @Column()
+    optionsLabel: string
+
+    @CreateDateColumn()
+    createdAt: Date
+}

+ 12 - 8
src/form/entities/form.entity.ts

@@ -1,22 +1,26 @@
-import { Col } from "sequelize/types/utils";
-import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from "typeorm";
+import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'
 
 @Entity()
 export class Form {
-
     @PrimaryGeneratedColumn()
-    id: number;
+    id: number
+
+    //企业id
+    @Column()
+    orgId: number
 
+    //表名
     @Column()
     name: string
 
+    //备注
     @Column()
-    text: string
+    remark: string
 
+    //启用
     @Column()
-    relId: number
+    used: boolean
 
     @CreateDateColumn()
     createdAt: Date
-
-}
+}

+ 33 - 5
src/form/form.controller.ts

@@ -1,11 +1,39 @@
-import {
-    Controller
-} from '@nestjs/common'
+import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common'
 import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'
+import { FormService } from './form.service'
+import { PageRequest } from 'src/common/dto/page-request'
+import { Form } from './entities/form.entity'
+import { FormDto } from './dto/form.dto'
+import { Field } from './entities/filed.entity'
 
 @ApiTags('form')
-@Controller('/form')
 @ApiBearerAuth()
+@Controller('/form')
 export class FormController {
+    constructor(private readonly formService: FormService) {}
+
+    @Post()
+    public async list(@Body() page: PageRequest<Form>) {
+        return await this.formService.findAll(page)
+    }
+
+    @Put()
+    public async create(@Body() form: Partial<Form>) {
+        return await this.formService.save(form)
+    }
+
+    @Put('/:id')
+    public async update(@Body() form: Partial<Form>) {
+        return await this.formService.update(form)
+    }
+
+    @Post('/fileds')
+    public async findAllFileds(@Body() page: PageRequest<Field>) {
+        return await this.formService.findAllFileds(page)
+    }
 
-}
+    @Delete('/:id')
+    public async delete(@Param('id') id: string) {
+        return await this.formService.delete(Number(id))
+    }
+}

+ 3 - 2
src/form/form.module.ts

@@ -3,11 +3,12 @@ import { TypeOrmModule } from '@nestjs/typeorm'
 import { FormService } from './form.service'
 import { Form } from './entities/form.entity'
 import { FormController } from './form.controller'
+import { Field } from './entities/filed.entity'
 
 @Module({
-    imports: [TypeOrmModule.forFeature([Form])],
+    imports: [TypeOrmModule.forFeature([Form, Field])],
     controllers: [FormController],
     providers: [FormService],
     exports: [FormService]
 })
-export class FormModule { }
+export class FormModule {}

+ 43 - 10
src/form/form.service.ts

@@ -1,28 +1,26 @@
-import {
-    Injectable, NotFoundException
-} from '@nestjs/common'
+import { Injectable, InternalServerErrorException, NotFoundException } from '@nestjs/common'
 import { FindManyOptions, FindOptionsOrder, In, Repository, UpdateResult } from 'typeorm'
 import { InjectRepository } from '@nestjs/typeorm'
 import { paginate, Pagination } from 'nestjs-typeorm-paginate'
 import { PageRequest } from '../common/dto/page-request'
 import { Form } from './entities/form.entity'
 import { FormDto } from './dto/form.dto'
+import { Field } from './entities/filed.entity'
 
 @Injectable()
 export class FormService {
-
     constructor(
         @InjectRepository(Form)
-        private readonly formRepository: Repository<Form>
-    ) { }
+        private readonly formRepository: Repository<Form>,
+        @InjectRepository(Field)
+        private readonly filedRepository: Repository<Field>
+    ) {}
 
     public async create(formDto: FormDto) {
         return await this.formRepository.save(formDto)
     }
 
-    public async createAll(list: Form[]) {
-
-    }
+    public async createAll(list: Form[]) {}
 
     public async findById(id: number): Promise<Form> {
         const form = await this.formRepository.findOneBy({
@@ -36,6 +34,41 @@ export class FormService {
         return form
     }
 
+    public async findAll(req: PageRequest<Form>) {
+        try {
+            return await paginate<Form>(this.formRepository, req.page, req.search)
+        } catch (error) {}
+    }
+
+    public async findAllFileds(req: PageRequest<Field>){
+        try {
+            return await paginate<Field>(this.filedRepository, req.page, req.search)
+        } catch (error) {}
+    }
 
+    async save(form: Partial<Form>) {
+        try {
+            return await this.formRepository.save(form)
+        } catch (error) {
+            throw new InternalServerErrorException(error.message)
+        }
+    }
 
-}
+    async update(form: Partial<Form>) {
+        try {
+            return await this.formRepository.save(form)
+        } catch (error) {
+            throw new InternalServerErrorException(error.message)
+        }
+    }
+
+    async getFilds(formId: string) {
+        return await this.filedRepository.findBy({
+            formId: formId
+        })
+    }
+
+    async delete(id: number) {
+        await this.formRepository.delete(id)
+    }
+}