@nocobase/plugin-departments 2.1.0-beta.9 → 2.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-v2.d.ts +2 -0
- package/client-v2.js +1 -0
- package/dist/client/collections/departments.d.ts +34 -0
- package/dist/client/index.js +1 -1
- package/dist/client/roles/schemas/departments.d.ts +1 -0
- package/dist/client-v2/32.556fc9327d272987.js +10 -0
- package/dist/client-v2/936.219d07552527a06e.js +10 -0
- package/dist/client-v2/api.d.ts +41 -0
- package/dist/client-v2/index.d.ts +9 -0
- package/dist/client-v2/index.js +10 -0
- package/dist/client-v2/locale.d.ts +10 -0
- package/dist/client-v2/pages/DepartmentsPage.d.ts +11 -0
- package/dist/client-v2/pages/RoleDepartmentsManager.d.ts +11 -0
- package/dist/client-v2/plugin.d.ts +14 -0
- package/dist/client-v2/shared/department.d.ts +38 -0
- package/dist/externalVersion.js +15 -11
- package/dist/locale/en-US.json +16 -2
- package/dist/locale/zh-CN.json +16 -2
- package/dist/locale/zh-TW.json +6 -1
- package/dist/server/actions/users.d.ts +0 -1
- package/dist/server/actions/users.js +2 -31
- package/dist/server/collections/departmentRoles.js +1 -0
- package/dist/server/collections/departments.d.ts +12 -0
- package/dist/server/collections/departments.js +18 -2
- package/dist/server/collections/departmentsUsers.js +1 -0
- package/dist/server/collections/users.js +1 -1
- package/dist/server/department-data-sync-resource.d.ts +2 -0
- package/dist/server/department-data-sync-resource.js +42 -2
- package/dist/server/middlewares/set-main-department.js +26 -62
- package/dist/server/migrations/20260417120000-add-parent-id-field.d.ts +13 -0
- package/dist/server/migrations/20260417120000-add-parent-id-field.js +57 -0
- package/dist/server/plugin.js +10 -6
- package/dist/server/sync-user-main-department.d.ts +19 -0
- package/dist/server/sync-user-main-department.js +74 -0
- package/package.json +6 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_departments_client_v2=self.webpackChunk_nocobase_plugin_departments_client_v2||[]).push([["32"],{3:function(e,t,n){n.r(t),n.d(t,{default:function(){return H}});var r=n(375),a=n(485),l=n(694),o=n(477),i=n(625),u=n(59),c=n(155),s=n.n(c);function d(e,t,n,r,a,l,o){try{var i=e[l](o),u=i.value}catch(e){n(e);return}i.done?t(u):Promise.resolve(u).then(r,a)}function m(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var l=e.apply(t,n);function o(e){d(l,r,a,o,i,"next",e)}function i(e){d(l,r,a,o,i,"throw",e)}o(void 0)})}}function f(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:u(0)}),i(o,"throw",{value:u(1)}),i(o,"return",{value:u(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function u(i){return function(u){var c=[i,u];if(n)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function p(e){var t,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({title:e.title,parentId:null!=(t=e.parentId)?t:null,roles:(e.roleNames||[]).map(function(e){return{name:e}})},n?{owners:(e.ownerIds||[]).map(function(e){return{id:e}})}:{})}var h=n(488),b=n(836);function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t,n,r,a,l,o){try{var i=e[l](o),u=i.value}catch(e){n(e);return}i.done?t(u):Promise.resolve(u).then(r,a)}function g(e){return function(){var t=this,n=arguments;return new Promise(function(r,a){var l=e.apply(t,n);function o(e){v(l,r,a,o,i,"next",e)}function i(e){v(l,r,a,o,i,"throw",e)}o(void 0)})}}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function E(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function S(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var l=[],o=!0,i=!1;try{for(a=a.call(e);!(o=(n=a.next()).done)&&(l.push(n.value),!t||l.length!==t);o=!0);}catch(e){i=!0,r=e}finally{try{o||null==a.return||a.return()}finally{if(i)throw r}}return l}}(e,t)||C(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function O(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||C(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function C(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return y(e,t)}}function j(e,t){var n,r,a,l={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(o,"next",{value:u(0)}),i(o,"throw",{value:u(1)}),i(o,"return",{value:u(2)}),"function"==typeof Symbol&&i(o,Symbol.iterator,{value:function(){return this}}),o;function u(i){return function(u){var c=[i,u];if(n)throw TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(l=0)),l;)try{if(n=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return l.label++,{value:c[1],done:!1};case 5:l.label++,r=c[1],c=[0];continue;case 7:c=l.ops.pop(),l.trys.pop();continue;default:if(!(a=(a=l.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){l=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){l.label=c[1];break}if(6===c[0]&&l.label<a[1]){l.label=a[1],a=c;break}if(a&&l.label<a[2]){l.label=a[2],l.ops.push(c);break}a[2]&&l.ops.pop(),l.trys.pop();continue}c=t.call(e,l)}catch(e){c=[6,e],r=0}finally{n=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function D(){var e=x(["\n height: 100%;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n "]);return D=function(){return e},e}function P(){var e=x(["\n flex: 0 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ","px;\n flex-wrap: wrap;\n margin-bottom: ","px;\n "]);return P=function(){return e},e}function I(){var e=x(["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .ant-table-content,\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n\n .ant-pagination {\n flex: 0 0 auto;\n }\n "]);return I=function(){return e},e}function M(){var e=x(["\n height: ",";\n min-height: 0;\n overflow: hidden;\n > .ant-card-body {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n "]);return M=function(){return e},e}function A(){var e=x(["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n .ant-table-content {\n flex: 1;\n min-height: 0;\n }\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n .ant-pagination {\n flex: 0 0 auto;\n }\n "]);return A=function(){return e},e}function R(){var e=x(["\n flex: 1;\n min-height: 0;\n overflow-y: scroll;\n overflow-x: hidden;\n .ant-tree-treenode {\n width: 100%;\n padding: 2px 0;\n }\n .ant-tree-switcher {\n line-height: 32px;\n }\n .ant-tree-switcher::before {\n height: 32px;\n }\n .ant-tree-node-content-wrapper {\n flex: 1;\n min-width: 0;\n height: 32px;\n line-height: 32px;\n overflow: hidden;\n padding-inline: 8px;\n }\n .ant-tree-title {\n display: block;\n }\n .ant-tree-node-selected {\n background-color: ",";\n }\n "]);return R=function(){return e},e}var T={paddingInline:0,height:"auto"};function F(){var e=u.theme.useToken().token,t=(0,c.useMemo)(function(){return(0,o.css)(D())},[]),n=(0,c.useMemo)(function(){return(0,o.css)(P(),e.marginSM,e.marginSM)},[e.marginSM]);return{contentClassName:t,tableClassName:(0,c.useMemo)(function(){return(0,o.css)(I())},[]),toolbarClassName:n}}function N(e,t,n){return e.resource(t,n)}function B(e){return e.resource("departments")}function z(e){return null==e?void 0:e.data}function q(e){var t,n,r=z(e),a=null!=(t=null!=(n=null==r?void 0:r.data)?n:null==r?void 0:r.rows)?t:r;return Array.isArray(a)?a:[]}function U(e){var t=z(e),n=null==t?void 0:t.meta;return n&&(void 0===n?"undefined":k(n))==="object"?n:t&&(void 0===t?"undefined":k(t))==="object"?t:{}}function _(e){return e.nickname||e.username||e.email||""}function K(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;return e.filter(function(e){return!n.has(e.id)}).map(function(e){var r;return{key:e.id,value:e.id,title:t(e),children:(null==(r=e.children)?void 0:r.length)?K(e.children,t,n):void 0}})}function L(e){var t=e.mode,n=e.request,r=e.mapOptions,a=function(e,t){if(null==e)return{};var n,r,a,l={};if("u">typeof Reflect&&Reflect.ownKeys){for(a=0,n=Reflect.ownKeys(Object(e));a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r]);return l}if(l=function(e,t){if(null==e)return{};var n,r,a={},l=Object.getOwnPropertyNames(e);for(r=0;r<l.length;r++)n=l[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n]);return a}(e,t),Object.getOwnPropertySymbols)for(a=0,n=Object.getOwnPropertySymbols(e);a<n.length;a++)r=n[a],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(l[r]=e[r]);return l}(e,["mode","request","mapOptions"]),l=(0,i.useRequest)(n);return s().createElement(u.Select,E(w({},a),{allowClear:!0,mode:t,loading:l.loading,options:(l.data||[]).map(r)}))}function G(e){var t,n,r,o,i,d=(0,h.k)(),y=(0,l.useFlowContext)(),v=S(u.Form.useForm(),1)[0],w=S((0,c.useState)(!1),2),E=w[0],x=w[1],O=(0,c.useMemo)(function(){return B(y.api)},[y.api]),k=(0,c.useMemo)(function(){return(0,b.RQ)(e.departments)},[e.departments]),C=(0,c.useMemo)(function(){return K(k,function(e){return e.title||""},function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;return t&&(n.add(t.id),(t.children||[]).forEach(function(t){return e(t,n)})),n}(e.record))},[k,e.record]),D=(0,c.useCallback)(function(){return g(function(){var t;return j(this,function(n){var r,a,l;switch(n.label){case 0:return[4,v.validateFields()];case 1:t=n.sent(),x(!0),n.label=2;case 2:if(n.trys.push([2,,7,8]),"create"!==e.mode)return[3,4];return[4,(r=t,m(function(){return f(this,function(e){switch(e.label){case 0:return[4,O.create({values:p(r)})];case 1:return e.sent(),[2]}})})())];case 3:case 5:return n.sent(),e.onSubmitted(),[2];case 4:if(!e.record)return[3,6];return[4,(a=e.record,l=t,m(function(){return f(this,function(e){switch(e.label){case 0:if(null==a.id)throw Error("Edit mode requires department.id");return[4,O.update({filterByTk:a.id,values:p(l,!0)})];case 1:return e.sent(),[2]}})})())];case 6:throw Error("Edit mode requires a department record");case 7:return x(!1),[7];case 8:return[2]}})})()},[v,e,O]);return s().createElement(a.DrawerFormLayout,{title:"create"===e.mode?d("New department"):d("Edit department"),onSubmit:D,submitting:E,submitText:d("Submit"),cancelText:d("Cancel")},s().createElement(u.Form,{form:v,layout:"vertical",initialValues:{title:null==(o=e.record)?void 0:o.title,parentId:null!=(r=null==(i=e.record)?void 0:i.parentId)?r:null,roleNames:((null==(t=e.record)?void 0:t.roles)||[]).map(function(e){return e.name}),ownerIds:((null==(n=e.record)?void 0:n.owners)||[]).map(function(e){return e.id})}},s().createElement(u.Form.Item,{name:"title",label:d("Department name"),rules:[{required:!0,message:d("Required")}]},s().createElement(u.Input,null)),s().createElement(u.Form.Item,{name:"parentId",label:d("Superior department")},s().createElement(u.TreeSelect,{allowClear:!0,treeDefaultExpandAll:!0,treeData:C})),s().createElement(u.Form.Item,{name:"roleNames",label:d("Roles")},s().createElement(L,{mode:"multiple",request:function(){return g(function(){return j(this,function(e){switch(e.label){case 0:return[4,N(y.api,"roles").list({paginate:!1})];case 1:return[2,q(e.sent())]}})})()},mapOptions:function(e){return{label:e.title?d(e.title,{ns:["@nocobase/plugin-acl","acl","client"],nsMode:"fallback"}):e.name,value:e.name}}})),"edit"===e.mode?s().createElement(u.Form.Item,{name:"ownerIds",label:d("Owners")},s().createElement(L,{mode:"multiple",request:function(){return g(function(){var t;return j(this,function(n){switch(n.label){case 0:return[4,N(y.api,"departments/".concat(null==(t=e.record)?void 0:t.id,"/members")).list({disableDefaultAppends:!0,paginate:!1})];case 1:return[2,q(n.sent())]}})})()},mapOptions:function(e){return{label:_(e),value:e.id}}})):null))}function Z(e){var t,n,o,d=(0,h.k)(),m=(0,l.useFlowContext)(),f=F(),p=f.contentClassName,b=f.tableClassName,y=f.toolbarClassName,v=null==(n=m.dataSourceManager)||null==(t=n.getDataSource("main"))?void 0:t.getCollection("users"),w=S((0,c.useState)([]),2),E=w[0],x=w[1],O=S((0,c.useState)(),2),k=O[0],C=O[1],D=S((0,c.useState)(1),2),P=D[0],I=D[1],M=S((0,c.useState)(20),2),A=M[0],R=M[1],T=S((0,c.useState)(!1),2),B=T[0],z=T[1],K=(0,i.useRequest)(function(){return g(function(){var t;return j(this,function(n){switch(n.label){case 0:return[4,N(m.api,"users").listExcludeDept({departmentId:e.department.id,filter:k,page:P,pageSize:A})];case 1:return[2,{data:q(t=n.sent()),meta:U(t)}]}})})()},{refreshDeps:[k,P,A,e.department.id]}),L=(0,c.useCallback)(function(){return g(function(){return j(this,function(t){switch(t.label){case 0:if(!E.length)return[2];z(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,N(m.api,"departments.members",e.department.id).add({values:E})];case 2:return t.sent(),e.onSubmitted(),[3,4];case 3:return z(!1),[7];case 4:return[2]}})})()},[m.api,e,E]),G=(0,c.useMemo)(function(){return[{title:d("Nickname"),render:function(e,t){return _(t)}},{title:d("Username"),dataIndex:"username"},{title:d("Phone"),dataIndex:"phone"},{title:d("Email"),dataIndex:"email"}]},[d]),Z=K.data,W=(null==Z?void 0:Z.data)||[],Q=null==Z||null==(o=Z.meta)?void 0:o.count;return s().createElement(a.DrawerFormLayout,{title:d("Add members"),onSubmit:L,submitting:B,submitText:d("Submit"),cancelText:d("Cancel")},s().createElement("div",{className:p},s().createElement("div",{className:y},s().createElement(u.Space,{wrap:!0},s().createElement(a.CollectionFilter,{collection:v,t:d,onChange:function(e){x([]),I(1),C(e)}})),s().createElement(u.Space,{wrap:!0},s().createElement(u.Button,{icon:s().createElement(r.ReloadOutlined,null),onClick:function(){return K.refresh()}},d("Refresh")))),s().createElement(a.Table,{rowKey:"id",showIndex:!1,loading:K.loading,dataSource:W,columns:G,pagination:{current:P,pageSize:A,total:null!=Q?Q:0,showSizeChanger:!0,onChange:function(e,t){I(e),R(t)}},rowSelection:{preserveSelectedRowKeys:!0,selectedRowKeys:E,onChange:x},scroll:{x:"max-content",y:"100%"},className:b})))}function W(e){var t,n,o=(0,h.k)(),d=(0,l.useFlowContext)(),m=F(),f=m.contentClassName,p=m.tableClassName,y=m.toolbarClassName,v=null==(n=d.dataSourceManager)||null==(t=n.getDataSource("main"))?void 0:t.getCollection("departments"),x=S((0,c.useState)([]),2),O=x[0],k=x[1],C=S((0,c.useState)([]),2),D=C[0],P=C[1],I=S((0,c.useState)(),2),M=I[0],A=I[1],R=S((0,c.useState)(!1),2),T=R[0],B=R[1],z=(0,i.useRequest)(function(){return g(function(){return j(this,function(t){switch(t.label){case 0:if(!M)return[2,(0,b.RQ)(e.departments)];return[4,N(d.api,"departments").list({appends:["parent(recursively=true)"],filter:M,paginate:!1,sort:["sort"]})];case 1:return[2,q(t.sent()).map(function(e){return E(w({},e),{title:(0,b.nZ)(e)})})]}})})()},{refreshDeps:[M,e.departments]}),U=(0,c.useMemo)(function(){return[{title:o("Department name"),render:function(e,t){return(0,b.nZ)(t)||t.title}}]},[o]),_=(0,c.useCallback)(function(){return g(function(){return j(this,function(t){switch(t.label){case 0:B(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,e.onSubmitted(D)];case 2:return t.sent(),[3,4];case 3:return B(!1),[7];case 4:return[2]}})})()},[e,D]);return s().createElement(a.DrawerFormLayout,{title:o("Select Departments"),onSubmit:_,submitting:T,submitText:o("Submit"),cancelText:o("Cancel")},s().createElement("div",{className:f},s().createElement("div",{className:y},s().createElement(u.Space,{wrap:!0},s().createElement(a.CollectionFilter,{collection:v,t:o,onChange:A})),s().createElement(u.Space,{wrap:!0},s().createElement(u.Button,{icon:s().createElement(r.ReloadOutlined,null),onClick:function(){return z.refresh()}},o("Refresh")))),s().createElement(a.Table,{rowKey:"id",showIndex:!1,loading:z.loading,columns:U,dataSource:z.data||[],expandable:M?void 0:{defaultExpandAllRows:!1},pagination:!M&&{pageSize:10,showSizeChanger:!0},rowSelection:{selectedRowKeys:O,onChange:function(e,t){k(e),P(t)},getCheckboxProps:function(t){return{disabled:e.disabledIds.has(t.id)}}},scroll:{x:"max-content",y:"100%"},className:p})))}function Q(e){var t=(0,h.k)(),n=(0,l.useFlowContext)(),o=u.App.useApp(),d=o.modal,m=o.message,f=S((0,c.useState)(e.user.mainDepartmentId),2),p=f[0],y=f[1],v=(0,i.useRequest)(function(){return g(function(){return j(this,function(t){switch(t.label){case 0:return[4,N(n.api,"users.departments",e.user.id).list({appends:["parent(recursively=true)"],paginate:!1})];case 1:return[2,q(t.sent()).map(function(e){return E(w({},e),{title:(0,b.nZ)(e)})})]}})})()},{refreshDeps:[e.user.id]}),x=(0,c.useMemo)(function(){return v.data||[]},[v.data]),k=(0,c.useMemo)(function(){return new Set(x.map(function(e){return e.id}))},[x]),C=(0,c.useCallback)(function(t){return g(function(){var r;return j(this,function(a){switch(a.label){case 0:if(!(r=t.map(function(e){return e.id}).filter(function(e){return!k.has(e)})).length)return[2];return[4,N(n.api,"users.departments",e.user.id).add({values:r})];case 1:return a.sent(),0===x.length&&y(r[0]),v.refresh(),e.onSubmitted(),[2]}})})()},[n.api,k,x.length,e,v]),D=(0,c.useCallback)(function(){n.viewer.drawer({closable:!0,width:"50%",styles:{body:{display:"flex",flexDirection:"column",overflow:"hidden"}},content:function(){return s().createElement(W,{departments:e.departments,disabledIds:k,onSubmitted:C})}})},[C,n.viewer,k,e.departments]),P=(0,c.useCallback)(function(){return g(function(){return j(this,function(e){return!x.length,[2]})})()},[x.length]),I=(0,c.useCallback)(function(r){d.confirm({title:t("Remove department"),content:t("Are you sure you want to remove it?"),onOk:function(){return g(function(){var a,l;return j(this,function(o){switch(o.label){case 0:return[4,N(n.api,"users.departments",e.user.id).remove({values:[r.id]})];case 1:return o.sent(),p===r.id&&y(null!=(a=null==(l=x.find(function(e){return e.id!==r.id}))?void 0:l.id)?a:null),m.success(t("Deleted successfully")),v.refresh(),e.onSubmitted(),[2]}})})()}})},[n.api,x,p,m,d,e,t,v]),M=(0,c.useCallback)(function(r){return g(function(){return j(this,function(a){switch(a.label){case 0:return[4,N(n.api,"users").update({filterByTk:e.user.id,values:{mainDepartmentId:r.id}})];case 1:return a.sent(),y(r.id),m.success(t("Set successfully")),e.onSubmitted(),v.refresh(),[2]}})})()},[n.api,m,e,t,v]);return s().createElement(a.DrawerFormLayout,{title:t("Departments"),onSubmit:P,submitText:t("Submit"),cancelText:t("Cancel")},s().createElement(u.Space,{direction:"vertical"},s().createElement(u.Space,{wrap:!0},x.map(function(e){return s().createElement(u.Tag,{key:e.id},s().createElement(u.Space,null,s().createElement("span",null,e.title),e.id===p?s().createElement(u.Tag,{color:"processing"},t("Main")):null,s().createElement(u.Dropdown,{menu:{items:O(e.id===p?[]:[{key:"setMain",label:t("Set as main department")}]).concat([{key:"remove",label:t("Remove")}]),onClick:function(t){var n=t.key;"setMain"===n?M(e):"remove"===n&&I(e)}}},s().createElement(u.Button,{type:"text",size:"small",title:t("Actions"),icon:s().createElement(r.MoreOutlined,null)}))))})),s().createElement(u.Button,{icon:s().createElement(r.PlusOutlined,null),title:t("Add departments"),"aria-label":t("Add departments"),onClick:D})))}var H=function(){var e,t,n,d=(0,h.k)(),p=(0,l.useFlowContext)(),y=u.App.useApp(),v=y.modal,x=y.message,k=u.theme.useToken().token,C=null==(t=p.dataSourceManager)||null==(e=t.getDataSource("main"))?void 0:e.getCollection("users"),D=S((0,c.useState)(null),2),P=D[0],I=D[1],F=S((0,c.useState)(null),2),L=F[0],W=F[1],H=S((0,c.useState)([]),2),$=H[0],V=H[1],J=S((0,c.useState)([]),2),X=J[0],Y=J[1],ee=S((0,c.useState)(!1),2),et=ee[0],en=ee[1],er=S((0,c.useState)(""),2),ea=er[0],el=er[1],eo=S((0,c.useState)({users:[],departments:[],moreUsers:!0,moreDepartments:!0}),2),ei=eo[0],eu=eo[1],ec=S((0,c.useState)(),2),es=ec[0],ed=ec[1],em=S((0,c.useState)(1),2),ef=em[0],ep=em[1],eh=S((0,c.useState)(20),2),eb=eh[0],ey=eh[1],ev=(0,i.useRequest)(function(){return g(function(){return j(this,function(e){switch(e.label){case 0:return[4,N(p.api,"departments").list({paginate:!1,sort:["sort"],appends:["parent(recursively=true)","roles","owners"]})];case 1:return[2,q(e.sent())]}})})()}),eg=(0,c.useMemo)(function(){return ev.data||[]},[ev.data]),ew=(0,c.useMemo)(function(){return(0,b.RQ)(eg)},[eg]),eE=(0,i.useRequest)(function(){return g(function(){var e;return j(this,function(t){switch(t.label){case 0:if(L)return[2,{data:[L],meta:{}}];return[4,N(p.api,"users").list({appends:["departments","departments.parent(recursively=true)"],filter:function(e,t){var n=[];if(e&&n.push({"departments.id":e.id}),t&&n.push(t),0!==n.length)return 1===n.length?n[0]:{$and:n}}(P,es),page:ef,pageSize:eb})];case 1:return[2,{data:q(e=t.sent()),meta:U(e)}]}})})()},{refreshDeps:[es,ef,eb,null==P?void 0:P.id,null==L?void 0:L.id],onSuccess:function(){return Y([])}});(0,c.useEffect)(function(){ep(1)},[es,null==P?void 0:P.id,null==L?void 0:L.id]);var eS=(0,i.useRequest)(function(e){return g(function(){var t;return j(this,function(n){switch(n.label){case 0:return[4,N(p.api,"departments").aggregateSearch({values:E(w({},e),{limit:10})})];case 1:return[2,(null==(t=z(n.sent()))?void 0:t.data)||{users:[],departments:[]}]}})})()},{manual:!0,onSuccess:function(e,t){var n=t[0],r=e.users||[],a=e.departments||[];eu(function(e){return{users:"department"===n.type?e.users:n.last?O(e.users).concat(O(r)):r,departments:"user"===n.type?e.departments:n.last?O(e.departments).concat(O(a)):a,moreUsers:n.type&&"user"!==n.type?e.moreUsers:r.length>=10,moreDepartments:n.type&&"department"!==n.type?e.moreDepartments:a.length>=10}})}}),ex=(0,c.useCallback)(function(){ev.refresh(),eE.refresh()},[ev,eE]),eO=(0,c.useCallback)(function(e,t){p.viewer.drawer({closable:!0,width:"50%",content:function(){return s().createElement(G,{mode:e,record:t,departments:eg,onSubmitted:function(){return ex()}})}})},[p.viewer,eg,ex]),ek=(0,c.useCallback)(function(){P&&p.viewer.drawer({closable:!0,width:"50%",styles:{body:{display:"flex",flexDirection:"column",overflow:"hidden"}},content:function(){return s().createElement(Z,{department:P,onSubmitted:function(){return eE.refresh()}})}})},[p.viewer,eE,P]),eC=(0,c.useCallback)(function(e){p.viewer.drawer({closable:!0,width:"50%",content:function(){return s().createElement(Q,{user:e,departments:eg,onSubmitted:function(){return eE.refresh()}})}})},[p.viewer,eg,eE]),ej=(0,c.useCallback)(function(e){v.confirm({title:d("Delete department"),content:d("Are you sure you want to delete it?"),onOk:function(){return g(function(){return j(this,function(t){switch(t.label){case 0:var n;return[4,(n=B(p.api),m(function(){return f(this,function(t){switch(t.label){case 0:if(null==e.id)throw Error("Delete mode requires department.id");return[4,n.destroy({filterByTk:e.id})];case 1:return t.sent(),[2]}})})())];case 1:return t.sent(),x.success(d("Deleted successfully")),I(function(t){return(null==t?void 0:t.id)===e.id?null:t}),ex(),[2]}})})()}})},[p.api,x,v,ex,d]),eD=(0,c.useCallback)(function(e){P&&e.length&&v.confirm({title:d("Remove members"),content:d("Are you sure you want to remove these members?"),onOk:function(){return g(function(){return j(this,function(t){switch(t.label){case 0:return[4,N(p.api,"departments.members",P.id).remove({values:e})];case 1:return t.sent(),Y([]),eE.refresh(),[2]}})})()}})},[p.api,eE,v,P,d]),eP=(0,c.useMemo)(function(){return[{title:d("Nickname"),width:160,render:function(e,t){return _(t)}},{title:d("Username"),dataIndex:"username",width:160},{title:d("Departments"),width:260,render:function(e){return s().createElement(s().Fragment,null,(e.departments||[]).map(function(e,t){return s().createElement(s().Fragment,{key:e.id},t>0?", ":null,s().createElement("a",{onClick:function(){I(e),W(null)}},(0,b.nZ)(e)))}))}}].concat(O(P?[{title:d("Owner"),align:"center",width:96,render:function(e){var t;return(null==(t=e.departments)?void 0:t.some(function(e){var t;return e.id===P.id&&(null==(t=e.departmentsUsers)?void 0:t.isOwner)}))?s().createElement(r.CheckOutlined,{"aria-label":d("Owner"),style:{color:"#52c41a"}}):s().createElement(u.Checkbox,{disabled:!0,"aria-label":d("Owner")})}}]:[]),[{title:d("Phone"),dataIndex:"phone",width:140},{title:d("Email"),dataIndex:"email",width:220},{title:d("Actions"),width:120,render:function(e){return s().createElement(u.Space,null,s().createElement(u.Button,{type:"link",size:"small",style:T,onClick:function(){return eC(e)}},d("Configure")),P?s().createElement(u.Button,{type:"link",size:"small",style:T,onClick:function(){return eD([e.id])}},d("Remove")):null)}}])},[eC,eD,P,d]),eI=(0,c.useCallback)(function(e){return s().createElement(u.Flex,{align:"center",justify:"space-between",gap:8,style:{width:"100%",minWidth:0}},s().createElement(u.Flex,{align:"center",gap:8,style:{flex:"1 1 0",minWidth:0,overflow:"hidden"}},s().createElement(r.ApartmentOutlined,{style:{flex:"0 0 auto"}}),s().createElement("span",{title:e.title,style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},e.title)),s().createElement(u.Dropdown,{menu:{items:[{key:"new-sub",label:d("New sub department"),icon:s().createElement(r.PlusOutlined,null)},{key:"edit",label:d("Edit department"),icon:s().createElement(r.EditOutlined,null)},{key:"delete",label:d("Delete department"),icon:s().createElement(r.DeleteOutlined,null)}],onClick:function(t){var n=t.key;t.domEvent.stopPropagation(),"new-sub"===n?eO("create",{id:0,parentId:e.id,parent:e}):"edit"===n?eO("edit",e):"delete"===n&&ej(e)}}},s().createElement(u.Button,{type:"text",size:"small",title:d("Actions"),icon:s().createElement(r.MoreOutlined,null),style:{flex:"0 0 auto"},onClick:function(e){return e.stopPropagation()}})))},[ej,eO,d]),eM=(0,c.useMemo)(function(){var e=ei.users,t=ei.departments;return e.length||t.length?O(e.length?[{key:"users",type:"group",label:d("Users"),children:O(e.map(function(e){var t=[e.username,e.phone,e.email].filter(Boolean).join(" | ");return{key:"user-".concat(e.id),label:s().createElement("div",null,s().createElement("div",null,_(e)),t?s().createElement("div",{style:{fontSize:k.fontSizeSM,color:k.colorTextDescription}},t):null),onClick:function(){W(e),I(null),en(!1)}}})).concat(O(ei.moreUsers?[{key:"user-load-more",disabled:eS.loading,label:s().createElement(u.Button,{type:"link",size:"small",loading:eS.loading,onClick:function(t){t.stopPropagation();var n=e[e.length-1];n&&eS.run({keyword:ea,type:"user",last:n.id})}},d("Load more"))}]:[]))}]:[]).concat(O(t.length?[{key:"departments",type:"group",label:d("Departments"),children:O(t.map(function(e){return{key:"department-".concat(e.id),label:(0,b.nZ)(e),onClick:function(){I(e),W(null),en(!1)}}})).concat(O(ei.moreDepartments?[{key:"department-load-more",disabled:eS.loading,label:s().createElement(u.Button,{type:"link",size:"small",loading:eS.loading,onClick:function(e){e.stopPropagation();var n=t[t.length-1];n&&eS.run({keyword:ea,type:"department",last:n.id})}},d("Load more"))}]:[]))}]:[])):[{key:"empty",disabled:!0,label:s().createElement(u.Empty,{image:u.Empty.PRESENTED_IMAGE_SIMPLE})}]},[ea,eS,ei.departments,ei.moreDepartments,ei.moreUsers,ei.users,d,k.colorTextDescription,k.fontSizeSM]),eA=(0,c.useMemo)(function(){return K(ew,eI)},[ew,eI]),eR=(0,c.useMemo)(function(){return(0,o.css)(M(),"calc(100vh - 160px)")},[]),eT=(0,c.useMemo)(function(){return(0,o.css)(A())},[]),eF=(0,c.useMemo)(function(){return(0,o.css)(R(),k.colorPrimaryBg)},[k.colorPrimaryBg]),eN=eE.data,eB=(null==eN?void 0:eN.data)||[],ez=null==eN||null==(n=eN.meta)?void 0:n.count;return s().createElement(u.Card,{className:eR},s().createElement(u.Flex,{gap:k.marginLG,align:"stretch",style:{flex:1,minHeight:0,overflow:"hidden"}},s().createElement(u.Flex,{vertical:!0,gap:k.marginSM,style:{width:280,flex:"0 0 ".concat(280,"px"),minHeight:0,overflow:"hidden"}},s().createElement(u.Dropdown,{trigger:["click"],open:et,onOpenChange:en,menu:{items:eM}},s().createElement(u.Input.Search,{allowClear:!0,value:ea,placeholder:d("Search for departments, users"),onChange:function(e){el(e.target.value),e.target.value||(W(null),en(!1),eu({users:[],departments:[],moreUsers:!0,moreDepartments:!0}))},onSearch:function(e){e&&(eu({users:[],departments:[],moreUsers:!0,moreDepartments:!0}),en(!0),eS.run({keyword:e}))}})),s().createElement(u.Button,{block:!0,icon:s().createElement(r.UserOutlined,null),type:"text",style:{textAlign:"center",justifyContent:"center",background:P||L?void 0:k.colorPrimaryBg},onClick:function(){I(null),W(null)}},d("All users")),s().createElement(u.Button,{block:!0,type:"dashed",icon:s().createElement(r.PlusOutlined,null),onClick:function(){return eO("create")}},d("New department")),s().createElement("div",{className:eF},eA.length?s().createElement(u.Tree.DirectoryTree,{blockNode:!0,showIcon:!1,expandAction:!1,treeData:eA,selectedKeys:P?[P.id]:[],expandedKeys:$,onExpand:function(e){return V(O(e))},onSelect:function(e){I(function e(t,n){if(null==n)return null;var r=!0,a=!1,l=void 0;try{for(var o,i=t[Symbol.iterator]();!(r=(o=i.next()).done);r=!0){var u=o.value;if(u.id===n)return u;var c=e(u.children||[],n);if(c)return c}}catch(e){a=!0,l=e}finally{try{r||null==i.return||i.return()}finally{if(a)throw l}}return null}(ew,e[0])),W(null)}}):s().createElement(u.Empty,{image:u.Empty.PRESENTED_IMAGE_SIMPLE}))),s().createElement(u.Flex,{vertical:!0,flex:1,gap:k.marginSM,style:{borderInlineStart:"".concat(k.lineWidth,"px ").concat(k.lineType," ").concat(k.colorSplit),paddingInlineStart:k.paddingLG,minWidth:0,minHeight:0,overflow:"hidden"}},s().createElement(u.Flex,{vertical:!0,gap:k.marginSM,style:{flex:"0 0 auto"}},s().createElement(u.Typography.Title,{level:4,style:{margin:0}},L?d("Search results"):d((null==P?void 0:P.title)||"All users")),s().createElement(u.Flex,{justify:"space-between",align:"center",wrap:"wrap",gap:k.marginSM},s().createElement(u.Space,{wrap:!0},s().createElement(a.CollectionFilter,{collection:C,t:d,onChange:function(e){ep(1),ed(e)}})),s().createElement(u.Space,{wrap:!0},s().createElement(u.Button,{icon:s().createElement(r.ReloadOutlined,null),onClick:function(){return eE.refresh()}},d("Refresh")),P?s().createElement(s().Fragment,null,s().createElement(u.Button,{icon:s().createElement(r.UserDeleteOutlined,null),disabled:!X.length,onClick:function(){return eD(X)}},d("Remove")),s().createElement(u.Button,{type:"primary",icon:s().createElement(r.UserAddOutlined,null),onClick:ek},d("Add members"))):null))),s().createElement(a.Table,{rowKey:"id",showIndex:!1,className:eT,loading:eE.loading,dataSource:eB,columns:eP,scroll:{x:"max-content",y:"100%"},rowSelection:P?{selectedRowKeys:X,onChange:Y}:void 0,pagination:!!ez&&{current:ef,pageSize:eb,total:ez,showTotal:function(e){return d("Total {{count}} members",{count:e})},onChange:function(e,t){ep(e),ey(t)}}}))))}},488:function(e,t,n){n.d(t,{k:function(){return a}});var r=n(694);function a(){var e=(0,r.useFlowEngine)();return function(t,n){return e.context.t(t,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:["@nocobase/plugin-departments","departments","client"],nsMode:"fallback"},n))}}},836:function(e,t,n){function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function a(e){var t=new Map,n=[];return e.forEach(function(e){var n,a;t.set(e.id,(n=r({},e),a=a={children:[]},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(a)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(a)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(a,e))}),n))}),t.forEach(function(e){if(null!=e.parentId&&t.has(e.parentId)){var r,a;null==(a=t.get(e.parentId))||null==(r=a.children)||r.push(e);return}n.push(e)}),t.forEach(function(e){var t;(null==(t=e.children)?void 0:t.length)||delete e.children}),n}n.d(t,{RQ:function(){return a},W6:function(){return function e(t){return t.map(function(t){var n,a=r({},t);return(null==(n=t.children)?void 0:n.length)?a.children=e(t.children):!1===t.isLeaf?a.children=[]:delete a.children,a})}},nZ:function(){return function e(t){if(!t)return"";var n=t.title||"";return t.parent?"".concat(e(t.parent)," / ").concat(n):n}}})}}]);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_departments_client_v2=self.webpackChunk_nocobase_plugin_departments_client_v2||[]).push([["936"],{403:function(e,n,t){t.r(n),t.d(n,{default:function(){return I}});var r=t(375),a=t(477),o=t(485),l=t(694),i=t(625),u=t(59),c=t(155),s=t.n(c),f=t(488),d=t(836);function p(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function m(e,n,t,r,a,o,l){try{var i=e[o](l),u=i.value}catch(e){t(e);return}i.done?n(u):Promise.resolve(u).then(r,a)}function h(e){return function(){var n=this,t=arguments;return new Promise(function(r,a){var o=e.apply(n,t);function l(e){m(o,r,a,l,i,"next",e)}function i(e){m(o,r,a,l,i,"throw",e)}l(void 0)})}}function b(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r;r=t[n],n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r})}return e}function y(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):(function(e){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n.push.apply(n,t)}return n})(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function g(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],l=!0,i=!1;try{for(a=a.call(e);!(l=(t=a.next()).done)&&(o.push(t.value),!n||o.length!==n);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,n)||O(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}function w(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function O(e,n){if(e){if("string"==typeof e)return p(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return p(e,n)}}function x(e,n){var t,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:u(0)}),i(l,"throw",{value:u(1)}),i(l,"return",{value:u(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function u(i){return function(u){var c=[i,u];if(t)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(o=0)),o;)try{if(t=1,r&&(a=2&c[0]?r.return:c[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,c[1])).done)return a;switch(r=0,a&&(c=[2&c[0],a.value]),c[0]){case 0:case 1:a=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!a||c[1]>a[0]&&c[1]<a[3])){o.label=c[1];break}if(6===c[0]&&o.label<a[1]){o.label=a[1],a=c;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(c);break}a[2]&&o.ops.pop(),o.trys.pop();continue}c=n.call(e,o)}catch(e){c=[6,e],r=0}finally{t=a=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function E(){var e=v(["\n height: 100%;\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n "]);return E=function(){return e},e}function j(){var e=v(["\n flex: 0 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: ","px;\n flex-wrap: wrap;\n margin-bottom: ","px;\n "]);return j=function(){return e},e}function C(){var e=v(["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .ant-table-content,\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n\n .ant-pagination {\n flex: 0 0 auto;\n }\n "]);return C=function(){return e},e}function k(){var e=v(["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .ant-table-content {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n\n .ant-pagination {\n flex: 0 0 auto;\n }\n "]);return k=function(){return e},e}var P={paddingInline:0,height:"auto"};function D(e){var n,t,r,a,o,l,i,u,c,s,f,d,p=(n=null==e?void 0:e.data)&&(void 0===n?"undefined":S(n))==="object"?n:{};return{data:null!=(t=null!=(r=p.data)?r:p.rows)?t:[],page:null!=(a=null==(c=p.meta)?void 0:c.page)?a:p.page,pageSize:null!=(o=null==(s=p.meta)?void 0:s.pageSize)?o:p.pageSize,total:null!=(l=null!=(i=null!=(u=null==(f=p.meta)?void 0:f.total)?u:null==(d=p.meta)?void 0:d.count)?i:p.total)?l:p.count}}function R(e){var n,t,p,m,v,O,k,P,R,I,A,M=(0,l.useFlowContext)(),z=(0,l.useFlowView)(),N=(0,f.k)(),_=(n=u.theme.useToken().token,t=(0,c.useMemo)(function(){return(0,a.css)(E())},[]),p=(0,c.useMemo)(function(){return(0,a.css)(j(),n.marginSM,n.marginSM)},[n.marginSM]),{contentClassName:t,tableClassName:(0,c.useMemo)(function(){return(0,a.css)(C())},[]),toolbarClassName:p}),T=_.contentClassName,B=_.tableClassName,F=_.toolbarClassName,K=g((0,c.useState)([]),2),L=K[0],H=K[1],W=g((0,c.useState)(),2),Z=W[0],q=W[1],G=g((0,c.useState)(1),2),Q=G[0],U=G[1],V=g((0,c.useState)(20),2),$=V[0],J=V[1],X=g((0,c.useState)(!1),2),Y=X[0],ee=X[1],en=g((0,c.useState)([]),2),et=en[0],er=en[1],ea=g((0,c.useState)([]),2),eo=ea[0],el=ea[1],ei=(0,c.useRef)(new Set),eu=null==(k=M.dataSourceManager)||null==(O=k.getDataSource("main"))?void 0:O.getCollection("departments"),ec=!!(Z&&(void 0===Z?"undefined":S(Z))==="object"&&Object.keys(Z).length>0),es=(0,i.useRequest)(function(){return h(function(){return x(this,function(e){switch(e.label){case 0:return[4,M.api.resource("departments").list({appends:["parent(recursively=true)","roles"],filter:ec?Z:{parentId:null},page:Q,pageSize:$,sort:["sort"]})];case 1:return[2,D(e.sent())]}})})()},{refreshDeps:[Z,ec,Q,$],onSuccess:function(e){ec||(er((0,d.W6)(e.data)),el([]))}}),ef=(0,c.useCallback)(function(e){return h(function(){var n,t,r;return x(this,function(a){switch(a.label){case 0:if(e.isLeaf||(null==(n=e.children)?void 0:n.length)||ei.current.has(e.id))return[2];ei.current.add(e.id),a.label=1;case 1:return a.trys.push([1,,3,4]),[4,M.api.resource("departments").list({appends:["parent(recursively=true)","roles"],filter:{parentId:e.id},paginate:!1,sort:["sort"]})];case 2:return t=a.sent(),r=(0,d.W6)(D(t).data),er(function(n){return function e(n,t,r){return n.map(function(n){var a;if(n.id===t){var o=y(b({},n),{isLeaf:!r.length});return r.length?o.children=r:delete o.children,o}return(null==(a=n.children)?void 0:a.length)?y(b({},n),{children:e(n.children,t,r)}):n})}(n,e.id,r)}),[3,4];case 3:return ei.current.delete(e.id),[7];case 4:return[2]}})})()},[M.api]),ed=(0,c.useCallback)(function(){return h(function(){return x(this,function(n){switch(n.label){case 0:if(!L.length)return[2];ee(!0),n.label=1;case 1:return n.trys.push([1,,5,6]),[4,M.api.resource("roles.departments",e.roleName).add({values:L})];case 2:return n.sent(),M.message.success(N("Saved successfully")),[4,e.onSubmitted()];case 3:return n.sent(),[4,z.close()];case 4:return n.sent(),[3,6];case 5:return ee(!1),[7];case 6:return[2]}})})()},[M.api,M.message,e,L,N,z]),ep=(0,c.useCallback)(function(){return h(function(){return x(this,function(e){switch(e.label){case 0:return[4,z.close()];case 1:return e.sent(),[2]}})})()},[z]);return s().createElement("div",{style:{flex:1,height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"}},z.Header?s().createElement(z.Header,{title:N("Add departments")}):null,s().createElement("div",{className:T},s().createElement("div",{className:F},s().createElement(u.Space,{wrap:!0},s().createElement(o.CollectionFilter,{collection:eu,t:N,onChange:function(e){H([]),el([]),U(1),q(e)}})),s().createElement(u.Space,{wrap:!0},s().createElement(u.Button,{icon:s().createElement(r.ReloadOutlined,null),onClick:function(){return es.refresh()}},N("Refresh")))),s().createElement(o.Table,{rowKey:"id",showIndex:!1,loading:es.loading,dataSource:ec?(null==(P=es.data)?void 0:P.data)||[]:et,columns:[{title:N("Department name"),render:function(e,n){return ec?(0,d.nZ)(n):n.title}}],expandable:ec?void 0:{defaultExpandAllRows:!1,expandedRowKeys:eo,rowExpandable:function(e){var n;return!1===e.isLeaf||!!(null==(n=e.children)?void 0:n.length)},onExpand:function(e,n){e&&ef(n)},onExpandedRowsChange:function(e){return el(w(e))}},pagination:{current:null!=(m=null==(R=es.data)?void 0:R.page)?m:Q,pageSize:null!=(v=null==(I=es.data)?void 0:I.pageSize)?v:$,total:null==(A=es.data)?void 0:A.total,showSizeChanger:!0,onChange:function(e,n){U(e),J(n)}},rowSelection:{preserveSelectedRowKeys:!0,selectedRowKeys:L,onChange:H,getCheckboxProps:function(n){var t;return{disabled:null==(t=n.roles)?void 0:t.some(function(n){return n.name===e.roleName})}}},locale:{emptyText:s().createElement(u.Empty,{image:u.Empty.PRESENTED_IMAGE_SIMPLE})},scroll:{x:"max-content",y:"100%"},className:B})),z.Footer?s().createElement(z.Footer,null,s().createElement(u.Space,null,s().createElement(u.Button,{onClick:ep},N("Cancel")),s().createElement(u.Button,{type:"primary",loading:Y,disabled:!L.length,onClick:ed},N("Submit")))):null)}function I(e){var n,t,p,m,b,y,v,S,O=(0,l.useFlowContext)(),E=(0,f.k)(),j=u.theme.useToken().token,C=e.role,I=null==(m=O.dataSourceManager)||null==(p=m.getDataSource("main"))?void 0:p.getCollection("departments"),A=g((0,c.useState)([]),2),M=A[0],z=A[1],N=g((0,c.useState)(),2),_=N[0],T=N[1],B=g((0,c.useState)(1),2),F=B[0],K=B[1],L=g((0,c.useState)(20),2),H=L[0],W=L[1],Z=(0,c.useMemo)(function(){return(0,a.css)(k())},[]),q=(0,i.useRequest)(function(){return h(function(){return x(this,function(e){switch(e.label){case 0:if(!C)return[2,{data:[],page:F,pageSize:H,total:0}];return[4,O.api.resource("roles/".concat(C.name,"/departments")).list({appends:["parent(recursively=true)"],filter:_,page:F,pageSize:H})];case 1:return[2,D(e.sent())]}})})()},{ready:!!C,refreshDeps:[_,F,H,null==C?void 0:C.name],onSuccess:function(){return z([])}}),G=(0,c.useCallback)(function(){return h(function(){return x(this,function(e){switch(e.label){case 0:return[4,q.refreshAsync()];case 1:return e.sent(),[2]}})})()},[q]),Q=(0,c.useCallback)(function(e){return h(function(){return x(this,function(n){switch(n.label){case 0:if(!C||!e.length)return[2];return[4,O.api.resource("roles/".concat(C.name,"/departments")).remove({values:e})];case 1:return n.sent(),O.message.success(E("Removed successfully")),z([]),[4,G()];case 2:return n.sent(),[2]}})})()},[O.api,O.message,G,C,E]),U=(0,c.useCallback)(function(){C&&O.viewer.drawer({closable:!0,width:"50%",styles:{body:{display:"flex",flexDirection:"column",overflow:"hidden"}},content:function(){return s().createElement(R,{roleName:C.name,onSubmitted:G})}})},[O.viewer,G,C]),V=(0,c.useMemo)(function(){return w([{title:E("Department name"),render:function(e,n){return(0,d.nZ)(n)||n.title}}]).concat([{title:E("Actions"),width:120,render:function(e,n){return s().createElement(u.Popconfirm,{title:E("Remove department"),description:E("Are you sure you want to remove it?"),onConfirm:function(){return Q([n.id])}},s().createElement(u.Button,{type:"link",size:"small",style:P},E("Remove")))}}])},[Q,E]);return C?s().createElement("div",{style:{height:"100%",minHeight:0,display:"flex",flexDirection:"column",overflow:"hidden"}},s().createElement("div",{style:{flex:"0 0 auto",display:"flex",justifyContent:"space-between",alignItems:"center",gap:j.marginSM,flexWrap:"wrap",marginBottom:j.marginSM}},s().createElement(u.Space,{wrap:!0},s().createElement(o.CollectionFilter,{collection:I,t:E,onChange:function(e){K(1),T(e)}})),s().createElement(u.Space,{wrap:!0},s().createElement(u.Button,{icon:s().createElement(r.ReloadOutlined,null),onClick:function(){return q.refresh()}},E("Refresh")),s().createElement(u.Popconfirm,{title:E("Remove"),description:E("Are you sure you want to remove these departments?"),onConfirm:function(){return Q(M)}},s().createElement(u.Button,{icon:s().createElement(r.DeleteOutlined,null),disabled:!M.length},E("Remove"))),s().createElement(u.Button,{type:"primary",icon:s().createElement(r.PlusOutlined,null),onClick:U},E("Add departments")))),s().createElement(o.Table,{rowKey:"id",showIndex:!1,loading:q.loading,dataSource:(null==(b=q.data)?void 0:b.data)||[],columns:V,scroll:{x:"max-content",y:"100%"},className:Z,pagination:{current:null!=(n=null==(y=q.data)?void 0:y.page)?n:F,pageSize:null!=(t=null==(v=q.data)?void 0:v.pageSize)?t:H,total:null==(S=q.data)?void 0:S.total,showSizeChanger:!0,onChange:function(e,n){K(e),W(n)}},rowSelection:{type:"checkbox",selectedRowKeys:M,onChange:function(e){return z(w(e))}}})):s().createElement(u.Typography.Text,{type:"secondary"},E("Select a role to configure permissions"))}},488:function(e,n,t){t.d(n,{k:function(){return a}});var r=t(694);function a(){var e=(0,r.useFlowEngine)();return function(n,t){return e.context.t(n,function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r;r=t[n],n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r})}return e}({ns:["@nocobase/plugin-departments","departments","client"],nsMode:"fallback"},t))}}},836:function(e,n,t){function r(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r;r=t[n],n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r})}return e}function a(e){var n=new Map,t=[];return e.forEach(function(e){var t,a;n.set(e.id,(t=r({},e),a=a={children:[]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):(function(e){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n.push.apply(n,t)}return n})(Object(a)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}),t))}),n.forEach(function(e){if(null!=e.parentId&&n.has(e.parentId)){var r,a;null==(a=n.get(e.parentId))||null==(r=a.children)||r.push(e);return}t.push(e)}),n.forEach(function(e){var n;(null==(n=e.children)?void 0:n.length)||delete e.children}),t}t.d(n,{RQ:function(){return a},W6:function(){return function e(n){return n.map(function(n){var t,a=r({},n);return(null==(t=n.children)?void 0:t.length)?a.children=e(n.children):!1===n.isLeaf?a.children=[]:delete a.children,a})}},nZ:function(){return function e(n){if(!n)return"";var t=n.title||"";return n.parent?"".concat(e(n.parent)," / ").concat(t):t}}})}}]);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import type { DepartmentPrimaryKey, DepartmentRecord } from './shared/department';
|
|
10
|
+
export interface DepartmentFormValues {
|
|
11
|
+
title: string;
|
|
12
|
+
parentId?: DepartmentPrimaryKey | null;
|
|
13
|
+
roleNames?: string[];
|
|
14
|
+
ownerIds?: DepartmentPrimaryKey[];
|
|
15
|
+
}
|
|
16
|
+
export interface DepartmentPayload {
|
|
17
|
+
title: string;
|
|
18
|
+
parentId: DepartmentPrimaryKey | null;
|
|
19
|
+
roles?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
}>;
|
|
22
|
+
owners?: Array<{
|
|
23
|
+
id: DepartmentPrimaryKey;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export interface DepartmentResource {
|
|
27
|
+
create(params: {
|
|
28
|
+
values: DepartmentPayload;
|
|
29
|
+
}): Promise<unknown>;
|
|
30
|
+
update(params: {
|
|
31
|
+
filterByTk: DepartmentPrimaryKey;
|
|
32
|
+
values: DepartmentPayload;
|
|
33
|
+
}): Promise<unknown>;
|
|
34
|
+
destroy(params: {
|
|
35
|
+
filterByTk: DepartmentPrimaryKey;
|
|
36
|
+
}): Promise<unknown>;
|
|
37
|
+
}
|
|
38
|
+
export declare function buildDepartmentPayload(values: DepartmentFormValues, includeOwners?: boolean): DepartmentPayload;
|
|
39
|
+
export declare function createDepartment(resource: DepartmentResource, values: DepartmentFormValues): Promise<void>;
|
|
40
|
+
export declare function updateDepartment(resource: DepartmentResource, record: Pick<DepartmentRecord, 'id'>, values: DepartmentFormValues): Promise<void>;
|
|
41
|
+
export declare function destroyDepartment(resource: DepartmentResource, record: Pick<DepartmentRecord, 'id'>): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
export { default } from './plugin';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@emotion/css"),require("@nocobase/plugin-acl/client-v2"),require("@nocobase/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine")):"function"==typeof define&&define.amd?define("@nocobase/plugin-departments/client-v2",["ahooks","@emotion/css","@nocobase/plugin-acl/client-v2","@nocobase/client-v2","react","antd","@ant-design/icons","@nocobase/flow-engine"],t):"object"==typeof exports?exports["@nocobase/plugin-departments/client-v2"]=t(require("ahooks"),require("@emotion/css"),require("@nocobase/plugin-acl/client-v2"),require("@nocobase/client-v2"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine")):e["@nocobase/plugin-departments/client-v2"]=t(e.ahooks,e["@emotion/css"],e["@nocobase/plugin-acl/client-v2"],e["@nocobase/client-v2"],e.react,e.antd,e["@ant-design/icons"],e["@nocobase/flow-engine"])}(self,function(e,t,n,r,o,i,c,a){return function(){"use strict";var u,s,l,p={375:function(e){e.exports=c},477:function(e){e.exports=t},485:function(e){e.exports=r},694:function(e){e.exports=a},762:function(e){e.exports=n},625:function(t){t.exports=e},59:function(e){e.exports=i},155:function(e){e.exports=o}},f={};function d(e){var t=f[e];if(void 0!==t)return t.exports;var n=f[e]={exports:{}};return p[e](n,n.exports,d),n.exports}d.m=p,d.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(t,{a:t}),t},d.d=function(e,t){for(var n in t)d.o(t,n)&&!d.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},d.f={},d.e=function(e){return Promise.all(Object.keys(d.f).reduce(function(t,n){return d.f[n](e,t),t},[]))},d.u=function(e){return""+e+"."+({32:"556fc9327d272987",936:"219d07552527a06e"})[e]+".js"},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},b={},d.l=function(e,t,n,r){if(b[e])return void b[e].push(t);if(void 0!==n)for(var o,i,c=document.getElementsByTagName("script"),a=0;a<c.length;a++){var u=c[a];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-departments/client-v2:"+n){o=u;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,d.nc&&o.setAttribute("nonce",d.nc),o.setAttribute("data-rspack","@nocobase/plugin-departments/client-v2:"+n),o.src=e),b[e]=[t];var s=function(t,n){o.onerror=o.onload=null,clearTimeout(l);var r=b[e];if(delete b[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},l=setTimeout(s.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=s.bind(null,o.onerror),o.onload=s.bind(null,o.onload),i&&document.head.appendChild(o)},d.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.g.importScripts&&(v=d.g.location+"");var b,v,h=d.g.document;if(!v&&h&&(h.currentScript&&"SCRIPT"===h.currentScript.tagName.toUpperCase()&&(v=h.currentScript.src),!v)){var g=h.getElementsByTagName("script");if(g.length)for(var m=g.length-1;m>-1&&(!v||!/^http(s?):/.test(v));)v=g[m--].src}if(!v)throw Error("Automatic publicPath is not supported in this browser");d.p=v.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u={889:0},d.f.j=function(e,t){var n=d.o(u,e)?u[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var o=d.p+d.u(e),i=Error();d.l(o,function(t){if(d.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}},s=function(e,t){var n,r,o=t[0],i=t[1],c=t[2],a=0;if(o.some(function(e){return 0!==u[e]})){for(n in i)d.o(i,n)&&(d.m[n]=i[n]);c&&c(d)}for(e&&e(t);a<o.length;a++)r=o[a],d.o(u,r)&&u[r]&&u[r][0](),u[r]=0},(l=self.webpackChunk_nocobase_plugin_departments_client_v2=self.webpackChunk_nocobase_plugin_departments_client_v2||[]).forEach(s.bind(null,0)),l.push=s.bind(null,l.push.bind(l));var y={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-departments/dist/client-v2/")}if(!e){var r=window.__nocobase_modern_client_prefix__||"v",o="/"+(r=String(r).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",c=i.indexOf(o);e=c>=0?i.slice(0,c+1):"/"}e&&(e=e.replace(RegExp("/"+r+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-departments/dist/client-v2/"}d.p=e}(),!function(){d.r(y),d.d(y,{default:function(){return s}});var e=d(485),t=d(762),n=d.n(t);function r(e,t,n,r,o,i,c){try{var a=e[i](c),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(r,o)}function o(e,t,n){return(o=u()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&c(o,n.prototype),o}).apply(null,arguments)}function i(e){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function c(e,t){return(c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t="function"==typeof Map?new Map:void 0;return(a=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return o(e,arguments,i(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),c(n,e)})(e)}function u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(u=function(){return!!e})()}var s=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function o(){var e,t;if(!(this instanceof o))throw TypeError("Cannot call a class as a function");return e=o,t=arguments,e=i(e),function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,u()?Reflect.construct(e,t||[],i(this).constructor):e.apply(this,t))}return o.prototype=Object.create(e&&e.prototype,{constructor:{value:o,writable:!0,configurable:!0}}),e&&c(o,e),t=[{key:"load",value:function(){var e;return(e=function(){var e;return function(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},c=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),a=Object.defineProperty;return a(c,"next",{value:u(0)}),a(c,"throw",{value:u(1)}),a(c,"return",{value:u(2)}),"function"==typeof Symbol&&a(c,Symbol.iterator,{value:function(){return this}}),c;function u(a){return function(u){var s=[a,u];if(n)throw TypeError("Generator is already executing.");for(;c&&(c=0,s[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){i.label=s[1];break}if(6===s[0]&&i.label<o[1]){i.label=o[1],o=s;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(s);break}o[2]&&i.ops.pop(),i.trys.pop();continue}s=t.call(e,i)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}(this,function(t){return this.pluginSettingsManager.has("users-permissions")||this.pluginSettingsManager.addMenuItem({key:"users-permissions",title:this.t("Users & Permissions"),isPinned:!0,sort:200,icon:"TeamOutlined"}),this.pluginSettingsManager.addPageTabItem({menuKey:"users-permissions",key:"departments",title:this.t("Departments"),icon:"ApartmentOutlined",sort:3,aclSnippet:"pm.departments",componentLoader:function(){return d.e("32").then(d.bind(d,3))}}),null==(e=this.app.pm.get(n()))||e.rolesManager.add("departments",{title:String(this.t("Departments")),sort:20,componentLoader:function(){return d.e("936").then(d.bind(d,403))}}),[2]})},function(){var t=this,n=arguments;return new Promise(function(o,i){var c=e.apply(t,n);function a(e){r(c,o,i,a,u,"next",e)}function u(e){r(c,o,i,a,u,"throw",e)}a(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(o.prototype,t),o}(a(e.Plugin))}(),y}()});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useT(): (key: string, options?: Record<string, unknown>) => string;
|
|
10
|
+
export declare function tExpr(key: string): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
declare const DepartmentsPage: React.FC;
|
|
11
|
+
export default DepartmentsPage;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import type { RoleTabProps } from '@nocobase/plugin-acl/client-v2';
|
|
10
|
+
import React from 'react';
|
|
11
|
+
export default function RoleDepartmentsManager(props: RoleTabProps): React.JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import type { Application } from '@nocobase/client-v2';
|
|
10
|
+
import { Plugin } from '@nocobase/client-v2';
|
|
11
|
+
export declare class PluginDepartmentsClientV2 extends Plugin<Record<string, never>, Application> {
|
|
12
|
+
load(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export default PluginDepartmentsClientV2;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
export type DepartmentPrimaryKey = string | number;
|
|
10
|
+
export interface DepartmentRecord {
|
|
11
|
+
id: DepartmentPrimaryKey;
|
|
12
|
+
title?: string;
|
|
13
|
+
parentId?: DepartmentPrimaryKey | null;
|
|
14
|
+
parent?: DepartmentRecord | null;
|
|
15
|
+
children?: DepartmentRecord[];
|
|
16
|
+
isLeaf?: boolean;
|
|
17
|
+
roles?: RoleRecord[];
|
|
18
|
+
owners?: UserRecord[];
|
|
19
|
+
departmentsUsers?: {
|
|
20
|
+
isOwner?: boolean;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface RoleRecord {
|
|
24
|
+
name: string;
|
|
25
|
+
title?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface UserRecord {
|
|
28
|
+
id: DepartmentPrimaryKey;
|
|
29
|
+
nickname?: string;
|
|
30
|
+
username?: string;
|
|
31
|
+
phone?: string;
|
|
32
|
+
email?: string;
|
|
33
|
+
mainDepartmentId?: DepartmentPrimaryKey | null;
|
|
34
|
+
departments?: DepartmentRecord[];
|
|
35
|
+
}
|
|
36
|
+
export declare function getDepartmentTitle(record?: Pick<DepartmentRecord, 'title' | 'parent'> | null): string;
|
|
37
|
+
export declare function buildDepartmentTree(records: DepartmentRecord[]): DepartmentRecord[];
|
|
38
|
+
export declare function buildLazyDepartmentTreeNodes(records: DepartmentRecord[]): DepartmentRecord[];
|
package/dist/externalVersion.js
CHANGED
|
@@ -8,23 +8,27 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
|
-
"@nocobase/client": "2.
|
|
11
|
+
"@nocobase/client": "2.2.0-beta.1",
|
|
12
12
|
"react": "18.2.0",
|
|
13
13
|
"@formily/react": "2.3.7",
|
|
14
14
|
"@formily/core": "2.3.7",
|
|
15
|
-
"@nocobase/utils": "2.
|
|
16
|
-
"@nocobase/plugin-acl": "2.
|
|
15
|
+
"@nocobase/utils": "2.2.0-beta.1",
|
|
16
|
+
"@nocobase/plugin-acl": "2.2.0-beta.1",
|
|
17
17
|
"react-i18next": "11.18.6",
|
|
18
|
-
"@nocobase/
|
|
19
|
-
"
|
|
20
|
-
"@nocobase/
|
|
21
|
-
"
|
|
22
|
-
"@nocobase/
|
|
23
|
-
"@nocobase/
|
|
24
|
-
"@nocobase/
|
|
18
|
+
"@nocobase/flow-engine": "2.2.0-beta.1",
|
|
19
|
+
"@nocobase/client-v2": "2.2.0-beta.1",
|
|
20
|
+
"@nocobase/database": "2.2.0-beta.1",
|
|
21
|
+
"lodash": "4.18.1",
|
|
22
|
+
"@nocobase/plugin-user-data-sync": "2.2.0-beta.1",
|
|
23
|
+
"@nocobase/cache": "2.2.0-beta.1",
|
|
24
|
+
"@nocobase/server": "2.2.0-beta.1",
|
|
25
|
+
"@nocobase/data-source-manager": "2.2.0-beta.1",
|
|
26
|
+
"@nocobase/plugin-error-handler": "2.2.0-beta.1",
|
|
27
|
+
"sequelize": "6.35.2",
|
|
25
28
|
"antd": "5.24.2",
|
|
26
29
|
"@ant-design/icons": "5.6.1",
|
|
27
30
|
"@formily/shared": "2.3.7",
|
|
28
31
|
"@emotion/css": "11.13.0",
|
|
29
|
-
"
|
|
32
|
+
"ahooks": "3.7.8",
|
|
33
|
+
"@nocobase/actions": "2.2.0-beta.1"
|
|
30
34
|
};
|
package/dist/locale/en-US.json
CHANGED
|
@@ -3,16 +3,22 @@
|
|
|
3
3
|
"Add departments": "Add departments",
|
|
4
4
|
"Add members": "Add members",
|
|
5
5
|
"All users": "All users",
|
|
6
|
+
"Actions": "Actions",
|
|
7
|
+
"Are you sure you want to delete it?": "Are you sure you want to delete it?",
|
|
6
8
|
"Are you sure you want to remove it?": "Are you sure you want to remove it?",
|
|
7
9
|
"Are you sure you want to remove these departments?": "Are you sure you want to remove these departments?",
|
|
8
10
|
"Are you sure you want to remove these members?": "Are you sure you want to remove these members?",
|
|
9
11
|
"Delete department": "Delete department",
|
|
12
|
+
"Deleted successfully": "Deleted successfully",
|
|
10
13
|
"Department": "Department",
|
|
11
14
|
"Department name": "Department name",
|
|
12
15
|
"Departments": "Departments",
|
|
13
16
|
"Departments management": "Departments management",
|
|
17
|
+
"Configure": "Configure",
|
|
14
18
|
"Edit department": "Edit department",
|
|
19
|
+
"Filter": "Filter",
|
|
15
20
|
"Invalid main department, it must be one of the user's departments": "Invalid main department, it must be one of the user's departments",
|
|
21
|
+
"Load more": "Load more",
|
|
16
22
|
"Main": "Main",
|
|
17
23
|
"Main department": "Main department",
|
|
18
24
|
"New department": "New department",
|
|
@@ -22,16 +28,24 @@
|
|
|
22
28
|
"Please create department first": "Please create department first, then set the owners",
|
|
23
29
|
"Please select departments": "Please select departments",
|
|
24
30
|
"Please select members": "Please select members",
|
|
31
|
+
"Refresh": "Refresh",
|
|
25
32
|
"Remove department": "Remove department",
|
|
26
33
|
"Remove departments": "Remove departments",
|
|
27
34
|
"Remove member": "Remove member",
|
|
28
35
|
"Remove members": "Remove members",
|
|
36
|
+
"Removed successfully": "Removed successfully",
|
|
29
37
|
"Roles management": "Roles management",
|
|
38
|
+
"Saved successfully": "Saved successfully",
|
|
30
39
|
"Search for departments, users": "Search for departments, users",
|
|
31
40
|
"Search results": "Search results",
|
|
41
|
+
"Select Departments": "Select Departments",
|
|
42
|
+
"Select a role to configure permissions": "Select a role to configure permissions",
|
|
32
43
|
"Set as main department": "Set as main department",
|
|
44
|
+
"Set successfully": "Set successfully",
|
|
33
45
|
"Superior department": "Superior department",
|
|
34
46
|
"The department has members, please remove them first": "The department has members, please remove them first",
|
|
35
47
|
"The department has sub-departments, please delete them first": "The department has sub-departments, please delete them first",
|
|
36
|
-
"This field is currently not supported for use in form blocks.": "This field is currently not supported for use in form blocks."
|
|
37
|
-
}
|
|
48
|
+
"This field is currently not supported for use in form blocks.": "This field is currently not supported for use in form blocks.",
|
|
49
|
+
"Total {{count}} members": "Total {{count}} members",
|
|
50
|
+
"{{count}} filter items": "{{count}} filter items"
|
|
51
|
+
}
|
package/dist/locale/zh-CN.json
CHANGED
|
@@ -3,16 +3,22 @@
|
|
|
3
3
|
"Add departments": "添加部门",
|
|
4
4
|
"Add members": "添加成员",
|
|
5
5
|
"All users": "所有用户",
|
|
6
|
+
"Actions": "操作",
|
|
7
|
+
"Are you sure you want to delete it?": "你确定要删除吗?",
|
|
6
8
|
"Are you sure you want to remove it?": "你确定要移除吗?",
|
|
7
9
|
"Are you sure you want to remove these departments?": "你确定要移除这些部门吗?",
|
|
8
10
|
"Are you sure you want to remove these members?": "你确定要移除这些成员吗?",
|
|
9
11
|
"Delete department": "删除部门",
|
|
12
|
+
"Deleted successfully": "删除成功",
|
|
10
13
|
"Department": "部门",
|
|
11
14
|
"Department name": "部门名称",
|
|
12
15
|
"Departments": "部门",
|
|
13
16
|
"Departments management": "部门管理",
|
|
17
|
+
"Configure": "配置",
|
|
14
18
|
"Edit department": "编辑部门",
|
|
19
|
+
"Filter": "筛选",
|
|
15
20
|
"Invalid main department, it must be one of the user's departments": "无效的主属部门,必须从用户所属的部门中选择",
|
|
21
|
+
"Load more": "加载更多",
|
|
16
22
|
"Main": "主属部门",
|
|
17
23
|
"Main department": "主属部门",
|
|
18
24
|
"New department": "新建部门",
|
|
@@ -22,16 +28,24 @@
|
|
|
22
28
|
"Please create department first": "请先新建部门后再设置负责人",
|
|
23
29
|
"Please select departments": "请选择部门",
|
|
24
30
|
"Please select members": "请选择成员",
|
|
31
|
+
"Refresh": "刷新",
|
|
25
32
|
"Remove department": "移除部门",
|
|
26
33
|
"Remove departments": "移除部门",
|
|
27
34
|
"Remove member": "移除成员",
|
|
28
35
|
"Remove members": "移除成员",
|
|
36
|
+
"Removed successfully": "移除成功",
|
|
29
37
|
"Roles management": "角色管理",
|
|
38
|
+
"Saved successfully": "保存成功",
|
|
30
39
|
"Search for departments, users": "搜索部门、用户",
|
|
31
40
|
"Search results": "搜索结果",
|
|
41
|
+
"Select Departments": "选择部门",
|
|
42
|
+
"Select a role to configure permissions": "选择一个角色以配置权限",
|
|
32
43
|
"Set as main department": "设置为主属部门",
|
|
44
|
+
"Set successfully": "设置成功",
|
|
33
45
|
"Superior department": "上级部门",
|
|
34
46
|
"The department has members, please remove them first": "部门下有成员,请先移除",
|
|
35
47
|
"The department has sub-departments, please delete them first": "部门下有子部门,请先删除子部门",
|
|
36
|
-
"This field is currently not supported for use in form blocks.": "该字段目前不支持在表单区块中使用。"
|
|
37
|
-
}
|
|
48
|
+
"This field is currently not supported for use in form blocks.": "该字段目前不支持在表单区块中使用。",
|
|
49
|
+
"Total {{count}} members": "共 {{count}} 位成员",
|
|
50
|
+
"{{count}} filter items": "{{count}} 个筛选项"
|
|
51
|
+
}
|
package/dist/locale/zh-TW.json
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"Departments management": "Departments management",
|
|
14
14
|
"Edit department": "Edit department",
|
|
15
15
|
"Invalid main department, it must be one of the user's departments": "Invalid main department, it must be one of the user's departments",
|
|
16
|
+
"Load more": "載入更多",
|
|
16
17
|
"Main": "Main",
|
|
17
18
|
"Main department": "Main department",
|
|
18
19
|
"New department": "New department",
|
|
@@ -22,16 +23,20 @@
|
|
|
22
23
|
"Please create department first": "Please create department first, then set the owners",
|
|
23
24
|
"Please select departments": "Please select departments",
|
|
24
25
|
"Please select members": "Please select members",
|
|
26
|
+
"Refresh": "重新整理",
|
|
25
27
|
"Remove department": "Remove department",
|
|
26
28
|
"Remove departments": "Remove departments",
|
|
27
29
|
"Remove member": "Remove member",
|
|
28
30
|
"Remove members": "Remove members",
|
|
31
|
+
"Removed successfully": "移除成功",
|
|
29
32
|
"Roles management": "Roles management",
|
|
33
|
+
"Saved successfully": "儲存成功",
|
|
30
34
|
"Search for departments, users": "Search for departments, users",
|
|
31
35
|
"Search results": "Search results",
|
|
36
|
+
"Select a role to configure permissions": "選擇一個角色以設定權限",
|
|
32
37
|
"Set as main department": "Set as main department",
|
|
33
38
|
"Superior department": "Superior department",
|
|
34
39
|
"The department has members, please remove them first": "The department has members, please remove them first",
|
|
35
40
|
"The department has sub-departments, please delete them first": "The department has sub-departments, please delete them first",
|
|
36
41
|
"This field is currently not supported for use in form blocks.": "This field is currently not supported for use in form blocks."
|
|
37
|
-
}
|
|
42
|
+
}
|
|
@@ -17,4 +17,3 @@
|
|
|
17
17
|
import { Context, Next } from '@nocobase/actions';
|
|
18
18
|
export declare const listExcludeDept: (ctx: Context, next: Next) => Promise<void>;
|
|
19
19
|
export declare const setDepartments: (ctx: Context, next: Next) => Promise<void>;
|
|
20
|
-
export declare const setMainDepartment: (ctx: Context, next: Next) => Promise<void>;
|
|
@@ -27,8 +27,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
27
27
|
var users_exports = {};
|
|
28
28
|
__export(users_exports, {
|
|
29
29
|
listExcludeDept: () => listExcludeDept,
|
|
30
|
-
setDepartments: () => setDepartments
|
|
31
|
-
setMainDepartment: () => setMainDepartment
|
|
30
|
+
setDepartments: () => setDepartments
|
|
32
31
|
});
|
|
33
32
|
module.exports = __toCommonJS(users_exports);
|
|
34
33
|
var import_actions = require("@nocobase/actions");
|
|
@@ -102,36 +101,8 @@ const setDepartments = async (ctx, next) => {
|
|
|
102
101
|
});
|
|
103
102
|
await next();
|
|
104
103
|
};
|
|
105
|
-
const setMainDepartment = async (ctx, next) => {
|
|
106
|
-
const { userId, departmentId } = ctx.action.params.values || {};
|
|
107
|
-
const repo = ctx.db.getRepository("users");
|
|
108
|
-
const throughRepo = ctx.db.getRepository("departmentsUsers");
|
|
109
|
-
await ctx.db.sequelize.transaction(async (t) => {
|
|
110
|
-
await repo.update({
|
|
111
|
-
filterByTk: userId,
|
|
112
|
-
values: { mainDepartmentId: departmentId },
|
|
113
|
-
transaction: t
|
|
114
|
-
});
|
|
115
|
-
const existingAssoc = await throughRepo.findOne({
|
|
116
|
-
filter: { userId, departmentId },
|
|
117
|
-
transaction: t
|
|
118
|
-
});
|
|
119
|
-
if (!existingAssoc) {
|
|
120
|
-
await throughRepo.create({
|
|
121
|
-
values: {
|
|
122
|
-
userId,
|
|
123
|
-
departmentId,
|
|
124
|
-
isOwner: false
|
|
125
|
-
},
|
|
126
|
-
transaction: t
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
await next();
|
|
131
|
-
};
|
|
132
104
|
// Annotate the CommonJS export names for ESM import in node:
|
|
133
105
|
0 && (module.exports = {
|
|
134
106
|
listExcludeDept,
|
|
135
|
-
setDepartments
|
|
136
|
-
setMainDepartment
|
|
107
|
+
setDepartments
|
|
137
108
|
});
|
|
@@ -32,6 +32,7 @@ module.exports = __toCommonJS(departmentRoles_exports);
|
|
|
32
32
|
var import_database = require("@nocobase/database");
|
|
33
33
|
var departmentRoles_default = (0, import_database.defineCollection)({
|
|
34
34
|
name: "departmentsRoles",
|
|
35
|
+
dataCategory: "business",
|
|
35
36
|
dumpRules: "required",
|
|
36
37
|
migrationRules: ["overwrite"]
|
|
37
38
|
});
|
|
@@ -33,5 +33,17 @@ export declare const ownersField: {
|
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
+
export declare const parentIdField: {
|
|
37
|
+
type: string;
|
|
38
|
+
name: string;
|
|
39
|
+
interface: string;
|
|
40
|
+
isForeignKey: boolean;
|
|
41
|
+
uiSchema: {
|
|
42
|
+
type: string;
|
|
43
|
+
title: string;
|
|
44
|
+
'x-component': string;
|
|
45
|
+
'x-read-pretty': boolean;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
36
48
|
declare const _default: import("@nocobase/database").CollectionOptions;
|
|
37
49
|
export default _default;
|
|
@@ -27,7 +27,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
27
27
|
var departments_exports = {};
|
|
28
28
|
__export(departments_exports, {
|
|
29
29
|
default: () => departments_default,
|
|
30
|
-
ownersField: () => ownersField
|
|
30
|
+
ownersField: () => ownersField,
|
|
31
|
+
parentIdField: () => parentIdField
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(departments_exports);
|
|
33
34
|
var import_database = require("@nocobase/database");
|
|
@@ -58,8 +59,21 @@ const ownersField = {
|
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
};
|
|
62
|
+
const parentIdField = {
|
|
63
|
+
type: "bigInt",
|
|
64
|
+
name: "parentId",
|
|
65
|
+
interface: "integer",
|
|
66
|
+
isForeignKey: true,
|
|
67
|
+
uiSchema: {
|
|
68
|
+
type: "number",
|
|
69
|
+
title: "parentId",
|
|
70
|
+
"x-component": "InputNumber",
|
|
71
|
+
"x-read-pretty": true
|
|
72
|
+
}
|
|
73
|
+
};
|
|
61
74
|
var departments_default = (0, import_database.defineCollection)({
|
|
62
75
|
name: "departments",
|
|
76
|
+
dataCategory: "business",
|
|
63
77
|
migrationRules: ["overwrite"],
|
|
64
78
|
title: '{{t("Departments")}}',
|
|
65
79
|
dumpRules: "required",
|
|
@@ -94,6 +108,7 @@ var departments_default = (0, import_database.defineCollection)({
|
|
|
94
108
|
"x-component": "Input"
|
|
95
109
|
}
|
|
96
110
|
},
|
|
111
|
+
parentIdField,
|
|
97
112
|
{
|
|
98
113
|
type: "boolean",
|
|
99
114
|
name: "isLeaf"
|
|
@@ -167,5 +182,6 @@ var departments_default = (0, import_database.defineCollection)({
|
|
|
167
182
|
});
|
|
168
183
|
// Annotate the CommonJS export names for ESM import in node:
|
|
169
184
|
0 && (module.exports = {
|
|
170
|
-
ownersField
|
|
185
|
+
ownersField,
|
|
186
|
+
parentIdField
|
|
171
187
|
});
|