no message

dev
853931625@qq.com 2025-11-26 08:33:35 +08:00
parent a3d0418dd1
commit 9ac6566331
52 changed files with 921 additions and 1017 deletions

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
module.exports={compact:!1,plugins:[["@babel/plugin-proposal-decorators",{legacy:!0}]],presets:[["@babel/preset-env",{targets:{browsers:["ie >= 10"]}}],["@babel/preset-react",{runtime:"automatic"}]]};

View File

@ -1 +0,0 @@
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:"http://192.168.10.56:80"},production:{javaGitBranch:"<branch-name>",API_HOST:"http://192.168.20.100:30140"}},appIdentifier:"basic-info",contextInject:{appKey:"",fileUrl:"https://jpfz.qhdsafety.com/gbsFileTest"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:["https://api.map.baidu.com/api?v=1.0&type=webgl&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"]},server:{port:"8080",host:"127.0.0.1",open:!0},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};

File diff suppressed because one or more lines are too long

View File

@ -1,125 +0,0 @@
/*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/*!
* is-plain-object <https://github.com/jonschlinkert/is-plain-object>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*!
* isobject <https://github.com/jonschlinkert/isobject>
*
* Copyright (c) 2014-2017, Jon Schlinkert.
* Released under the MIT License.
*/
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
/** @preserve
* Counter block mode compatible with Dr Brian Gladman fileenc.c
* derived from CryptoJS.mode.CTR
* Jan Hruby jhruby.web@gmail.com
*/
/** @preserve
(c) 2012 by Cédric Mesnil. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**![arrow-down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2MiA0NjUuM2gtODFjLTQuNiAwLTkgMi0xMi4xIDUuNUw1NTAgNzIzLjFWMTYwYzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHY1NjMuMUwyNTUuMSA0NzAuOGMtMy0zLjUtNy40LTUuNS0xMi4xLTUuNWgtODFjLTYuOCAwLTEwLjUgOC4xLTYgMTMuMkw0ODcuOSA4NjFhMzEuOTYgMzEuOTYgMCAwMDQ4LjMgMEw4NjggNDc4LjVjNC41LTUuMi44LTEzLjItNi0xMy4yeiIgLz48L3N2Zz4=) */
/**![arrow-left](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg3MiA0NzRIMjg2LjlsMzUwLjItMzA0YzUuNi00LjkgMi4yLTE0LTUuMi0xNGgtODguNWMtMy45IDAtNy42IDEuNC0xMC41IDMuOUwxNTUgNDg3LjhhMzEuOTYgMzEuOTYgMCAwMDAgNDguM0w1MzUuMSA4NjZjMS41IDEuMyAzLjMgMiA1LjIgMmg5MS41YzcuNCAwIDEwLjgtOS4yIDUuMi0xNEwyODYuOSA1NTBIODcyYzQuNCAwIDgtMy42IDgtOHYtNjBjMC00LjQtMy42LTgtOC04eiIgLz48L3N2Zz4=) */
/**![arrow-up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2OCA1NDUuNUw1MzYuMSAxNjNhMzEuOTYgMzEuOTYgMCAwMC00OC4zIDBMMTU2IDU0NS41YTcuOTcgNy45NyAwIDAwNiAxMy4yaDgxYzQuNiAwIDktMiAxMi4xLTUuNUw0NzQgMzAwLjlWODY0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWMzAwLjlsMjE4LjkgMjUyLjNjMyAzLjUgNy40IDUuNSAxMi4xIDUuNWg4MWM2LjggMCAxMC41LTggNi0xMy4yeiIgLz48L3N2Zz4=) */
/**![calendar](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4MCAxODRINzEydi02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMzg0di02NGMwLTQuNC0zLjYtOC04LThoLTU2Yy00LjQgMC04IDMuNi04IDh2NjRIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY2NjRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjIxNmMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDY1NkgxODRWNDYwaDY1NnYzODB6TTE4NCAzOTJWMjU2aDEyOHY0OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04di00OGgyNTZ2NDhjMCA0LjQgMy42IDggOCA4aDU2YzQuNCAwIDgtMy42IDgtOHYtNDhoMTI4djEzNkgxODR6IiAvPjwvc3ZnPg==) */
/**![caret-down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg0MC40IDMwMEgxODMuNmMtMTkuNyAwLTMwLjcgMjAuOC0xOC41IDM1bDMyOC40IDM4MC44YzkuNCAxMC45IDI3LjUgMTAuOSAzNyAwTDg1OC45IDMzNWMxMi4yLTE0LjIgMS4yLTM1LTE4LjUtMzV6IiAvPjwvc3ZnPg==) */
/**![caret-up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg1OC45IDY4OUw1MzAuNSAzMDguMmMtOS40LTEwLjktMjcuNS0xMC45LTM3IDBMMTY1LjEgNjg5Yy0xMi4yIDE0LjItMS4yIDM1IDE4LjUgMzVoNjU2LjhjMTkuNyAwIDMwLjctMjAuOCAxOC41LTM1eiIgLz48L3N2Zz4=) */
/**![clock-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIC8+PHBhdGggZD0iTTY4Ni43IDYzOC42TDU0NC4xIDUzNS41VjI4OGMwLTQuNC0zLjYtOC04LThINDg4Yy00LjQgMC04IDMuNi04IDh2Mjc1LjRjMCAyLjYgMS4yIDUgMy4zIDYuNWwxNjUuNCAxMjAuNmMzLjYgMi42IDguNiAxLjggMTEuMi0xLjdsMjguNi0zOWMyLjYtMy43IDEuOC04LjctMS44LTExLjJ6IiAvPjwvc3ZnPg==) */
/**![column-height](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg0MCA4MzZIMTg0Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDY1NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMC03MjRIMTg0Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDY1NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHpNNjEwLjggMzc4YzYgMCA5LjQtNyA1LjctMTEuN0w1MTUuNyAyMzguN2E3LjE0IDcuMTQgMCAwMC0xMS4zIDBMNDAzLjYgMzY2LjNhNy4yMyA3LjIzIDAgMDA1LjcgMTEuN0g0NzZ2MjY4aC02Mi44Yy02IDAtOS40IDctNS43IDExLjdsMTAwLjggMTI3LjVjMi45IDMuNyA4LjUgMy43IDExLjMgMGwxMDAuOC0xMjcuNWMzLjctNC43LjQtMTEuNy01LjctMTEuN0g1NDhWMzc4aDYyLjh6IiAvPjwvc3ZnPg==) */
/**![copy](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTgzMiA2NEgyOTZjLTQuNCAwLTggMy42LTggOHY1NmMwIDQuNCAzLjYgOCA4IDhoNDk2djY4OGMwIDQuNCAzLjYgOCA4IDhoNTZjNC40IDAgOC0zLjYgOC04Vjk2YzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MDQgMTkySDE5MmMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2NTMwLjdjMCA4LjUgMy40IDE2LjYgOS40IDIyLjZsMTczLjMgMTczLjNjMi4yIDIuMiA0LjcgNCA3LjQgNS41djEuOWg0LjJjMy41IDEuMyA3LjIgMiAxMSAySDcwNGMxNy43IDAgMzItMTQuMyAzMi0zMlYyMjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTM1MCA4NTYuMkwyNjMuOSA3NzBIMzUwdjg2LjJ6TTY2NCA4ODhINDE0Vjc0NmMwLTIyLjEtMTcuOS00MC00MC00MEgyMzJWMjY0aDQzMnY2MjR6IiAvPjwvc3ZnPg==) */
/**![delete](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM2MCAxODRoLThjNC40IDAgOC0zLjYgOC04djhoMzA0di04YzAgNC40IDMuNiA4IDggOGgtOHY3Mmg3MnYtODBjMC0zNS4zLTI4LjctNjQtNjQtNjRIMzUyYy0zNS4zIDAtNjQgMjguNy02NCA2NHY4MGg3MnYtNzJ6bTUwNCA3MkgxNjBjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjMyYzAgNC40IDMuNiA4IDggOGg2MC40bDI0LjcgNTIzYzEuNiAzNC4xIDI5LjggNjEgNjMuOSA2MWg0NTRjMzQuMiAwIDYyLjMtMjYuOCA2My45LTYxbDI0LjctNTIzSDg4OGM0LjQgMCA4LTMuNiA4LTh2LTMyYzAtMTcuNy0xNC4zLTMyLTMyLTMyek03MzEuMyA4NDBIMjkyLjdsLTI0LjItNTEyaDQ4N2wtMjQuMiA1MTJ6IiAvPjwvc3ZnPg==) */
/**![double-right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUzMy4yIDQ5Mi4zTDI3Ny45IDE2Ni4xYy0zLTMuOS03LjctNi4xLTEyLjYtNi4xSDE4OGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlMNDQ3LjEgNTEyIDE4MS43IDg1MS4xQTcuOTggNy45OCAwIDAwMTg4IDg2NGg3Ny4zYzQuOSAwIDkuNi0yLjMgMTIuNi02LjFsMjU1LjMtMzI2LjFjOS4xLTExLjcgOS4xLTI3LjkgMC0zOS41em0zMDQgMEw1ODEuOSAxNjYuMWMtMy0zLjktNy43LTYuMS0xMi42LTYuMUg0OTJjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45TDc1MS4xIDUxMiA0ODUuNyA4NTEuMUE3Ljk4IDcuOTggMCAwMDQ5MiA4NjRoNzcuM2M0LjkgMCA5LjYtMi4zIDEyLjYtNi4xbDI1NS4zLTMyNi4xYzkuMS0xMS43IDkuMS0yNy45IDAtMzkuNXoiIC8+PC9zdmc+) */
/**![down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4NCAyNTZoLTc1Yy01LjEgMC05LjkgMi41LTEyLjkgNi42TDUxMiA2NTQuMiAyMjcuOSAyNjIuNmMtMy00LjEtNy44LTYuNi0xMi45LTYuNmgtNzVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDM1Mi42IDQ4Ni4xYzEyLjggMTcuNiAzOSAxNy42IDUxLjcgMGwzNTIuNi00ODYuMWMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3oiIC8+PC9zdmc+) */
/**![download](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUwNS43IDY2MWE4IDggMCAwMDEyLjYgMGwxMTItMTQxLjdjNC4xLTUuMi40LTEyLjktNi4zLTEyLjloLTc0LjFWMTY4YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYzMzguM0g0MDBjLTYuNyAwLTEwLjQgNy43LTYuMyAxMi45bDExMiAxNDEuOHpNODc4IDYyNmgtNjBjLTQuNCAwLTggMy42LTggOHYxNTRIMjE0VjYzNGMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTk4YzAgMTcuNyAxNC4zIDMyIDMyIDMyaDY4NGMxNy43IDAgMzItMTQuMyAzMi0zMlY2MzRjMC00LjQtMy42LTgtOC04eiIgLz48L3N2Zz4=) */
/**![edit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI1Ny43IDc1MmMyIDAgNC0uMiA2LS41TDQzMS45IDcyMmMyLS40IDMuOS0xLjMgNS4zLTIuOGw0MjMuOS00MjMuOWE5Ljk2IDkuOTYgMCAwMDAtMTQuMUw2OTQuOSAxMTQuOWMtMS45LTEuOS00LjQtMi45LTcuMS0yLjlzLTUuMiAxLTcuMSAyLjlMMjU2LjggNTM4LjhjLTEuNSAxLjUtMi40IDMuMy0yLjggNS4zbC0yOS41IDE2OC4yYTMzLjUgMzMuNSAwIDAwOS40IDI5LjhjNi42IDYuNCAxNC45IDkuOSAyMy44IDkuOXptNjcuNC0xNzQuNEw2ODcuOCAyMTVsNzMuMyA3My4zLTM2Mi43IDM2Mi42LTg4LjkgMTUuNyAxNS42LTg5ek04ODAgODM2SDE0NGMtMTcuNyAwLTMyIDE0LjMtMzIgMzJ2MzZjMCA0LjQgMy42IDggOCA4aDc4NGM0LjQgMCA4LTMuNiA4LTh2LTM2YzAtMTcuNy0xNC4zLTMyLTMyLTMyeiIgLz48L3N2Zz4=) */
/**![enter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg2NCAxNzBoLTYwYy00LjQgMC04IDMuNi04IDh2NTE4SDMxMHYtNzNjMC02LjctNy44LTEwLjUtMTMtNi4zbC0xNDEuOSAxMTJhOCA4IDAgMDAwIDEyLjZsMTQxLjkgMTEyYzUuMyA0LjIgMTMgLjQgMTMtNi4zdi03NWg0OThjMzUuMyAwIDY0LTI4LjcgNjQtNjRWMTc4YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */
/**![export](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODgwIDkxMkgxNDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzNjBjNC40IDAgOCAzLjYgOCA4djU2YzAgNC40LTMuNiA4LTggOEgxODR2NjU2aDY1NlY1MjBjMC00LjQgMy42LTggOC04aDU2YzQuNCAwIDggMy42IDggOHYzNjBjMCAxNy43LTE0LjMgMzItMzIgMzJ6TTc3MC44NyAxOTkuMTNsLTUyLjItNTIuMmE4LjAxIDguMDEgMCAwMTQuNy0xMy42bDE3OS40LTIxYzUuMS0uNiA5LjUgMy43IDguOSA4LjlsLTIxIDE3OS40Yy0uOCA2LjYtOC45IDkuNC0xMy42IDQuN2wtNTIuNC01Mi40LTI1Ni4yIDI1Ni4yYTguMDMgOC4wMyAwIDAxLTExLjMgMGwtNDIuNC00Mi40YTguMDMgOC4wMyAwIDAxMC0xMS4zbDI1Ni4xLTI1Ni4zeiIgLz48L3N2Zz4=) */
/**![filter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM0OSA4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjQySDM0OXYxOTZ6bTUzMS4xLTY4NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4bDIyMS4zIDM3NmgzNDguOGwyMjEuMy0zNzZjMTIuMS0yMS4zLTMuMi00OC0yNy43LTQ4eiIgLz48L3N2Zz4=) */
/**![filter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4MC4xIDE1NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4TDM0OSA1OTcuNFY4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNTk3LjRMOTA3LjcgMjAyYzEyLjItMjEuMy0zLjEtNDgtMjcuNi00OHpNNjAzLjQgNzk4SDQyMC42VjY0MmgxODIuOXYxNTZ6bTkuNi0yMzYuNmwtOS41IDE2LjZoLTE4M2wtOS41LTE2LjZMMjEyLjcgMjI2aDU5OC42TDYxMyA1NjEuNHoiIC8+PC9zdmc+) */
/**![folder](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4MCAyOTguNEg1MjFMNDAzLjcgMTg2LjJhOC4xNSA4LjE1IDAgMDAtNS41LTIuMkgxNDRjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjU5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMmg3MzZjMTcuNyAwIDMyLTE0LjMgMzItMzJWMzMwLjRjMC0xNy43LTE0LjMtMzItMzItMzJ6TTg0MCA3NjhIMTg0VjI1NmgxODguNWwxMTkuNiAxMTQuNEg4NDBWNzY4eiIgLz48L3N2Zz4=) */
/**![fullscreen-exit](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM5MSAyNDAuOWMtLjgtNi42LTguOS05LjQtMTMuNi00LjdsLTQzLjcgNDMuN0wyMDAgMTQ2LjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC00Mi40IDQyLjNhOC4wMyA4LjAzIDAgMDAwIDExLjNMMjgwIDMzMy42bC00My45IDQzLjlhOC4wMSA4LjAxIDAgMDA0LjcgMTMuNkw0MDEgNDEwYzUuMS42IDkuNS0zLjcgOC45LTguOUwzOTEgMjQwLjl6bTEwLjEgMzczLjJMMjQwLjggNjMzYy02LjYuOC05LjQgOC45LTQuNyAxMy42bDQzLjkgNDMuOUwxNDYuMyA4MjRhOC4wMyA4LjAzIDAgMDAwIDExLjNsNDIuNCA0Mi4zYzMuMSAzLjEgOC4yIDMuMSAxMS4zIDBMMzMzLjcgNzQ0bDQzLjcgNDMuN0E4LjAxIDguMDEgMCAwMDM5MSA3ODNsMTguOS0xNjAuMWMuNi01LjEtMy43LTkuNC04LjgtOC44em0yMjEuOC0yMDQuMkw3ODMuMiAzOTFjNi42LS44IDkuNC04LjkgNC43LTEzLjZMNzQ0IDMzMy42IDg3Ny43IDIwMGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC00Mi40LTQyLjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwTDY5MC4zIDI3OS45bC00My43LTQzLjdhOC4wMSA4LjAxIDAgMDAtMTMuNiA0LjdMNjE0LjEgNDAxYy0uNiA1LjIgMy43IDkuNSA4LjggOC45ek03NDQgNjkwLjRsNDMuOS00My45YTguMDEgOC4wMSAwIDAwLTQuNy0xMy42TDYyMyA2MTRjLTUuMS0uNi05LjUgMy43LTguOSA4LjlMNjMzIDc4My4xYy44IDYuNiA4LjkgOS40IDEzLjYgNC43bDQzLjctNDMuN0w4MjQgODc3LjdjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGw0Mi40LTQyLjNjMy4xLTMuMSAzLjEtOC4yIDAtMTEuM0w3NDQgNjkwLjR6IiAvPjwvc3ZnPg==) */
/**![fullscreen](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI5MCAyMzYuNGw0My45LTQzLjlhOC4wMSA4LjAxIDAgMDAtNC43LTEzLjZMMTY5IDE2MGMtNS4xLS42LTkuNSAzLjctOC45IDguOUwxNzkgMzI5LjFjLjggNi42IDguOSA5LjQgMTMuNiA0LjdsNDMuNy00My43TDM3MCA0MjMuN2MzLjEgMy4xIDguMiAzLjEgMTEuMyAwbDQyLjQtNDIuM2MzLjEtMy4xIDMuMS04LjIgMC0xMS4zTDI5MCAyMzYuNHptMzUyLjcgMTg3LjNjMy4xIDMuMSA4LjIgMy4xIDExLjMgMGwxMzMuNy0xMzMuNiA0My43IDQzLjdhOC4wMSA4LjAxIDAgMDAxMy42LTQuN0w4NjMuOSAxNjljLjYtNS4xLTMuNy05LjUtOC45LTguOUw2OTQuOCAxNzljLTYuNi44LTkuNCA4LjktNC43IDEzLjZsNDMuOSA0My45TDYwMC4zIDM3MGE4LjAzIDguMDMgMCAwMDAgMTEuM2w0Mi40IDQyLjR6TTg0NSA2OTQuOWMtLjgtNi42LTguOS05LjQtMTMuNi00LjdsLTQzLjcgNDMuN0w2NTQgNjAwLjNhOC4wMyA4LjAzIDAgMDAtMTEuMyAwbC00Mi40IDQyLjNhOC4wMyA4LjAzIDAgMDAwIDExLjNMNzM0IDc4Ny42bC00My45IDQzLjlhOC4wMSA4LjAxIDAgMDA0LjcgMTMuNkw4NTUgODY0YzUuMS42IDkuNS0zLjcgOC45LTguOUw4NDUgNjk0Ljl6bS00NjMuNy05NC42YTguMDMgOC4wMyAwIDAwLTExLjMgMEwyMzYuMyA3MzMuOWwtNDMuNy00My43YTguMDEgOC4wMSAwIDAwLTEzLjYgNC43TDE2MC4xIDg1NWMtLjYgNS4xIDMuNyA5LjUgOC45IDguOUwzMjkuMiA4NDVjNi42LS44IDkuNC04LjkgNC43LTEzLjZMMjkwIDc4Ny42IDQyMy43IDY1NGMzLjEtMy4xIDMuMS04LjIgMC0xMS4zbC00Mi40LTQyLjR6IiAvPjwvc3ZnPg==) */
/**![holder](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMwMCAyNzYuNWE1NiA1NiAwIDEwNTYtOTcgNTYgNTYgMCAwMC01NiA5N3ptMCAyODRhNTYgNTYgMCAxMDU2LTk3IDU2IDU2IDAgMDAtNTYgOTd6TTY0MCAyMjhhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMDAtMTEyIDB6bTAgMjg0YTU2IDU2IDAgMTAxMTIgMCA1NiA1NiAwIDAwLTExMiAwek0zMDAgODQ0LjVhNTYgNTYgMCAxMDU2LTk3IDU2IDU2IDAgMDAtNTYgOTd6TTY0MCA3OTZhNTYgNTYgMCAxMDExMiAwIDU2IDU2IDAgMDAtMTEyIDB6IiAvPjwvc3ZnPg==) */
/**![import](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdmlld0JveD0iNjQgNjQgODk2IDg5NiIgZm9jdXNhYmxlPSJmYWxzZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODgwIDkxMkgxNDRjLTE3LjcgMC0zMi0xNC4zLTMyLTMyVjE0NGMwLTE3LjcgMTQuMy0zMiAzMi0zMmgzNjBjNC40IDAgOCAzLjYgOCA4djU2YzAgNC40LTMuNiA4LTggOEgxODR2NjU2aDY1NlY1MjBjMC00LjQgMy42LTggOC04aDU2YzQuNCAwIDggMy42IDggOHYzNjBjMCAxNy43LTE0LjMgMzItMzIgMzJ6TTY1My4zIDQyNC42bDUyLjIgNTIuMmE4LjAxIDguMDEgMCAwMS00LjcgMTMuNmwtMTc5LjQgMjFjLTUuMS42LTkuNS0zLjctOC45LTguOWwyMS0xNzkuNGMuOC02LjYgOC45LTkuNCAxMy42LTQuN2w1Mi40IDUyLjQgMjU2LjItMjU2LjJjMy4xLTMuMSA4LjItMy4xIDExLjMgMGw0Mi40IDQyLjRjMy4xIDMuMSAzLjEgOC4yIDAgMTEuM0w2NTMuMyA0MjQuNnoiIC8+PC9zdmc+) */
/**![info-circle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiA2NEMyNjQuNiA2NCA2NCAyNjQuNiA2NCA1MTJzMjAwLjYgNDQ4IDQ0OCA0NDggNDQ4LTIwMC42IDQ0OC00NDhTNzU5LjQgNjQgNTEyIDY0em0wIDgyMGMtMjA1LjQgMC0zNzItMTY2LjYtMzcyLTM3MnMxNjYuNi0zNzIgMzcyLTM3MiAzNzIgMTY2LjYgMzcyIDM3Mi0xNjYuNiAzNzItMzcyIDM3MnoiIC8+PHBhdGggZD0iTTQ2NCAzMzZhNDggNDggMCAxMDk2IDAgNDggNDggMCAxMC05NiAwem03MiAxMTJoLTQ4Yy00LjQgMC04IDMuNi04IDh2MjcyYzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNDU2YzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */
/**![loading](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjAgMCAxMDI0IDEwMjQiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk4OCA1NDhjLTE5LjkgMC0zNi0xNi4xLTM2LTM2IDAtNTkuNC0xMS42LTExNy0zNC42LTE3MS4zYTQ0MC40NSA0NDAuNDUgMCAwMC05NC4zLTEzOS45IDQzNy43MSA0MzcuNzEgMCAwMC0xMzkuOS05NC4zQzYyOSA4My42IDU3MS40IDcyIDUxMiA3MmMtMTkuOSAwLTM2LTE2LjEtMzYtMzZzMTYuMS0zNiAzNi0zNmM2OS4xIDAgMTM2LjIgMTMuNSAxOTkuMyA0MC4zQzc3Mi4zIDY2IDgyNyAxMDMgODc0IDE1MGM0NyA0NyA4My45IDEwMS44IDEwOS43IDE2Mi43IDI2LjcgNjMuMSA0MC4yIDEzMC4yIDQwLjIgMTk5LjMuMSAxOS45LTE2IDM2LTM1LjkgMzZ6IiAvPjwvc3ZnPg==) */
/**![minus-square](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMyOCA1NDRoMzY4YzQuNCAwIDgtMy42IDgtOHYtNDhjMC00LjQtMy42LTgtOC04SDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHoiIC8+PHBhdGggZD0iTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6IiAvPjwvc3ZnPg==) */
/**![paper-clip](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc3OS4zIDE5Ni42Yy05NC4yLTk0LjItMjQ3LjYtOTQuMi0zNDEuNyAwbC0yNjEgMjYwLjhjLTEuNyAxLjctMi42IDQtMi42IDYuNHMuOSA0LjcgMi42IDYuNGwzNi45IDM2LjlhOSA5IDAgMDAxMi43IDBsMjYxLTI2MC44YzMyLjQtMzIuNCA3NS41LTUwLjIgMTIxLjMtNTAuMnM4OC45IDE3LjggMTIxLjIgNTAuMmMzMi40IDMyLjQgNTAuMiA3NS41IDUwLjIgMTIxLjIgMCA0NS44LTE3LjggODguOC01MC4yIDEyMS4ybC0yNjYgMjY1LjktNDMuMSA0My4xYy00MC4zIDQwLjMtMTA1LjggNDAuMy0xNDYuMSAwLTE5LjUtMTkuNS0zMC4yLTQ1LjQtMzAuMi03M3MxMC43LTUzLjUgMzAuMi03M2wyNjMuOS0yNjMuOGM2LjctNi42IDE1LjUtMTAuMyAyNC45LTEwLjNoLjFjOS40IDAgMTguMSAzLjcgMjQuNyAxMC4zIDYuNyA2LjcgMTAuMyAxNS41IDEwLjMgMjQuOSAwIDkuMy0zLjcgMTguMS0xMC4zIDI0LjdMMzcyLjQgNjUzYy0xLjcgMS43LTIuNiA0LTIuNiA2LjRzLjkgNC43IDIuNiA2LjRsMzYuOSAzNi45YTkgOSAwIDAwMTIuNyAwbDIxNS42LTIxNS42YzE5LjktMTkuOSAzMC44LTQ2LjMgMzAuOC03NC40cy0xMS01NC42LTMwLjgtNzQuNGMtNDEuMS00MS4xLTEwNy45LTQxLTE0OSAwTDQ2MyAzNjQgMjI0LjggNjAyLjFBMTcyLjIyIDE3Mi4yMiAwIDAwMTc0IDcyNC44YzAgNDYuMyAxOC4xIDg5LjggNTAuOCAxMjIuNSAzMy45IDMzLjggNzguMyA1MC43IDEyMi43IDUwLjcgNDQuNCAwIDg4LjgtMTYuOSAxMjIuNi01MC43bDMwOS4yLTMwOUM4MjQuOCA0OTIuNyA4NTAgNDMyIDg1MCAzNjcuNWMuMS02NC42LTI1LjEtMTI1LjMtNzAuNy0xNzAuOXoiIC8+PC9zdmc+) */
/**![picture](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyOCAxNjBIOTZjLTE3LjcgMC0zMiAxNC4zLTMyIDMydjY0MGMwIDE3LjcgMTQuMyAzMiAzMiAzMmg4MzJjMTcuNyAwIDMyLTE0LjMgMzItMzJWMTkyYzAtMTcuNy0xNC4zLTMyLTMyLTMyem0tNDAgNjMySDEzNnYtMzkuOWwxMzguNS0xNjQuMyAxNTAuMSAxNzhMNjU4LjEgNDg5IDg4OCA3NjEuNlY3OTJ6bTAtMTI5LjhMNjY0LjIgMzk2LjhjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDQyNC42IDY2Ni40bC0xNDQtMTcwLjdjLTMuMi0zLjgtOS0zLjgtMTIuMiAwTDEzNiA2NTIuN1YyMzJoNzUydjQzMC4yeiIgZmlsbD0iIzE2NzdmZiIgLz48cGF0aCBkPSJNNDI0LjYgNzY1LjhsLTE1MC4xLTE3OEwxMzYgNzUyLjFWNzkyaDc1MnYtMzAuNEw2NTguMSA0ODl6IiBmaWxsPSIjZTZmNGZmIiAvPjxwYXRoIGQ9Ik0xMzYgNjUyLjdsMTMyLjQtMTU3YzMuMi0zLjggOS0zLjggMTIuMiAwbDE0NCAxNzAuN0w2NTIgMzk2LjhjMy4yLTMuOCA5LTMuOCAxMi4yIDBMODg4IDY2Mi4yVjIzMkgxMzZ2NDIwLjd6TTMwNCAyODBhODggODggMCAxMTAgMTc2IDg4IDg4IDAgMDEwLTE3NnoiIGZpbGw9IiNlNmY0ZmYiIC8+PHBhdGggZD0iTTI3NiAzNjhhMjggMjggMCAxMDU2IDAgMjggMjggMCAxMC01NiAweiIgZmlsbD0iI2U2ZjRmZiIgLz48cGF0aCBkPSJNMzA0IDQ1NmE4OCA4OCAwIDEwMC0xNzYgODggODggMCAwMDAgMTc2em0wLTExNmMxNS41IDAgMjggMTIuNSAyOCAyOHMtMTIuNSAyOC0yOCAyOC0yOC0xMi41LTI4LTI4IDEyLjUtMjggMjgtMjh6IiBmaWxsPSIjMTY3N2ZmIiAvPjwvc3ZnPg==) */
/**![plus-square](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTMyOCA1NDRoMTUydjE1MmMwIDQuNCAzLjYgOCA4IDhoNDhjNC40IDAgOC0zLjYgOC04VjU0NGgxNTJjNC40IDAgOC0zLjYgOC04di00OGMwLTQuNC0zLjYtOC04LThINTQ0VjMyOGMwLTQuNC0zLjYtOC04LThoLTQ4Yy00LjQgMC04IDMuNi04IDh2MTUySDMyOGMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOHoiIC8+PHBhdGggZD0iTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQwIDcyOEgxODRWMTg0aDY1NnY2NTZ6IiAvPjwvc3ZnPg==) */
/**![plus](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ4MiAxNTJoNjBxOCAwIDggOHY3MDRxMCA4LTggOGgtNjBxLTggMC04LThWMTYwcTAtOCA4LTh6IiAvPjxwYXRoIGQ9Ik0xOTIgNDc0aDY3MnE4IDAgOCA4djYwcTAgOC04IDhIMTYwcS04IDAtOC04di02MHEwLTggOC04eiIgLz48L3N2Zz4=) */
/**![reload](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOS4xIDIwOS4zbC01Ni40IDQ0LjFDNzc1LjggMTU1LjEgNjU2LjIgOTIgNTIxLjkgOTIgMjkwIDkyIDEwMi4zIDI3OS41IDEwMiA1MTEuNSAxMDEuNyA3NDMuNyAyODkuOCA5MzIgNTIxLjkgOTMyYzE4MS4zIDAgMzM1LjgtMTE1IDM5NC42LTI3Ni4xIDEuNS00LjItLjctOC45LTQuOS0xMC4zbC01Ni43LTE5LjVhOCA4IDAgMDAtMTAuMSA0LjhjLTEuOCA1LTMuOCAxMC01LjkgMTQuOS0xNy4zIDQxLTQyLjEgNzcuOC03My43IDEwOS40QTM0NC43NyAzNDQuNzcgMCAwMTY1NS45IDgyOWMtNDIuMyAxNy45LTg3LjQgMjctMTMzLjggMjctNDYuNSAwLTkxLjUtOS4xLTEzMy44LTI3QTM0MS41IDM0MS41IDAgMDEyNzkgNzU1LjJhMzQyLjE2IDM0Mi4xNiAwIDAxLTczLjctMTA5LjRjLTE3LjktNDIuNC0yNy04Ny40LTI3LTEzMy45czkuMS05MS41IDI3LTEzMy45YzE3LjMtNDEgNDIuMS03Ny44IDczLjctMTA5LjQgMzEuNi0zMS42IDY4LjQtNTYuNCAxMDkuMy03My44IDQyLjMtMTcuOSA4Ny40LTI3IDEzMy44LTI3IDQ2LjUgMCA5MS41IDkuMSAxMzMuOCAyN2EzNDEuNSAzNDEuNSAwIDAxMTA5LjMgNzMuOGM5LjkgOS45IDE5LjIgMjAuNCAyNy44IDMxLjRsLTYwLjIgNDdhOCA4IDAgMDAzIDE0LjFsMTc1LjYgNDNjNSAxLjIgOS45LTIuNiA5LjktNy43bC44LTE4MC45Yy0uMS02LjYtNy44LTEwLjMtMTMtNi4yeiIgLz48L3N2Zz4=) */
/**![right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc2NS43IDQ4Ni44TDMxNC45IDEzNC43QTcuOTcgNy45NyAwIDAwMzAyIDE0MXY3Ny4zYzAgNC45IDIuMyA5LjYgNi4xIDEyLjZsMzYwIDI4MS4xLTM2MCAyODEuMWMtMy45IDMtNi4xIDcuNy02LjEgMTIuNlY4ODNjMCA2LjcgNy43IDEwLjQgMTIuOSA2LjNsNDUwLjgtMzUyLjFhMzEuOTYgMzEuOTYgMCAwMDAtNTAuNHoiIC8+PC9zdmc+) */
/**![rotate-right](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHN0eWxlIC8+PC9kZWZzPjxwYXRoIGQ9Ik00ODAuNSAyNTEuMmMxMy0xLjYgMjUuOS0yLjQgMzguOC0yLjV2NjMuOWMwIDYuNSA3LjUgMTAuMSAxMi42IDYuMUw2NjAgMjE3LjZjNC0zLjIgNC05LjIgMC0xMi4zbC0xMjgtMTAxYy01LjEtNC0xMi42LS40LTEyLjYgNi4xbC0uMiA2NGMtMTE4LjYuNS0yMzUuOCA1My40LTMxNC42IDE1NC4yQTM5OS43NSAzOTkuNzUgMCAwMDEyMy41IDYzMWg3NC45Yy0uOS01LjMtMS43LTEwLjctMi40LTE2LjEtNS4xLTQyLjEtMi4xLTg0LjEgOC45LTEyNC44IDExLjQtNDIuMiAzMS04MS4xIDU4LjEtMTE1LjggMjcuMi0zNC43IDYwLjMtNjMuMiA5OC40LTg0LjMgMzctMjAuNiA3Ni45LTMzLjYgMTE5LjEtMzguOHoiIC8+PHBhdGggZD0iTTg4MCA0MThIMzUyYy0xNy43IDAtMzIgMTQuMy0zMiAzMnY0MTRjMCAxNy43IDE0LjMgMzIgMzIgMzJoNTI4YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjQ1MGMwLTE3LjctMTQuMy0zMi0zMi0zMnptLTQ0IDQwMkgzOTZWNDk0aDQ0MHYzMjZ6IiAvPjwvc3ZnPg==) */
/**![search](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAwMTEuNiAwbDQzLjYtNDMuNWE4LjIgOC4yIDAgMDAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHoiIC8+PC9zdmc+) */
/**![setting](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNC44IDYyNS43bC02NS41LTU2YzMuMS0xOSA0LjctMzguNCA0LjctNTcuOHMtMS42LTM4LjgtNC43LTU3LjhsNjUuNS01NmEzMi4wMyAzMi4wMyAwIDAwOS4zLTM1LjJsLS45LTIuNmE0NDMuNzQgNDQzLjc0IDAgMDAtNzkuNy0xMzcuOWwtMS44LTIuMWEzMi4xMiAzMi4xMiAwIDAwLTM1LjEtOS41bC04MS4zIDI4LjljLTMwLTI0LjYtNjMuNS00NC05OS43LTU3LjZsLTE1LjctODVhMzIuMDUgMzIuMDUgMCAwMC0yNS44LTI1LjdsLTIuNy0uNWMtNTIuMS05LjQtMTA2LjktOS40LTE1OSAwbC0yLjcuNWEzMi4wNSAzMi4wNSAwIDAwLTI1LjggMjUuN2wtMTUuOCA4NS40YTM1MS44NiAzNTEuODYgMCAwMC05OSA1Ny40bC04MS45LTI5LjFhMzIgMzIgMCAwMC0zNS4xIDkuNWwtMS44IDIuMWE0NDYuMDIgNDQ2LjAyIDAgMDAtNzkuNyAxMzcuOWwtLjkgMi42Yy00LjUgMTIuNS0uOCAyNi41IDkuMyAzNS4ybDY2LjMgNTYuNmMtMy4xIDE4LjgtNC42IDM4LTQuNiA1Ny4xIDAgMTkuMiAxLjUgMzguNCA0LjYgNTcuMUw5OSA2MjUuNWEzMi4wMyAzMi4wMyAwIDAwLTkuMyAzNS4ybC45IDIuNmMxOC4xIDUwLjQgNDQuOSA5Ni45IDc5LjcgMTM3LjlsMS44IDIuMWEzMi4xMiAzMi4xMiAwIDAwMzUuMSA5LjVsODEuOS0yOS4xYzI5LjggMjQuNSA2My4xIDQzLjkgOTkgNTcuNGwxNS44IDg1LjRhMzIuMDUgMzIuMDUgMCAwMDI1LjggMjUuN2wyLjcuNWE0NDkuNCA0NDkuNCAwIDAwMTU5IDBsMi43LS41YTMyLjA1IDMyLjA1IDAgMDAyNS44LTI1LjdsMTUuNy04NWEzNTAgMzUwIDAgMDA5OS43LTU3LjZsODEuMyAyOC45YTMyIDMyIDAgMDAzNS4xLTkuNWwxLjgtMi4xYzM0LjgtNDEuMSA2MS42LTg3LjUgNzkuNy0xMzcuOWwuOS0yLjZjNC41LTEyLjMuOC0yNi4zLTkuMy0zNXpNNzg4LjMgNDY1LjljMi41IDE1LjEgMy44IDMwLjYgMy44IDQ2LjFzLTEuMyAzMS0zLjggNDYuMWwtNi42IDQwLjEgNzQuNyA2My45YTM3MC4wMyAzNzAuMDMgMCAwMS00Mi42IDczLjZMNzIxIDcwMi44bC0zMS40IDI1LjhjLTIzLjkgMTkuNi01MC41IDM1LTc5LjMgNDUuOGwtMzguMSAxNC4zLTE3LjkgOTdhMzc3LjUgMzc3LjUgMCAwMS04NSAwbC0xNy45LTk3LjItMzcuOC0xNC41Yy0yOC41LTEwLjgtNTUtMjYuMi03OC43LTQ1LjdsLTMxLjQtMjUuOS05My40IDMzLjJjLTE3LTIyLjktMzEuMi00Ny42LTQyLjYtNzMuNmw3NS41LTY0LjUtNi41LTQwYy0yLjQtMTQuOS0zLjctMzAuMy0zLjctNDUuNSAwLTE1LjMgMS4yLTMwLjYgMy43LTQ1LjVsNi41LTQwLTc1LjUtNjQuNWMxMS4zLTI2LjEgMjUuNi01MC43IDQyLjYtNzMuNmw5My40IDMzLjIgMzEuNC0yNS45YzIzLjctMTkuNSA1MC4yLTM0LjkgNzguNy00NS43bDM3LjktMTQuMyAxNy45LTk3LjJjMjguMS0zLjIgNTYuOC0zLjIgODUgMGwxNy45IDk3IDM4LjEgMTQuM2MyOC43IDEwLjggNTUuNCAyNi4yIDc5LjMgNDUuOGwzMS40IDI1LjggOTIuOC0zMi45YzE3IDIyLjkgMzEuMiA0Ny42IDQyLjYgNzMuNkw3ODEuOCA0MjZsNi41IDM5Ljl6TTUxMiAzMjZjLTk3LjIgMC0xNzYgNzguOC0xNzYgMTc2czc4LjggMTc2IDE3NiAxNzYgMTc2LTc4LjggMTc2LTE3Ni03OC44LTE3Ni0xNzYtMTc2em03OS4yIDI1NS4yQTExMS42IDExMS42IDAgMDE1MTIgNjE0Yy0yOS45IDAtNTgtMTEuNy03OS4yLTMyLjhBMTExLjYgMTExLjYgMCAwMTQwMCA1MDJjMC0yOS45IDExLjctNTggMzIuOC03OS4yQzQ1NCA0MDEuNiA0ODIuMSAzOTAgNTEyIDM5MGMyOS45IDAgNTggMTEuNiA3OS4yIDMyLjhBMTExLjYgMTExLjYgMCAwMTYyNCA1MDJjMCAyOS45LTExLjcgNTgtMzIuOCA3OS4yeiIgLz48L3N2Zz4=) */
/**![star](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuM2EzMi4wNSAzMi4wNSAwIDAwLjYgNDUuM2wxODMuNyAxNzkuMS00My40IDI1Mi45YTMxLjk1IDMxLjk1IDAgMDA0Ni40IDMzLjdMNTEyIDc1NGwyMjcuMSAxMTkuNGM2LjIgMy4zIDEzLjQgNC40IDIwLjMgMy4yIDE3LjQtMyAyOS4xLTE5LjUgMjYuMS0zNi45bC00My40LTI1Mi45IDE4My43LTE3OS4xYzUtNC45IDguMy0xMS4zIDkuMy0xOC4zIDIuNy0xNy41LTkuNS0zMy43LTI3LTM2LjN6IiAvPjwvc3ZnPg==) */
/**![swap](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg0Ny45IDU5MkgxNTJjLTQuNCAwLTggMy42LTggOHY2MGMwIDQuNCAzLjYgOCA4IDhoNjA1LjJMNjEyLjkgODUxYy00LjEgNS4yLS40IDEzIDYuMyAxM2g3Mi41YzQuOSAwIDkuNS0yLjIgMTIuNi02LjFsMTY4LjgtMjE0LjFjMTYuNS0yMSAxLjYtNTEuOC0yNS4yLTUxLjh6TTg3MiAzNTZIMjY2LjhsMTQ0LjMtMTgzYzQuMS01LjIuNC0xMy02LjMtMTNoLTcyLjVjLTQuOSAwLTkuNSAyLjItMTIuNiA2LjFMMTUwLjkgMzgwLjJjLTE2LjUgMjEtMS42IDUxLjggMjUuMSA1MS44aDY5NmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHoiIC8+PC9zdmc+) */
/**![up](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5MC41IDc1NS4zTDUzNy45IDI2OS4yYy0xMi44LTE3LjYtMzktMTcuNi01MS43IDBMMTMzLjUgNzU1LjNBOCA4IDAgMDAxNDAgNzY4aDc1YzUuMSAwIDkuOS0yLjUgMTIuOS02LjZMNTEyIDM2OS44bDI4NC4xIDM5MS42YzMgNC4xIDcuOCA2LjYgMTIuOSA2LjZoNzVjNi41IDAgMTAuMy03LjQgNi41LTEyLjd6IiAvPjwvc3ZnPg==) */
/**![upload](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQwMCAzMTcuN2g3My45VjY1NmMwIDQuNCAzLjYgOCA4IDhoNjBjNC40IDAgOC0zLjYgOC04VjMxNy43SDYyNGM2LjcgMCAxMC40LTcuNyA2LjMtMTIuOUw1MTguMyAxNjNhOCA4IDAgMDAtMTIuNiAwbC0xMTIgMTQxLjdjLTQuMSA1LjMtLjQgMTMgNi4zIDEzek04NzggNjI2aC02MGMtNC40IDAtOCAzLjYtOCA4djE1NEgyMTRWNjM0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYxOThjMCAxNy43IDE0LjMgMzIgMzIgMzJoNjg0YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjYzNGMwLTQuNC0zLjYtOC04LTh6IiAvPjwvc3ZnPg==) */
/**![vertical-align-bottom](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg1OS45IDc4MEgxNjQuMWMtNC41IDAtOC4xIDMuNi04LjEgOHY2MGMwIDQuNCAzLjYgOCA4LjEgOGg2OTUuOGM0LjUgMCA4LjEtMy42IDguMS04di02MGMwLTQuNC0zLjYtOC04LjEtOHpNNTA1LjcgNjY5YTggOCAwIDAwMTIuNiAwbDExMi0xNDEuN2M0LjEtNS4yLjQtMTIuOS02LjMtMTIuOWgtNzQuMVYxNzZjMC00LjQtMy42LTgtOC04aC02MGMtNC40IDAtOCAzLjYtOCA4djMzOC4zSDQwMGMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMTEyIDE0MS44eiIgLz48L3N2Zz4=) */
/**![vertical-align-middle](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg1OS45IDQ3NEgxNjQuMWMtNC41IDAtOC4xIDMuNi04LjEgOHY2MGMwIDQuNCAzLjYgOCA4LjEgOGg2OTUuOGM0LjUgMCA4LjEtMy42IDguMS04di02MGMwLTQuNC0zLjYtOC04LjEtOHptLTM1My42LTc0LjdjMi45IDMuNyA4LjUgMy43IDExLjMgMGwxMDAuOC0xMjcuNWMzLjctNC43LjQtMTEuNy01LjctMTEuN0g1NTBWMTA0YzAtNC40LTMuNi04LTgtOGgtNjBjLTQuNCAwLTggMy42LTggOHYxNTZoLTYyLjhjLTYgMC05LjQgNy01LjcgMTEuN2wxMDAuOCAxMjcuNnptMTEuNCAyMjUuNGE3LjE0IDcuMTQgMCAwMC0xMS4zIDBMNDA1LjYgNzUyLjNhNy4yMyA3LjIzIDAgMDA1LjcgMTEuN0g0NzR2MTU2YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWNzY0aDYyLjhjNiAwIDkuNC03IDUuNy0xMS43TDUxNy43IDYyNC43eiIgLz48L3N2Zz4=) */
/**![vertical-align-top](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg1OS45IDE2OEgxNjQuMWMtNC41IDAtOC4xIDMuNi04LjEgOHY2MGMwIDQuNCAzLjYgOCA4LjEgOGg2OTUuOGM0LjUgMCA4LjEtMy42IDguMS04di02MGMwLTQuNC0zLjYtOC04LjEtOHpNNTE4LjMgMzU1YTggOCAwIDAwLTEyLjYgMGwtMTEyIDE0MS43YTcuOTggNy45OCAwIDAwNi4zIDEyLjloNzMuOVY4NDhjMCA0LjQgMy42IDggOCA4aDYwYzQuNCAwIDgtMy42IDgtOFY1MDkuN0g2MjRjNi43IDAgMTAuNC03LjcgNi4zLTEyLjlMNTE4LjMgMzU1eiIgLz48L3N2Zz4=) */
/**![video-camera-add](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHN0eWxlIC8+PC9kZWZzPjxwYXRoIGQ9Ik0zNjggNzI0SDI1MlY2MDhjMC00LjQtMy42LTgtOC04aC00OGMtNC40IDAtOCAzLjYtOCA4djExNkg3MmMtNC40IDAtOCAzLjYtOCA4djQ4YzAgNC40IDMuNiA4IDggOGgxMTZ2MTE2YzAgNC40IDMuNiA4IDggOGg0OGM0LjQgMCA4LTMuNiA4LThWNzg4aDExNmM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOHoiIC8+PHBhdGggZD0iTTkxMiAzMDIuM0w3ODQgMzc2VjIyNGMwLTM1LjMtMjguNy02NC02NC02NEgxMjhjLTM1LjMgMC02NCAyOC43LTY0IDY0djM1Mmg3MlYyMzJoNTc2djU2MEg0NDh2NzJoMjcyYzM1LjMgMCA2NC0yOC43IDY0LTY0VjY0OGwxMjggNzMuN2MyMS4zIDEyLjMgNDgtMy4xIDQ4LTI3LjZWMzMwYzAtMjQuNi0yNi43LTQwLTQ4LTI3Ljd6TTg4OCA2MjVsLTEwNC01OS44VjQ1OC45TDg4OCAzOTl2MjI2eiIgLz48cGF0aCBkPSJNMzIwIDM2MGM0LjQgMCA4LTMuNiA4LTh2LTQ4YzAtNC40LTMuNi04LTgtOEgyMDhjLTQuNCAwLTggMy42LTggOHY0OGMwIDQuNCAzLjYgOCA4IDhoMTEyeiIgLz48L3N2Zz4=) */
/**![zoom-in](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYzNyA0NDNINTE5VjMwOWMwLTQuNC0zLjYtOC04LThoLTYwYy00LjQgMC04IDMuNi04IDh2MTM0SDMyNWMtNC40IDAtOCAzLjYtOCA4djYwYzAgNC40IDMuNiA4IDggOGgxMTh2MTM0YzAgNC40IDMuNiA4IDggOGg2MGM0LjQgMCA4LTMuNiA4LThWNTE5aDExOGM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMjg0IDQyNEw3NzUgNzIxYzEyMi4xLTE0OC45IDExMy42LTM2OS41LTI2LTUwOS0xNDgtMTQ4LjEtMzg4LjQtMTQ4LjEtNTM3IDAtMTQ4LjEgMTQ4LjYtMTQ4LjEgMzg5IDAgNTM3IDEzOS41IDEzOS42IDM2MC4xIDE0OC4xIDUwOSAyNmwxNDYgMTQ2YzMuMiAyLjggOC4zIDIuOCAxMSAwbDQzLTQzYzIuOC0yLjcgMi44LTcuOCAwLTExek02OTYgNjk2Yy0xMTguOCAxMTguNy0zMTEuMiAxMTguNy00MzAgMC0xMTguNy0xMTguOC0xMTguNy0zMTEuMiAwLTQzMCAxMTguOC0xMTguNyAzMTEuMi0xMTguNyA0MzAgMCAxMTguNyAxMTguOCAxMTguNyAzMTEuMiAwIDQzMHoiIC8+PC9zdmc+) */
/**![zoom-out](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYzNyA0NDNIMzI1Yy00LjQgMC04IDMuNi04IDh2NjBjMCA0LjQgMy42IDggOCA4aDMxMmM0LjQgMCA4LTMuNiA4LTh2LTYwYzAtNC40LTMuNi04LTgtOHptMjg0IDQyNEw3NzUgNzIxYzEyMi4xLTE0OC45IDExMy42LTM2OS41LTI2LTUwOS0xNDgtMTQ4LjEtMzg4LjQtMTQ4LjEtNTM3IDAtMTQ4LjEgMTQ4LjYtMTQ4LjEgMzg5IDAgNTM3IDEzOS41IDEzOS42IDM2MC4xIDE0OC4xIDUwOSAyNmwxNDYgMTQ2YzMuMiAyLjggOC4zIDIuOCAxMSAwbDQzLTQzYzIuOC0yLjcgMi44LTcuOCAwLTExek02OTYgNjk2Yy0xMTguOCAxMTguNy0zMTEuMiAxMTguNy00MzAgMC0xMTguNy0xMTguOC0xMTguNy0zMTEuMiAwLTQzMCAxMTguOC0xMTguNyAzMTEuMi0xMTguNyA0MzAgMCAxMTguNyAxMTguOCAxMTguNyAzMTEuMiAwIDQzMHoiIC8+PC9zdmc+) */

