diff --git a/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormController.java b/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormController.java index 4d0a7374..fea2bc44 100644 --- a/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormController.java +++ b/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormController.java @@ -46,6 +46,17 @@ public class FormController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "表单删除(物理删除)", notes = "通过id删除(物理删除)表单接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "表单ID列表,用下划线分隔", paramType = "path", example = "1_2_3") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @DeleteMapping("delete/{id}") + public SuccessResult delete(@PathVariable("id") String id) { + formService.delete(Arrays.asList(id)); + return new SuccessResult(); + } + @ApiOperation(value = "修改表单状态", notes = "修改表单状态接口") @ApiImplicitParams({ @ApiImplicitParam(name = "formId", value = "表单ID", paramType = "path"), diff --git a/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormDesignController.java b/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormDesignController.java index 6e1cba33..7cbff57d 100644 --- a/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormDesignController.java +++ b/module-form/src/main/java/ink/wgink/module/form/controller/api/design/FormDesignController.java @@ -1,6 +1,7 @@ package ink.wgink.module.form.controller.api.design; +import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.module.form.pojo.vos.design.FormDesignVO; @@ -30,6 +31,7 @@ public class FormDesignController extends DefaultBaseController { @ApiOperation(value = "保存表单", notes = "保存表单接口") @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) @PostMapping("save") + @CheckRequestBodyAnnotation public SuccessResult save(@RequestBody FormDesignVO formDesignVO) throws IOException { formDesignService.save(formDesignVO); return new SuccessResult(); diff --git a/module-form/src/main/java/ink/wgink/module/form/controller/api/report/FormReportController.java b/module-form/src/main/java/ink/wgink/module/form/controller/api/report/FormReportController.java index 99ebd04f..254974aa 100644 --- a/module-form/src/main/java/ink/wgink/module/form/controller/api/report/FormReportController.java +++ b/module-form/src/main/java/ink/wgink/module/form/controller/api/report/FormReportController.java @@ -68,6 +68,11 @@ public class FormReportController extends DefaultBaseController { return formReportService.listPage(formCode, formVersion, page); } + @GetMapping("list-show-field/code/{formCode}/version/{formVersion}") + public List listShowField(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) { + return formReportService.listShowField(formCode, formVersion); + } + private void checkParams(Map body) { if (body.isEmpty()) { throw new ParamsException("提交内容不能为空"); diff --git a/module-form/src/main/java/ink/wgink/module/form/controller/app/api/report/FormReportAppController.java b/module-form/src/main/java/ink/wgink/module/form/controller/app/api/report/FormReportAppController.java new file mode 100644 index 00000000..1f3b9832 --- /dev/null +++ b/module-form/src/main/java/ink/wgink/module/form/controller/app/api/report/FormReportAppController.java @@ -0,0 +1,85 @@ +package ink.wgink.module.form.controller.app.api.report; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.exceptions.ParamsException; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.module.form.service.report.IFormReportService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResult; +import ink.wgink.pojo.result.SuccessResultList; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * @ClassName: FormReportAppController + * @Description: 表单上报 + * @Author: wanggeng + * @Date: 2022/3/10 7:29 PM + * @Version: 1.0 + */ +@Api(tags = ISystemConstant.API_TAGS_APP_PREFIX + "表单") +@RestController +@RequestMapping(ISystemConstant.APP_PREFIX + "/form-report") +public class FormReportAppController extends DefaultBaseController { + + @Autowired + private IFormReportService formReportService; + + @PostMapping("save/code/{formCode}/version/{formVersion}") + public SuccessResult save(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @RequestBody Map params) { + checkParams(params); + formReportService.saveByToken(token, formCode, formVersion, params); + return new SuccessResult(); + } + + @DeleteMapping("remove/code/{formCode}/version/{formVersion}/uids/{uids}") + public SuccessResult remove(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uids") String uids) { + formReportService.remove(formCode, formVersion, Arrays.asList(uids.split("\\_"))); + return new SuccessResult(); + } + + @PutMapping("update/code/{formCode}/version/{formVersion}/uid/{uid}") + public SuccessResult update(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid, @RequestBody Map params) { + checkParams(params); + formReportService.updateByToken(token, formCode, formVersion, uid, params); + return new SuccessResult(); + } + + @GetMapping("get/code/{formCode}/version/{formVersion}/uid/{uid}") + public Map get(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid) { + return formReportService.get(formCode, formVersion, uid); + } + + @GetMapping("list/code/{formCode}/version/{formVersion}") + public List> list(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) { + Map params = requestParams(); + return formReportService.list(formCode, formVersion, params); + } + + @GetMapping("listpage/code/{formCode}/version/{formVersion}") + public SuccessResultList>> listPage(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, ListPage page) { + Map params = requestParams(); + page.setParams(params); + return formReportService.listPage(formCode, formVersion, page); + } + + @GetMapping("list-show-field/code/{formCode}/version/{formVersion}") + public List listShowField(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) { + return formReportService.listShowField(formCode, formVersion); + } + + private void checkParams(Map body) { + if (body.isEmpty()) { + throw new ParamsException("提交内容不能为空"); + } + for (Map.Entry kv : body.entrySet()) { + String key = kv.getKey(); + } + } + +} diff --git a/module-form/src/main/java/ink/wgink/module/form/dao/design/IFormDao.java b/module-form/src/main/java/ink/wgink/module/form/dao/design/IFormDao.java index 8c20e44a..133fd198 100644 --- a/module-form/src/main/java/ink/wgink/module/form/dao/design/IFormDao.java +++ b/module-form/src/main/java/ink/wgink/module/form/dao/design/IFormDao.java @@ -17,6 +17,12 @@ public interface IFormDao extends IInitBaseTable { void createDynamicForm(String createTableSQL) throws SaveException; + void deleteDynamicForm(String deleteTableSQL) throws RemoveException; + + void updateDynamicFormField(String alterFieldSQL) throws UpdateException; + + void deleteDynamicFormField(String alterFieldSQL) throws RemoveException; + void save(Map params) throws SaveException; void delete(Map params) throws RemoveException; @@ -46,4 +52,5 @@ public interface IFormDao extends IInitBaseTable { String getAppUpdatePageCodeByCodeAndVersion(Map params) throws SearchException; String getAppShowPageCodeByCodeAndVersion(Map params) throws SearchException; + } diff --git a/module-form/src/main/java/ink/wgink/module/form/dao/formreport/IFormReportDao.java b/module-form/src/main/java/ink/wgink/module/form/dao/formreport/IFormReportDao.java index d4e9bde1..cd0093de 100644 --- a/module-form/src/main/java/ink/wgink/module/form/dao/formreport/IFormReportDao.java +++ b/module-form/src/main/java/ink/wgink/module/form/dao/formreport/IFormReportDao.java @@ -31,4 +31,5 @@ public interface IFormReportDao { List> list(Map queryParams) throws SearchException; + Integer countByTableName(String tableName) throws SearchException; } diff --git a/module-form/src/main/java/ink/wgink/module/form/enums/design/FormTypeEnum.java b/module-form/src/main/java/ink/wgink/module/form/enums/design/FormTypeEnum.java index 2ad516dc..c6130afe 100644 --- a/module-form/src/main/java/ink/wgink/module/form/enums/design/FormTypeEnum.java +++ b/module-form/src/main/java/ink/wgink/module/form/enums/design/FormTypeEnum.java @@ -8,7 +8,8 @@ package ink.wgink.module.form.enums.design; * @Version: 1.0 */ public enum FormTypeEnum { - DEFAULT("default", "默认"); + DEFAULT("default", "默认"), + OA("oa", "OA"); private String value; private String text; diff --git a/module-form/src/main/java/ink/wgink/module/form/pojo/vos/design/FormDesignVO.java b/module-form/src/main/java/ink/wgink/module/form/pojo/vos/design/FormDesignVO.java index 9823324d..c815005b 100644 --- a/module-form/src/main/java/ink/wgink/module/form/pojo/vos/design/FormDesignVO.java +++ b/module-form/src/main/java/ink/wgink/module/form/pojo/vos/design/FormDesignVO.java @@ -2,6 +2,10 @@ package ink.wgink.module.form.pojo.vos.design; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import ink.wgink.annotation.CheckEmptyAnnotation; +import ink.wgink.annotation.CheckListAnnotation; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import java.util.ArrayList; import java.util.List; @@ -12,13 +16,26 @@ import java.util.List; * @Date: 2022/3/8 20:21 * @Version: 1.0 **/ +@ApiModel public class FormDesignVO { + @ApiModelProperty(name = "formCode", value = "表单编码") private String formCode; + @ApiModelProperty(name = "formName", value = "表单名称") + @CheckEmptyAnnotation(name = "表单名称") private String formName; + @ApiModelProperty(name = "formSummary", value = "表单描述") + @CheckEmptyAnnotation(name = "表单描述") private String formSummary; + @ApiModelProperty(name = "formVersion", value = "表单版本") private Integer formVersion; + @ApiModelProperty(name = "mainTitleTpl", value = "主标题模板") + private String mainTitleTpl; + @ApiModelProperty(name = "formType", value = "表单类型") + @CheckEmptyAnnotation(name = "表单类型") + private String formType; private JSONArray data; + @CheckListAnnotation(name = "fields", value = "字段列表") private List fields; public String getFormCode() { @@ -53,6 +70,22 @@ public class FormDesignVO { this.formVersion = formVersion; } + public String getMainTitleTpl() { + return mainTitleTpl == null ? "" : mainTitleTpl.trim(); + } + + public void setMainTitleTpl(String mainTitleTpl) { + this.mainTitleTpl = mainTitleTpl; + } + + public String getFormType() { + return formType == null ? "" : formType.trim(); + } + + public void setFormType(String formType) { + this.formType = formType; + } + public JSONArray getData() { return data; } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormDesignService.java b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormDesignService.java index 1216e234..a6843b45 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormDesignService.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormDesignService.java @@ -12,6 +12,25 @@ import java.io.IOException; **/ public interface IFormDesignService { + String FIELD_MAIN_TITLE = "MAIN_TITLE"; + String FIELD_ID = "id"; + String FIELD_UID = "uid"; + String FIELD_UIDS = "uids"; + String PROCESS_INSTANCE_ID = "process_instance_id"; + String FIELD_GMT_CREATE = "gmt_create"; + String FIELD_CREATOR = "creator"; + String FIELD_GMT_MODIFIED = "gmt_modified"; + String FIELD_MODIFIER = "modifier"; + String FIELD_IS_DELETE = "is_delete"; + String PARAM_FORM_CODE = "formCode"; + String PARAM_FORM_VERSION = "formVersion"; + String PARAM_QUERY_LIST = "queryList"; + String PARAM_LIST_SHOW_FIELD = "listShowField"; + String PARAM_PROCESS_INSTANCE_ID = "processInstanceId"; + String PARAM_INSERTS = "inserts"; + String PARAM_VALUES = "values"; + String PARAM_KV_LIST = "kvList"; + /** * 保存表单 * diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormFieldService.java b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormFieldService.java index 63f80503..21bb57e9 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormFieldService.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormFieldService.java @@ -126,8 +126,9 @@ public interface IFormFieldService { /** * 字段名列表 * + * @param formId 表单ID * @param listShow 列表显示状态 * @return */ - List listFieldNameByListShow(String listShow); + List listFieldNameByFormIdAndListShow(String formId, String listShow); } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormService.java b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormService.java index 189b110a..5da4e72c 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/IFormService.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/IFormService.java @@ -18,6 +18,18 @@ public interface IFormService { */ void createDynamicForm(String createTableSQL); + void deleteTable(String tableName); + + void deleteDynamicForm(String deleteTableSQL); + + void updateTableField(String tableName, String oldField, String newField, String newFieldType); + + void updateDynamicFormField(String alterFieldSQL); + + void deleteTableField(String tableName, String field); + + void deleteDynamicFormField(String alterFieldSQL); + /** * 新增 * diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormDesignServiceImpl.java b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormDesignServiceImpl.java index 371bd4b1..b0a85799 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormDesignServiceImpl.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormDesignServiceImpl.java @@ -32,6 +32,7 @@ import javax.annotation.PostConstruct; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -87,7 +88,7 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe formVO.setFormCode(formCode); formVO.setFormSummary(formDesignVO.getFormSummary()); formVO.setFormTableName(tableName); - formVO.setFormType(FormTypeEnum.DEFAULT.getValue()); + formVO.setFormType(formDesignVO.getFormType()); formVO.setFormStatus(FormStatusEnum.ACTIVE.getValue()); formVO.setFormVersion(version); formVO.setFormSourceData(JSON.toJSONString(formDesignVO.getData())); @@ -101,13 +102,13 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe Map model = getHashMap(4); model.put("fields", formDesignVO.getFields()); - String savePageCode = getTemplateCode("/page/web/form-save.ftl", model); - formVO.setSavePageCode(savePageCode); -// formVO.setUpdatePageCode(formDesignVO.getUpdatePageCode()); -// formVO.setShowPageCode(formDesignVO.getShowPageCode()); -// formVO.setAppSavePageCode(formDesignVO.getAppSavePageCode()); -// formVO.setAppUpdatePageCode(formDesignVO.getAppUpdatePageCode()); -// formVO.setAppShowPageCode(formDesignVO.getAppShowPageCode()); + formVO.setSavePageCode(getSavePageCode(model, formDesignVO.getFormType())); + formVO.setUpdatePageCode(getUpdatePageCode(model, formDesignVO.getFormType())); + formVO.setShowPageCode(getShowPageCode(model, formDesignVO.getFormType())); + formVO.setAppSavePageCode(getAppSavePageCode(model, formDesignVO.getFormType())); + formVO.setAppUpdatePageCode(getAppUpdatePageCode(model, formDesignVO.getFormType())); + formVO.setAppShowPageCode(getAppShowPageCode(model, formDesignVO.getFormType())); + String formId = formService.saveReturnId(formVO); LOG.debug("保存表单字段"); @@ -121,6 +122,150 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe formService.createDynamicForm(createTableSQL); } + /** + * 新增页面模板 + * + * @param model + * @return + * @throws IOException + */ + private String getSavePageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/web/form-save.ftl", model); + } + + /** + * 更新页面模板 + * + * @param model + * @param formType + * @return + * @throws IOException + */ + private String getUpdatePageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "api/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report/save/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"})); + model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_URL, "api/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}"); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/web/form-update.ftl", model); + } + + /** + * 展示页面模板 + * + * @param model + * @param formType + * @return + * @throws IOException + */ + private String getShowPageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "api/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "api/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/web/form-show.ftl", model); + } + + /** + * app新增页面模板 + * + * @param model + * @return + * @throws IOException + */ + private String getAppSavePageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/save/definition-id/{processDefinitionId}/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"processDefinitionId", "formCode", "formVersion"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/app/app-form-save.ftl", model); + } + + /** + * app更新页面模板 + * + * @param model + * @param formType + * @return + * @throws IOException + */ + private String getAppUpdatePageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "app/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_URL, "app/form-report/save/code/{formCode}/version/{formVersion}"); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"})); + model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_COMMIT_URL, "app/oa-form-report/update/task-id/{taskId}/code/{formCode}/version/{formVersion}/is-need-claim/{isNeedClaim}/uid/{uid}"); + model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"taskId", "formCode", "formVersion", "isNeedClaim"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/app/app-form-update.ftl", model); + } + + /** + * app展示页面模板 + * + * @param model + * @param formType + * @return + * @throws IOException + */ + private String getAppShowPageCode(Map model, String formType) throws IOException { + if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "app/form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) { + model.put(ISystemConstant.FORM_HIDDEN_INPUT_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + model.put(ISystemConstant.FORM_INIT_URL, "app/oa-form-report/get/code/{formCode}/version/{formVersion}/uid/{uid}"); + model.put(ISystemConstant.FORM_INIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"})); + } else { + throw new ParamsException("表单类型错误"); + } + return getTemplateCode("/page/app/app-form-show.ftl", model); + } + /** * 建表SQL * @@ -130,18 +275,19 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe */ private String getCreateTableSQL(String tableName, String formName, List formFieldVOs) { StringBuffer createTableSB = new StringBuffer("CREATE TABLE `").append(tableName).append("`("); - createTableSB.append("`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,"); - createTableSB.append("`uid` char(36) NOT NULL,"); - createTableSB.append("`process_instance_id` char(36) DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_ID + "` bigint(20) unsigned NOT NULL AUTO_INCREMENT,"); + createTableSB.append("`" + IFormDesignService.FIELD_UID + "` char(36) NOT NULL,"); + createTableSB.append("`" + IFormDesignService.PROCESS_INSTANCE_ID + "` char(36) DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_MAIN_TITLE + "` varchar(500),"); for (FormFieldVO formFieldVO : formFieldVOs) { createTableSB.append("`").append(formFieldVO.getFieldName()).append("` ").append(formFieldVO.getFieldType()).append(" NOT NULL COMMENT '").append(formFieldVO.getFieldExplain()).append("',"); } - createTableSB.append("`creator` char(36) DEFAULT NULL,"); - createTableSB.append("`gmt_create` datetime DEFAULT NULL,"); - createTableSB.append("`modifier` char(36) DEFAULT NULL,"); - createTableSB.append("`gmt_modified` datetime DEFAULT NULL,"); - createTableSB.append("`is_delete` int(2) DEFAULT '0',"); - createTableSB.append("PRIMARY KEY (`id`)"); + createTableSB.append("`" + IFormDesignService.FIELD_CREATOR + "` char(36) DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_GMT_CREATE + "` datetime DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_MODIFIER + "` char(36) DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_GMT_MODIFIED + "` datetime DEFAULT NULL,"); + createTableSB.append("`" + IFormDesignService.FIELD_IS_DELETE + "` int(2) DEFAULT '0',"); + createTableSB.append("PRIMARY KEY (`" + IFormDesignService.FIELD_ID + "`)"); createTableSB.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='").append(formName).append("';"); return createTableSB.toString(); } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormFieldServiceImpl.java b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormFieldServiceImpl.java index 487ba44d..d1863c53 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormFieldServiceImpl.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormFieldServiceImpl.java @@ -121,8 +121,9 @@ public class FormFieldServiceImpl extends DefaultBaseService implements IFormFie } @Override - public List listFieldNameByListShow(String listShow) { + public List listFieldNameByFormIdAndListShow(String formId, String listShow) { Map params = getHashMap(2); + params.put("formId", formId); params.put("listShow", listShow); return listFieldName(params); } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormServiceImpl.java b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormServiceImpl.java index dd7d3b4d..0c738b76 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormServiceImpl.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/design/impl/FormServiceImpl.java @@ -4,11 +4,13 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import ink.wgink.common.base.DefaultBaseService; import ink.wgink.exceptions.ParamsException; +import ink.wgink.exceptions.RemoveException; import ink.wgink.module.form.dao.design.IFormDao; import ink.wgink.module.form.pojo.dtos.design.FormDTO; import ink.wgink.module.form.pojo.pos.design.FormPO; import ink.wgink.module.form.pojo.vos.design.FormVO; import ink.wgink.module.form.service.design.IFormService; +import ink.wgink.module.form.service.report.IFormReportService; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.util.UUIDUtil; @@ -24,12 +26,55 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService @Autowired private IFormDao formDao; + @Autowired + private IFormReportService formReportService; @Override public void createDynamicForm(String createTableSQL) { formDao.createDynamicForm(createTableSQL); } + @Override + public void deleteTable(String tableName) { + StringBuffer sqlSB = new StringBuffer("DROP TABLE `").append(tableName).append("`;"); + deleteDynamicForm(sqlSB.toString()); + } + + @Override + public void deleteDynamicForm(String deleteTableSQL) { + formDao.deleteDynamicForm(deleteTableSQL); + } + + @Override + public void updateTableField(String tableName, String oldField, String newField, String newFieldType) { + StringBuffer sqlSB = new StringBuffer("ALTER TABLE"); + sqlSB.append(" `").append(tableName).append("`"); + sqlSB.append(" CHANGE"); + sqlSB.append(" `").append(oldField).append("`"); + sqlSB.append(" `").append(newField).append("`"); + sqlSB.append(newFieldType).append(";"); + updateDynamicFormField(sqlSB.toString()); + } + + @Override + public void updateDynamicFormField(String alterFieldSQL) { + formDao.updateDynamicFormField(alterFieldSQL); + } + + @Override + public void deleteTableField(String tableName, String field) { + StringBuffer sqlSB = new StringBuffer("ALTER TABLE"); + sqlSB.append(" `").append(tableName).append("`"); + sqlSB.append(" DROP"); + sqlSB.append(" `").append(field).append("`"); + deleteDynamicFormField(sqlSB.toString()); + } + + @Override + public void deleteDynamicFormField(String alterFieldSQL) { + formDao.deleteDynamicFormField(alterFieldSQL); + } + @Override public void save(FormVO formVO) { saveReturnId(formVO); @@ -51,6 +96,8 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService @Override public void delete(List ids) { + // 判断表单是否有数据,有数据不能删除 + deleteTable(ids); Map params = getHashMap(2); params.put("formIds", ids); formDao.delete(params); @@ -58,11 +105,23 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService @Override public void remove(List ids) { + // 逻辑删除不删除表 Map params = getHashMap(2); params.put("formIds", ids); formDao.remove(params); } + private void deleteTable(List ids) { + List formDTOs = listByIds(ids); + for (FormDTO formDTO : formDTOs) { + Integer count = formReportService.count(formDTO.getFormTableName()); + if (count > 0) { + throw new RemoveException(formDTO.getFormTableName() + "表中存在数据,不能删除"); + } + deleteTable(formDTO.getFormTableName()); + } + } + @Override public void update(String formId, FormVO formVO) { Map params = HashMapUtil.beanToMap(formVO); diff --git a/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportRouteService.java b/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportRouteService.java index 53f64933..73fc8910 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportRouteService.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportRouteService.java @@ -27,14 +27,14 @@ public interface IFormReportRouteService { /** * 新增页面 - * * @param formCode * @param formVersion * @param httpSession * @param httpServletRequest * @param httpServletResponse + * @param model */ - void save(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void save(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); /** * 修改页面 @@ -44,7 +44,7 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); @@ -56,9 +56,9 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ - void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); /** * 详情页面 @@ -79,9 +79,9 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ - void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); /** * APP新增页面 @@ -102,9 +102,9 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ - void appSave(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void appSave(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); /** * APP修改页面 @@ -125,9 +125,9 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ - void appUpdate(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void appUpdate(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); /** * APP详情页面 @@ -148,7 +148,7 @@ public interface IFormReportRouteService { * @param httpSession * @param httpServletRequest * @param httpServletResponse - * @param modal + * @param model */ - void appShow(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map modal); + void appShow(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map model); } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportService.java b/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportService.java index 75796466..637a9a56 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportService.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/report/IFormReportService.java @@ -17,12 +17,24 @@ public interface IFormReportService { void save(String formCode, Integer formVersion, Map params); + void saveByToken(String token, String formCode, Integer formVersion, Map params); + + void saveByUserId(String userId, String formCode, Integer formVersion, Map params); + String saveAndReturnId(String formCode, Integer formVersion, Map params); + String saveByTokenAndReturnId(String token, String formCode, Integer formVersion, Map params); + + String saveByUserIdAndReturnId(String userId, String formCode, Integer formVersion, Map params); + void remove(String formCode, Integer formVersion, List uids); void update(String formCode, Integer formVersion, String uid, Map params); + void updateByToken(String token, String formCode, Integer formVersion, String uid, Map params); + + void updateByUserId(String userId, String formCode, Integer formVersion, String uid, Map params); + void updateProcessInstanceId(String formCode, Integer formVersion, String uid, String processInstanceId); Map get(String formCode, Integer formVersion, String uid); @@ -31,5 +43,7 @@ public interface IFormReportService { SuccessResultList>> listPage(String formCode, Integer formVersion, ListPage page); + List listShowField(String formCode, Integer formVersion); + Integer count(String tableName); } diff --git a/module-form/src/main/java/ink/wgink/module/form/service/report/impl/FormReportServiceImpl.java b/module-form/src/main/java/ink/wgink/module/form/service/report/impl/FormReportServiceImpl.java index c1269316..329cc6d6 100644 --- a/module-form/src/main/java/ink/wgink/module/form/service/report/impl/FormReportServiceImpl.java +++ b/module-form/src/main/java/ink/wgink/module/form/service/report/impl/FormReportServiceImpl.java @@ -6,7 +6,9 @@ import ink.wgink.common.base.DefaultBaseService; import ink.wgink.exceptions.SearchException; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.module.form.dao.formreport.IFormReportDao; +import ink.wgink.module.form.enums.design.FormStatusEnum; import ink.wgink.module.form.pojo.pos.design.FormPO; +import ink.wgink.module.form.service.design.IFormDesignService; import ink.wgink.module.form.service.design.IFormFieldService; import ink.wgink.module.form.service.design.IFormService; import ink.wgink.module.form.service.report.IFormReportService; @@ -48,45 +50,72 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe saveAndReturnId(formCode, formVersion, params); } + @Override + public void saveByToken(String token, String formCode, Integer formVersion, Map params) { + saveByTokenAndReturnId(token, formCode, formVersion, params); + } + + @Override + public void saveByUserId(String userId, String formCode, Integer formVersion, Map params) { + saveByUserIdAndReturnId(userId, formCode, formVersion, params); + } + @Override public String saveAndReturnId(String formCode, Integer formVersion, Map params) { + return saveByUserIdAndReturnId(securityComponent.getCurrentUser().getUserId(), formCode, formVersion, params); + } + + @Override + public String saveByTokenAndReturnId(String token, String formCode, Integer formVersion, Map params) { + String userId = getAppTokenUser(token).getId(); + return saveByUserIdAndReturnId(userId, formCode, formVersion, params); + } + + @Override + public String saveByUserIdAndReturnId(String userId, String formCode, Integer formVersion, Map params) { + FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); + checkForm(formPO); String uid = UUIDUtil.getUUID(); List inserts = new ArrayList<>(); List values = new ArrayList<>(); - inserts.add("uid"); + inserts.add(IFormDesignService.FIELD_UID); + inserts.add(IFormDesignService.FIELD_MAIN_TITLE); values.add(uid); + values.add(getMainTitleCode(formPO.getMainTitleTpl(), params)); for (Map.Entry kv : params.entrySet()) { inserts.add(kv.getKey()); values.add(kv.getValue()); } String datetime = DateUtil.getTime(); - String userId = securityComponent.getCurrentUser().getUserId(); - inserts.add("gmt_create"); + inserts.add(IFormDesignService.FIELD_GMT_CREATE); values.add(datetime); - inserts.add("creator"); + inserts.add(IFormDesignService.FIELD_CREATOR); values.add(userId); - inserts.add("gmt_modified"); + inserts.add(IFormDesignService.FIELD_GMT_MODIFIED); values.add(datetime); - inserts.add("modifier"); + inserts.add(IFormDesignService.FIELD_MODIFIER); values.add(userId); - inserts.add("is_delete"); + inserts.add(IFormDesignService.FIELD_IS_DELETE); values.add(0); Map insertParams = getHashMap((params.size() + 5) * 2); - insertParams.put("formCode", formCode); - insertParams.put("formVersion", formVersion); - insertParams.put("inserts", inserts); - insertParams.put("values", values); + insertParams.put(IFormDesignService.PARAM_FORM_CODE, formCode); + insertParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); + insertParams.put(IFormDesignService.PARAM_INSERTS, inserts); + insertParams.put(IFormDesignService.PARAM_VALUES, values); formReportDao.save(insertParams); return uid; } @Override public void remove(String formCode, Integer formVersion, List uids) { + FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); + checkForm(formPO); + Map params = getHashMap(10); - params.put("formCode", formCode); - params.put("formVersion", formVersion); - params.put("uids", uids); + params.put(IFormDesignService.PARAM_FORM_CODE, formCode); + params.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); + params.put(IFormDesignService.FIELD_UIDS, uids); setUpdateInfo(params); formReportDao.remove(params); @@ -94,6 +123,21 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe @Override public void update(String formCode, Integer formVersion, String uid, Map params) { + String userId = securityComponent.getCurrentUser().getUserId(); + updateByUserId(userId, formCode, formVersion, uid, params); + } + + @Override + public void updateByToken(String token, String formCode, Integer formVersion, String uid, Map params) { + String userId = getAppTokenUser(token).getId(); + updateByUserId(userId, formCode, formVersion, uid, params); + } + + @Override + public void updateByUserId(String userId, String formCode, Integer formVersion, String uid, Map params) { + FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); + checkForm(formPO); + List> kvList = new ArrayList<>(); for (Map.Entry kv : params.entrySet()) { if (kv.getValue() == null) { @@ -101,25 +145,30 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe } kvList.add(Arrays.asList(new String[]{kv.getKey(), "" + kv.getValue()})); } - kvList.add(Arrays.asList(new String[]{"gmt_modified", DateUtil.getTime()})); - kvList.add(Arrays.asList(new String[]{"modifier", securityComponent.getCurrentUser().getUserId()})); + kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_GMT_MODIFIED, DateUtil.getTime()})); + kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_MODIFIER, userId})); Map updateParams = getHashMap((params.size() + 3) * 2); - updateParams.put("uid", uid); - updateParams.put("kvList", kvList); - updateParams.put("formCode", formCode); - updateParams.put("formVersion", formVersion); + updateParams.put(IFormDesignService.FIELD_UID, uid); + updateParams.put(IFormDesignService.PARAM_KV_LIST, kvList); + updateParams.put(IFormDesignService.PARAM_FORM_CODE, formCode); + updateParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); formReportDao.update(updateParams); + // 更新mainTitle + Map dataMap = get(formCode, formVersion, uid); + kvList.clear(); + kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_MAIN_TITLE, getMainTitleCode(formPO.getMainTitleTpl(), dataMap)})); + formReportDao.update(updateParams); } @Override public void updateProcessInstanceId(String formCode, Integer formVersion, String uid, String processInstanceId) { Map params = getHashMap(8); - params.put("formCode", formCode); - params.put("formVersion", formVersion); - params.put("uid", uid); - params.put("processInstanceId", processInstanceId); + params.put(IFormDesignService.PARAM_FORM_CODE, formCode); + params.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); + params.put(IFormDesignService.FIELD_UID, uid); + params.put(IFormDesignService.PARAM_PROCESS_INSTANCE_ID, processInstanceId); formReportDao.updateProcessInstanceId(params); } @@ -127,52 +176,73 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe @Override public Map get(String formCode, Integer formVersion, String uid) { Map params = getHashMap(2); - params.put("uid", uid); - params.put("formCode", formCode); - params.put("formVersion", formVersion); + params.put(IFormDesignService.FIELD_UID, uid); + params.put(IFormDesignService.PARAM_FORM_CODE, formCode); + params.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); return formReportDao.get(params); } @Override public List> list(String formCode, Integer formVersion, Map params) { FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); - if (formPO == null) { - throw new SearchException("表单不存在"); - } + checkForm(formPO); List queryList = conditionList(params); Map queryParams = getHashMap(6); - queryParams.put("formCode", formCode); - queryParams.put("formVersion", formVersion); - queryParams.put("queryList", queryList); - queryParams.put("listShowField", listShowField(formPO)); + queryParams.put(IFormDesignService.PARAM_FORM_CODE, formCode); + queryParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); + queryParams.put(IFormDesignService.PARAM_QUERY_LIST, queryList); + queryParams.put(IFormDesignService.PARAM_LIST_SHOW_FIELD, listShowField(formPO)); List> mapList = formReportDao.list(queryParams); - setMainTitle(formPO, mapList); return mapList; } @Override public SuccessResultList>> listPage(String formCode, Integer formVersion, ListPage page) { FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); - if (formPO == null) { - throw new SearchException("表单不存在"); - } + checkForm(formPO); List queryList = conditionList(page.getParams()); Map queryParams = getHashMap(6); - queryParams.put("formCode", formCode); - queryParams.put("formVersion", formVersion); - queryParams.put("queryList", queryList); - queryParams.put("listShowField", listShowField(formPO)); + queryParams.put(IFormDesignService.PARAM_FORM_CODE, formCode); + queryParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion); + queryParams.put(IFormDesignService.PARAM_QUERY_LIST, queryList); + queryParams.put(IFormDesignService.PARAM_LIST_SHOW_FIELD, listShowField(formPO)); PageHelper.startPage(page.getPage(), page.getRows()); List> mapList = formReportDao.list(queryParams); - setMainTitle(formPO, mapList); PageInfo> pageInfo = new PageInfo<>(mapList); return new SuccessResultList<>(mapList, pageInfo.getPageNum(), pageInfo.getTotal()); } + @Override + public List listShowField(String formCode, Integer formVersion) { + FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion); + checkForm(formPO); + return listShowField(formPO); + } + + @Override + public Integer count(String tableName) { + Integer count = formReportDao.countByTableName(tableName); + return count == null ? 0 : count; + } + + /** + * 校验表单 + * + * @param formPO + */ + private void checkForm(FormPO formPO) { + if (formPO == null) { + throw new SearchException("表单不存在"); + } + if (!StringUtils.equals(FormStatusEnum.ACTIVE.getValue(), formPO.getFormStatus())) { + throw new SearchException("表单未激活"); + } + } + /** * 显示字段 * @@ -180,41 +250,32 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe * @return */ private List listShowField(FormPO formPO) { - return formFieldService.listFieldNameByListShow(ISystemConstant.IS_TRUE); + return formFieldService.listFieldNameByFormIdAndListShow(formPO.getFormId(), ISystemConstant.IS_TRUE); } /** * 设置主标题 * - * @param formPO - * @param mapList + * @param mainTitleTpl + * @param map */ - private void setMainTitle(FormPO formPO, List> mapList) { - if (mapList.isEmpty()) { - return; + private String getMainTitleCode(String mainTitleTpl, Map map) { + if (StringUtils.isBlank(mainTitleTpl)) { + return ""; } - if (StringUtils.isBlank(formPO.getMainTitleTpl())) { - return; - } - List tpls = new ArrayList<>(); - Matcher matcher = MAIN_TITLE_CODE.matcher(formPO.getMainTitleTpl()); + String mainTitle = mainTitleTpl; + Matcher matcher = MAIN_TITLE_CODE.matcher(mainTitle); while (matcher.find()) { - tpls.add(matcher.group()); - } - for (Map map : mapList) { - String mainTitle = null; - for (String tpl : tpls) { - Object tplObj = map.get(tpl); - if (tplObj != null) { - mainTitle = formPO.getMainTitleTpl().replaceAll(tpl, tplObj.toString()); - } else { - mainTitle = formPO.getMainTitleTpl().replaceAll(tpl, ""); - } - } - if (StringUtils.isBlank(mainTitle)) { - map.put("MAIN_TITLE", mainTitle); + String tpl = matcher.group(); + String key = tpl.substring(2, tpl.length() - 1); + Object valueObj = map.get(key); + if (valueObj == null) { + mainTitle = mainTitle.replaceAll(tpl, ""); + } else { + mainTitle = mainTitle.replaceAll(tpl, valueObj.toString()); } } + return mainTitle; } /** diff --git a/module-form/src/main/resources/mybatis/mapper/design/form-field-mapper.xml b/module-form/src/main/resources/mybatis/mapper/design/form-field-mapper.xml index 3c71c359..8f669529 100644 --- a/module-form/src/main/resources/mybatis/mapper/design/form-field-mapper.xml +++ b/module-form/src/main/resources/mybatis/mapper/design/form-field-mapper.xml @@ -184,7 +184,11 @@ FROM form_field + + form_id = #{formId} + + AND list_show = #{listShow} diff --git a/module-form/src/main/resources/mybatis/mapper/design/form-mapper.xml b/module-form/src/main/resources/mybatis/mapper/design/form-mapper.xml index bfc48ed9..e97042a3 100644 --- a/module-form/src/main/resources/mybatis/mapper/design/form-mapper.xml +++ b/module-form/src/main/resources/mybatis/mapper/design/form-mapper.xml @@ -66,7 +66,7 @@ `app_show_page_code` longtext COMMENT 'APP展示页面代码', `form_table_name` varchar(255) DEFAULT NULL COMMENT '表单表名', `form_version` int(11) DEFAULT NULL COMMENT '表单版本', - `main_title_tpl` varchar(255) DEFAULT NULL COMMENT '主标题模板' + `main_title_tpl` varchar(255) DEFAULT NULL COMMENT '主标题模板', `creator` char(36) DEFAULT NULL COMMENT '创建人', `gmt_create` datetime DEFAULT NULL COMMENT '创建时间', `modifier` char(36) DEFAULT NULL COMMENT '修改人', @@ -81,6 +81,21 @@ ${_parameter} + + + ${_parameter} + + + + + ${_parameter} + + + + + ${_parameter} + + INSERT INTO form_form( diff --git a/module-form/src/main/resources/mybatis/mapper/form-report/form-report-mapper.xml b/module-form/src/main/resources/mybatis/mapper/form-report/form-report-mapper.xml index 6866a2dd..84becd89 100644 --- a/module-form/src/main/resources/mybatis/mapper/form-report/form-report-mapper.xml +++ b/module-form/src/main/resources/mybatis/mapper/form-report/form-report-mapper.xml @@ -81,4 +81,12 @@ + + + \ No newline at end of file diff --git a/module-form/src/main/resources/static/form-design/modules/formDesigner.js b/module-form/src/main/resources/static/form-design/modules/formDesigner.js index 77e03558..22163ea4 100644 --- a/module-form/src/main/resources/static/form-design/modules/formDesigner.js +++ b/module-form/src/main/resources/static/form-design/modules/formDesigner.js @@ -116,6 +116,15 @@ layui.config({ ' ', ' ', '
', + ' ', + '
', + ' ', + '
', + '
', + '
', ' ', '
', ' ', @@ -259,6 +268,7 @@ layui.config({ formName: "表单设计器", Author: "WenG", formId: "id", + mainTitleTpl: '', generateId: 0, field: [], data: [], @@ -1293,6 +1303,12 @@ layui.config({ top.dialog.msg('请输入表单描述'); return; } + var formType = $('#formType').val(); + if(!formType) { + top.dialog.msg('请选择表单类型'); + return; + } + var mainTitleTpl = $('#mainTitleTpl').val(); var fieldHtmlArray = listField(fieldData); var fields = []; $.each(fieldHtmlArray, function (index, item) { @@ -1301,8 +1317,6 @@ layui.config({ html: item.elem.prop('outerHTML') }) }); - console.log(options) - return; top.dialog.confirm(top.dataMessage.commit, function (index) { top.dialog.close(index); var loadLayerIndex; @@ -1310,6 +1324,8 @@ layui.config({ formCode: options.formCode, formName: formName, formSummary: formSummary, + formType: formType, + mainTitleTpl: mainTitleTpl, data: fieldData, fields: fields, }, null, function (code, data) { @@ -1442,7 +1458,6 @@ layui.config({ that.addClick(); /* 向 拷贝 删除 按钮添加 click 动作 */ that.addCopyDeleteClick(); - form.render(); if (options.data.length != 0) { for (var i = 0; i < options.data.length; i++) { if (options.data[i].tag === 'grid') { @@ -1467,6 +1482,9 @@ layui.config({ // 表单属性 $('#formName').val(options.formName); $('#formSummary').val(options.formSummary); + $('#formType').val(options.formType); + $('#mainTitleTpl').val(options.mainTitleTpl); + form.render(); }; Class.prototype.reload = function (id, options) { var that = this; diff --git a/module-form/src/main/resources/static/form/js/form-util.js b/module-form/src/main/resources/static/form/js/form-util.js index 488aa8c4..29f6b08b 100644 --- a/module-form/src/main/resources/static/form/js/form-util.js +++ b/module-form/src/main/resources/static/form/js/form-util.js @@ -3,6 +3,7 @@ function FormUtil(layui, viewer) { var layer = layui.layer; var upload = layui.upload; var laydate = layui.laydate; + var form = layui.form; var Viewer = viewer; var restAjax = layui.restajax; var viewerObj = {}; @@ -449,7 +450,7 @@ function FormUtil(layui, viewer) { * @param checkedData * @param id */ - this.initCheckboxData = function (form, formName, checkedData, id) { + this.initCheckboxData = function (formName, checkedData, id) { var dataArray = checkedData.split(','); var obj = {}; for (var i = 0, data; data = dataArray[i++];) { @@ -476,4 +477,18 @@ function FormUtil(layui, viewer) { formData.field[id] = formData.field[id] ? 1 : 0; } + /** + * 清空上传字段 + * @param formData + */ + this.clearUploadField = function (formData) { + var fileInputs = $(formData.form).find('input[type="file"]'); + if(fileInputs.length == 0) { + return; + } + $.each(fileInputs, function(index, item) { + delete formData.field[item.name]; + }); + } + } \ No newline at end of file diff --git a/module-form/src/main/resources/templates/form-design/update.html b/module-form/src/main/resources/templates/form-design/update.html index 63144a12..a2c64ae7 100644 --- a/module-form/src/main/resources/templates/form-design/update.html +++ b/module-form/src/main/resources/templates/form-design/update.html @@ -41,6 +41,8 @@ version: data.formVersion, formName: data.formName, formSummary: data.formSummary, + mainTitleTpl: data.mainTitleTpl, + formType: data.formType }); }, function(code, data) { top.dialog.msg(data.msg); diff --git a/module-form/src/main/resources/templates/form-report/list.html b/module-form/src/main/resources/templates/form-report/list.html new file mode 100644 index 00000000..ed1b49fa --- /dev/null +++ b/module-form/src/main/resources/templates/form-report/list.html @@ -0,0 +1,185 @@ + + + + + + + + + + + + + +
+
+
+
+
+
+
+ +
+ +
+
+ + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/module-form/src/main/resources/templates/form/get-app-save-page-code.html b/module-form/src/main/resources/templates/form/get-app-save-page-code.html index 65f39fda..24f16acd 100644 --- a/module-form/src/main/resources/templates/form/get-app-save-page-code.html +++ b/module-form/src/main/resources/templates/form/get-app-save-page-code.html @@ -16,17 +16,21 @@
-
+
-
+
+
@@ -54,6 +58,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -76,13 +82,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('appSavePageCode'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 90); + editor.setSize('100%', win.height() - 65); editor.on('change', function (self, changeValue) { $('#appSavePageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -138,6 +158,19 @@ $('.close').on('click', function () { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#appSavePageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/get-app-show-page-code.html b/module-form/src/main/resources/templates/form/get-app-show-page-code.html index 17ee6829..167b704c 100644 --- a/module-form/src/main/resources/templates/form/get-app-show-page-code.html +++ b/module-form/src/main/resources/templates/form/get-app-show-page-code.html @@ -15,17 +15,21 @@
-
+
-
+
+
@@ -53,6 +57,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -75,13 +81,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('appShowPageCode'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 90); + editor.setSize('100%', win.height() - 65); editor.on('change', function(self, changeValue) { $('#appShowPageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -136,6 +156,19 @@ $('.close').on('click', function() { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#appShowPageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/get-app-update-page-code.html b/module-form/src/main/resources/templates/form/get-app-update-page-code.html index c3beccf5..2afdc689 100644 --- a/module-form/src/main/resources/templates/form/get-app-update-page-code.html +++ b/module-form/src/main/resources/templates/form/get-app-update-page-code.html @@ -15,17 +15,21 @@
-
+
-
+
+
@@ -53,6 +57,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -75,13 +81,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('appUpdatePageCode'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 90); + editor.setSize('100%', win.height() - 65); editor.on('change', function(self, changeValue) { $('#appUpdatePageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -136,6 +156,19 @@ $('.close').on('click', function() { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#appUpdatePageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/get-form-source-data.html b/module-form/src/main/resources/templates/form/get-form-source-data.html index f415578a..fa2254a7 100644 --- a/module-form/src/main/resources/templates/form/get-form-source-data.html +++ b/module-form/src/main/resources/templates/form/get-form-source-data.html @@ -15,7 +15,7 @@
-
+
@@ -69,7 +69,7 @@ function initJson(value) { var editor = CodeMirror.fromTextArea(document.getElementById('formSourceData'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 30); + editor.setSize('100%', win.height() - 0); editor.on('change', function(self, changeValue) { $('#formSourceData').val(self.getValue()); }) diff --git a/module-form/src/main/resources/templates/form/get-save-page-code.html b/module-form/src/main/resources/templates/form/get-save-page-code.html index 9487745f..1bc8f8f7 100644 --- a/module-form/src/main/resources/templates/form/get-save-page-code.html +++ b/module-form/src/main/resources/templates/form/get-save-page-code.html @@ -18,14 +18,18 @@
-
+
+
@@ -53,6 +57,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -75,13 +81,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('savePageCode'), codeMirrorConfig); editor.setValue(value); editor.setSize('100%', win.height() - 65); editor.on('change', function(self, changeValue) { $('#savePageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -136,6 +156,19 @@ $('.close').on('click', function() { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#savePageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/get-show-page-code.html b/module-form/src/main/resources/templates/form/get-show-page-code.html index 4678ad15..891199d3 100644 --- a/module-form/src/main/resources/templates/form/get-show-page-code.html +++ b/module-form/src/main/resources/templates/form/get-show-page-code.html @@ -15,17 +15,21 @@
-
+
-
+
+
@@ -53,6 +57,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -75,13 +81,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('showPageCode'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 90); + editor.setSize('100%', win.height() - 65); editor.on('change', function(self, changeValue) { $('#showPageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -136,6 +156,19 @@ $('.close').on('click', function() { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#showPageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/get-update-page-code.html b/module-form/src/main/resources/templates/form/get-update-page-code.html index ac634ad5..fc78daea 100644 --- a/module-form/src/main/resources/templates/form/get-update-page-code.html +++ b/module-form/src/main/resources/templates/form/get-update-page-code.html @@ -15,17 +15,21 @@
-
+
-
+
+
@@ -53,6 +57,8 @@ var formId = params.formId; var formCode = params.formCode; var formVersion = params.formVersion; + var previewTimeout; + var isPreview = false; var codeMirrorConfig = { lineNumbers: true, theme: 'dracula', @@ -75,13 +81,27 @@ parent.layer.close(parent.layer.getFrameIndex(window.name)); } + function initPreview(code) { + if(!isPreview) { + return; + } + $('#previewCode').attr('srcdoc', code); + } + function initFormHtml(value) { var editor = CodeMirror.fromTextArea(document.getElementById('updatePageCode'), codeMirrorConfig); editor.setValue(value); - editor.setSize('100%', win.height() - 90); + editor.setSize('100%', win.height() - 65); editor.on('change', function(self, changeValue) { $('#updatePageCode').val(self.getValue()); - }) + if(previewTimeout) { + clearTimeout(previewTimeout); + } + previewTimeout = setTimeout(function() { + initPreview(self.getValue()); + }, 1000); + }); + $('#previewCode').height(win.height() - 65); } // 初始化 @@ -136,6 +156,19 @@ $('.close').on('click', function() { closeBox(); }); + + $('#previewBtn').on('click', function() { + if(isPreview) { + $('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12'); + $('#previewBox').hide(); + } else { + $('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8'); + $('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4'); + $('#previewBox').show(); + } + isPreview = !isPreview; + initPreview($('#updatePageCode').val()); + }); }); diff --git a/module-form/src/main/resources/templates/form/list-select.html b/module-form/src/main/resources/templates/form/list-select.html index fe089e34..c5a751c4 100644 --- a/module-form/src/main/resources/templates/form/list-select.html +++ b/module-form/src/main/resources/templates/form/list-select.html @@ -96,6 +96,9 @@ if(row.formType == 'default') { return '默认'; } + if(row.formType == 'oa') { + return 'OA表单'; + } return '错误'; } } diff --git a/module-form/src/main/resources/templates/form/list.html b/module-form/src/main/resources/templates/form/list.html index 09cc53ba..a58ae420 100644 --- a/module-form/src/main/resources/templates/form/list.html +++ b/module-form/src/main/resources/templates/form/list.html @@ -44,7 +44,6 @@
- + + + + + \ No newline at end of file diff --git a/module-form/src/main/resources/templates/ftl/page/app/app-form-update.ftl b/module-form/src/main/resources/templates/ftl/page/app/app-form-update.ftl index 17a93745..2a89196c 100644 --- a/module-form/src/main/resources/templates/ftl/page/app/app-form-update.ftl +++ b/module-form/src/main/resources/templates/ftl/page/app/app-form-update.ftl @@ -1,29 +1,31 @@ -', - + + - ${formName} + ${r'${formName}'} + +
-
', +
- ${formFieldHtml} + <#list fields as field> + ${field.html} +
@@ -31,9 +33,11 @@
- , - , + <#list hiddenInputs as hiddenInput> + +
+ @@ -53,52 +53,28 @@ var restAjax = layui.restajax; var formUtil = new FormUtil(layui, Viewer); - // 初始化文件列表', - function initFileList(fileName, ids, callback) { - var dataForm = {}; - dataForm[fileName] = ids; - form.val('dataForm', dataForm); - if (!ids) { - refreshDownloadTemplet(fileName, []); - if (callback) { - callback(fileName, []); - } - return; - } - restAjax.get(restAjax.path('app/file/list-release', []), { - ids: ids - }, null, function (code, data) { - refreshDownloadTemplet(fileName, data); - if (callback) { - callback(fileName, data); - } - }, function (code, data) { - dialog.msg(data.msg); - }); - } - // 初始化 function initData() { -<#list fields as field> - <#if field.tag == 'uploadImage'> - formUtil.initUploadImage('${field.id}', ${field.count}); - <#elseif field.tag == 'uploadFile'> - formUtil.initUploadFile('${field.id}', ${field.count}); - <#elseif field.tag == 'uploadVideo'> - formUtil.initUploadVideo('${field.id}', ${field.count}); - <#elseif field.tag == 'uploadAudio'> - formUtil.initUploadAudio('${field.id}', ${field.count}); - <#elseif field.tag == 'date'> + <#list fields as field> + <#if field.data.tag == 'uploadImage'> + formUtil.initUploadImage('${field.data.id}', ${field.data.count}); + <#elseif field.data.tag == 'uploadFile'> + formUtil.initUploadFile('${field.data.id}', ${field.data.count}); + <#elseif field.data.tag == 'uploadVideo'> + formUtil.initUploadVideo('${field.data.id}', ${field.data.count}); + <#elseif field.data.tag == 'uploadAudio'> + formUtil.initUploadAudio('${field.data.id}', ${field.data.count}); + <#elseif field.data.tag == 'date'> formUtil.initDate({ - id: '${field.id}', - datetype: '${field.datetype}', - dateformat: '${field.dateformat}', - dateDefaultValue: '${field.dateDefaultValue}', - dataMinValue: '${field.dataMinValue}', - dataMaxValue: '${field.dataMaxValue}', + id: '${field.data.id}', + datetype: '${field.data.datetype}', + dateformat: '${field.data.dateformat}', + dateDefaultValue: '${field.data.dateDefaultValue}', + dataMinValue: '${field.data.dataMinValue}', + dataMaxValue: '${field.data.dataMaxValue}', }); - - + + } initData(); @@ -113,17 +89,22 @@ layer.confirm('确定提交吗?', function(confirmLayerIndex) { layer.close(confirmLayerIndex); - // 提交前赋值 -<#list fields as field> - <#if field.tag == 'checkbox'> - formUtil.setCheckboxValue(formData, '${field.id}'); - <#elseif field.tag == 'switch'> - formUtil.setSwitchValue(formData, '${field.id}'); - - + // 提交前处理 + formUtil.clearUploadField(formData); + <#list fields as field> + <#if field.data.tag == 'checkbox'> + formUtil.setCheckboxValue(formData, '${field.data.id}'); + <#elseif field.data.tag == 'switch'> + formUtil.setSwitchValue(formData, '${field.data.id}'); + + var loadLayerIndex; - restAjax.post(restAjax.path('api/form-report/save/code/{formCode}/version/{formVersion}', [$('#formCode').val(), $('#formVersion').val()]), formData.field, null, function (code, data) { + restAjax.post(restAjax.path('${commitUrl}', [ + <#list commitParams as commitParam> + $('#${commitParam}').val(), + + ]), formData.field, null, function (code, data) { // 这里手动添加操作成功后的操作', }, function (code, data) { $('#submitFormBtn').show(); diff --git a/module-form/src/main/resources/templates/ftl/page/web/form-show.ftl b/module-form/src/main/resources/templates/ftl/page/web/form-show.ftl new file mode 100644 index 00000000..ff3ededc --- /dev/null +++ b/module-form/src/main/resources/templates/ftl/page/web/form-show.ftl @@ -0,0 +1,115 @@ + + + + + + ${r'${formName}'} + + + + + + + + + + + +
+
+
+
+ <#list fields as field> + ${field.html} + +
+
+ +
+
+
+
+
+ <#list hiddenInputs as hiddenInput> + + +
+ + + + + + \ No newline at end of file diff --git a/module-form/src/main/resources/templates/ftl/page/web/form-update.ftl b/module-form/src/main/resources/templates/ftl/page/web/form-update.ftl index 87c1ebef..75142909 100644 --- a/module-form/src/main/resources/templates/ftl/page/web/form-update.ftl +++ b/module-form/src/main/resources/templates/ftl/page/web/form-update.ftl @@ -1,29 +1,31 @@ -', - + + - ${formName} + ${r'${formName}'} + +
-
', +
- ${formFieldHtml} + <#list fields as field> + ${field.html} +
@@ -31,9 +33,11 @@
- , - , + <#list hiddenInputs as hiddenInput> + +
+