├── .editorconfig ├── .env.development ├── .env.javaBootTest ├── .env.javaCloudDev ├── .env.javaCloudTest ├── .env.production ├── .env.staging ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── LICENSE ├── README.md ├── babel.config.js ├── build └── index.js ├── jest.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── plop-templates ├── component │ ├── index.hbs │ └── prompt.js ├── store │ ├── index.hbs │ └── prompt.js ├── utils.js └── view │ ├── index.hbs │ └── prompt.js ├── plopfile.js ├── postcss.config.js ├── public ├── cdn │ ├── echarts │ │ └── 4.2.1 │ │ │ └── echarts.min.js │ └── monaco-editor │ │ ├── base │ │ ├── browser │ │ │ └── ui │ │ │ │ └── codicons │ │ │ │ └── codicon │ │ │ │ └── codicon.ttf │ │ └── worker │ │ │ └── workerMain.js │ │ ├── basic-languages │ │ ├── abap │ │ │ └── abap.js │ │ ├── apex │ │ │ └── apex.js │ │ ├── azcli │ │ │ └── azcli.js │ │ ├── bat │ │ │ └── bat.js │ │ ├── cameligo │ │ │ └── cameligo.js │ │ ├── clojure │ │ │ └── clojure.js │ │ ├── coffee │ │ │ └── coffee.js │ │ ├── cpp │ │ │ └── cpp.js │ │ ├── csharp │ │ │ └── csharp.js │ │ ├── csp │ │ │ └── csp.js │ │ ├── css │ │ │ └── css.js │ │ ├── dart │ │ │ └── dart.js │ │ ├── dockerfile │ │ │ └── dockerfile.js │ │ ├── fsharp │ │ │ └── fsharp.js │ │ ├── go │ │ │ └── go.js │ │ ├── graphql │ │ │ └── graphql.js │ │ ├── handlebars │ │ │ └── handlebars.js │ │ ├── hcl │ │ │ └── hcl.js │ │ ├── html │ │ │ └── html.js │ │ ├── ini │ │ │ └── ini.js │ │ ├── java │ │ │ └── java.js │ │ ├── javascript │ │ │ └── javascript.js │ │ ├── julia │ │ │ └── julia.js │ │ ├── kotlin │ │ │ └── kotlin.js │ │ ├── less │ │ │ └── less.js │ │ ├── lexon │ │ │ └── lexon.js │ │ ├── lua │ │ │ └── lua.js │ │ ├── markdown │ │ │ └── markdown.js │ │ ├── mips │ │ │ └── mips.js │ │ ├── msdax │ │ │ └── msdax.js │ │ ├── mysql │ │ │ └── mysql.js │ │ ├── objective-c │ │ │ └── objective-c.js │ │ ├── pascal │ │ │ └── pascal.js │ │ ├── pascaligo │ │ │ └── pascaligo.js │ │ ├── perl │ │ │ └── perl.js │ │ ├── pgsql │ │ │ └── pgsql.js │ │ ├── php │ │ │ └── php.js │ │ ├── postiats │ │ │ └── postiats.js │ │ ├── powerquery │ │ │ └── powerquery.js │ │ ├── powershell │ │ │ └── powershell.js │ │ ├── pug │ │ │ └── pug.js │ │ ├── python │ │ │ └── python.js │ │ ├── r │ │ │ └── r.js │ │ ├── razor │ │ │ └── razor.js │ │ ├── redis │ │ │ └── redis.js │ │ ├── redshift │ │ │ └── redshift.js │ │ ├── restructuredtext │ │ │ └── restructuredtext.js │ │ ├── ruby │ │ │ └── ruby.js │ │ ├── rust │ │ │ └── rust.js │ │ ├── sb │ │ │ └── sb.js │ │ ├── scala │ │ │ └── scala.js │ │ ├── scheme │ │ │ └── scheme.js │ │ ├── scss │ │ │ └── scss.js │ │ ├── shell │ │ │ └── shell.js │ │ ├── solidity │ │ │ └── solidity.js │ │ ├── sophia │ │ │ └── sophia.js │ │ ├── sql │ │ │ └── sql.js │ │ ├── st │ │ │ └── st.js │ │ ├── swift │ │ │ └── swift.js │ │ ├── systemverilog │ │ │ └── systemverilog.js │ │ ├── tcl │ │ │ └── tcl.js │ │ ├── twig │ │ │ └── twig.js │ │ ├── typescript │ │ │ └── typescript.js │ │ ├── vb │ │ │ └── vb.js │ │ ├── xml │ │ │ └── xml.js │ │ └── yaml │ │ │ └── yaml.js │ │ ├── editor │ │ ├── editor.main.css │ │ ├── editor.main.js │ │ ├── editor.main.nls.de.js │ │ ├── editor.main.nls.es.js │ │ ├── editor.main.nls.fr.js │ │ ├── editor.main.nls.it.js │ │ ├── editor.main.nls.ja.js │ │ ├── editor.main.nls.js │ │ ├── editor.main.nls.ko.js │ │ ├── editor.main.nls.ru.js │ │ ├── editor.main.nls.zh-cn.js │ │ └── editor.main.nls.zh-tw.js │ │ ├── language │ │ ├── css │ │ │ ├── cssMode.js │ │ │ └── cssWorker.js │ │ ├── html │ │ │ ├── htmlMode.js │ │ │ └── htmlWorker.js │ │ ├── json │ │ │ ├── jsonMode.js │ │ │ └── jsonWorker.js │ │ └── typescript │ │ │ ├── tsMode.js │ │ │ └── tsWorker.js │ │ └── loader.js ├── favicon.ico └── index.html ├── src ├── App.vue ├── api │ ├── common.js │ ├── extend │ │ ├── bigData.js │ │ ├── document.js │ │ ├── documentPreview.js │ │ ├── email.js │ │ ├── employee.js │ │ ├── order.js │ │ ├── projectGantt.js │ │ ├── schedule.js │ │ └── tableExample.js │ ├── home.js │ ├── onlineDev │ │ ├── dataReport.js │ │ ├── dataV.js │ │ ├── map.js │ │ ├── portal.js │ │ └── visualDev.js │ ├── permission │ │ ├── authorize.js │ │ ├── department.js │ │ ├── onlineUser.js │ │ ├── organize.js │ │ ├── position.js │ │ ├── role.js │ │ ├── user.js │ │ ├── userRelation.js │ │ └── userSetting.js │ ├── system │ │ ├── billRule.js │ │ ├── buttonAuthorize.js │ │ ├── cacheManage.js │ │ ├── columnAuthorize.js │ │ ├── dataAuthorize.js │ │ ├── log.js │ │ ├── menu.js │ │ ├── message.js │ │ ├── monitor.js │ │ ├── province.js │ │ ├── sysConfig.js │ │ └── timeTask.js │ ├── systemData │ │ ├── commonFields.js │ │ ├── dataBackup.js │ │ ├── dataInterface.js │ │ ├── dataModel.js │ │ ├── dataSource.js │ │ └── dictionary.js │ ├── user.js │ ├── weChat │ │ ├── MPMaterial.js │ │ ├── MPMenu.js │ │ ├── MPMessage.js │ │ ├── MPTag.js │ │ ├── MPUser.js │ │ ├── QY.js │ │ └── config.js │ └── workFlow │ │ ├── FlowBefore.js │ │ ├── FlowDelegate.js │ │ ├── FlowEngine.js │ │ ├── FlowEngineForm.js │ │ ├── FlowLaunch.js │ │ ├── FlowMonitor.js │ │ └── workFlowForm.js ├── assets │ ├── custom-theme │ │ ├── fonts │ │ │ ├── element-icons.ttf │ │ │ └── element-icons.woff │ │ └── index.css │ ├── fonts │ │ ├── ym-custom │ │ │ ├── iconfont.css │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ └── ym │ │ │ ├── iconfont.css │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ ├── images │ │ ├── 404.png │ │ ├── dashboard-nodata.png │ │ ├── emptyElement.png │ │ ├── emptyPortal.png │ │ ├── flowStatus │ │ │ ├── adopt.png │ │ │ ├── cancel.png │ │ │ ├── reject.png │ │ │ ├── revoke.png │ │ │ └── wait.png │ │ ├── generator │ │ │ ├── columnType1.png │ │ │ ├── columnType2.png │ │ │ ├── columnType3.png │ │ │ └── columnType4.png │ │ ├── home │ │ │ ├── Group.png │ │ │ ├── Group2.png │ │ │ ├── Group3.png │ │ │ ├── anouance.png │ │ │ ├── ask.png │ │ │ ├── bg.png │ │ │ ├── pay.png │ │ │ ├── return.png │ │ │ └── sold.png │ │ ├── import.png │ │ ├── iphoneBg.png │ │ ├── jnpf.png │ │ ├── jnpf1.png │ │ ├── loading-iframe.gif │ │ ├── login_bg.png │ │ ├── login_content_img.png │ │ ├── login_logo.png │ │ ├── login_qr.png │ │ ├── login_version.png │ │ ├── portal-nodata.png │ │ ├── settings │ │ │ ├── classic.png │ │ │ ├── dark.png │ │ │ ├── functional.png │ │ │ ├── lightWhite.png │ │ │ └── plain.png │ │ ├── sign.gif │ │ ├── success.png │ │ ├── tip.png │ │ ├── upload.png │ │ ├── xsl.png │ │ └── xsl1.png │ └── scss │ │ ├── common.scss │ │ ├── font.scss │ │ └── theme.scss ├── components │ ├── Charts │ │ ├── Keyboard.vue │ │ ├── LineMarker.vue │ │ ├── MixChart.vue │ │ ├── Normal.vue │ │ └── mixins │ │ │ └── resize.js │ ├── ColumnDesign │ │ ├── index.scss │ │ ├── index.vue │ │ └── indexApp.vue │ ├── ColumnSettings │ │ └── index.vue │ ├── Generator │ │ ├── components │ │ │ ├── Address │ │ │ │ └── index.vue │ │ │ ├── Amount │ │ │ │ └── index.vue │ │ │ ├── BillRule │ │ │ │ └── index.vue │ │ │ ├── Calculate │ │ │ │ └── index.vue │ │ │ ├── ComSelect │ │ │ │ └── index.vue │ │ │ ├── DepSelect │ │ │ │ └── index.vue │ │ │ ├── DicSelect │ │ │ │ └── index.vue │ │ │ ├── GroupTitle │ │ │ │ └── index.vue │ │ │ ├── InputTable │ │ │ │ └── index.vue │ │ │ ├── JNPFText │ │ │ │ └── index.vue │ │ │ ├── PosSelect │ │ │ │ └── index.vue │ │ │ ├── RelationFlow │ │ │ │ └── index.vue │ │ │ ├── RelationFlowAttr │ │ │ │ └── index.vue │ │ │ ├── RelationForm │ │ │ │ └── index.vue │ │ │ ├── RelationFormAttr │ │ │ │ └── index.vue │ │ │ ├── Upload │ │ │ │ ├── UploadFz.vue │ │ │ │ └── UploadImg.vue │ │ │ └── UserSelect │ │ │ │ └── index.vue │ │ ├── generator │ │ │ ├── comConfig.js │ │ │ ├── config.js │ │ │ ├── configApp.js │ │ │ ├── css.js │ │ │ ├── drawingDefalut.js │ │ │ ├── html.js │ │ │ ├── js.js │ │ │ └── ruleTrigger.js │ │ ├── index │ │ │ ├── DraggableItem.vue │ │ │ ├── DraggableItemApp.vue │ │ │ ├── Home.vue │ │ │ ├── HomeApp.vue │ │ │ ├── JsonDrawer.vue │ │ │ ├── RightComponents │ │ │ │ ├── Address.vue │ │ │ │ ├── Calculate.vue │ │ │ │ ├── Cascader │ │ │ │ │ ├── TreeNodeDialog.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── Checkbox.vue │ │ │ │ ├── ColorPicker.vue │ │ │ │ ├── ComInput.vue │ │ │ │ ├── ComRight.vue │ │ │ │ ├── Date.vue │ │ │ │ ├── DateRange.vue │ │ │ │ ├── Divider.vue │ │ │ │ ├── GroupTitle.vue │ │ │ │ ├── JNPFAmount.vue │ │ │ │ ├── JNPFText.vue │ │ │ │ ├── NumInput.vue │ │ │ │ ├── PsdInput.vue │ │ │ │ ├── Radio.vue │ │ │ │ ├── Rate.vue │ │ │ │ ├── RelationFlow.vue │ │ │ │ ├── RelationFlowAttr.vue │ │ │ │ ├── RelationForm.vue │ │ │ │ ├── RelationFormAttr.vue │ │ │ │ ├── Select.vue │ │ │ │ ├── Slider.vue │ │ │ │ ├── Switch.vue │ │ │ │ ├── Textarea.vue │ │ │ │ ├── Time.vue │ │ │ │ ├── TimeRange.vue │ │ │ │ ├── TreeSelect │ │ │ │ │ ├── TreeNodeDialog.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── UploadFz.vue │ │ │ │ ├── UploadImg.vue │ │ │ │ ├── minix.js │ │ │ │ └── tpl.vue │ │ │ ├── RightPanel.vue │ │ │ └── RightPanelApp.vue │ │ ├── parser │ │ │ ├── Parser.vue │ │ │ ├── example │ │ │ │ └── Index.vue │ │ │ └── index.js │ │ ├── preview │ │ │ └── index.vue │ │ ├── render │ │ │ ├── render.js │ │ │ └── slots │ │ │ │ ├── el-button.js │ │ │ │ ├── el-checkbox-group.js │ │ │ │ ├── el-divider.js │ │ │ │ ├── el-input.js │ │ │ │ ├── el-radio-group.js │ │ │ │ └── el-select.js │ │ ├── styles │ │ │ ├── home.scss │ │ │ ├── index.scss │ │ │ └── mixin.scss │ │ └── utils │ │ │ ├── db.js │ │ │ └── index.js │ ├── Hamburger │ │ └── index.vue │ ├── HeaderSearch │ │ └── index.vue │ ├── JNPF-TreeTransfer │ │ ├── array.js │ │ └── index.vue │ ├── JNPF-enlarge │ │ └── index.vue │ ├── JNPF-iconBox │ │ └── index.vue │ ├── JNPF-table │ │ └── index.vue │ ├── JNPF-tableOperation │ │ └── index.vue │ ├── JNPF-topOperation │ │ └── index.vue │ ├── JNPF-transfer │ │ └── index.vue │ ├── JNPF-treeSelect │ │ └── index.vue │ ├── JNPF-userBox │ │ └── index.vue │ ├── JNPFEditor │ │ ├── monaco.vue │ │ └── quill.vue │ ├── JsonEditor │ │ └── index.vue │ ├── LangSelect │ │ └── index.vue │ ├── MarkdownEditor │ │ ├── default-options.js │ │ └── index.vue │ ├── Pagination │ │ └── index.vue │ ├── Process │ │ ├── FlowCard │ │ │ ├── Preview.vue │ │ │ ├── config.js │ │ │ ├── index.scss │ │ │ ├── index.vue │ │ │ └── util.js │ │ ├── OrgSelect │ │ │ └── index.vue │ │ ├── OrgTransfer │ │ │ └── index.vue │ │ ├── Preview.vue │ │ ├── PropPanel │ │ │ └── index.vue │ │ └── index.vue │ ├── Screenfull │ │ └── index.vue │ ├── SizeSelect │ │ └── index.vue │ ├── Upload │ │ ├── SingleImg.vue │ │ ├── UploadFile.vue │ │ └── UploadFileSingle.vue │ ├── VisualPortal │ │ ├── CommonFunc │ │ │ └── index.vue │ │ ├── DataBoard │ │ │ └── index.vue │ │ ├── HAnnularChart │ │ │ └── index.vue │ │ ├── HAreaChart │ │ │ └── index.vue │ │ ├── HBarChart │ │ │ └── index.vue │ │ ├── HEmail │ │ │ └── index.vue │ │ ├── HLineChart │ │ │ └── index.vue │ │ ├── HNotice │ │ │ └── index.vue │ │ ├── HPieChart │ │ │ └── index.vue │ │ ├── HRadarChart │ │ │ └── index.vue │ │ ├── Layout │ │ │ └── index.vue │ │ ├── Todo │ │ │ └── index.vue │ │ ├── TodoList │ │ │ └── index.vue │ │ └── index.js │ └── index.js ├── directive │ ├── clipboard │ │ ├── clipboard.js │ │ └── index.js │ ├── el-drag-dialog │ │ ├── drag.js │ │ └── index.js │ └── permission │ │ ├── index.js │ │ └── permission.js ├── filters │ └── index.js ├── lang │ ├── en.js │ ├── index.js │ ├── zh.js │ └── zhtw.js ├── layout │ ├── classic │ │ ├── Navbar.vue │ │ ├── index.js │ │ ├── index.vue │ │ └── sidebar │ │ │ ├── FixiOSBug.js │ │ │ ├── Item.vue │ │ │ ├── Link.vue │ │ │ ├── Logo.vue │ │ │ ├── SidebarItem.vue │ │ │ └── index.vue │ ├── components │ │ ├── AppMain.vue │ │ ├── MessageList.vue │ │ ├── NavbarRight.vue │ │ ├── settings │ │ │ ├── index.vue │ │ │ └── minix.js │ │ ├── tagsView │ │ │ ├── ScrollPane.vue │ │ │ └── index.vue │ │ └── userList │ │ │ ├── Im.vue │ │ │ └── UserList.vue │ ├── functional │ │ ├── Logo.vue │ │ ├── Navbar.vue │ │ ├── index.js │ │ ├── index.vue │ │ └── menu │ │ │ ├── FixiOSBug.js │ │ │ ├── Item.vue │ │ │ ├── Link.vue │ │ │ ├── SidebarItem.vue │ │ │ └── index.vue │ ├── index.vue │ ├── mixin │ │ └── ResizeHandler.js │ └── plain │ │ ├── Navbar.vue │ │ ├── index.js │ │ ├── index.vue │ │ └── sidebar │ │ ├── FixiOSBug.js │ │ ├── Item.vue │ │ ├── Link.vue │ │ ├── Logo.vue │ │ ├── SidebarItem.vue │ │ └── index.vue ├── main.js ├── permission.js ├── router │ ├── index.js │ └── modules │ │ └── base.js ├── settings.js ├── store │ ├── getters.js │ ├── index.js │ └── modules │ │ ├── app.js │ │ ├── base.js │ │ ├── generator.js │ │ ├── permission.js │ │ ├── settings.js │ │ ├── tagsView.js │ │ └── user.js ├── styles │ ├── btn.scss │ ├── element-ui.scss │ ├── element-variables.scss │ ├── index.scss │ ├── mixin.scss │ ├── sidebar.scss │ ├── transition.scss │ └── variables.scss ├── utils │ ├── auth.js │ ├── clipboard.js │ ├── define.js │ ├── error-log.js │ ├── formValidate.js │ ├── get-page-title.js │ ├── i18n.js │ ├── index.js │ ├── jnpf.js │ ├── open-window.js │ ├── request.js │ ├── scroll-to.js │ └── validate.js └── views │ ├── basic │ ├── dashboard │ │ ├── Setting.vue │ │ └── index.vue │ ├── dynamicDataReport │ │ └── index.vue │ ├── dynamicDictionary │ │ ├── Form.vue │ │ └── index.vue │ ├── dynamicModel │ │ ├── ExportBox.vue │ │ ├── Form.vue │ │ ├── ImportBox.vue │ │ ├── Search.vue │ │ ├── detail │ │ │ ├── Item.vue │ │ │ ├── Parser.vue │ │ │ └── index.vue │ │ └── index.vue │ ├── externalLink │ │ └── index.vue │ ├── lockScreen │ │ └── index.vue │ ├── messageRecord │ │ ├── Form.vue │ │ └── index.vue │ ├── previewModel │ │ ├── Form.vue │ │ └── index.vue │ └── profile │ │ ├── components │ │ ├── Authorize.vue │ │ ├── Password.vue │ │ ├── SysLog.vue │ │ └── UserInfo.vue │ │ └── index.vue │ ├── dashboard │ ├── admin │ │ ├── components │ │ │ ├── LineChart.vue │ │ │ ├── PanelGroup.vue │ │ │ └── mixins │ │ │ │ └── resize.js │ │ └── index.vue │ └── index.vue │ ├── error-page │ └── 404.vue │ ├── extend │ ├── barCode │ │ └── index.vue │ ├── bigData │ │ └── index.vue │ ├── document │ │ ├── FolderTree.vue │ │ ├── UserBox.vue │ │ └── index.vue │ ├── documentPreview │ │ ├── Detail.vue │ │ └── index.vue │ ├── email │ │ ├── Config.vue │ │ ├── Detail.vue │ │ ├── Form.vue │ │ └── index.vue │ ├── formDemo │ │ ├── fieldForm1 │ │ │ └── index.vue │ │ ├── fieldForm2 │ │ │ └── index.vue │ │ ├── fieldForm3 │ │ │ └── index.vue │ │ ├── fieldForm4 │ │ │ └── index.vue │ │ ├── fieldForm5 │ │ │ └── index.vue │ │ ├── fieldForm6 │ │ │ └── index.vue │ │ ├── verifyForm │ │ │ └── index.vue │ │ └── verifyForm1 │ │ │ └── index.vue │ ├── graphDemo │ │ ├── echartsBar │ │ │ └── index.vue │ │ ├── echartsBarAcross │ │ │ └── index.vue │ │ ├── echartsCandlestick │ │ │ └── index.vue │ │ ├── echartsFunnel │ │ │ └── index.vue │ │ ├── echartsGauge │ │ │ └── index.vue │ │ ├── echartsLineArea │ │ │ └── index.vue │ │ ├── echartsLineBar │ │ │ └── index.vue │ │ ├── echartsPie │ │ │ └── index.vue │ │ ├── echartsScatter │ │ │ └── index.vue │ │ ├── echartsTree │ │ │ └── index.vue │ │ ├── highchartsArea │ │ │ └── index.vue │ │ ├── highchartsBellcurve │ │ │ └── index.vue │ │ ├── highchartsBullet │ │ │ └── index.vue │ │ ├── highchartsColumn │ │ │ └── index.vue │ │ ├── highchartsFunnel │ │ │ └── index.vue │ │ ├── highchartsGauge │ │ │ └── index.vue │ │ ├── highchartsLine │ │ │ └── index.vue │ │ ├── highchartsPie │ │ │ └── index.vue │ │ ├── highchartsScatter │ │ │ └── index.vue │ │ ├── highchartsWordcloud │ │ │ └── index.vue │ │ └── mixins │ │ │ └── resize.js │ ├── importAndExport │ │ ├── ExportForm.vue │ │ ├── ImportForm.vue │ │ └── index.vue │ ├── map │ │ └── index.vue │ ├── order │ │ ├── Detail.vue │ │ ├── GoodsBox.vue │ │ └── index.vue │ ├── printData │ │ ├── Bill.vue │ │ ├── Offer.vue │ │ ├── Record.vue │ │ ├── index.vue │ │ └── printStyle.js │ ├── projectGantt │ │ ├── Form.vue │ │ ├── Task.vue │ │ ├── TaskForm.vue │ │ └── index.vue │ ├── schedule │ │ ├── Form.vue │ │ └── index.vue │ ├── signature │ │ └── index.vue │ ├── signet │ │ └── index.vue │ └── tableDemo │ │ ├── commonForm │ │ └── index.vue │ │ ├── commonTable │ │ └── index.vue │ │ ├── complexHeader │ │ ├── Form.vue │ │ └── index.vue │ │ ├── extension │ │ └── index.vue │ │ ├── groupingTable │ │ └── index.vue │ │ ├── lockTable │ │ └── index.vue │ │ ├── mergeTable │ │ └── index.vue │ │ ├── postilTable │ │ ├── Form.vue │ │ └── index.vue │ │ ├── printTable │ │ └── index.vue │ │ ├── redactTable │ │ ├── Form.vue │ │ └── index.vue │ │ ├── signTable │ │ └── index.vue │ │ ├── statisticsTable │ │ └── index.vue │ │ ├── tableTree │ │ └── index.vue │ │ └── treeTable │ │ └── index.vue │ ├── generator │ ├── DownloadForm.vue │ ├── Preview.vue │ ├── TableForm.vue │ ├── appForm │ │ ├── Form.vue │ │ └── index.vue │ ├── flowForm │ │ ├── Form.vue │ │ └── index.vue │ └── webForm │ │ ├── Form.vue │ │ └── index.vue │ ├── login │ ├── auth-redirect.vue │ ├── index.vue │ └── jump.vue │ ├── onlineDev │ ├── appDesign │ │ ├── Form.vue │ │ └── index.vue │ ├── dataReport │ │ ├── Form.vue │ │ ├── Preview.vue │ │ └── index.vue │ ├── dataScreen │ │ ├── Form.vue │ │ └── index.vue │ ├── visualPortal │ │ ├── Form.vue │ │ ├── IndexPreview.vue │ │ ├── Transfer.vue │ │ ├── components │ │ │ ├── JSONArea.vue │ │ │ ├── Preview.vue │ │ │ ├── RightPanel.vue │ │ │ ├── config.js │ │ │ └── index.vue │ │ └── index.vue │ └── webDesign │ │ ├── Form.vue │ │ └── index.vue │ ├── permission │ ├── authorize │ │ ├── AuthorizeForm.vue │ │ └── index.vue │ ├── department │ │ ├── Form.vue │ │ └── index.vue │ ├── organize │ │ ├── Form.vue │ │ └── index.vue │ ├── position │ │ ├── Form.vue │ │ └── index.vue │ ├── role │ │ ├── Form.vue │ │ └── index.vue │ ├── user │ │ ├── Diagram.vue │ │ ├── Form.vue │ │ ├── ResetPassword.vue │ │ └── index.vue │ ├── userOnline │ │ └── index.vue │ └── userRelation │ │ └── Selector.vue │ ├── redirect │ └── index.vue │ ├── system │ ├── area │ │ ├── Form.vue │ │ └── index.vue │ ├── billRule │ │ ├── Form.vue │ │ └── index.vue │ ├── cache │ │ ├── Form.vue │ │ └── index.vue │ ├── icons │ │ └── index.vue │ ├── log │ │ └── index.vue │ ├── menu │ │ ├── Form.vue │ │ ├── components │ │ │ ├── buttonAuthorize │ │ │ │ ├── Form.vue │ │ │ │ └── index.vue │ │ │ ├── columnAuthorize │ │ │ │ ├── BatchForm.vue │ │ │ │ ├── Form.vue │ │ │ │ └── index.vue │ │ │ └── dataAuthorize │ │ │ │ ├── DataAuthorizeForm.vue │ │ │ │ ├── DataSchemeForm.vue │ │ │ │ └── index.vue │ │ └── index.vue │ ├── monitor │ │ └── index.vue │ ├── notice │ │ ├── Form.vue │ │ ├── View.vue │ │ └── index.vue │ ├── sysConfig │ │ └── index.vue │ └── task │ │ ├── Form.vue │ │ ├── FrequencyForm.vue │ │ ├── Log.vue │ │ └── index.vue │ ├── systemData │ ├── dataBackup │ │ └── index.vue │ ├── dataInterface │ │ ├── Form.vue │ │ ├── Preview.vue │ │ └── index.vue │ ├── dataModel │ │ ├── Form.vue │ │ ├── Preview.vue │ │ ├── fields │ │ │ ├── Form.vue │ │ │ └── index.vue │ │ └── index.vue │ ├── dataSource │ │ ├── Form.vue │ │ └── index.vue │ ├── dataSync │ │ └── index.vue │ ├── dictionary │ │ ├── Form.vue │ │ ├── components │ │ │ ├── Form.vue │ │ │ └── index.vue │ │ └── index.vue │ └── map │ │ ├── Form.vue │ │ └── index.vue │ ├── weChat │ ├── mpConfig │ │ └── index.vue │ ├── mpMaterial │ │ ├── Form.vue │ │ └── index.vue │ ├── mpMenu │ │ ├── Form.vue │ │ └── index.vue │ ├── mpMessage │ │ ├── Form.vue │ │ ├── UserBox.vue │ │ └── index.vue │ ├── mpUser │ │ ├── TagTree.vue │ │ └── index.vue │ ├── qyDepartment │ │ └── index.vue │ ├── qyMessage │ │ ├── Form.vue │ │ └── index.vue │ ├── qyUser │ │ └── index.vue │ └── qyhConfig │ │ └── index.vue │ └── workFlow │ ├── entrust │ ├── Form.vue │ └── index.vue │ ├── flowCirculate │ └── index.vue │ ├── flowDone │ └── index.vue │ ├── flowEngine │ ├── FieldForm.vue │ ├── Form.vue │ └── index.vue │ ├── flowLaunch │ ├── Flow.vue │ └── index.vue │ ├── flowMonitor │ └── index.vue │ ├── flowTodo │ └── index.vue │ ├── fromBox │ ├── Audit.vue │ ├── Edit.vue │ ├── Preview.vue │ └── RecordList.vue │ └── workFlowForm │ ├── applyBanquet │ └── index.vue │ ├── applyDeliverGoods │ └── index.vue │ ├── applyMeeting │ └── index.vue │ ├── archivalBorrow │ └── index.vue │ ├── articlesWarehous │ └── index.vue │ ├── batchPack │ └── index.vue │ ├── batchTable │ └── index.vue │ ├── conBilling │ └── index.vue │ ├── contractApproval │ └── index.vue │ ├── contractApprovalSheet │ └── index.vue │ ├── crmOrder │ └── index.vue │ ├── debitBill │ └── index.vue │ ├── documentApproval │ └── index.vue │ ├── documentSigning │ └── index.vue │ ├── dynamicForm │ └── index.vue │ ├── expenseExpenditure │ └── index.vue │ ├── finishedProduct │ └── index.vue │ ├── incomeRecognition │ └── index.vue │ ├── leaveApply │ └── index.vue │ ├── letterService │ └── index.vue │ ├── materialRequisition │ └── index.vue │ ├── minix.js │ ├── monthlyReport │ └── index.vue │ ├── officeSupplies │ └── index.vue │ ├── outboundOrder │ └── index.vue │ ├── outgoingApply │ └── index.vue │ ├── payDistribution │ └── index.vue │ ├── paymentApply │ └── index.vue │ ├── postBatchTab │ └── index.vue │ ├── procurementMaterial │ └── index.vue │ ├── purchaseList │ └── index.vue │ ├── quotationApproval │ └── index.vue │ ├── receiptProcessing │ └── index.vue │ ├── receiptSign │ └── index.vue │ ├── rewardPunishment │ └── index.vue │ ├── salesOrder │ └── index.vue │ ├── salesSupport │ └── index.vue │ ├── staffOvertime │ └── index.vue │ ├── supplementCard │ └── index.vue │ ├── travelApply │ └── index.vue │ ├── travelReimbursement │ └── index.vue │ ├── vehicleApply │ └── index.vue │ ├── violationHandling │ └── index.vue │ ├── warehouseReceipt │ └── index.vue │ └── workContactSheet │ └── index.vue ├── static ├── emoji.json ├── emoji │ ├── 100.gif │ ├── 101.gif │ ├── 102.gif │ ├── 103.gif │ ├── 104.gif │ ├── 105.gif │ ├── 106.gif │ ├── 107.gif │ ├── 108.gif │ ├── 109.gif │ ├── 110.gif │ ├── 111.gif │ ├── 112.gif │ ├── 113.gif │ ├── 114.gif │ ├── 115.gif │ ├── 116.gif │ ├── 117.gif │ ├── 118.gif │ ├── 119.gif │ ├── 120.gif │ ├── 121.gif │ ├── 122.gif │ ├── 123.gif │ ├── 124.gif │ ├── 125.gif │ ├── 126.gif │ ├── 127.gif │ ├── 128.gif │ ├── 129.gif │ ├── 130.gif │ ├── 131.gif │ ├── 132.gif │ ├── 133.gif │ ├── 134.gif │ ├── 135.gif │ ├── 136.gif │ ├── 137.gif │ ├── 138.gif │ ├── 139.gif │ ├── 140.gif │ ├── 141.gif │ ├── 142.gif │ ├── 143.gif │ ├── 144.gif │ ├── 145.gif │ ├── 146.gif │ ├── 147.gif │ ├── 148.gif │ ├── 149.gif │ ├── 150.gif │ ├── 151.gif │ ├── 152.gif │ ├── 153.gif │ ├── 154.gif │ ├── 155.gif │ ├── 156.gif │ ├── 157.gif │ ├── 158.gif │ ├── 159.gif │ ├── 160.gif │ ├── 161.gif │ ├── 162.gif │ ├── 163.gif │ ├── 164.gif │ ├── 165.gif │ ├── 166.gif │ ├── 167.gif │ ├── 168.gif │ ├── 169.gif │ ├── 170.gif │ ├── 171.gif │ ├── 172.gif │ ├── 173.gif │ ├── 174.gif │ ├── 175.gif │ ├── 176.gif │ ├── 177.gif │ ├── 178.gif │ ├── 179.gif │ ├── 180.gif │ ├── 181.gif │ ├── 182.gif │ ├── 183.gif │ ├── 184.gif │ ├── 185.gif │ ├── 186.gif │ ├── 187.gif │ ├── 188.gif │ ├── 189.gif │ ├── 190.gif │ ├── 191.gif │ ├── 192.gif │ ├── 193.gif │ ├── 194.gif │ ├── 195.gif │ ├── 196.gif │ ├── 197.gif │ ├── 198.gif │ ├── 199.gif │ ├── 200.png │ ├── 201.png │ ├── 202.png │ ├── 203.png │ ├── 204.png │ ├── 205.png │ ├── 206.png │ ├── 207.png │ ├── 208.png │ ├── 209.png │ ├── 210.png │ ├── 211.png │ ├── 212.png │ ├── 213.png │ ├── 214.png │ ├── 215.png │ ├── 216.png │ ├── 217.png │ ├── 218.png │ └── 219.png └── json │ ├── element-icons.json │ ├── ymCustom.json │ └── ymIcon.json ├── tests └── unit │ ├── .eslintrc.js │ ├── components │ ├── Hamburger.spec.js │ └── SvgIcon.spec.js │ └── utils │ ├── formatTime.spec.js │ ├── parseTime.spec.js │ └── validate.spec.js └── vue.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | insert_final_newline = false 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | # 开发 2 | VUE_APP_BASE_API = '/dev' 3 | VUE_CLI_BABEL_TRANSPILE_MODULES = true 4 | -------------------------------------------------------------------------------- /.env.javaBootTest: -------------------------------------------------------------------------------- 1 | # java测试 2 | ENV = 'javaBootTest' 3 | 4 | VUE_APP_BASE_API = 'http://192.168.0.20:300' 5 | VUE_APP_BASE_WSS = 'ws://192.168.0.20:300/websocket' 6 | -------------------------------------------------------------------------------- /.env.javaCloudDev: -------------------------------------------------------------------------------- 1 | # java测试 2 | ENV = 'javaCloudDev' 3 | 4 | VUE_APP_BASE_API = 'http://192.168.0.25' 5 | VUE_APP_BASE_WSS = 'ws://192.168.0.25/websocket' 6 | -------------------------------------------------------------------------------- /.env.javaCloudTest: -------------------------------------------------------------------------------- 1 | # java测试 2 | ENV = 'javaCloudTest' 3 | 4 | VUE_APP_BASE_API = 'http://192.168.0.26' 5 | VUE_APP_BASE_WSS = 'ws://192.168.0.26/websocket' 6 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # 生产默认配置 2 | ENV = 'production' 3 | 4 | VUE_APP_BASE_API = 'https://java.jnpfsoft.com' 5 | VUE_APP_BASE_WSS = 'wss://java.jnpfsoft.com/websocket' 6 | 7 | -------------------------------------------------------------------------------- /.env.staging: -------------------------------------------------------------------------------- 1 | # 测试默认配置 2 | ENV = 'staging' 3 | 4 | VUE_APP_BASE_API = 'http://192.168.0.20:300' 5 | VUE_APP_BASE_WSS = 'ws://192.168.0.20:300/websocket' 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | src/assets 3 | public 4 | dist 5 | src -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | 25 | # Image snapshot diff 26 | __diff_output__/ 27 | /jest-stare 28 | 29 | *.iml 30 | .idea/ 31 | .ipr 32 | .iws 33 | *~ 34 | ~* 35 | *.diff 36 | *.patch 37 | *.bak 38 | .DS_Store 39 | Thumbs.db 40 | .project 41 | .*proj 42 | .svn/ 43 | *.swp 44 | *.swo 45 | *.log 46 | *.log.* 47 | *.json.gzip 48 | node_modules/ 49 | .buildpath 50 | .settings 51 | npm-debug.log 52 | nohup.out 53 | _site 54 | _data 55 | dist 56 | report.html 57 | /lib 58 | /es 59 | elasticsearch-* 60 | config/base.yaml 61 | /.vscode/ 62 | /coverage 63 | yarn.lock 64 | components/**/*.js 65 | components/**/*.jsx 66 | !components/**/__tests__/**/*.js 67 | !components/**/__tests__/**/*.js.snap 68 | /.history 69 | *.tmp 70 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright © 引迈信息技术有限公司, All Rights Reserved 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jnpf-web 2 | 3 | ## 环境要求 4 | 5 | - Node.js 12.8.x+ 6 | 7 | ## 使用说明 8 | ### 安装依赖 9 | ```bash 10 | npm i 11 | 12 | # 如果下载速度比较慢,可通过以下方式解决 13 | npm i --registry=https://registry.npm.taobao.org 14 | ``` 15 | ### 开发环境 16 | - 打开`src/utils/define.js`,修改接口地址 17 | ```bash 18 | // 开发环境接口配置 19 | const APIURl = 'http://192.168.0.25:30000' 20 | ``` 21 | - 运行前端项目(默认会自动打开浏览器) 22 | ```bash 23 | npm run dev 24 | ``` 25 | 26 | ### 测试生产发布 27 | ```bash 28 | # 构建测试环境 29 | npm run build:staging 30 | 31 | # 构建生产环境 32 | npm run build 33 | ``` 34 | 35 | ## 其它 36 | 37 | ```bash 38 | # 预览发布环境效果 39 | npm run preview 40 | 41 | # 预览发布环境效果 + 静态资源分析 42 | npm run preview -- --report 43 | 44 | # 代码格式检查 45 | npm run lint 46 | 47 | # 代码格式检查并自动修复 48 | npm run lint -- --fix 49 | ``` -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ], 5 | 'env': { 6 | 'development': { 7 | 'plugins': ['dynamic-import-node'] 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /build/index.js: -------------------------------------------------------------------------------- 1 | const { 2 | run 3 | } = require('runjs') 4 | const chalk = require('chalk') 5 | const config = require('../vue.config.js') 6 | const rawArgv = process.argv.slice(2) 7 | const args = rawArgv.join(' ') 8 | 9 | if (process.env.npm_config_preview || rawArgv.includes('--preview')) { 10 | const report = rawArgv.includes('--report') 11 | 12 | run(`vue-cli-service build ${args}`) 13 | 14 | const port = 9526 15 | const publicPath = config.publicPath 16 | 17 | var connect = require('connect') 18 | var serveStatic = require('serve-static') 19 | const app = connect() 20 | 21 | app.use( 22 | publicPath, 23 | serveStatic('./dist', { 24 | index: ['index.html', '/'] 25 | }) 26 | ) 27 | 28 | app.listen(port, function () { 29 | console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) 30 | if (report) { 31 | console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) 32 | } 33 | 34 | }) 35 | } else { 36 | run(`vue-cli-service build ${args}`) 37 | } 38 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], 3 | transform: { 4 | '^.+\\.vue$': 'vue-jest', 5 | '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 6 | 'jest-transform-stub', 7 | '^.+\\.jsx?$': 'babel-jest' 8 | }, 9 | moduleNameMapper: { 10 | '^@/(.*)$': '/src/$1' 11 | }, 12 | snapshotSerializers: ['jest-serializer-vue'], 13 | testMatch: [ 14 | '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' 15 | ], 16 | collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], 17 | coverageDirectory: '/tests/unit/coverage', 18 | // 'collectCoverage': true, 19 | 'coverageReporters': [ 20 | 'lcov', 21 | 'text-summary' 22 | ], 23 | testURL: 'http://localhost/' 24 | } 25 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "paths": { 5 | "@/*": ["src/*"] 6 | } 7 | }, 8 | "exclude": ["node_modules", "dist"] 9 | } -------------------------------------------------------------------------------- /plop-templates/component/index.hbs: -------------------------------------------------------------------------------- 1 | {{#if template}} 2 | 5 | {{/if}} 6 | 7 | {{#if script}} 8 | 20 | {{/if}} 21 | 22 | {{#if style}} 23 | 26 | {{/if}} 27 | -------------------------------------------------------------------------------- /plop-templates/component/prompt.js: -------------------------------------------------------------------------------- 1 | const { notEmpty } = require('../utils.js') 2 | 3 | module.exports = { 4 | description: 'generate vue component', 5 | prompts: [{ 6 | type: 'input', 7 | name: 'name', 8 | message: 'component name please', 9 | validate: notEmpty('name') 10 | }, 11 | { 12 | type: 'checkbox', 13 | name: 'blocks', 14 | message: 'Blocks:', 15 | choices: [{ 16 | name: '