File diff suppressed because one or more lines are too long

View File

@ -1,79 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* use-sync-external-store-shim.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v16.13.1
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/** @license React v17.0.2
* react-is.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

View File

@ -1,47 +0,0 @@
{
"name": "micro-app",
"version": "2.0.0",
"description": "建教帮微应用模板",
"author": "JJB",
"license": "MIT",
"main": "index.js",
"scripts": {
"serve": "node node_modules/@cqsjjb/scripts/webpack.dev.server.js",
"build": "node node_modules/@cqsjjb/scripts/webpack.build.js",
"push": "jjb-cmd push java production",
"clean-cache": "rimraf node_modules/.cache/webpack",
"serve:development": "cross-env NODE_ENV=development npm run serve",
"serve:production": "cross-env NODE_ENV=production npm run serve",
"build:development": "cross-env NODE_ENV=development npm run build",
"build:production": "cross-env NODE_ENV=production npm run build",
"code-optimization": "node node_modules/@cqsjjb/scripts/code-optimization.js",
"lint": "eslint --ext .js,.jsx,.tsx --fix src"
},
"dependencies": {
"@ant-design/icons": "latest",
"@ant-design/pro-components": "^2.8.10",
"@cqsjjb/jjb-common-decorator": "latest",
"@cqsjjb/jjb-common-lib": "latest",
"@cqsjjb/jjb-dva-runtime": "latest",
"@cqsjjb/jjb-react-admin-component": "latest",
"ahooks": "^3.9.5",
"antd": "latest",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"zy-react-library": "^1.0.118"
},
"devDependencies": {
"@antfu/eslint-config": "^5.4.1",
"@babel/plugin-proposal-decorators": "^7.19.3",
"@cqsjjb/scripts": "latest",
"@eslint-react/eslint-plugin": "^2.2.2",
"cross-env": "^7.0.3",
"eslint": "^9.37.0",
"eslint-plugin-format": "^1.0.2",
"eslint-plugin-react-hooks": "^7.0.0",
"eslint-plugin-react-refresh": "^0.4.23",
"typescript": "^5.9.3"
}
}

View File

@ -1,23 +0,0 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2025/11/21 10:27:43) App/basic-info"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
fontFamily: 'PingFangSC-Regular',
colorPrimary: '#1677ff',
borderRadius: parseInt('2')
},
appKey: '',
basename: 'basic-info',
API_HOST: 'http://192.168.20.100:30140'
};
APP_ENV.API_HOST = sessionStorage.API_HOST || APP_ENV.API_HOST || window.location.origin;
window.process = {
env: { app: APP_ENV },
NODE_ENV: 'production'
};
window.__JJB_ENVIRONMENT__ = {
API_HOST: APP_ENV.API_HOST,
redirect: '',
FRAMEWORK: APP_ENV.antd
};
})();</script><script src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script><script defer="defer" src="/basic-info/static/js/418.e3b78452bf77bb630f75.js"></script><script defer="defer" src="/basic-info/static/js/52.750bdeed068a68dc1077.js"></script><script defer="defer" src="/basic-info/static/js/main.fe2e6eb14455acaa8a20.js"></script><link href="/basic-info/static/css/main.640d8c3fc4701f655c3c.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息、构建时间 */console.log("%c@cqsjjb/scripts@2.0.0-alpha-1 Env/production (2025/11/21 10:27:43) App/basic-info Version/master Java/<branch-name>", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -16,7 +16,7 @@ module.exports = {
// 应用后端分支名称,部署上线需要 // 应用后端分支名称,部署上线需要
javaGitBranch: "<branch-name>", javaGitBranch: "<branch-name>",
// 接口服务地址 // 接口服务地址
API_HOST: "http://192.168.20.100:30140", API_HOST: "https://gbs-gateway.qhdsafety.com",
}, },
}, },
// 应用唯一标识符 // 应用唯一标识符
@ -25,8 +25,8 @@ module.exports = {
contextInject: { contextInject: {
// 应用Key // 应用Key
appKey: "", appKey: "",
fileUrl: "http://192.168.20.240:9787/mnt/", // fileUrl: "http://192.168.20.240:9787/mnt/",
// fileUrl: "https://jpfz.qhdsafety.com/gbsFileTest/", fileUrl: "https://jpfz.qhdsafety.com/gbsFileTest/",
}, },
// public/index.html注入全局变量 // public/index.html注入全局变量
windowInject: { windowInject: {

View File

@ -25,13 +25,13 @@
"@cqsjjb/jjb-dva-runtime": "latest", "@cqsjjb/jjb-dva-runtime": "latest",
"@cqsjjb/jjb-react-admin-component": "latest", "@cqsjjb/jjb-react-admin-component": "latest",
"ahooks": "^3.9.5", "ahooks": "^3.9.5",
"antd": "latest", "antd": "5.27.6",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"qrcode.react": "^4.2.0", "qrcode.react": "^4.2.0",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"zy-react-library": "^1.0.121" "zy-react-library": "^1.0.122"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^5.4.1", "@antfu/eslint-config": "^5.4.1",

View File

@ -45,7 +45,6 @@ export const userEmploymentLogAll = declareRequest(
"userLoading", "userLoading",
"Get > /basic-info/userEmploymentLog/listAll", "Get > /basic-info/userEmploymentLog/listAll",
); );
export const userChangePassword = declareRequest( export const userChangePassword = declareRequest(
"userLoading", "userLoading",
"Post > @/basic-info/user/changePassword/{id}", "Post > @/basic-info/user/changePassword/{id}",

View File

@ -126,22 +126,21 @@ function Department(props) {
/> />
</div> </div>
</div> </div>
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loding={props.businessLicense.corpQualificationLoading}
loding={props.businessLicense.corpQualificationLoading} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestAdd={props["corpQualificationInfoAdd"]}
requestAdd={props["corpQualificationInfoAdd"]} requestEdit={props["corpQualificationInfoEdit"]}
requestEdit={props["corpQualificationInfoEdit"]} requestDetails={props["corpQualificationInfoDetails"]}
requestDetails={props["corpQualificationInfoDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
); );
} }

View File

@ -24,7 +24,6 @@ function Info(props) {
const fetchData = async () => { const fetchData = async () => {
const { data } = await props["userGetInfo"](); const { data } = await props["userGetInfo"]();
console.log(data); console.log(data);
const res = await props.corpInfoDetails({ const res = await props.corpInfoDetails({
id: data.corpinfoId, id: data.corpinfoId,
}); });
@ -62,7 +61,6 @@ function Info(props) {
label: "企业状态", label: "企业状态",
children: info.corpStateName, children: info.corpStateName,
}, },
{ {
label: "所属区域", label: "所属区域",
children: info.cityName, children: info.cityName,
@ -151,7 +149,6 @@ function Info(props) {
label: "企事业单位经营地址", label: "企事业单位经营地址",
children: info.addressBusiness, children: info.addressBusiness,
}, },
{ {
label: "营业执照", label: "营业执照",
children: <TooltipPreviewImg files={info.licenseFile} />, children: <TooltipPreviewImg files={info.licenseFile} />,

View File

@ -5,10 +5,10 @@ import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import HeaderBack from "zy-react-library/components/HeaderBack";
import Map from "zy-react-library/components/Map"; import Map from "zy-react-library/components/Map";
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary";
import IndustrySelect from "zy-react-library/components/SelectTree/Industry"; import IndustrySelect from "zy-react-library/components/SelectTree/Industry";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
@ -22,8 +22,7 @@ import {
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from "~/enumerate/namespace";
import { useDebounce } from "~/utils";
import { useDebounce } from "~/utils"; // 确保路径正确
const ENTERPRISE_STATUS = [ const ENTERPRISE_STATUS = [
{ {
@ -74,7 +73,6 @@ function Update(props) {
const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
const { loading: uploadFileLoading, uploadFile } = useUploadFile(); const { loading: uploadFileLoading, uploadFile } = useUploadFile();
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
const [codeValue, setCodeValue] = useState(""); const [codeValue, setCodeValue] = useState("");
const [corpNameValue, setCorpNameValue] = useState(""); const [corpNameValue, setCorpNameValue] = useState("");
const debouncedCode = useDebounce(codeValue, 600); const debouncedCode = useDebounce(codeValue, 600);
@ -90,10 +88,8 @@ function Update(props) {
eqForeignKey: data.corpinfoId, eqForeignKey: data.corpinfoId,
}); });
data.INDUSTRYALL = getLastValidCorpTypeName(data); data.INDUSTRYALL = getLastValidCorpTypeName(data);
data.license = [data.licenseStart, data.licenseEnd]; data.license = [data.licenseStart, data.licenseEnd];
data.scaleType = data.scaleType ?? 0; data.scaleType = data.scaleType ?? 0;
const values = { const values = {
licenseFile, licenseFile,
...data, ...data,
@ -122,12 +118,25 @@ function Update(props) {
// 校验社会统一信用代码重复 // 校验社会统一信用代码重复
useEffect(() => { useEffect(() => {
if (!debouncedCode) { if (!debouncedCode) {
form.setFields([{ name: "code", errors: [] }]); form.setFields([
{
name: "code",
errors: [],
},
]);
return; return;
} }
props["corplnfoCheckCorpcode"]({ code: debouncedCode, id: queryParams["id"] }).then((res) => { props["corplnfoCheckCorpcode"]({
code: debouncedCode,
id: queryParams["id"],
}).then((res) => {
if (!res.data) { if (!res.data) {
form.setFields([{ name: "code", errors: ["该社会统一信用代码已被其他企业使用"] }]); form.setFields([
{
name: "code",
errors: ["该社会统一信用代码已被其他企业使用"],
},
]);
} }
}); });
}, [debouncedCode]); }, [debouncedCode]);
@ -135,24 +144,34 @@ function Update(props) {
// 校验企业名称重复 // 校验企业名称重复
useEffect(() => { useEffect(() => {
if (!debouncedCorpName) { if (!debouncedCorpName) {
form.setFields([{ name: "corpName", errors: [] }]); form.setFields([
{
name: "corpName",
errors: [],
},
]);
return; return;
} }
props["corplnfoCheckCorpName"]({ corpName: debouncedCorpName, id: queryParams["id"] }).then((res) => { props["corplnfoCheckCorpName"]({
corpName: debouncedCorpName,
id: queryParams["id"],
}).then((res) => {
if (!res.data) { if (!res.data) {
form.setFields([{ name: "corpName", errors: ["企业名称重复"] }]); form.setFields([
{
name: "corpName",
errors: ["企业名称重复"],
},
]);
} }
}); });
}, [debouncedCorpName]); }, [debouncedCorpName]);
const onValuesChange = (changed) => { const onValuesChange = (changed) => {
if ("code" in changed) if ("code" in changed)
setCodeValue(changed.code ?? ""); setCodeValue(changed.code ?? "");
if ("corpName" in changed) if ("corpName" in changed)
setCorpNameValue(changed.corpName ?? ""); setCorpNameValue(changed.corpName ?? "");
}; };
const onSubmit = async (values) => { const onSubmit = async (values) => {
await deleteFile({ await deleteFile({
single: false, single: false,
@ -230,7 +249,6 @@ function Update(props) {
// 全为空则返回空字符串或默认值 // 全为空则返回空字符串或默认值
return ""; return "";
} }
return ( return (
<> <>
<HeaderBack title="编辑" /> <HeaderBack title="编辑" />
@ -241,7 +259,6 @@ function Update(props) {
> >
<FormBuilder <FormBuilder
form={form} form={form}
onValuesChange={onValuesChange}
values={{ values={{
scaleType: 0, scaleType: 0,
whetherHygieneFlag: 0, whetherHygieneFlag: 0,
@ -304,7 +321,6 @@ function Update(props) {
pattern: UNIFIED_SOCIAL_CREDIT_CODE, pattern: UNIFIED_SOCIAL_CREDIT_CODE,
message: "请输入正确的社会统一信用代码", message: "请输入正确的社会统一信用代码",
}, },
], ],
}, },
{ {
@ -350,16 +366,10 @@ function Update(props) {
required: false, required: false,
render: FORM_ITEM_RENDER_ENUM.DATE, render: FORM_ITEM_RENDER_ENUM.DATE,
}, },
{ {
name: "map", name: "map",
customizeRender: true, customizeRender: true,
render: ( render: <Map required={false} />,
<Map
required={false}
/>
),
span: 24, span: 24,
}, },
{ {
@ -409,12 +419,10 @@ function Update(props) {
<IndustrySelect <IndustrySelect
onGetNodePaths={(data) => { onGetNodePaths={(data) => {
console.log(data); console.log(data);
setIndustryData(data); setIndustryData(data);
}} }}
/> />
), ),
}, },
{ {
@ -598,6 +606,7 @@ function Update(props) {
span: 6, span: 6,
}} }}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</div> </div>
</> </>

View File

@ -1,8 +1,8 @@
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import HeaderBack from "zy-react-library/components/HeaderBack";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
function Add() { function Add() {

View File

@ -6,8 +6,8 @@ import AddIcon from "zy-react-library/components/Icon/AddIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
@ -23,7 +23,6 @@ function OrganizationStructure(props) {
const [selectedNodeName, setSelectedNodeName] = useState(""); const [selectedNodeName, setSelectedNodeName] = useState("");
const { getUserInfo } = useGetUserInfo(); const { getUserInfo } = useGetUserInfo();
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["departmentList"], { const { tableProps, getData } = useTable(props["departmentList"], {
form, form,
transform: (formData) => { transform: (formData) => {
@ -34,17 +33,14 @@ function OrganizationStructure(props) {
}; };
}, },
}); });
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
getUserInfo().then((res) => { getUserInfo().then((res) => {
setSelectedNodeName(res.departmentName); setSelectedNodeName(res.departmentName);
}); });
}; };
fetchData(); fetchData();
}, []); }, []);
const onTreeChange = (selectedKeys, event) => { const onTreeChange = (selectedKeys, event) => {
const key = selectedKeys[0] || null; const key = selectedKeys[0] || null;
setSelectedNodeName(event.node.name); setSelectedNodeName(event.node.name);
@ -79,10 +75,7 @@ function OrganizationStructure(props) {
gap: 20, gap: 20,
}} }}
> >
<LeftTree <LeftTree onSelect={onTreeChange} />
onSelect={onTreeChange}
/>
<div <div
style={{ style={{
flex: 1, flex: 1,
@ -141,7 +134,7 @@ function OrganizationStructure(props) {
dataIndex: "levelName", dataIndex: "levelName",
}, },
{ {
title: "部门责人", title: "部门责人",
dataIndex: "departmentUserLeaderList", dataIndex: "departmentUserLeaderList",
}, },
{ {
@ -182,7 +175,6 @@ function OrganizationStructure(props) {
<AddModal <AddModal
open={addModalOpen} open={addModalOpen}
loading={props.department.departmentLoading} loading={props.department.departmentLoading}
parentId={selectedNodeId} parentId={selectedNodeId}
currentId={currentId} currentId={currentId}
requestAdd={props["departmentAdd"]} requestAdd={props["departmentAdd"]}
@ -235,7 +227,6 @@ function AddModalComponent(props) {
message.error("部门排序请输入正整数!"); message.error("部门排序请输入正整数!");
return; return;
} }
if (props.currentId) { if (props.currentId) {
values.parentId = props.parentId; values.parentId = props.parentId;
values.id = props.currentId; values.id = props.currentId;

View File

@ -3,13 +3,14 @@ import { Button, Form, message, Modal, Space, Tag } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { NS_POST } from "~/enumerate/namespace"; import { NS_POST } from "~/enumerate/namespace";
// import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; // import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
@ -42,7 +43,6 @@ function Post(props) {
message.success("删除成功"); message.success("删除成功");
} }
}); });
getData(); getData();
}, },
}); });
@ -79,7 +79,6 @@ function Post(props) {
name: "likePostName", name: "likePostName",
label: "岗位名称", label: "岗位名称",
}, },
]} ]}
onFinish={getData} onFinish={getData}
/> />
@ -161,7 +160,6 @@ function AddModalComponent(props) {
const [parentName, setParentName] = useState(null); const [parentName, setParentName] = useState(null);
const [parentId, setParentId] = useState(null); const [parentId, setParentId] = useState(null);
const { getUserInfo } = useGetUserInfo(); const { getUserInfo } = useGetUserInfo();
useEffect(() => { useEffect(() => {
if (props.currentId) { if (props.currentId) {
props props
@ -170,7 +168,6 @@ function AddModalComponent(props) {
}) })
.then((res) => { .then((res) => {
form.setFieldsValue(res.data); form.setFieldsValue(res.data);
setParentName(res.data.departmentName); setParentName(res.data.departmentName);
setParentId(res.data.departmentId); setParentId(res.data.departmentId);
}); });
@ -188,7 +185,6 @@ function AddModalComponent(props) {
} }
} }
}, [props.currentId, props.selectedNodeName]); }, [props.currentId, props.selectedNodeName]);
const onCancel = () => { const onCancel = () => {
form.resetFields(); form.resetFields();
props.onCancel(); props.onCancel();

View File

@ -51,7 +51,6 @@ function Add(props) {
const debouncedUserIdCard = useDebounce(userIdCardValue, 600); const debouncedUserIdCard = useDebounce(userIdCardValue, 600);
const debouncedUsernameValue = useDebounce(usernameValue, 600); const debouncedUsernameValue = useDebounce(usernameValue, 600);
const debouncedPhoneValueValue = useDebounce(phoneValue, 600); const debouncedPhoneValueValue = useDebounce(phoneValue, 600);
const { loading: uploadFileLoading, uploadFile } = useUploadFile(); const { loading: uploadFileLoading, uploadFile } = useUploadFile();
useEffect(() => { useEffect(() => {
if (queryParams["id"]) { if (queryParams["id"]) {
@ -151,7 +150,7 @@ function Add(props) {
}); });
props["postAll"]({ props["postAll"]({
corpFlag: 1, corpFlag: 1,
departmentId: event[0].id, departmentId: event[event.length - 1].id,
}).then((res) => { }).then((res) => {
setPostData(res.data); setPostData(res.data);
}); });
@ -159,12 +158,25 @@ function Add(props) {
// 校验身份证重复 // 校验身份证重复
useEffect(() => { useEffect(() => {
if (!debouncedUserIdCard) { if (!debouncedUserIdCard) {
form.setFields([{ name: "userIdCard", errors: [] }]); form.setFields([
{
name: "userIdCard",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ userIdCard: debouncedUserIdCard, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
userIdCard: debouncedUserIdCard,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "userIdCard", errors: ["身份证号重复"] }]); form.setFields([
{
name: "userIdCard",
errors: ["身份证号重复"],
},
]);
} }
}); });
}, [debouncedUserIdCard]); }, [debouncedUserIdCard]);
@ -172,12 +184,25 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedUsernameValue) { if (!debouncedUsernameValue) {
form.setFields([{ name: "username", errors: [] }]); form.setFields([
{
name: "username",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ username: debouncedUsernameValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
username: debouncedUsernameValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "username", errors: ["用户名重复"] }]); form.setFields([
{
name: "username",
errors: ["用户名重复"],
},
]);
} }
}); });
}, [debouncedUsernameValue]); }, [debouncedUsernameValue]);
@ -185,20 +210,31 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedPhoneValueValue) { if (!debouncedPhoneValueValue) {
form.setFields([{ name: "phone", errors: [] }]); form.setFields([
{
name: "phone",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ phone: debouncedPhoneValueValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
phone: debouncedPhoneValueValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "phone", errors: ["手机号重复"] }]); form.setFields([
{
name: "phone",
errors: ["手机号重复"],
},
]);
} }
}); });
}, [debouncedPhoneValueValue]); }, [debouncedPhoneValueValue]);
const onValuesChange = (changedValues) => { const onValuesChange = (changedValues) => {
if ("userIdCard" in changedValues) { if ("userIdCard" in changedValues) {
const newIdCard = changedValues.userIdCard; const newIdCard = changedValues.userIdCard;
setUserIdCardValue(newIdCard ?? ""); setUserIdCardValue(newIdCard ?? "");
if (newIdCard) { if (newIdCard) {
form.setFieldValue("sex", idCardGetDateAndGender(newIdCard).sex); form.setFieldValue("sex", idCardGetDateAndGender(newIdCard).sex);
@ -221,7 +257,6 @@ function Add(props) {
> >
<FormBuilder <FormBuilder
form={form} form={form}
onValuesChange={onValuesChange}
values={{ values={{
departmentLeaderFlag: "0", departmentLeaderFlag: "0",
}} }}
@ -381,6 +416,7 @@ function Add(props) {
span: 6, span: 6,
}} }}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</div> </div>
</> </>

View File

@ -8,13 +8,13 @@ import ImportFile from "zy-react-library/components/ImportFile";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob";
import useImportFile from "zy-react-library/hooks/useImportFile"; import useImportFile from "zy-react-library/hooks/useImportFile";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
function List(props) { function List(props) {
@ -33,7 +33,6 @@ function List(props) {
...formData, ...formData,
eqDepartmentId: selectedNodeId, eqDepartmentId: selectedNodeId,
userType: 2, userType: 2,
allFlag: 1,
}; };
}, },
}); });
@ -200,32 +199,28 @@ function List(props) {
/> />
</div> </div>
</div> </div>
{importOpen {importOpen && (
&& ( <ImportFile
<ImportFile visible={importOpen}
visible={importOpen} templateUrl={`${process.env.app["fileUrl"]}template/user_template.xlsx`}
templateUrl="" onCancel={() => {
onCancel={() => { setImportOpen(false);
setImportOpen(false); }}
}} onConfirm={onImportFileConfirm}
onConfirm={onImportFileConfirm} />
/> )}
)} {addModalOpen && (
{ <AddModal
addModalOpen open={addModalOpen}
&& ( getData={getData}
<AddModal currentId={currentId}
open={addModalOpen} requestDetails={props["userDetails"]}
getData={getData} onCancel={() => {
currentId={currentId} setAddModalOpen(false);
requestDetails={props["userDetails"]} setCurrentId("");
onCancel={() => { }}
setAddModalOpen(false); />
setCurrentId(""); )}
}}
/>
)
}
</div> </div>
); );
} }
@ -238,7 +233,11 @@ function AddModalComponent(props) {
const res = await props.requestDetails({ const res = await props.requestDetails({
id: props.currentId, id: props.currentId,
}); });
res.data.userAvatarUrl = [{ filePath: res.data.userAvatarUrl }]; res.data.userAvatarUrl = [
{
filePath: res.data.userAvatarUrl,
},
];
console.log(res.data); console.log(res.data);
setInfo(res.data); setInfo(res.data);
}; };
@ -315,7 +314,12 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "人脸照片", label: "人脸照片",

