diff --git a/app/src/components/AccountManage.vue b/app/src/components/AccountManage.vue new file mode 100644 index 0000000..9abf607 --- /dev/null +++ b/app/src/components/AccountManage.vue @@ -0,0 +1,264 @@ + + diff --git a/app/src/components/AssetGroup.vue b/app/src/components/AssetGroup.vue index 148e27d..e977526 100644 --- a/app/src/components/AssetGroup.vue +++ b/app/src/components/AssetGroup.vue @@ -514,8 +514,8 @@ {'text': '文字框或選項', 'value': 'isselect'}, {'text': '順序', 'value': 'index'}, {'text': '必填', 'value': 'isrequire'}, - {'text': '可匯出', 'value': 'isexport'}, - {'text': '可搜尋', 'value': 'issearch'}, + // {'text': '可匯出', 'value': 'isexport'}, + // {'text': '可搜尋', 'value': 'issearch'}, ], allCols: [], insertColItem: { @@ -689,6 +689,8 @@ }); }, insertCol() { + this.insertColItem.issearch = 'true'; + this.insertColItem.isexport = 'true'; for (const key in this.insertColItem) { if (this.insertColItem[key] === '' && key !== 'tablename') { console.log(key); diff --git a/app/src/components/Home.vue b/app/src/components/Home.vue index 7b98ed3..a237ede 100644 --- a/app/src/components/Home.vue +++ b/app/src/components/Home.vue @@ -180,25 +180,6 @@ ], } }, - // data: () => ({ - // dialog: false, - // drawer: null, - // error: false, - // message: "", - // items: [{text: '資訊資產群組', route: '/asset_group'}], - // username: localStorage.getItem('username'), - // this1: this, - // menuitems: [ - // { - // icon: 'mdi-exit-to-app', - // href: '#', - // title: '登出', - // click: () => { - // this.logout(); - // }, - // }, - // ], - // }), created() { this.$root.$on('showError', (message) => { this.error = true; @@ -225,7 +206,11 @@ route.text = item.descript; route.route = `/inventory/${item.tablename}`; this.items.push(route); + }); + if (localStorage.getItem('level') === '0') { + this.items.push({'text': '帳號管理', 'route': '/account'}); + } console.log(this.items); }); }, diff --git a/app/src/components/MockSearch.vue b/app/src/components/MockSearch.vue deleted file mode 100644 index dd086f0..0000000 --- a/app/src/components/MockSearch.vue +++ /dev/null @@ -1,220 +0,0 @@ - - diff --git a/app/src/components/Search.vue b/app/src/components/Search.vue index 34a51c0..f1f8580 100644 --- a/app/src/components/Search.vue +++ b/app/src/components/Search.vue @@ -19,20 +19,22 @@ - - - - - - - 搜尋結果 + + + 搜尋結果 - + + + + + 0) { + return new JsonResult(StatusCode.DUPLICATE_ID, null); + }else if (b > 0) { + return new JsonResult(StatusCode.DUPLICATE_ACCOUNT, null); + }else { + return new JsonResult(StatusCode.SUCCESS, null); + } + } + + @PostMapping("/account") + public JsonResult insertAccount(@RequestBody Account account) { + accountDAO.insertOne(account); + return new JsonResult(StatusCode.SUCCESS, null); + } + + @PutMapping("/account") + public JsonResult modifyAccount(@RequestBody Account account) { + accountDAO.modifyOne(account); + return new JsonResult(StatusCode.SUCCESS, null); + } + + @DeleteMapping("/account") + public JsonResult deleteAccount(@RequestParam String id) { + accountDAO.deleteOne(id); + return new JsonResult(StatusCode.SUCCESS, null); + } + + @GetMapping("/departments") + public JsonResult getDepartments() { + + return new JsonResult(StatusCode.SUCCESS, accountDAO.finfDepartments()); + } + } diff --git a/src/main/java/com/moze/rms/controller/StatusCode.java b/src/main/java/com/moze/rms/controller/StatusCode.java index 3c079f1..f918b29 100644 --- a/src/main/java/com/moze/rms/controller/StatusCode.java +++ b/src/main/java/com/moze/rms/controller/StatusCode.java @@ -27,7 +27,13 @@ public enum StatusCode { TOO_FREQUENT(445, "太頻繁的呼叫"), /** 未知的錯誤 */ - UNKNOWN_ERROR(499, "未知錯誤"); + UNKNOWN_ERROR(499, "未知錯誤"), + + DUPLICATE_ID(420, "員工編號重複"), + + DUPLICATE_ACCOUNT(421, "帳號重複"); + + private int code; private String message; diff --git a/src/main/java/com/moze/rms/dao/AccountDAO.java b/src/main/java/com/moze/rms/dao/AccountDAO.java index 0b5f74f..dff78a1 100644 --- a/src/main/java/com/moze/rms/dao/AccountDAO.java +++ b/src/main/java/com/moze/rms/dao/AccountDAO.java @@ -1,10 +1,12 @@ package com.moze.rms.dao; +import com.moze.rms.entity.model.Account; import org.jdbi.v3.core.Handle; import org.jdbi.v3.sqlobject.SqlObject; import org.jdbi.v3.sqlobject.config.RegisterBeanMapper; import org.jdbi.v3.sqlobject.statement.SqlQuery; +import java.util.List; import java.util.Map; public interface AccountDAO extends SqlObject { @@ -15,4 +17,59 @@ public interface AccountDAO extends SqlObject { String sql = "select * from account where account = '" + account + "'"; return handle.createQuery(sql).mapToMap().one(); } + + @RegisterBeanMapper(Account.class) + @SqlQuery("select * from account order by id;") + List findAll(); + + @RegisterBeanMapper(List.class) + @SqlQuery("select * from department;") + List finfDepartments(); + + + default void insertOne(Account a) { + + Handle handle = this.getHandle(); + + String sql = "insert into account(pwd, username, department, account, level, id) values ("; + + sql += "'" + a.getPwd() +"',"; + sql += "'" + a.getUsername() +"',"; + sql += "'" + a.getDepartment() +"',"; + sql += "'" + a.getAccount() +"',"; + sql += "'1',"; + sql += "'" + a.getId() +"')"; + + handle.createUpdate(sql).execute(); + } + + default void modifyOne(Account a) { + + Handle handle = this.getHandle(); + + String sql = "update account set "; + sql += "pwd = '" + a.getPwd() + "',"; + sql += "username = '" + a.getUsername() + "',"; + sql += "department = '" + a.getDepartment() + "',"; + sql += "account = '" + a.getAccount() + "',"; + sql += "level = '" + a.getLevel() + "'"; + sql += "where id = '" + a.getId() + "'"; + + handle.createUpdate(sql).execute(); + } + + default void deleteOne(String id) { + + Handle handle = this.getHandle(); + + String sql = "delete from account where id = '" + id + "'"; + + handle.createUpdate(sql).execute(); + } + + @SqlQuery("select count(*) from account where id = ?;") + Integer findById(String id); + + @SqlQuery("select count(*) from account where account = ?;") + Integer findByAccount(String account); } diff --git a/src/main/java/com/moze/rms/entity/model/Account.java b/src/main/java/com/moze/rms/entity/model/Account.java new file mode 100644 index 0000000..649df6b --- /dev/null +++ b/src/main/java/com/moze/rms/entity/model/Account.java @@ -0,0 +1,22 @@ +package com.moze.rms.entity.model; + + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class Account { + + private String id; + + private String username; + + private String account; + + private String pwd; + + private String department; + + private String level; +} diff --git a/src/main/java/com/moze/rms/utils/ExcelExpoter.java b/src/main/java/com/moze/rms/utils/ExcelExpoter.java index 2633abc..112a9a3 100644 --- a/src/main/java/com/moze/rms/utils/ExcelExpoter.java +++ b/src/main/java/com/moze/rms/utils/ExcelExpoter.java @@ -231,7 +231,7 @@ public class ExcelExpoter { public void expoerDataExcelMultiSheet(HttpServletResponse response, Map> titleKeyLists, Map> titleMaps, Map>> src_lists, String filename) throws IOException { - String xlsFile_name = "資產清冊.xls"; //輸出xls檔名稱 + String xlsFile_name = "SeverList.xls"; //輸出xls檔名稱 //記憶體中只建立100個物件 Workbook wb = new SXSSFWorkbook(100); //關鍵語句 Iterator>>> iterator = src_lists.entrySet().iterator();