From 75a4bea6dbed56f54ab0ef2fcc452ef05daf8081 Mon Sep 17 00:00:00 2001 From: zxf <1532322479@qq.com> Date: Sun, 4 Jan 2026 22:04:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=9A=E4=B8=BB/?= =?UTF-8?q?=E7=A7=9F=E6=88=B7=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/api/pmtenant.js | 13 + admin/src/api/pmtentanthouserel.js | 69 +++++ admin/src/api/syspost.js | 63 +++++ admin/src/api/systemadmin.js | 6 +- admin/src/api/sysuserpost.js | 63 +++++ admin/src/views/pm/pmowner/index.vue | 169 +++++++----- .../pm/pmowner/pmowner-add-and-update.vue | 181 ++++++++++-- .../pm/pmowner/rent-record-add-and-update.vue | 122 +++++++++ .../pm/pmowner/tenant-add-and-update.vue | 238 ++++++++++++++++ admin/src/views/sys/post/index.vue | 236 ++++++++++++++++ .../views/sys/post/syspost-add-and-update.vue | 141 ++++++++++ admin/src/views/sys/user/post/index.vue | 258 ++++++++++++++++++ .../user/post/sysuserpost-add-and-update.vue | 100 +++++++ .../administratorAuthority/adminList/edit.vue | 109 ++++++-- .../adminList/index.vue | 59 +++- .../zbkj/admin/config/WebSecurityConfig.java | 4 + .../admin/controller/SysPostController.java | 188 +++++++++++++ .../controller/SysUserPostController.java | 173 ++++++++++++ .../controller/DcVisitBookController.java | 1 + .../controller/PmOwnerController.java | 125 +++++++++ .../controller/PmTenantController.java | 35 ++- .../controller/PmTenantHouseController.java | 4 +- .../autogencode/entity/DcVisitBook.java | 15 +- .../modules/autogencode/entity/PmOwner.java | 42 +-- .../mapper/autogencode/SysPostDao.xml | 26 ++ .../mapper/autogencode/SysUserPostDao.xml | 23 ++ .../common/handler/ListStringTypeHandler.java | 73 +++++ .../com/zbkj/common/model/system/SysPost.java | 94 +++++++ .../zbkj/common/model/system/SysUserPost.java | 79 ++++++ .../zbkj/common/model/system/SystemAdmin.java | 7 + .../common/request/SystemAdminAddRequest.java | 3 + .../common/request/SystemAdminRequest.java | 3 + .../request/SystemAdminUpdateRequest.java | 3 + .../common/response/SystemAdminResponse.java | 6 + .../java/com/zbkj/service/dao/SysPostDao.java | 13 + .../com/zbkj/service/dao/SysUserPostDao.java | 13 + .../zbkj/service/service/SysPostService.java | 23 ++ .../service/service/SysUserPostService.java | 23 ++ .../service/impl/SysPostServiceImpl.java | 42 +++ .../service/impl/SysUserPostServiceImpl.java | 42 +++ .../service/impl/SystemAdminServiceImpl.java | 135 ++++++++- 41 files changed, 2865 insertions(+), 157 deletions(-) create mode 100644 admin/src/api/pmtentanthouserel.js create mode 100644 admin/src/api/syspost.js create mode 100644 admin/src/api/sysuserpost.js create mode 100644 admin/src/views/pm/pmowner/rent-record-add-and-update.vue create mode 100644 admin/src/views/pm/pmowner/tenant-add-and-update.vue create mode 100644 admin/src/views/sys/post/index.vue create mode 100644 admin/src/views/sys/post/syspost-add-and-update.vue create mode 100644 admin/src/views/sys/user/post/index.vue create mode 100644 admin/src/views/sys/user/post/sysuserpost-add-and-update.vue create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SysPostController.java create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/admin/controller/SysUserPostController.java create mode 100644 crmeb/crmeb-admin/src/main/resources/mapper/autogencode/SysPostDao.xml create mode 100644 crmeb/crmeb-admin/src/main/resources/mapper/autogencode/SysUserPostDao.xml create mode 100644 crmeb/crmeb-common/src/main/java/com/zbkj/common/handler/ListStringTypeHandler.java create mode 100644 crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SysPost.java create mode 100644 crmeb/crmeb-common/src/main/java/com/zbkj/common/model/system/SysUserPost.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SysPostDao.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/dao/SysUserPostDao.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SysPostService.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/service/SysUserPostService.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SysPostServiceImpl.java create mode 100644 crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/SysUserPostServiceImpl.java diff --git a/admin/src/api/pmtenant.js b/admin/src/api/pmtenant.js index da5bebc..d7b3bd7 100644 --- a/admin/src/api/pmtenant.js +++ b/admin/src/api/pmtenant.js @@ -61,3 +61,16 @@ export function pmtenantListApi(params) { }) } +/** + * 根据业主ID获取租户列表 + * @param ownerId + * @param params + */ +export function pmtenantListByOwnerIdApi(ownerId, params) { + return request({ + url: `autogencode/pmtenant/listByOwnerId/${ownerId}`, + method: 'GET', + params + }) +} + diff --git a/admin/src/api/pmtentanthouserel.js b/admin/src/api/pmtentanthouserel.js new file mode 100644 index 0000000..1be441a --- /dev/null +++ b/admin/src/api/pmtentanthouserel.js @@ -0,0 +1,69 @@ +/* + * @Author: zxf 1532322479@qq.com + * @Date: 2026-01-04 17:03:25 + * @LastEditors: zxf 1532322479@qq.com + * @LastEditTime: 2026-01-04 17:05:28 + * @FilePath: \crmebTwo\admin\src\api\pmtentanthouserel.js + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import request from '@/utils/request' + +/** + * 新增pmtenanthouserel + * @param pram + */ +export function pmtentanthouserelCreateApi(data) { + return request({ + url: `autogencode/pmtenanthouserel/save`, + method: 'POST', + data + }) +} + +/** + * pmtenanthouserel更新 + * @param pram + */ +export function pmtentanthouserelUpdateApi(data) { + return request({ + url: `autogencode/pmtenanthouserel/update`, + method: 'POST', + data + }) +} + +/** + * pmtenanthouserel详情 + * @param pram + */ +export function pmtentanthouserelDetailApi(id) { + return request({ + url: `autogencode/pmtenanthouserel/info/${id}`, + method: 'GET' + }) +} + +/** + * pmtenanthouserel批量删除 + * @param ids + */ +export function pmtentanthouserelDeleteApi(ids) { + return request({ + url: `autogencode/pmtenanthouserel/delete`, + method: 'POST', + data: ids + }) +} + + +/** + * pmtenanthouserel列表 + * @param pram + */ +export function pmtentanthouserelListApi(params) { + return request({ + url: `autogencode/pmtenanthouserel/list`, + method: 'GET', + params + }) +} diff --git a/admin/src/api/syspost.js b/admin/src/api/syspost.js new file mode 100644 index 0000000..da1a1ee --- /dev/null +++ b/admin/src/api/syspost.js @@ -0,0 +1,63 @@ + +import request from '@/utils/request' + +/** + * 新增syspost + * @param pram + */ +export function syspostCreateApi(data) { + return request({ + url: `autogencode/syspost/save`, + method: 'POST', + data + }) +} + +/** + * syspost更新 + * @param pram + */ +export function syspostUpdateApi(data) { + return request({ + url: `autogencode/syspost/update`, + method: 'POST', + data + }) +} + +/** + * syspost详情 + * @param pram + */ +export function syspostDetailApi(id) { + return request({ + url: `autogencode/syspost/info/${id}`, + method: 'GET' + }) +} + +/** + * syspost批量删除 + * @param ids + */ +export function syspostDeleteApi(ids) { + return request({ + url: `autogencode/syspost/delete`, + method: 'POST', + data: ids + }) +} + + +/** + * syspost列表 + * @param pram + */ +export function syspostListApi(params) { + return request({ + url: `autogencode/syspost/list`, + method: 'GET', + params + }) +} + diff --git a/admin/src/api/systemadmin.js b/admin/src/api/systemadmin.js index 47cfd45..54fa6ff 100644 --- a/admin/src/api/systemadmin.js +++ b/admin/src/api/systemadmin.js @@ -56,7 +56,8 @@ export function adminAdd(pram) { roles: pram.roles.join(','), status: pram.status, phone: pram.phone, - depts: pram.depts + depts: pram.depts, + posts: pram.posts } return request({ url: '/admin/system/admin/save', @@ -76,7 +77,8 @@ export function adminUpdate(pram) { id: pram.id, isDel: pram.isDel, phone: pram.phone, - depts: pram.depts + depts: pram.depts, + posts: pram.posts } return request({ url: '/admin/system/admin/update', diff --git a/admin/src/api/sysuserpost.js b/admin/src/api/sysuserpost.js new file mode 100644 index 0000000..b84e515 --- /dev/null +++ b/admin/src/api/sysuserpost.js @@ -0,0 +1,63 @@ + +import request from '@/utils/request' + +/** + * 新增sysuserpost + * @param pram + */ +export function sysuserpostCreateApi(data) { + return request({ + url: `autogencode/sysuserpost/save`, + method: 'POST', + data + }) +} + +/** + * sysuserpost更新 + * @param pram + */ +export function sysuserpostUpdateApi(data) { + return request({ + url: `autogencode/sysuserpost/update`, + method: 'POST', + data + }) +} + +/** + * sysuserpost详情 + * @param pram + */ +export function sysuserpostDetailApi(id) { + return request({ + url: `autogencode/sysuserpost/info/${id}`, + method: 'GET' + }) +} + +/** + * sysuserpost批量删除 + * @param ids + */ +export function sysuserpostDeleteApi(ids) { + return request({ + url: `autogencode/sysuserpost/delete`, + method: 'POST', + data: ids + }) +} + + +/** + * sysuserpost列表 + * @param pram + */ +export function sysuserpostListApi(params) { + return request({ + url: `autogencode/sysuserpost/list`, + method: 'GET', + params + }) +} + diff --git a/admin/src/views/pm/pmowner/index.vue b/admin/src/views/pm/pmowner/index.vue index 44e9f6b..8a11fb3 100644 --- a/admin/src/views/pm/pmowner/index.vue +++ b/admin/src/views/pm/pmowner/index.vue @@ -1,5 +1,34 @@ + diff --git a/admin/src/views/pm/pmowner/rent-record-add-and-update.vue b/admin/src/views/pm/pmowner/rent-record-add-and-update.vue new file mode 100644 index 0000000..7b3a8ff --- /dev/null +++ b/admin/src/views/pm/pmowner/rent-record-add-and-update.vue @@ -0,0 +1,122 @@ + + + diff --git a/admin/src/views/pm/pmowner/tenant-add-and-update.vue b/admin/src/views/pm/pmowner/tenant-add-and-update.vue new file mode 100644 index 0000000..e4e2790 --- /dev/null +++ b/admin/src/views/pm/pmowner/tenant-add-and-update.vue @@ -0,0 +1,238 @@ + + + + diff --git a/admin/src/views/sys/post/index.vue b/admin/src/views/sys/post/index.vue new file mode 100644 index 0000000..ef2596d --- /dev/null +++ b/admin/src/views/sys/post/index.vue @@ -0,0 +1,236 @@ + + + diff --git a/admin/src/views/sys/post/syspost-add-and-update.vue b/admin/src/views/sys/post/syspost-add-and-update.vue new file mode 100644 index 0000000..a7646a4 --- /dev/null +++ b/admin/src/views/sys/post/syspost-add-and-update.vue @@ -0,0 +1,141 @@ + + + diff --git a/admin/src/views/sys/user/post/index.vue b/admin/src/views/sys/user/post/index.vue new file mode 100644 index 0000000..17a2263 --- /dev/null +++ b/admin/src/views/sys/user/post/index.vue @@ -0,0 +1,258 @@ + + + diff --git a/admin/src/views/sys/user/post/sysuserpost-add-and-update.vue b/admin/src/views/sys/user/post/sysuserpost-add-and-update.vue new file mode 100644 index 0000000..7881f8d --- /dev/null +++ b/admin/src/views/sys/user/post/sysuserpost-add-and-update.vue @@ -0,0 +1,100 @@ + + + diff --git a/admin/src/views/systemSetting/administratorAuthority/adminList/edit.vue b/admin/src/views/systemSetting/administratorAuthority/adminList/edit.vue index e0554ed..31a7f40 100644 --- a/admin/src/views/systemSetting/administratorAuthority/adminList/edit.vue +++ b/admin/src/views/systemSetting/administratorAuthority/adminList/edit.vue @@ -34,12 +34,22 @@ placeholder="请输入手机号" size="large"/> - + + + + @@ -58,10 +68,12 @@ import * as roleApi from '@/api/role.js' import * as systemAdminApi from '@/api/systemadmin.js' import * as deptApi from '@/api/sysdept.js' +import * as postApi from '@/api/syspost.js' +import Treeselect from "@riophae/vue-treeselect"; +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import {Debounce} from '@/utils/validate' export default { - // name: "edit", - components: { }, + components: { Treeselect }, props: { isCreate: { type: Number, @@ -109,10 +121,12 @@ export default { status: null, id: null, phone: null, - depts: [] + depts: [], + posts: [] }, roleList: [], deptTreeOptions: [], + postList: [], savedDepts: null, // 保存从editData获取的部门数据 rules: { account: [{ required: true, message: '请填管理员账号', trigger: ['blur', 'change'] }], @@ -128,6 +142,7 @@ export default { this.initEditData() this.handleGetRoleList() this.handleGetDeptList() + this.handleGetPostList() }, methods: { close() { @@ -135,7 +150,7 @@ export default { }, handleGetRoleList() { const _pram = { - page: 1, + page:1, limit: this.constants.page.limit[4], status: 1 } @@ -153,15 +168,37 @@ export default { handleGetDeptList() { deptApi.deptTreeSelect().then(res => { this.deptTree = res - this.deptTreeOptions = this.flattenDeptTree(res) - + this.deptTreeOptions = res + // 部门数据加载完成后,设置pram.depts if (this.isCreate === 1 && this.savedDepts) { this.setDeptData(this.savedDepts) } }) }, - + handleGetPostList() { + const _pram = { + page: 1, + limit: this.constants.page.limit[4], + status: 0 + } + postApi.syspostListApi(_pram).then(data => { + this.postList = data.list || [] + }) + }, + + // 转换部门数据结构,用于 treeselect + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.deptId ? node.deptId : '0', + label: node.deptName ? node.deptName : '顶级部门', + children: node.children + }; + }, + // 设置部门数据 setDeptData(depts) { const _depts = [] @@ -177,22 +214,12 @@ export default { } this.pram.depts = _depts }, - flattenDeptTree(tree) { - let result = [] - for (let node of tree) { - result.push(node) - if (node.children && node.children.length > 0) { - result = result.concat(this.flattenDeptTree(node.children)) - } - } - return result - }, initEditData() { if (this.isCreate !== 1) return - const { account, realName, roles, level, status, id, phone, depts } = this.editData + const { account, realName, roles, level, status, id, phone, depts, posts } = this.editData this.pram.account = account this.pram.realName = realName - + // 处理角色数据 const _roles = [] if (roles && roles.length > 0 && !roles.includes(',')) { @@ -203,10 +230,29 @@ export default { _roles.push(...roles.split(',').map(item => Number.parseInt(item))) } this.pram.roles = _roles - + // 只保存部门数据,不立即设置到pram.depts this.savedDepts = depts - + + // 处理岗位数据 + if (posts) { + if (Array.isArray(posts)) { + // 如果posts已经是数组,直接使用(保持字符串类型) + this.pram.posts = posts + } else if (typeof posts === 'string') { + // 如果posts是字符串,进行解析 + const _posts = [] + if (posts.length > 0 && !posts.includes(',')) { + _posts.push(posts) + } else if (posts) { + _posts.push(...posts.split(',')) + } + this.pram.posts = _posts + } + } else { + this.pram.posts = [] + } + this.pram.status = status this.pram.id = id this.pram.phone = phone @@ -224,9 +270,10 @@ export default { }) }), handlerSave() { - // 构建包含部门信息的请求数据 + // 构建包含部门信息和岗位信息的请求数据 const requestData = { - ...this.pram + ...this.pram, + posts: this.pram.posts // 直接传递depts数组,不转换为字符串 } systemAdminApi.adminAdd(requestData).then(data => { @@ -235,12 +282,14 @@ export default { }) }, handlerEdit() { - // 构建包含部门信息的请求数据 + // 构建包含部门信息和岗位信息的请求数据 const requestData = { ...this.pram, roles: this.pram.roles.join(','), // adminUpdate需要字符串类型的roles - depts: this.pram.depts // adminUpdate需要数组类型的depts + depts: this.pram.depts, // adminUpdate需要数组类型的depts + posts: this.pram.posts } + console.log(requestData) systemAdminApi.adminUpdate(requestData).then(data => { this.$message.success('更新管理员成功') this.$emit('hideEditDialog') diff --git a/admin/src/views/systemSetting/administratorAuthority/adminList/index.vue b/admin/src/views/systemSetting/administratorAuthority/adminList/index.vue index 16cfea7..e3cc961 100644 --- a/admin/src/views/systemSetting/administratorAuthority/adminList/index.vue +++ b/admin/src/views/systemSetting/administratorAuthority/adminList/index.vue @@ -1,6 +1,35 @@