From 5420136712573a00c65a779676248fcba6255db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=AE=8F=E6=9D=B0?= <1943105267@qq.com> Date: Wed, 30 Oct 2024 15:41:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/user.js | 124 +-- src/assets/icons/svg/icon_1.svg | 14 + src/assets/icons/svg/icon_2.svg | 10 + src/assets/icons/svg/juming.svg | 2 + src/assets/icons/svg/map.svg | 1 + src/assets/logo/logo.png | Bin 5663 -> 4290 bytes src/layout/components/Navbar.vue | 117 +-- src/router/index.js | 2 +- src/settings.js | 8 +- src/utils/regex/formRegex.js | 90 ++ src/utils/regex/index.js | 16 + src/views/components/xiaoqu/building.vue | 1 - src/views/taicangpop/building/index.vue | 550 +++++++++++ src/views/taicangpop/check/index.vue | 730 +++++++++++++++ src/views/taicangpop/house/index.vue | 769 ++++++++++++++++ src/views/taicangpop/person/index.vue | 1074 ++++++++++++++++++++++ 16 files changed, 3389 insertions(+), 119 deletions(-) create mode 100644 src/assets/icons/svg/icon_1.svg create mode 100644 src/assets/icons/svg/icon_2.svg create mode 100644 src/assets/icons/svg/juming.svg create mode 100644 src/assets/icons/svg/map.svg create mode 100644 src/utils/regex/formRegex.js create mode 100644 src/utils/regex/index.js create mode 100644 src/views/taicangpop/building/index.vue create mode 100644 src/views/taicangpop/check/index.vue create mode 100644 src/views/taicangpop/house/index.vue create mode 100644 src/views/taicangpop/person/index.vue diff --git a/src/api/system/user.js b/src/api/system/user.js index 9b0211a..f6b1290 100644 --- a/src/api/system/user.js +++ b/src/api/system/user.js @@ -1,136 +1,142 @@ -import request from '@/utils/request' +import request from "@/utils/request"; import { parseStrEmpty } from "@/utils/ruoyi"; // 查询用户列表 export function listUser(query) { return request({ - url: '/system/user/list', - method: 'get', - params: query - }) + url: "/system/user/list", + method: "get", + params: query, + }); } // 查询用户详细 export function getUser(userId) { return request({ - url: '/system/user/' + parseStrEmpty(userId), - method: 'get' - }) + url: "/system/user/" + parseStrEmpty(userId), + method: "get", + }); } // 新增用户 export function addUser(data) { return request({ - url: '/system/user', - method: 'post', - data: data - }) + url: "/system/user", + method: "post", + data: data, + }); } // 修改用户 export function updateUser(data) { return request({ - url: '/system/user', - method: 'put', - data: data - }) + url: "/system/user", + method: "put", + data: data, + }); } // 删除用户 export function delUser(userId) { return request({ - url: '/system/user/' + userId, - method: 'delete' - }) + url: "/system/user/" + userId, + method: "delete", + }); } // 用户密码重置 export function resetUserPwd(userId, password) { const data = { userId, - password - } + password, + }; return request({ - url: '/system/user/resetPwd', - method: 'put', - data: data - }) + url: "/system/user/resetPwd", + method: "put", + data: data, + }); } // 用户状态修改 export function changeUserStatus(userId, status) { const data = { userId, - status - } + status, + }; return request({ - url: '/system/user/changeStatus', - method: 'put', - data: data - }) + url: "/system/user/changeStatus", + method: "put", + data: data, + }); } // 查询用户个人信息 export function getUserProfile() { return request({ - url: '/system/user/profile', - method: 'get' - }) + url: "/system/user/profile", + method: "get", + }); } // 修改用户个人信息 export function updateUserProfile(data) { return request({ - url: '/system/user/profile', - method: 'put', - data: data - }) + url: "/system/user/profile", + method: "put", + data: data, + }); } // 用户密码重置 export function updateUserPwd(oldPassword, newPassword) { const data = { oldPassword, - newPassword - } + newPassword, + }; return request({ - url: '/system/user/profile/updatePwd', - method: 'put', - params: data - }) + url: "/system/user/profile/updatePwd", + method: "put", + params: data, + }); } // 用户头像上传 export function uploadAvatar(data) { return request({ - url: '/system/user/profile/avatar', - method: 'post', - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, - data: data - }) + url: "/system/user/profile/avatar", + method: "post", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + data: data, + }); } // 查询授权角色 export function getAuthRole(userId) { return request({ - url: '/system/user/authRole/' + userId, - method: 'get' - }) + url: "/system/user/authRole/" + userId, + method: "get", + }); } // 保存授权角色 export function updateAuthRole(data) { return request({ - url: '/system/user/authRole', - method: 'put', - params: data - }) + url: "/system/user/authRole", + method: "put", + params: data, + }); } // 查询部门下拉树结构 +// export function deptTreeSelect() { +// return request({ +// url: '/system/user/deptTree', +// method: 'get' +// }) +// } export function deptTreeSelect() { return request({ - url: '/system/user/deptTree', - method: 'get' - }) + url: "/system/dept/treeselect", + method: "get", + }); } diff --git a/src/assets/icons/svg/icon_1.svg b/src/assets/icons/svg/icon_1.svg new file mode 100644 index 0000000..632e1bd --- /dev/null +++ b/src/assets/icons/svg/icon_1.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/assets/icons/svg/icon_2.svg b/src/assets/icons/svg/icon_2.svg new file mode 100644 index 0000000..8504b7a --- /dev/null +++ b/src/assets/icons/svg/icon_2.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/assets/icons/svg/juming.svg b/src/assets/icons/svg/juming.svg new file mode 100644 index 0000000..c4968ca --- /dev/null +++ b/src/assets/icons/svg/juming.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/map.svg b/src/assets/icons/svg/map.svg new file mode 100644 index 0000000..5280b24 --- /dev/null +++ b/src/assets/icons/svg/map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png index e26376026420542212ed58d90d0ed34f554fa4ae..adc6c11f536461b1aeb6a64bbe604538a919cd8a 100644 GIT binary patch literal 4290 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 literal 5663 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