From 191527f0aa0314a63119a4e862924767314a98fc Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 8 Nov 2024 11:58:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?logo=E3=80=81=E5=85=B3=E9=94=AE=E5=AD=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9=2011.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 2 +- .../assets/loginmini/icon/jeecg_ad_text2.png | Bin 14561 -> 13679 bytes .../assets/loginmini/icon/jeecg_ad_text4.png | Bin 0 -> 15612 bytes .../assets/loginmini/icon/jeecg_ad_text5.png | Bin 0 -> 26339 bytes .../header/components/user-dropdown/index.vue | 2 +- .../src/views/system/loginmini/MiniLogin.vue | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text4.png create mode 100644 jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text5.png diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index a598dd7..6daa6a2 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -1759,7 +1759,7 @@ public class SysUserController { * @return */ @PostMapping("/login/setting/userEdit") - @RequiresPermissions("system:user:setting:edit") +// @RequiresPermissions("system:user:setting:edit") public Result userEdit(@RequestBody SysUser sysUser, HttpServletRequest request) { String username = JwtUtil.getUserNameByToken(request); SysUser user = sysUserService.getById(sysUser.getId()); diff --git a/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text2.png b/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text2.png index 6db45906eaa16b09557b9870f6ed0a089b6c42fe..b7c5b0471d11ee9483e6118bc425bee8ba6fb44e 100644 GIT binary patch delta 11661 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 literal 14561 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 DfaJ^5 diff --git a/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text4.png b/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text4.png new file mode 100644 index 0000000000000000000000000000000000000000..fb29e6a8b359f7cee7b846903b710c2be972b238 GIT binary patch literal 15612 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 literal 0 HcmV?d00001 diff --git a/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text5.png b/jeecgboot-vue3/src/assets/loginmini/icon/jeecg_ad_text5.png new file mode 100644 index 0000000000000000000000000000000000000000..b39bf66d2af087705a0bc1806eea8357b393a5a4 GIT binary patch literal 26339 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�y?;UrsgSOwpCpK_@shMQNZ6i5J;4gLxr^guQ8XCkp^>iR zSW^VCh*n;JMB@9>vNf`Sr>yO7uUnJ(sEfyGj^)o z&)K_s_wKLb1Y)QgXvV<=}ETp{y4h zp8f5o&PzIc1+HObAMJ)Ui3KzpENxp*qGG?Vr=Bdi;rQ;kjN3z^Kz@Ge#>xl zkJSy(Q#f!#8R+8c*Ai&$hPbr|QTR6}$j@Wf|EM{~Ej1*ngO_&q&Ye59QwN+(AFXAd zDbK0TI!v|#fWNW}r`?G8HlSfl|Bs6(0IGwYAwIk&d={&x`Rw)POfrHMI0C}02RqbR z(oSY*1;%H^mY09qoDe->wMh16zd$I&bvjL$^{*lxkO-|M73a zxr9Cc=kmBz?2XrhzI>E#cafrjRu&iA&RY+qKt9u&ibZiVPpz)aDvYQ;gnM>z329S2 zsGKfmHXjwPfJS>{dU_fii{xD@kAb*Mcf?bbyuSTm?er}iTSShvloD$560{&y=~H9l z6@fm?P=ZlNql~WKfvrym7eZuh?aH$S>TMRSvR@m9kV~{moWuR$^HUp^ncA;$OASxrfP+PWprs#FOXQP^MhJr}xofB4-dRnP)w$p9@oDjWGYp^qi z{KSWF4!UVoP$~n#4-ag$x{gQ&TJa3e*)|u>?Yr9BkFf^mp|sMKc$hwhcDyKdGk)5D z5Tz$yJtYkNb@v4M*RQ)tg@x s>Q&Gux&4*=v38pZ-3;OSV2MDjEJnWb``^rCGK? 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%0D|NRRZDSd}H<(ddmvvz(yV$j?YJ1hs@Ve zbzHP3YjEy@+(+yYx=<*jT^xPgPTo|^o2{)@^*(qmf^ag*z~l7vSno7(!B#;<1;h4t zcI0<31M=XAgZUMpFH4l#^071fG_&VcC&;NyyZj%h@z|)C4^?CSf=~wClmUTGFWkDS z$FUd;Z&%Q;=mFEe%p4V%#h(=nOr^=1jLDSk4TzR^!c+=T$A{D}R6g0YA;rjKTC zeQpQr8NUvS?$xgl&b(E`zV?>M+asSfv{_~+b&|PmCG`4{{ey3{DbfNXx7fE|vFTTb zBAP+Mek2I<{!CC>jkG!G%?n1~moHxc?vk?Ce+|J(J=LYTt|PKH4?Q>!+U5A_!>OJ&J3k5R3N25Qd48EtwD@LJiEC|Ix&o8 zVw2PEyI;AfZfh#5A}b^`Nva_e8zh&=M$XJ#1Q&NgYt?J`IicJnc&=_2Hw~6QJMcHo zN~-Dh4jm{+QUCV7m76$oy}=(WNg(f0{g@e6>(D@;05l<)R&u7?@vG)UFkdO^?%GVJ z;??1KU(PbP*`94FM01mnHU@@lw#;0h_rx+gFt;D-d->yFhuD>uQ6wi zeO20gp=Sj%(tY;oXmDNq`nxQRjUiv#l{f`1$O-JK!pDTGTyOe(ah*oYy})&RH)!)0 zMns6`q~O1zfxAT0)YL3r*IQ^C1m=I7wuZKh7g{*pJzx}PQ#R8&Iyy=V`(w5b>5)@x zyk}y!V3Py3rVH#^g(HrKZrFcp0bxW1JJkgulkJTcjy^TzmpP6im!9FQ=N?!;JLL|Q zJQKIi$5j#<*`27D%pF@c$XMyF+>)uW0Tavu1P5zxD6{Z!=S$Dq2eM0{UpBq}@K=6% z%}nwEX3}8K0e(JQi_{T;z0%p^;HW&y}vb;>C-cK zwRu7um>n%LMKA&>3)LTSE#g+(u2;+j>M#V`)6jLu_S`{;=T)tufnckXqi@(Yfw+`d zhF}>AgRMD54ZjJ?f}*F-<%hjuPBIOw!_(8sA9qYl^NjM#Y&lFiEj3Ubdez=#IvqmJ z#+$VdA4abvZWBu^b3iSx^FTl7%vIz~3SzMr<|LAAWUgKQo$xNnz@t&21fS8kWlz%$ z`;j`VgLU6b^2EQ;EAYT<^Jh2q8#v=Wa2X%xd16;)A{Iebdpa#^5-YiMJtANe44k6%~6#E#&eXx@q7M z>Mv+-?k?C_<8oovzzwy*yX9$A#m{7JHN_2N#CHaGI9{enoZC)RPmBLWUy`77N}ozQ2;16#THBMo}=`~hb)^yn9Uw^#+Px<{#cvUMf)BPy;6*pbQd z`&+@nCnQ<8Q`-&O{~7Q^Q_UQG&f@RUqOH<$s-hkL z9&qX>IW?uSP5(>>TP3fo`g7*L1{5xnPPpD9_xEVgZW7O>emL4|Ny%nQuPgsd2Lr_4 zFZtnUBnb(^ee}Nn94|avZ2X7GB+=sH#fO#Dzn_qK__rS>lc0r*bw89@{r!y97XSV4 fpU;2)+n3lmHtAF;+m#I$otX9hgZt=vPeuM4_4kz+ literal 0 HcmV?d00001 diff --git a/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/index.vue b/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/index.vue index 7794649..5d0feeb 100644 --- a/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/index.vue +++ b/jeecgboot-vue3/src/layouts/default/header/components/user-dropdown/index.vue @@ -13,7 +13,7 @@ - + diff --git a/jeecgboot-vue3/src/views/system/loginmini/MiniLogin.vue b/jeecgboot-vue3/src/views/system/loginmini/MiniLogin.vue index c98c1fa..b29caed 100644 --- a/jeecgboot-vue3/src/views/system/loginmini/MiniLogin.vue +++ b/jeecgboot-vue3/src/views/system/loginmini/MiniLogin.vue @@ -177,7 +177,7 @@ import MiniForgotpad from './MiniForgotpad.vue'; import MiniRegister from './MiniRegister.vue'; import MiniCodelogin from './MiniCodelogin.vue'; - import logoImg from '/@/assets/loginmini/icon/jeecg_ad_text3.png'; + import logoImg from '/@/assets/loginmini/icon/jeecg_ad_text2.png'; // import adTextImg from '/@/assets/loginmini/icon/jeecg_ad_text.png'; import { AppLocalePicker, AppDarkModeToggle } from '/@/components/Application'; import { useLocaleStore } from '/@/store/modules/locale'; From 103dd9a0862dd3782f134062a127efee149dd752 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854@qq.com> Date: Fri, 8 Nov 2024 15:30:15 +0800 Subject: [PATCH 2/4] =?UTF-8?q?logo=E3=80=81=E5=85=B3=E9=94=AE=E5=AD=97?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9=2011.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 20 + .../src/views/declarant/user.data.ts | 5 +- .../views/system/kejijuuser/PasswordModal.vue | 42 ++ .../system/kejijuuser/UserAgentModal.vue | 45 ++ .../views/system/kejijuuser/UserDrawer.vue | 178 ++++++ .../system/kejijuuser/UserQuitAgentModal.vue | 81 +++ .../views/system/kejijuuser/UserQuitModal.vue | 110 ++++ .../system/kejijuuser/UserRecycleBinModal.vue | 166 +++++ .../src/views/system/kejijuuser/index.vue | 301 +++++++++ .../src/views/system/kejijuuser/user.api.ts | 254 ++++++++ .../src/views/system/kejijuuser/user.data.ts | 569 ++++++++++++++++++ .../views/system/kejijuuser/userDetails.vue | 54 ++ 12 files changed, 1823 insertions(+), 2 deletions(-) create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/PasswordModal.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/UserAgentModal.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/UserDrawer.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/UserQuitAgentModal.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/UserQuitModal.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/UserRecycleBinModal.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/index.vue create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/user.api.ts create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/user.data.ts create mode 100644 jeecgboot-vue3/src/views/system/kejijuuser/userDetails.vue diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 6daa6a2..1ac5577 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -163,6 +163,26 @@ public class SysUserController { return sysUserService.queryPageList(req, queryWrapper, pageSize, pageNo); } + /** + * @description: 根据用户角色查询下属用户 + * @param: [user, pageNo, pageSize, req] + * @return: org.jeecg.common.api.vo.Result> + * @author: z.h.c + * @date: 24/11/8 15:19 + */ +// @RequiresPermissions("system:user:listAll") + @RequestMapping(value = "/listByRollCode", method = RequestMethod.GET) + public Result> listByRollCode(SysUser user, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap()); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// SysDepart sysDepart = sysDepartService.getById(loginUser.getOrgId()); + + queryWrapper.likeRight("org_code", loginUser.getOrgCode()); + return sysUserService.queryPageList(req, queryWrapper, pageSize, pageNo); + } + /** * @description: 根据用户权限查询申报人列表 * @param: [user, pageNo, pageSize, req] diff --git a/jeecgboot-vue3/src/views/declarant/user.data.ts b/jeecgboot-vue3/src/views/declarant/user.data.ts index ede01ad..3a80a8b 100644 --- a/jeecgboot-vue3/src/views/declarant/user.data.ts +++ b/jeecgboot-vue3/src/views/declarant/user.data.ts @@ -40,7 +40,7 @@ export const columns: BasicColumn[] = [ width: 100, }, { - title: '部门', + title: '单位', width: 150, dataIndex: 'orgCodeTxt', }, @@ -51,7 +51,8 @@ export const columns: BasicColumn[] = [ // }, { title: '状态', - dataIndex: 'orgCategory_dictText', + // dataIndex: 'orgCategory_dictText', + dataIndex: 'status_dictText', width: 80, }, ]; diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/PasswordModal.vue b/jeecgboot-vue3/src/views/system/kejijuuser/PasswordModal.vue new file mode 100644 index 0000000..d638c86 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/PasswordModal.vue @@ -0,0 +1,42 @@ + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/UserAgentModal.vue b/jeecgboot-vue3/src/views/system/kejijuuser/UserAgentModal.vue new file mode 100644 index 0000000..4f3c50d --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/UserAgentModal.vue @@ -0,0 +1,45 @@ + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/UserDrawer.vue b/jeecgboot-vue3/src/views/system/kejijuuser/UserDrawer.vue new file mode 100644 index 0000000..a4aa708 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/UserDrawer.vue @@ -0,0 +1,178 @@ + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitAgentModal.vue b/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitAgentModal.vue new file mode 100644 index 0000000..a1bc4d3 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitAgentModal.vue @@ -0,0 +1,81 @@ + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitModal.vue b/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitModal.vue new file mode 100644 index 0000000..7822269 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/UserQuitModal.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/UserRecycleBinModal.vue b/jeecgboot-vue3/src/views/system/kejijuuser/UserRecycleBinModal.vue new file mode 100644 index 0000000..7b709f1 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/UserRecycleBinModal.vue @@ -0,0 +1,166 @@ + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/index.vue b/jeecgboot-vue3/src/views/system/kejijuuser/index.vue new file mode 100644 index 0000000..b8150bc --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/index.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/user.api.ts b/jeecgboot-vue3/src/views/system/kejijuuser/user.api.ts new file mode 100644 index 0000000..fea5d59 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/user.api.ts @@ -0,0 +1,254 @@ +import { defHttp } from '/@/utils/http/axios'; +import { Modal } from 'ant-design-vue'; +import { isObject } from '/@/utils/is'; +enum Api { + listNoCareTenant = '/sys/user/listAll', + + // 根据用户角色查询所属用户 add by zhc 11.08 + listByRollCode = '/sys/user/listByRollCode', + list = '/sys/user/list', + save = '/sys/user/add', + edit = '/sys/user/edit', + agentSave = '/sys/sysUserAgent/add', + agentEdit = '/sys/sysUserAgent/edit', + getUserRole = '/sys/user/queryUserRole', + duplicateCheck = '/sys/duplicate/check', + deleteUser = '/sys/user/delete', + deleteBatch = '/sys/user/deleteBatch', + importExcel = '/sys/user/importExcel', + exportXls = '/sys/user/exportXls', + recycleBinList = '/sys/user/recycleBin', + putRecycleBin = '/sys/user/putRecycleBin', + deleteRecycleBin = '/sys/user/deleteRecycleBin', + allRolesList = '/sys/role/queryall', + allRolesListNoByTenant = '/sys/role/queryallNoByTenant', + allTenantList = '/sys/tenant/queryList', + allPostList = '/sys/position/list', + userDepartList = '/sys/user/userDepartList', + changePassword = '/sys/user/changePassword', + frozenBatch = '/sys/user/frozenBatch', + getUserAgent = '/sys/sysUserAgent/queryByUserName', + userQuitAgent = '/sys/user/userQuitAgent', + getQuitList = '/sys/user/getQuitList', + putCancelQuit = '/sys/user/putCancelQuit', + updateUserTenantStatus='/sys/tenant/updateUserTenantStatus', + getUserTenantPageList='/sys/tenant/getUserTenantPageList', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口(查询用户,通过租户隔离) + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 列表接口(查询全部用户,不通过租户隔离) + * @param params + */ +export const listNoCareTenant = (params) => defHttp.get({ url: Api.listByRollCode, params }); + +/** + * 用户角色接口 + * @param params + */ +export const getUserRoles = (params) => defHttp.get({ url: Api.getUserRole, params }, { errorMessageMode: 'none' }); + +/** + * 删除用户 + */ +export const deleteUser = (params, handleSuccess) => { + return defHttp.delete({ url: Api.deleteUser, params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); +}; +/** + * 批量删除用户 + * @param params + */ +export const batchDeleteUser = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); + }, + }); +}; +/** + * 保存或者更新用户 + * @param params + */ +export const saveOrUpdateUser = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }); +}; +/** + * 唯一校验 + * @param params + */ +export const duplicateCheck = (params) => defHttp.get({ url: Api.duplicateCheck, params }, { isTransformResponse: false }); + +/** + * 20231215 + * liaozhiyang + * 唯一校验( 延迟【防抖】) + * @param params + */ +const timer = {}; +export const duplicateCheckDelay = (params) => { + return new Promise((resove, rejected) => { + // -update-begin--author:liaozhiyang---date:20240619---for:【TV360X-1380】表单中使用多个duplicateCheckDelay,validate方法调用时会导致promise被挂起保存不了 + let key; + if (isObject(params)) { + key = `${params.tableName}_${params.fieldName}`; + } else { + key = params; + } + clearTimeout(timer[key]); + // -update-end--author:liaozhiyang---date:20240619---for:【TV360X-1380】表单中使用多个duplicateCheckDelay,validate方法调用时会导致promise被挂起保存不了 + timer[key] = setTimeout(() => { + defHttp + .get({ url: Api.duplicateCheck, params }, { isTransformResponse: false }) + .then((res: any) => { + resove(res as any); + }) + .catch((error) => { + rejected(error); + }); + delete timer[key]; + }, 500); + }); +}; +/** + * 获取全部角色(租户隔离) + * @param params + */ +export const getAllRolesList = (params) => defHttp.get({ url: Api.allRolesList, params }); +/** + * 获取全部角色(不租户隔离) + * @param params + */ +export const getAllRolesListNoByTenant = (params) => defHttp.get({ url: Api.allRolesListNoByTenant, params }); +/** + * 获取全部租户 + */ +export const getAllTenantList = (params) => defHttp.get({ url: Api.allTenantList, params }); +/** + * 获取指定用户负责部门 + */ +export const getUserDepartList = (params) => defHttp.get({ url: Api.userDepartList, params }, { successMessageMode: 'none' }); +/** + * 获取全部职务 + */ +export const getAllPostList = (params) => { + return new Promise((resolve) => { + defHttp.get({ url: Api.allPostList, params }).then((res) => { + resolve(res.records); + }); + }); +}; +/** + * 回收站列表 + * @param params + */ +export const getRecycleBinList = (params) => defHttp.get({ url: Api.recycleBinList, params }); +/** + * 回收站还原 + * @param params + */ +export const putRecycleBin = (params, handleSuccess) => { + return defHttp.put({ url: Api.putRecycleBin, params }).then(() => { + handleSuccess(); + }); +}; +/** + * 回收站删除 + * @param params + */ +export const deleteRecycleBin = (params, handleSuccess) => { + return defHttp.delete({ url: Api.deleteRecycleBin, params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); +}; +/** + * 修改密码 + * @param params + */ +export const changePassword = (params) => { + return defHttp.put({ url: Api.changePassword, params }); +}; +/** + * 冻结解冻 + * @param params + */ +export const frozenBatch = (params, handleSuccess) => { + return defHttp.put({ url: Api.frozenBatch, params }).then(() => { + handleSuccess(); + }); +}; +/** + * 获取用户代理 + * @param params + */ +export const getUserAgent = (params) => defHttp.get({ url: Api.getUserAgent, params }, { isTransformResponse: false }); +/** + * 保存或者更新用户代理 + * @param params + */ +export const saveOrUpdateAgent = (params) => { + let url = params.id ? Api.agentEdit : Api.agentSave; + return defHttp.post({ url: url, params }); +}; + +/** + * 用户离职(新增代理人和用户状态变更操作) + * @param params + */ +export const userQuitAgent = (params) => { + return defHttp.put({ url: Api.userQuitAgent, params }); +}; + +/** + * 用户离职列表 + * @param params + */ +export const getQuitList = (params) => { + return defHttp.get({ url: Api.getQuitList, params }); +}; + +/** + * 取消离职 + * @param params + */ +export const putCancelQuit = (params, handleSuccess) => { + return defHttp.put({ url: Api.putCancelQuit, params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); +}; + +/** + * 待审批获取列表数据 + */ +export const getUserTenantPageList = (params) => { + return defHttp.get({ url: Api.getUserTenantPageList, params }); +}; + +/** + * 更新租户状态 + * @param params + */ +export const updateUserTenantStatus = (params) => { + return defHttp.put({ url: Api.updateUserTenantStatus, params }, { joinParamsToUrl: true, isTransformResponse: false }); +}; diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/user.data.ts b/jeecgboot-vue3/src/views/system/kejijuuser/user.data.ts new file mode 100644 index 0000000..9ec1313 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/user.data.ts @@ -0,0 +1,569 @@ +import { BasicColumn } from '/@/components/Table'; +import { FormSchema } from '/@/components/Table'; +import { getAllRolesListNoByTenant, getAllTenantList } from './user.api'; +import { rules } from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +export const columns: BasicColumn[] = [ + { + title: '用户账号', + dataIndex: 'username', + width: 120, + }, + { + title: '用户姓名', + dataIndex: 'realname', + width: 100, + }, + { + title: '头像', + dataIndex: 'avatar', + width: 120, + customRender: render.renderAvatar, + }, + { + title: '性别', + dataIndex: 'sex', + width: 80, + sorter: true, + customRender: ({ text }) => { + return render.renderDict(text, 'sex'); + }, + }, + /*{ + title: '生日', + dataIndex: 'birthday', + width: 100, + },*/ + { + title: '手机号', + dataIndex: 'phone', + width: 100, + }, + { + title: '部门', + width: 150, + dataIndex: 'orgCodeTxt', + }, + /*{ + title: '负责部门', + width: 150, + dataIndex: 'departIds_dictText', + },*/ + { + title: '状态', + dataIndex: 'status_dictText', + width: 80, + }, +]; + +export const recycleColumns: BasicColumn[] = [ + { + title: '用户账号', + dataIndex: 'username', + width: 100, + }, + { + title: '用户姓名', + dataIndex: 'realname', + width: 100, + }, + { + title: '头像', + dataIndex: 'avatar', + width: 80, + customRender: render.renderAvatar, + }, + { + title: '性别', + dataIndex: 'sex', + width: 80, + sorter: true, + customRender: ({ text }) => { + return render.renderDict(text, 'sex'); + }, + }, +]; + +export const searchFormSchema: FormSchema[] = [ + { + label: '账号', + field: 'username', + component: 'JInput', + //colProps: { span: 6 }, + }, + { + label: '名字', + field: 'realname', + component: 'JInput', + //colProps: { span: 6 }, + }, + { + label: '性别', + field: 'sex', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'sex', + placeholder: '请选择性别', + stringToNumber: true, + }, + //colProps: { span: 6 }, + }, + { + label: '手机号码', + field: 'phone', + component: 'Input', + //colProps: { span: 6 }, + }, + { + label: '用户状态', + field: 'status', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'user_status', + placeholder: '请选择状态', + stringToNumber: true, + }, + //colProps: { span: 6 }, + }, +]; + +export const formSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, + { + label: '用户账号', + field: 'username', + component: 'Input', + required: true, + dynamicDisabled: ({ values }) => { + return !!values.id; + }, + dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'username', model, schema, true), + }, + { + label: '登录密码', + field: 'password', + component: 'StrengthMeter', + componentProps:{ + autocomplete: 'new-password', + }, + rules: [ + { + required: true, + message: '请输入登录密码', + }, + { + pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + message: '密码由8位数字、大小写字母和特殊符号组成!', + }, + ], + }, + { + label: '确认密码', + field: 'confirmPassword', + component: 'InputPassword', + dynamicRules: ({ values }) => rules.confirmPassword(values, true), + }, + { + label: '用户姓名', + field: 'realname', + required: true, + component: 'Input', + }, + /*{ + label: '工号', + field: 'workNo', + required: true, + component: 'Input', + dynamicRules: ({ model, schema }) => rules.duplicateCheckRule('sys_user', 'work_no', model, schema, true), + }, + { + label: '职务', + field: 'post', + required: false, + component: 'JSelectPosition', + componentProps: { + labelKey: 'name', + }, + },*/ + { + label: '角色', + field: 'selectedroles', + component: 'ApiSelect', + componentProps: { + mode: 'multiple', + api: getAllRolesListNoByTenant, + labelField: 'roleName', + valueField: 'id', + immediate: false, + }, + }, + { + label: '所属部门', + field: 'selecteddeparts', + component: 'JSelectDept', + componentProps: ({ formActionType, formModel }) => { + return { + sync: false, + checkStrictly: true, + defaultExpandLevel: 2, + + onSelect: (options, values) => { + const { updateSchema } = formActionType; + //所属部门修改后更新负责部门下拉框数据 + updateSchema([ + { + field: 'departIds', + componentProps: { options }, + }, + ]); + //update-begin---author:wangshuai---date:2024-05-11---for:【issues/1222】用户编辑界面“所属部门”与“负责部门”联动出错整--- + if(!values){ + formModel.departIds = []; + return; + } + //update-end---author:wangshuai---date:2024-05-11---for:【issues/1222】用户编辑界面“所属部门”与“负责部门”联动出错整--- + //所属部门修改后更新负责部门数据 + formModel.departIds && (formModel.departIds = formModel.departIds.filter((item) => values.value.indexOf(item) > -1)); + }, + }; + }, + }, + /*{ + label: '租户', + field: 'relTenantIds', + component: 'ApiSelect', + componentProps: { + mode: 'multiple', + api: getAllTenantList, + numberToString: true, + labelField: 'name', + valueField: 'id', + immediate: false, + }, + }, + { + label: '身份', + field: 'userIdentity', + component: 'RadioGroup', + defaultValue: 1, + componentProps: ({ formModel }) => { + return { + options: [ + { label: '普通用户', value: 1, key: '1' }, + { label: '上级', value: 2, key: '2' }, + ], + onChange: () => { + formModel.userIdentity == 1 && (formModel.departIds = []); + }, + }; + }, + },*/ + { + label: '负责部门', + field: 'departIds', + component: 'Select', + componentProps: { + mode: 'multiple', + }, + ifShow: ({ values }) => values.userIdentity == 2, + }, + { + label: '头像', + field: 'avatar', + component: 'JImageUpload', + componentProps: { + fileMax: 1, + }, + }, + { + label: '生日', + field: 'birthday', + component: 'DatePicker', + }, + { + label: '性别', + field: 'sex', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'sex', + placeholder: '请选择性别', + stringToNumber: true, + }, + }, + { + label: '邮箱', + field: 'email', + component: 'Input', + required: true, + dynamicRules: ({ model, schema }) => { + return [ + { ...rules.duplicateCheckRule('sys_user', 'email', model, schema, true)[0], trigger: 'blur' }, + { ...rules.rule('email', false)[0], trigger: 'blur' }, + ]; + }, + }, + { + label: '手机号码', + field: 'phone', + component: 'Input', + required: true, + dynamicRules: ({ model, schema }) => { + return [ + { ...rules.duplicateCheckRule('sys_user', 'phone', model, schema, true)[0], trigger: 'blur' }, + { pattern: /^1[3456789]\d{9}$/, message: '手机号码格式有误', trigger: 'blur' }, + ]; + }, + }, + /* { + label: '座机', + field: 'telephone', + component: 'Input', + rules: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }], + }, + { + label: '工作流引擎', + field: 'activitiSync', + defaultValue: 1, + component: 'JDictSelectTag', + componentProps: { + dictCode: 'activiti_sync', + type: 'radio', + stringToNumber: true, + }, + },*/ +]; + +export const formPasswordSchema: FormSchema[] = [ + { + label: '用户账号', + field: 'username', + component: 'Input', + componentProps: { readOnly: true }, + }, + { + label: '登录密码', + field: 'password', + component: 'StrengthMeter', + componentProps: { + placeholder: '请输入登录密码', + }, + rules: [ + { + required: true, + message: '请输入登录密码', + }, + { + pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + message: '密码由8位数字、大小写字母和特殊符号组成!', + }, + ], + }, + { + label: '确认密码', + field: 'confirmPassword', + component: 'InputPassword', + dynamicRules: ({ values }) => rules.confirmPassword(values, true), + }, +]; + +export const formAgentSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, + { + field: 'userName', + label: '用户名', + component: 'Input', + componentProps: { + readOnly: true, + allowClear: false, + }, + }, + { + field: 'agentUserName', + label: '代理人用户名', + required: true, + component: 'JSelectUser', + componentProps: { + rowKey: 'username', + labelKey: 'realname', + maxSelectCount: 10, + }, + }, + { + field: 'startTime', + label: '代理开始时间', + component: 'DatePicker', + required: true, + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + placeholder: '请选择代理开始时间', + getPopupContainer: () => document.body, + }, + }, + { + field: 'endTime', + label: '代理结束时间', + component: 'DatePicker', + required: true, + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + placeholder: '请选择代理结束时间', + getPopupContainer: () => document.body, + }, + }, + { + field: 'status', + label: '状态', + component: 'JDictSelectTag', + defaultValue: '1', + componentProps: { + dictCode: 'valid_status', + type: 'radioButton', + }, + }, +]; + +export const formQuitAgentSchema: FormSchema[] = [ + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, + { + field: 'userName', + label: '用户名', + component: 'Input', + componentProps: { + readOnly: true, + allowClear: false, + }, + }, + { + field: 'agentUserName', + label: '交接人员', + //required: true, + component: 'JSelectUser', + componentProps: { + rowKey: 'username', + labelKey: 'realname', + maxSelectCount: 1, + }, + }, + { + field: 'startTime', + label: '交接开始时间', + component: 'DatePicker', + //required: true, + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + placeholder: '请选择交接开始时间', + getPopupContainer: () => document.body, + }, + }, + { + field: 'endTime', + label: '交接结束时间', + component: 'DatePicker', + //required: true, + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss', + placeholder: '请选择交接结束时间', + getPopupContainer: () => document.body, + }, + }, + { + field: 'status', + label: '状态', + component: 'JDictSelectTag', + defaultValue: '1', + componentProps: { + dictCode: 'valid_status', + type: 'radioButton', + }, + }, +]; + +//租户用户列表 +export const userTenantColumns: BasicColumn[] = [ + { + title: '用户账号', + dataIndex: 'username', + width: 120, + }, + { + title: '用户姓名', + dataIndex: 'realname', + width: 100, + }, + { + title: '头像', + dataIndex: 'avatar', + width: 120, + customRender: render.renderAvatar, + }, + { + title: '手机号', + dataIndex: 'phone', + width: 100, + }, + { + title: '部门', + width: 150, + dataIndex: 'orgCodeTxt', + }, + { + title: '状态', + dataIndex: 'status', + width: 80, + customRender: ({ text }) => { + if (text === '1') { + return '正常'; + } else if (text === '3') { + return '审批中'; + } else { + return '已拒绝'; + } + }, + }, +]; + +//用户租户搜索表单 +export const userTenantFormSchema: FormSchema[] = [ + { + label: '账号', + field: 'username', + component: 'Input', + colProps: { span: 6 }, + }, + { + label: '名字', + field: 'realname', + component: 'Input', + colProps: { span: 6 }, + }, + { + label: '性别', + field: 'sex', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'sex', + placeholder: '请选择性别', + stringToNumber: true, + }, + colProps: { span: 6 }, + }, +]; diff --git a/jeecgboot-vue3/src/views/system/kejijuuser/userDetails.vue b/jeecgboot-vue3/src/views/system/kejijuuser/userDetails.vue new file mode 100644 index 0000000..c0a8cd4 --- /dev/null +++ b/jeecgboot-vue3/src/views/system/kejijuuser/userDetails.vue @@ -0,0 +1,54 @@ + + From e3330f7dae492d71b48fa423ded6a20c61197115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=AE=B6=E4=B8=9C?= <1654135867@qq.com> Date: Fri, 8 Nov 2024 15:40:11 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=B8=93=E5=AE=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../expert/controller/ExpertController.java | 37 ++++++++++ .../modules/demo/expert/entity/ExpdefVo.java | 9 +++ .../modules/demo/expert/entity/Expert.java | 1 + .../workbench/components/DynamicInfo.vue | 23 ++++-- .../workbench/components/ProjectCard.vue | 73 +++++++++++++++---- .../workbench/components/QuickNav.vue | 4 +- .../workbench/components/SaleRadar.vue | 4 +- .../workbench/components/WorkbenchHeader.vue | 14 ---- .../dashboard/workbench/components/api.ts | 27 +++++++ .../expert/admin/components/ExpertForm.vue | 9 ++- .../adminback/components/ExpertForm.vue | 10 ++- .../expert/county/components/ExpertForm.vue | 9 ++- .../expert/firm/components/ExpertForm.vue | 10 ++- .../expert/self/components/ExpertForm.vue | 8 +- 14 files changed, 191 insertions(+), 47 deletions(-) create mode 100644 jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpdefVo.java create mode 100644 jeecgboot-vue3/src/views/dashboard/workbench/components/api.ts diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java index d219ff0..3d6cf8d 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/controller/ExpertController.java @@ -20,6 +20,7 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.demo.disciplinefieid.entity.DisciplineFieid; import org.jeecg.modules.demo.disciplinefieid.service.IDisciplineFieidService; import org.jeecg.modules.demo.expert.entity.ExpCmsVo; +import org.jeecg.modules.demo.expert.entity.ExpdefVo; import org.jeecg.modules.demo.expert.entity.Expert; import org.jeecg.modules.demo.expert.service.IExpertService; @@ -739,4 +740,40 @@ public class ExpertController extends JeecgController { expCmsVo.setRealname(sysUser.getRealname()); return Result.OK(expCmsVo); } + @ApiOperation(value="管理员专家数据---专家总数", notes="管理员专家数据---专家总数") + @GetMapping(value = "/expdatanumber") + public Result expdatanumber() { + List expertList = expertService.list(); + return Result.OK(expertList.size()); + } + + @ApiOperation(value="管理员专家数据---正常专家数", notes="管理员专家数据---正常专家数") + @GetMapping(value = "/expdatanumberzc") + public Result expdatanumberzc() { + List expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","N").list(); + return Result.OK(expertList.size()); + } + + @ApiOperation(value="管理员专家数据---异常专家数", notes="管理员专家数据---异常专家数") + @GetMapping(value = "/expdatanumberyc") + public Result expdatanumberyc() { + List expertList = expertService.query().eq("adminopen","2").eq("compopen","2").eq("expsture","Y").list(); + return Result.OK(expertList.size()); + } + + @ApiOperation(value="管理员专家数据---不同的领域专家数", notes="管理员专家数据---不同的领域专家数") + @GetMapping(value = "/expdatanumberdiffect") + public Result> expdatanumberdiffect() { + List expdefVoList = new ArrayList<>(); + List disciplineFieidList = disciplineFieidService.list(); + for (int i=0;i expertList = expertService.query().eq("compopen","2").eq("adminopen","2").eq("directioncal",disciplineFieidList.get(i).getId()).list(); + expdefVo.setName(disciplineFieidList.get(i).getName()); + expdefVo.setNumber(expertList.size()); + expdefVoList.add(expdefVo); + } + return Result.OK(expdefVoList); + } + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpdefVo.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpdefVo.java new file mode 100644 index 0000000..f613479 --- /dev/null +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/ExpdefVo.java @@ -0,0 +1,9 @@ +package org.jeecg.modules.demo.expert.entity; + +import lombok.Data; + +@Data +public class ExpdefVo { + private String name; + private Integer number; +} diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/Expert.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/Expert.java index 16b8a8e..0391aa9 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/Expert.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/expert/entity/Expert.java @@ -120,6 +120,7 @@ public class Expert implements Serializable { private java.lang.String expsture; /**异常备注*/ @Excel(name = "异常备注", width = 15) + @Dict(dicCode = "yczt") @ApiModelProperty(value = "异常备注") private java.lang.String errinfo; diff --git a/jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue b/jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue index 4be8f1f..eb187f2 100644 --- a/jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue +++ b/jeecgboot-vue3/src/views/dashboard/workbench/components/DynamicInfo.vue @@ -1,14 +1,14 @@