View File

@ -1,33 +1,35 @@
import React from 'react'; import { ImportCore } from "@cqsjjb/jjb-common-decorator/module";
import { ImportCore } from '@cqsjjb/jjb-common-decorator/module'; import React from "react";
export default class Entry extends React.Component { export default class Entry extends React.Component {
state = { state = {
Component: undefined Component: undefined,
}; };
componentDidMount() { componentDidMount() {
if (process.env.app.appKey) { if (process.env.app.appKey) {
ImportCore({ ImportCore({
name: '$', name: "$",
from: 'https://cdn.cqjjb.cn/jcloud/use/plugin/b31c9840a57f11ef91cf7f3cabbb7484/latest' from: "https://cdn.cqjjb.cn/jcloud/use/plugin/b31c9840a57f11ef91cf7f3cabbb7484/latest",
}).then(res => { }).then((res) => {
if (res.status) { if (res.status) {
this.setState({ this.setState({
Component: res.module?.default Component: res.module?.default,
}); });
} }
}); });
} }
} }
render() { render() {
const { Component } = this.state; const { Component } = this.state;
return ( return (
Component && Component
process.env.app.appKey && ( && process.env.app.appKey && (
<Component <Component
detail={{ detail={{
componentKey: process.env.app.appKey componentKey: process.env.app.appKey,
}} }}
appKey={process.env.app.appKey} appKey={process.env.app.appKey}
/> />

View File

@ -125,22 +125,21 @@ function Department(props) {
/> />
</div> </div>
</div> </div>
{ addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loding={props.personnelCertificate.userQualificationLoading}
loding={props.personnelCertificate.userQualificationLoading} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestAdd={props["userQualificationInfoAdd"]}
requestAdd={props["userQualificationInfoAdd"]} requestEdit={props["userQualificationInfoEdit"]}
requestEdit={props["userQualificationInfoEdit"]} requestDetails={props["userQualificationInfoDetails"]}
requestDetails={props["userQualificationInfoDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
); );
} }

View File

@ -90,31 +90,27 @@ function Qualification() {
]} ]}
{...tableProps} {...tableProps}
/> />
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)} {previewOpen && (
{ <PreviewModal
previewOpen src={previewSrc}
&& ( open={previewOpen}
<PreviewModal onCancel={() => {
src={previewSrc} setPreviewOpen(false);
open={previewOpen} setPreviewSrc("");
onCancel={() => { }}
setPreviewOpen(false); />
setPreviewSrc(""); )}
}}
/>
)
}
</div> </div>
); );
} }

