凭证模版需求 1、在录入凭证的界面就模版按钮,点击下拉出现“保存为凭证模版“ 和 “从模版生成凭证” 从模版生成凭证:打开模版对话框,选择对应模版将内容加载到创建凭证内容中 以下图片展示的是从模版生成凭证,标题:选择模版,可以通过模版类型和模版名称搜索,模版类型为下拉选择框。 有勾选框仅显示模版类别和名称,默认勾选,如果去掉这个将自动显示模版内部对应的分录信息,含辅助核算,金额等信息,具体实现请参考凭证查询页面 保存为凭证模版:将当前客户编辑的内容保存为特定模版 弹出新增模版 对话框,输入表单 模版名称,模版类别(下拉列表) 保存一下信息:摘要(默认勾选)科目(默认勾选)金额(默认不勾选)辅助核算(默认不勾选)  对话框footer部分提供保存与取消按钮,保存按钮点击后将会保存凭证页面维护的相应内容 模版类别提供编辑逻辑,可以在下拉框边上加入编辑图标,或者在下拉列表最下面加入新增按钮点击后弹出模版类别管理对话框 在模版类别管理对话可以新增,修改和删除模版类别。也可以选择某个模版类别,确定后下拉列表会自动选择对话框中选择的类别 数据库设计: CREATE TABLE `fin_vouchers_template_type` ( `id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'ID', `groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID', `name` VARCHAR(50) NULL DEFAULT NULL COMMENT '分类名称' COLLATE 'utf8mb4_bin', `create_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '创建人名称' COLLATE 'utf8mb4_bin', `modify_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '修改人名称' COLLATE 'utf8mb4_bin', `created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间', `updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间' ) COMMENT='凭证模版分类' COLLATE='utf8mb4_bin' ENGINE=InnoDB ; 后台controller应当在保存逻辑自动维护created_time,updated_time,modify_by,create_by 和修改时自动维护updated_time,modify_by 前端在保存时应当将当前的groupid维护上去,用户只需要维护对应的分类名称 CREATE TABLE `fin_vouchers_template` ( `id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'ID', `groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID', `type_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '类型ID', `name` VARCHAR(50) NULL DEFAULT NULL COMMENT '模版名称' COLLATE 'utf8mb4_bin', `create_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '创建人名称' COLLATE 'utf8mb4_bin', `modify_by` VARCHAR(50) NULL DEFAULT NULL COMMENT '修改人名称' COLLATE 'utf8mb4_bin', `created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间', `updated_time` DATETIME NULL DEFAULT NULL COMMENT '修改时间' ) COMMENT='凭证模版' COLLATE='utf8mb4_bin' ENGINE=InnoDB ; 用于存储凭证模版,type_id存储新增模版对话框中的模版类型对应的ID,name是客户在新增模版对话框中的form中维护的input 页面上客户填写的内容存储到fin_vouchers_template_entries中 CREATE TABLE `fin_vouchers_template_entries` ( `entry_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '分录主键ID', `groupid` BIGINT(20) UNSIGNED NOT NULL COMMENT '租户ID', `template_id` BIGINT(20) UNSIGNED NOT NULL COMMENT '关联的凭证模版ID', `entry_no` INT(10) NOT NULL COMMENT '分录序号', `subject_id` BIGINT(20) UNSIGNED NOT NULL COMMENT '会计科目ID', `summary` VARCHAR(200) NULL DEFAULT NULL COMMENT '摘要说明' COLLATE 'utf8mb4_bin', `debit_amount` DECIMAL(15,2) NULL DEFAULT '0.00' COMMENT '借方金额', `credit_amount` DECIMAL(15,2) NULL DEFAULT '0.00' COMMENT '贷方金额', `original_amount` DECIMAL(20,6) NULL DEFAULT NULL, `currency` VARCHAR(5) NULL DEFAULT NULL COLLATE 'utf8mb4_bin', `exchange_rate` DECIMAL(20,6) NULL DEFAULT NULL, `quantity` INT(10) NULL DEFAULT NULL, `unit_price` DECIMAL(20,2) NULL DEFAULT NULL, `created_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`entry_id`) USING BTREE, INDEX `idx_voucher_entries_tenant_subject` (`groupid`, `subject_id`) USING BTREE COMMENT '租户分录科目索引', INDEX `tenant_id` (`groupid`, `template_id`) USING BTREE, INDEX `template_id` (`template_id`) USING BTREE ) COMMENT='凭证模版分录明细表,存储凭证模版的每一笔分录信息' COLLATE='utf8mb4_bin' ENGINE=InnoDB AUTO_INCREMENT=12839 ; 注意必须按照客户的维护的次序保存entry_no 其中如果客户维护了辅助核算类人且在保存时勾选了辅助核算,应当将辅助核算保存在fin_vouchers_template_entries_auxiliary中 CREATE TABLE `fin_vouchers_template_entries_auxiliary` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `entry_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '关联分录', `auxiliary_type_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '核算类型:CUSTOMER, DEPARTMENT, PROJECT, SUPPLIER, EMPLOYEE', `auxiliary_item_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '具体核算项的ID(对应客户主表、部门主表的ID)', `groupid` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `entry_id_assistant_type_code` (`entry_id`, `auxiliary_type_id`) USING BTREE ) COLLATE='utf8mb4_bin' ENGINE=InnoDB AUTO_INCREMENT=5 ; 文件位置 以上内容后台在wimoor-finance\src\main\java\com\wimoor\finance\voucher 前段在wimoor-ui\src\views\finance\vouchers_template 请帮我完成以上需求