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