完善表单功能
This commit is contained in:
parent
b81b09432f
commit
cd7a73a445
@ -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"),
|
||||
|
@ -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();
|
||||
|
@ -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<String> listShowField(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
|
||||
return formReportService.listShowField(formCode, formVersion);
|
||||
}
|
||||
|
||||
private void checkParams(Map<String, Object> body) {
|
||||
if (body.isEmpty()) {
|
||||
throw new ParamsException("提交内容不能为空");
|
||||
|
@ -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<String, Object> 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<String, Object> params) {
|
||||
checkParams(params);
|
||||
formReportService.updateByToken(token, formCode, formVersion, uid, params);
|
||||
return new SuccessResult();
|
||||
}
|
||||
|
||||
@GetMapping("get/code/{formCode}/version/{formVersion}/uid/{uid}")
|
||||
public Map<String, Object> 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<Map<String, Object>> list(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
|
||||
Map<String, Object> params = requestParams();
|
||||
return formReportService.list(formCode, formVersion, params);
|
||||
}
|
||||
|
||||
@GetMapping("listpage/code/{formCode}/version/{formVersion}")
|
||||
public SuccessResultList<List<Map<String, Object>>> listPage(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, ListPage page) {
|
||||
Map<String, Object> params = requestParams();
|
||||
page.setParams(params);
|
||||
return formReportService.listPage(formCode, formVersion, page);
|
||||
}
|
||||
|
||||
@GetMapping("list-show-field/code/{formCode}/version/{formVersion}")
|
||||
public List<String> listShowField(@RequestHeader("token") String token, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
|
||||
return formReportService.listShowField(formCode, formVersion);
|
||||
}
|
||||
|
||||
private void checkParams(Map<String, Object> body) {
|
||||
if (body.isEmpty()) {
|
||||
throw new ParamsException("提交内容不能为空");
|
||||
}
|
||||
for (Map.Entry<String, Object> kv : body.entrySet()) {
|
||||
String key = kv.getKey();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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<String, Object> params) throws SaveException;
|
||||
|
||||
void delete(Map<String, Object> params) throws RemoveException;
|
||||
@ -46,4 +52,5 @@ public interface IFormDao extends IInitBaseTable {
|
||||
String getAppUpdatePageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;
|
||||
|
||||
String getAppShowPageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;
|
||||
|
||||
}
|
||||
|
@ -31,4 +31,5 @@ public interface IFormReportDao {
|
||||
|
||||
List<Map<String, Object>> list(Map<String, Object> queryParams) throws SearchException;
|
||||
|
||||
Integer countByTableName(String tableName) throws SearchException;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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<Field> 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;
|
||||
}
|
||||
|
@ -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";
|
||||
|
||||
/**
|
||||
* 保存表单
|
||||
*
|
||||
|
@ -126,8 +126,9 @@ public interface IFormFieldService {
|
||||
/**
|
||||
* 字段名列表
|
||||
*
|
||||
* @param formId 表单ID
|
||||
* @param listShow 列表显示状态
|
||||
* @return
|
||||
*/
|
||||
List<String> listFieldNameByListShow(String listShow);
|
||||
List<String> listFieldNameByFormIdAndListShow(String formId, String listShow);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
|
@ -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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<FormFieldVO> 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();
|
||||
}
|
||||
|
@ -121,8 +121,9 @@ public class FormFieldServiceImpl extends DefaultBaseService implements IFormFie
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listFieldNameByListShow(String listShow) {
|
||||
public List<String> listFieldNameByFormIdAndListShow(String formId, String listShow) {
|
||||
Map<String, Object> params = getHashMap(2);
|
||||
params.put("formId", formId);
|
||||
params.put("listShow", listShow);
|
||||
return listFieldName(params);
|
||||
}
|
||||
|
@ -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<String> ids) {
|
||||
// 判断表单是否有数据,有数据不能删除
|
||||
deleteTable(ids);
|
||||
Map<String, Object> 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<String> ids) {
|
||||
// 逻辑删除不删除表
|
||||
Map<String, Object> params = getHashMap(2);
|
||||
params.put("formIds", ids);
|
||||
formDao.remove(params);
|
||||
}
|
||||
|
||||
private void deleteTable(List<String> ids) {
|
||||
List<FormDTO> 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<String, Object> params = HashMapUtil.beanToMap(formVO);
|
||||
|
@ -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<String, Object> modal);
|
||||
void save(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> 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<String, Object> modal);
|
||||
void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> 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<String, Object> modal);
|
||||
void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> 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<String, Object> modal);
|
||||
void appSave(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> 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<String, Object> modal);
|
||||
void appUpdate(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> 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<String, Object> modal);
|
||||
void appShow(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Map<String, Object> model);
|
||||
}
|
||||
|
@ -17,12 +17,24 @@ public interface IFormReportService {
|
||||
|
||||
void save(String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
void saveByToken(String token, String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
void saveByUserId(String userId, String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
String saveAndReturnId(String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
String saveByTokenAndReturnId(String token, String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
String saveByUserIdAndReturnId(String userId, String formCode, Integer formVersion, Map<String, Object> params);
|
||||
|
||||
void remove(String formCode, Integer formVersion, List<String> uids);
|
||||
|
||||
void update(String formCode, Integer formVersion, String uid, Map<String, Object> params);
|
||||
|
||||
void updateByToken(String token, String formCode, Integer formVersion, String uid, Map<String, Object> params);
|
||||
|
||||
void updateByUserId(String userId, String formCode, Integer formVersion, String uid, Map<String, Object> params);
|
||||
|
||||
void updateProcessInstanceId(String formCode, Integer formVersion, String uid, String processInstanceId);
|
||||
|
||||
Map<String, Object> get(String formCode, Integer formVersion, String uid);
|
||||
@ -31,5 +43,7 @@ public interface IFormReportService {
|
||||
|
||||
SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page);
|
||||
|
||||
List<String> listShowField(String formCode, Integer formVersion);
|
||||
|
||||
Integer count(String tableName);
|
||||
}
|
||||
|
@ -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<String, Object> params) {
|
||||
saveByTokenAndReturnId(token, formCode, formVersion, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveByUserId(String userId, String formCode, Integer formVersion, Map<String, Object> params) {
|
||||
saveByUserIdAndReturnId(userId, formCode, formVersion, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveAndReturnId(String formCode, Integer formVersion, Map<String, Object> params) {
|
||||
return saveByUserIdAndReturnId(securityComponent.getCurrentUser().getUserId(), formCode, formVersion, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveByTokenAndReturnId(String token, String formCode, Integer formVersion, Map<String, Object> params) {
|
||||
String userId = getAppTokenUser(token).getId();
|
||||
return saveByUserIdAndReturnId(userId, formCode, formVersion, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String saveByUserIdAndReturnId(String userId, String formCode, Integer formVersion, Map<String, Object> params) {
|
||||
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
|
||||
checkForm(formPO);
|
||||
String uid = UUIDUtil.getUUID();
|
||||
List<String> inserts = new ArrayList<>();
|
||||
List<Object> 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<String, Object> 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<String, Object> 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<String> uids) {
|
||||
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
|
||||
checkForm(formPO);
|
||||
|
||||
Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> params) {
|
||||
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
|
||||
checkForm(formPO);
|
||||
|
||||
List<List<String>> kvList = new ArrayList<>();
|
||||
for (Map.Entry<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> get(String formCode, Integer formVersion, String uid) {
|
||||
Map<String, Object> 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<Map<String, Object>> list(String formCode, Integer formVersion, Map<String, Object> params) {
|
||||
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
|
||||
if (formPO == null) {
|
||||
throw new SearchException("表单不存在");
|
||||
}
|
||||
checkForm(formPO);
|
||||
|
||||
List<String> queryList = conditionList(params);
|
||||
Map<String, Object> 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<Map<String, Object>> mapList = formReportDao.list(queryParams);
|
||||
setMainTitle(formPO, mapList);
|
||||
return mapList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page) {
|
||||
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
|
||||
if (formPO == null) {
|
||||
throw new SearchException("表单不存在");
|
||||
}
|
||||
checkForm(formPO);
|
||||
|
||||
List<String> queryList = conditionList(page.getParams());
|
||||
Map<String, Object> 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<Map<String, Object>> mapList = formReportDao.list(queryParams);
|
||||
setMainTitle(formPO, mapList);
|
||||
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
|
||||
return new SuccessResultList<>(mapList, pageInfo.getPageNum(), pageInfo.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> 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<String> 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<Map<String, Object>> mapList) {
|
||||
if (mapList.isEmpty()) {
|
||||
return;
|
||||
private String getMainTitleCode(String mainTitleTpl, Map<String, Object> map) {
|
||||
if (StringUtils.isBlank(mainTitleTpl)) {
|
||||
return "";
|
||||
}
|
||||
if (StringUtils.isBlank(formPO.getMainTitleTpl())) {
|
||||
return;
|
||||
}
|
||||
List<String> 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<String, Object> map : mapList) {
|
||||
String mainTitle = null;
|
||||
for (String tpl : tpls) {
|
||||
Object tplObj = map.get(tpl);
|
||||
if (tplObj != null) {
|
||||
mainTitle = formPO.getMainTitleTpl().replaceAll(tpl, tplObj.toString());
|
||||
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 = formPO.getMainTitleTpl().replaceAll(tpl, "");
|
||||
}
|
||||
}
|
||||
if (StringUtils.isBlank(mainTitle)) {
|
||||
map.put("MAIN_TITLE", mainTitle);
|
||||
mainTitle = mainTitle.replaceAll(tpl, valueObj.toString());
|
||||
}
|
||||
}
|
||||
return mainTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -184,7 +184,11 @@
|
||||
FROM
|
||||
form_field
|
||||
<where>
|
||||
<if test="formId != null and formId != ''">
|
||||
form_id = #{formId}
|
||||
</if>
|
||||
<if test="listShow != null and listShow != ''">
|
||||
AND
|
||||
list_show = #{listShow}
|
||||
</if>
|
||||
</where>
|
||||
|
@ -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}
|
||||
</update>
|
||||
|
||||
<!-- 建表 -->
|
||||
<update id="deleteDynamicForm" parameterType="java.lang.String">
|
||||
${_parameter}
|
||||
</update>
|
||||
|
||||
<!-- 建表 -->
|
||||
<update id="updateDynamicFormField" parameterType="java.lang.String">
|
||||
${_parameter}
|
||||
</update>
|
||||
|
||||
<!-- 建表 -->
|
||||
<update id="deleteDynamicFormField" parameterType="java.lang.String">
|
||||
${_parameter}
|
||||
</update>
|
||||
|
||||
<!-- 新增表单 -->
|
||||
<insert id="save" parameterType="map" flushCache="true">
|
||||
INSERT INTO form_form(
|
||||
|
@ -81,4 +81,12 @@
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
<!-- 统计 -->
|
||||
<select id="countByTableName" parameterType="java.lang.String" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
${_parameter}
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -116,6 +116,15 @@ layui.config({
|
||||
' </div>',
|
||||
' </div>',
|
||||
' <div class="layui-form-item">',
|
||||
' <label class="layui-form-label">表单类型</label>',
|
||||
' <div class="layui-input-block">',
|
||||
' <select id="formType" name="formType" lay-verify="required">',
|
||||
' <option value="default">默认</option>',
|
||||
' <option value="oa">OA表单</option>',
|
||||
' </select>',
|
||||
' </div>',
|
||||
' </div>',
|
||||
' <div class="layui-form-item">',
|
||||
' <label class="layui-form-label">主标题模板</label>',
|
||||
' <div class="layui-input-block">',
|
||||
' <input type="text" id="mainTitleTpl" name="mainTitleTpl" placeholder="请输入主标题模板" class="layui-input">',
|
||||
@ -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;
|
||||
|
@ -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];
|
||||
});
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
|
185
module-form/src/main/resources/templates/form-report/list.html
Normal file
185
module-form/src/main/resources/templates/form-report/list.html
Normal file
@ -0,0 +1,185 @@
|
||||
<!doctype html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'} ">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid layui-anim layui-anim-fadein">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
|
||||
<div class="layui-inline">
|
||||
<input type="text" id="keywords" class="layui-input search-item" placeholder="输入关键字">
|
||||
</div>
|
||||
<button type="button" id="search" class="layui-btn layui-btn-sm">
|
||||
<i class="fa fa-lg fa-search"></i> 搜索
|
||||
</button>
|
||||
</div>
|
||||
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
|
||||
<!-- 表头按钮字典 -->
|
||||
<script type="text/html" id="headerToolBar">
|
||||
<div class="layui-btn-group">
|
||||
<button type="button" class="layui-btn layui-btn-sm" lay-event="save">
|
||||
<i class="fa fa-lg fa-plus"></i> 新增
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" lay-event="update">
|
||||
<i class="fa fa-lg fa-edit"></i> 编辑
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" lay-event="remove">
|
||||
<i class="fa fa-lg fa-trash"></i> 删除
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script type="text/javascript">
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'table', 'laydate', 'ztree'], function() {
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var admin = layui.admin;
|
||||
var laydate = layui.laydate;
|
||||
|
||||
// 初始化表格
|
||||
function initTable() {
|
||||
table.render({
|
||||
elem: '#dataTable',
|
||||
id: 'dataTable',
|
||||
url: top.restAjax.path('api/form/listpage', []),
|
||||
width: admin.screen() > 1 ? '100%' : '',
|
||||
height: $win.height() - 90,
|
||||
limit: 20,
|
||||
limits: [20, 40, 60, 80, 100, 200],
|
||||
toolbar: '#headerToolBar',
|
||||
request: {
|
||||
pageName: 'page',
|
||||
limitName: 'rows'
|
||||
},
|
||||
cols: [
|
||||
[
|
||||
{type:'checkbox', fixed: 'left'},
|
||||
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
|
||||
]
|
||||
],
|
||||
page: true,
|
||||
parseData: function(data) {
|
||||
return {
|
||||
'code': 0,
|
||||
'msg': '',
|
||||
'count': data.total,
|
||||
'data': data.rows
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
// 重载表格
|
||||
function reloadTable() {
|
||||
table.reload('dataTable', {
|
||||
where: {
|
||||
keywords: $('#keywords').val(),
|
||||
},
|
||||
});
|
||||
}
|
||||
// 初始化日期
|
||||
function initDate() {}
|
||||
// 删除
|
||||
function removeData(ids) {
|
||||
top.dialog.msg(top.dataMessage.delete, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
shade: 0.3,
|
||||
yes: function (index) {
|
||||
top.dialog.close(index);
|
||||
var layIndex;
|
||||
top.restAjax.delete(top.restAjax.path('api/form/remove/{ids}', [ids]), {}, null, function (code, data) {
|
||||
top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000});
|
||||
reloadTable();
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.deleting, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
initTable();
|
||||
initDate();
|
||||
|
||||
// 事件 - 页面变化
|
||||
$win.on('resize', function() {
|
||||
reloadTable();
|
||||
});
|
||||
// 事件 - 搜索
|
||||
$(document).on('click', '#search', function() {
|
||||
reloadTable();
|
||||
});
|
||||
// 事件 - 增删改
|
||||
table.on('toolbar(dataTable)', function(obj) {
|
||||
var layEvent = obj.event;
|
||||
var checkStatus = table.checkStatus('dataTable');
|
||||
var checkDatas = checkStatus.data;
|
||||
if(layEvent === 'save') {
|
||||
top.dialog.open({
|
||||
title: '表单设计器',
|
||||
url: top.restAjax.path('route/form-design/save', []),
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
reloadTable();
|
||||
}
|
||||
})
|
||||
} else if(layEvent === 'update') {
|
||||
if(checkDatas.length === 0) {
|
||||
top.dialog.msg(top.dataMessage.table.selectEdit);
|
||||
} else if(checkDatas.length > 1) {
|
||||
top.dialog.msg(top.dataMessage.table.selectOneEdit);
|
||||
} else {
|
||||
top.dialog.open({
|
||||
title: '表单设计器',
|
||||
url: top.restAjax.path('route/form-design/update?formId={formId}', [checkDatas[0].formId]),
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
reloadTable();
|
||||
}
|
||||
})
|
||||
}
|
||||
} else if(layEvent === 'remove') {
|
||||
if(checkDatas.length === 0) {
|
||||
top.dialog.msg(top.dataMessage.table.selectDelete);
|
||||
} else {
|
||||
var ids = '';
|
||||
for(var i = 0, item; item = checkDatas[i++];) {
|
||||
if(i > 1) {
|
||||
ids += '_';
|
||||
}
|
||||
ids += item.formId;
|
||||
}
|
||||
removeData(ids);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -16,17 +16,21 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="appSavePageCode" name="appSavePageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -15,17 +15,21 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="appShowPageCode" name="appShowPageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -15,17 +15,21 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="appUpdatePageCode" name="appUpdatePageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
@ -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());
|
||||
})
|
||||
|
@ -18,14 +18,18 @@
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="savePageCode" name="savePageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -15,17 +15,21 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="showPageCode" name="showPageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -15,17 +15,21 @@
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<div class="layui-card-body" style="padding: 0px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12 layui-col-xs12">
|
||||
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
|
||||
<textarea id="updatePageCode" name="updatePageCode" style="display: none"></textarea>
|
||||
</div>
|
||||
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
|
||||
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -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());
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
@ -96,6 +96,9 @@
|
||||
if(row.formType == 'default') {
|
||||
return '<span class="layui-badge layui-bg-green">默认</span>';
|
||||
}
|
||||
if(row.formType == 'oa') {
|
||||
return '<span class="layui-badge layui-bg-blue">OA表单</span>';
|
||||
}
|
||||
return '<span class="layui-badge">错误</span>';
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="parentId" th:value="${parentId}">
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script type="text/javascript">
|
||||
layui.config({
|
||||
@ -98,6 +97,9 @@
|
||||
if(row.formType == 'default') {
|
||||
return '<span class="layui-badge layui-bg-green">默认</span>';
|
||||
}
|
||||
if(row.formType == 'oa') {
|
||||
return '<span class="layui-badge layui-bg-blue">OA表单</span>';
|
||||
}
|
||||
return '<span class="layui-badge">错误</span>';
|
||||
}
|
||||
},
|
||||
@ -138,10 +140,12 @@
|
||||
return '<button class="layui-btn layui-btn-xs" lay-event="showDataEvent">查看数据</button>';
|
||||
}
|
||||
},
|
||||
{field:'opition', width:120, title: '操作', fixed:'right', align:'center',
|
||||
{field:'opition', width:210, title: '操作', fixed:'right', align:'center',
|
||||
templet: function(item) {
|
||||
return '<div class="layui-btn-group">' +
|
||||
'<button type="button" class="layui-btn layui-btn-xs" lay-event="showFormEvent">上报列表</button>'+
|
||||
'<button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event="formFieldEvent">字段列表</button>'+
|
||||
'<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" lay-event="deleteEvent" title="该操作将连同物理表(无数据)一并删除">物理删除</button>'+
|
||||
'</div>';
|
||||
}
|
||||
}
|
||||
@ -255,8 +259,8 @@
|
||||
top.dialog.open({
|
||||
title: '新增页面模板',
|
||||
url: top.restAjax.path('route/form/get-save-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
@ -264,8 +268,8 @@
|
||||
top.dialog.open({
|
||||
title: '修改页面模板',
|
||||
url: top.restAjax.path('route/form/get-update-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
@ -273,8 +277,8 @@
|
||||
top.dialog.open({
|
||||
title: '详情页面模板',
|
||||
url: top.restAjax.path('route/form/get-show-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
@ -282,8 +286,8 @@
|
||||
top.dialog.open({
|
||||
title: 'APP新增页面模板',
|
||||
url: top.restAjax.path('route/form/get-app-save-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
@ -291,8 +295,8 @@
|
||||
top.dialog.open({
|
||||
title: 'APP修改页面模板',
|
||||
url: top.restAjax.path('route/form/get-app-update-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
@ -300,16 +304,16 @@
|
||||
top.dialog.open({
|
||||
title: 'APP详情页面模板',
|
||||
url: top.restAjax.path('route/form/get-app-show-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
|
||||
width: '80%',
|
||||
height: '90%',
|
||||
width: '99%',
|
||||
height: '99%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
} else if(event === 'showDataEvent') {
|
||||
top.dialog.open({
|
||||
title: '表单设计器',
|
||||
title: '表单数据',
|
||||
url: top.restAjax.path('route/form/get-form-source-data?formId={formId}', [data.formId]),
|
||||
width: '50%',
|
||||
width: '500px',
|
||||
height: '90%',
|
||||
onClose: function () {
|
||||
}
|
||||
@ -325,13 +329,30 @@
|
||||
})
|
||||
} else if(event === 'reportListEvent') {
|
||||
top.dialog.open({
|
||||
title: '预览',
|
||||
url: top.restAjax.path('route/form-report/save/code/{formCode}/version/{formVersion}', [data.formCode, data.formVersion]),
|
||||
title: '上报列表',
|
||||
url: top.restAjax.path('route/form-report?formCode={formCode}&version={formVersion}', [data.formCode, data.formVersion]),
|
||||
width: '50%',
|
||||
height: '80%',
|
||||
onClose: function () {
|
||||
}
|
||||
})
|
||||
} else if(event === 'formFieldEvent') {
|
||||
|
||||
} else if(event === 'deleteEvent') {
|
||||
top.dialog.confirm('该操作将连同物理表(无数据)一并删除,确定吗?', function(index) {
|
||||
top.dialog.close(index);
|
||||
var layIndex;
|
||||
top.restAjax.delete(top.restAjax.path('api/form/delete/{id}', [data.formId]), {}, null, function (code, data) {
|
||||
top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000});
|
||||
reloadTable();
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.deleting, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -1,29 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>',
|
||||
<base href="${contextPath}"/>
|
||||
<head>
|
||||
<base href="${r'${contextPath}'}"/>
|
||||
<meta charset="utf-8">
|
||||
<title>${formName}</title>
|
||||
<title>${r'${formName}'}</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="static/form/css/form.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">',
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
${formFieldHtml}
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit
|
||||
lay-filter="submitForm">提交
|
||||
</button>
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -31,9 +33,11 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="formCode" value="${formCode}">,
|
||||
<input type="hidden" id="formVersion" value="${formVersion}">,
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
@ -41,170 +45,81 @@
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'form', 'laydate', 'laytpl', 'upload', 'restajax', 'datamessage', 'dialog'], function () {
|
||||
}).use(['index', 'form', 'layer', 'laydate', 'laytpl', 'upload', 'restajax'], function () {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var layer = layui.layer;
|
||||
var laydate = layui.laydate;
|
||||
var upload = layui.upload;
|
||||
var dialog = layui.dialog;
|
||||
var restAjax = layui.restajax;
|
||||
var dataMessage = layui.datamessage;
|
||||
var viewerObj = {};
|
||||
|
||||
// 初始化图片方法
|
||||
function initUploadImage(fileName, fileExplain, maxCount) {
|
||||
maxCount = maxCount ? parseInt(maxCount) : 9
|
||||
maxCount = maxCount < 0 ? 9 : maxCount;
|
||||
var id = '#' + fileName;
|
||||
var boxId = '#' + fileName + 'FileBox';
|
||||
var uploadClass = '.' + fileName + '-upload';
|
||||
var removeClass = '.' + fileName + '-remove';
|
||||
|
||||
function initImage(callback) {
|
||||
var fileIds = $(id).val();
|
||||
var fileIdArray = fileIds.split(',');
|
||||
var html = '';
|
||||
for (var i = 0, fileId; fileId = fileIdArray[i++];) {
|
||||
var img = [
|
||||
'<div class="upload-image-box">',
|
||||
' <span class="upload-image-span">',
|
||||
' <img src="route/file/download/false/' + fileId + '" align="加载失败">',
|
||||
' </span>',
|
||||
' <a class="layui-btn layui-btn-xs layui-btn-danger text-danger remove-image ' + fileName + '-remove" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '">',
|
||||
' <i class="fa fa-trash-o"></i>',
|
||||
' </a>',
|
||||
'</div>'
|
||||
].join('\n');
|
||||
html += img;
|
||||
}
|
||||
if (fileIdArray.length < maxCount) {
|
||||
var upload = [
|
||||
'<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">',
|
||||
' <a href="javascript:void(0);" class="' + fileName + '-upload" data-explain="' + fileExplain + '" data-name="' + fileName + '">',
|
||||
' <i class="fa fa-plus-square-o" style="font-size: 70px;"></i>',
|
||||
' </a>',
|
||||
'</div>'
|
||||
].join('\n');
|
||||
html += upload;
|
||||
}
|
||||
$(boxId).empty();
|
||||
$(boxId).append(html);
|
||||
callback ? callback() : '';
|
||||
};
|
||||
|
||||
// 添加点击时间
|
||||
function addClick() {
|
||||
$(document).on('click', uploadClass, function () {
|
||||
var name = this.dataset.name;
|
||||
var explain = this.dataset.explain;
|
||||
top.dialog.file({
|
||||
type: 'image',
|
||||
title: '【' + explain + '】图片上传',
|
||||
width: '400px',
|
||||
height: '420px',
|
||||
maxFileCount: '1',
|
||||
onClose: function () {
|
||||
var uploadFileArray = top.dialog.dialogData.uploadFileArray;
|
||||
if (typeof (uploadFileArray) != 'undefined' && uploadFileArray.length > 0) {
|
||||
var files = $('#' + name).val();
|
||||
for (var j = 0, file = uploadFileArray[j]; file = uploadFileArray[j++];) {
|
||||
if (files.length > 0) {
|
||||
files += ',';
|
||||
}
|
||||
files += file.data;
|
||||
}
|
||||
$('#'+ name).val(files);
|
||||
initImage(function () {
|
||||
viewerObj[name].update();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('click', removeClass, function () {
|
||||
var name = this.dataset.name;
|
||||
var id = this.dataset.id;
|
||||
var files = $('#' + name).val().replace(id, '');
|
||||
files = files.replace(/\,+/g, ',');
|
||||
if (files.charAt(0) == ',') {
|
||||
files = files.substring(1);
|
||||
}
|
||||
if (files.charAt(files.length - 1) == ',') {
|
||||
files = files.substring(0, files.length - 1);
|
||||
}
|
||||
$('#' + name).val(files);
|
||||
initImage(function () {
|
||||
viewerObj[name].update();
|
||||
});
|
||||
});
|
||||
}
|
||||
var queryParams = restAjax.params(window.location.href);
|
||||
var token = queryParams.token;
|
||||
var formUtil = new FormUtil(layui, Viewer);
|
||||
|
||||
// 初始化
|
||||
initImage(function () {
|
||||
viewerObj[fileName] = new Viewer(document.getElementById(fileName + 'FileBox'), {navbar: false});
|
||||
});
|
||||
addClick();
|
||||
}
|
||||
|
||||
// 初始化文件列表',
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
${initSaveFunctions}
|
||||
|
||||
// 初始化内容
|
||||
function initData() {
|
||||
${initSaveScript}
|
||||
<#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.data.id}',
|
||||
datetype: '${field.data.datetype}',
|
||||
dateformat: '${field.data.dateformat}',
|
||||
dateDefaultValue: '${field.data.dateDefaultValue}',
|
||||
dataMinValue: '${field.data.dataMinValue}',
|
||||
dataMaxValue: '${field.data.dataMaxValue}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
}
|
||||
|
||||
initData();
|
||||
// 关闭页面',
|
||||
|
||||
// 关闭页面
|
||||
$('.close').on('click', function () {
|
||||
// 这里写返回按钮的逻辑,默认是关闭',
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
// 提交表单',
|
||||
|
||||
// 提交表单
|
||||
form.on('submit(submitForm)', function (formData) {
|
||||
dialog.confirm('确定提交吗?', function (index) {
|
||||
dialog.close(index);
|
||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||
layer.close(confirmLayerIndex);
|
||||
|
||||
// 提交前处理
|
||||
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}');
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
var loadLayerIndex;
|
||||
|
||||
${submitSaveScript}
|
||||
|
||||
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(),
|
||||
</#list>
|
||||
]), formData.field, {
|
||||
headers: {
|
||||
token: token
|
||||
}
|
||||
}, function (code, data) {
|
||||
// 这里手动添加操作成功后的操作',
|
||||
}, function (code, data) {
|
||||
$('#submitFormBtn').show();
|
||||
dialog.msg(data.msg);
|
||||
layer.msg(data.msg);
|
||||
}, function () {
|
||||
$('#submitFormBtn').hide();
|
||||
loadLayerIndex = dialog.msg(dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||||
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
dialog.close(loadLayerIndex);
|
||||
layer.close(loadLayerIndex);
|
||||
});
|
||||
});
|
||||
return false;
|
||||
|
@ -0,0 +1,120 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<base href="${r'${contextPath}'}"/>
|
||||
<meta charset="utf-8">
|
||||
<title>${r'${formName}'}</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="static/form/css/form.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'form', 'layer', 'laydate', 'laytpl', 'upload', 'restajax'], function () {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
var laydate = layui.laydate;
|
||||
var restAjax = layui.restajax;
|
||||
var queryParams = restAjax.params(window.location.href);
|
||||
var token = queryParams.token;
|
||||
var uid = queryParams.uid;
|
||||
var formUtil = new FormUtil(layui, Viewer);
|
||||
|
||||
// 初始化
|
||||
function initData() {
|
||||
var self = this;
|
||||
var loadLayerIndex;
|
||||
top.restAjax.get(restAjax.path('${initUrl}', [
|
||||
<#list initParams as initParam>
|
||||
$('#${initParam}').val(),
|
||||
</#list>
|
||||
uid
|
||||
]), {}, {
|
||||
headers: {
|
||||
token: token
|
||||
}
|
||||
}, function(code, data) {
|
||||
var dataFormData = {};
|
||||
for(var i in data) {
|
||||
dataFormData[i] = data[i] +'';
|
||||
}
|
||||
form.val('dataForm', dataFormData);
|
||||
|
||||
<#list fields as field>
|
||||
<#if field.data.tag == 'checkbox'>
|
||||
formUtil.initCheckboxData('dataForm', dataFormData['${field.data.id}'], '${field.data.id}');
|
||||
<#elseif 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.data.id}',
|
||||
datetype: '${field.data.datetype}',
|
||||
dateformat: '${field.data.dateformat}',
|
||||
dateDefaultValue: '${field.data.dateDefaultValue}',
|
||||
dataMinValue: '${field.data.dataMinValue}',
|
||||
dataMaxValue: '${field.data.dataMaxValue}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
form.render(null, 'dataForm');
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
|
||||
// 关闭页面
|
||||
$('.close').on('click', function () {
|
||||
// 这里写返回按钮的逻辑,默认是关闭',
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,29 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>',
|
||||
<base href="${contextPath}"/>
|
||||
<head>
|
||||
<base href="${r'${contextPath}'}"/>
|
||||
<meta charset="utf-8">
|
||||
<title>${formName}</title>
|
||||
<title>${r'${formName}'}</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="static/form/css/form.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">',
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
${formFieldHtml}
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit
|
||||
lay-filter="submitForm">提交
|
||||
</button>
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -31,9 +33,11 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="formCode" value="${formCode}">,
|
||||
<input type="hidden" id="formVersion" value="${formVersion}">,
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
@ -41,81 +45,111 @@
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'form', 'laydate', 'laytpl', 'upload', 'restajax', 'datamessage', 'dialog'], function () {
|
||||
}).use(['index', 'form', 'layer', 'laydate', 'laytpl', 'upload', 'restajax'], function () {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var layer = layui.layer;
|
||||
var laydate = layui.laydate;
|
||||
var upload = layui.upload;
|
||||
var dialog = layui.dialog;
|
||||
var restAjax = layui.restajax;
|
||||
var dataMessage = layui.datamessage;
|
||||
var viewerObj = {};
|
||||
var queryParams = restAjax.params(window.location.href);
|
||||
var token = queryParams.token;
|
||||
var uid = queryParams.uid;
|
||||
var formUtil = new FormUtil(layui, Viewer);
|
||||
|
||||
// 刷新下载模板',
|
||||
function refreshDownloadTemplet(fileName, file) {
|
||||
var dataRander = {};
|
||||
dataRander[fileName] = file;
|
||||
laytpl(document.getElementById(fileName + 'FileDownload').innerHTML).render(dataRander, function (html) {
|
||||
document.getElementById(fileName + 'FileBox').innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化文件列表',
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
${initSaveFunctions}
|
||||
|
||||
// 初始化内容
|
||||
// 初始化
|
||||
function initData() {
|
||||
${initSaveScript}
|
||||
var self = this;
|
||||
var loadLayerIndex;
|
||||
top.restAjax.get(restAjax.path('${initUrl}', [
|
||||
<#list initParams as initParam>
|
||||
$('#${initParam}').val(),
|
||||
</#list>
|
||||
uid
|
||||
]), {}, {
|
||||
headers: {
|
||||
token: token
|
||||
}
|
||||
}, function(code, data) {
|
||||
var dataFormData = {};
|
||||
for(var i in data) {
|
||||
dataFormData[i] = data[i] +'';
|
||||
}
|
||||
form.val('dataForm', dataFormData);
|
||||
|
||||
<#list fields as field>
|
||||
<#if field.data.tag == 'checkbox'>
|
||||
formUtil.initCheckboxData('dataForm', dataFormData['${field.data.id}'], '${field.data.id}');
|
||||
<#elseif 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.data.id}',
|
||||
datetype: '${field.data.datetype}',
|
||||
dateformat: '${field.data.dateformat}',
|
||||
dateDefaultValue: '${field.data.dateDefaultValue}',
|
||||
dataMinValue: '${field.data.dataMinValue}',
|
||||
dataMaxValue: '${field.data.dataMaxValue}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
form.render(null, 'dataForm');
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
// 关闭页面',
|
||||
|
||||
// 关闭页面
|
||||
$('.close').on('click', function () {
|
||||
// 这里写返回按钮的逻辑,默认是关闭',
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
// 提交表单',
|
||||
|
||||
// 提交表单
|
||||
form.on('submit(submitForm)', function (formData) {
|
||||
dialog.confirm('确定提交吗?', function (index) {
|
||||
dialog.close(index);
|
||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||
layer.close(confirmLayerIndex);
|
||||
|
||||
// 提交前赋值
|
||||
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}');
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
var loadLayerIndex;
|
||||
|
||||
${submitSaveScript}
|
||||
|
||||
restAjax.post(restAjax.path('api/form-report/save/code/{formCode}/version/{formVersion}', [$('#formCode').val(), $('#formVersion').val()]), formData.field, null, function (code, data) {
|
||||
restAjax.put(restAjax.path('${commitUrl}', [
|
||||
<#list commitParams as commitParam>
|
||||
$('#${commitParam}').val(),
|
||||
</#list>
|
||||
]), formData.field, {
|
||||
headers: {
|
||||
token: token
|
||||
}
|
||||
}, function (code, data) {
|
||||
// 这里手动添加操作成功后的操作',
|
||||
}, function (code, data) {
|
||||
$('#submitFormBtn').show();
|
||||
dialog.msg(data.msg);
|
||||
layer.msg(data.msg);
|
||||
}, function () {
|
||||
$('#submitFormBtn').hide();
|
||||
loadLayerIndex = dialog.msg(dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||||
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
dialog.close(loadLayerIndex);
|
||||
layer.close(loadLayerIndex);
|
||||
});
|
||||
});
|
||||
return false;
|
||||
|
@ -19,14 +19,13 @@
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<#list fields as field>
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交
|
||||
</button>
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -34,8 +33,9 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="formCode" value="${r'${formCode}'}">
|
||||
<input type="hidden" id="formVersion" value="${r'${formVersion}'}">
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
@ -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}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
</#list>
|
||||
}
|
||||
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}');
|
||||
</#if>
|
||||
</#list>
|
||||
</#list>
|
||||
|
||||
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(),
|
||||
</#list>
|
||||
]), formData.field, null, function (code, data) {
|
||||
// 这里手动添加操作成功后的操作',
|
||||
}, function (code, data) {
|
||||
$('#submitFormBtn').show();
|
||||
|
@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<base href="${r'${contextPath}'}"/>
|
||||
<meta charset="utf-8">
|
||||
<title>${r'${formName}'}</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="static/form/css/form.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'form', 'layer', 'laydate', 'laytpl', 'upload', 'restajax'], function () {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
var laydate = layui.laydate;
|
||||
var restAjax = layui.restajax;
|
||||
var queryParams = restAjax.params(window.location.href);
|
||||
var uid = queryParams.uid;
|
||||
var formUtil = new FormUtil(layui, Viewer);
|
||||
|
||||
// 初始化
|
||||
function initData() {
|
||||
var self = this;
|
||||
var loadLayerIndex;
|
||||
top.restAjax.get(restAjax.path('${initUrl}', [
|
||||
<#list initParams as initParam>
|
||||
$('#${initParam}').val(),
|
||||
</#list>
|
||||
uid
|
||||
]), {}, null, function(code, data) {
|
||||
var dataFormData = {};
|
||||
for(var i in data) {
|
||||
dataFormData[i] = data[i] +'';
|
||||
}
|
||||
form.val('dataForm', dataFormData);
|
||||
|
||||
<#list fields as field>
|
||||
<#if field.data.tag == 'checkbox'>
|
||||
formUtil.initCheckboxData('dataForm', dataFormData['${field.data.id}'], '${field.data.id}');
|
||||
<#elseif 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.data.id}',
|
||||
datetype: '${field.data.datetype}',
|
||||
dateformat: '${field.data.dateformat}',
|
||||
dateDefaultValue: '${field.data.dateDefaultValue}',
|
||||
dataMinValue: '${field.data.dataMinValue}',
|
||||
dataMaxValue: '${field.data.dataMaxValue}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
form.render(null, 'dataForm');
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
|
||||
// 关闭页面
|
||||
$('.close').on('click', function () {
|
||||
// 这里写返回按钮的逻辑,默认是关闭',
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,29 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>',
|
||||
<base href="${contextPath}"/>
|
||||
<head>
|
||||
<base href="${r'${contextPath}'}"/>
|
||||
<meta charset="utf-8">
|
||||
<title>${formName}</title>
|
||||
<title>${r'${formName}'}</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="static/form/css/form.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">',
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
${formFieldHtml}
|
||||
<#list fields as field>
|
||||
${field.html}
|
||||
</#list>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit
|
||||
lay-filter="submitForm">提交
|
||||
</button>
|
||||
<button type="button" id="submitFormBtn" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -31,9 +33,11 @@
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" id="formCode" value="${formCode}">,
|
||||
<input type="hidden" id="formVersion" value="${formVersion}">,
|
||||
<#list hiddenInputs as hiddenInput>
|
||||
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
|
||||
</#list>
|
||||
</div>
|
||||
<script src="static/form/js/form-util.js"></script>
|
||||
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
@ -41,177 +45,102 @@
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'form', 'laydate', 'laytpl', 'upload', 'restajax', 'datamessage', 'dialog'], function () {
|
||||
}).use(['index', 'form', 'layer', 'laydate', 'laytpl', 'upload', 'restajax'], function () {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var layer = layui.layer;
|
||||
var laydate = layui.laydate;
|
||||
var upload = layui.upload;
|
||||
var dialog = layui.dialog;
|
||||
var restAjax = layui.restajax;
|
||||
var dataMessage = layui.datamessage;
|
||||
var viewerObj = {};
|
||||
|
||||
// 初始化图片方法
|
||||
function initUploadImage(fileName, fileExplain, maxCount) {
|
||||
maxCount = maxCount ? parseInt(maxCount) : 9
|
||||
maxCount = maxCount < 0 ? 9 : maxCount;
|
||||
var id = '#' + fileName;
|
||||
var boxId = '#' + fileName + 'FileBox';
|
||||
var uploadClass = '.' + fileName + '-upload';
|
||||
var removeClass = '.' + fileName + '-remove';
|
||||
|
||||
function initImage(callback) {
|
||||
var fileIds = $(id).val();
|
||||
var fileIdArray = fileIds.split(',');
|
||||
var html = '';
|
||||
for (var i = 0, fileId; fileId = fileIdArray[i++];) {
|
||||
var img = [
|
||||
'<div class="upload-image-box">',
|
||||
' <span class="upload-image-span">',
|
||||
' <img src="route/file/download/false/' + fileId + '" align="加载失败">',
|
||||
' </span>',
|
||||
' <a class="layui-btn layui-btn-xs layui-btn-danger text-danger remove-image ' + fileName + '-remove" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '">',
|
||||
' <i class="fa fa-trash-o"></i>',
|
||||
' </a>',
|
||||
'</div>'
|
||||
].join('\n');
|
||||
html += img;
|
||||
}
|
||||
if (fileIdArray.length < maxCount) {
|
||||
var upload = [
|
||||
'<div class="upload-image-box" style="width: auto; height: auto; padding: 5px;">',
|
||||
' <a href="javascript:void(0);" class="' + fileName + '-upload" data-explain="' + fileExplain + '" data-name="' + fileName + '">',
|
||||
' <i class="fa fa-plus-square-o" style="font-size: 70px;"></i>',
|
||||
' </a>',
|
||||
'</div>'
|
||||
].join('\n');
|
||||
html += upload;
|
||||
}
|
||||
$(boxId).empty();
|
||||
$(boxId).append(html);
|
||||
callback ? callback() : '';
|
||||
};
|
||||
|
||||
// 添加点击时间
|
||||
function addClick() {
|
||||
$(document).on('click', uploadClass, function () {
|
||||
var name = this.dataset.name;
|
||||
var explain = this.dataset.explain;
|
||||
top.dialog.file({
|
||||
type: 'image',
|
||||
title: '【' + explain + '】图片上传',
|
||||
width: '400px',
|
||||
height: '420px',
|
||||
maxFileCount: '1',
|
||||
onClose: function () {
|
||||
var uploadFileArray = top.dialog.dialogData.uploadFileArray;
|
||||
if (typeof (uploadFileArray) != 'undefined' && uploadFileArray.length > 0) {
|
||||
var files = $('#' + name).val();
|
||||
for (var j = 0, file = uploadFileArray[j]; file = uploadFileArray[j++];) {
|
||||
if (files.length > 0) {
|
||||
files += ',';
|
||||
}
|
||||
files += file.data;
|
||||
}
|
||||
$('#'+ name).val(files);
|
||||
initImage(function () {
|
||||
viewerObj[name].update();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
$(document).on('click', removeClass, function () {
|
||||
var name = this.dataset.name;
|
||||
var id = this.dataset.id;
|
||||
var files = $('#' + name).val().replace(id, '');
|
||||
files = files.replace(/\,+/g, ',');
|
||||
if (files.charAt(0) == ',') {
|
||||
files = files.substring(1);
|
||||
}
|
||||
if (files.charAt(files.length - 1) == ',') {
|
||||
files = files.substring(0, files.length - 1);
|
||||
}
|
||||
$('#' + name).val(files);
|
||||
initImage(function () {
|
||||
viewerObj[name].update();
|
||||
});
|
||||
});
|
||||
}
|
||||
var queryParams = restAjax.params(window.location.href);
|
||||
var uid = queryParams.uid;
|
||||
var formUtil = new FormUtil(layui, Viewer);
|
||||
|
||||
// 初始化
|
||||
initImage(function () {
|
||||
viewerObj[fileName] = new Viewer(document.getElementById(fileName + 'FileBox'), {navbar: false});
|
||||
});
|
||||
addClick();
|
||||
}
|
||||
|
||||
// 刷新下载模板',
|
||||
function refreshDownloadTemplet(fileName, file) {
|
||||
var dataRander = {};
|
||||
dataRander[fileName] = file;
|
||||
laytpl(document.getElementById(fileName + 'FileDownload').innerHTML).render(dataRander, function (html) {
|
||||
document.getElementById(fileName + 'FileBox').innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化文件列表',
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
${initSaveFunctions}
|
||||
|
||||
// 初始化内容
|
||||
function initData() {
|
||||
${initSaveScript}
|
||||
var self = this;
|
||||
var loadLayerIndex;
|
||||
top.restAjax.get(restAjax.path('${initUrl}', [
|
||||
<#list initParams as initParam>
|
||||
$('#${initParam}').val(),
|
||||
</#list>
|
||||
uid
|
||||
]), {}, null, function(code, data) {
|
||||
var dataFormData = {};
|
||||
for(var i in data) {
|
||||
dataFormData[i] = data[i] +'';
|
||||
}
|
||||
form.val('dataForm', dataFormData);
|
||||
|
||||
<#list fields as field>
|
||||
<#if field.data.tag == 'checkbox'>
|
||||
formUtil.initCheckboxData('dataForm', dataFormData['${field.data.id}'], '${field.data.id}');
|
||||
<#elseif 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.data.id}',
|
||||
datetype: '${field.data.datetype}',
|
||||
dateformat: '${field.data.dateformat}',
|
||||
dateDefaultValue: '${field.data.dateDefaultValue}',
|
||||
dataMinValue: '${field.data.dataMinValue}',
|
||||
dataMaxValue: '${field.data.dataMaxValue}',
|
||||
});
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
form.render(null, 'dataForm');
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
// 关闭页面',
|
||||
|
||||
// 关闭页面
|
||||
$('.close').on('click', function () {
|
||||
// 这里写返回按钮的逻辑,默认是关闭',
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
// 提交表单',
|
||||
|
||||
// 提交表单
|
||||
form.on('submit(submitForm)', function (formData) {
|
||||
dialog.confirm('确定提交吗?', function (index) {
|
||||
dialog.close(index);
|
||||
layer.confirm('确定提交吗?', function(confirmLayerIndex) {
|
||||
layer.close(confirmLayerIndex);
|
||||
|
||||
// 提交前赋值
|
||||
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}');
|
||||
</#if>
|
||||
</#list>
|
||||
|
||||
var loadLayerIndex;
|
||||
|
||||
${submitSaveScript}
|
||||
|
||||
restAjax.post(restAjax.path('api/form-report/save/code/{formCode}/version/{formVersion}', [$('#formCode').val(), $('#formVersion').val()]), formData.field, null, function (code, data) {
|
||||
restAjax.put(restAjax.path('${commitUrl}', [
|
||||
<#list commitParams as commitParam>
|
||||
$('#${commitParam}').val(),
|
||||
</#list>
|
||||
]), formData.field, null, function (code, data) {
|
||||
// 这里手动添加操作成功后的操作',
|
||||
}, function (code, data) {
|
||||
$('#submitFormBtn').show();
|
||||
dialog.msg(data.msg);
|
||||
layer.msg(data.msg);
|
||||
}, function () {
|
||||
$('#submitFormBtn').hide();
|
||||
loadLayerIndex = dialog.msg(dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||||
loadLayerIndex = layer.msg('提交中...', {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
dialog.close(loadLayerIndex);
|
||||
layer.close(loadLayerIndex);
|
||||
});
|
||||
});
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user