处理表单设计更新逻辑,解决表单上报BUG,新增APP端CSS基础样式

This commit is contained in:
wanggeng 2022-04-24 23:06:06 +08:00
parent 3954a4bb8e
commit 736a5a7b99
25 changed files with 948 additions and 185 deletions

View File

@ -37,6 +37,13 @@ public class FormReportAppController extends DefaultBaseController {
return new SuccessResult();
}
@PostMapping("save-release/code/{formCode}/version/{formVersion}")
public SuccessResult saveRelease(@RequestHeader("userId") String userId, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @RequestBody Map<String, Object> params) {
checkParams(params);
formReportService.saveByUserId(userId, 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("\\_")));
@ -50,17 +57,35 @@ public class FormReportAppController extends DefaultBaseController {
return new SuccessResult();
}
@PutMapping("update-release/code/{formCode}/version/{formVersion}/uid/{uid}")
public SuccessResult updateRelease(@RequestHeader("userId") String userId, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid, @RequestBody Map<String, Object> params) {
checkParams(params);
formReportService.updateByCreatorAndModifier(userId, userId, 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("get-release/code/{formCode}/version/{formVersion}/uid/{uid}")
public Map<String, Object> getRelease(@RequestHeader("userId") String userId, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid) {
return formReportService.getByUserId(userId, 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("list-release/code/{formCode}/version/{formVersion}")
public List<Map<String, Object>> listRelease(@RequestHeader("userId") String userId, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
Map<String, Object> params = requestParams();
return formReportService.listByUserId(userId, 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();
@ -68,6 +93,13 @@ public class FormReportAppController extends DefaultBaseController {
return formReportService.listPage(formCode, formVersion, page);
}
@GetMapping("listpage-release/code/{formCode}/version/{formVersion}")
public SuccessResultList<List<Map<String, Object>>> listPageRelease(@RequestHeader("userId") String userId, @PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, ListPage page) {
Map<String, Object> params = requestParams();
page.setParams(params);
return formReportService.listPageByUserId(userId, 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);

View File

@ -23,6 +23,8 @@ public interface IFormDao extends IInitBaseTable {
void deleteDynamicFormField(String alterFieldSQL) throws RemoveException;
Integer countTable(String tableName) throws SearchException;
void save(Map<String, Object> params) throws SaveException;
void delete(Map<String, Object> params) throws RemoveException;

View File

@ -9,7 +9,6 @@ package ink.wgink.module.form.enums.design;
*/
public enum FormTypeEnum {
DEFAULT("default", "默认"),
FREE_REPORT("freeReport", "自由上报"),
OA("oa", "OA");
private String value;

View File

@ -34,6 +34,13 @@ public interface IFormFieldService {
*/
void delete(List<String> ids);
/**
* 删除
*
* @param formIds 表单ID
*/
void deleteByFormIds(List<String> formIds);
/**
* 修改
*
@ -126,9 +133,10 @@ public interface IFormFieldService {
/**
* 字段名列表
*
* @param formId 表单ID
* @param formId 表单ID
* @param isListShow 列表显示状态
* @return
*/
List<String> listFieldNameByFormIdAndListShow(String formId, Boolean isListShow);
}

View File

@ -18,7 +18,13 @@ public interface IFormService {
*/
void createDynamicForm(String createTableSQL);
void deleteTable(String tableName);
/**
* 删除表
*
* @param tableName
* @param checkExist 判断是否存在
*/
void deleteTable(String tableName, boolean checkExist);
void deleteDynamicForm(String deleteTableSQL);
@ -30,6 +36,8 @@ public interface IFormService {
void deleteDynamicFormField(String alterFieldSQL);
Integer countDynamicTable(String tableName);
/**
* 新增
*
@ -53,6 +61,7 @@ public interface IFormService {
*/
void delete(List<String> ids);
/**
* 删除
*

View File

@ -14,12 +14,14 @@ import ink.wgink.module.form.consts.IFormDesignConst;
import ink.wgink.module.form.enums.design.FormFieldTypeEnum;
import ink.wgink.module.form.enums.design.FormStatusEnum;
import ink.wgink.module.form.enums.design.FormTypeEnum;
import ink.wgink.module.form.pojo.pos.design.FormPO;
import ink.wgink.module.form.pojo.vos.design.FormDesignVO;
import ink.wgink.module.form.pojo.vos.design.FormFieldVO;
import ink.wgink.module.form.pojo.vos.design.FormVO;
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;
import ink.wgink.util.HtmlHelper;
import ink.wgink.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
@ -47,6 +49,9 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
private IFormService formService;
@Autowired
private IFormFieldService formFieldService;
@Autowired
private IFormReportService formReportService;
private Configuration configuration = new Configuration(Configuration.getVersion());
@PostConstruct
@ -64,12 +69,37 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
String formCode = formDesignVO.getFormCode();
Integer version = 1;
String formId = null;
boolean createNewTable = true;
// 时间戳表单编码
if (StringUtils.isBlank(formCode)) {
formCode = DateUtil.getSdfTimes();
} else {
// 判断表中是否有数据有数据就创建新版本
Integer latestVersionByCode = formService.getLatestVersionByCode(formCode);
version = latestVersionByCode + 1;
// 判断表是否存在
FormPO formPO = formService.getPOByCodeAndVersion(formCode, latestVersionByCode);
Integer dynamicCount = formService.countDynamicTable(formPO.getFormTableName());
if (dynamicCount > 0) {
Integer count = formReportService.count(formPO.getFormTableName());
if (count == 0) {
createNewTable = false;
formId = formPO.getFormId();
// 删列
formFieldService.deleteByFormIds(Arrays.asList(formPO.getFormId()));
// 删表
formService.deleteTable(formPO.getFormTableName(), false);
} else {
version = latestVersionByCode + 1;
}
} else {
LOG.debug("动态表不存在");
createNewTable = false;
version = latestVersionByCode;
formId = formPO.getFormId();
// 删列
formFieldService.deleteByFormIds(Arrays.asList(formPO.getFormId()));
}
}
// dfdynamicForm 动态表单
@ -103,13 +133,17 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
formVO.setAppUpdatePageCode(getAppUpdatePageCode(model, formDesignVO.getFormType()));
formVO.setAppShowPageCode(getAppShowPageCode(model, formDesignVO.getFormType()));
String formId = formService.saveReturnId(formVO);
if (createNewTable) {
formId = formService.saveReturnId(formVO);
} else {
formService.update(formId, formVO);
}
LOG.debug("保存表单字段");
formFields.forEach(formFieldVO -> {
for(FormFieldVO formFieldVO: formFields) {
formFieldVO.setFormId(formId);
formFieldService.save(formFieldVO);
});
}
LOG.debug("建表");
String createTableSQL = getCreateTableSQL(tableName, formDesignVO.getFormName(), formFields);
@ -129,11 +163,6 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
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"}));
model.put(ISystemConstant.FORM_TYPE, formType);
} else if(StringUtils.equals(FormTypeEnum.FREE_REPORT.getValue(), formType)) {
model.put(ISystemConstant.FORM_COMMIT_URL, "api/form-report-public/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"}));
model.put(ISystemConstant.FORM_TYPE, formType);
} 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"}));
@ -158,7 +187,7 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
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_URL, "api/form-report/save/code/{formCode}/version/{formVersion}/uid/{uid}");
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
model.put(ISystemConstant.FORM_TYPE, formType);
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
@ -236,7 +265,7 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
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_URL, "app/form-report/update/code/{formCode}/version/{formVersion}/uid/{uid}");
model.put(ISystemConstant.FORM_COMMIT_PARAM_LIST, Arrays.asList(new String[]{"formCode", "formVersion"}));
model.put(ISystemConstant.FORM_TYPE, formType);
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {

View File

@ -47,6 +47,13 @@ public class FormFieldServiceImpl extends DefaultBaseService implements IFormFie
formFieldDao.delete(params);
}
@Override
public void deleteByFormIds(List<String> formIds) {
Map<String, Object> params = getHashMap(2);
params.put("formIds", formIds);
formFieldDao.delete(params);
}
@Override
public void update(String fieldId, FormFieldVO formFieldVO) {
Map<String, Object> params = HashMapUtil.beanToMap(formFieldVO);

View File

@ -9,6 +9,7 @@ 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.IFormFieldService;
import ink.wgink.module.form.service.design.IFormService;
import ink.wgink.module.form.service.report.IFormReportService;
import ink.wgink.pojo.ListPage;
@ -28,6 +29,8 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
private IFormDao formDao;
@Autowired
private IFormReportService formReportService;
@Autowired
private IFormFieldService formFieldService;
@Override
public void createDynamicForm(String createTableSQL) {
@ -35,7 +38,13 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
}
@Override
public void deleteTable(String tableName) {
public void deleteTable(String tableName, boolean checkExist) {
if (checkExist) {
Integer count = formDao.countTable(tableName);
if (count == 0) {
return;
}
}
StringBuffer sqlSB = new StringBuffer("DROP TABLE `").append(tableName).append("`;");
deleteDynamicForm(sqlSB.toString());
}
@ -75,6 +84,11 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
formDao.deleteDynamicFormField(alterFieldSQL);
}
@Override
public Integer countDynamicTable(String tableName) {
return formDao.countTable(tableName);
}
@Override
public void save(FormVO formVO) {
saveReturnId(formVO);
@ -96,8 +110,10 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
@Override
public void delete(List<String> ids) {
// 判断表单是否有数据有数据不能删除
deleteTable(ids);
List<FormDTO> formDTOs = listByIds(ids);
deleteTable(formDTOs);
// 删除列
formFieldService.deleteByFormIds(ids);
Map<String, Object> params = getHashMap(2);
params.put("formIds", ids);
formDao.delete(params);
@ -111,14 +127,18 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
formDao.remove(params);
}
private void deleteTable(List<String> ids) {
List<FormDTO> formDTOs = listByIds(ids);
private void deleteTable(List<FormDTO> formDTOs) {
for (FormDTO formDTO : formDTOs) {
Integer count = formReportService.count(formDTO.getFormTableName());
if (count > 0) {
Integer tableCount = countDynamicTable(formDTO.getFormTableName());
if (tableCount == 0) {
// 表不存在
continue;
}
Integer dataCount = formReportService.count(formDTO.getFormTableName());
if (dataCount > 0) {
throw new RemoveException(formDTO.getFormTableName() + "表中存在数据,不能删除");
}
deleteTable(formDTO.getFormTableName());
deleteTable(formDTO.getFormTableName(), false);
}
}

View File

@ -35,14 +35,22 @@ public interface IFormReportService {
void updateByUserId(String userId, String formCode, Integer formVersion, String uid, Map<String, Object> params);
void updateByCreatorAndModifier(String creator, String modifier, 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);
Map<String, Object> getByUserId(String userId, String formCode, Integer formVersion, String uid);
List<Map<String, Object>> list(String formCode, Integer formVersion, Map<String, Object> params);
List<Map<String, Object>> listByUserId(String userId, String formCode, Integer formVersion, Map<String, Object> params);
SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page);
SuccessResultList<List<Map<String, Object>>> listPageByUserId(String userId, String formCode, Integer formVersion, ListPage page);
SuccessResultList<List<Map<String, Object>>> listPageAllField(String formCode, Integer formVersion, ListPage page);
List<String> listShowField(String formCode, Integer formVersion);

View File

@ -132,6 +132,11 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
@Override
public void updateByUserId(String userId, String formCode, Integer formVersion, String uid, Map<String, Object> params) {
updateByCreatorAndModifier(null, userId, formCode, formVersion, uid, params);
}
@Override
public void updateByCreatorAndModifier(String creator, String modifier, String formCode, Integer formVersion, String uid, Map<String, Object> params) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
checkForm(formPO);
@ -143,13 +148,14 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
kvList.add(Arrays.asList(new String[]{kv.getKey(), "" + kv.getValue()}));
}
kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_GMT_MODIFIED, DateUtil.getTime()}));
kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_MODIFIER, userId}));
kvList.add(Arrays.asList(new String[]{IFormDesignService.FIELD_MODIFIER, modifier}));
Map<String, Object> updateParams = getHashMap((params.size() + 3) * 2);
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);
updateParams.put(IFormDesignService.FIELD_CREATOR, creator);
formReportDao.update(updateParams);
// 更新mainTitle
@ -179,8 +185,23 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
return formReportDao.get(params);
}
@Override
public Map<String, Object> getByUserId(String userId, String formCode, Integer formVersion, String uid) {
Map<String, Object> params = getHashMap(2);
params.put(IFormDesignService.FIELD_UID, uid);
params.put(IFormDesignService.PARAM_FORM_CODE, formCode);
params.put(IFormDesignService.PARAM_FORM_VERSION, formVersion);
params.put(IFormDesignService.FIELD_CREATOR, userId);
return formReportDao.get(params);
}
@Override
public List<Map<String, Object>> list(String formCode, Integer formVersion, Map<String, Object> params) {
return listByUserId(null, formCode, formVersion, params);
}
@Override
public List<Map<String, Object>> listByUserId(String userId, String formCode, Integer formVersion, Map<String, Object> params) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
checkForm(formPO);
@ -190,17 +211,24 @@ public class FormReportServiceImpl extends DefaultBaseService implements IFormRe
queryParams.put(IFormDesignService.PARAM_FORM_VERSION, formVersion);
queryParams.put(IFormDesignService.PARAM_QUERY_LIST, queryList);
queryParams.put(IFormDesignService.PARAM_LIST_SHOW_FIELD, listShowField(formPO));
queryParams.put(IFormDesignService.FIELD_CREATOR, userId);
return formReportDao.list(queryParams);
}
@Override
public SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page) {
return listPageByUserId(null, formCode, formVersion, page);
}
@Override
public SuccessResultList<List<Map<String, Object>>> listPageByUserId(String userId, String formCode, Integer formVersion, ListPage page) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
checkForm(formPO);
List<String> queryList = conditionList(page.getParams());
Map<String, Object> queryParams = getListQueryParams(formPO, queryList);
queryParams.put(IFormDesignService.PARAM_LIST_SHOW_FIELD, listShowField(formPO));
queryParams.put(IFormDesignService.FIELD_CREATOR, userId);
return listPage(page, queryParams);
}

View File

@ -68,7 +68,7 @@
<delete id="delete" parameterType="map" flushCache="true">
DELETE FROM
form_field
WHERE
<where>
<if test="fieldIds != null and fieldIds.size > 0">
field_id IN
<foreach collection="fieldIds" index="index" open="(" separator="," close=")">
@ -76,14 +76,17 @@
</foreach>
</if>
<if test="formId != null and formId != ''">
AND
form_id = #{formId}
</if>
<if test="formIds != null and formIds.size > 0">
AND
form_id IN
<foreach collection="formIds" index="index" open="(" separator="," close=")">
#{formIds[${index}]}
</foreach>
</if>
</where>
</delete>
<!-- 更新字段 -->

View File

@ -76,26 +76,36 @@
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='表单';
</update>
<!-- 建表 -->
<!-- 动态 -->
<update id="createDynamicForm" parameterType="java.lang.String">
${_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>
<!-- 查询表数量 -->
<select id="countTable" parameterType="java.lang.String" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
information_schema.tables
WHERE
table_name = #{_parameter}
</select>
<!-- 新增表单 -->
<insert id="save" parameterType="map" flushCache="true">
INSERT INTO form_form(

View File

@ -39,7 +39,13 @@
${item[0]} = '${item[1]}'
</foreach>
WHERE
is_delete = 0
AND
uid = #{uid}
<if test="creator != null and creator != ''">
AND
creator = #{creator}
</if>
</update>
<update id="updateProcessInstanceId" parameterType="map">
@ -61,6 +67,10 @@
is_delete = 0
AND
uid = #{uid}
<if test="creator != null and creator != ''">
AND
creator = #{creator}
</if>
</select>
<!-- 列表 -->
@ -81,6 +91,10 @@
df_${formCode}_v${formVersion}
WHERE
is_delete = 0
<if test="creator != null and creator != ''">
AND
creator = #{creator}
</if>
<if test="uids != null and uids.size > 0">
AND
uid IN

View File

@ -8,7 +8,7 @@ layui.define(['jquery', 'laydate', 'formUtils'], function(exports) {
'<div id="{0}Box" class="layui-form-item {2}" data-id="{0}" data-tag="{1}" data-index="{3}">',
' <label class="layui-form-label {0}" style="width: {3}px;"><span style="color:red;">{2}</span>{1}:</label>',
' <div class="layui-input-block" style="width:calc({0} - {1}px);margin-left: {1}px;">',
' <input id="{1}{0}" name="{0}" lay-verify="{4}" class="layui-input icon-date widget-date {2}" style="line-height: 40px;{2}"></input>',
' <input id="{0}" name="{0}" lay-verify="{4}" class="layui-input icon-date widget-date {2}" style="line-height: 40px;{2}">',
' </div>',
'</div>'
];

View File

@ -11,10 +11,10 @@ layui.define(['jquery', 'upload', 'dialog', 'restajax', 'formUtils'], function(e
var HTML_ARRAY = [
'<div id="{0}Box" class="layui-form-item {2}" data-id="{0}" data-tag="{1}" data-index="{3}">',
' <label class="layui-form-label">{0}:</label>',
' <button type="button" class="layui-btn" id="{0}UploadBtn">',
' <button type="button" class="layui-btn layui-upload-file-btn" id="{0}UploadBtn">',
' 上传图片',
' </button>',
' <div>',
' <div class="upload-image-box">',
' <input type="hidden" id="{0}" name="{0}">',
' <div class="layui-btn-container" id="{0}FileBox"></div>',
' </div>',

View File

@ -120,11 +120,10 @@ layui.config({
' <div class="layui-input-block">',
' <select id="formType" name="formType" lay-verify="required">',
' <option value="default">默认</option>',
' <option value="freeReport">自由上报</option>',
' <option value="oa">OA表单</option>',
' </select>',
' </div>',
' <div class="layui-form-mid layui-word-aux">提示OA表单数据参与OA流程默认表单中APP的页面校验用户token自由上报APP不校验token但校验refer需要提交时传唯一用户标识“creator”。</div>',
' <div class="layui-form-mid layui-word-aux">提示OA表单数据参与OA流程默认表单中APP的页面校验用户token可对接开放接口不校验token但需要传userId</div>',
' </div>',
' <div class="layui-form-item">',
' <label class="layui-form-label">OA标题模板</label>',

View File

@ -0,0 +1,239 @@
.layui-card-body {
margin-bottom: 60px;
}
.layui-form-item {
margin-bottom: 0px;
padding: 15px 0;
clear: both;
border-top: 1px;
border-left: 0;
border-right: 0;
border-bottom: 0;
border-color: #e6e6e6;
border-style: solid;
text-align: right;
}
.layui-form-item:first-child {
border-top: 0;
}
.layui-input-block {
border: 0 !important;
}
.layui-form-item .layui-form-label {
border: 0;
text-align: left;
padding: 8px 0;
background-color: #FFF;
}
.layui-form-pane .layui-input {
border: 0;
text-align: right;
}
.layui-form-pane .layui-form-text .layui-textarea {
border-width: 0;
padding: 0;
line-height: 0.3rem;
resize: none;
}
.layui-form-item .layui-upload-file-btn {
}
.layui-form-item .upload-image-box {
clear: both;
width: 100%;
padding: 0;
display: block;
}
.layui-form-item:last-child {
margin-bottom: 1rem;
}
.layui-btn {
height: 30px;
line-height: 30px;
padding: 0 8px;
}
.layui-layout-admin .layui-footer {
padding: 0.1rem 0;
}
.form-report-foot {
padding: 0 !important;
}
/* 上传图片 */
.form-upload-image {
position: relative;
display: inline-block;
margin: 0 0.22rem 0.15rem 0;
}
.form-upload-image:nth-child(3n) {
margin: 0 0 0.15rem 0;
}
.form-upload-image:last-child {
margin-right: 0;
}
.form-upload-image img {
width: 2.15rem;
height: 2.15rem;
object-fit: cover;
}
.layui-btn-container {
text-align: left;
}
.form-upload-image .delete-btn {
position: absolute;
top: 0;
right: 0;
margin: 0;
}
/* 上传附件 */
.form-upload-file {
}
.form-upload-file .operation {
text-align: center;
}
.form-upload-file .delete-btn {
margin: 0;
}
/* 上传视频 */
.form-upload-video {
position: relative;
display: inline-block;
margin: 0.1rem 0.1rem 0 0;
}
.form-upload-video:last-child {
margin-right: 0;
}
.form-upload-video .delete-btn {
position: absolute;
top: 0;
right: 0;
margin: 0;
}
/* 上传音频 */
.form-upload-audio {
position: relative;
display: inline-block;
margin: 0.1rem 0.1rem 0 0;
}
.form-upload-audio:last-child {
margin-right: 0;
}
.form-upload-audio .delete-btn {
position: absolute;
top: 0;
right: 0;
margin: 0;
}
/* 用户选择 */
.select-user {
height: 100%;
position: relative;
overflow: hidden;
}
.select-user .list {
width: 316px;
overflow-y: auto;
overflow-x: hidden;
max-height: 356px;
}
.select-user .list .item {
display: flex;
flex-direction: row;
align-items: center;
margin: 0 5px;
padding: 5px;
border-top: 1px solid;
border-left: 1px solid;
border-right: 1px solid;
}
.select-user .list .item {
display: flex;
flex-direction: row;
align-items: center;
margin: 0 5px;
padding: 5px;
border-top: 1px dotted;
border-left: 1px dotted;
border-right: 1px dotted;
border-color: silver;
cursor: pointer;
}
.select-user .active {
background-color: #f1f1f1;
}
.select-user .list .item:hover {
background-color: #f1f1f1;
}
.select-user .list .item:last-child {
margin-bottom: 40px;
border-bottom: 1px dotted silver;
}
.select-user .list .item .avatar {
width: 40px;
height: 40px;
}
.select-user .list .item .avatar img {
width: 40px;
height: 40px;
}
.select-user .list .item .info {
display: flex;
flex-direction: column;
margin-left: 10px;
}
.select-user .list .item .info .text {
width: 200px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.select-user .list .item .checkbox {
display: none;
margin-left: 5px;
font-size: 25px;
}
.select-user .list .active .checkbox {
display: block;
}
.select-user .foot {
position: absolute;
bottom: 0;
padding: 5px 0;
width: 100%;
text-align: center;
background-color: #FFF;
}

View File

@ -10,12 +10,18 @@ function FormUtil(layui, viewer) {
/**
* 初始化图片上传
* @param fieldName
* @param maxCount
* @param opt
*/
this.initUploadImage = function (fieldName, maxCount) {
maxCount = maxCount ? parseInt(maxCount) : 9
maxCount = maxCount < 0 ? 9 : maxCount;
function initUploadImage(opt) {
var maxCount = opt.maxCount ? parseInt(opt.maxCount) : 9
maxCount = opt.maxCount < 0 ? 9 : opt.maxCount;
var fieldName = opt.fieldName;
var headers = opt.headers;
headers = headers ? headers : {};
var isApp = opt.isApp;
var isAppRelease = opt.isAppRelease;
var isShow = opt.isShow;
var id = '#' + fieldName;
var fileBoxId = id + 'FileBox';
var uploadBtnId = id + 'UploadBtn';
@ -52,15 +58,28 @@ function FormUtil(layui, viewer) {
}
function addClick() {
var layerLoadingIndex;
var url = 'api/file/v2/upload-image';
if (isApp) {
url = 'app/file/v2/upload-image'
}
if (isAppRelease) {
url = 'app/file/v2/upload-image-release'
}
upload.render({
elem: uploadBtnId,
url: 'api/file/v2/upload-image',
url: url,
accept: 'images',
acceptMime: 'image/*',
field: 'image',
exts: 'jpg|png|gif|bmp|jpeg',
name: fieldName,
headers: headers,
before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
},
done: function (res, index, upload) {
layer.close(layerLoadingIndex);
var name = this.name;
var files = $('#' + this.name).val();
if (files.length > 0) {
@ -73,6 +92,7 @@ function FormUtil(layui, viewer) {
});
},
error: function (index, upload) {
layer.close(layerLoadingIndex);
layer.msg('文件上传失败');
},
progress: function (n, elem, res, index) {
@ -105,17 +125,92 @@ function FormUtil(layui, viewer) {
init(function () {
viewerObj[fieldName] = new Viewer(document.getElementById(fieldName + 'FileBox'), {navbar: false});
});
addClick();
if (!isShow) {
addClick();
} else {
$(uploadBtnId).hide();
}
}
/**
* 初始化图片上传
* @param fieldName
* @param maxCount
*/
this.initUploadImage = function (fieldName, maxCount) {
initUploadImage({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: false
});
}
/**
* 初始化APP图片上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppUploadImage = function (fieldName, maxCount, headers) {
initUploadImage({
fieldName: fieldName,
maxCount: maxCount,
isApp: true,
isAppRelease: false,
isShow: false,
headers: headers
});
}
/**
* 初始化APP放行图片上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppReleaseUploadImage = function (fieldName, maxCount, headers) {
initUploadImage({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: true,
isShow: false,
headers: headers
});
}
/**
* 显示上传图片
* @param fieldName
* @param maxCount
*/
this.initShowUploadImage = function (fieldName, maxCount) {
initUploadImage({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: true
});
}
/**
* 初始化文件上传
* @param fieldName
* @param maxCount
* @param opt
*/
this.initUploadFile = function (fieldName, maxCount) {
maxCount = maxCount ? parseInt(maxCount) : 3
maxCount = maxCount < 0 ? 3 : maxCount;
function initUploadFile(opt) {
var maxCount = opt.maxCount ? parseInt(opt.maxCount) : 3
maxCount = opt.maxCount < 0 ? 3 : opt.maxCount;
var fieldName = opt.fieldName;
var headers = opt.headers;
headers = headers ? headers : {};
var isApp = opt.isApp;
var isAppRelease = opt.isAppRelease;
var isShow = opt.isShow;
var id = '#' + fieldName;
var fileBoxId = id + 'FileBox';
var uploadBtnId = id + 'UploadBtn';
@ -175,9 +270,17 @@ function FormUtil(layui, viewer) {
}
function addClick() {
var layerLoadingIndex;
var url = 'api/file/v2/upload-file';
if (isApp) {
url = 'app/file/v2/upload-file'
}
if (isAppRelease) {
url = 'app/file/v2/upload-file-release'
}
upload.render({
elem: uploadBtnId,
url: 'api/file/v2/upload-file',
url: url,
accept: 'file',
acceptMime: [
'application/pdf',
@ -195,7 +298,12 @@ function FormUtil(layui, viewer) {
field: 'file',
exts: 'pdf|doc|docx|xls|xlsx|ppt|pptx|wps|txt|rar|zip',
name: fieldName,
headers: headers,
before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
},
done: function (res, index, upload) {
layer.close(layerLoadingIndex);
var name = this.name;
var files = $('#' + this.name).val();
if (files.length > 0) {
@ -206,6 +314,7 @@ function FormUtil(layui, viewer) {
init();
},
error: function (index, upload) {
layer.close(layerLoadingIndex);
layer.msg('文件上传失败');
},
progress: function (n, elem, res, index) {
@ -235,21 +344,96 @@ function FormUtil(layui, viewer) {
}
init();
addClick();
if (!isShow) {
addClick();
} else {
$(uploadBtnId).hide();
}
}
/**
* 初始化文件上传
* @param fieldName
* @param maxCount
*/
this.initUploadFile = function (fieldName, maxCount) {
initUploadFile({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: false
})
}
/**
* 初始化APP文件上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppUploadFile = function (fieldName, maxCount, headers) {
initUploadFile({
fieldName: fieldName,
maxCount: maxCount,
isApp: true,
isAppRelease: false,
isShow: false,
headers: headers
});
}
/**
* 初始化APP放行文件上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppReleaseUploadFile = function (fieldName, maxCount, headers) {
initUploadFile({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: true,
isShow: false,
headers: headers
});
}
/**
* 显示上传文件
* @param fieldName
* @param maxCount
*/
this.initShowUploadFile = function (fieldName, maxCount) {
initUploadFile({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: true
});
}
/**
* 初始化视频上传
* @param fileName
* @param maxCount
* @param opt
*/
this.initUploadVideo = function (fileName, maxCount) {
maxCount = maxCount ? parseInt(maxCount) : 1
maxCount = maxCount < 0 ? 1 : maxCount;
var id = '#' + fileName;
function initUploadVideo(opt) {
var maxCount = opt.maxCount ? parseInt(opt.maxCount) : 1
maxCount = opt.maxCount < 0 ? 1 : opt.maxCount;
var fieldName = opt.fieldName;
var headers = opt.headers;
headers = headers ? headers : {};
var isApp = opt.isApp;
var isAppRelease = opt.isAppRelease;
var isShow = opt.isShow;
var id = '#' + fieldName;
var fileBoxId = id + 'FileBox';
var uploadBtnId = id + 'UploadBtn';
var deleteBtnClass = '.delete-' + fileName + '-btn';
var deleteBtnClass = '.delete-' + fieldName + '-btn';
function init() {
var fileIds = $(id).val();
@ -262,7 +446,7 @@ function FormUtil(layui, viewer) {
' <source src="route/file/download/true/' + fileId + '" type="video/mp4">',
' 您的浏览器不支持 video 标签',
' </video>',
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fileName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '">',
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fieldName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fieldName + '">',
' <i class="fa fa-trash-o"></i>',
' </a>',
'</div>',
@ -282,15 +466,28 @@ function FormUtil(layui, viewer) {
}
function addClick() {
var layerLoadingIndex;
var url = 'api/file/v2/upload-video';
if (isApp) {
url = 'app/file/v2/upload-video'
}
if (isAppRelease) {
url = 'app/file/v2/upload-video-release'
}
upload.render({
elem: uploadBtnId,
url: 'api/file/v2/upload-video',
url: url,
accept: 'video',
acceptMime: 'video/mp4',
exts: 'mp4',
field: 'video',
name: fileName,
name: fieldName,
headers: headers,
before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
},
done: function (res, index, upload) {
layer.close(layerLoadingIndex);
var name = this.name;
var files = $('#' + this.name).val();
if (files.length > 0) {
@ -301,6 +498,7 @@ function FormUtil(layui, viewer) {
init();
},
error: function (index, upload) {
layer.close(layerLoadingIndex);
layer.msg('文件上传失败');
},
progress: function (n, elem, res, index) {
@ -329,21 +527,92 @@ function FormUtil(layui, viewer) {
}
init();
addClick();
if (!isShow) {
addClick();
} else {
$(uploadBtnId).hide();
}
}
/**
* 初始化音频上传
* @param fileName
* 初始化频上传
* @param fieldName
* @param maxCount
*/
this.initUploadAudio = function (fileName, maxCount) {
maxCount = maxCount ? parseInt(maxCount) : 1
maxCount = maxCount < 0 ? 1 : maxCount;
var id = '#' + fileName;
this.initUploadVideo = function (fieldName, maxCount) {
initUploadVideo({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: false
})
}
/**
* 初始化APP视频上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppUploadVideo = function (fieldName, maxCount, headers) {
initUploadVideo({
fieldName: fieldName,
maxCount: maxCount,
isApp: true,
isAppRelease: false,
isShow: false,
headers: headers
});
}
/**
* 初始化APP放行视频上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppReleaseUploadVideo = function (fieldName, maxCount, headers) {
initUploadVideo({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: true,
isShow: false,
headers: headers
});
}
/**
* 显示上传视频
* @param fieldName
* @param maxCount
*/
this.initShowUploadVideo = function (fieldName, maxCount) {
initUploadVideo({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: true
});
}
function initUploadAudio(opt) {
var maxCount = opt.maxCount ? parseInt(opt.maxCount) : 1
maxCount = opt.maxCount < 0 ? 1 : opt.maxCount;
var fieldName = opt.fieldName;
var headers = opt.headers;
headers = headers ? headers : {};
var isApp = opt.isApp;
var isAppRelease = opt.isAppRelease;
var isShow = opt.isShow;
var id = '#' + fieldName;
var fileBoxId = id + 'FileBox';
var uploadBtnId = id + 'UploadBtn';
var deleteBtnClass = '.delete-' + fileName + '-btn';
var deleteBtnClass = '.delete-' + fieldName + '-btn';
function init() {
var fileIds = $(id).val();
@ -355,7 +624,7 @@ function FormUtil(layui, viewer) {
' <audio src="route/file/download/true/' + fileId + '" controls>',
' 您的浏览器不支持 audio 标签。',
' </audio>',
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fileName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fileName + '">',
' <a class="layui-btn layui-btn-xs layui-btn-danger delete-btn delete-' + fieldName + '-btn" href="javascript:void(0);" data-id="' + fileId + '" data-name="' + fieldName + '">',
' <i class="fa fa-trash-o"></i>',
' </a>',
'</div>',
@ -375,9 +644,17 @@ function FormUtil(layui, viewer) {
}
function addClick() {
var layerLoadingIndex;
var url = 'api/file/v2/upload-audio';
if (isApp) {
url = 'app/file/v2/upload-audio'
}
if (isAppRelease) {
url = 'app/file/v2/upload-audio-release'
}
upload.render({
elem: uploadBtnId,
url: 'api/file/v2/upload-audio',
url: url,
accept: 'audio',
acceptMime: [
'audio/wav',
@ -385,8 +662,13 @@ function FormUtil(layui, viewer) {
],
exts: 'wav|mp3',
field: 'audio',
name: fileName,
name: fieldName,
headers: headers,
before: function (obj) {
layerLoadingIndex = layer.msg('上传中...', {icon: 16, time: 0, shade: 0.3})
},
done: function (res, index, upload) {
layer.close(layerLoadingIndex);
var name = this.name;
var files = $('#' + this.name).val();
if (files.length > 0) {
@ -397,6 +679,7 @@ function FormUtil(layui, viewer) {
init();
},
error: function (index, upload) {
layer.close(layerLoadingIndex);
layer.msg('文件上传失败');
},
progress: function (n, elem, res, index) {
@ -425,7 +708,76 @@ function FormUtil(layui, viewer) {
}
init();
addClick();
if (!isShow) {
addClick();
} else {
$(uploadBtnId).hide();
}
}
/**
* 初始化音频上传
* @param fieldName
* @param maxCount
*/
this.initUploadAudio = function (fieldName, maxCount) {
initUploadAudio({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: false
})
}
/**
* 初始化APP音频上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppUploadAudio = function (fieldName, maxCount, headers) {
initUploadAudio({
fieldName: fieldName,
maxCount: maxCount,
isApp: true,
isAppRelease: false,
isShow: false,
headers: headers
});
}
/**
* 初始化APP放行音频上传
* @param fieldName
* @param maxCount
* @param headers
*/
this.initAppReleaseUploadAudio = function (fieldName, maxCount, headers) {
initUploadAudio({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: true,
isShow: false,
headers: headers
});
}
/**
* 显示上传音频
* @param fieldName
* @param maxCount
*/
this.initShowUploadAudio = function (fieldName, maxCount) {
initUploadAudio({
fieldName: fieldName,
maxCount: maxCount,
isApp: false,
isAppRelease: false,
isShow: true
});
}
/**
@ -630,6 +982,7 @@ function FormUtil(layui, viewer) {
var boxId = '#' + item.fieldName + 'Box';
$(boxId).css('position', 'relative');
$(boxId).append('<div style="width: 100%; height: 100%; background-color: #fff0; position: absolute; top: 0; left: 0; cursor: not-allowed;"></div>');
$(boxId).filter('input, button, textarea').attr('disabled', 'disabled');
}
}
}

View File

@ -0,0 +1,12 @@
function setPage() {
var html = document.getElementsByTagName('html')[0];
var deviceWidth = document.documentElement.clientWidth;
var scale = deviceWidth / 750;//psd图上的宽度
html.style.fontSize = scale * 100 + 'px';
}
setPage();
window.onresize = function () {
setPage();
}

View File

@ -12,7 +12,8 @@
<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">
<link rel="stylesheet" type="text/css" href="static/form/css/form-app.css?v=1">
<script src="static/form/js/rem.js"></script>
</head>
<body>
<div class="layui-anim layui-anim-fadein">
@ -22,20 +23,18 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
</div>
</form>
</div>
@ -44,7 +43,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
@ -82,13 +81,13 @@
function initData() {
<#list fields as field>
<#if field.data.tag == 'uploadImage'>
formUtil.initUploadImage('${field.data.id}', ${field.data.count});
formUtil.initAppUploadImage('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadFile'>
formUtil.initUploadFile('${field.data.id}', ${field.data.count});
formUtil.initAppUploadFile('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadVideo'>
formUtil.initUploadVideo('${field.data.id}', ${field.data.count});
formUtil.initAppUploadVideo('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadAudio'>
formUtil.initUploadAudio('${field.data.id}', ${field.data.count});
formUtil.initAppUploadAudio('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'date'>
formUtil.initDate({
id: '${field.data.id}',

View File

@ -12,7 +12,8 @@
<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">
<link rel="stylesheet" type="text/css" href="static/form/css/form-app.css?v=1">
<script src="static/form/js/rem.js"></script>
</head>
<body>
<div class="layui-anim layui-anim-fadein">
@ -22,18 +23,16 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
</div>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
</div>
</#if>
</div>
</form>
</div>
@ -42,7 +41,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
@ -65,7 +64,7 @@
function initData() {
var self = this;
var loadLayerIndex;
top.restAjax.get(restAjax.path('${initUrl}', [
restAjax.get(restAjax.path('${initUrl}', [
<#list initParams as initParam>
$('#${initParam}').val(),
</#list>
@ -85,13 +84,13 @@
<#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});
formUtil.initShowUploadImage('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadFile'>
formUtil.initUploadFile('${field.data.id}', ${field.data.count});
formUtil.initShowUploadFile('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadVideo'>
formUtil.initUploadVideo('${field.data.id}', ${field.data.count});
formUtil.initShowUploadVideo('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadAudio'>
formUtil.initUploadAudio('${field.data.id}', ${field.data.count});
formUtil.initShowUploadAudio('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'date'>
formUtil.initDate({
id: '${field.data.id}',
@ -106,11 +105,11 @@
form.render(null, 'dataForm');
}, function(code, data) {
top.dialog.msg(data.msg);
layer.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
loadLayerIndex = layer.msg('加载中...', {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
layer.close(loadLayerIndex);
});
}
initData();

View File

@ -12,7 +12,8 @@
<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">
<link rel="stylesheet" type="text/css" href="static/form/css/form-app.css?v=1">
<script src="static/form/js/rem.js"></script>
</head>
<body>
<div class="layui-anim layui-anim-fadein">
@ -22,20 +23,18 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
</div>
</form>
</div>
@ -44,7 +43,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
@ -83,7 +82,7 @@
function initData() {
var self = this;
var loadLayerIndex;
top.restAjax.get(restAjax.path('${initUrl}', [
restAjax.get(restAjax.path('${initUrl}', [
<#list initParams as initParam>
$('#${initParam}').val(),
</#list>
@ -103,13 +102,13 @@
<#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});
formUtil.initAppUploadImage('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadFile'>
formUtil.initUploadFile('${field.data.id}', ${field.data.count});
formUtil.initAppUploadFile('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadVideo'>
formUtil.initUploadVideo('${field.data.id}', ${field.data.count});
formUtil.initAppUploadVideo('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'uploadAudio'>
formUtil.initUploadAudio('${field.data.id}', ${field.data.count});
formUtil.initAppUploadAudio('${field.data.id}', ${field.data.count}, {token: token});
<#elseif field.data.tag == 'date'>
formUtil.initDate({
id: '${field.data.id}',
@ -129,11 +128,11 @@
formUtil.disableFields(fields);
</#if>
}, function(code, data) {
top.dialog.msg(data.msg);
layer.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
loadLayerIndex = layer.msg('加载中...', {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
layer.close(loadLayerIndex);
});
}
initData();
@ -241,7 +240,7 @@
restAjax.put(restAjax.path('${commitUrl}', [
<#list commitParams as commitParam>
$('#${commitParam}').val(),
</#list>,
</#list>
uid
]), formData.field, {
headers: {

View File

@ -22,20 +22,18 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
</div>
</form>
</div>
@ -44,7 +42,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>

View File

@ -22,18 +22,16 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
</div>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn layui-btn-primary close">返回</button>
</div>
</#if>
</div>
</form>
</div>
@ -42,7 +40,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
@ -64,7 +62,7 @@
function initData() {
var self = this;
var loadLayerIndex;
top.restAjax.get(restAjax.path('${initUrl}', [
restAjax.get(restAjax.path('${initUrl}', [
<#list initParams as initParam>
$('#${initParam}').val(),
</#list>
@ -80,13 +78,13 @@
<#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});
formUtil.initShowUploadImage('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadFile'>
formUtil.initUploadFile('${field.data.id}', ${field.data.count});
formUtil.initShowUploadFile('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadVideo'>
formUtil.initUploadVideo('${field.data.id}', ${field.data.count});
formUtil.initShowUploadVideo('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'uploadAudio'>
formUtil.initUploadAudio('${field.data.id}', ${field.data.count});
formUtil.initShowUploadAudio('${field.data.id}', ${field.data.count});
<#elseif field.data.tag == 'date'>
formUtil.initDate({
id: '${field.data.id}',
@ -101,11 +99,11 @@
form.render(null, 'dataForm');
}, function(code, data) {
top.dialog.msg(data.msg);
layer.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
loadLayerIndex = layer.msg('加载中...', {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
layer.close(loadLayerIndex);
});
}
initData();

View File

@ -22,20 +22,18 @@
<#list fields as field>
${field.html}
</#list>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
<div class="layui-layout-admin">
<#if formType == "oa">
<div class="layui-footer form-report-foot">
<div id="submitBtnGroup" class="layui-btn-group"></div>
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary close">返回</button>
</div>
<#else>
<div class="layui-footer" style="left: 0;">
<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>
</#if>
</div>
</form>
</div>
@ -44,7 +42,7 @@
<input type="hidden" id="${hiddenInput}" value="${r'${'}${hiddenInput}${r'}'}">
</#list>
</div>
<script src="static/form/js/form-util.js"></script>
<script src="static/form/js/form-util.js?v=1"></script>
<script src="assets/js/vendor/viewer/viewer.min.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
@ -82,7 +80,7 @@
function initData() {
var self = this;
var loadLayerIndex;
top.restAjax.get(restAjax.path('${initUrl}', [
restAjax.get(restAjax.path('${initUrl}', [
<#list initParams as initParam>
$('#${initParam}').val(),
</#list>
@ -124,11 +122,11 @@
formUtil.disableFields(fields);
</#if>
}, function(code, data) {
top.dialog.msg(data.msg);
layer.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
loadLayerIndex = layer.msg('加载中...', {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
layer.close(loadLayerIndex);
});
}
initData();