From fb223a433f520b9744d22d8b7398a81d0594e1ac Mon Sep 17 00:00:00 2001 From: ulleo Date: Fri, 28 Jun 2024 18:53:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20[=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5]=E8=A1=A8=E5=8D=95=E6=8F=90=E4=BA=A4=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E5=A2=9E=E5=8A=A0=EF=BC=9A=E8=A1=A8=E5=8D=95=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datafill/DataFillController.java | 4 +- .../DataFillFormTableDataRequest.java | 6 +- .../dataease/ext/ExtDataFillFormMapper.java | 2 +- .../io/dataease/ext/ExtDataFillFormMapper.xml | 3 +- .../provider/ext/MysqlExtDDLProvider.java | 5 +- .../service/datafill/DataFillDataService.java | 165 +++++- .../service/datafill/DataFillService.java | 128 ++++- .../service/datafill/DataFillTaskService.java | 2 +- .../resources/db/migration/V68__1.18.23.sql | 5 + core/frontend/src/lang/en.js | 8 + core/frontend/src/lang/tw.js | 8 + core/frontend/src/lang/zh.js | 8 + .../views/dataFilling/form/EditFormData.vue | 471 ++++++++++-------- .../src/views/dataFilling/form/create.vue | 191 ++++++- .../src/views/dataFilling/form/save.vue | 2 + .../src/views/dataFilling/myTask/index.vue | 40 +- .../common/base/domain/DataFillForm.java | 2 + .../base/domain/DataFillFormExample.java | 60 +++ .../common/base/mapper/DataFillFormMapper.xml | 29 +- .../common/dto/datafill/ExtTableField.java | 2 + .../common/dto/datasource/TableField.java | 2 + .../src/main/resources/generatorConfig.xml | 4 +- 22 files changed, 871 insertions(+), 276 deletions(-) create mode 100644 core/backend/src/main/resources/db/migration/V68__1.18.23.sql diff --git a/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java b/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java index 55716013f5..d5654631a5 100644 --- a/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java +++ b/core/backend/src/main/java/io/dataease/controller/datafill/DataFillController.java @@ -79,7 +79,7 @@ public class DataFillController { @ApiIgnore @PostMapping("/form/delete/{id}") - public void saveForm(@PathVariable String id) throws Exception { + public void deleteForm(@PathVariable String id) throws Exception { dataFillService.deleteForm(id); } @@ -184,7 +184,7 @@ public class DataFillController { @ApiIgnore @PostMapping("/myTask/fill/{taskId}") - public void userFillData(@PathVariable String taskId, @RequestBody Map data) throws Exception { + public void userFillData(@PathVariable String taskId, @RequestBody List> data) throws Exception { dataFillService.fillFormData(taskId, data); } diff --git a/core/backend/src/main/java/io/dataease/controller/request/datafill/DataFillFormTableDataRequest.java b/core/backend/src/main/java/io/dataease/controller/request/datafill/DataFillFormTableDataRequest.java index ac4cf2a85e..ca5c8a8918 100644 --- a/core/backend/src/main/java/io/dataease/controller/request/datafill/DataFillFormTableDataRequest.java +++ b/core/backend/src/main/java/io/dataease/controller/request/datafill/DataFillFormTableDataRequest.java @@ -3,9 +3,11 @@ package io.dataease.controller.request.datafill; import lombok.Data; import lombok.experimental.Accessors; +import java.util.List; + @Data -@Accessors(chain=true) +@Accessors(chain = true) public class DataFillFormTableDataRequest extends DataFillFormRequest { private static final long serialVersionUID = -314618516232771747L; @@ -16,4 +18,6 @@ public class DataFillFormTableDataRequest extends DataFillFormRequest { private String primaryKeyValue; + private List primaryKeyValueList; + } diff --git a/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.java b/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.java index 92595fc0e7..91f8b343a4 100644 --- a/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.java +++ b/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.java @@ -25,6 +25,6 @@ public interface ExtDataFillFormMapper { List selectActiveDataFillTasks(); List listTodoUserTask(long userId, Date current, String taskName); - List listFinishedUserTask(long userId, String taskName); + List listFinishedUserTask(long userId, Date current, String taskName); List listExpiredUserTask(long userId, Date current, String taskName); } diff --git a/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.xml b/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.xml index ac2bc52f39..6a75b365e9 100644 --- a/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.xml +++ b/core/backend/src/main/java/io/dataease/ext/ExtDataFillFormMapper.xml @@ -231,7 +231,8 @@ FROM data_fill_user_task WHERE user = #{userId} - AND finish_time IS NOT NULL) t1 + AND finish_time IS NOT NULL + AND (end_time IS NULL OR end_time >= #{current})) t1 LEFT JOIN (SELECT id, `name` FROM data_fill_form) t2 ON t1.form_id = t2.id LEFT JOIN (SELECT id, `name`, `creator` FROM data_fill_task) t3 ON t1.task_id = t3.id LEFT JOIN (SELECT user_id, nick_name FROM sys_user) t4 ON t3.creator = t4.user_id diff --git a/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java b/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java index 1867c9d091..4f2f193ed3 100644 --- a/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java +++ b/core/backend/src/main/java/io/dataease/provider/ext/MysqlExtDDLProvider.java @@ -76,7 +76,10 @@ public class MysqlExtDDLProvider extends DefaultExtDDLProvider { @Override public String searchSql(String table, List formFields, String whereSql, long limit, long offset) { - String baseSql = "SELECT $Column_Fields$ FROM `$TABLE_NAME$` $WHERE_SQL$ LIMIT $OFFSET_COUNT$, $LIMIT_COUNT$ ;"; + String baseSql = "SELECT $Column_Fields$ FROM `$TABLE_NAME$` $WHERE_SQL$ ;"; + if (limit > 0) { + baseSql = "SELECT $Column_Fields$ FROM `$TABLE_NAME$` $WHERE_SQL$ LIMIT $OFFSET_COUNT$, $LIMIT_COUNT$ ;"; + } baseSql = baseSql.replace("$TABLE_NAME$", table) .replace("$OFFSET_COUNT$", Long.toString(offset)) .replace("$LIMIT_COUNT$", Long.toString(limit)); diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java index c01139e487..f02846adb5 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillDataService.java @@ -6,8 +6,8 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.read.metadata.ReadSheet; -import com.google.common.reflect.TypeToken; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import io.dataease.auth.service.AuthUserService; import io.dataease.commons.utils.CommonBeanFactory; import io.dataease.controller.request.datafill.DataFillFormTableDataRequest; @@ -32,6 +32,7 @@ import io.dataease.service.datasource.DatasourceService; import io.dataease.service.sys.SysAuthService; import lombok.Data; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.pentaho.di.core.util.UUIDUtil; @@ -145,6 +146,10 @@ public class DataFillDataService { } public DataFillFormTableDataResponse listData(DataFillFormTableDataRequest searchRequest) throws Exception { + return listData(searchRequest, true); + } + + public DataFillFormTableDataResponse listData(DataFillFormTableDataRequest searchRequest, boolean withLogs) throws Exception { DataFillFormWithBLOBs dataFillForm = dataFillFormMapper.selectByPrimaryKey(searchRequest.getId()); @@ -220,12 +225,12 @@ public class DataFillDataService { String whereSql = ""; - if (StringUtils.isNoneBlank(searchRequest.getPrimaryKeyValue())) { + if (StringUtils.isNotBlank(searchRequest.getPrimaryKeyValue())) { whereSql = extDDLProvider.whereSql(dataFillForm.getTableName(), List.of(pk)); } String countSql = extDDLProvider.countSql(dataFillForm.getTableName(), searchFields, whereSql); - if (StringUtils.isNoneBlank(searchRequest.getPrimaryKeyValue())) { + if (StringUtils.isNotBlank(searchRequest.getPrimaryKeyValue())) { datasourceRequest.setTableFieldWithValues(List.of(new DatasourceRequest.TableFieldWithValue() .setValue(searchRequest.getPrimaryKeyValue()) .setFiledName(pk.getFieldName()) @@ -236,7 +241,7 @@ public class DataFillDataService { List countData = datasourceProvider.getData(datasourceRequest); long count = NumberUtils.toLong(countData.get(0)[0]); - long totalPage = new BigDecimal(count).divide(new BigDecimal(searchRequest.getPageSize()), 0, RoundingMode.CEILING).longValue(); + long totalPage = searchRequest.getPageSize() <= 0 ? 1L : new BigDecimal(count).divide(new BigDecimal(searchRequest.getPageSize()), 0, RoundingMode.CEILING).longValue(); long currentPage = totalPage < searchRequest.getCurrentPage() ? totalPage - 1 : searchRequest.getCurrentPage(); @@ -294,23 +299,28 @@ public class DataFillDataService { List list = new ArrayList<>(); - if (CollectionUtils.isNotEmpty(ids)) { + if (CollectionUtils.isNotEmpty(ids) && withLogs) { list = extDataFillFormMapper.selectLatestLogByFormDataIds(dataFillForm.getId(), ids); } - Map logMap = list.stream().collect(Collectors.toMap(log -> log.getFormId() + "__" + log.getDataId(), log -> log)); + Map logMap = new HashMap<>(); + for (DataFillCommitLogDTO log : list) { + logMap.put(log.getFormId() + "__" + log.getDataId(), log); + } - for (Map object : result) { - Map temp = new HashMap<>(); - temp.put("data", object); - temp.put("logInfo", logMap.get(dataFillForm.getId() + "__" + object.get(key))); + if (withLogs) { + for (Map object : result) { + Map temp = new HashMap<>(); + temp.put("data", object); + temp.put("logInfo", logMap.get(dataFillForm.getId() + "__" + object.get(key))); - resultList.add(temp); + resultList.add(temp); + } } return new DataFillFormTableDataResponse() .setKey(key) - .setData(resultList) + .setData(withLogs ? resultList : result) .setFields(fields) .setTotal(count) .setPageSize(searchRequest.getPageSize()) @@ -979,14 +989,143 @@ public class DataFillDataService { dataList.add(new RowDataDatum().setData(rowData)); } + List valueList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(dataList)) { - updateOrInsertRowData(formId, dataList); + //表单提交模式为更新时,需要根据条件加上主键id + boolean updateMode = false; + List fieldsForCheck = new ArrayList<>(); + if (BooleanUtils.isTrue(dataFillForm.getCommitNewUpdate())) { + //这里把所有数据都拿出来遍历真的合适吗? + for (ExtTableField field : fields) { + if (field.getSettings().isUpdateRuleCheck()) { + updateMode = true; + fieldsForCheck.add(field); + } + } + } + + if (!updateMode) { + valueList = new ArrayList<>(dataList); + } else { + DataFillFormTableDataRequest req = new DataFillFormTableDataRequest(); + req.setId(dataFillForm.getId()); + DataFillFormTableDataResponse res = listData(req, false); + List> searchData = new ArrayList<>(); + String key = ""; + + if (res != null && res.getData() != null) { + searchData = (List>) res.getData(); + + Datasource ds = getDataSource(dataFillForm.getDatasource()); + DatasourceRequest datasourceRequest = new DatasourceRequest(); + datasourceRequest.setDatasource(ds); + datasourceRequest.setTable(dataFillForm.getTableName()); + Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); + List tableFields = datasourceProvider.getTableFields(datasourceRequest); + + for (TableField tableField : tableFields) { + if (tableField.isPrimaryKey()) { + //先把ID放进来 + key = tableField.getFieldName(); + } + } + } + + for (RowDataDatum datum : dataList) { + boolean hasUpdate = false; + for (Map searchDatum : searchData) { + if (processValueList(valueList, key, datum, searchDatum, fieldsForCheck)) { + hasUpdate = true; + } + } + if (!hasUpdate) { + RowDataDatum row = new RowDataDatum() + .setInsert(true) + .setData(new HashMap<>(datum.getData())); + valueList.add(row); + } + } + + } + + updateOrInsertRowData(formId, valueList); } } + public static boolean processValueList(List valueList, String key, RowDataDatum datum, Map searchDatum, List fieldsForCheck) { + int count = 0; + for (ExtTableField field : fieldsForCheck) { + if (StringUtils.equalsIgnoreCase(field.getType(), "checkbox") || + StringUtils.equalsIgnoreCase(field.getType(), "select") && field.getSettings().isMultiple()) { + List data1 = gson.fromJson((String) datum.getData().get(field.getSettings().getMapping().getColumnName()), new TypeToken>() { + }.getType()); + List data2 = gson.fromJson((String) searchDatum.get(field.getSettings().getMapping().getColumnName()), new TypeToken>() { + }.getType()); + if (data1 == data2) { + count++; + continue; + } + if (data1 != null && data2 != null) { + if (data1.size() != data2.size()) { + continue; + } + if (CollectionUtils.isEqualCollection(data1, data2)) { + count++; + } + } + } else { + if (datum.getData() != null && searchDatum != null) { + Object data1 = datum.getData().get(field.getSettings().getMapping().getColumnName()); + Object data2 = searchDatum.get(field.getSettings().getMapping().getColumnName()); + if (data1 == data2) { + count++; + continue; + } + if (data1 != null && data2 != null) { + if (data1.equals(data2)) { + count++; + continue; + } + switch (field.getSettings().getMapping().getType()) { + case number: + if (((Long) data1).longValue() == ((Long) data2).longValue()) { + count++; + } + continue; + case decimal: + if (((BigDecimal) data1).compareTo((BigDecimal) data2) == 0) { + count++; + } + continue; + case datetime: + if ((Long) data1 == ((Date) data2).getTime()) { + count++; + } + continue; + default: + if (((String) data1).equals((String) data2)) { + count++; + } + } + + } + } + } + } + if (count == fieldsForCheck.size()) { + RowDataDatum row = new RowDataDatum() + .setId((String) searchDatum.get(key)) + .setInsert(datum.isInsert()) + .setData(new HashMap<>(datum.getData())); + valueList.add(row); + return true; + } + return false; + } + private static Date getDate(ExtTableField field, String excelRowData) throws ParseException { if (StringUtils.isBlank(excelRowData)) { return null; diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java index d184e510a5..6cf604b7cb 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillService.java @@ -1,7 +1,7 @@ package io.dataease.service.datafill; -import com.google.common.reflect.TypeToken; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import io.dataease.auth.annotation.DeCleaner; import io.dataease.auth.service.AuthUserService; import io.dataease.commons.constants.DataFillConstants; @@ -11,6 +11,8 @@ import io.dataease.commons.constants.SysLogConstants; import io.dataease.commons.utils.*; import io.dataease.controller.ResultHolder; import io.dataease.controller.request.datafill.DataFillFormRequest; +import io.dataease.controller.request.datafill.DataFillFormTableDataRequest; +import io.dataease.controller.response.datafill.DataFillFormTableDataResponse; import io.dataease.dto.datafill.DataFillFormDTO; import io.dataease.ext.ExtDataFillFormMapper; import io.dataease.i18n.Translator; @@ -29,6 +31,7 @@ import io.dataease.plugins.datasource.provider.ProviderFactory; import io.dataease.provider.datasource.JdbcProvider; import io.dataease.service.sys.SysAuthService; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.pentaho.di.core.util.UUIDUtil; import org.springframework.core.env.Environment; @@ -452,7 +455,7 @@ public class DataFillService { } - public void fillFormData(String userTaskId, Map data) throws Exception { + public void fillFormData(String userTaskId, List> data) throws Exception { if (!CommonBeanFactory.getBean(AuthUserService.class).pluginLoaded()) { DataEaseException.throwException("invalid"); } @@ -475,35 +478,116 @@ public class DataFillService { String formId = task.getFormId(); - String rowId = null; - if (StringUtils.isNotBlank(task.getValueId())) { - rowId = task.getValueId(); - } else { - DataFillFormWithBLOBs dataFillForm = dataFillFormMapper.selectByPrimaryKey(formId); - Datasource ds = dataFillDataService.getDataSource(dataFillForm.getDatasource()); - Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); - ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType()); + DataFillFormWithBLOBs dataFillForm = dataFillFormMapper.selectByPrimaryKey(formId); - DatasourceRequest datasourceRequest = new DatasourceRequest(); - datasourceRequest.setDatasource(ds); - datasourceRequest.setTable(dataFillForm.getTableName()); + Datasource ds = dataFillDataService.getDataSource(dataFillForm.getDatasource()); + Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); + ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType()); - DataFillDataService.setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest); + DatasourceRequest datasourceRequest = new DatasourceRequest(); + datasourceRequest.setDatasource(ds); + datasourceRequest.setTable(dataFillForm.getTableName()); - List tableFields = datasourceProvider.getTableFields(datasourceRequest); + DataFillDataService.setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest); - for (TableField tableField : tableFields) { - if (tableField.isPrimaryKey()) { - rowId = (String) data.get(tableField.getFieldName()); - break; - } + List tableFields = datasourceProvider.getTableFields(datasourceRequest); + + String pk = ""; + for (TableField tableField : tableFields) { + if (tableField.isPrimaryKey()) { + pk = tableField.getFieldName(); + break; } } - rowId = dataFillDataService.updateOrInsertRowData(formId, Collections.singletonList(new RowDataDatum().setId(rowId).setData(data))).get(0); + List updateDatumList = new ArrayList<>(); + List insertDatumList = new ArrayList<>(); - task.setValueId(rowId); + List valueList = new ArrayList<>(); + + for (Map datum : data) { + String pkv = (String) datum.get(pk); + if (pkv == null) { + insertDatumList.add(new RowDataDatum().setData(datum)); + } else { + updateDatumList.add(new RowDataDatum().setId(pkv).setData(datum)); + } + } + + //针对没有id的数据,即第一次提交的新数据,需要根据表单提交模式进行判断 + if (CollectionUtils.isNotEmpty(insertDatumList)) { + //表单提交模式为更新时,需要根据条件加上主键id + List formFields = gson.fromJson(dataFillForm.getForms(), new TypeToken>() { + }.getType()); + + List fields = new ArrayList<>(); + for (ExtTableField field : formFields) { + if (field.isRemoved()) { + continue; + } + if (StringUtils.equalsIgnoreCase(field.getType(), "dateRange")) { + ExtTableField start = gson.fromJson(gson.toJson(field), ExtTableField.class); + start.getSettings().getMapping().setColumnName(start.getSettings().getMapping().getColumnName1()); + start.getSettings().setName(start.getSettings().getName() + "(开始)"); + fields.add(start); + + ExtTableField end = gson.fromJson(gson.toJson(field), ExtTableField.class); + end.getSettings().setName(end.getSettings().getName() + "(结束)"); + end.getSettings().getMapping().setColumnName(end.getSettings().getMapping().getColumnName2()); + fields.add(end); + } else { + fields.add(field); + } + } + + boolean updateMode = false; + List fieldsForCheck = new ArrayList<>(); + if (BooleanUtils.isTrue(dataFillForm.getCommitNewUpdate())) { + //这里把所有数据都拿出来遍历真的合适吗? + for (ExtTableField field : fields) { + if (field.getSettings().isUpdateRuleCheck()) { + updateMode = true; + fieldsForCheck.add(field); + } + } + } + + if (!updateMode) { + valueList = new ArrayList<>(insertDatumList); + } else { + DataFillFormTableDataRequest req = new DataFillFormTableDataRequest(); + req.setId(dataFillForm.getId()); + DataFillFormTableDataResponse res = dataFillDataService.listData(req, false); + List> searchData = new ArrayList<>(); + if (res != null && res.getData() != null) { + searchData = (List>) res.getData(); + } + + for (RowDataDatum datum : insertDatumList) { + boolean hasUpdate = false; + for (Map searchDatum : searchData) { + if (DataFillDataService.processValueList(valueList, pk, datum, searchDatum, fieldsForCheck)) { + hasUpdate = true; + } + } + if (!hasUpdate) { + RowDataDatum row = new RowDataDatum() + .setInsert(true) + .setData(new HashMap<>(datum.getData())); + valueList.add(row); + } + } + + } + + } + + valueList.addAll(updateDatumList); + + List rowIds = dataFillDataService.updateOrInsertRowData(formId, valueList); + + task.setValueId(String.join(",", rowIds)); task.setFinishTime(new Date()); dataFillUserTaskMapper.updateByPrimaryKeySelective(task); diff --git a/core/backend/src/main/java/io/dataease/service/datafill/DataFillTaskService.java b/core/backend/src/main/java/io/dataease/service/datafill/DataFillTaskService.java index a6ef77d330..be02626741 100644 --- a/core/backend/src/main/java/io/dataease/service/datafill/DataFillTaskService.java +++ b/core/backend/src/main/java/io/dataease/service/datafill/DataFillTaskService.java @@ -269,7 +269,7 @@ public class DataFillTaskService { String taskName = StringUtils.isNotBlank(request.getTaskName()) ? request.getTaskName() : null; if (StringUtils.equalsIgnoreCase(type, "finished")) { - list = extDataFillFormMapper.listFinishedUserTask(userId, taskName); + list = extDataFillFormMapper.listFinishedUserTask(userId, new Date(), taskName); } else if (StringUtils.equalsIgnoreCase(type, "expired")) { list = extDataFillFormMapper.listExpiredUserTask(userId, new Date(), taskName); } else { diff --git a/core/backend/src/main/resources/db/migration/V68__1.18.23.sql b/core/backend/src/main/resources/db/migration/V68__1.18.23.sql new file mode 100644 index 0000000000..2fbe770e21 --- /dev/null +++ b/core/backend/src/main/resources/db/migration/V68__1.18.23.sql @@ -0,0 +1,5 @@ +alter table data_fill_form + add commit_new_update tinyint(1) default 0 null; +alter table data_fill_user_task + modify value_id text null comment '表内值ID'; + diff --git a/core/frontend/src/lang/en.js b/core/frontend/src/lang/en.js index 830304b716..5c365b0ef3 100644 --- a/core/frontend/src/lang/en.js +++ b/core/frontend/src/lang/en.js @@ -626,6 +626,13 @@ export default { record: 'Fill Record', task_manage: 'Task Manage', form_name: 'Form Name', + commit_type: 'Form Commit Type', + commit_type_append: 'Append', + commit_type_update: 'Update', + commit_rule: 'Update Rules', + commit_rule_add: 'Add Update Rule', + commit_rule_settings: 'Update Rule Settings', + commit_rule_set: 'Set', folder: 'Folder', datasource: 'Datasource', table: 'Table', @@ -661,6 +668,7 @@ export default { option_value: 'Options', add_option: 'Add Option', form_name_cannot_none: 'Form name cannot be null', + form_update_rule_none: 'Update Rules cannot be null', form_components_cannot_null: 'Form components cannot be null', option_list_cannot_empty: 'Option list cannot be empty', component_setting_error: 'Component setting error', diff --git a/core/frontend/src/lang/tw.js b/core/frontend/src/lang/tw.js index a5776cf1c8..f482788fc8 100644 --- a/core/frontend/src/lang/tw.js +++ b/core/frontend/src/lang/tw.js @@ -626,6 +626,13 @@ export default { record: '提交記錄', task_manage: '任務管理', form_name: '表單名稱', + commit_type: '表單提交方式', + commit_type_append: '數據追加', + commit_type_update: '數據更新', + commit_rule: '更新條件', + commit_rule_add: '添加更新規則', + commit_rule_settings: '更新規則設置', + commit_rule_set: '已設置', folder: '所屬文件夾', datasource: '數據源', table: '數據庫表', @@ -661,6 +668,7 @@ export default { option_value: '選項值', add_option: '添加選項值', form_name_cannot_none: '表單名稱不能為空', + form_update_rule_none: '請配置更新規則', form_components_cannot_null: '請添加表單組件', option_list_cannot_empty: '選項值不能為空', component_setting_error: '組件設置錯誤', diff --git a/core/frontend/src/lang/zh.js b/core/frontend/src/lang/zh.js index 887fa3ced1..2278e68ee4 100644 --- a/core/frontend/src/lang/zh.js +++ b/core/frontend/src/lang/zh.js @@ -624,6 +624,13 @@ export default { record: '提交记录', task_manage: '任务管理', form_name: '表单名称', + commit_type: '表单提交方式', + commit_type_append: '数据追加', + commit_type_update: '数据更新', + commit_rule: '更新条件', + commit_rule_add: '添加更新规则', + commit_rule_settings: '更新规则设置', + commit_rule_set: '已设置', folder: '所属文件夹', datasource: '数据源', table: '数据库表', @@ -659,6 +666,7 @@ export default { option_value: '选项值', add_option: '添加选项值', form_name_cannot_none: '表单名称不能为空', + form_update_rule_none: '请配置更新规则', form_components_cannot_null: '请添加表单组件', option_list_cannot_empty: '选项值不能为空', component_setting_error: '组件设置错误', diff --git a/core/frontend/src/views/dataFilling/form/EditFormData.vue b/core/frontend/src/views/dataFilling/form/EditFormData.vue index 4d060b77c6..469e364d22 100644 --- a/core/frontend/src/views/dataFilling/form/EditFormData.vue +++ b/core/frontend/src/views/dataFilling/form/EditFormData.vue @@ -1,5 +1,5 @@