View File

@ -1,59 +1,58 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import Map from 'zy-react-library/components/Map';
import { Button, Form, message, Modal, QRCode } from "antd"; import Upload from 'zy-react-library/components/Upload';
import { useEffect, useState } from "react"; import useGetFile from 'zy-react-library/hooks/useGetFile';
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from 'zy-react-library/components/FormBuilder';
import Map from "zy-react-library/components/Map"; import useDeleteFile from 'zy-react-library/hooks/useDeleteFile';
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import useUploadFile from 'zy-react-library/hooks/useUploadFile';
import IndustrySelect from 'zy-react-library/components/SelectTree/Industry';
import DictionarySelect from 'zy-react-library/components/SelectTree/Dictionary';
import IndustrySelect from "zy-react-library/components/SelectTree/Industry"; import { Connect } from '@cqsjjb/jjb-dva-runtime';
import Upload from "zy-react-library/components/Upload"; import { getLabelName } from 'zy-react-library/utils';
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { useEffect, useState } from 'react';
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { FORM_ITEM_RENDER_ENUM } from 'zy-react-library/enum/formItemRender';
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import { UPLOAD_FILE_TYPE_ENUM } from 'zy-react-library/enum/uploadFile/gwj';
import useGetFile from "zy-react-library/hooks/useGetFile"; import { Button, Form, message, Modal, QRCode } from 'antd';
import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { import {
PHONE, PHONE,
POSTAL_CODE, POSTAL_CODE,
UNIFIED_SOCIAL_CREDIT_CODE, UNIFIED_SOCIAL_CREDIT_CODE
} from "zy-react-library/regular"; } from 'zy-react-library/regular';
import { getLabelName } from "zy-react-library/utils"; import { useDebounce } from '~/utils';
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from '~/enumerate/namespace';
import { useDebounce } from "~/utils";
const ENTERPRISE_STATUS = [ const ENTERPRISE_STATUS = [
{ {
bianma: "filialstate01", bianma: 'filialstate01',
name: "在产", name: '在产'
}, },
{ {
bianma: "filialstate02", bianma: 'filialstate02',
name: "在建", name: '在建'
}, },
{ {
bianma: "filialstate03", bianma: 'filialstate03',
name: "代建", name: '代建'
}, },
{ {
bianma: "filialstate04", bianma: 'filialstate04',
name: "停产", name: '停产'
}, },
{ {
bianma: "filialstate05", bianma: 'filialstate05',
name: "破产", name: '破产'
}, }
]; ];
const WHETHER_ENUM = [ const WHETHER_ENUM = [
{ {
bianma: 1, bianma: 1,
name: "是", name: '是'
}, },
{ {
bianma: 0, bianma: 0,
name: "否", name: '否'
}, }
]; ];
// const xgfStateMap = { // const xgfStateMap = {
// 0: "未填报", // 0: "未填报",
@ -75,83 +74,85 @@ function CorpInfo(props) {
const [industryData, setIndustryData] = useState([]); const [industryData, setIndustryData] = useState([]);
const [cityData, setCityData] = useState([]); const [cityData, setCityData] = useState([]);
const [info, setInfoData] = useState([]); const [info, setInfoData] = useState([]);
const [codeValue, setCodeValue] = useState('');
const [codeValue, setCodeValue] = useState(""); const [corpNameValue, setCorpNameValue] = useState('');
const [corpNameValue, setCorpNameValue] = useState("");
const debouncedCode = useDebounce(codeValue, 600); const debouncedCode = useDebounce(codeValue, 600);
const debouncedCorpName = useDebounce(corpNameValue, 600); const debouncedCorpName = useDebounce(corpNameValue, 600);
function getLastValidCorpTypeName(item) { function getLastValidCorpTypeName(item) {
// 按层级顺序排列 // 按层级顺序排列
const names = [ const names = [
item.corpType, item.corpType,
item.corpType2, item.corpType2,
item.corpType3, item.corpType3,
item.corpType4, item.corpType4
]; ];
// 从后往前找第一个非空值 // 从后往前找第一个非空值
for (let i = names.length - 1; i >= 0; i--) { for (let i = names.length - 1; i >= 0; i--) {
if (names[i] != null && names[i] !== "") { if (names[i] != null && names[i] !== '') {
return names[i]; return names[i];
} }
} }
// 全为空则返回空字符串或默认值 // 全为空则返回空字符串或默认值
return ""; return '';
} }
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
const res = await props["userGetInfo"](); const res = await props['userGetInfo']();
const { data } = await props['corpInfoDetails']({
const { data } = await props["corpInfoDetails"]({ id: res.data.corpinfoId }); id: res.data.corpinfoId
});
setInfoData(data); setInfoData(data);
setKeyId({ id: res.data.corpinfoId, corpinfoId: res.data.userId }); setKeyId({
id: res.data.corpinfoId,
corpinfoId: res.data.userId
});
const licenseFile = await getFile({ const licenseFile = await getFile({
eqType: UPLOAD_FILE_TYPE_ENUM["6"], eqType: UPLOAD_FILE_TYPE_ENUM['6'],
eqForeignKey: res.data.userId ? res.data.userId : "", eqForeignKey: res.data.userId ? res.data.userId : ''
}); });
data.INDUSTRYALL = getLastValidCorpTypeName(data); data.INDUSTRYALL = getLastValidCorpTypeName(data);
data.license = [data.licenseStart, data.licenseEnd]; data.license = [data.licenseStart, data.licenseEnd];
data.scaleType = data.scaleType ?? 0; data.scaleType = data.scaleType ?? 0;
const values = { const values = {
licenseFile, licenseFile,
...data, ...data
}; };
form.setFieldsValue({ form.setFieldsValue({
...values, ...values
}); });
}; };
fetchData(); fetchData();
}, []); }, []);
const onSubmit = async (values) => { const onSubmit = async values => {
await deleteFile({ await deleteFile({
single: false, single: false,
files: deleteHiddenImageFiles, files: deleteHiddenImageFiles
}); });
values.ecoTypeName = getLabelName({ values.ecoTypeName = getLabelName({
status: values.ecoType, status: values.ecoType,
list: ecoTypeData, list: ecoTypeData,
idKey: "dictValue", idKey: 'dictValue',
nameKey: "dictLabel", nameKey: 'dictLabel'
}); });
values.scaleName = getLabelName({ values.scaleName = getLabelName({
status: values.scale, status: values.scale,
list: scaleData, list: scaleData,
idKey: "dictValue", idKey: 'dictValue',
nameKey: "dictLabel", nameKey: 'dictLabel'
}); });
values.corpStateName = getLabelName({ values.corpStateName = getLabelName({
status: values.corpState, status: values.corpState,
list: ENTERPRISE_STATUS, list: ENTERPRISE_STATUS,
idKey: "dictValue", idKey: 'dictValue',
nameKey: "dictLabel", nameKey: 'dictLabel'
}); });
values.cityName = getLabelName({ values.cityName = getLabelName({
status: values.city, status: values.city,
list: cityData, list: cityData,
idKey: "dictValue", idKey: 'dictValue',
nameKey: "dictLabel", nameKey: 'dictLabel'
}); });
if (industryData.length > 0) { if (industryData.length > 0) {
values.corpType = industryData[0].dict_value; values.corpType = industryData[0].dict_value;
@ -167,18 +168,18 @@ function CorpInfo(props) {
single: false, single: false,
files: values.licenseFile, files: values.licenseFile,
params: { params: {
type: UPLOAD_FILE_TYPE_ENUM["6"], type: UPLOAD_FILE_TYPE_ENUM['6'],
foreignKey: keyId.corpinfoId, foreignKey: keyId.corpinfoId
}, }
}); });
values.corpinfoId = keyId.corpinfoId; values.corpinfoId = keyId.corpinfoId;
values.id = keyId.id; values.id = keyId.id;
values.licenseStart = values.license[0]; values.licenseStart = values.license[0];
values.licenseEnd = values.license[1]; values.licenseEnd = values.license[1];
delete values.license; delete values.license;
props["corpInfoEdit"](values).then((res) => { props['corpInfoEdit'](values).then(res => {
if (res.success) { if (res.success) {
message.success("操作成功!"); message.success('操作成功!');
} }
}); });
}; };
@ -186,12 +187,25 @@ function CorpInfo(props) {
// 校验社会统一信用代码重复 // 校验社会统一信用代码重复
useEffect(() => { useEffect(() => {
if (!debouncedCode) { if (!debouncedCode) {
form.setFields([{ name: "code", errors: [] }]); form.setFields([
{
name: 'code',
errors: []
}
]);
return; return;
} }
props["corplnfoCheckCorpcode"]({ code: debouncedCode, id: keyId.id }).then((res) => { props['corplnfoCheckCorpcode']({
code: debouncedCode,
id: keyId.id
}).then(res => {
if (!res.data) { if (!res.data) {
form.setFields([{ name: "code", errors: ["该社会统一信用代码已被其他企业使用"] }]); form.setFields([
{
name: 'code',
errors: ['该社会统一信用代码已被其他企业使用']
}
]);
} }
}); });
}, [debouncedCode]); }, [debouncedCode]);
@ -199,246 +213,253 @@ function CorpInfo(props) {
// 校验企业名称重复 // 校验企业名称重复
useEffect(() => { useEffect(() => {
if (!debouncedCorpName) { if (!debouncedCorpName) {
form.setFields([{ name: "corpName", errors: [] }]); form.setFields([
{
name: 'corpName',
errors: []
}
]);
return; return;
} }
props["corplnfoCheckCorpName"]({ corpName: debouncedCorpName, id: keyId.id }).then((res) => { props['corplnfoCheckCorpName']({
corpName: debouncedCorpName,
id: keyId.id
}).then(res => {
if (!res.data) { if (!res.data) {
form.setFields([{ name: "corpName", errors: ["企业名称重复"] }]); form.setFields([
{
name: 'corpName',
errors: ['企业名称重复']
}
]);
} }
}); });
}, [debouncedCorpName]); }, [debouncedCorpName]);
const onValuesChange = changed => {
const onValuesChange = (changed) => { if ('code' in changed) setCodeValue(changed.code ?? '');
if ("code" in changed) if ('corpName' in changed) setCorpNameValue(changed.corpName ?? '');
setCodeValue(changed.code ?? "");
if ("corpName" in changed)
setCorpNameValue(changed.corpName ?? "");
}; };
return ( return (
<> <>
<div <div
style={{ style={{
paddingBottom: 10, paddingBottom: 10
}} }}
> >
<FormBuilder <FormBuilder
form={form} form={form}
onValuesChange={onValuesChange}
loading={ loading={
deleteFileLoading deleteFileLoading ||
|| uploadFileLoading uploadFileLoading ||
|| getFileLoading getFileLoading ||
|| props.enterprise.enterpriseLoading props.enterprise.enterpriseLoading
} }
options={[ options={[
{ {
label: "基本信息", label: '基本信息',
render: FORM_ITEM_RENDER_ENUM.DIVIDER, render: FORM_ITEM_RENDER_ENUM.DIVIDER
}, },
{ {
label: "企业名称", label: '企业名称',
name: "corpName", name: 'corpName',
span: 24, span: 24,
componentProps: { componentProps: {
disabled: true, disabled: true
}, }
}, },
{ {
label: "企业状态", label: '企业状态',
name: "corpState", name: 'corpState',
required: false, required: false,
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: ENTERPRISE_STATUS, items: ENTERPRISE_STATUS,
componentProps: { componentProps: {
disabled: true, disabled: true
}, }
}, },
{ {
label: "社会统一信用代码", label: '社会统一信用代码',
name: "code", name: 'code',
rules: [ rules: [
{ {
pattern: UNIFIED_SOCIAL_CREDIT_CODE, pattern: UNIFIED_SOCIAL_CREDIT_CODE,
message: "请输入正确的社会统一信用代码", message: '请输入正确的社会统一信用代码'
}, }
], ]
}, },
{ {
label: "所属区域", label: '所属区域',
required: false, required: false,
name: "city", name: 'city',
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="res_region_enum" dictValue="res_region_enum"
onGetData={(data) => { onGetData={data => {
setCityData(data); setCityData(data);
}} }}
/> />
), )
}, },
{ {
label: "邮政编码", label: '邮政编码',
name: "postalCode", name: 'postalCode',
required: false, required: false,
rules: [ rules: [
{ {
pattern: POSTAL_CODE, pattern: POSTAL_CODE,
message: "请输入正确的邮政编码", message: '请输入正确的邮政编码'
}, }
], ]
}, },
{ {
label: "规模", label: '规模',
name: "scale", name: 'scale',
required: false, required: false,
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="scale" dictValue="scale"
onGetData={(data) => { onGetData={data => {
setScaleData(data); setScaleData(data);
}} }}
/> />
), )
}, },
{ {
label: "成立时间", label: '成立时间',
name: "createDate", name: 'createDate',
required: false, required: false,
render: FORM_ITEM_RENDER_ENUM.DATE, render: FORM_ITEM_RENDER_ENUM.DATE
}, },
{ {
name: "map", name: 'map',
customizeRender: true, customizeRender: true,
render: <Map required={false} />, render: <Map required={false} />,
span: 24, span: 24
}, },
{ {
label: "职工人数", label: '职工人数',
name: "employees", name: 'employees',
render: FORM_ITEM_RENDER_ENUM.NUMBER, render: FORM_ITEM_RENDER_ENUM.NUMBER
}, },
{ {
label: "占地面积(㎡)", label: '占地面积(㎡)',
name: "areaCovered", name: 'areaCovered',
required: false, required: false,
render: FORM_ITEM_RENDER_ENUM.NUMBER, render: FORM_ITEM_RENDER_ENUM.NUMBER
}, },
{ {
label: "注册资金(万元)", label: '注册资金(万元)',
name: "regcapital", name: 'regcapital',
render: FORM_ITEM_RENDER_ENUM.NUMBER, render: FORM_ITEM_RENDER_ENUM.NUMBER
}, },
{ {
label: "资产总额(万元)", label: '资产总额(万元)',
name: "totalAssets", name: 'totalAssets',
render: FORM_ITEM_RENDER_ENUM.NUMBER, render: FORM_ITEM_RENDER_ENUM.NUMBER
}, },
{ {
label: "经济类型", label: '经济类型',
name: "ecoType", name: 'ecoType',
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="ECO_TYPE" dictValue="ECO_TYPE"
onGetData={(data) => { onGetData={data => {
setEcoTypeData(data); setEcoTypeData(data);
}} }}
/> />
), )
}, },
{ {
label: "所属行业", label: '所属行业',
name: "INDUSTRYALL", name: 'INDUSTRYALL',
render: ( render: (
<IndustrySelect <IndustrySelect
onGetNodePaths={(data) => { onGetNodePaths={data => {
console.log(data); console.log(data);
setIndustryData(data); setIndustryData(data);
}} }}
/> />
), )
}, },
{ {
label: "法定代表人", label: '法定代表人',
name: "lrName", name: 'lrName',
required: false, required: false
}, },
{ {
label: "法人手机号", label: '法人手机号',
name: "lrMobile", name: 'lrMobile',
required: false, required: false,
rules: [ rules: [
{ {
pattern: PHONE, pattern: PHONE,
message: "请输入正确的手机号", message: '请输入正确的手机号'
}, }
], ]
}, },
{ {
label: "主要负责人", label: '主要负责人',
name: "contacts", name: 'contacts'
}, },
{ {
label: "主要负责人手机号", label: '主要负责人手机号',
name: "contactsPhone", name: 'contactsPhone',
rules: [ rules: [
{ {
pattern: PHONE, pattern: PHONE,
message: "请输入正确的手机号", message: '请输入正确的手机号'
}, }
], ]
}, },
{ {
label: "安全负责人", label: '安全负责人',
name: "safetyName", name: 'safetyName',
required: false, required: false
}, },
{ {
label: "安全负责人电话手机号", label: '安全负责人电话手机号',
name: "safetyPhone", name: 'safetyPhone',
required: false, required: false,
rules: [ rules: [
{ {
pattern: PHONE, pattern: PHONE,
message: "请输入正确的手机号", message: '请输入正确的手机号'
}, }
], ]
}, },
{ {
label: "是否规模以上", label: '是否规模以上',
name: "scaleType", name: 'scaleType',
required: false, required: false,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: WHETHER_ENUM, items: WHETHER_ENUM
}, },
{ {
label: "企事业单位经营地址", label: '企事业单位经营地址',
name: "addressBusiness", name: 'addressBusiness'
}, },
{ {
label: "营业执照", label: '营业执照',
name: "licenseFile", name: 'licenseFile',
render: ( render: (
<Upload <Upload
onGetRemoveFile={(file) => { onGetRemoveFile={file => {
setDeleteHiddenImageFiles([ setDeleteHiddenImageFiles([
...deleteHiddenImageFiles, ...deleteHiddenImageFiles,
file, file
]); ]);
}} }}
/> />
), )
}, },
{ {
label: "营业执照有效期", label: '营业执照有效期',
name: "license", name: 'license',
render: FORM_ITEM_RENDER_ENUM.DATE_RANGE, render: FORM_ITEM_RENDER_ENUM.DATE_RANGE
}, },
{ {
name: "qrCode", name: 'qrCode',
label: "企业二维码", label: '企业二维码',
required: false, required: false,
render: ( render: (
<Button <Button
@ -449,26 +470,26 @@ function CorpInfo(props) {
> >
查看 查看
</Button> </Button>
), )
}, }
// { label: "单位资质信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, // { label: "单位资质信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
// { name: "qualification", customizeRender: true, span: 24, render: <Qualification /> }, // { name: "qualification", customizeRender: true, span: 24, render: <Qualification /> },
]} ]}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</div> </div>
{ corpInfoQrCodeOpen {corpInfoQrCodeOpen && (
&& ( <CorpInfoQrCode
<CorpInfoQrCode row={info}
open={corpInfoQrCodeOpen} open={corpInfoQrCodeOpen}
row={info} onCancel={() => setCorpInfoQrCodeOpen(false)}
onCancel={() => setCorpInfoQrCodeOpen(false)} />
/> )}
)}
</> </>
); );
} }
const CorpInfoQrCode = (props) => { const CorpInfoQrCode = props => {
return ( return (
<Modal <Modal
open={props.open} open={props.open}
@ -479,14 +500,17 @@ const CorpInfoQrCode = (props) => {
onClick={props.onCancel} onClick={props.onCancel}
> >
关闭 关闭
</Button>, </Button>
]} ]}
onCancel={props.onCancel} onCancel={props.onCancel}
> >
<QRCode <QRCode
value={JSON.stringify({ corpName: props.row.corpName, corpinfoId: props.row.corpinfoId })} value={JSON.stringify({
corpName: props.row.corpName,
corpinfoId: props.row.corpinfoId
})}
style={{ style={{
margin: "0 auto", margin: '0 auto'
}} }}
/> />
</Modal> </Modal>

View File

@ -6,14 +6,14 @@ import AddIcon from "zy-react-library/components/Icon/AddIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; import SelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
import { NS_DEPARTMENT } from "~/enumerate/namespace"; import { NS_DEPARTMENT } from "~/enumerate/namespace";
function Department(props) { function Department(props) {
@ -22,7 +22,6 @@ function Department(props) {
const [selectedNodeId, setSelectedNodeId] = useState(null); const [selectedNodeId, setSelectedNodeId] = useState(null);
const [selectedNodeName, setSelectedNodeName] = useState(""); const [selectedNodeName, setSelectedNodeName] = useState("");
const { getUserInfo } = useGetUserInfo(); const { getUserInfo } = useGetUserInfo();
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["departmentList"], { const { tableProps, getData } = useTable(props["departmentList"], {
form, form,
@ -39,7 +38,6 @@ function Department(props) {
setSelectedNodeName(res.departmentName); setSelectedNodeName(res.departmentName);
}); });
}; };
fetchData(); fetchData();
}, []); }, []);
const onTreeChange = (selectedKeys) => { const onTreeChange = (selectedKeys) => {
@ -130,7 +128,7 @@ function Department(props) {
), ),
}, },
{ {
title: "部门责人", title: "部门责人",
dataIndex: "departmentUserLeaderList", dataIndex: "departmentUserLeaderList",
}, },
{ {

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import {Form, Tag} from "antd"; import { Form, Tag } from "antd";
import { useState } from "react"; import { useState } from "react";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import {Form, Tag} from "antd"; import { Form, Tag } from "antd";
import { useState } from "react"; import { useState } from "react";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";

View File

@ -16,6 +16,7 @@ import useUploadFile from "zy-react-library/hooks/useUploadFile";
import nation from "zy-react-library/json/nation.json"; import nation from "zy-react-library/json/nation.json";
import { ID_NUMBER } from "zy-react-library/regular"; import { ID_NUMBER } from "zy-react-library/regular";
import { getLabelName, idCardGetDateAndGender } from "zy-react-library/utils"; import { getLabelName, idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
import { getAgeByIdCard, getBirthDateFromIdCard, useDebounce } from "~/utils"; import { getAgeByIdCard, getBirthDateFromIdCard, useDebounce } from "~/utils";
@ -170,12 +171,25 @@ function Add(props) {
// 校验身份证重复 // 校验身份证重复
useEffect(() => { useEffect(() => {
if (!debouncedUserIdCard) { if (!debouncedUserIdCard) {
form.setFields([{ name: "userIdCard", errors: [] }]); form.setFields([
{
name: "userIdCard",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ userIdCard: debouncedUserIdCard, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
userIdCard: debouncedUserIdCard,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "userIdCard", errors: ["身份证号重复"] }]); form.setFields([
{
name: "userIdCard",
errors: ["身份证号重复"],
},
]);
} }
}); });
}, [debouncedUserIdCard]); }, [debouncedUserIdCard]);
@ -183,12 +197,25 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedUsernameValue) { if (!debouncedUsernameValue) {
form.setFields([{ name: "username", errors: [] }]); form.setFields([
{
name: "username",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ username: debouncedUsernameValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
username: debouncedUsernameValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "username", errors: ["用户名重复"] }]); form.setFields([
{
name: "username",
errors: ["用户名重复"],
},
]);
} }
}); });
}, [debouncedUsernameValue]); }, [debouncedUsernameValue]);
@ -196,16 +223,28 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedPhoneValueValue) { if (!debouncedPhoneValueValue) {
form.setFields([{ name: "phone", errors: [] }]); form.setFields([
{
name: "phone",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ phone: debouncedPhoneValueValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
phone: debouncedPhoneValueValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "phone", errors: ["手机号重复"] }]); form.setFields([
{
name: "phone",
errors: ["手机号重复"],
},
]);
} }
}); });
}, [debouncedPhoneValueValue]); }, [debouncedPhoneValueValue]);
const onValuesChange = (changedValues) => { const onValuesChange = (changedValues) => {
if ("userIdCard" in changedValues) { if ("userIdCard" in changedValues) {
const newIdCard = changedValues.userIdCard; const newIdCard = changedValues.userIdCard;
@ -233,8 +272,6 @@ function Add(props) {
> >
<FormBuilder <FormBuilder
form={form} form={form}
onValuesChange={onValuesChange}
loading={ loading={
deleteFileLoading deleteFileLoading
|| uploadFileLoading || uploadFileLoading
@ -322,7 +359,6 @@ function Add(props) {
}, },
], ],
}, },
{ {
name: "email", name: "email",
label: "电子邮箱", label: "电子邮箱",
@ -364,7 +400,6 @@ function Add(props) {
componentProps: { componentProps: {
disabled: true, disabled: true,
}, },
}, },
{ {
name: "locationAddress", name: "locationAddress",
@ -562,6 +597,7 @@ function Add(props) {
// }, // },
]} ]}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</div> </div>
</> </>

View File

@ -5,14 +5,14 @@ import AddIcon from "zy-react-library/components/Icon/AddIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
function List(props) { function List(props) {
@ -27,7 +27,6 @@ function List(props) {
...formData, ...formData,
eqDepartmentId: selectedNodeId, eqDepartmentId: selectedNodeId,
userType: 3, userType: 3,
allFlag: 1,
}; };
}, },
}); });
@ -100,12 +99,7 @@ function List(props) {
{ {
name: "eqPersonnelType", name: "eqPersonnelType",
label: "人员类型", label: "人员类型",
render: ( render: <DictionarySelect dictValue="renyuanleixing" />,
<DictionarySelect
dictValue="renyuanleixing"
/>
),
}, },
]} ]}
onFinish={getData} onFinish={getData}
@ -208,21 +202,18 @@ function List(props) {
/> />
</div> </div>
</div> </div>
{ {addModalOpen && (
addModalOpen <AddModal
&& ( open={addModalOpen}
<AddModal getData={getData}
open={addModalOpen} currentId={currentId}
getData={getData} requestDetails={props["userDetails"]}
currentId={currentId} onCancel={() => {
requestDetails={props["userDetails"]} setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)
}
</div> </div>
); );
} }
@ -292,7 +283,12 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "出生年月", label: "出生年月",

View File

@ -9,8 +9,8 @@ import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -204,22 +204,21 @@ function Department(props) {
/> />
</div> </div>
</div> </div>
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loding={props.personnelCertificate.userQualificationLoading}
loding={props.personnelCertificate.userQualificationLoading} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestAdd={props["userQualificationInfoAdd"]}
requestAdd={props["userQualificationInfoAdd"]} requestEdit={props["userQualificationInfoEdit"]}
requestEdit={props["userQualificationInfoEdit"]} requestDetails={props["userQualificationInfoDetails"]}
requestDetails={props["userQualificationInfoDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
</div> </div>
); );

View File

@ -10,8 +10,8 @@ import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import Upload from "zy-react-library/components/Upload"; import Upload from "zy-react-library/components/Upload";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -215,25 +215,22 @@ function Department(props) {
</div> </div>
</div> </div>
{ {addModalOpen && (
addModalOpen <AddModal
&& ( open={addModalOpen}
<AddModal loding={props.personnelCertificate.userQualificationLoading}
open={addModalOpen} getData={getData}
loding={props.personnelCertificate.userQualificationLoading} dictData={props["dictData"]}
getData={getData} currentId={currentId}
dictData={props["dictData"]} requestAdd={props["userQualificationInfoAdd"]}
currentId={currentId} requestEdit={props["userQualificationInfoEdit"]}
requestAdd={props["userQualificationInfoAdd"]} requestDetails={props["userQualificationInfoDetails"]}
requestEdit={props["userQualificationInfoEdit"]} onCancel={() => {
requestDetails={props["userQualificationInfoDetails"]} setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)
}
</div> </div>
</div> </div>
); );
@ -316,7 +313,9 @@ function AddModalComponent(props) {
const newIdCard = changedValues.qualificationinfoCategory; const newIdCard = changedValues.qualificationinfoCategory;
if (newIdCard) { if (newIdCard) {
setOperatingProjectType(newIdCard); setOperatingProjectType(newIdCard);
form.setFieldsValue({ operatingProject: undefined }); form.setFieldsValue({
operatingProject: undefined,
});
console.log(newIdCard); console.log(newIdCard);
} }
} }
@ -338,7 +337,6 @@ function AddModalComponent(props) {
values={{ values={{
securityFlag: 0, securityFlag: 0,
}} }}
onValuesChange={onValuesChange}
options={[ options={[
{ {
name: "qualificationName", name: "qualificationName",
@ -398,6 +396,7 @@ function AddModalComponent(props) {
}} }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</Modal> </Modal>
); );

View File

@ -11,6 +11,7 @@ import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { UNIFIED_SOCIAL_CREDIT_CODE } from "zy-react-library/regular"; import { UNIFIED_SOCIAL_CREDIT_CODE } from "zy-react-library/regular";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from "~/enumerate/namespace";
import { useDebounce } from "~/utils"; import { useDebounce } from "~/utils";
@ -295,27 +296,25 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loading={props.enterprise.enterpriseLoading}
loading={props.enterprise.enterpriseLoading} getData={getData}
getData={getData} openType={openType}
openType={openType} currentId={currentId}
currentId={currentId} requestAdd={props["corpInfoAdd"]}
requestAdd={props["corpInfoAdd"]} requestEdit={props["corpInfoEdit"]}
requestEdit={props["corpInfoEdit"]} requestDetails={props["corpInfoDetails"]}
requestDetails={props["corpInfoDetails"]} requestChangeCompanyName={props["corpInfoChangeCompanyName"]}
requestChangeCompanyName={props["corpInfoChangeCompanyName"]} requestCorplnfoCheckCorpcode={props["corplnfoCheckCorpcode"]}
requestCorplnfoCheckCorpcode={props["corplnfoCheckCorpcode"]} requestCorplnfoCheckCorpName={props["corplnfoCheckCorpName"]}
requestCorplnfoCheckCorpName={props["corplnfoCheckCorpName"]} onCancel={() => {
setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)}
</div> </div>
); );
} }
@ -362,34 +361,62 @@ function AddModalComponent(props) {
// 校验社会统一信用代码重复 // 校验社会统一信用代码重复
useEffect(() => { useEffect(() => {
if (!debouncedCode) { if (!debouncedCode) {
form.setFields([{ name: "code", errors: [] }]); form.setFields([
{
name: "code",
errors: [],
},
]);
return; return;
} }
props.requestCorplnfoCheckCorpcode({ code: debouncedCode, id: props.currentId }).then((res) => { props
if (!res.data) { .requestCorplnfoCheckCorpcode({
form.setFields([{ name: "code", errors: ["该社会统一信用代码已被其他企业使用"] }]); code: debouncedCode,
} id: props.currentId,
}); })
.then((res) => {
if (!res.data) {
form.setFields([
{
name: "code",
errors: ["该社会统一信用代码已被其他企业使用"],
},
]);
}
});
}, [debouncedCode]); }, [debouncedCode]);
// 校验企业名称重复 // 校验企业名称重复
useEffect(() => { useEffect(() => {
if (!debouncedCorpName) { if (!debouncedCorpName) {
form.setFields([{ name: "corpName", errors: [] }]); form.setFields([
{
name: "corpName",
errors: [],
},
]);
return; return;
} }
props.requestCorplnfoCheckCorpName({ corpName: debouncedCorpName, id: props.currentId }).then((res) => { props
if (!res.data) { .requestCorplnfoCheckCorpName({
form.setFields([{ name: "corpName", errors: ["企业名称重复"] }]); corpName: debouncedCorpName,
} id: props.currentId,
}); })
.then((res) => {
if (!res.data) {
form.setFields([
{
name: "corpName",
errors: ["企业名称重复"],
},
]);
}
});
}, [debouncedCorpName]); }, [debouncedCorpName]);
const onValuesChange = (changed) => { const onValuesChange = (changed) => {
console.log(changed); console.log(changed);
if ("code" in changed) if ("code" in changed)
setCodeValue(changed.code ?? ""); setCodeValue(changed.code ?? "");
if ("corpName" in changed) if ("corpName" in changed)
setCorpNameValue(changed.corpName ?? ""); setCorpNameValue(changed.corpName ?? "");
}; };
@ -398,15 +425,12 @@ function AddModalComponent(props) {
open={props.open} open={props.open}
title={props.currentId ? "编辑" : "新增"} title={props.currentId ? "编辑" : "新增"}
width={800} width={800}
onOk={form.submit} onOk={form.submit}
onCancel={onCancel} onCancel={onCancel}
> >
<FormBuilder <FormBuilder
form={form} form={form}
span={24} span={24}
onValuesChange={onValuesChange}
loading={props.loading} loading={props.loading}
options={[ options={[
{ {
@ -468,6 +492,7 @@ function AddModalComponent(props) {
}} }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</Modal> </Modal>
); );

View File

@ -7,6 +7,7 @@ import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from "~/enumerate/namespace";
const ENTERPRISE_TYPE = [ const ENTERPRISE_TYPE = [
{ {
bianma: 0, bianma: 0,

View File

@ -41,7 +41,6 @@ const BRANCH_CONPANY_STATUS = [
name: "破产", name: "破产",
}, },
]; ];
const STATUS = [ const STATUS = [
{ {
bianma: 1, bianma: 1,
@ -140,7 +139,13 @@ function List(props) {
title: "状态", title: "状态",
dataIndex: "corpOrder", dataIndex: "corpOrder",
render: (_, record) => ( render: (_, record) => (
<div>{record.useFlag === 0 ? "停用" : record.useFlag === 1 ? "启用" : ""}</div> <div>
{record.useFlag === 0
? "停用"
: record.useFlag === 1
? "启用"
: ""}
</div>
), ),
}, },
{ {

View File

@ -3,6 +3,7 @@ import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import HeaderBack from "zy-react-library/components/HeaderBack";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -31,7 +32,6 @@ function View(props) {
}; };
return ( return (
<div> <div>
<HeaderBack title="查看" /> <HeaderBack title="查看" />
<div <div
style={{ style={{
@ -44,7 +44,12 @@ function View(props) {
gap: 20, gap: 20,
}} }}
> >
<LeftTree onSelect={onTreeChange} params={{ eqCorpinfoId: queryParams["id"] }} /> <LeftTree
params={{
eqCorpinfoId: queryParams["id"],
}}
onSelect={onTreeChange}
/>
<div <div
style={{ style={{
flex: 1, flex: 1,
@ -61,7 +66,7 @@ function View(props) {
dataIndex: "name", dataIndex: "name",
}, },
{ {
title: "部门责人", title: "部门责人",
dataIndex: "departmentUserLeaderList", dataIndex: "departmentUserLeaderList",
}, },
{ {

View File

@ -70,7 +70,6 @@ function List(props) {
}; };
}, },
}); });
const [visible, setVisible] = useState(false); const [visible, setVisible] = useState(false);
const [selectedLng, setSelectedLng] = useState(""); const [selectedLng, setSelectedLng] = useState("");
const [selectedLat, setSelectedLat] = useState(""); const [selectedLat, setSelectedLat] = useState("");
@ -88,7 +87,12 @@ function List(props) {
rowData.latitude = lat; rowData.latitude = lat;
rowData.longitude = lng; rowData.longitude = lng;
rowData.areaCode = extra.area; rowData.areaCode = extra.area;
rowData.areaName = extra.area === "1" ? "东港区" : extra.area === "2" ? "西港区" : ""; rowData.areaName
= extra.area === "1"
? "东港区"
: extra.area === "2"
? "西港区"
: "";
props["corpInfoEdit"](rowData).then((res) => { props["corpInfoEdit"](rowData).then((res) => {
if (res.errMessage) { if (res.errMessage) {
message.success("定位成功!"); message.success("定位成功!");
@ -272,14 +276,13 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
<MapSelector <MapSelector
showArea
area={rowData.areaCode}
visible={visible} visible={visible}
latitude={selectedLat} latitude={selectedLat}
longitude={selectedLng} longitude={selectedLng}
showArea
area={rowData.areaCode}
onClose={() => setVisible(false)} onClose={() => setVisible(false)}
onConfirm={handleConfirm} onConfirm={handleConfirm}
/> />
</div> </div>
); );

View File

@ -2,13 +2,13 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Descriptions, Divider, Tabs } from "antd"; import { Descriptions, Divider, Tabs } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import HeaderBack from "zy-react-library/components/HeaderBack";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from "~/enumerate/namespace";
function View(props) { function View(props) {
@ -33,7 +33,6 @@ function View(props) {
eqType: UPLOAD_FILE_TYPE_ENUM["6"], eqType: UPLOAD_FILE_TYPE_ENUM["6"],
eqForeignKey: res.data.corpinfoId, eqForeignKey: res.data.corpinfoId,
}); });
res.data.licenseFile = licenseFile; res.data.licenseFile = licenseFile;
setInfo(res.data); setInfo(res.data);
}; };
@ -48,7 +47,6 @@ function View(props) {
<Divider orientation="left">基本信息</Divider> <Divider orientation="left">基本信息</Divider>
<Descriptions <Descriptions
bordered bordered
items={[ items={[
{ {
label: "企业名称", label: "企业名称",
@ -58,7 +56,6 @@ function View(props) {
label: "企业名称", label: "企业名称",
children: info.corpName && info.corpName, children: info.corpName && info.corpName,
}, },
{ {
label: "统一社会信用代码", label: "统一社会信用代码",
children: info.code, children: info.code,
@ -91,7 +88,6 @@ function View(props) {
</div> </div>
), ),
}, },
{ {
label: "经度", label: "经度",
children: info.longitude, children: info.longitude,
@ -148,7 +144,6 @@ function View(props) {
label: "安全负责人手机号", label: "安全负责人手机号",
children: info.safetyPhone, children: info.safetyPhone,
}, },
{ {
label: "企事业单位经营地址", label: "企事业单位经营地址",
children: info.addressBusiness, children: info.addressBusiness,

View File

@ -2,14 +2,14 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
function List(props) { function List(props) {
const queryParams = useGetUrlQuery(); const queryParams = useGetUrlQuery();
@ -110,7 +110,11 @@ function AddModalComponent(props) {
const res = await props.requestDetails({ const res = await props.requestDetails({
id: props.currentId, id: props.currentId,
}); });
res.data.userAvatarUrl = [{ filePath: res.data.userAvatarUrl }]; res.data.userAvatarUrl = [
{
filePath: res.data.userAvatarUrl,
},
];
setInfo(res.data); setInfo(res.data);
}; };
fetchData(); fetchData();
@ -185,7 +189,12 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "人脸照片", label: "人脸照片",

View File

@ -3,14 +3,14 @@ import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
const USER_TYPE = [ const USER_TYPE = [
@ -170,8 +170,11 @@ function AddModalComponent(props) {
const res = await props.requestDetails({ const res = await props.requestDetails({
id: props.currentId, id: props.currentId,
}); });
res.data.userAvatarUrl = [{ filePath: res.data.userAvatarUrl }]; res.data.userAvatarUrl = [
{
filePath: res.data.userAvatarUrl,
},
];
setInfo(res.data); setInfo(res.data);
}; };
fetchData(); fetchData();
@ -246,7 +249,12 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "人脸照片", label: "人脸照片",

View File

@ -36,10 +36,8 @@ function List(props) {
return { return {
...formData, ...formData,
enterpriseType: 3, enterpriseType: 3,
geCreateTime: formData.CreateTime?.[0], geCreateTime: formData.CreateTime?.[0],
leCreateTime: formData.CreateTime?.[1], leCreateTime: formData.CreateTime?.[1],
}; };
}, },
}); });
@ -93,11 +91,7 @@ function List(props) {
{ {
name: "eqCity", name: "eqCity",
label: "属地", label: "属地",
render: ( render: <DictionarySelect dictValue="res_region_enum" />,
<DictionarySelect
dictValue="res_region_enum"
/>
),
}, },
{ {
name: "CreateTime", name: "CreateTime",
@ -110,7 +104,6 @@ function List(props) {
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: ENTERPRISE_TYPE, items: ENTERPRISE_TYPE,
}, },
]} ]}
onFinish={getData} onFinish={getData}
/> />
@ -186,25 +179,23 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestAdd={props["corpInfoAdd"]}
requestAdd={props["corpInfoAdd"]} requestEdit={props["corpInfoEdit"]}
requestEdit={props["corpInfoEdit"]} requestDetails={props["corpInfoDetails"]}
requestDetails={props["corpInfoDetails"]} requestChangeCompanyName={props["corpInfoChangeCompanyName"]}
requestChangeCompanyName={props["corpInfoChangeCompanyName"]} requestCorplnfoCheckCorpcode={props["corplnfoCheckCorpcode"]}
requestCorplnfoCheckCorpcode={props["corplnfoCheckCorpcode"]} requestCorplnfoCheckCorpName={props["corplnfoCheckCorpName"]}
requestCorplnfoCheckCorpName={props["corplnfoCheckCorpName"]} onCancel={() => {
setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)}
</div> </div>
); );
} }
@ -245,33 +236,61 @@ function AddModalComponent(props) {
// 校验社会统一信用代码重复 // 校验社会统一信用代码重复
useEffect(() => { useEffect(() => {
if (!debouncedCode) { if (!debouncedCode) {
form.setFields([{ name: "code", errors: [] }]); form.setFields([
{
name: "code",
errors: [],
},
]);
return; return;
} }
props.requestCorplnfoCheckCorpcode({ code: debouncedCode, id: props.currentId }).then((res) => { props
if (!res.data) { .requestCorplnfoCheckCorpcode({
form.setFields([{ name: "code", errors: ["该社会统一信用代码已被其他企业使用"] }]); code: debouncedCode,
} id: props.currentId,
}); })
.then((res) => {
if (!res.data) {
form.setFields([
{
name: "code",
errors: ["该社会统一信用代码已被其他企业使用"],
},
]);
}
});
}, [debouncedCode]); }, [debouncedCode]);
// 校验企业名称重复 // 校验企业名称重复
useEffect(() => { useEffect(() => {
if (!debouncedCorpName) { if (!debouncedCorpName) {
form.setFields([{ name: "corpName", errors: [] }]); form.setFields([
{
name: "corpName",
errors: [],
},
]);
return; return;
} }
props.requestCorplnfoCheckCorpName({ corpName: debouncedCorpName, id: props.currentId }).then((res) => { props
if (!res.data) { .requestCorplnfoCheckCorpName({
form.setFields([{ name: "corpName", errors: ["企业名称重复"] }]); corpName: debouncedCorpName,
} id: props.currentId,
}); })
.then((res) => {
if (!res.data) {
form.setFields([
{
name: "corpName",
errors: ["企业名称重复"],
},
]);
}
});
}, [debouncedCorpName]); }, [debouncedCorpName]);
const onValuesChange = (changed) => { const onValuesChange = (changed) => {
if ("code" in changed) if ("code" in changed)
setCodeValue(changed.code ?? ""); setCodeValue(changed.code ?? "");
if ("corpName" in changed) if ("corpName" in changed)
setCorpNameValue(changed.corpName ?? ""); setCorpNameValue(changed.corpName ?? "");
}; };
@ -285,7 +304,6 @@ function AddModalComponent(props) {
> >
<FormBuilder <FormBuilder
form={form} form={form}
onValuesChange={onValuesChange}
span={24} span={24}
options={[ options={[
{ {
@ -331,6 +349,7 @@ function AddModalComponent(props) {
}} }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</Modal> </Modal>
); );

View File

@ -1,13 +1,13 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Divider, Modal, QRCode } from "antd"; import { Button, Descriptions, Divider, Modal, QRCode } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import HeaderBack from "zy-react-library/components/HeaderBack";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { NS_ENTERPRISE } from "~/enumerate/namespace"; import { NS_ENTERPRISE } from "~/enumerate/namespace";
function View(props) { function View(props) {
@ -21,12 +21,10 @@ function View(props) {
id: queryParams["id"], id: queryParams["id"],
}); });
setInfo(res.data); setInfo(res.data);
const licenseFile = await getFile({ const licenseFile = await getFile({
eqType: UPLOAD_FILE_TYPE_ENUM["6"], eqType: UPLOAD_FILE_TYPE_ENUM["6"],
eqForeignKey: res.data.corpinfoId, eqForeignKey: res.data.corpinfoId,
}); });
res.data.licenseFile = licenseFile; res.data.licenseFile = licenseFile;
// 不要在这里 log info它还是旧的 // 不要在这里 log info它还是旧的
}; };
@ -43,7 +41,6 @@ function View(props) {
<Divider orientation="left">基本信息</Divider> <Divider orientation="left">基本信息</Divider>
<Descriptions <Descriptions
bordered bordered
loading={getFileLoading}
items={[ items={[
{ {
label: "企业名称", label: "企业名称",
@ -127,7 +124,6 @@ function View(props) {
}, },
{ {
label: "企业二维码", label: "企业二维码",
children: ( children: (
<Button <Button
type="link" type="link"
@ -138,18 +134,16 @@ function View(props) {
查看 查看
</Button> </Button>
), ),
}, },
]} ]}
column={2} column={2}
loading={getFileLoading}
labelStyle={{ labelStyle={{
width: 200, width: 200,
}} }}
/> />
<Divider orientation="left">营业执照</Divider> <Divider orientation="left">营业执照</Divider>
<Descriptions <Descriptions
bordered bordered
items={[ items={[
{ {
@ -167,14 +161,13 @@ function View(props) {
}} }}
/> />
</div> </div>
{ corpInfoQrCodeOpen {corpInfoQrCodeOpen && (
&& ( <CorpInfoQrCode
<CorpInfoQrCode row={info}
open={corpInfoQrCodeOpen} open={corpInfoQrCodeOpen}
row={info} onCancel={() => setCorpInfoQrCodeOpen(false)}
onCancel={() => setCorpInfoQrCodeOpen(false)} />
/> )}
)}
</div> </div>
); );
} }
@ -194,7 +187,10 @@ const CorpInfoQrCode = (props) => {
onCancel={props.onCancel} onCancel={props.onCancel}
> >
<QRCode <QRCode
value={JSON.stringify({ corpName: props.row.corpName, corpinfoId: props.row.corpinfoId })} value={JSON.stringify({
corpName: props.row.corpName,
corpinfoId: props.row.corpinfoId,
})}
style={{ style={{
margin: "0 auto", margin: "0 auto",
}} }}

View File

@ -16,7 +16,6 @@ import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import useUploadFile from "zy-react-library/hooks/useUploadFile"; import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
import { NS_PERSNONEL_CERTFICATE } from "~/enumerate/namespace"; import { NS_PERSNONEL_CERTFICATE } from "~/enumerate/namespace";
@ -49,7 +48,7 @@ function Department(props) {
}, },
}); });
}; };
const [fileCache, setFileCache] = useState({}); // key: userQualificationinfoId, value: files array const [fileCache, setFileCache] = useState({});
const [loadingKeys, setLoadingKeys] = useState(new Set()); // 正在加载的 ID 集合 const [loadingKeys, setLoadingKeys] = useState(new Set()); // 正在加载的 ID 集合
const loadFileForRecord = async (userQualificationinfoId) => { const loadFileForRecord = async (userQualificationinfoId) => {
@ -202,22 +201,21 @@ function Department(props) {
</div> </div>
</div> </div>
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loding={props.personnelCertificate.userQualificationLoading}
loding={props.personnelCertificate.userQualificationLoading} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestAdd={props["userQualificationInfoAdd"]}
requestAdd={props["userQualificationInfoAdd"]} requestEdit={props["userQualificationInfoEdit"]}
requestEdit={props["userQualificationInfoEdit"]} requestDetails={props["userQualificationInfoDetails"]}
requestDetails={props["userQualificationInfoDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
</div> </div>
); );

View File

@ -27,7 +27,6 @@ function Department(props) {
const [fileCache, setFileCache] = useState({}); // key: userQualificationinfoId, value: files array const [fileCache, setFileCache] = useState({}); // key: userQualificationinfoId, value: files array
const [loadingKeys, setLoadingKeys] = useState(new Set()); // 正在加载的 ID 集合 const [loadingKeys, setLoadingKeys] = useState(new Set()); // 正在加载的 ID 集合
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
const [form] = Form.useForm(); const [form] = Form.useForm();
const { tableProps, getData } = useTable(props["userQualificationInfoList"], { const { tableProps, getData } = useTable(props["userQualificationInfoList"], {
form, form,
@ -209,25 +208,22 @@ function Department(props) {
/> />
</div> </div>
</div> </div>
{ {addModalOpen && (
addModalOpen <AddModal
&& ( open={addModalOpen}
<AddModal loding={props.personnelCertificate.userQualificationLoading}
open={addModalOpen} getData={getData}
loding={props.personnelCertificate.userQualificationLoading} dictData={props["dictData"]}
getData={getData} currentId={currentId}
dictData={props["dictData"]} requestAdd={props["userQualificationInfoAdd"]}
currentId={currentId} requestEdit={props["userQualificationInfoEdit"]}
requestAdd={props["userQualificationInfoAdd"]} requestDetails={props["userQualificationInfoDetails"]}
requestEdit={props["userQualificationInfoEdit"]} onCancel={() => {
requestDetails={props["userQualificationInfoDetails"]} setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)
}
</div> </div>
</div> </div>
); );
@ -310,7 +306,9 @@ function AddModalComponent(props) {
const newIdCard = changedValues.qualificationinfoCategory; const newIdCard = changedValues.qualificationinfoCategory;
if (newIdCard) { if (newIdCard) {
setOperatingProjectType(newIdCard); setOperatingProjectType(newIdCard);
form.setFieldsValue({ operatingProject: undefined }); form.setFieldsValue({
operatingProject: undefined,
});
console.log(newIdCard); console.log(newIdCard);
} }
} }
@ -327,7 +325,6 @@ function AddModalComponent(props) {
onCancel={onCancel} onCancel={onCancel}
> >
<FormBuilder <FormBuilder
onValuesChange={onValuesChange}
form={form} form={form}
span={24} span={24}
values={{ values={{
@ -392,6 +389,7 @@ function AddModalComponent(props) {
}} }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</Modal> </Modal>
); );

View File

@ -3,15 +3,15 @@ import { Button, Descriptions, Form, message, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
function List(props) { function List(props) {
@ -126,19 +126,18 @@ function List(props) {
/> />
</div> </div>
</div> </div>
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} getData={getData}
getData={getData} currentId={currentId}
currentId={currentId} requestDetails={props["userDetails"]}
requestDetails={props["userDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
); );
} }
@ -246,9 +245,13 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "部门排序", label: "部门排序",
children: info.sort, children: info.sort,

View File

@ -79,13 +79,9 @@ function Department(props) {
name: "eqLevel", name: "eqLevel",
label: "部门级别", label: "部门级别",
render: ( render: (
<DictionarySelect <DictionarySelect dictValue="companyDepartmentLevel0000" />
dictValue="companyDepartmentLevel0000"
/>
), ),
}, },
]} ]}
onFinish={getData} onFinish={getData}
/> />
@ -120,9 +116,8 @@ function Department(props) {
</Button> </Button>
), ),
}, },
{ {
title: "部门责人", title: "部门责人",
dataIndex: "departmentUserLeaderList", dataIndex: "departmentUserLeaderList",
}, },
{ {
@ -159,23 +154,22 @@ function Department(props) {
/> />
</div> </div>
</div> </div>
{addModalOpen {addModalOpen && (
&& ( <AddModal
<AddModal open={addModalOpen}
open={addModalOpen} loading={props.department.departmentLoading}
loading={props.department.departmentLoading} getData={getData}
getData={getData} parentId={selectedNodeId}
parentId={selectedNodeId} currentId={currentId}
currentId={currentId} requestAdd={props["departmentAdd"]}
requestAdd={props["departmentAdd"]} requestEdit={props["departmentEdit"]}
requestEdit={props["departmentEdit"]} requestDetails={props["departmentDetails"]}
requestDetails={props["departmentDetails"]} onCancel={() => {
onCancel={() => { setAddModalOpen(false);
setAddModalOpen(false); setCurrentId("");
setCurrentId(""); }}
}} />
/> )}
)}
</div> </div>
); );
} }

View File

@ -3,12 +3,11 @@ import { Button, Form, message, Modal, Space, Tag } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -78,7 +77,6 @@ function Post(props) {
name: "likePostName", name: "likePostName",
label: "岗位名称", label: "岗位名称",
}, },
]} ]}
onFinish={getData} onFinish={getData}
/> />
@ -135,26 +133,23 @@ function Post(props) {
/> />
</div> </div>
</div> </div>
{ {addModalOpen && (
addModalOpen <AddModal
&& ( open={addModalOpen}
<AddModal loding={props.post.postLoading}
open={addModalOpen} getData={getData}
loding={props.post.postLoading} parentId={selectedNodeId}
getData={getData} currentId={currentId}
parentId={selectedNodeId} requestAdd={props["postAdd"]}
currentId={currentId} requestEdit={props["postEdit"]}
requestAdd={props["postAdd"]} requestDetails={props["postDetails"]}
requestEdit={props["postEdit"]} selectedNodeName={selectedNodeName}
requestDetails={props["postDetails"]} onCancel={() => {
selectedNodeName={selectedNodeName} setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)
}
</div> </div>
); );
} }
@ -162,9 +157,7 @@ function AddModalComponent(props) {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [parentName, setParentName] = useState(null); const [parentName, setParentName] = useState(null);
const [parentId, setParentId] = useState(null); const [parentId, setParentId] = useState(null);
const { getUserInfo } = useGetUserInfo(); const { getUserInfo } = useGetUserInfo();
useEffect(() => { useEffect(() => {
if (props.currentId) { if (props.currentId) {
props props
@ -173,7 +166,6 @@ function AddModalComponent(props) {
}) })
.then((res) => { .then((res) => {
form.setFieldsValue(res.data); form.setFieldsValue(res.data);
setParentName(res.data.departmentName); setParentName(res.data.departmentName);
setParentId(res.data.departmentId); setParentId(res.data.departmentId);
}); });

View File

@ -64,7 +64,14 @@ function Add(props) {
id: queryParams["id"], id: queryParams["id"],
}); });
form.setFieldValue("sex", idCardGetDateAndGender(data.userIdCard).sex); form.setFieldValue("sex", idCardGetDateAndGender(data.userIdCard).sex);
fnChoiceDepartment([{ id: data.departmentId }], 1); fnChoiceDepartment(
[
{
id: data.departmentId,
},
],
1,
);
// const hiddenImageFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["13"], eqForeignKey: queryParams["id"] }); // const hiddenImageFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["13"], eqForeignKey: queryParams["id"] });
const filepath const filepath
@ -148,7 +155,7 @@ function Add(props) {
// setDepartmentName(event[0].name) // setDepartmentName(event[0].name)
props["postAll"]({ props["postAll"]({
corpFlag: 1, corpFlag: 1,
departmentId: event[0].id, departmentId: event[event.length - 1].id,
}).then((res) => { }).then((res) => {
console.log(res); console.log(res);
setPostData(res.data); setPostData(res.data);
@ -157,12 +164,25 @@ function Add(props) {
// 校验身份证重复 // 校验身份证重复
useEffect(() => { useEffect(() => {
if (!debouncedUserIdCard) { if (!debouncedUserIdCard) {
form.setFields([{ name: "userIdCard", errors: [] }]); form.setFields([
{
name: "userIdCard",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ userIdCard: debouncedUserIdCard, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
userIdCard: debouncedUserIdCard,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "userIdCard", errors: ["身份证号重复"] }]); form.setFields([
{
name: "userIdCard",
errors: ["身份证号重复"],
},
]);
} }
}); });
}, [debouncedUserIdCard]); }, [debouncedUserIdCard]);
@ -170,12 +190,25 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedUsernameValue) { if (!debouncedUsernameValue) {
form.setFields([{ name: "username", errors: [] }]); form.setFields([
{
name: "username",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ username: debouncedUsernameValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
username: debouncedUsernameValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "username", errors: ["用户名重复"] }]); form.setFields([
{
name: "username",
errors: ["用户名重复"],
},
]);
} }
}); });
}, [debouncedUsernameValue]); }, [debouncedUsernameValue]);
@ -183,12 +216,25 @@ function Add(props) {
// 校验用户名重复 // 校验用户名重复
useEffect(() => { useEffect(() => {
if (!debouncedPhoneValueValue) { if (!debouncedPhoneValueValue) {
form.setFields([{ name: "phone", errors: [] }]); form.setFields([
{
name: "phone",
errors: [],
},
]);
return; return;
} }
props["verifyUser"]({ phone: debouncedPhoneValueValue, id: queryParams["id"] ?? "" }).then((res) => { props["verifyUser"]({
phone: debouncedPhoneValueValue,
id: queryParams["id"] ?? "",
}).then((res) => {
if (!res.success) { if (!res.success) {
form.setFields([{ name: "phone", errors: ["手机号重复"] }]); form.setFields([
{
name: "phone",
errors: ["手机号重复"],
},
]);
} }
}); });
}, [debouncedPhoneValueValue]); }, [debouncedPhoneValueValue]);
@ -221,7 +267,6 @@ function Add(props) {
departmentLeaderFlag: "0", departmentLeaderFlag: "0",
deputyLeaderFlag: "0", deputyLeaderFlag: "0",
}} }}
onValuesChange={onValuesChange}
loading={uploadFileLoading || props.user.userLoading} loading={uploadFileLoading || props.user.userLoading}
options={[ options={[
{ {
@ -235,13 +280,22 @@ function Add(props) {
valueKey: "id", valueKey: "id",
}, },
}, },
{ name: "departmentId", label: "所属部门", render: <DepartmentSelectTree onGetNodePaths={fnChoiceDepartment} /> }, {
name: "departmentId",
label: "所属部门",
render: (
<DepartmentSelectTree onGetNodePaths={fnChoiceDepartment} />
),
},
{ {
name: "postId", name: "postId",
label: "所属岗位", label: "所属岗位",
render: FORM_ITEM_RENDER_ENUM.SELECT, render: FORM_ITEM_RENDER_ENUM.SELECT,
items: postData, items: postData,
itemsField: { labelKey: "postName", valueKey: "id" }, itemsField: {
labelKey: "postName",
valueKey: "id",
},
}, },
{ {
name: "username", name: "username",
@ -390,6 +444,7 @@ function Add(props) {
span: 6, span: 6,
}} }}
onFinish={onSubmit} onFinish={onSubmit}
onValuesChange={onValuesChange}
/> />
</div> </div>
</> </>

View File

@ -9,15 +9,15 @@ import ImportFile from "zy-react-library/components/ImportFile";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index"; import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary"; import DictionarySelect from "zy-react-library/components/SelectTree/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob";
import useImportFile from "zy-react-library/hooks/useImportFile"; import useImportFile from "zy-react-library/hooks/useImportFile";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { idCardGetDateAndGender } from "zy-react-library/utils"; import { idCardGetDateAndGender } from "zy-react-library/utils";
import { NS_USER } from "~/enumerate/namespace"; import { NS_USER } from "~/enumerate/namespace";
function List(props) { function List(props) {
@ -36,8 +36,6 @@ function List(props) {
return { return {
...formData, ...formData,
eqDepartmentId: selectedNodeId, eqDepartmentId: selectedNodeId,
allFlag: 1,
}; };
}, },
}); });
@ -154,12 +152,7 @@ function List(props) {
{ {
name: "personnelType", name: "personnelType",
label: "人员类型", label: "人员类型",
render: ( render: <DictionarySelect dictValue="renyuanleixing" />,
<DictionarySelect
dictValue="renyuanleixing"
/>
),
}, },
]} ]}
onFinish={getData} onFinish={getData}
@ -291,30 +284,28 @@ function List(props) {
/> />
</div> </div>
</div> </div>
{ importOpen {importOpen && (
&& ( <ImportFile
<ImportFile visible={importOpen}
visible={importOpen} templateUrl={`${process.env.app["fileUrl"]}template/user_template.xlsx`}
templateUrl="" onCancel={() => {
onCancel={() => { setImportOpen(false);
setImportOpen(false); }}
}} onConfirm={onImportFileConfirm}
onConfirm={onImportFileConfirm} />
/> )}
)} {addModalOpen && (
{ addModalOpen <AddModal
&& ( open={addModalOpen}
<AddModal getData={getData}
open={addModalOpen} currentId={currentId}
getData={getData} requestDetails={props["userDetails"]}
currentId={currentId} onCancel={() => {
requestDetails={props["userDetails"]} setAddModalOpen(false);
onCancel={() => { setCurrentId("");
setAddModalOpen(false); }}
setCurrentId(""); />
}} )}
/>
)}
</div> </div>
); );
} }
@ -327,9 +318,11 @@ function AddModalComponent(props) {
const res = await props.requestDetails({ const res = await props.requestDetails({
id: props.currentId, id: props.currentId,
}); });
res.data.userAvatarUrl = [
res.data.userAvatarUrl = [{ filePath: res.data.userAvatarUrl }]; {
filePath: res.data.userAvatarUrl,
},
];
setInfo(res.data); setInfo(res.data);
}; };
fetchData(); fetchData();
@ -404,7 +397,12 @@ function AddModalComponent(props) {
}, },
{ {
label: "性别", label: "性别",
children: idCardGetDateAndGender(info.userIdCard).sex === "1" ? "男" : idCardGetDateAndGender(info.userIdCard).sex === "0" ? "女" : "", children:
idCardGetDateAndGender(info.userIdCard).sex === "1"
? "男"
: idCardGetDateAndGender(info.userIdCard).sex === "0"
? "女"
: "",
}, },
{ {
label: "人脸照片", label: "人脸照片",

View File

@ -1,4 +1,5 @@
import { useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
/** /**
* 根据身份证号计算年龄 * 根据身份证号计算年龄
* @param {string} idCard - 18位身份证号码 * @param {string} idCard - 18位身份证号码
@ -23,7 +24,14 @@ export function getAgeByIdCard(idCard) {
const day = Number.parseInt(birthStr.substring(6, 8), 10); const day = Number.parseInt(birthStr.substring(6, 8), 10);
// 简单校验日期合法性(可选增强) // 简单校验日期合法性(可选增强)
if (year < 1900 || year > new Date().getFullYear() || month < 1 || month > 12 || day < 1 || day > 31) { if (
year < 1900
|| year > new Date().getFullYear()
|| month < 1
|| month > 12
|| day < 1
|| day > 31
) {
return null; return null;
} }
@ -40,7 +48,6 @@ export function getAgeByIdCard(idCard) {
if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) { if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
age -= 1; age -= 1;
} }
return age >= 0 ? age : null; // 年龄不能为负 return age >= 0 ? age : null; // 年龄不能为负
} }
/** /**
@ -52,7 +59,6 @@ export function getBirthDateFromIdCard(idCard) {
if (!idCard || typeof idCard !== "string") { if (!idCard || typeof idCard !== "string") {
return null; return null;
} }
const id = idCard.trim(); const id = idCard.trim();
if (id.length !== 18) { if (id.length !== 18) {
return null; // 仅支持18位身份证 return null; // 仅支持18位身份证
@ -70,19 +76,18 @@ export function getBirthDateFromIdCard(idCard) {
if ( if (
year < 1900 year < 1900
|| year > currentYear + 1 // 允许未来1年录入误差 || year > currentYear + 1 // 允许未来1年录入误差
|| month < 1 || month > 12 || month < 1
|| day < 1 || day > 31 || month > 12
|| day < 1
|| day > 31
) { ) {
return null; return null;
} }
return `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`; return `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
} }
export function useDebounce(value, delay = 500) { export function useDebounce(value, delay = 500) {
const [debouncedValue, setDebouncedValue] = useState(value); const [debouncedValue, setDebouncedValue] = useState(value);
const timerRef = useRef(null); const timerRef = useRef(null);
useEffect(() => { useEffect(() => {
// 清除上一次的定时器 // 清除上一次的定时器
if (timerRef.current) { if (timerRef.current) {
@ -101,6 +106,5 @@ export function useDebounce(value, delay = 500) {
} }
}; };
}, [value, delay]); }, [value, delay]);
return debouncedValue; return debouncedValue;
} }