| @@ -426,14 +426,22 @@ | |||
| <v-container> | |||
| <v-row> | |||
| <v-col cols="11" class="d-flex align-center"> | |||
| <v-text-field outlined rounded hide-details | |||
| <v-text-field v-if="modifyColItem.colname === 'type'" | |||
| outlined rounded | |||
| label="代號" | |||
| hint="Ex:H7" | |||
| v-model="modifyTypeSelectItem"/> | |||
| <v-text-field class="col-12" outlined rounded | |||
| label="名稱" | |||
| hint="Ex:個人電腦" | |||
| v-model="modifySelectItem"/> | |||
| <v-btn class="ml-2" @click='pushModifySelectItem'>新增</v-btn> | |||
| <v-btn class="ml-2 mb-8" @click='pushModifySelectItem'>新增</v-btn> | |||
| </v-col> | |||
| </v-row> | |||
| <p class="font-italic mb-0 mt-1">拖曳選項以排序</p> | |||
| <v-card | |||
| class="mt-2 col-10" | |||
| min-height="300px" | |||
| style="border: 1px solid grey; border-radius: 10px" | |||
| > | |||
| <draggable v-model="modifySelectItems"> | |||
| @@ -542,6 +550,7 @@ | |||
| } | |||
| ], | |||
| oldIndex: '', | |||
| modifyTypeSelectItem: '', | |||
| } | |||
| }, | |||
| async mounted() { | |||
| @@ -564,9 +573,7 @@ | |||
| this.getCols(); | |||
| }, | |||
| dialogModifySelectItem() { | |||
| if (this.modifySelectItems.length === 0) { | |||
| this.getModifySelectItems(); | |||
| } | |||
| }, | |||
| modifySelectItems() { | |||
| console.log(this.modifySelectItems[0]); | |||
| @@ -575,6 +582,9 @@ | |||
| this.insertColItem.index = (parseInt(this.allCols[this.assertGroup[this.currentTab].value][this.allCols[this.assertGroup[this.currentTab].value].length - 1].index) + 1).toString(); | |||
| }, | |||
| dialogModify() { | |||
| if (this.modifyColItem.isselect === 'true') { | |||
| this.getModifySelectItems(); | |||
| } | |||
| this.oldIndex = this.modifyColItem.index; | |||
| } | |||
| }, | |||
| @@ -592,6 +602,7 @@ | |||
| this.dialogInsertSelectItem = false; | |||
| }, | |||
| getModifySelectItems() { | |||
| this.modifySelectItems = []; | |||
| this.$axios.get(`/assert/selectItems?tablename=${this.modifyColItem.tablename}&&colname=${this.modifyColItem.colname}`).then((resp) => { | |||
| console.log(resp.data.data); | |||
| this.modifySelectItems = resp.data.data; | |||
| @@ -610,11 +621,17 @@ | |||
| } | |||
| }, | |||
| pushModifySelectItem() { | |||
| if (this.modifySelectItems.indexOf(this.modifySelectItem) >= 0 || this.modifySelectItem === '') { | |||
| if (this.modifySelectItems.indexOf(this.modifySelectItem) >= 0 || this.modifySelectItem === '' || this.modifyTypeSelectItem === '') { | |||
| alert('選項不得重複或為空'); | |||
| } else { | |||
| this.modifySelectItems.push(this.modifySelectItem); | |||
| this.modifySelectItem = ''; | |||
| if (this.modifyColItem.colname === 'type') { | |||
| this.modifySelectItems.push(`${this.modifyTypeSelectItem} ${this.modifySelectItem}`); | |||
| this.modifyTypeSelectItem = ''; | |||
| this.modifySelectItem = ''; | |||
| } else { | |||
| this.modifySelectItems.push(this.modifySelectItem); | |||
| this.modifySelectItem = ''; | |||
| } | |||
| } | |||
| }, | |||
| deleteInsertSelectItem(index) { | |||
| @@ -22,6 +22,7 @@ | |||
| > | |||
| <v-icon>mdi-file-export-outline</v-icon> | |||
| </v-btn> | |||
| <!--搜尋對話--> | |||
| <v-dialog | |||
| v-model="dialogSearch" | |||
| @click:outside="close" | |||
| @@ -48,7 +49,7 @@ | |||
| <v-row> | |||
| <v-col | |||
| v-for="(val, key, index) in insertItem" | |||
| v-for="(val, key, index) in searchItem" | |||
| :key="index" | |||
| cols="12" | |||
| sm="6" | |||
| @@ -63,7 +64,7 @@ | |||
| v-bind:value="val" | |||
| :persistent-hint="isRequire(key)" | |||
| hint="必填" | |||
| v-on:input="oninput(insertItem, key, $event)" | |||
| v-on:input="oninput(searchItem, key, $event)" | |||
| /> | |||
| <v-select | |||
| dense | |||
| @@ -72,7 +73,7 @@ | |||
| hint="必選" | |||
| :label="headers[index].text" | |||
| :value="val" | |||
| v-on:input="oninput(insertItem, key, $event)" | |||
| v-on:input="oninput(searchItem, key, $event)" | |||
| :items="selectItem[key]" | |||
| item-text="item" | |||
| item-value="item" | |||
| @@ -101,6 +102,7 @@ | |||
| </v-card-actions> | |||
| </v-card> | |||
| </v-dialog> | |||
| <!--新增對話--> | |||
| <v-dialog | |||
| v-model="dialogInsert" | |||
| @click:outside="close" | |||
| @@ -196,6 +198,7 @@ | |||
| </v-icon> | |||
| </template> | |||
| </v-data-table> | |||
| <!--修改對話--> | |||
| <v-dialog | |||
| v-model="dialogModify" | |||
| @click:outside="close" | |||
| @@ -407,6 +410,9 @@ | |||
| } | |||
| console.log(item); | |||
| }, | |||
| search() { | |||
| }, | |||
| exportFile() { | |||
| let yes = confirm('確定匯出'); | |||
| if (yes) { | |||
| @@ -30,6 +30,8 @@ public class AssertGroupController { | |||
| assertDAO.insertAssertGroup(data); | |||
| assertDAO.insertMappingTable(data); | |||
| assertDAO.insertMappingType(data); | |||
| assertDAO.insertIdToMapCol(data); | |||
| assertDAO.insertTypeToMapCol(data); | |||
| return new JsonResult(StatusCode.SUCCESS, null); | |||
| } | |||
| @@ -40,6 +42,8 @@ public class AssertGroupController { | |||
| assertDAO.deleteAssertGroup(tablename); | |||
| assertDAO.deleteMappingTable(tablename); | |||
| assertDAO.deleteMappingType(tablename); | |||
| assertDAO.deleteMappingCol(tablename); | |||
| assertDAO.deleteFromSelectItem(tablename); | |||
| return new JsonResult(StatusCode.SUCCESS, null); | |||
| } | |||
| @@ -88,13 +92,13 @@ public class AssertGroupController { | |||
| public JsonResult modifyCol(@RequestBody MappingCol mappingCol) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { | |||
| System.out.println(mappingCol); | |||
| // assertDAO.modifyColToTable(mappingCol); | |||
| assertDAO.sortCol1(mappingCol.getOldIndex(), mappingCol.getIndex(), mappingCol.getTablename()); | |||
| assertDAO.sortCol2(mappingCol.getOldIndex(), mappingCol.getIndex(), mappingCol.getTablename()); | |||
| assertDAO.modifyColToMappingCol(mappingCol); | |||
| assertDAO.modifySelectItems(mappingCol); | |||
| assertDAO.modifyMappingType(mappingCol); | |||
| return new JsonResult(StatusCode.SUCCESS, null); | |||
| } | |||
| @@ -56,16 +56,57 @@ public interface AssertDAO extends SqlObject { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "CREATE TABLE mapping.mapping_" + data.get("assertGroupTablename") + "("; | |||
| sql += " type varchar not null"; | |||
| sql += " type nvarchar(256) not null"; | |||
| sql += " constraint mapping_" + data.get("assertGroupTablename") + "_pk primary key,"; | |||
| sql += " name varchar,"; | |||
| sql += " descript varchar,"; | |||
| sql += " example varchar"; | |||
| sql += " name nvarchar(256),"; | |||
| sql += " descript nvarchar(256),"; | |||
| sql += " example nvarchar(256)"; | |||
| sql += ")"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void insertIdToMapCol(Map<String, Object> data) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "insert into mapping.mapping_col(tablename, colname, descript, level, type, [index], isselect, isrequire, issearch, isexport) values ("; | |||
| sql += "'" + data.get("assertGroupTablename") + "',"; | |||
| sql += "'id',"; | |||
| sql += "'編號',"; | |||
| sql += "'0',"; | |||
| sql += "'int',"; | |||
| sql += "'0',"; | |||
| sql += "'false',"; | |||
| sql += "'false',"; | |||
| sql += "'false',"; | |||
| sql += "'true'"; | |||
| sql += ")"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void insertTypeToMapCol(Map<String, Object> data) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "insert into mapping.mapping_col(tablename, colname, descript, level, type, [index], isselect, isrequire, issearch, isexport) values ("; | |||
| sql += "'" + data.get("assertGroupTablename") + "',"; | |||
| sql += "'type',"; | |||
| sql += "'資產群組',"; | |||
| sql += "'0',"; | |||
| sql += "'nvarchar',"; | |||
| sql += "'2',"; | |||
| sql += "'true',"; | |||
| sql += "'true',"; | |||
| sql += "'true',"; | |||
| sql += "'true'"; | |||
| sql += ")"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void insertMappingTable(Map<String, Object> data) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "insert into mapping.mapping_table(tablename, descript) values ('" + data.get("assertGroupTablename") + "', '" + data.get("assertGroupDescript") + "')"; | |||
| @@ -100,6 +141,13 @@ public interface AssertDAO extends SqlObject { | |||
| } | |||
| @SqlUpdate("delete from mapping.mapping_col where tablename = ?") | |||
| void deleteMappingCol(String tablename); | |||
| @SqlUpdate("delete from mapping.selectItem where tablename = ?") | |||
| void deleteFromSelectItem(String tablename); | |||
| @SqlQuery("select item from mapping.\"selectItem\" where tablename = ? and colname = ? order by [index];") | |||
| @RegisterBeanMapper(SelectItemDTO.class) | |||
| List<String> getSelectItemsByCol(String tablename, String colname); | |||
| @@ -192,15 +240,38 @@ public interface AssertDAO extends SqlObject { | |||
| } | |||
| default void modifySelectItems(MappingCol m) { | |||
| Handle handle = this.getHandle(); | |||
| String sqlDelete = "delete from mapping.selectItem where tablename = '" + m.getTablename() + "' and colname = '" + m.getColname() + "'" ; | |||
| handle.createUpdate(sqlDelete).execute(); | |||
| if (m.getModifySelectItems() != null) { | |||
| for (int i = 1; i <= m.getModifySelectItems().size(); i++) { | |||
| String sql = "insert into mapping.selectItem values("; | |||
| sql += "'" + m.getTablename() + "',"; | |||
| sql += "'" + m.getColname() + "',"; | |||
| sql += "'" + m.getModifySelectItems().get(i - 1) + "',"; | |||
| sql += "'" + i + "')"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| } | |||
| } | |||
| default void modifyMappingType(MappingCol m) { | |||
| Handle handle = this.getHandle(); | |||
| if (m.getInsertSelectItems() != null) { | |||
| for (int i = 1; i <= m.getInsertSelectItems().size(); i++) { | |||
| String sql = "update mapping.\"selectItem\" set "; | |||
| sql += "[index] = '" + i + "'"; | |||
| sql += "where tablename = '" + m.getTablename() + "'"; | |||
| sql += "and colname = '" + m.getColname() + "'"; | |||
| String sqlDelete = "truncate table mapping.mapping_" + m.getTablename(); | |||
| handle.createUpdate(sqlDelete).execute(); | |||
| if (m.getModifySelectItems() != null) { | |||
| for (int i = 1; i <= m.getModifySelectItems().size(); i++) { | |||
| String sql = "insert into mapping.mapping_" + m.getTablename() +" values("; | |||
| sql += "'" + m.getModifySelectItems().get(i - 1).split(" ")[0] + "',"; | |||
| sql += "'" + m.getModifySelectItems().get(i - 1).split(" ")[1] + "',"; | |||
| sql += "'" + m.getModifySelectItems().get(i - 1).split(" ")[1] + "',"; | |||
| sql += "'" + m.getModifySelectItems().get(i - 1).split(" ")[1] + "')"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| } | |||
| @@ -236,4 +307,5 @@ public interface AssertDAO extends SqlObject { | |||
| @SqlUpdate("select [index] from mapping.mapping_col where tablename = ? order by [index] desc limit 1;") | |||
| Integer getLastIndex(String tablename); | |||
| } | |||