| @@ -254,6 +254,7 @@ | |||
| delete this.insertItem.tablename; | |||
| this.getUsers(); | |||
| this.close(); | |||
| alert('已新增'); | |||
| } | |||
| ); | |||
| }, | |||
| @@ -263,7 +264,9 @@ | |||
| Object.keys(this.modifyItem).forEach((key) => { | |||
| this.modifyItem[key] = ''; | |||
| }); | |||
| alert('已修改'); | |||
| this.close(); | |||
| } | |||
| ); | |||
| }, | |||
| @@ -252,7 +252,7 @@ | |||
| <v-text-field | |||
| v-if="header.text !== '' && header.value !== 'isselect' && isBooleanCol.indexOf(header.value) < 0 && header.value !== 'descript2'" | |||
| :label='header.text' | |||
| :value="insertColItem[header.value]" | |||
| v-model="insertColItem[header.value]" | |||
| hint='必填' | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| /> | |||
| @@ -260,6 +260,7 @@ | |||
| <v-select | |||
| v-if="header.value === 'isselect' && isBooleanCol.indexOf(header.value) < 0" | |||
| :label='header.text' hint='必填' | |||
| v-model="insertColItem[header.value]" | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| :items="selectColItem.isselect" | |||
| :item-text="selectColItem.isselect.text" | |||
| @@ -269,13 +270,14 @@ | |||
| <v-select | |||
| v-if="header.value && isBooleanCol.indexOf(header.value) >= 0" | |||
| :label='header.text' hint='必填' | |||
| v-model="insertColItem[header.value]" | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| :items="selectColItem.boolean" | |||
| :item-text="selectColItem.boolean.text" | |||
| :item-value="selectColItem.boolean.value" | |||
| /> | |||
| <v-btn | |||
| v-if="header.value === 'isselect' && insertColItem.isselect === 'true'" | |||
| v-if="insertColItem.colname !== 'type' && header.value === 'isselect' && insertColItem.isselect === 'true'" | |||
| @click='dialogInsertSelectItem = true' | |||
| > | |||
| 編輯選項 | |||
| @@ -283,6 +285,7 @@ | |||
| <!--欄位說明欄位--> | |||
| <v-textarea v-if="header.text === '欄位說明'" | |||
| :label='header.text' hint='必填' | |||
| v-model="insertColItem[header.value]" | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| auto-grow | |||
| rows="1" /> | |||
| @@ -412,12 +415,12 @@ | |||
| :item-text="selectColItem.boolean.text" | |||
| :item-value="selectColItem.boolean.value" | |||
| /> | |||
| <!-- <v-btn--> | |||
| <!-- v-if="header.value === 'isselect' && modifyColItem.isselect === 'true'"--> | |||
| <!-- @click='dialogModifySelectItem = true'--> | |||
| <!-- >--> | |||
| <!-- 編輯選項--> | |||
| <!-- </v-btn>--> | |||
| <v-btn | |||
| v-if="modifyColItem.colname !== 'type' && header.value === 'isselect' && modifyColItem.isselect === 'true'" | |||
| @click='dialogModifySelectItem = true' | |||
| > | |||
| 編輯選項 | |||
| </v-btn> | |||
| <!--欄位說明欄位--> | |||
| <v-textarea v-if="header.text === '欄位說明'" | |||
| :label='header.text' hint='必填' | |||
| @@ -542,7 +545,7 @@ | |||
| 'tablename': '', | |||
| 'descript': '', | |||
| 'colname': '', | |||
| 'level': null, | |||
| // 'level': null, | |||
| // 'type': '', | |||
| 'index': '', | |||
| 'isselect': '', | |||
| @@ -604,7 +607,7 @@ | |||
| this.getCols(); | |||
| }, | |||
| dialogModifySelectItem() { | |||
| this.modifySelectItems = []; | |||
| }, | |||
| modifySelectItems() { | |||
| console.log(this.modifySelectItems[0]); | |||
| @@ -617,7 +620,7 @@ | |||
| this.getModifySelectItems(); | |||
| } | |||
| this.oldIndex = this.modifyColItem.index; | |||
| } | |||
| }, | |||
| }, | |||
| methods: { | |||
| // eslint-disable-next-line no-unused-vars | |||
| @@ -652,7 +655,7 @@ | |||
| } | |||
| }, | |||
| pushModifySelectItem() { | |||
| if (this.modifySelectItems.indexOf(this.modifySelectItem) >= 0 || this.modifySelectItem === '' || this.modifyTypeSelectItem === '') { | |||
| if (this.modifySelectItems.indexOf(this.modifySelectItem) >= 0 || this.modifySelectItem === '') { | |||
| alert('選項不得重複或為空'); | |||
| } else { | |||
| if (this.modifyColItem.colname === 'type') { | |||
| @@ -702,9 +705,12 @@ | |||
| insertCol() { | |||
| this.insertColItem.issearch = 'true'; | |||
| this.insertColItem.isexport = 'true'; | |||
| this.insertColItem.isrequire = 'true'; | |||
| console.log(this.insertColItem); | |||
| let stop; | |||
| for (const key in this.insertColItem) { | |||
| if (this.insertColItem[key] === '' && key !== 'tablename') { | |||
| if (this.insertColItem[key] === '' && key !== 'tablename' && key !== 'insertSelectItems' && key !== 'modifySelectItems' && key !== 'isselect' && key !== 'descript2') { | |||
| alert(key); | |||
| alert('所有資料不可為空'); | |||
| stop = true; | |||
| return; | |||
| @@ -724,11 +730,13 @@ | |||
| this.getCols(); | |||
| this.close(); | |||
| this.insertSelectItems = []; | |||
| delete this.insertColItem.tablename; | |||
| delete this.insertColItem.insertselectItems; | |||
| Object.keys(this.insertColItem).forEach((key) => { | |||
| this.insertColItem[key] = ''; | |||
| }); | |||
| // delete this.insertColItem.tablename; | |||
| // delete this.insertColItem.insertselectItems; | |||
| this.insertColItem = {}; | |||
| // Object.keys(this.insertColItem).forEach((key) => { | |||
| // this.insertColItem[key] = ''; | |||
| // }); | |||
| alert('已新增'); | |||
| } | |||
| ); | |||
| @@ -738,6 +746,8 @@ | |||
| this.dialogModify = false; | |||
| this.dialogNewAssertGroup = false; | |||
| this.dialogModifyAssertGroupName = false; | |||
| this.insertSelectItems = []; | |||
| this.modifySelectItems = []; | |||
| }, | |||
| isDisabled(key) { | |||
| const disabledKey = ['id']; | |||
| @@ -760,7 +770,10 @@ | |||
| modifyCol() { | |||
| let stop; | |||
| for (const key in this.modifyColItem) { | |||
| if (this.modifyColItem[key] === '') { | |||
| if (this.modifyColItem[key] === '' && key !== 'level' | |||
| && key !== 'insertSelectItems' && key !== 'modifySelectItems' | |||
| && key !== 'oldIndex' && key !== 'type') { | |||
| console.log(key); | |||
| alert('所有資料不可為空'); | |||
| stop = true; | |||
| return; | |||
| @@ -780,6 +793,7 @@ | |||
| Object.keys(this.modifyColItem).forEach((key) => { | |||
| this.modifyColItem[key] = ''; | |||
| }); | |||
| alert('已修改'); | |||
| } | |||
| ); | |||
| @@ -797,9 +811,14 @@ | |||
| await this.$axios.post(`/assert/assertGroups`, { | |||
| assertGroupDescript: this.insertAssertGroupDescript, | |||
| assertGroupTablename: this.insertAssertGroupTablename | |||
| }).then(() => { | |||
| // this.getTabs(); | |||
| // this.close(); | |||
| location.reload(); | |||
| }).catch(() => { | |||
| alert('名稱不可重複'); | |||
| }); | |||
| await this.getTabs(); | |||
| this.close(); | |||
| }, | |||
| showTabOptionIcon(index) { | |||
| this.optionIconShow = index; | |||
| @@ -808,16 +827,20 @@ | |||
| let yes = confirm('確認刪除此群組?'); | |||
| if (yes) { | |||
| await this.$axios.delete(`/assert/assertGroups?tablename=${item.value}`).then(() => { | |||
| this.getTabs(); | |||
| alert('已刪除'); | |||
| // this.getTabs(); | |||
| // alert('已刪除'); | |||
| }); | |||
| location.reload(); | |||
| } | |||
| }, | |||
| async modifyAssertGroupName() { | |||
| await this.$axios.put(`/assert/assertGroups?tablename=${this.modifyAssertGroup.value}&&newDescript=${this.modifyAssertGroup.text}`).then(() => { | |||
| this.getTabs(); | |||
| alert('已修改'); | |||
| this.close(); | |||
| // this.getTabs(); | |||
| // alert('已修改'); | |||
| // this.close(); | |||
| location.reload(); | |||
| }).catch(() => { | |||
| alert('名稱不可重複'); | |||
| }); | |||
| }, | |||
| @@ -197,6 +197,9 @@ | |||
| this.getRoutes(); | |||
| }, | |||
| methods: { | |||
| log(val) { | |||
| alert(val); | |||
| }, | |||
| logout() { | |||
| this.$emit("authenticated", { | |||
| 'username': null, | |||
| @@ -347,7 +347,7 @@ | |||
| <v-btn | |||
| color="blue darken-1" | |||
| text | |||
| @click="modifyOne(item)" | |||
| @click="modifyOne" | |||
| > | |||
| 修改 | |||
| </v-btn> | |||
| @@ -499,11 +499,12 @@ | |||
| isRequire(key) { | |||
| return this.isrequired.indexOf(key) >= 0; | |||
| }, | |||
| modifyOne(item) { | |||
| item.tablename = this.tablename; | |||
| this.$axios.put(`/inventory?`, item).then(() => { | |||
| modifyOne() { | |||
| this.modifyItem.tablename = this.tablename; | |||
| this.$axios.put(`/inventory?`, this.modifyItem).then(() => { | |||
| this.getInventories(); | |||
| this.close(); | |||
| alert('已修改'); | |||
| } | |||
| ); | |||
| }, | |||
| @@ -108,6 +108,7 @@ | |||
| <!--欄位說明欄位--> | |||
| <v-textarea v-if="header.text === '說明' || header.text === '範例'" | |||
| :label='header.text' hint='必填' | |||
| :value="insertColItem[header.value]" | |||
| v-on:input='oninput(insertColItem, header.value, $event)' | |||
| auto-grow | |||
| rows="1" /> | |||
| @@ -296,6 +297,21 @@ | |||
| }, | |||
| insertCol() { | |||
| let stop; | |||
| if (this.insertColItem.c && this.insertColItem.c !== '' && isNaN(this.insertColItem.c) ) { | |||
| alert('欄位C、I和A須為數字或為空'); | |||
| stop = true; | |||
| return; | |||
| } | |||
| if (this.insertColItem.i && this.insertColItem.i !== '' && isNaN(this.insertColItem.i) ) { | |||
| alert('欄位C、I和A須為數字或為空'); | |||
| stop = true; | |||
| return; | |||
| } | |||
| if (this.insertColItem.a && this.insertColItem.a !== '' && isNaN(this.insertColItem.a) ) { | |||
| alert('欄位C、I和A須為數字或為空'); | |||
| stop = true; | |||
| return; | |||
| } | |||
| this.cols.forEach((col) => { | |||
| if (col.type === this.insertColItem.type) { | |||
| alert('項次不可重複'); | |||
| @@ -309,9 +325,11 @@ | |||
| this.getCols(); | |||
| this.close(); | |||
| delete this.insertColItem.tablename; | |||
| Object.keys(this.insertColItem).forEach((key) => { | |||
| this.insertColItem[key] = ''; | |||
| }); | |||
| this.insertColItem = {}; | |||
| // Object.keys(this.insertColItem).forEach((key) => { | |||
| // this.insertColItem[key] = ''; | |||
| // }); | |||
| alert('已新增'); | |||
| } | |||
| ); | |||
| @@ -321,16 +339,6 @@ | |||
| this.dialogModify = false; | |||
| }, | |||
| modifyCol() { | |||
| // let repatCount = 0; | |||
| // this.cols.forEach((col) => { | |||
| // if (col.type === this.modifyColItem.type) { | |||
| // repatCount++; | |||
| // } | |||
| // }); | |||
| // if (repatCount >= 1) { | |||
| // alert('項次不可重複'); | |||
| // return; | |||
| // } | |||
| this.modifyColItem.tablename = this.assertGroup[this.currentTab].value; | |||
| this.modifyColItem.oldId = this.oldId; | |||
| this.$axios.put(`/type`, this.modifyColItem).then(() => { | |||
| @@ -341,6 +349,7 @@ | |||
| Object.keys(this.modifyColItem).forEach((key) => { | |||
| this.modifyColItem[key] = ''; | |||
| }); | |||
| alert('已修改'); | |||
| } | |||
| ); | |||
| }, | |||
| @@ -98,8 +98,10 @@ public class AssertGroupController { | |||
| assertDAO.sortCol2(mappingCol.getOldIndex(), mappingCol.getIndex(), mappingCol.getTablename()); | |||
| assertDAO.modifyColToMappingCol(mappingCol); | |||
| if (!mappingCol.getColname().equals("type")) { | |||
| assertDAO.modifySelectItems(mappingCol); | |||
| assertDAO.modifyMappingType(mappingCol); | |||
| // assertDAO.modifyMappingType(mappingCol); | |||
| } | |||
| return new JsonResult(StatusCode.SUCCESS, null); | |||
| } | |||
| @@ -118,6 +118,7 @@ public class InventoryController { | |||
| List<MappingCol> mappingCols = mappingColDAO.findByTable(tablename); | |||
| inventoryDAO.truncateTable(tablename); | |||
| searchDAO.deleteByTablename(tablename); | |||
| // inventoryDAO.resetIndex(tablename); | |||
| inventoryDAO.importInventories(tablename, mappingCols, data, searchDAO); | |||
| f.deleteOnExit(); | |||
| @@ -45,6 +45,9 @@ public class TypeController { | |||
| if (type.get("id") != type.get("oldId")) { | |||
| typeDAO.sortType1( type.get("oldId").toString(), type.get("id").toString(), (String)type.get("tablename")); | |||
| typeDAO.sortType2( type.get("oldId").toString(), type.get("id").toString(), (String)type.get("tablename")); | |||
| typeDAO.sortTypeInSelectItem1( type.get("oldId").toString(), type.get("id").toString(), (String)type.get("tablename")); | |||
| typeDAO.sortTypeInSelectItem2( type.get("oldId").toString(), type.get("id").toString(), (String)type.get("tablename")); | |||
| } | |||
| typeDAO.updateType(type); | |||
| mappingColDAO.updateType(type.get("type").toString(),type.get("type") + " " + type.get("name"), type.get("tablename").toString(), type.get("id").toString()); | |||
| @@ -65,7 +65,8 @@ public interface AssertDAO extends SqlObject { | |||
| sql += " [ ] int,"; | |||
| sql += " C int,"; | |||
| sql += " I int,"; | |||
| sql += " A int"; | |||
| sql += " A int,"; | |||
| sql += " id int"; | |||
| sql += ")"; | |||
| handle.createUpdate(sql).execute(); | |||
| @@ -146,6 +146,12 @@ public interface InventoryDAO extends SqlObject { | |||
| return handle.createQuery(sql).mapToMap().list(); | |||
| } | |||
| default void resetIndex(String tablename) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "DBCC CHECKIDENT ("+ tablename +", RESEED, 0)"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void importInventories(String tablename, List<MappingCol> mappingCols, List<Map<String, String>> datas, SearchDAO searchDAO) { | |||
| Handle handle = this.getHandle(); | |||
| @@ -95,6 +95,18 @@ public interface TypeDAO extends SqlObject { | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void sortTypeInSelectItem1(String oldId ,String id, String tablename) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "update mapping.selectItem set [index] = [index] + 1 where [index] >= " + id + " and [index] < " + oldId + " and tablename = '" +tablename + "' and colname = 'type'"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void sortTypeInSelectItem2(String oldId ,String id, String tablename) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "update mapping.selectItem set [index] = [index] - 1 where [index] > " + oldId + " and [index] <= " + id + " and tablename = '" +tablename + "' and colname = 'type'"; | |||
| handle.createUpdate(sql).execute(); | |||
| } | |||
| default void sortTypeAfterDelete(String id, String tablename) { | |||
| Handle handle = this.getHandle(); | |||
| String sql = "update mapping.mapping_" + tablename + " set id = id - 1 where id > " + id; | |||