xydata-tools 1.0.0

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/.babelrc ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "presets": ["@babel/preset-env", "@babel/preset-react"]
3
+ }
package/lib/bundle.js ADDED
@@ -0,0 +1 @@
1
+ import{PlusOutlined as e}from"@ant-design/icons";import t from"@ant-design/pro-table";import{message as r,Form as n,Modal as o,TreeSelect as i,Input as a,ConfigProvider as c,Button as u,Empty as s,Divider as f,Popconfirm as l}from"antd";import p,{useState as d,useRef as h}from"react";import v from"umi-request";function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){b(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function g(){g=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function s(e,t,r,o){var i=t&&t.prototype instanceof p?t:p,a=Object.create(i.prototype),c=new T(o||[]);return n(a,"_invoke",{value:x(e,r,c)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var l={};function p(){}function d(){}function h(){}var v={};u(v,i,(function(){return this}));var m=Object.getPrototypeOf,y=m&&m(m(j([])));y&&y!==t&&r.call(y,i)&&(v=y);var w=h.prototype=p.prototype=Object.create(v);function P(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function o(n,i,a,c){var u=f(e[n],e,i);if("throw"!==u.type){var s=u.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){o("next",e,a,c)}),(function(e){o("throw",e,a,c)})):t.resolve(l).then((function(e){s.value=e,a(s)}),(function(e){return o("throw",e,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){o(e,r,t,n)}))}return i=i?i.then(n,n):n()}})}function x(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return k()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=O(a,r);if(c){if(c===l)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=f(e,t,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),l;var o=f(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,l;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,l):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,l)}function z(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(z,this),this.reset(!0)}function j(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:k}}function k(){return{value:void 0,done:!0}}return d.prototype=h,n(w,"constructor",{value:h,configurable:!0}),n(h,"constructor",{value:d,configurable:!0}),d.displayName=u(h,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,u(e,c,"GeneratorFunction")),e.prototype=Object.create(w),e},e.awrap=function(e){return{__await:e}},P(b.prototype),u(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new b(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},P(w),u(w,c,"Generator"),u(w,i,(function(){return this})),u(w,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=j,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(A),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),l},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:j(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}function w(e,t,r,n,o,i,a){try{var c=e[i](a),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,o)}function P(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){w(i,n,o,a,c,"next",e)}function c(e){w(i,n,o,a,c,"throw",e)}a(void 0)}))}}function b(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function x(){return x=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},x.apply(this,arguments)}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,c=[],u=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return z(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return z(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function A(e){return null==e}function T(e,t){return A(e)?t:e}function j(e,t,r){return T(e[t],r)}const k="__root__",D="id",E="parentId",S="children";function N(e,t={}){const r=T(t.idKey,D),n=T(t.parentKey,E),o=T(t.childrenKey,S),i=T(t.transform,(e=>e)),a=T(t.insert,((e,t)=>e.push(t))),c={},u={};return e.forEach(((e,t)=>{const s=i(e,t);if(A(s))return;const f=L(s,e,r);var l;!function(e,t){if(!e){if(t instanceof Error)throw t;throw new Error(t)}}((l=f,!1===A(l)),`id is required, in ${t}.`);const p=u[f];p?s[o]=p:u[f]=s[o]=[];const d=T(L(s,e,n),k),h=u[d];a(h||(u[d]=[]),s),c[f]=s})),{idKey:r,parentKey:n,childrenKey:o,nodes:c,childNodes:u}}function L(e,t,r){const n=j(e,r);return A(n)?j(t,r):n}function H(e,t={}){return function(e,t){const r=e.childNodes;return"function"==typeof t?t(r,e)||[]:r[T(t,k)]||[]}(N(e,t),t.root)}function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Token";return sessionStorage.getItem(function(e){return SID?"".concat(SID,"_").concat(e):e}(e))}function C(e,t,r,n){return M.apply(this,arguments)}function M(){return M=P(g().mark((function e(t,n,o,i){var a;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a={SID:SID,Authorization:X(),UserId:X("userId"),OrgId:X("orgId")},e.abrupt("return",v(t,{method:n,params:i,data:o,headers:y(y({},a),{},{service:X("service")||"unknow"}),getResponse:!0}).then((function(e){var t=e.data;return"000000"===t.rspCode||r.error(t.rspMsg),t})).catch(function(){var e=P(g().mark((function e(t){var n;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(401!==t.response.status&&402!==t.response.status&&403!==t.response.status){e.next=7;break}return e.next=3,t.response.json();case 3:n=e.sent,r.error(n.rspMsg),e.next=8;break;case 7:r.error("服务器异常");case 8:return e.abrupt("return",t.response);case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function B(e){return q.apply(this,arguments)}function q(){return(q=P(g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",C("/api/dict/queryBaseDictList","POST",t));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function R(e){return U.apply(this,arguments)}function U(){return(U=P(g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",C("/api/dict/deleteBaseDict","POST",t));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function I(e){return K.apply(this,arguments)}function K(){return(K=P(g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",C("/api/dict/createBaseDict","POST",t));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function F(e){return Q.apply(this,arguments)}function Q(){return(Q=P(g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",C("/api/dict/updateBaseDict","POST",t));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var W=n.Item,G={labelCol:{span:7},wrapperCol:{span:13}},Y=function(e){var t=O(n.useForm(),1)[0],r=e.onSubmit,c=e.onCancel,u=e.updateModalVisible,s=e.values,f=e.type,l=e.treeData,d=function(){var e=P(g().mark((function e(){var n;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.validateFields();case 2:n=e.sent,r("U"===f?y(y({},s),n):n);case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return p.createElement(o,{getContainer:function(){return top.document.body},maskClosable:!1,width:640,bodyStyle:{padding:"32px 40px 48px"},destroyOnClose:!0,title:"C"===f?"新增数据字典":"编辑数据字典",open:u,onOk:function(){return d()},onCancel:function(){return c()}},p.createElement(n,x({},G,{form:t,initialValues:{parentId:(null==s?void 0:s.parentId)||"-1",dictName:null==s?void 0:s.dictName,dictCode:null==s?void 0:s.dictCode,remark:null==s?void 0:s.remark}}),p.createElement(p.Fragment,null,p.createElement(W,{name:"parentId",label:"父级"},p.createElement(i,{style:{width:"100%"},dropdownStyle:{maxHeight:400,overflow:"auto"},treeData:l,treeDefaultExpandedKeys:[s.parentId||"-1"],showSearch:!0,filterTreeNode:function(e,t){return t.dictName.includes(e)}})),p.createElement(W,{name:"dictName",label:"字典名称",rules:[{required:!0,message:"请输入字典表名!",whitespace:!0}]},p.createElement(a,null)),p.createElement(W,{name:"dictCode",label:"字典编码",rules:[{required:!0,message:"请输入字典值!",whitespace:!0}]},p.createElement(a,{disabled:"U"===f})),p.createElement(W,{name:"remark",label:"备注"},p.createElement(a,null)))))},Z=function(){return p.createElement(s,{image:"data:image/png;base64,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"})},V=function(){var e=P(g().mark((function e(t,n){var o,i;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=r.loading("正在添加"),"C"!==n){e.next=7;break}return e.next=4,I(y({},t));case 4:e.t0=e.sent,e.next=10;break;case 7:return e.next=9,F(y({},t));case 9:e.t0=e.sent;case 10:if(i=e.t0,o(),!i){e.next=15;break}return r.success("操作成功!"),e.abrupt("return",!0);case 15:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),J=function(){var e=P(g().mark((function e(t){var n,o;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=!1,e.next=3,R(t);case 3:return"000000"===(o=e.sent).rspCode?(r.loading("正在删除"),r.success("删除成功,正在刷新"),n=!0):(r.error(o.rspMsg),n=!1),e.abrupt("return",n);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),_=function(){var r=O(d(!1),2),n=r[0],o=r[1],i=O(d({}),2),a=i[0],s=i[1],v=O(d([]),2),m=v[0],w=v[1],x=O(d([]),2),z=x[0],A=x[1],T=O(d("C"),2),j=T[0],D=T[1],E=h(),S=function(){var e=P(g().mark((function e(t,r){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:A(L(m)),D(t),s(r),o(!0);case 4:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),N=function(){o(!1),s({})},L=function(e){return H(e,{root:k,idKey:"id",parentKey:"parentId",childrenKey:"children",transform:function(t){return!e.some((function(e){return"-1"===e.id}))&&"-1"===t.parentId&&(t.parentId=null),y(y({},t),{},b({title:t.dictName,value:t.id},"value",t.id))}})},X=function e(t){t.forEach((function(t){var r;(null==t||null===(r=t.children)||void 0===r?void 0:r.length)>0?e(t.children):delete t.children}))},C=[{title:"字典名称",dataIndex:"dictName",search:!0},{title:"字典编码",dataIndex:"dictCode",search:!1},{title:"备注",dataIndex:"remark",search:!1},{title:"操作",dataIndex:"option",valueType:"option",render:function(e,t){return"BASE_DICT_ROOT"!==t.dictName&&p.createElement(p.Fragment,null,p.createElement("a",{onClick:function(){return S("U",t)}},"编辑"),p.createElement(f,{type:"vertical"}),p.createElement(l,{title:"确定删除吗?",onConfirm:P(g().mark((function e(){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,J(t);case 2:if(!e.sent||!E.current){e.next=8;break}return e.next=6,E.current.reset();case 6:return e.next=8,E.current.reload();case 8:case"end":return e.stop()}}),e)})))},p.createElement("a",{href:"#",className:"ant-btn-dangerous"},"删除")))}}];return p.createElement("div",null,p.createElement(c,{renderEmpty:Z},p.createElement(t,{headerTitle:"列表",actionRef:E,rowKey:"id",defaultExpandedRowKeys:["-1"],toolBarRender:function(){return[p.createElement(u,{type:"primary",onClick:function(){return S("C",{})}},p.createElement(e,null)," 新建")]},beforeSearchSubmit:function(e){return{dictName:e.dictName||"",include:!0,allTree:!0}},params:{},request:P(g().mark((function e(){var t,r,n,o=arguments;return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.length>0&&void 0!==o[0]?o[0]:{},e.next=3,B(y(y({},t),{},{include:!0}));case 3:if(!(r=e.sent)){e.next=12;break}return r.data.map((function(e){return e.dictName===t.dictName&&(e.parentId=null),e})),w(r.data),n=L(r.data),X(n),e.abrupt("return",{data:n,success:!0});case 12:return e.abrupt("return",{data:[],success:!1});case 13:case"end":return e.stop()}}),e)}))),columns:C,rowSelection:!1})),n?p.createElement(Y,{onSubmit:function(){var e=P(g().mark((function e(t){return g().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,V(t,j);case 2:e.sent&&(N(),E.current&&E.current.reload());case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),onCancel:N,type:j,updateModalVisible:n,values:a,treeData:z}):null)};function $(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Token",t=arguments.length>1?arguments[1]:void 0;sessionStorage.setItem(function(e){return SID?"".concat(SID,"_").concat(e):e}(e),t)}var ee=function(e){return $("service",e)};export{_ as DictionaryFront,ee as registerService};
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "xydata-tools",
3
+ "version": "1.0.0",
4
+ "main": "lib/bundle.js",
5
+ "license": "MIT",
6
+ "devDependencies": {
7
+ "@babel/core": "^7.22.5",
8
+ "@babel/plugin-transform-runtime": "^7.22.5",
9
+ "@babel/preset-env": "^7.22.5",
10
+ "@babel/preset-react": "^7.22.5",
11
+ "@rollup/plugin-alias": "^5.0.0",
12
+ "@rollup/plugin-commonjs": "^21.0.2",
13
+ "@rollup/plugin-terser": "^0.4.3",
14
+ "autoprefixer": "8.0.0",
15
+ "core-js": "^3.31.0",
16
+ "cross-env": "^7.0.3",
17
+ "mini-css-extract-plugin": "^2.7.6",
18
+ "postcss": "^8.4.24",
19
+ "postcss-loader": "^7.3.3",
20
+ "postcss-preset-env": "^8.5.1",
21
+ "rollup": "^3.25.3",
22
+ "rollup-plugin-babel": "^4.4.0",
23
+ "rollup-plugin-image": "^1.0.2",
24
+ "rollup-plugin-node-resolve": "^5.2.0",
25
+ "rollup-plugin-postcss": "^4.0.2",
26
+ "rollup-plugin-url": "^3.0.1"
27
+ },
28
+ "scripts": {
29
+ "注释": "下面的-c是使用配置文件,-w是watch,监视文件变化而打包",
30
+ "build": "yarn run rollup -c",
31
+ "dev": "yarn run rollup -c -w"
32
+ },
33
+ "dependencies": {
34
+ "@ant-design/icons": "^4.7.0",
35
+ "@ant-design/pro-table": "^2.76.4",
36
+ "@zhengxs/js.tree": "^0.4.0",
37
+ "antd": "^4.20.5",
38
+ "js-cookie": "^3.0.1",
39
+ "less": "^4.2.0",
40
+ "react": "^17.0.0",
41
+ "react-dom": "^17.0.0",
42
+ "umi-request": "^1.4.0"
43
+ }
44
+ }
@@ -0,0 +1,43 @@
1
+ import babel from 'rollup-plugin-babel'
2
+ import postcss from 'rollup-plugin-postcss'
3
+ import resolve from 'rollup-plugin-node-resolve';
4
+ import alias from "@rollup/plugin-alias";
5
+ import terser from '@rollup/plugin-terser';
6
+ import url from 'rollup-plugin-url';
7
+ import image from 'rollup-plugin-image';
8
+
9
+ export default {
10
+ input: './src/index.js',
11
+ output: {
12
+ file: './lib/bundle.js',
13
+ // 输出类型 (amd, cjs, es, iife, umd, system):
14
+ // iife——最早的模块,jQuery时代流行,封装成一个自执行函数,缺点是污染全局变量,且需手动维护script标签加载顺序
15
+ // cjs——即CommonJS,解决了以上问题,但只运行在node.js环境,不支持浏览器。
16
+ // amd——通过requirejs实现,支持浏览器,解决了前面所有问题,但写法复杂,可读性很差,不符合通用的模块化思维
17
+ // umd——兼容了cjs和amd,但产生了更难理解的代码,包也增大
18
+ // system——面向未来的模块依赖方式,微前端流行
19
+ // es——现代化标准
20
+ format: 'es'
21
+ },
22
+ plugins: [
23
+ url(),
24
+ resolve(),
25
+ postcss(),
26
+ alias({
27
+ entries: [
28
+ { find: '@', replacement: 'src' }
29
+ ]
30
+ }),
31
+ image({
32
+ output: `lib/images`, // 打包后的文件
33
+ extensions: /\.(png|jpg|jpeg|gif|svg)$/,
34
+ limit: 8192, // 文件大小的限制(字节)。当一个文件没有超过限制时,它将被转换为 base64字符串,否则,它将被复制到output下
35
+ exclude: 'node_modules/**'
36
+ }),
37
+ babel(),
38
+ terser(),
39
+ ],
40
+ // 以下模块都为外部引用(不会打包进包里)
41
+ external: ['antd', '@ant-design/icons', '@ant-design/pro-table', 'umi-request', 'react', 'react-dom']
42
+ }
43
+
Binary file
@@ -0,0 +1,111 @@
1
+ import { Form, Input, Modal, TreeSelect } from "antd";
2
+ import React from "react";
3
+
4
+ const FormItem = Form.Item;
5
+ const formLayout = {
6
+ labelCol: {
7
+ span: 7,
8
+ },
9
+ wrapperCol: {
10
+ span: 13,
11
+ },
12
+ };
13
+
14
+ const UpdateForm = (props) => {
15
+ const [form] = Form.useForm();
16
+ const {
17
+ onSubmit: handleUpdate,
18
+ onCancel: handleUpdateModalVisible,
19
+ updateModalVisible,
20
+ values,
21
+ type,
22
+ treeData,
23
+ } = props;
24
+
25
+ const handleSave = async () => {
26
+ const fieldsValue = await form.validateFields();
27
+ if (type === "U") {
28
+ handleUpdate({ ...values, ...fieldsValue });
29
+ } else {
30
+ handleUpdate(fieldsValue);
31
+ }
32
+ };
33
+ const renderContent = () => {
34
+ return (
35
+ <>
36
+ <FormItem name="parentId" label="父级">
37
+ <TreeSelect
38
+ style={{ width: "100%" }}
39
+ dropdownStyle={{ maxHeight: 400, overflow: "auto" }}
40
+ treeData={treeData}
41
+ treeDefaultExpandedKeys={[values.parentId || "-1"]}
42
+ showSearch
43
+ filterTreeNode={(inputValue, treeNode) => {
44
+ return treeNode.dictName.includes(inputValue);
45
+ }}
46
+ />
47
+ </FormItem>
48
+ <FormItem
49
+ name="dictName"
50
+ label="字典名称"
51
+ rules={[
52
+ {
53
+ required: true,
54
+ message: "请输入字典表名!",
55
+ whitespace: true,
56
+ },
57
+ ]}
58
+ >
59
+ <Input />
60
+ </FormItem>
61
+
62
+ <FormItem
63
+ name="dictCode"
64
+ label="字典编码"
65
+ rules={[
66
+ {
67
+ required: true,
68
+ message: "请输入字典值!",
69
+ whitespace: true,
70
+ },
71
+ ]}
72
+ >
73
+ <Input disabled={type === "U"} />
74
+ </FormItem>
75
+ <FormItem name="remark" label="备注">
76
+ <Input />
77
+ </FormItem>
78
+ </>
79
+ );
80
+ };
81
+ return (
82
+ <Modal
83
+ getContainer={() => top.document.body}
84
+ maskClosable={false}
85
+ width={640}
86
+ bodyStyle={{
87
+ padding: "32px 40px 48px",
88
+ }}
89
+ destroyOnClose
90
+ title={type === "C" ? "新增数据字典" : "编辑数据字典"}
91
+ open={updateModalVisible}
92
+ onOk={() => handleSave()}
93
+ onCancel={() => handleUpdateModalVisible()}
94
+ >
95
+ <Form
96
+ {...formLayout}
97
+ form={form}
98
+ initialValues={{
99
+ parentId: values?.parentId || "-1",
100
+ dictName: values?.dictName,
101
+ dictCode: values?.dictCode,
102
+ remark: values?.remark,
103
+ }}
104
+ >
105
+ {renderContent()}
106
+ </Form>
107
+ </Modal>
108
+ );
109
+ };
110
+
111
+ export default UpdateForm;
@@ -0,0 +1,255 @@
1
+ import { PlusOutlined } from "@ant-design/icons";
2
+ import ProTable from "@ant-design/pro-table";
3
+ import { ROOT_ID, toTree } from "@zhengxs/js.tree";
4
+ import { Button, ConfigProvider, Divider, Empty, Popconfirm, message } from "antd";
5
+ import React, { useRef, useState } from "react";
6
+ import { addApi, queryApi, removeApi, updateApi } from "@/services/service.js";
7
+ import UpdateForm from "./components/UpdateForm.jsx";
8
+ import emptyPng from "../../assets/empty.png";
9
+
10
+ const customizeRenderEmpty = () => <Empty image={emptyPng} />;
11
+
12
+ /**
13
+ * 添加
14
+ * @param fields
15
+ */
16
+ const handleAdd = async (fields, type) => {
17
+ const hide = message.loading("正在添加");
18
+
19
+ const res = type === "C" ? await addApi({ ...fields }) : await updateApi({ ...fields });
20
+ // //console.log(res)
21
+ hide();
22
+ if (res) {
23
+ message.success("操作成功!");
24
+ return true;
25
+ }
26
+ };
27
+
28
+ /**
29
+ * 删除
30
+ * @param selectedRows
31
+ */
32
+
33
+ const handleRemove = async (record) => {
34
+ let isSuccess = false;
35
+ // const hide = message.loading('正在删除');
36
+ const res = await removeApi(record);
37
+ if (res.rspCode === "000000") {
38
+ message.loading("正在删除");
39
+ message.success("删除成功,正在刷新");
40
+ isSuccess = true;
41
+ } else {
42
+ message.error(res.rspMsg);
43
+ isSuccess = false;
44
+ }
45
+ return isSuccess;
46
+ };
47
+
48
+ const DictionaryList = () => {
49
+ const [createModalVisible, handleModalVisible] = useState(false);
50
+ const [currentItem, setCurrentItem] = useState({});
51
+ const [originalData, setOriginalData] = useState([]);
52
+ const [treeData, setTreeData] = useState([]);
53
+ const [modalType, setModalType] = useState("C");
54
+
55
+ const actionRef = useRef();
56
+
57
+ const createAndUpdate = async (type, record) => {
58
+ // type = U编辑 C新增
59
+ // if (type === 'U') {
60
+ // //本级及下级所有子节点均不可选择
61
+ // const selectItems = await getData({ dictName: record.dictName, include: true });
62
+ // const newData = JSON.parse(JSON.stringify(originalData));
63
+ // newData.forEach((item, i) => {
64
+ // selectItems.forEach((ele) => {
65
+ // if (item.id === ele.id) {
66
+ // item.disabled = true;
67
+ // }
68
+ // });
69
+ // });
70
+ // setTreeData(rowTotree(newData));
71
+ // } else {
72
+ setTreeData(rowTotree(originalData));
73
+ // }
74
+ setModalType(type);
75
+ setCurrentItem(record);
76
+ handleModalVisible(true);
77
+ };
78
+
79
+ const handleCancel = () => {
80
+ handleModalVisible(false);
81
+ setCurrentItem({});
82
+ };
83
+
84
+ const getData = async (params) => {
85
+ const res = await queryApi(params);
86
+ //console.log(res);
87
+ if (res) {
88
+ return res.data;
89
+ }
90
+ };
91
+
92
+ const rowTotree = (dataList) => {
93
+ return toTree(dataList, {
94
+ // 如果 parentId 为 null 或 undefined 会合并一起
95
+ // 使用 ROOT_ID 作为 key 保存
96
+ // 支持函数,动态返回
97
+ root: ROOT_ID,
98
+
99
+ // lodash 版本,支持 path, 如: nested.id
100
+ idKey: "id", // 可选,默认: id
101
+
102
+ // lodash 版本,支持 path, 如: nested.parentId
103
+ parentKey: "parentId", // 可选,默认:parentId
104
+
105
+ // 挂载子级的属性名称,默认:children
106
+ childrenKey: "children",
107
+
108
+ // 数据添加进 children 数组前的处理,可选
109
+ transform(data) {
110
+ // 通过浅拷贝避免修改原始数据
111
+ // 可以在这里动态添加属性
112
+ const isTop = dataList.some((x) => x.id === "-1");
113
+ !isTop && data.parentId === "-1" && (data.parentId = null);
114
+ return {
115
+ ...data,
116
+ title: data.dictName,
117
+ value: data.id,
118
+ value: data.id,
119
+ };
120
+ },
121
+ });
122
+ };
123
+
124
+ const deepData = (list) => {
125
+ list.forEach((item) => {
126
+ if (item?.children?.length > 0) {
127
+ deepData(item.children);
128
+ } else {
129
+ delete item.children;
130
+ }
131
+ });
132
+ };
133
+
134
+ const columns = [
135
+ {
136
+ title: "字典名称",
137
+ dataIndex: "dictName",
138
+ search: true,
139
+ },
140
+ {
141
+ title: "字典编码",
142
+ dataIndex: "dictCode",
143
+ search: false,
144
+ },
145
+ {
146
+ title: "备注",
147
+ dataIndex: "remark",
148
+ search: false,
149
+ },
150
+ {
151
+ title: "操作",
152
+ dataIndex: "option",
153
+ valueType: "option",
154
+ render: (_, record) =>
155
+ record.dictName !== "BASE_DICT_ROOT" && (
156
+ <>
157
+ <a onClick={() => createAndUpdate("U", record)}>编辑</a>
158
+ <Divider type="vertical" />
159
+ <Popconfirm
160
+ title="确定删除吗?"
161
+ onConfirm={async () => {
162
+ const success = await handleRemove(record);
163
+ //console.log('🚀 ~ file: index.jsx ~ line 143 ~ onConfirm={ ~ success', success);
164
+ //console.log(actionRef.current)
165
+ if (success && actionRef.current) {
166
+ await actionRef.current.reset();
167
+ await actionRef.current.reload();
168
+ }
169
+ }}
170
+ >
171
+ <a href="#" className="ant-btn-dangerous">
172
+ 删除
173
+ </a>
174
+ </Popconfirm>
175
+ </>
176
+ ),
177
+ },
178
+ ];
179
+ return (
180
+ <div>
181
+ <ConfigProvider renderEmpty={customizeRenderEmpty}>
182
+ <ProTable
183
+ headerTitle="列表"
184
+ actionRef={actionRef}
185
+ rowKey="id"
186
+ defaultExpandedRowKeys={["-1"]}
187
+ toolBarRender={() => [
188
+ <Button type="primary" onClick={() => createAndUpdate("C", {})}>
189
+ <PlusOutlined /> 新建
190
+ </Button>,
191
+ ]}
192
+ beforeSearchSubmit={(params) => {
193
+ const { dictName } = params;
194
+ const obj = {
195
+ dictName: dictName || "",
196
+ include: true,
197
+ allTree: true,
198
+ };
199
+
200
+ return obj;
201
+ }}
202
+ params={{}}
203
+ request={async (params = {}) => {
204
+ const res = await queryApi({ ...params, include: true });
205
+ if (res) {
206
+ res.data.map((item) => {
207
+ if (item.dictName === params.dictName) {
208
+ item.parentId = null;
209
+ }
210
+ return item;
211
+ });
212
+ setOriginalData(res.data);
213
+ const handleRes = rowTotree(res.data);
214
+ deepData(handleRes);
215
+ return {
216
+ data: handleRes,
217
+ success: true,
218
+ };
219
+ } else {
220
+ //console.error(res);
221
+ return {
222
+ data: [],
223
+ success: false,
224
+ };
225
+ }
226
+ }}
227
+ columns={columns}
228
+ rowSelection={false}
229
+ />
230
+ </ConfigProvider>
231
+ {/* 新建 | 编辑 组件 */}
232
+ {createModalVisible ? (
233
+ <UpdateForm
234
+ onSubmit={async (value) => {
235
+ const success = await handleAdd(value, modalType);
236
+
237
+ if (success) {
238
+ handleCancel();
239
+ if (actionRef.current) {
240
+ actionRef.current.reload();
241
+ }
242
+ }
243
+ }}
244
+ onCancel={handleCancel}
245
+ type={modalType}
246
+ updateModalVisible={createModalVisible}
247
+ values={currentItem}
248
+ treeData={treeData}
249
+ />
250
+ ) : null}
251
+ </div>
252
+ );
253
+ };
254
+
255
+ export default DictionaryList;
@@ -0,0 +1,3 @@
1
+ body{
2
+ background-color: transparent;
3
+ }
package/src/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import DictionaryFront from '@/components/Dictionary/index.jsx'
2
+ import registerService from './utils/register-service.js'
3
+
4
+ export {
5
+ DictionaryFront,
6
+ registerService
7
+ }
@@ -0,0 +1,18 @@
1
+ import doRequest from '@/utils/request.js';
2
+
3
+ //查询字典
4
+ export async function queryApi(params) {
5
+ return doRequest('/api/dict/queryBaseDictList', "POST", params);
6
+ }
7
+ //删除字典
8
+ export async function removeApi(params) {
9
+ return doRequest('/api/dict/deleteBaseDict', 'POST', params);
10
+ }
11
+ //添加字典
12
+ export async function addApi(params) {
13
+ return doRequest('/api/dict/createBaseDict', 'POST', params);
14
+ }
15
+ //更新字典
16
+ export async function updateApi(params) {
17
+ return doRequest('/api/dict/updateBaseDict', 'POST', params);
18
+ }
@@ -0,0 +1,37 @@
1
+ import request from 'umi-request';
2
+ import { message } from 'antd';
3
+ import { getSessionStorage } from '@/utils/token.js';
4
+
5
+ export default async function doRequest(url, method, data, params) {
6
+ const headers = {
7
+ SID: SID,
8
+ Authorization: getSessionStorage(),
9
+ UserId: getSessionStorage('userId'),
10
+ OrgId: getSessionStorage('orgId'),
11
+ }
12
+
13
+ return request(url, {
14
+ method, params, data, headers: {
15
+ ...headers,
16
+ service: getSessionStorage('service') || 'unknow',
17
+ },
18
+ getResponse: true,
19
+ })
20
+ .then(function ({ data, }) {
21
+ if (data.rspCode === '000000') {
22
+ return data
23
+ } else {
24
+ message.error(data.rspMsg)
25
+ return data
26
+ }
27
+ })
28
+ .catch(async function (error) {
29
+ if (error.response.status === 401 || error.response.status === 402 || error.response.status === 403) {
30
+ let data = await error.response.json()
31
+ message.error(data.rspMsg)
32
+ } else {
33
+ message.error("服务器异常")
34
+ }
35
+ return error.response
36
+ });
37
+ }
@@ -0,0 +1,10 @@
1
+ import { setSessionStorage, removeSessionStorage } from "./token.js"
2
+
3
+ export const registerService = function (service) {
4
+ return setSessionStorage('service', service)
5
+ }
6
+
7
+ export const unRegisterService = function () {
8
+ return removeSessionStorage('service')
9
+
10
+ }
@@ -0,0 +1,23 @@
1
+ // 读取数据语法
2
+ export function getSessionStorage(key = 'Token') {
3
+ return sessionStorage.getItem(transformKey(key));
4
+ }
5
+
6
+ // 保存数据语法
7
+ export function setSessionStorage(key = 'Token', value) {
8
+ sessionStorage.setItem(transformKey(key), value);
9
+ }
10
+
11
+ // 删除指定键的数据
12
+ export function removeSessionStorage(key = 'Token') {
13
+ sessionStorage.removeItem(transformKey(key));
14
+ }
15
+
16
+ // 删除所有数据
17
+ export function clearSessionStorage() {
18
+ sessionStorage.clear();
19
+ }
20
+
21
+ function transformKey(key) {
22
+ return SID ? `${SID}_${key}` : key
23
+ }
@@ -0,0 +1,51 @@
1
+ .textOverflow() {
2
+ overflow: hidden;
3
+ white-space: nowrap;
4
+ text-overflow: ellipsis;
5
+ word-break: break-all;
6
+ }
7
+
8
+ .textOverflowMulti(@line: 3, @bg: #fff) {
9
+ position: relative;
10
+ max-height: @line * 1.5em;
11
+ margin-right: -1em;
12
+ padding-right: 1em;
13
+ overflow: hidden;
14
+ line-height: 1.5em;
15
+ text-align: justify;
16
+ &::before {
17
+ position: absolute;
18
+ right: 14px;
19
+ bottom: 0;
20
+ padding: 0 1px;
21
+ background: @bg;
22
+ content: '...';
23
+ }
24
+ &::after {
25
+ position: absolute;
26
+ right: 14px;
27
+ width: 1em;
28
+ height: 1em;
29
+ margin-top: 0.2em;
30
+ background: white;
31
+ content: '';
32
+ }
33
+ }
34
+
35
+ // mixins for clearfix
36
+ // ------------------------
37
+ .clearfix() {
38
+ zoom: 1;
39
+ &::before,
40
+ &::after {
41
+ display: table;
42
+ content: ' ';
43
+ }
44
+ &::after {
45
+ clear: both;
46
+ height: 0;
47
+ font-size: 0;
48
+ visibility: hidden;
49
+ }
50
+ }
51
+