{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/api/areas/questionTopic.js","webpack:///./src/layout/components/Sidebar/index.vue?ca79","webpack:///./src/store/index.ts","webpack:///./src/api/areas/inComeStatistics.js","webpack:///./src/api/areas/question.js","webpack:///./src/layout/index.vue?6b36","webpack:///./src/layout/components/Sidebar/logo.vue?f0fd","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?cbba","webpack:///./src/api/areas/payrollRequisition.js","webpack:///./src/styles/element-variables.scss?cc76","webpack:///./src/api/areas/tenant.js","webpack:///./public/ueditor/lang/zh-cn/zh-cn.js","webpack:///./src/api/areas/client.js","webpack:///./src/utils/tree.ts","webpack:///./public/ueditor/ueditor.config.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/api/appService.ts","webpack:///./src/api/areas/activityApply.js","webpack:///./src/utils/cookies.ts","webpack:///./src/layout/components/AppMain.vue?80d6","webpack:///./src/api/areas/userPointLog.js","webpack:///./src/api/areas/activity.js","webpack:///./src/assets/images/default-header.png","webpack:///./src/utils/validate.ts","webpack:///./src/api/attachment.ts","webpack:///./src/api/index.ts","webpack:///./src/store/modules/permission.ts","webpack:///./src/layout/components/Sidebar/index.vue?1f02","webpack:///./src/components/Breadcrumb/index.vue?e78b","webpack:///./src/api/areas/socialSecurityAssign.js","webpack:///./src/api/areas/paymentCategory.js","webpack:///./src/store/modules/user.ts","webpack:///./src/styles/_variables.scss","webpack:///./src/api/areas/account.js","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?9228","webpack:///./src/api/areas/payrollOfPartner.js","webpack:///./src/components/Hamburger/index.vue?4915","webpack:///./src/lang/en.ts","webpack:///./src/lang/zh.ts","webpack:///./src/lang/es.ts","webpack:///./src/lang/ja.ts","webpack:///./src/lang/index.ts","webpack:///./src/store/modules/app.ts","webpack:///./src/layout/index.vue?d800","webpack:///./src/layout/components/AppMain.vue?67f2","webpack:///./src/layout/components/AppMain.vue?6814","webpack:///./src/layout/components/AppMain.vue?c133","webpack:///./src/layout/components/AppMain.vue","webpack:///./src/layout/components/Navbar/index.vue?d09a","webpack:///./src/components/Breadcrumb/index.vue?43c0","webpack:///./src/components/Breadcrumb/index.vue?35fa","webpack:///./src/components/Breadcrumb/index.vue?d4e6","webpack:///./src/components/Breadcrumb/index.vue","webpack:///./src/components/Hamburger/index.vue?0a77","webpack:///./src/components/Hamburger/index.vue?b520","webpack:///./src/components/Hamburger/index.vue?1a4c","webpack:///./src/components/Hamburger/index.vue","webpack:///./src/views/ou/user/changePassword.vue?acb0","webpack:///./src/views/ou/user/changePassword.vue?ea61","webpack:///./src/views/ou/user/changePassword.vue?a6c8","webpack:///./src/views/ou/user/changePassword.vue","webpack:///./src/layout/components/Navbar/index.vue?7aa2","webpack:///./src/layout/components/Navbar/index.vue?975c","webpack:///./src/layout/components/Navbar/index.vue","webpack:///./src/layout/components/Sidebar/index.vue?2d4d","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?23b2","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?f243","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?8a4c","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?22ad","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?0280","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?6e5e","webpack:///./src/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/layout/components/Sidebar/logo.vue?9160","webpack:///./src/layout/components/Sidebar/logo.vue?29ca","webpack:///./src/layout/components/Sidebar/logo.vue?9897","webpack:///./src/layout/components/Sidebar/logo.vue","webpack:///./src/layout/components/Sidebar/index.vue?e7a6","webpack:///./src/layout/components/Sidebar/index.vue?e3e5","webpack:///./src/layout/components/Sidebar/index.vue","webpack:///./src/layout/mixin/resize.ts","webpack:///./src/layout/index.vue?170f","webpack:///./src/layout/index.vue?411a","webpack:///./src/layout/index.vue","webpack:///./src/router/modules/admin.ts","webpack:///./src/router/modules/cms.ts","webpack:///./src/router/modules/project.ts","webpack:///./src/router/modules/ou.ts","webpack:///./src/router/modules/audit.ts","webpack:///./src/router/modules/form.ts","webpack:///./src/router/modules/partnerInvite.ts","webpack:///./src/router/modules/notify.ts","webpack:///./src/router/modules/organization.ts","webpack:///./src/router/modules/organizationApply.ts","webpack:///./src/router/modules/finance.ts","webpack:///./src/router/modules/fund.ts","webpack:///./src/router/modules/fundProject.ts","webpack:///./src/router/modules/activity.ts","webpack:///./src/router/modules/volunteer.ts","webpack:///./src/router/modules/task.ts","webpack:///./src/router/modules/job.ts","webpack:///./src/router/modules/feedback.ts","webpack:///./src/router/modules/financeNew.ts","webpack:///./src/router/modules/office.ts","webpack:///./src/router/modules/donate.ts","webpack:///./src/router/modules/syncData.ts","webpack:///./src/router/index.ts","webpack:///./src/styles/index.scss","webpack:///./src/api/areas/payrollOfSelf.js","webpack:///./src/api/areas/reimbursement.js","webpack:///./src/utils/request.ts","webpack:///./src/utils/storage.ts","webpack:///./src/layout/components/Sidebar/index.vue?7e8c","webpack:///./src/api/areas/dataDictionaries.js","webpack:///./src/api/areas/comment.js","webpack:///./src/api/areas/downloadTemplate.js","webpack:///./src/App.vue?2067","webpack:///./src/App.vue?ec60","webpack:///./src/App.vue?640d","webpack:///./src/App.vue","webpack:///./src/icons/components/404.ts","webpack:///./src/icons/components/back-top.ts","webpack:///./src/icons/components/bug.ts","webpack:///./src/icons/components/chart.ts","webpack:///./src/icons/components/clipboard.ts","webpack:///./src/icons/components/component.ts","webpack:///./src/icons/components/dashboard.ts","webpack:///./src/icons/components/documentation.ts","webpack:///./src/icons/components/drag.ts","webpack:///./src/icons/components/edit.ts","webpack:///./src/icons/components/education.ts","webpack:///./src/icons/components/email.ts","webpack:///./src/icons/components/example.ts","webpack:///./src/icons/components/excel.ts","webpack:///./src/icons/components/exit-fullscreen.ts","webpack:///./src/icons/components/eye-off.ts","webpack:///./src/icons/components/eye-on.ts","webpack:///./src/icons/components/form.ts","webpack:///./src/icons/components/fullscreen.ts","webpack:///./src/icons/components/guide-2.ts","webpack:///./src/icons/components/guide.ts","webpack:///./src/icons/components/hamburger.ts","webpack:///./src/icons/components/icon.ts","webpack:///./src/icons/components/international.ts","webpack:///./src/icons/components/language.ts","webpack:///./src/icons/components/like.ts","webpack:///./src/icons/components/link.ts","webpack:///./src/icons/components/list.ts","webpack:///./src/icons/components/lock.ts","webpack:///./src/icons/components/message.ts","webpack:///./src/icons/components/money.ts","webpack:///./src/icons/components/nested.ts","webpack:///./src/icons/components/password.ts","webpack:///./src/icons/components/pdf.ts","webpack:///./src/icons/components/people.ts","webpack:///./src/icons/components/peoples.ts","webpack:///./src/icons/components/qq.ts","webpack:///./src/icons/components/search.ts","webpack:///./src/icons/components/shopping.ts","webpack:///./src/icons/components/size.ts","webpack:///./src/icons/components/skill.ts","webpack:///./src/icons/components/star.ts","webpack:///./src/icons/components/tab.ts","webpack:///./src/icons/components/table.ts","webpack:///./src/icons/components/theme.ts","webpack:///./src/icons/components/tree-table.ts","webpack:///./src/icons/components/tree.ts","webpack:///./src/icons/components/user.ts","webpack:///./src/icons/components/wechat.ts","webpack:///./src/icons/components/zip.ts","webpack:///./src/icons/components/mg-role.ts","webpack:///./src/icons/components/setting.ts","webpack:///./src/icons/components/kechengguanli.ts","webpack:///./src/icons/components/shuju.ts","webpack:///./src/icons/components/cate.ts","webpack:///./src/icons/components/doc.ts","webpack:///./src/icons/components/card.ts","webpack:///./src/icons/components/organization.ts","webpack:///./src/icons/components/project.ts","webpack:///./src/icons/components/order.ts","webpack:///./src/icons/components/refund.ts","webpack:///./src/icons/components/pays.ts","webpack:///./src/icons/components/editDoc.ts","webpack:///./src/icons/components/auditDoc.ts","webpack:///./src/icons/components/docYes.ts","webpack:///./src/icons/components/recycle.ts","webpack:///./src/icons/components/addNode.ts","webpack:///./src/icons/components/arrowDown.ts","webpack:///./src/icons/components/auditingDoc.ts","webpack:///./src/icons/components/moneyBag.ts","webpack:///./src/icons/components/payrollAdd.ts","webpack:///./src/icons/components/baoxiao.ts","webpack:///./src/icons/components/aliyun.ts","webpack:///./src/icons/components/protocol.ts","webpack:///./src/icons/components/mail.ts","webpack:///./src/icons/components/category.ts","webpack:///./src/icons/components/question.ts","webpack:///./src/icons/components/department.ts","webpack:///./src/permission.ts","webpack:///./src/utils/filter.ts","webpack:///./src/mixins/filters/enums.ts","webpack:///./src/core/permission.ts","webpack:///./src/api/area.ts","webpack:///./src/main.ts","webpack:///./public/ueditor/ueditor.parse.min.js","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?8330","webpack:///./src/api/areas/payrollAssign.js","webpack:///./public/ueditor/ueditor.all.js","webpack:///./src/api/areas sync \\.js$","webpack:///./src/api/areas/ou.js","webpack:///./src/layout/components/Navbar/index.vue?0120"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","getAll","url","method","params","getForEdit","update","delete","use","Store","UE","I18N","title","searchError","options","lang_city","lang_address","city","lang_search","lang_dynamicmap","cityMsg","errorMsg","lang_tab_search","lang_tab_replace","lang_search1","lang_search2","lang_replace","lang_searchReg","lang_searchReg1","lang_case_sensitive1","lang_case_sensitive2","nextFindBtn","preFindBtn","nextReplaceBtn","preReplaceBtn","repalceBtn","repalceAllBtn","getEnd","getStart","countMsg","lang_showMsg","lang_download","lang_step1","lang_step2","tsfh","lmsz","szfh","rwfh","xlzm","ewzm","pyzm","yyyb","zyzf","captionName","titleName","cellsName","lang_delRow","lang_delCol","lang_tdBkColor","lang_resave","uploadBtn","alt","clipboard","style","lang_step","getPlaceSuggestion","query","region","getUnLimitQr","getStores","createNodes","array","index","element","items","flatenNodes","filter","x","forEach","createTableTree","parentIdProperty","idProperty","parentIdValue","childrenProperty","tree","nodes","node","newNode","assign","hasChildren","isLeaf","_children","createTree","argument","label","labelProperty","id","expanded","disabled","children","hidden","keyProperty","toString","fieldMappings","createNgTree","getCategoryIdList","categories","categoryId","item","findCategory","parentId","reverse","len","URL","UEDITOR_HOME_URL","getUEBasePath","docUrl","confUrl","getBasePath","self","location","getConfigFilePath","configPath","basePath","test","exec","replace","split","optimizationPath","path","protocol","tmp","res","pop","join","UEDITOR_CONFIG","serverUrl","toolbars","enableAutoSave","elementPathEnabled","wordCount","catchRemoteImageEnable","allowDivTransToP","xssFilterRules","inputXssFilter","outputXssFilter","whitList","a","abbr","address","area","article","aside","audio","b","bdi","bdo","big","blockquote","br","caption","center","cite","col","colgroup","dd","del","details","div","dl","dt","em","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","pre","section","small","span","sub","sup","strong","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","map","webpackContext","req","webpackContextResolve","keys","serviceOptions","axios","configs","catch","getConfigs","contentType","headers","TenantAvailabilityState","VerificationCode","ActivityStatus","ActivityTypeEnum","AttachmentHostType","ActivityQrType","ActivityApplyStatus","UserType","AuditFLowStatus","AuditFlowType","ApplyStatus","ClientType","ImportResultType","OrderType","OrderStatus","AuditFlowScope","AuditUserLogStatus","ApprovalCategory","CurrencyType","FundProjectType","ApplicationPaymentValidationStatus","ServiceRecordType","WorkflowOfProjectByExternal","ProjectServiceRecordCompleteStatus","PayType","ChangeState","ProjectBudgetCategory","ProjectBudgetType","ProjectBudgetCapitalSource","CapitalProperty","IncomeCategory","CmsCategoryType","CmsContentStatus","DonorType","IncomeType","ValidStatus","ElectronicInvoiceType","CollectWaterStatus","CustomFormType","CustomFormDataSourceType","DonationType","DonorItemType","DonationCycle","DataDictionarySyncMode","DataPermissionLimitHostType","DataPermissionLimitTargetType","DonatedAmountConfigSourceType","ElectronicInvoiceStatus","ProjectMonthlyPlanCompleteStatus","ProjectPhaseStatus","FeedbackSourceType","DonateType","FundType","MessageType","FundAccountRecordOperationType","FundAppropriateType","ManagerFeeChangeType","FundProjectStatus","WorkflowOfProjectByInternal","NotifyTemplateType","OrganizationStatus","PermissionDefinitionScope","DataPermissionScopeType","TenantAccountRecordType","TaskType","TaskStatus","VolunteerStatus","ServiceType","AccountService","body","weiXinUser","phone","verificationCode","ActivityService","Id","Title","Status","IsVolunteerActivity","PageSize","SkipCount","PageIndex","Sorting","MaxResultCount","qrType","ActivityApplyService","activityId","ActivityId","ActivityTitle","ApplyUserPhone","ApplyUserName","IsPay","IsPriced","IsOnlyMine","SpecialType","orderNo","userId","audit","auditStatus","ActivitySignInRecordService","AlbumService","Name","AlbumId","AlbumPhotoId","ApplicationPaymentService","ApplicantName","FundID","FundName","FundProjectName","IsAudited","ValidationStatus","EndDate","AreaService","cityId","AreaName","AttachmentService","hostId","hostType","AuditFlowProxyService","Desc","scope","AuditNodePreDefineService","BankNameService","BankReconciliationService","Year","BankAccount","BankTypeService","BeneficiaryService","Code","RealName","Sex","MinAge","MaxAge","Nation","ProvinceId","CityId","AreaId","TownId","IsEnjoyTheSubsistenceAllowancePolicy","IsEnjoyOtherSalvation","BeneficiaryServiceRecordServiceService","BeneficiaryName","SchoolName","ProjectName","ProjectId","CapitalExpenseRecordAppserviceService","recordId","contractNo","projectId","ProjectSeriesId","ProjectType","StartDate","MinAmount","MaxAmount","ItemName","Remark","Summary","isInternal","year","payDate","PayeeName","PayeeBankAccount","ContractNo","CapitalIncomeRecordFromDonationService","IncomeDate","IncomeDateStart","IncomeDateEnd","DonatorName","TotalIncomeMoney","TotalIncomeMoneyStart","TotalIncomeMoneyEnd","CapitalIncomeRecordFromOtherService","CityService","provinceId","CityName","ShortCode","CmsAnchorService","DisplayName","CmsCategoryService","categoryCode","isLeftJoin","ParentId","ParentCode","UseParentIdParameter","IsHidden","EnableDataPermissionLimit","NeedShowContentCategory","CmsContentService","CategoryId","CategoryCode","PublishYear","NoContainsId","FundProjectID","HasCategory","IsLoadChildrenCategoryArticles","IsHomeScrolling","contentIds","CmsFriendLinkService","Link","DisplayOrder","CollectWaterService","BillNo","DonateProject","ReceivingBankAccount","CustomFormService","HostType","HostId","formType","CycleDonateConfigService","MobileTelephone","IsOpen","ContractOrderId","UserId","DonorItemId","DashbordService","start","end","fundType","isLimitTop10","DataDictionaryService","IsParent","Key","ParentKey","DepartmentService","DonatedAmountConfigService","SourceType","SourceId","ElectronicInvoiceService","invoiceAmount","DonationNoteTitle","MobilePhone","Email","EnumService","typeName","ExternalDueDiligenceRecordService","DueDiligenceTypeId","StartDateStart","StartDateEnd","EndDateStart","EndDateEnd","Place","Members","VisitObjectJson","OrgInfo","ProjectInfo","OmnibusOpinion","OrganizationUnitName","OrganizationUnitId","ExternalMonthlyPlanService","Date","date","ExternalMonthlySummarizeService","ExternalProjectService","OrgName","IsPhase","ExternalProjectChangeApplyService","ChangeDate","ChangeTypes","ExternalProjectCloseReportService","ExternalProjectIntentionService","ExternalProjectPhaseService","Stage","Month","stage","month","ExternalProjectProcessMonitoringService","MonitoringType","ExternalProjectProgressReportService","ExternalProjectReportService","ExternalProjectSummaryReportService","FeedbackService","Content","ContactType","TypeCodeId","FeedbackReplyService","FeedbackId","IsHide","FundService","fundId","messageId","donateType","Type","FundCategory","IsPublished","FundId","FundAccountService","IsFront","OperationType","FundApplyService","FundAppropriateApplyService","MoneyAmount","MoneyAmountStart","MoneyAmountEnd","AppropriateReason","BankAccountCode","BankName","BankAccountName","ReceiverName","ReceiverTelephone","AppropriateType","OtherProjectName","FundAppropriateRecordService","AppropriateTimeStart","AppropriateTimeEnd","Day","FundDonationMonthlyConfigService","DonorSignSn","DonorDay","DonationAmount","DonationAmountStart","DonationAmountEnd","InvoiceId","LeaveMessage","Attachments","SpBillNo","ListId","IsConfirmed","Referrer","StoppedTimeStart","StoppedTimeEnd","ConfigType","FundDonationOrderService","orderId","OrderId","IsManualCreate","DonorName","IsPayed","PayedTime","PayedTimeStart","PayedTimeEnd","PaymentType","IsResponsed","ResponseTime","ResultMessage","TradeNo","DonorAccount","NeedInvoice","OrderSerialNo","MonthDonorDay","FundIncomeRecordService","Keyword","IsMonthDonor","WeixinTradeNo","FundManageFeeRecordService","Amount","AmountStart","AmountEnd","Ration","RationStart","RationEnd","FundModifyApplyService","FundNonCashDonationService","Company","Address","HomeTelephone","Telephone","FundProjectService","CategoryName","IsNeedAll","IsBrand","IsFilterOrgId","ProjectStatus","FundProjectApplyService","FundProjectDonationRecordService","DonateTimeStart","DonateTimeEnd","DonateMoney","DonateMoneyStart","DonateMoneyEnd","RecordSource","DonorMobilePhone","FundProjectModifyApplyService","FundProjectProgressService","IsPublish","FundProjectYearSummaryService","ServiceArea","FundUserService","Surname","UserName","InternalMonthlyPlanService","InternalMonthlySummarizeService","InternalPersonalYearEndSummaryService","InternalProjectService","InternalProjectPhaseService","InternalProjectReportService","InternalProjectSummaryReportsService","JobService","MerchantService","UnitName","UnitAddress","PrincipalName","PrincipalMobilePhone","PrincipalEmailAddress","ContactName","ContactMobilePhone","ContactEmailAddress","IsSynced","MerchantBankAccountService","MerchantId","MessageService","NotifyRecordService","NotifyType","NotifyTemplateService","OrganizationUnitService","inviteCode","OrganizationType","IsApply","EmailAddress","PartnerCapitalApplyService","IsInternal","PartnerInviteService","OrganizationName","Mobile","HasUsed","PermissionDefinitionService","ProjectService","ProjectTypes","IsIgnorePublicShow","ProjectBeneficiaryMappingService","ProjectInviteService","ProjectSeriesService","IsPublicShow","ProvinceService","ProvinceName","ShortName","RoleService","Permission","roleId","ScopeDataSourceService","providerName","permissionCode","SessionService","SwiperService","anchorName","isMustImg","CmsAnchorId","AnchorName","TenantBankAccountService","TokenAuthService","cacheKey","TownService","areaId","TownName","UserService","IsActive","DepartmentId","Departments","Mode","RoleId","mobilePhone","roleName","UserTaskService","ImportantLevelId","StartTime","EndTime","VolunteerService","VolunteerName","VolunteerPhone","VolunteerId","VolunteerCode","IncludeUserExtend","VolunteerServiceHistoryService","sidebarStatusKey","getSidebarStatus","setSidebarStatus","sidebarStatus","set","languageKey","getLanguage","sizeKey","getSize","tokenKey","removeToken","remove","ouKey","getOu","setOu","log","removeOu","getQr","changeStatus","approveActivity","isExternal","isValidPhone","str","reg","validPhone","rule","callback","validMoney","isValidNumber","validAge","baseURL","open","file","tokenAuth","auditFlow","auditNodePreDefine","account","album","cmsContent","cmsCategory","cmsAnchor","cmsFriendLink","swiper","department","organizationUnit","role","session","user","attachment","attachmentService","permissionDefinition","partnerInvite","notifyTemplate","dataDictionary","capitalIncomeRecordFromOther","capitalIncomeRecordFromDonation","capitalExpenseRecord","internalMonthlyPlan","internalMonthlySummarize","internalPersonalYearEndSummary","enumService","externalProjectIntention","externalMonthlyPlanService","externalMonthlySummarize","projectInvite","projectSeries","project","externalDueDiligenceRecord","externalProjectProcessMonitoringService","externalProjectProcessReport","externalProjectSummaryReport","notifyRecord","province","town","externalProject","externalProjectCloseReport","customFormService","internalProjectSummaryReports","internalProject","partnerCapitalApply","beneficiary","projectBeneficiaryMapping","beneficiaryServiceRecord","bankReconciliation","guid","internalProjectPhase","externalProjectPhase","internalProjectReport","externalProjectReport","externalProjectChangeApply","fund","fundApply","fundModifyApply","fundUser","fundAccount","fundAppropriateRecord","fundIncomeRecord","fundProject","fundProjectApply","fundProjectModifyApply","fundProjectYearSummaryService","fundProjectProgress","fundDonationOrder","fundProjectDonationRecord","fundNonCashDonation","fundAppropriateApply","fundManageFeeRecord","fundDonationMonthly","cycleDonateConfig","activity","activityApply","activitySignInRecord","volunteer","volunteerServiceHistory","userTask","job","feedback","feedbackReply","electronicInvoice","applicationPayment","donatedAmountConfig","dashboard","tenantBankAccount","merchant","merchantBankAccount","dataPermissionScopeProvider","bankType","bankName","collectWater","filterPermission","permissions","permissionDefinitions","definition","permissionDefinitionScopes","some","isHiddenForMenu","permissionItem","displayName","displayOrder","icon","routes","dynamicRoutes","menus","this","input","accessedMenus","permissionScope","permissionTree","Partner","Foundation","SET_MENUS","dynamic","store","PermissionModule","getPermissionDefinitions","sorting","maxResultCount","storage","JSON","parse","localStorage","getItem","sessionStorage","User","token","avatar","introduction","tenantId","roles","ou","logoImageUrl","surname","userName","emailAddress","serialize","Array","isArray","SET_TOKEN","SET_ROLES","SET_OU","SET_PERMISSIONS","SET_USER","loginResult","accessToken","permissionResponse","getCurrentLoginInformations","SetTenant","tenant","organizationUnitType","organizationType","getIsAdmin","GenerateMenus","commit","ouid","find","setItem","stringify","UserModule","isTenantAvailable","register","route","documentation","guide","permission","pagePermission","rolePermission","directivePermission","icons","components","tinymce","markdown","jsonEditor","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","draggableDialog","draggableKanban","draggableList","draggableSelect","charts","barChart","lineChart","mixedChart","example","nested","menu1","menu2","dynamicTable","draggableTable","inlineEditTable","complexTable","tab","form","createArticle","editArticle","articleList","errorPages","page401","page404","errorLog","excel","exportExcel","selectExcel","mergeHeader","uploadExcel","zip","pdf","exportZip","theme","i18n","externalLink","profile","navbar","logOut","github","size","login","logIn","username","password","any","thirdparty","thirdpartyTips","createRole","editPermission","switchRoles","tips","confirm","cancel","description","button","tinymceTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","search","add","export","reviewer","author","readings","status","actions","edit","publish","draft","warning","selectedExport","placeholder","change","tagsView","refresh","close","closeOthers","closeAll","settings","showTagsView","showSidebarLogo","fixedHeader","sidebarTextTheme","DeviceType","messages","en","zh","es","ja","cookieLanguage","language","navigator","toLowerCase","locales","locale","indexOf","sidebar","opened","withoutAnimation","device","Desktop","version","TOGGLE_SIDEBAR","CLOSE_SIDEBAR","TOGGLE_DEVICE","SETTENANTID","SETTENANT","AppModule","render","_vm","_h","$createElement","_c","_self","staticClass","class","classObj","mobile","on","handleClickOutside","_e","staticRenderFns","attrs","component","toggleSideBar","_v","_s","defineImg","slot","nativeOn","$event","changePassword","staticStyle","logout","ref","_l","redirect","breadcrumbs","meta","startsWith","getBreadcrumb","matched","$route","breadcrumb","toPath","$router","pathCompile","isActive","toggleClick","$emit","default","show","ruleRule","model","$$v","$set","expression","save","defaultData","currentPassword","newPassword","required","trigger","$refs","dataForm","validate","valid","api","$message","success","ToggleSideBar","Logout","changePasswordForm","getAvatar","getFullName","Breadcrumb","Hamburger","ChangePassword","isCollapse","variables","menuBg","menuText","menuActiveText","menu","isFirstLevel","onlyItem","child","to","_t","routePath","showingChildNumber","SidebarItemLink","collapse","logo","SidebarItem","Logo","WIDTH","CloseSideBar","addEventListener","resizeHandler","isMobile","ToggleDevice","removeEventListener","rect","getBoundingClientRect","width","hideSidebar","openSidebar","AppMain","Navbar","Sidebar","adminRouter","admin","cmsRouter","cms","projectRouter","ouRouter","auditRouter","formRouter","partnerInviteRouter","notifyRouter","notify","organizationRouter","organization","organizationApplyRouter","organizationApply","financeRouter","finance","fundRouter","fundProjectRouter","activityRouter","volunteerRouter","taskRouter","task","jobRouter","feedbackRouter","financeNewRouter","financeNew","officeRouter","office","donateRouter","donate","syncDataRouter","syncData","constantRoutes","auth","asyncRouter","router","scrollBehavior","from","savedPosition","y","base","beforeEach","next","returnUrl","fullPath","service","isAbpResponse","response","__abp","doAbpResponse","$eventBus","_response","config","action","eventName","interceptors","ouId","getTenantId","getToken","abpRes","duration","validationErrors","errItem","dangerouslyUseHTMLString","PREFIX","setStore","content","set_time","getTime","getStore","getListByParentId","reply","downloadTemplate","height","viewBox","configure","showSpinner","_","done","afterEach","formatDate","arg","String","fromNow","format","formatYearMonthDayDate","formatYearMonthDayDateData","formatYearMonth","formatYearMonthData","currency","parseFloat","toFixed","formatPartnerOrg","orgIds","orgList","displayNames","formatIncomeType","incomeType","formatCapitalProperty","capitalProperty","formatIncomeCategory","incomeCategory","formatCurrencyType","currencyType","formatCurrency","Math","round","Number","pow","getSingleColumnSum","list","sum","money","formatMoney","formatYesOrNo","formatIsSynced","formatIsEnabled","filters","applyStatus","activityType","activityStatus","payType","orderType","ou_type","volunteerHistoryServiceType","areaAllApis","requiredApis","fileName","areaApi","$uploadUrl","$abpApi","$permissions","hasPermission","tagName","defaultWidth","defaultHeight","eventBus","permissionName","state","$bus","$getCaption","obj","lastIndexOf","substring","productionTip","$getActualPageIndex","historyParams","historyUrlSame","Boolean","PageInde","$getActualPageSize","hash","$clearHistorySearchParams","directive","el","binding","vnode","display","h","App","$mount","f","ActiveXObject","removeLastbs","extend","arguments","isBoolean","k","isIE","cssRule","indexList","styleSheets","createStyleSheet","cssText","getElementById","innerHTML","domReady","readyState","isReady","documentElement","doScroll","callee","attachEvent","each","inArray","pushItem","trim","isNumber","hasClass","className","RegExp","addClass","removeClass","removeAttribute","_d","els","srcElement","off","detachEvent","loadFile","doc","ready","funs","onreadystatechange","write","g","load","uParse","querySelectorAll","root","selector","XRegExp","rootPath","highlightJsUrl","highlightCssUrl","defer","SyntaxHighlighter","highlight","localeCompare","rows","cells","q","reversecurrent","orderbyasc","innerText","textContent","reversebyasc","orderbynum","match","reversebynum","ownerDocument","createDocumentFragment","toUpperCase","firstChild","tableSortCompareFn","jQuery","Highcharts","dataFormat","chartType","typeConfig","series","subTitle","xTitle","yTitle","tip","suffix","replaceChild","$","highcharts","credits","enabled","exporting","text","subtitle","xAxis","yAxis","plotLines","color","tooltip","valueSuffix","legend","layout","align","verticalAlign","borderWidth","chartContainerHeight","liiconpath","childNodes","cn","cn1","cn2","num","num1","num2","dash","dot","listDefaultPaddingLeft","videojs","autoSetup","flash","swf","baidu","editor","plugins","commands","instants","_customizeUI","dom","browser","agent","userAgent","opera","ie","webkit","mac","quirks","compatMode","gecko","product","v1","v2","max","ie11Compat","documentMode","ie9Compat","ie8","ie8Compat","ie7Compat","ie6Compat","ie9above","ie9below","ie11above","ie11below","geckoRelease","chrome","safari","isCompatible","air","utils","iterator","context","makeInstance","noop","Function","extend2","inherits","subClass","superClass","oldP","newP","constructor","fn","delay","exclusion","timerID","v","removeItem","listToMap","ci","unhtml","html","cssStyleToDomStyle","cache","cssFloat","styleFloat","cssName","charAt","tmpList","fi","isEmptyObject","isString","fixColor","parseInt","optCss","val","padding","margin","opt","top","bottom","left","right","clone","source","transUnitToPx","unit","fnArr","doReady","onready","win","nodeType","sheetStyle","sort","compareFn","item1","item2","serializeParam","json","strArr","encodeURIComponent","formatUrl","isCrossDomainUrl","hostname","port","clearEmptyAttrs","str2json","json2str","encodeString","escapeMap","charCodeAt","floor","encodeArray","preComma","pad","encodeDate","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","isFinite","isDate","encode","EventBase","getListener","force","allListeners","__allListeners","addListener","types","listener","ti","removeListener","fireEvent","listeners","dtd","X","A","isindex","fieldset","B","select","textarea","C","D","iframe","E","noscript","dir","noframes","F","G","acronym","kbd","strike","samp","dfn","H","embed","basefont","applet","I","J","K","L","M","N","O","param","P","Q","R","S","link","T","U","V","block","empty","command","dialog","keygen","track","wbr","$nonBodyContent","$block","$inline","$inlineWithA","$body","$cdata","$empty","$nonChild","$listItem","$list","$isNotEmpty","$removeEmpty","$removeEmptyBlock","$tableContent","$notTransContent","option","optgroup","getDomNode","ltr","startFromChild","guard","parent","tmpNode","attrFix","tabindex","readonly","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","styleBlock","domUtils","NODE_ELEMENT","NODE_DOCUMENT","NODE_TEXT","NODE_COMMENT","NODE_DOCUMENT_FRAGMENT","POSITION_IDENTICAL","POSITION_DISCONNECTED","POSITION_FOLLOWING","POSITION_PRECEDING","POSITION_IS_CONTAINED","POSITION_CONTAINS","fillChar","8","46","16","17","18","37","38","39","40","13","getPosition","nodeA","nodeB","parentsA","parentsB","nextSibling","getNodeIndex","ignoreTextNode","preNode","previousSibling","inDoc","findParent","filterFn","includeSelf","isBody","findParentByTagName","tagNames","excludeFn","findParents","closerFirst","parents","insertAfter","insertBefore","keepChildren","hasChildNodes","getNextDomNode","getPreDomNode","isBookmarkNode","getWindow","defaultView","parentWindow","getCommonAncestor","clearEmptySibling","ignoreNext","ignorePre","clear","isEmptyInlineElement","nodeValue","offset","createTextNode","retval","splitText","isWhitespace","getXY","offsetParent","offsetTop","offsetLeft","handler","evt","un","isSameElement","thisAttrs","attributes","otherAttrs","attrA","attrB","al","bl","nodeName","specified","isSameStyle","getNamedItem","styleA","styleB","isBlockElm","getComputedStyle","breakParent","leftNodes","rightNodes","parentClone","cloneNode","trimWhiteTextNode","mergeChild","ni","arr","mergeToParent","textDecoration","mergeSibling","merge","rtl","lastChild","unSelectable","onselectstart","onclick","onkeyup","onkeydown","unselectable","MozUserSelect","webkitUserSelect","msUserSelect","KhtmlUserSelect","removeAttributes","attrNames","getAttributeNode","removeAttributeNode","setAttributes","attr","styleName","pros","fontSize","offsetHeight","getStyle","getPropertyValue","currentStyle","removeClasses","elm","classNames","cls","isRegExp","preventDefault","returnValue","removeStyle","removeProperty","setStyle","setStyles","styles","removeDirtyAttr","getChildCount","count","first","isEmptyNode","isBr","clearSelectedArr","scrollToView","getViewPaneSize","clientWidth","clientHeight","getScrollPosition","pageXOffset","pageYOffset","scrollLeft","scrollTop","winHeight","elementPosition","currentScroll","scrollTo","isFillChar","isInStart","isStartInblock","range","tmpRange","cloneRange","flag","startContainer","startOffset","setStartBefore","setStart","isEmptyBlock","setViewportOffset","fillNode","moveChild","hasNoAttributes","outerHTML","isCustomeNode","isTagNode","filterNodeList","nodelist","forAll","results","isFunction","isInNodeEndBoundary","rng","isBoundaryNode","fillHtml","fillCharReg","fillData","updateCollapse","collapsed","endContainer","endOffset","selectOneNode","setEndPoint","toStart","execContentsAction","tmpStart","tmpEnd","frag","substringData","deleteData","current","currentLevel","startParents","endParents","si","ei","Range","me","removeFillData","excludeNode","contains","cloneContents","deleteContents","txt","extractContents","setEnd","setStartAfter","setEndAfter","setEndBefore","setStartAtFirst","setStartAtLast","setEndAtFirst","setEndAtLast","selectNode","selectNodeContents","shrinkBoundary","ignoreEnd","check","trimBoundary","txtToElmBoundary","textNode","ignoreCollapsed","adjust","container","insertNode","nextNode","setCursor","toEnd","noFillData","createBookmark","same","endNode","startNode","moveToBookmark","bookmark","enlarge","toBlock","stopFn","enlargeToBlockElm","adjustmentBoundary","applyInlineStyle","aNode","level","removeInlineStyle","getClosedNode","textRange","nativeRange","createControlRange","addElement","createTextRange","moveToElementText","moveStart","tmpText","nativeRangeEnd","notInsertFillData","checkOffset","txtNode","sel","getSelection","focus","removeAllRanges","createRange","commonAncestorContainer","addRange","inFillChar","createAddress","ignoreTxt","addr","getAddress","isStart","addrs","firstIndex","startAddress","endAddress","concat","moveToAddress","getNode","equals","traversal","doFn","getBoundaryInformation","getIndex","duplicate","parentElement","distance","siblings","testRange","startIndex","endIndex","position","compareEndPoints","transformIERangeToRange","ieRange","bi","_getIERange","getNative","Selection","frameElement","_bakIERange","getIERange","ex","rangeInBody","txtRange","selection","_cachedRange","getRange","_cachedStartElement","_cachedStartElementPath","getStartElementPath","isFocus","rangeCount","optimze","firstRange","getRangeAt","lastRange","_bakRange","min","getText","nativeSel","clearRange","_selectionChangeTimer","uid","setValue","tis","hasContents","allHtmlEnabled","getAllHtml","getContent","checkCurLang","lang","langReadied","langIsReady","Editor","shortcutkeys","inputRules","outputRules","setOpt","defaultOptions","loadServerConfig","langPath","plugin","registerCommand","getOpt","destroy","offsetWidth","delEditor","getStyleValue","initialFrameWidth","minFrameWidth","initialFrameHeight","minFrameHeight","zIndex","iframeCssUrl","initialStyle","customDomain","domain","overflow","_setup","geckoSel","contentEditable","spellcheck","_initEvents","autoSyncData","initialContent","autoClearinitialContent","oldExecCommand","execCommand","_setDefaultContent","setContent","focusInEnd","_selectionChange","fullscreen","ui","setFullScreen","_bindshortcutKeys","_bakNativeRange","setInterval","isShow","setHide","setDisabled","sync","formId","setHeight","notSetHeight","addshortcutkey","cmd","keyCode","which","$1","ctrlKey","metaKey","$2","$3","queryCommandState","notSetCursor","ignoreBlank","formatter","htmlparser","filterOutputRule","toHtml","headHtml","headHtmlForIE9","getPlainTxt","getContentTxt","isAppendTo","notFireSelectionchange","isCdataDiv","filterInputRule","enterTag","blur","nativeRng","_proxyDomEvent","stopPropagation","shiftKey","altKey","mouseX","mouseY","hackForMouseUp","clientX","clientY","bakGetIERange","moveToPoint","_callCmdFn","fnName","args","cmdFn","cmdName","notNeedUndo","__hasEnterExecCommand","ignoreContentChange","_ignoreContentChange","queryCommandValue","tags","reset","setEnabled","lastBk","bkqueryCommandState","bkqueryCommandValue","enable","except","disable","cont","setShow","hide","getLang","getContentLength","ingoneHtml","addInputRule","addOutputRule","getActionUrl","actionName","imageUrl","_url","autoClearEmptyNode","imagePopup","themePath","scaleEnabled","tableNativeEditInFF","fileNameFormat","showErrorMsg","msg","configUrl","isJsonp","_serverConfigLoaded","ajax","eval","responseText","isServerConfigLoaded","afterConfigReady","readyHandler","fnStr","creatAjaxRequest","doAjax","ajaxOptions","xhr","timeIsOut","defaultAjaxOptions","async","onsuccess","ajaxOpts","submitStr","abort","setRequestHeader","send","doJsonp","opts","callbackFnName","timer","matches","successhandler","scr","callbackField","timeOut","random","getCallBack","queryStr","createScriptTag","onTimeOut","exception","oncomplete","dataType","getJSONP","filterWord","isWordDocument","transUnit","filterPasteWord","marks","parts","uNode","notTransAttrs","notTransTagName","indentChar","breakChar","insertLine","begin","insertIndent","nodeToHtml","isText","isElement","isComment","attrhtml","getNodeById","getAttr","getNodesByTagName","nodeTraversal","createText","noTrans","htmlstr","tmpRoot","textStr","getData","cj","attrName","setAttr","attrVal","isObject","cssStyle","re_tag","re_attr","allowEmptyTags","needParentNode","needChild","htmlattr","needParentTag","hasParent","tmpParent","comment","currentIndex","nextIndex","currentParent","lastIndex","filterNode","rules","tmpVal","tmpAttrs","tmpCssStyle","_plugins","pluginName","oldOptionName","afterDisabled","optionName","execFn","_export","execName","run","exeFn","keymap","LocalStorage","getUserData","LOCAL_FILE","saveLocalData","getLocalData","addBehavior","ROOTKEY","setPreferences","getPreferences","removePreferences","tdParent","cdata_tag","cdata_data","last","tmpNodes","disabledTableInTable","notNeedFilter","filterRules","hadBreak","tmpLi","autoHeightEnabled","mergeEmptyline","removeEmptyline","textAlign","imageBlockLine","pasteFilter","clearFontSize","clearFontFamily","removeEmptyNode","removeTagNames","indent","indentValue","bdc2sb","tobdc","highlightCont","autotypeset","remainClass","remainTag","isLine","notEmpty","removeNotAttributeSpan","autotype","fontFamily","textIndent","pN","pNode","ToDBC","DBC2SB","fromCharCode","txtstring","readLocalOpts","cookieOpt","shortcutkey","submit","isSetColored","cssRuleId","stringToObj","substr","setBackground","orgFn","bindEvents","su","imagePath","bgObj","inputRule","outputRule","floatStyle","_src","border","hspace","vspace","defaultValue","justify","doJustify","bookmark2","common","cell","fonts","needCmd","needSetChild","mergeWithParent","bk","mergesibling","backgroundColor","spanParent","styleVal","optimize","doLink","rngClone","textValue","_href","ps","pe","as","deleteIframe","_iframe","notIncludeA","tagReg","removeFormatTags","removeFormatAttributes","isRedundantSpan","doRemove","bookmark1","getObj","startBlock","endBlock","blockquotes","doEnd","childs","bkEnd","curNode","print","w","notExchange","doParagraph","sourceCmdName","para","doDirectionality","forward","formatTime","hh","ii","ss","yyyy","yy","mm","filterTxtRules","brs","notNeedCodeQuery","help","undo","redo","searchreplace","preview","insertparagraph","elementpath","insertcode","inserthtml","selectall","fillchar","evtName","anchorname","anchor","ignores","notBreakTags","isHr","pageBreakTag","noshade","images","urlList","word_img","saveSceneTimer","maxUndoCount","maxInputCount","noNeedFillCharTags","orgState","compareAddr","indexA","indexB","compareRangeAddress","rngAddrA","rngAddrB","UndoManager","hasUndo","hasRedo","restore","scene","clearKey","getScene","rngAddress","notCompareRange","currentScene","lastScene","keycont","undoManger","exclude","inputType","isCollapsed","interalTimer","clearInterval","stopCmdUndo","startCmdUndo","initZeroClipboard","ZeroClipboard","debug","swfPath","client","zeroclipboard","setText","setHtml","alert","getClipboardData","pastebin","pi","pastebins","txtContent","htmlContent","getPureHtml","atr","di","divs","tmpP","metas","dirtyNodes","spans","retainOnlyLabelPasted","plainType","tmpAddress","transP","removeNode","pasteplain","customStyle","listToArray","listiconpath","maxListLevel","disablePInList","listStyle","insertorderedlist","insertunorderedlist","adjustListStyle","ignore","nodeStyleType","parentStyleType","styleIndex","setListStyle","paddingLeft","adjustList","ignoreEmpty","nextList","preList","getLi","customCss","pn","newChildrens","lastNode","autoTransWordToList","checkListType","unorderlisttype","orderlisttype","cacheNode","appendLi","preventAndSave","findList","parentList","nextLi","checkLevel","levelNum","closeList","parentLi","startParent","endParent","bko","modifyStart","modifyEnd","nodeStyle","tmpFrag","tmpfrag","hasBlock","tmpDiv","tmpDivs","sourceEditors","holder","onresize","setSelectionRange","dispose","codemirror","codeEditor","CodeMirror","tabMode","lineNumbers","lineWrapping","getWrapperElement","getScrollerElement","getCodeMirror","getValue","sourceEditor","orgSetContent","bakCssText","oldGetContent","bakAddress","sourceMode","createSourceEditor","sourceEditorFirst","oldQueryCommandState","codeMirrorJsUrl","codeMirrorCssUrl","hTag","doSave","startTd","endTd","Backspace","Tab","excludeTagNameForTabKey","tabSize","tabNode","autoClearTagName","elementUpdated","Scale","resizer","cover","prePos","startPos","init","dragId","hands","getDom","initStyle","initEvents","isDraging","_eventHandler","hand","proxy","updateContainerStyle","updateTargetElement","attachTo","_validScaledProp","prop","ele","wrap","isNaN","hideCover","showCover","editorPos","iframePos","targetObj","imgPos","borderLeftWidth","borderTopWidth","imageScale","imageScaleEnabled","_keyDownHandler","_mouseDownHandler","charCode","keyCodes","32","checkIsCludeLink","bakOverflow","currentHeight","isFullscreen","lastHeight","adjustHeight","enableAutoHeight","overflowY","disableAutoHeight","lastScrollY","onscroll","scrollY","topOffset","optsAutoFloatEnabled","autoFloatEnabled","toolbarBox","orgTop","uiUtils","LteIE6","placeHolder","defer_updateFloating","updateFloating","checkHasUI","getClientRect","fixIE6FixedPos","unsetFloating","autofloatMsg","docStyle","backgroundImage","backgroundAttachment","setFloating","toobarBoxPos","origalFloat","origalLeft","rect3","toolbarTopOffset","creatInsertStr","classname","ext","switchImgAndVideo","img2video","videoObjs","cl","vi","UETable","indexTable","selectedTds","cellsRange","showError","removeSelectedClass","addSelectedClass","getWidth","getTableCellAlignState","tempStatus","isSame","cellNode","currentState","getTableItemsByRange","getUETableBySelected","ueTable","getDefaultValue","tableBorder","tdPadding","tdBorder","tmpValue","borderMap","thin","medium","thick","insertRow","insertCell","getUETable","tdOrTable","cloneCell","ignoreMerge","keepPro","tmpCell","rowSpan","colSpan","borderLeftStyle","borderTopStyle","borderLeftColor","borderRightColor","borderRightWidth","borderTopColor","borderBottomColor","borderBottomWidth","getMaxRows","row","maxLen","currentMax","getMaxCols","cellRows","cellsNum","getCellColIndex","getHSideCell","previewRowIndex","previewColIndex","cellInfo","getCellInfo","beginColIndex","colIndex","endColIndex","colsNum","beginRowIndex","rowIndex","getCell","cellIndex","getTabNextCell","preRowIndex","nextCell","getVSideCell","ignoreRange","nextRowIndex","nextColIndex","endRowIndex","rowsNum","getSameEndPosCells","xOrY","returns","setCellContent","getSameStartPosXCells","dNum","tds","selectTds","startInfo","endInfo","rowInfo","numCols","deleteCell","getCellsRange","cellA","cellB","checkRange","tmpBeginRowIndex","tmpBeginColIndex","tmpEndRowIndex","tmpEndColIndex","cellAInfo","cellBInfo","getCells","clearSelected","tdHash","returnTds","setSelected","isFullRow","isFullCol","ths","getNextCell","getPreviewCell","moveContent","cellTo","cellFrom","mergeRight","rightColIndex","rightCellInfo","rightCell","mergeDown","downRowIndex","downCellInfo","downCell","mergeRange","leftTopCell","info","deleteRow","curIndex","sourceCell","isInsertTitle","replaceTdToTh","tableRow","infoRow","insertCellIndex","nextRow","preMerged","getPreviewMergedCellsNum","deleteTds","cacheMap","tmpRowIndex","tmpCellIndex","mergeTds","insertCol","preCell","backWidth","isInsertTitleCol","updateWidth","tmpWidth","deleteCol","tableRows","backTableWidth","backTdWidth","splitToCells","splitToRows","splitToCols","endRow","indexRow","endCol","isLastCell","getLastCell","cols","selectRow","selectTable","repeat","colorList","colors","getColor","removeBackground","UT","resetTdWidth","getTableWidth","tdsWidths","needIEHack","getSelectedArr","ut","createTable","tdWidth","numRows","tdvalign","defaultCols","defaultRows","firstParentBlock","tableWidth","valign","firstRow","lastRow","tableItems","maxRowNum","newCell","maxColNum","getAverageWidth","averageWidth","tb","sumWidth","tbAttr","ceil","setAverageWidth","getAverageHeight","averageHeight","rowNum","sumHeight","tdpadding","captionHeight","thHeight","captionArr","thArr","trs","setAverageHeight","vAlign","activeMenuCell","borderColor","bkColor","interlaced","classList","borderStyle","tableDragTimer","cellMinWidth","isInResizeBuffer","cellBorderWidth","offsetOfTableCell","singleClickState","userActionStatus","dblclickTime","orgGetText","currentTd","onDrag","onBorder","dragButton","dragOver","dragLine","dragTd","mousedown","removeStyleSize","replaceToProperty","getParentTdOrTh","mouseCoords","pageX","pageY","clientLeft","clientTop","mouseMoveEvent","isEditorDisabled","pos","abs","clearTableDragTimer","tableBorderDrag","toggleDraggableState","getPermissionX","getPermissionY","getRelation","inTableSide","cursor","cursorpath","toggleDragButton","createDragButton","doClick","doDblClick","onmouseover","onmouseout","capHeight","preTd","nextTd","mousePosY","draggable","mousePos","hideDragLine","getDragLine","showDragLineAt","elePos","mouseDownEvent","getTargetTd","tableClickHander","tableDbclickHandler","getCellsByMoveBorder","extractArray","oldWidth","newWidth","changeable","getTabcellSpace","borderActionHandler","mouseOverEvent","reconstruct","originArr","newObj","mouseUpEvent","dragTdPos","dragLinePos","changeColWidth","changeRowHeight","tar","setCellHeight","backHeight","lineHight","tmpHeight","changeValue","correctChangeValue","cellGroup","isContainMergeCell","temp","borderCells","tabRow","currIndex","tabCell","relatedCell","getTableCellWidth","direction","curCell","getTableCellOffset","offsetVal","prev","tabcellSpace","trow","tabcell","mirror","paddingSpace","tmpTabWidth","contenteditable","line","css","tablePos","cellPos","switchBorderColor","tableArr","cellWidth","cellHeight","tableCopyList","cloneTd","tables","wordBreak","onmousemove","tableDragable","endTdCol","endTdRow","getClass","currentRowIndex","ua","notCtrlKey","ratio","backWidths","datatat","cmdFun","lastState","lastValue","sortTable","sortByCellIndex","trArray","lastRowIndex","Fn","td1","td2","value1","value2","tr1","tr2","fragment","contextMenu","cleardoc","confirmclear","unlink","group","paragraph","subMenu","justifyleft","justifyright","justifycenter","justifyjustify","inserttable","deletetable","deleterow","deletecol","insertcol","insertcolnext","insertrow","insertrownext","insertcaption","deletecaption","inserttitle","deletetitle","inserttitlecol","deletetitlecol","mergecells","mergeright","mergedown","splittorows","splittocols","splittocells","averageDiseRow","averageDisCol","edittd","getDialog","edittable","setbordervisible","tablesort","enablesort","disablesort","borderbk","setcolor","unsetcolor","setbackground","unsetbackground","redandblue","threecolorgradient","aligntd","aligntable","tableleft","tablecenter","tableright","insertparagraphbefore","insertparagraphafter","getViewportOffsetByEvent","contextItems","subItem","getLabel","Menu","showAt","clip","shortcutMenu","customEvt","screenX","screenY","ShortCutMenu","isHidden","basestyles","names","addList","addFormat","imgT","_blockElm","findTextInString","searchStr","casesensitive","findTextBlockElm","methodName","findNTextInBlockElm","currentNode","currentNodeLength","searchReplace","startBlockNode","rngText","replaceStr","replaceText","rngStart","rngEnd","tmpObj","catcherLocalDomain","catcherActionUrl","catcherUrlPrefix","catcherFieldName","remoteImages","imgs","urls","host","DFS","do","hiddenContaioner","sectionList","sections","catchremoteimage","callbacks","$img","onCatchStart","oldSrc","newSrc","hiddenImgs","hiddenImg","sectionItem","onCatchComplete","onCatchError","snapplugin","getLocation","pathname","local","onSuccess","rs","snapscreenUrlPrefix","snapscreenImgAlign","callBackErrorMsg","saveSnapshot","_dialogs","front","createInsertStr","toEmbed","cssfloat","tnode","musicObj","sendAndInsertFile","fieldName","urlPrefix","maxSize","allowFiles","actionUrl","loadingHtml","errorHandler","successHandler","filetype","loadingId","loader","original","fileext","XMLHttpRequest","fd","FormData","append","er","getPasteImage","clipboardData","getDropImage","dataTransfer","files","FileReader","hasImg","getAsFile","tableNode","flagText","validData","tableDataFormat","firstRows","cellCount","Section","nextSection","previousSection","parentSection","getSection","getNodeFromAddress","bindMultiEvents","levels","levelFn","getSectionLevel","Directory","previous","tmpSection","sourceSection","targetSection","isAfter","targetAddress","isContainsAddress","addressTarget","isAfterStartAddress","isBeforeEndAddress","containerBtn","isLoaded","initUploadBtn","btnIframe","btnStyle","wrapper","btnIframeDoc","btnIframeBody","timestrap","contentDocument","contentWindow","imageFieldName","stateTimer","imageActionUrl","filename","showErrorLoader","formData","headerName","withCredentials","headerValue","imageUrlPrefix","serverParam","getFileIcon","maps","filelist","iconDir","magic","uidMagic","uidCount","hook","dg","_callbacks","createElementByHtml","getViewportElement","bcr","getViewportRect","viewportEl","innerWidth","innerHeight","fixedLayer","getFixedLayer","getEventOffset","frameEl","setGlobal","unsetGlobal","copyAttributes","tgt","attrNode","elA","elB","compareDocumentPosition","startDrag","startX","startY","handleMouseMove","ondragmove","cancelBubble","handleMouseUp","ondragstop","releaseCaptrue","releaseCapture","setCapture","ondragstart","layer","bindFixedLayer","updateFixedOffset","makeUnselectable","WebkitUserSelect","adjOffset","UIBase","uiName","initOptions","initUIBase","_globalKey","renderHtml","seatEl","postRender","getHtmlTpl","formatHtml","tpl","prefix","box","Separator","initSeparator","Mask","_fill","_onMouseDown","_onClick","vpRect","Popup","initPopup","allPopups","closeAllPopup","queryAutoHide","postHide","ANCHOR_CLASSES","SHADOW_RADIUS","_hidden","autoRender","canSideLeft","canSideUp","getContentHtmlTpl","_UIBase_postRender","captureWheel","captured","_height","_top","combox","ifr","wheelDelta","detail","_doAutoRender","mesureSize","fitSize","sized","__size","popBodyEl","showAnchor","hoz","showAnchorRect","adj","visibility","_show","sideLeft","sideUp","popSize","popEl","notNofity","ColorPicker","noColorText","genColorPicker","_onTableClick","_onTableOver","_onTableOut","_onPickNoColor","COLORS","TablePicker","initTablePicker","defaultNumRows","defaultNumCols","maxNumRows","maxNumCols","lengthOfCellSide","_UIBase_render","_track","sideLen","_onMouseOver","relatedTarget","fromElement","_onMouseOut","toElement","_onMouseMove","TPL_STATEFUL","Stateful","alwalysHoverable","Stateful_init","_Stateful_dGetHtmlTpl","Stateful_getHtmlTpl","Stateful_onMouseEnter","isDisabled","addState","Stateful_onMouseLeave","removeState","Stateful_onMouseOver","Stateful_onMouseOut","Stateful_onMouseDown","Stateful_onMouseUp","Stateful_postRender","hasState","getStateDom","isChecked","setChecked","checked","Button","btnName","cssRules","initButton","showIcon","showText","setTitle","SplitButton","initSplitButton","popup","setPopup","_onPopupShow","_onPopupHide","showPopup","_onArrowClick","_onButtonClick","ColorButton","initColorButton","onpickcolor","_onPickColor","onpicknocolor","_SplitButton_postRender","setColor","TableButton","initTableButton","onpicktable","_onPickTable","AutoTypeSetPicker","initAutoTypeSetPicker","textAlignInputName","imageBlockInputName","symbolConverInputName","mergeLine","delLine","removeFormat","alignment","imageFloat","removeFontsize","removeFontFamily","removeHtml","symbol","AutoTypeSetButton","initAutoTypeSetButton","getPara","ipt","editorId","ipts","attrValue","iptchild","iptChilds","selects","popupUI","btn","radioTd","radios","defalutSelect","checkboxs","CellAlignPicker","initSelected","initCellAlignPicker","middle","selected","selectedIndex","alignType","COUNT","tempClassName","tempIndex","tmpl","PastePicker","initPastePicker","_isTransfer","cur","screenHt","subPop","Toolbar","initToolbar","buff","initMenu","menuSeparator","initItems","getSeparator","MenuItem","createItem","_Popup_getContentHtmlTpl","_Popup_postRender","ownerMenu","clearItems","_showingTimer","_closingTimer","parentMenu","renderLabelHtml","delayShowSubMenu","delayHideSubMenu","hideSubMenu","_bakQueryAutoHide","tabIndex","showSubMenu","this_","Combox","initCombox","onbuttonclick","selectByIndex","setLabel","initValue","indexByValue","getLabelForUnknowValue","modalMask","dragMask","activeDialog","Dialog","autoReset","onok","oncancel","onclose","ok","holdScroll","initDialog","closeButton","closeDialog","initResizeEvent","buttons","__resizeTimer","dialogWrapNode","contentNode","wrapRect","contentRect","safeSetOffset","showAtCenter","_originalContext","overflowX","titleHeight","getContentHtml","contentHtml","iframeUrl","footHtml","_hide","dialogBodyStyle","_onTitlebarMouseDown","wrapNode","_onCloseButtonClick","MenuButton","initMenuButton","_value","MultiMenuPop","initMultiMenu","iframe_rendered","onshow","timeID","UI","allMenus","isSubMenuShow","initShortCutMenu","hideAllMenu","SPACE","initEvent","getSubMenuMark","eventType","wt","ht","distanceX","distanceY","setOpacity","relatedTgt","opacity","layerEle","hasContextmenu","fixedlayer","setPos","setPosByCxtMenu","Breakline","Message","initMessage","keepshow","setType","closer","getType","editorui","_Dialog","scrollX","iframeUrlMap","btnCmds","labelMap","causeByUi","uiReady","typeset","cmd2","dialogBtns","noOk","vals","mapUrl","unNeedCheckState","snapscreen","onselect","fontfamily","langLabel","fontsize","customstyle","langCs","ck","lineheight","ri","rowspacings","lists","_onMenuClick","isFullScreen","iconSpan","nodeStack","EditorUI","initEditorUI","_initToolbars","_actualFrameWidth","countFn","setCount","_scale","enableScale","disableScale","pastePop","isPaste","maximumWords","wordCountMsg","wordOverFlowMsg","errMsg","countDom","_onEditButtonClick","linkDialog","_onImgEditButtonClick","_onImgSetFloat","_setIframeAlign","frame","anchorEl","newFrame","_updateIframe","mapDialog","insertframeDialog","_onRemoveButtonClick","dialogs","dialogName","toolbarUis","toolbar","toolbarUi","toolbarItem","toolbarItemUi","itemUI","renderToolbarBoxHtml","showWordImageDialog","_fullscreen","_bakHtmlOverflow","_bakBodyOverflow","_bakAutoHeight","_bakScrollTop","_bakEditorContaninerWidth","_bakCssText","_bakCssText1","_updateFullScreen","scroll","triggerLayout","_updateElementPath","disableElementPath","enableElementPath","editorHolder","editorDocument","bottombar","scale","scalelayer","isMouseMove","minEditorHeight","minEditorWidth","scaleWidth","scaleHeight","down","move","up","clearSelection","fullScreen","timerId","updateFullScreenTime","showToolbarMsg","hideToolbarMsg","zoom","instances","oldRender","renderUI","newDiv","displays","styleWidth","getEditor","registerUI","_messageItems","updateHolderPos","toolbarbox","mid","getOrganizationUnits","getApplyList","getOrganizationUnitUsers","updateOrganizationUnit","createOrganizationUnit","addUsersToOrganizationUnit","userIds","organizationUnitId","removeUsersFromOU","approve","refuse","getOrganizationUnitCommentList","hideComment","showComment","deleteComment"],"mappings":"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C,UA1L9B,MAstdA,SAAYmS,GACV,2BACA,yBACA,0BAHF,CAAYA,MAAuB,KAMnC,SAAYC,GACV,iEACA,+EAFF,CAAYA,MAAgB,KAK5B,SAAYC,GACV,uBACA,mBACA,6BACA,yBACA,yBACA,2BACA,yBAPF,CAAYA,MAAc,KAU1B,SAAYC,GACV,uCACA,2CAFF,CAAYA,MAAgB,KAK5B,SAAYC,GACV,iBACA,iDACA,iDACA,+BACA,+BACA,qBACA,yCACA,yCACA,uBACA,mGACA,yFACA,6DACA,yCACA,+EACA,yEACA,uEACA,mEACA,iHACA,mGACA,yCACA,uEACA,6EACA,qDACA,+BACA,mCACA,2BACA,iBACA,uCACA,yCACA,+BACA,qDACA,+CACA,+CACA,uBACA,iDACA,mDACA,yBACA,6CACA,yBACA,yBACA,eACA,6CACA,2CACA,2BACA,2CA7CF,CAAYA,MAAkB,KAgD9B,SAAYC,GACV,qBACA,uBAFF,CAAYA,MAAc,KAK1B,SAAYC,GACV,yBACA,qBACA,uBACA,yBACA,qBALF,CAAYA,MAAmB,KAQ/B,SAAYC,GACV,6BACA,qBACA,iBACA,yBAJF,CAAYA,MAAQ,KAOpB,SAAYC,GACV,qBACA,iBAFF,CAAYA,MAAe,KAK3B,SAAYC,GACV,yBACA,yBAFF,CAAYA,MAAa,KAKzB,SAAYC,GACV,qBACA,mBACA,qBACA,yBAJF,CAAYA,MAAW,KAOvB,SAAYC,GACV,qBACA,aACA,6BACA,qBACA,uBALF,CAAYA,MAAU,KAQtB,SAAYC,GACV,yBACA,uBACA,yBACA,uCACA,mBACA,2CACA,mBAPF,CAAYA,MAAgB,KAU5B,SAAYC,GACV,yBACA,qBAFF,CAAYA,MAAS,KAKrB,SAAYC,GACV,qBACA,uBACA,yBACA,yBACA,qBALF,CAAYA,MAAW,KAQvB,SAAYC,GACV,eACA,iCACA,yDACA,6CACA,uCACA,+CACA,yDACA,2DACA,mEACA,yEACA,iEACA,6DACA,uCACA,+CACA,yDACA,iEACA,qEACA,+BACA,mCACA,2DACA,uEACA,iEACA,+CACA,iDACA,2BACA,uCACA,yCACA,qDA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","file":"js/app.f5194999.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"404\":\"404\",\"Activity\":\"Activity\",\"ActivityApplyDetail\":\"ActivityApplyDetail\",\"ActivityDetail~ActivityEdit\":\"ActivityDetail~ActivityEdit\",\"ActivityDetail\":\"ActivityDetail\",\"account\":\"account\",\"admin-ou\":\"admin-ou\",\"admin-permission\":\"admin-permission\",\"admin-role\":\"admin-role\",\"albumPhotosList\":\"albumPhotosList\",\"audit\":\"audit\",\"form\":\"form\",\"volunteer\":\"volunteer\",\"contentList~partnerInvite\":\"contentList~partnerInvite\",\"partnerInvite\":\"partnerInvite\",\"dashboard\":\"dashboard\",\"ActivityApplyList\":\"ActivityApplyList\",\"ActivityCheckIn\":\"ActivityCheckIn\",\"admin-user\":\"admin-user\",\"ActivityEdit\":\"ActivityEdit\",\"ouUserManager\":\"ouUserManager\",\"contentList\":\"contentList\",\"project\":\"project\",\"financeNew\":\"financeNew\",\"photoList\":\"photoList\",\"projectCustomForm\":\"projectCustomForm\",\"redirect\":\"redirect\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"404\":\"07e6814e\",\"Activity\":\"596ffa17\",\"ActivityApplyDetail\":\"d0345e82\",\"ActivityDetail~ActivityEdit\":\"62419130\",\"ActivityDetail\":\"d069771e\",\"account\":\"7971e699\",\"admin-ou\":\"ae3013fb\",\"admin-permission\":\"1ab49d4b\",\"admin-role\":\"f841eb16\",\"albumPhotosList\":\"2a301784\",\"audit\":\"2c7becff\",\"chunk-00f9c23d\":\"8b689bad\",\"chunk-05a9dd73\":\"322b3bfd\",\"chunk-068a9510\":\"ba9e4176\",\"chunk-068ac1fe\":\"f3de8654\",\"chunk-068b87bc\":\"f90bbbf0\",\"chunk-06a10c86\":\"5b6c5ac0\",\"chunk-06a32166\":\"fa526aff\",\"chunk-082f9581\":\"f93cfcfa\",\"chunk-2d0aa5b8\":\"b9bf862c\",\"chunk-46756ee6\":\"d6630514\",\"chunk-2b27cb10\":\"7434d2c6\",\"form\":\"79ffefc4\",\"chunk-7e67aeaa\":\"5fd545dc\",\"volunteer\":\"269f6184\",\"chunk-2d0d2fb1\":\"76879d09\",\"chunk-12ca870a\":\"8f61c755\",\"chunk-2c824eb8\":\"5e9ddee5\",\"chunk-2d0a3128\":\"79120489\",\"chunk-093adb39\":\"0c322c95\",\"chunk-32e66e83\":\"07bb070e\",\"chunk-535f01f9\":\"0b0404a6\",\"chunk-12e8d65c\":\"216ad95a\",\"chunk-1a0e2ce2\":\"e3d210de\",\"chunk-1a908dc7\":\"7608c831\",\"chunk-1f4f5b63\":\"f03c0bd1\",\"chunk-1fab32e0\":\"4495d481\",\"chunk-23a2001d\":\"22004849\",\"chunk-2924b902\":\"7f7c9b27\",\"chunk-2fc7f3e8\":\"3c276c6b\",\"chunk-45de9574\":\"9614b24a\",\"chunk-69fef2b2\":\"54ce5696\",\"chunk-4ebd6417\":\"91326d90\",\"chunk-539624e4\":\"3311d87a\",\"chunk-7495d131\":\"c82dc3dc\",\"chunk-7d9bd38a\":\"809b86f7\",\"contentList~partnerInvite\":\"cace942b\",\"partnerInvite\":\"4008b420\",\"chunk-93bb28b8\":\"c490a535\",\"chunk-b0d34cf8\":\"a446858b\",\"chunk-d75f4f14\":\"997ded3c\",\"chunk-2d0c0dd4\":\"397e109b\",\"chunk-2d0c2159\":\"f2e15139\",\"chunk-2d0d097d\":\"524de791\",\"chunk-2d5acdad\":\"77fcb648\",\"chunk-2ec87214\":\"2e4aeafd\",\"chunk-31346d45\":\"52c0f471\",\"chunk-45016c7a\":\"1152d680\",\"chunk-4c938bd3\":\"9fa9e402\",\"chunk-59757c56\":\"70bbe8af\",\"chunk-59758fee\":\"00689bdb\",\"chunk-5976e194\":\"d89dd17f\",\"chunk-59792328\":\"c9b4b0d4\",\"chunk-597a18a4\":\"bbbe4186\",\"chunk-597aae68\":\"8de339c7\",\"chunk-599ff46c\":\"ab57ff3d\",\"chunk-59a0d568\":\"ce7d6601\",\"chunk-59a27b44\":\"8c579cb8\",\"chunk-59a38430\":\"53c6dc37\",\"chunk-59a3eac6\":\"d4ba8bed\",\"chunk-59a810b0\":\"5eca2dec\",\"chunk-5cc78121\":\"d4d19ff5\",\"chunk-60db76bc\":\"c27a3c31\",\"dashboard\":\"4f933638\",\"chunk-6a0395bd\":\"f2284115\",\"chunk-6a2d0e7a\":\"fd99ef2f\",\"chunk-77c3ab92\":\"5b1a9386\",\"chunk-787d66a0\":\"97ac3837\",\"ActivityApplyList\":\"38be5f34\",\"ActivityCheckIn\":\"aa81473a\",\"chunk-0a7198b7\":\"0d09654e\",\"chunk-0a721a56\":\"397d122e\",\"chunk-0a723689\":\"c682e6ee\",\"chunk-0a72b0d9\":\"f6c24095\",\"chunk-0a732a62\":\"2f5844ee\",\"chunk-0a74cae5\":\"00bf3426\",\"chunk-0a893e7f\":\"2a8e9cee\",\"chunk-71f28a3e\":\"4b41a11e\",\"chunk-7b7d7be8\":\"c0431393\",\"chunk-b95a0e48\":\"baf741ed\",\"chunk-b95e19c4\":\"af5bafe3\",\"chunk-8d361610\":\"807619d2\",\"chunk-8e6706b4\":\"836efda7\",\"chunk-a0236ffa\":\"8bc20dfc\",\"chunk-a2d3aff6\":\"fee287ea\",\"chunk-b3805ab6\":\"f819205a\",\"admin-user\":\"42be4139\",\"ActivityEdit\":\"2595c32d\",\"chunk-0a717018\":\"4d5e662b\",\"chunk-0a73b621\":\"1507d448\",\"chunk-0a73dae2\":\"85fdc433\",\"chunk-0a742a9d\":\"c6577015\",\"chunk-0a8969d7\":\"1ecefe80\",\"chunk-1024b8d1\":\"4f5fb13d\",\"chunk-1996ff7a\":\"5bd8fcfc\",\"chunk-243d0bcb\":\"b2e266f9\",\"chunk-24479db4\":\"f9b5a95f\",\"ouUserManager\":\"d0983947\",\"chunk-355639f1\":\"d7cfb138\",\"chunk-4c93c593\":\"96add6c9\",\"chunk-507ca1da\":\"3c42e1b4\",\"chunk-5aa1917c\":\"b309dad7\",\"chunk-636b8298\":\"aff9486d\",\"chunk-6445a539\":\"4cfa83d0\",\"chunk-6e484b8f\":\"49a1c867\",\"chunk-7c7f3c7c\":\"2e1adc3b\",\"chunk-a035eac6\":\"c70f9b2a\",\"chunk-ccc32760\":\"d4bea8a2\",\"contentList\":\"87b8a62d\",\"project\":\"d7a8b77e\",\"chunk-4cd5b9c4\":\"f0863005\",\"financeNew\":\"fcdeec23\",\"photoList\":\"15cd2675\",\"projectCustomForm\":\"40a9ec85\",\"redirect\":\"f87b52f9\",\"welcome\":\"291d99b4\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"404\":1,\"ActivityApplyDetail\":1,\"ActivityDetail\":1,\"account\":1,\"admin-permission\":1,\"admin-role\":1,\"audit\":1,\"chunk-00f9c23d\":1,\"chunk-05a9dd73\":1,\"chunk-2b27cb10\":1,\"form\":1,\"volunteer\":1,\"chunk-093adb39\":1,\"chunk-32e66e83\":1,\"chunk-535f01f9\":1,\"chunk-12e8d65c\":1,\"chunk-1a0e2ce2\":1,\"chunk-1a908dc7\":1,\"chunk-1f4f5b63\":1,\"chunk-1fab32e0\":1,\"chunk-23a2001d\":1,\"chunk-2924b902\":1,\"chunk-2fc7f3e8\":1,\"chunk-45de9574\":1,\"chunk-69fef2b2\":1,\"chunk-4ebd6417\":1,\"chunk-539624e4\":1,\"chunk-7495d131\":1,\"chunk-7d9bd38a\":1,\"contentList~partnerInvite\":1,\"partnerInvite\":1,\"chunk-93bb28b8\":1,\"chunk-b0d34cf8\":1,\"chunk-d75f4f14\":1,\"chunk-2d5acdad\":1,\"chunk-2ec87214\":1,\"chunk-31346d45\":1,\"chunk-45016c7a\":1,\"chunk-5cc78121\":1,\"chunk-60db76bc\":1,\"dashboard\":1,\"chunk-6a0395bd\":1,\"chunk-77c3ab92\":1,\"chunk-787d66a0\":1,\"ActivityApplyList\":1,\"ActivityCheckIn\":1,\"chunk-71f28a3e\":1,\"chunk-7b7d7be8\":1,\"chunk-8d361610\":1,\"chunk-8e6706b4\":1,\"chunk-a0236ffa\":1,\"chunk-a2d3aff6\":1,\"chunk-b3805ab6\":1,\"admin-user\":1,\"ActivityEdit\":1,\"chunk-1024b8d1\":1,\"chunk-1996ff7a\":1,\"chunk-243d0bcb\":1,\"chunk-24479db4\":1,\"ouUserManager\":1,\"chunk-355639f1\":1,\"chunk-507ca1da\":1,\"chunk-5aa1917c\":1,\"chunk-636b8298\":1,\"chunk-6445a539\":1,\"chunk-6e484b8f\":1,\"chunk-7c7f3c7c\":1,\"chunk-a035eac6\":1,\"chunk-ccc32760\":1,\"contentList\":1,\"chunk-4cd5b9c4\":1,\"financeNew\":1,\"projectCustomForm\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"404\":\"404\",\"Activity\":\"Activity\",\"ActivityApplyDetail\":\"ActivityApplyDetail\",\"ActivityDetail~ActivityEdit\":\"ActivityDetail~ActivityEdit\",\"ActivityDetail\":\"ActivityDetail\",\"account\":\"account\",\"admin-ou\":\"admin-ou\",\"admin-permission\":\"admin-permission\",\"admin-role\":\"admin-role\",\"albumPhotosList\":\"albumPhotosList\",\"audit\":\"audit\",\"form\":\"form\",\"volunteer\":\"volunteer\",\"contentList~partnerInvite\":\"contentList~partnerInvite\",\"partnerInvite\":\"partnerInvite\",\"dashboard\":\"dashboard\",\"ActivityApplyList\":\"ActivityApplyList\",\"ActivityCheckIn\":\"ActivityCheckIn\",\"admin-user\":\"admin-user\",\"ActivityEdit\":\"ActivityEdit\",\"ouUserManager\":\"ouUserManager\",\"contentList\":\"contentList\",\"project\":\"project\",\"financeNew\":\"financeNew\",\"photoList\":\"photoList\",\"projectCustomForm\":\"projectCustomForm\",\"redirect\":\"redirect\",\"welcome\":\"welcome\"}[chunkId]||chunkId) + \".\" + {\"404\":\"b922ef60\",\"Activity\":\"31d6cfe0\",\"ActivityApplyDetail\":\"ae5d0cb5\",\"ActivityDetail~ActivityEdit\":\"31d6cfe0\",\"ActivityDetail\":\"a8c54de1\",\"account\":\"987bdb15\",\"admin-ou\":\"31d6cfe0\",\"admin-permission\":\"33dc4d0f\",\"admin-role\":\"897da9ca\",\"albumPhotosList\":\"31d6cfe0\",\"audit\":\"9d2497ee\",\"chunk-00f9c23d\":\"d20d83d6\",\"chunk-05a9dd73\":\"f3c09566\",\"chunk-068a9510\":\"31d6cfe0\",\"chunk-068ac1fe\":\"31d6cfe0\",\"chunk-068b87bc\":\"31d6cfe0\",\"chunk-06a10c86\":\"31d6cfe0\",\"chunk-06a32166\":\"31d6cfe0\",\"chunk-082f9581\":\"31d6cfe0\",\"chunk-2d0aa5b8\":\"31d6cfe0\",\"chunk-46756ee6\":\"31d6cfe0\",\"chunk-2b27cb10\":\"126db7b1\",\"form\":\"c9458da4\",\"chunk-7e67aeaa\":\"31d6cfe0\",\"volunteer\":\"87fdcb20\",\"chunk-2d0d2fb1\":\"31d6cfe0\",\"chunk-12ca870a\":\"31d6cfe0\",\"chunk-2c824eb8\":\"31d6cfe0\",\"chunk-2d0a3128\":\"31d6cfe0\",\"chunk-093adb39\":\"0ceba58f\",\"chunk-32e66e83\":\"ba1a68eb\",\"chunk-535f01f9\":\"f3f16c94\",\"chunk-12e8d65c\":\"c37df2b0\",\"chunk-1a0e2ce2\":\"ea6b65fb\",\"chunk-1a908dc7\":\"5f3a1a4d\",\"chunk-1f4f5b63\":\"a8614905\",\"chunk-1fab32e0\":\"1c14518f\",\"chunk-23a2001d\":\"cb5e80ea\",\"chunk-2924b902\":\"1c4a026c\",\"chunk-2fc7f3e8\":\"81046eae\",\"chunk-45de9574\":\"2eba8bd5\",\"chunk-69fef2b2\":\"53a6d421\",\"chunk-4ebd6417\":\"45a1a6a5\",\"chunk-539624e4\":\"91aa861c\",\"chunk-7495d131\":\"e518ba38\",\"chunk-7d9bd38a\":\"e09a80aa\",\"contentList~partnerInvite\":\"31b060b0\",\"partnerInvite\":\"09855dee\",\"chunk-93bb28b8\":\"5346c34c\",\"chunk-b0d34cf8\":\"b183f7a7\",\"chunk-d75f4f14\":\"fb734553\",\"chunk-2d0c0dd4\":\"31d6cfe0\",\"chunk-2d0c2159\":\"31d6cfe0\",\"chunk-2d0d097d\":\"31d6cfe0\",\"chunk-2d5acdad\":\"c529a631\",\"chunk-2ec87214\":\"92706481\",\"chunk-31346d45\":\"bbabd743\",\"chunk-45016c7a\":\"8d4daff8\",\"chunk-4c938bd3\":\"31d6cfe0\",\"chunk-59757c56\":\"31d6cfe0\",\"chunk-59758fee\":\"31d6cfe0\",\"chunk-5976e194\":\"31d6cfe0\",\"chunk-59792328\":\"31d6cfe0\",\"chunk-597a18a4\":\"31d6cfe0\",\"chunk-597aae68\":\"31d6cfe0\",\"chunk-599ff46c\":\"31d6cfe0\",\"chunk-59a0d568\":\"31d6cfe0\",\"chunk-59a27b44\":\"31d6cfe0\",\"chunk-59a38430\":\"31d6cfe0\",\"chunk-59a3eac6\":\"31d6cfe0\",\"chunk-59a810b0\":\"31d6cfe0\",\"chunk-5cc78121\":\"c529a631\",\"chunk-60db76bc\":\"5697084b\",\"dashboard\":\"1b82e807\",\"chunk-6a0395bd\":\"c529a631\",\"chunk-6a2d0e7a\":\"31d6cfe0\",\"chunk-77c3ab92\":\"1acbf30d\",\"chunk-787d66a0\":\"a56484f9\",\"ActivityApplyList\":\"c4445148\",\"ActivityCheckIn\":\"65ad743c\",\"chunk-0a7198b7\":\"31d6cfe0\",\"chunk-0a721a56\":\"31d6cfe0\",\"chunk-0a723689\":\"31d6cfe0\",\"chunk-0a72b0d9\":\"31d6cfe0\",\"chunk-0a732a62\":\"31d6cfe0\",\"chunk-0a74cae5\":\"31d6cfe0\",\"chunk-0a893e7f\":\"31d6cfe0\",\"chunk-71f28a3e\":\"42c419aa\",\"chunk-7b7d7be8\":\"7fb567c8\",\"chunk-b95a0e48\":\"31d6cfe0\",\"chunk-b95e19c4\":\"31d6cfe0\",\"chunk-8d361610\":\"0c0a50d8\",\"chunk-8e6706b4\":\"c5ce8de6\",\"chunk-a0236ffa\":\"9be12654\",\"chunk-a2d3aff6\":\"1c4a026c\",\"chunk-b3805ab6\":\"92867b22\",\"admin-user\":\"dc5e1a3b\",\"ActivityEdit\":\"cdf9c61d\",\"chunk-0a717018\":\"31d6cfe0\",\"chunk-0a73b621\":\"31d6cfe0\",\"chunk-0a73dae2\":\"31d6cfe0\",\"chunk-0a742a9d\":\"31d6cfe0\",\"chunk-0a8969d7\":\"31d6cfe0\",\"chunk-1024b8d1\":\"82d96661\",\"chunk-1996ff7a\":\"c529a631\",\"chunk-243d0bcb\":\"c529a631\",\"chunk-24479db4\":\"c529a631\",\"ouUserManager\":\"47d26d3f\",\"chunk-355639f1\":\"c529a631\",\"chunk-4c93c593\":\"31d6cfe0\",\"chunk-507ca1da\":\"c529a631\",\"chunk-5aa1917c\":\"c529a631\",\"chunk-636b8298\":\"c529a631\",\"chunk-6445a539\":\"ada43527\",\"chunk-6e484b8f\":\"c529a631\",\"chunk-7c7f3c7c\":\"c529a631\",\"chunk-a035eac6\":\"71f1570f\",\"chunk-ccc32760\":\"c529a631\",\"contentList\":\"2db81234\",\"project\":\"31d6cfe0\",\"chunk-4cd5b9c4\":\"04f617f3\",\"financeNew\":\"d33e7c6c\",\"photoList\":\"31d6cfe0\",\"projectCustomForm\":\"589803ee\",\"redirect\":\"31d6cfe0\",\"welcome\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/questionTopic/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/questionTopic/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/questionTopic/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/questionTopic/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/questionTopic/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/questionTopic/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","import Vue from 'vue'\r\nimport Vuex, {StoreOptions} from 'vuex'\r\n// import { IAppState } from './modules/app'\r\n// import { IUserState } from './modules/user'\r\nimport {UserModule} from './modules/user';\r\nimport {SettingsModule} from \"@/store/modules/settings\";\r\nimport {AppModule} from \"@/store/modules/app\";\r\nimport {PermissionModule} from '@/store/modules/permission';\r\n\r\n\r\nVue.use(Vuex)\r\n\r\ninterface StoreType {\r\n app: any\r\n user: any\r\n permission: any\r\n settings: any,\r\n enumValues: any\r\n}\r\n\r\n\r\n\r\n// Declare empty store first, dynamically register all modules later.\r\n\r\n\r\nexport default new Vuex.Store({});\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/inComeStatistics/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/inComeStatistics/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/inComeStatistics/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/inComeStatistics/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/inComeStatistics/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/inComeStatistics/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/question/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/question/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/question/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/question/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/question/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/question/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=dd50c8d2&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=dd50c8d2&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./logo.vue?vue&type=style&index=0&id=2eac6bd6&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./logo.vue?vue&type=style&index=0&id=2eac6bd6&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#ffd04b\"};","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/payrollRequisition/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/payrollRequisition/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/payrollRequisition/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/payrollRequisition/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/payrollRequisition/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/payrollRequisition/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#ffd04b\"};","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/Tenant/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/Tenant/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/Tenant/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/Tenant/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n 'delete': function(data) {\r\n return request({\r\n url: '/api/services/app/Tenant/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","/**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 12-6-12\r\n * Time: 下午5:02\r\n * To change this template use File | Settings | File Templates.\r\n */\r\nUE.I18N['zh-cn'] = {\r\n 'labelMap':{\r\n 'anchor':'锚点', 'undo':'撤销', 'redo':'重做', 'bold':'加粗', 'indent':'首行缩进', 'snapscreen':'截图',\r\n 'italic':'斜体', 'underline':'下划线', 'strikethrough':'删除线', 'subscript':'下标','fontborder':'字符边框',\r\n 'superscript':'上标', 'formatmatch':'格式刷', 'source':'源代码', 'blockquote':'引用',\r\n 'pasteplain':'纯文本粘贴模式', 'selectall':'全选', 'print':'打印', 'preview':'预览',\r\n 'horizontal':'分隔线', 'removeformat':'清除格式', 'time':'时间', 'date':'日期',\r\n 'unlink':'取消链接', 'insertrow':'前插入行', 'insertcol':'前插入列', 'mergeright':'右合并单元格', 'mergedown':'下合并单元格',\r\n 'deleterow':'删除行', 'deletecol':'删除列', 'splittorows':'拆分成行',\r\n 'splittocols':'拆分成列', 'splittocells':'完全拆分单元格','deletecaption':'删除表格标题','inserttitle':'插入标题',\r\n 'mergecells':'合并多个单元格', 'deletetable':'删除表格', 'cleardoc':'清空文档','insertparagraphbeforetable':\"表格前插入行\",'insertcode':'代码语言',\r\n 'fontfamily':'字体', 'fontsize':'字号', 'paragraph':'段落格式', 'simpleupload':'单图上传', 'insertimage':'多图上传','edittable':'表格属性','edittd':'单元格属性', 'link':'超链接',\r\n 'emotion':'表情', 'spechars':'特殊字符', 'searchreplace':'查询替换', 'map':'Baidu地图', 'gmap':'Google地图',\r\n 'insertvideo':'视频', 'help':'帮助', 'justifyleft':'居左对齐', 'justifyright':'居右对齐', 'justifycenter':'居中对齐',\r\n 'justifyjustify':'两端对齐', 'forecolor':'字体颜色', 'backcolor':'背景色', 'insertorderedlist':'有序列表',\r\n 'insertunorderedlist':'无序列表', 'fullscreen':'全屏', 'directionalityltr':'从左向右输入', 'directionalityrtl':'从右向左输入',\r\n 'rowspacingtop':'段前距', 'rowspacingbottom':'段后距', 'pagebreak':'分页', 'insertframe':'插入Iframe', 'imagenone':'默认',\r\n 'imageleft':'左浮动', 'imageright':'右浮动', 'attachment':'附件', 'imagecenter':'居中', 'wordimage':'图片转存',\r\n 'lineheight':'行间距','edittip' :'编辑提示','customstyle':'自定义标题', 'autotypeset':'自动排版',\r\n 'webapp':'百度应用','touppercase':'字母大写', 'tolowercase':'字母小写','background':'背景','template':'模板','scrawl':'涂鸦',\r\n 'music':'音乐','inserttable':'插入表格','drafts': '从草稿箱加载', 'charts': '图表'\r\n },\r\n 'insertorderedlist':{\r\n 'num':'1,2,3...',\r\n 'num1':'1),2),3)...',\r\n 'num2':'(1),(2),(3)...',\r\n 'cn':'一,二,三....',\r\n 'cn1':'一),二),三)....',\r\n 'cn2':'(一),(二),(三)....',\r\n 'decimal':'1,2,3...',\r\n 'lower-alpha':'a,b,c...',\r\n 'lower-roman':'i,ii,iii...',\r\n 'upper-alpha':'A,B,C...',\r\n 'upper-roman':'I,II,III...'\r\n },\r\n 'insertunorderedlist':{\r\n 'circle':'○ 大圆圈',\r\n 'disc':'● 小黑点',\r\n 'square':'■ 小方块 ',\r\n 'dash' :'— 破折号',\r\n 'dot':' 。 小圆圈'\r\n },\r\n 'paragraph':{'p':'段落', 'h1':'标题 1', 'h2':'标题 2', 'h3':'标题 3', 'h4':'标题 4', 'h5':'标题 5', 'h6':'标题 6'},\r\n 'fontfamily':{\r\n 'songti':'宋体',\r\n 'kaiti':'楷体',\r\n 'heiti':'黑体',\r\n 'lishu':'隶书',\r\n 'yahei':'微软雅黑',\r\n 'andaleMono':'andale mono',\r\n 'arial': 'arial',\r\n 'arialBlack':'arial black',\r\n 'comicSansMs':'comic sans ms',\r\n 'impact':'impact',\r\n 'timesNewRoman':'times new roman'\r\n },\r\n 'customstyle':{\r\n 'tc':'标题居中',\r\n 'tl':'标题居左',\r\n 'im':'强调',\r\n 'hi':'明显强调'\r\n },\r\n 'autoupload': {\r\n 'exceedSizeError': '文件大小超出限制',\r\n 'exceedTypeError': '文件格式不允许',\r\n 'jsonEncodeError': '服务器返回格式错误',\r\n 'loading':\"正在上传...\",\r\n 'loadError':\"上传错误\",\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'\r\n },\r\n 'simpleupload':{\r\n 'exceedSizeError': '文件大小超出限制',\r\n 'exceedTypeError': '文件格式不允许',\r\n 'jsonEncodeError': '服务器返回格式错误',\r\n 'loading':\"正在上传...\",\r\n 'loadError':\"上传错误\",\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'\r\n },\r\n 'elementPathTip':\"元素路径\",\r\n 'wordCountTip':\"字数统计\",\r\n 'wordCountMsg':'当前已输入{#count}个字符, 您还可以输入{#leave}个字符。 ',\r\n 'wordOverFlowMsg':'字数超出最大允许值,服务器可能拒绝保存!',\r\n 'ok':\"确认\",\r\n 'cancel':\"取消\",\r\n 'closeDialog':\"关闭对话框\",\r\n 'tableDrag':\"表格拖动必须引入uiUtils.js文件!\",\r\n 'autofloatMsg':\"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!\",\r\n 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!',\r\n 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!',\r\n 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!',\r\n 'snapScreen_plugin':{\r\n 'browserMsg':\"仅支持IE浏览器!\",\r\n 'callBackErrorMsg':\"服务器返回数据有误,请检查配置项之后重试。\",\r\n 'uploadErrorMsg':\"截图上传失败,请检查服务器端环境! \"\r\n },\r\n 'insertcode':{\r\n 'as3':'ActionScript 3',\r\n 'bash':'Bash/Shell',\r\n 'cpp':'C/C++',\r\n 'css':'CSS',\r\n 'cf':'ColdFusion',\r\n 'c#':'C#',\r\n 'delphi':'Delphi',\r\n 'diff':'Diff',\r\n 'erlang':'Erlang',\r\n 'groovy':'Groovy',\r\n 'html':'HTML',\r\n 'java':'Java',\r\n 'jfx':'JavaFX',\r\n 'js':'JavaScript',\r\n 'pl':'Perl',\r\n 'php':'PHP',\r\n 'plain':'Plain Text',\r\n 'ps':'PowerShell',\r\n 'python':'Python',\r\n 'ruby':'Ruby',\r\n 'scala':'Scala',\r\n 'sql':'SQL',\r\n 'vb':'Visual Basic',\r\n 'xml':'XML'\r\n },\r\n 'confirmClear':\"确定清空当前文档么?\",\r\n 'contextMenu':{\r\n 'delete':\"删除\",\r\n 'selectall':\"全选\",\r\n 'deletecode':\"删除代码\",\r\n 'cleardoc':\"清空文档\",\r\n 'confirmclear':\"确定清空当前文档么?\",\r\n 'unlink':\"删除超链接\",\r\n 'paragraph':\"段落格式\",\r\n 'edittable':\"表格属性\",\r\n 'aligntd':\"单元格对齐方式\",\r\n 'aligntable':'表格对齐方式',\r\n 'tableleft':'左浮动',\r\n 'tablecenter':'居中显示',\r\n 'tableright':'右浮动',\r\n 'edittd':\"单元格属性\",\r\n 'setbordervisible':'设置表格边线可见',\r\n 'justifyleft':'左对齐',\r\n 'justifyright':'右对齐',\r\n 'justifycenter':'居中对齐',\r\n 'justifyjustify':'两端对齐',\r\n 'table':\"表格\",\r\n 'inserttable':'插入表格',\r\n 'deletetable':\"删除表格\",\r\n 'insertparagraphbefore':\"前插入段落\",\r\n 'insertparagraphafter':'后插入段落',\r\n 'deleterow':\"删除当前行\",\r\n 'deletecol':\"删除当前列\",\r\n 'insertrow':\"前插入行\",\r\n 'insertcol':\"左插入列\",\r\n 'insertrownext':'后插入行',\r\n 'insertcolnext':'右插入列',\r\n 'insertcaption':'插入表格名称',\r\n 'deletecaption':'删除表格名称',\r\n 'inserttitle':'插入表格标题行',\r\n 'deletetitle':'删除表格标题行',\r\n 'inserttitlecol':'插入表格标题列',\r\n 'deletetitlecol':'删除表格标题列',\r\n 'averageDiseRow':'平均分布各行',\r\n 'averageDisCol':'平均分布各列',\r\n 'mergeright':\"向右合并\",\r\n 'mergeleft':\"向左合并\",\r\n 'mergedown':\"向下合并\",\r\n 'mergecells':\"合并单元格\",\r\n 'splittocells':\"完全拆分单元格\",\r\n 'splittocols':\"拆分成列\",\r\n 'splittorows':\"拆分成行\",\r\n 'tablesort':'表格排序',\r\n 'enablesort':'设置表格可排序',\r\n 'disablesort':'取消表格可排序',\r\n 'reversecurrent':'逆序当前',\r\n 'orderbyasc':'按ASCII字符升序',\r\n 'reversebyasc':'按ASCII字符降序',\r\n 'orderbynum':'按数值大小升序',\r\n 'reversebynum':'按数值大小降序',\r\n 'borderbk':'边框底纹',\r\n 'setcolor':'表格隔行变色',\r\n 'unsetcolor':'取消表格隔行变色',\r\n 'setbackground':'选区背景隔行',\r\n 'unsetbackground':'取消选区背景',\r\n 'redandblue':'红蓝相间',\r\n 'threecolorgradient':'三色渐变',\r\n 'copy':\"复制(Ctrl + c)\",\r\n 'copymsg': \"浏览器不支持,请使用 'Ctrl + c'\",\r\n 'paste':\"粘贴(Ctrl + v)\",\r\n 'pastemsg': \"浏览器不支持,请使用 'Ctrl + v'\"\r\n },\r\n 'copymsg': \"浏览器不支持,请使用 'Ctrl + c'\",\r\n 'pastemsg': \"浏览器不支持,请使用 'Ctrl + v'\",\r\n 'anthorMsg':\"链接\",\r\n 'clearColor':'清空颜色',\r\n 'standardColor':'标准颜色',\r\n 'themeColor':'主题颜色',\r\n 'property':'属性',\r\n 'default':'默认',\r\n 'modify':'修改',\r\n 'justifyleft':'左对齐',\r\n 'justifyright':'右对齐',\r\n 'justifycenter':'居中',\r\n 'justify':'默认',\r\n 'clear':'清除',\r\n 'anchorMsg':'锚点',\r\n 'delete':'删除',\r\n 'clickToUpload':\"点击上传\",\r\n 'unset':'尚未设置语言文件',\r\n 't_row':'行',\r\n 't_col':'列',\r\n 'more':'更多',\r\n 'pasteOpt':'粘贴选项',\r\n 'pasteSourceFormat':\"保留源格式\",\r\n 'tagFormat':'只保留标签',\r\n 'pasteTextFormat':'只保留文本',\r\n 'autoTypeSet':{\r\n 'mergeLine':\"合并空行\",\r\n 'delLine':\"清除空行\",\r\n 'removeFormat':\"清除格式\",\r\n 'indent':\"首行缩进\",\r\n 'alignment':\"对齐方式\",\r\n 'imageFloat':\"图片浮动\",\r\n 'removeFontsize':\"清除字号\",\r\n 'removeFontFamily':\"清除字体\",\r\n 'removeHtml':\"清除冗余HTML代码\",\r\n 'pasteFilter':\"粘贴过滤\",\r\n 'run':\"执行\",\r\n 'symbol':'符号转换',\r\n 'bdc2sb':'全角转半角',\r\n 'tobdc':'半角转全角'\r\n },\r\n\r\n 'background':{\r\n 'static':{\r\n 'lang_background_normal':'背景设置',\r\n 'lang_background_local':'在线图片',\r\n 'lang_background_set':'选项',\r\n 'lang_background_none':'无背景色',\r\n 'lang_background_colored':'有背景色',\r\n 'lang_background_color':'颜色设置',\r\n 'lang_background_netimg':'网络图片',\r\n 'lang_background_align':'对齐方式',\r\n 'lang_background_position':'精确定位',\r\n 'repeatType':{'options':[\"居中\", \"横向重复\", \"纵向重复\", \"平铺\",\"自定义\"]}\r\n\r\n },\r\n 'noUploadImage':\"当前未上传过任何图片!\",\r\n 'toggleSelect':\"单击可切换选中状态\\n原图尺寸: \"\r\n },\r\n //===============dialog i18N=======================\r\n 'insertimage':{\r\n 'static':{\r\n 'lang_tab_remote':\"插入图片\", //节点\r\n 'lang_tab_upload':\"本地上传\",\r\n 'lang_tab_online':\"在线管理\",\r\n 'lang_tab_search':\"图片搜索\",\r\n 'lang_input_url':\"地 址:\",\r\n 'lang_input_size':\"大 小:\",\r\n 'lang_input_width':\"宽度\",\r\n 'lang_input_height':\"高度\",\r\n 'lang_input_border':\"边 框:\",\r\n 'lang_input_vhspace':\"边 距:\",\r\n 'lang_input_title':\"描 述:\",\r\n 'lang_input_align':'图片浮动方式:',\r\n 'lang_imgLoading':\" 图片加载中……\",\r\n 'lang_start_upload':\"开始上传\",\r\n 'lock':{'title':\"锁定宽高比例\"}, //属性\r\n 'searchType':{'title':\"图片类型\", 'options':[\"新闻\", \"壁纸\", \"表情\", \"头像\"]}, //select的option\r\n 'searchTxt':{'value':\"请输入搜索关键词\"},\r\n 'searchBtn':{'value':\"百度一下\"},\r\n 'searchReset':{'value':\"清空搜索\"},\r\n 'noneAlign':{'title':'无浮动'},\r\n 'leftAlign':{'title':'左浮动'},\r\n 'rightAlign':{'title':'右浮动'},\r\n 'centerAlign':{'title':'居中独占一行'}\r\n },\r\n 'uploadSelectFile':'点击选择图片',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'uploadNoPreview':'不能预览',\r\n 'updateStatusReady': '选中_张图片,共_KB。',\r\n 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败',\r\n 'updateStatusFinish': '共_张(_KB),_张上传成功',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错',\r\n 'remoteLockError':\"宽高不正确,不能所定比例\",\r\n 'numError':\"请输入正确的长度或者宽度值!例如:123,400\",\r\n 'imageUrlError':\"不允许的图片格式或者图片域!\",\r\n 'imageLoadError':\"图片加载失败!请检查链接地址或网络状态!\",\r\n 'searchRemind':\"请输入搜索关键词\",\r\n 'searchLoading':\"图片加载中,请稍后……\",\r\n 'searchRetry':\" :( ,抱歉,没有找到图片!请重试一次!\"\r\n },\r\n 'attachment':{\r\n 'static':{\r\n 'lang_tab_upload': '上传附件',\r\n 'lang_tab_online': '在线附件',\r\n 'lang_start_upload':\"开始上传\",\r\n 'lang_drop_remind':\"可以将文件拖到这里,单次最多可选100个文件\"\r\n },\r\n 'uploadSelectFile':'点击选择文件',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'updateStatusReady': '选中_个文件,共_KB。',\r\n 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败',\r\n 'updateStatusFinish': '共_个(_KB),_个上传成功',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错'\r\n },\r\n 'insertvideo':{\r\n 'static':{\r\n 'lang_tab_insertV':\"插入视频\",\r\n 'lang_tab_searchV':\"搜索视频\",\r\n 'lang_tab_uploadV':\"上传视频\",\r\n 'lang_video_url':\"视频网址\",\r\n 'lang_video_size':\"视频尺寸\",\r\n 'lang_videoW':\"宽度\",\r\n 'lang_videoH':\"高度\",\r\n 'lang_alignment':\"对齐方式\",\r\n 'videoSearchTxt':{'value':\"请输入搜索关键字!\"},\r\n 'videoType':{'options':[\"全部\", \"热门\", \"娱乐\", \"搞笑\", \"体育\", \"科技\", \"综艺\"]},\r\n 'videoSearchBtn':{'value':\"百度一下\"},\r\n 'videoSearchReset':{'value':\"清空结果\"},\r\n\r\n 'lang_input_fileStatus':' 当前未上传文件',\r\n 'startUpload':{'style':\"background:url(upload.png) no-repeat;\"},\r\n\r\n 'lang_upload_size':\"视频尺寸\",\r\n 'lang_upload_width':\"宽度\",\r\n 'lang_upload_height':\"高度\",\r\n 'lang_upload_alignment':\"对齐方式\",\r\n 'lang_format_advice':\"建议使用mp4格式.\"\r\n\r\n },\r\n 'numError':\"请输入正确的数值,如123,400\",\r\n 'floatLeft':\"左浮动\",\r\n 'floatRight':\"右浮动\",\r\n '\"default\"':\"默认\",\r\n 'block':\"独占一行\",\r\n 'urlError':\"输入的视频地址有误,请检查后再试!\",\r\n 'loading':\"  视频加载中,请等待……\",\r\n 'clickToSelect':\"点击选中\",\r\n 'goToSource':'访问源视频',\r\n 'noVideo':\"    抱歉,找不到对应的视频,请重试!\",\r\n\r\n 'browseFiles':'浏览文件',\r\n 'uploadSuccess':'上传成功!',\r\n 'delSuccessFile':'从成功队列中移除',\r\n 'delFailSaveFile':'移除保存失败文件',\r\n 'statusPrompt':' 个文件已上传! ',\r\n 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!',\r\n 'flashLoadingError':'Flash加载失败!请检查路径或网络状态',\r\n 'fileUploadReady':'等待上传……',\r\n 'delUploadQueue':'从上传队列中移除',\r\n 'limitPrompt1':'单次不能选择超过',\r\n 'limitPrompt2':'个文件!请重新选择!',\r\n 'delFailFile':'移除失败文件',\r\n 'fileSizeLimit':'文件大小超出限制!',\r\n 'emptyFile':'空文件无法上传!',\r\n 'fileTypeError':'文件类型不允许!',\r\n 'unknownError':'未知错误!',\r\n 'fileUploading':'上传中,请等待……',\r\n 'cancelUpload':'取消上传',\r\n 'netError':'网络错误',\r\n 'failUpload':'上传失败!',\r\n 'serverIOError':'服务器IO错误!',\r\n 'noAuthority':'无权限!',\r\n 'fileNumLimit':'上传个数限制',\r\n 'failCheck':'验证失败,本次上传被跳过!',\r\n 'fileCanceling':'取消中,请等待……',\r\n 'stopUploading':'上传已停止……',\r\n\r\n 'uploadSelectFile':'点击选择文件',\r\n 'uploadAddFile':'继续添加',\r\n 'uploadStart':'开始上传',\r\n 'uploadPause':'暂停上传',\r\n 'uploadContinue':'继续上传',\r\n 'uploadRetry':'重试上传',\r\n 'uploadDelete':'删除',\r\n 'uploadTurnLeft':'向左旋转',\r\n 'uploadTurnRight':'向右旋转',\r\n 'uploadPreview':'预览中',\r\n 'updateStatusReady': '选中_个文件,共_KB。',\r\n 'updateStatusConfirm': '成功上传_个,_个失败',\r\n 'updateStatusFinish': '共_个(_KB),_个成功上传',\r\n 'updateStatusError': ',_张上传失败。',\r\n 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。',\r\n 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!',\r\n 'errorExceedSize':'文件大小超出',\r\n 'errorFileType':'文件格式不允许',\r\n 'errorInterrupt':'文件传输中断',\r\n 'errorUploadRetry':'上传失败,请重试',\r\n 'errorHttp':'http请求错误',\r\n 'errorServerUpload':'服务器返回出错'\r\n },\r\n 'webapp':{\r\n 'tip1':\"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!\",\r\n 'tip2':\"申请完成之后请至ueditor.config.js中配置获得的appkey! \",\r\n 'applyFor':\"点此申请\",\r\n 'anthorApi':\"百度API\"\r\n },\r\n 'template':{\r\n 'static':{\r\n 'lang_template_bkcolor':'背景颜色',\r\n 'lang_template_clear' : '保留原有内容',\r\n 'lang_template_select' : '选择模板'\r\n },\r\n 'blank':\"空白文档\",\r\n 'blog':\"博客文章\",\r\n 'resume':\"个人简历\",\r\n 'richText':\"图文混排\",\r\n 'sciPapers':\"科技论文\"\r\n\r\n\r\n },\r\n 'scrawl':{\r\n 'static':{\r\n 'lang_input_previousStep':\"上一步\",\r\n 'lang_input_nextsStep':\"下一步\",\r\n 'lang_input_clear':'清空',\r\n 'lang_input_addPic':'添加背景',\r\n 'lang_input_ScalePic':'缩放背景',\r\n 'lang_input_removePic':'删除背景',\r\n 'J_imgTxt':{title:'添加背景图片'}\r\n },\r\n 'noScarwl':\"尚未作画,白纸一张~\",\r\n 'scrawlUpLoading':\"涂鸦上传中,别急哦~\",\r\n 'continueBtn':\"继续\",\r\n 'imageError':\"糟糕,图片读取失败了!\",\r\n 'backgroundUploading':'背景图片上传中,别急哦~'\r\n },\r\n 'music':{\r\n 'static':{\r\n 'lang_input_tips':\"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!\",\r\n 'J_searchBtn':{value:'搜索歌曲'}\r\n },\r\n 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。',\r\n 'chapter':'歌曲',\r\n 'singer':'歌手',\r\n 'special':'专辑',\r\n 'listenTest':'试听'\r\n },\r\n 'anchor':{\r\n 'static':{\r\n 'lang_input_anchorName':'锚点名字:'\r\n }\r\n },\r\n 'charts':{\r\n 'static':{\r\n 'lang_data_source':'数据源:',\r\n 'lang_chart_format': '图表格式:',\r\n 'lang_data_align': '数据对齐方式',\r\n 'lang_chart_align_same': '数据源与图表X轴Y轴一致',\r\n 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反',\r\n 'lang_chart_title': '图表标题',\r\n 'lang_chart_main_title': '主标题:',\r\n 'lang_chart_sub_title': '子标题:',\r\n 'lang_chart_x_title': 'X轴标题:',\r\n 'lang_chart_y_title': 'Y轴标题:',\r\n 'lang_chart_tip': '提示文字',\r\n 'lang_cahrt_tip_prefix': '提示文字前缀:',\r\n 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀',\r\n 'lang_chart_data_unit': '数据单位',\r\n 'lang_chart_data_unit_title': '单位:',\r\n 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃',\r\n 'lang_chart_type': '图表类型:',\r\n 'lang_prev_btn': '上一个',\r\n 'lang_next_btn': '下一个'\r\n }\r\n },\r\n 'emotion':{\r\n 'static':{\r\n 'lang_input_choice':'精选',\r\n 'lang_input_Tuzki':'兔斯基',\r\n 'lang_input_BOBO':'BOBO',\r\n 'lang_input_lvdouwa':'绿豆蛙',\r\n 'lang_input_babyCat':'baby猫',\r\n 'lang_input_bubble':'泡泡',\r\n 'lang_input_youa':'有啊'\r\n }\r\n },\r\n 'gmap':{\r\n 'static':{\r\n 'lang_input_address':'地址',\r\n 'lang_input_search':'搜索',\r\n 'address':{value:\"北京\"}\r\n },\r\n searchError:'无法定位到该地址!'\r\n },\r\n 'help':{\r\n 'static':{\r\n 'lang_input_about':'关于UEditor',\r\n 'lang_input_shortcuts':'快捷键',\r\n 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。',\r\n 'lang_Txt_shortcuts':'快捷键',\r\n 'lang_Txt_func':'功能',\r\n 'lang_Txt_bold':'给选中字设置为加粗',\r\n 'lang_Txt_copy':'复制选中内容',\r\n 'lang_Txt_cut':'剪切选中内容',\r\n 'lang_Txt_Paste':'粘贴',\r\n 'lang_Txt_undo':'重新执行上次操作',\r\n 'lang_Txt_redo':'撤销上一次操作',\r\n 'lang_Txt_italic':'给选中字设置为斜体',\r\n 'lang_Txt_underline':'给选中字加下划线',\r\n 'lang_Txt_selectAll':'全部选中',\r\n 'lang_Txt_visualEnter':'软回车',\r\n 'lang_Txt_fullscreen':'全屏'\r\n }\r\n },\r\n 'insertframe':{\r\n 'static':{\r\n 'lang_input_address':'地址:',\r\n 'lang_input_width':'宽度:',\r\n 'lang_input_height':'高度:',\r\n 'lang_input_isScroll':'允许滚动条:',\r\n 'lang_input_frameborder':'显示框架边框:',\r\n 'lang_input_alignMode':'对齐方式:',\r\n 'align':{title:\"对齐方式\", options:[\"默认\", \"左对齐\", \"右对齐\", \"居中\"]}\r\n },\r\n 'enterAddress':'请输入地址!'\r\n },\r\n 'link':{\r\n 'static':{\r\n 'lang_input_text':'文本内容:',\r\n 'lang_input_url':'链接地址:',\r\n 'lang_input_title':'标题:',\r\n 'lang_input_target':'是否在新窗口打开:'\r\n },\r\n 'validLink':'只支持选中一个链接时生效',\r\n 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀'\r\n },\r\n 'map':{\r\n 'static':{\r\n lang_city:\"城市\",\r\n lang_address:\"地址\",\r\n city:{value:\"北京\"},\r\n lang_search:\"搜索\",\r\n lang_dynamicmap:\"插入动态地图\"\r\n },\r\n cityMsg:\"请选择城市\",\r\n errorMsg:\"抱歉,找不到该位置!\"\r\n },\r\n 'searchreplace':{\r\n 'static':{\r\n lang_tab_search:\"查找\",\r\n lang_tab_replace:\"替换\",\r\n lang_search1:\"查找\",\r\n lang_search2:\"查找\",\r\n lang_replace:\"替换\",\r\n lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”',\r\n lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”',\r\n lang_case_sensitive1:\"区分大小写\",\r\n lang_case_sensitive2:\"区分大小写\",\r\n nextFindBtn:{value:\"下一个\"},\r\n preFindBtn:{value:\"上一个\"},\r\n nextReplaceBtn:{value:\"下一个\"},\r\n preReplaceBtn:{value:\"上一个\"},\r\n repalceBtn:{value:\"替换\"},\r\n repalceAllBtn:{value:\"全部替换\"}\r\n },\r\n getEnd:\"已经搜索到文章末尾!\",\r\n getStart:\"已经搜索到文章头部\",\r\n countMsg:\"总共替换了{#count}处!\"\r\n },\r\n 'snapscreen':{\r\n 'static':{\r\n lang_showMsg:\"截图功能需要首先安装UEditor截图插件! \",\r\n lang_download:\"点此下载\",\r\n lang_step1:\"第一步,下载UEditor截图插件并运行安装。\",\r\n lang_step2:\"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!\"\r\n }\r\n },\r\n 'spechars':{\r\n 'static':{},\r\n tsfh:\"特殊字符\",\r\n lmsz:\"罗马字符\",\r\n szfh:\"数学字符\",\r\n rwfh:\"日文字符\",\r\n xlzm:\"希腊字母\",\r\n ewzm:\"俄文字符\",\r\n pyzm:\"拼音字母\",\r\n yyyb:\"英语音标\",\r\n zyzf:\"其他\"\r\n },\r\n 'edittable':{\r\n 'static':{\r\n 'lang_tableStyle':'表格样式',\r\n 'lang_insertCaption':'添加表格名称行',\r\n 'lang_insertTitle':'添加表格标题行',\r\n 'lang_insertTitleCol':'添加表格标题列',\r\n 'lang_orderbycontent':\"使表格内容可排序\",\r\n 'lang_tableSize':'自动调整表格尺寸',\r\n 'lang_autoSizeContent':'按表格文字自适应',\r\n 'lang_autoSizePage':'按页面宽度自适应',\r\n 'lang_example':'示例',\r\n 'lang_borderStyle':'表格边框',\r\n 'lang_color':'颜色:'\r\n },\r\n captionName:'表格名称',\r\n titleName:'标题',\r\n cellsName:'内容',\r\n errorMsg:'有合并单元格,不可排序'\r\n },\r\n 'edittip':{\r\n 'static':{\r\n lang_delRow:'删除整行',\r\n lang_delCol:'删除整列'\r\n }\r\n },\r\n 'edittd':{\r\n 'static':{\r\n lang_tdBkColor:'背景颜色:'\r\n }\r\n },\r\n 'formula':{\r\n 'static':{\r\n }\r\n },\r\n 'wordimage':{\r\n 'static':{\r\n lang_resave:\"转存步骤\",\r\n uploadBtn:{src:\"upload.png\",alt:\"上传\"},\r\n clipboard:{style:\"background: url(copy.png) -153px -1px no-repeat;\"},\r\n lang_step:\"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。\"\r\n },\r\n 'fileType':\"图片\",\r\n 'flashError':\"FLASH初始化失败,请检查FLASH插件是否正确安装!\",\r\n 'netError':\"网络连接错误,请重试!\",\r\n 'copySuccess':\"图片地址已经复制!\",\r\n 'flashI18n':{} //留空默认中文\r\n },\r\n 'autosave': {\r\n 'saving':'保存中...',\r\n 'success':'本地保存成功'\r\n }\r\n};\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getPlaceSuggestion: data => {\r\n const params = {\r\n query: data,\r\n region: '苏州市',\r\n type: 'gcj02ll'\r\n }\r\n return request({\r\n url: '/api/services/app/Client/GetPlaceSuggestion',\r\n method: 'get',\r\n params: params\r\n })\r\n },\r\n getUnLimitQr: data => {\r\n return request({\r\n url: '/api/services/app/Client/GetUnLimitQr',\r\n method: 'get',\r\n params: data\r\n })\r\n },\r\n getStores: data => {\r\n return request({\r\n url: '/api/services/app/Client/GetStores',\r\n method: 'get',\r\n params: data\r\n })\r\n }\r\n}\r\n","import * as _ from 'lodash'\r\nimport {AuditNodeCreateOrEditDto} from \"@/api/appService\";\r\n\r\nexport interface INodesBlock {\r\n items: AuditNodeCreateOrEditDto[]\r\n}\r\n\r\n\r\n\r\nexport function createNodes(array: AuditNodeCreateOrEditDto[]\r\n) {\r\n const result: INodesBlock[] = [];\r\n for (let index = 0; index < array.length; index++) {\r\n const element = array[index];\r\n if (!result[element.index!]) {\r\n result[element.index!] = { items: [] }\r\n }\r\n result[element.index!].items.push(element);\r\n }\r\n return result;\r\n}\r\n\r\nexport function flatenNodes(array: INodesBlock[]) {\r\n const result: AuditNodeCreateOrEditDto[] = [];\r\n array = array.filter(x => x.items.length > 0);\r\n for (let i = 0; i < array.length; i++) {\r\n array[i].items.forEach(x => {\r\n result.push({ ...x, index: i });\r\n });\r\n }\r\n return result;\r\n}\r\n\r\n\r\nexport function createTableTree(\r\n array: any[],\r\n parentIdProperty: string,\r\n idProperty: string,\r\n parentIdValue: any,\r\n childrenProperty: string\r\n) {\r\n const tree: any[] = []\r\n const nodes = _.filter(array, [parentIdProperty, parentIdValue])\r\n\r\n _.forEach(nodes, node => {\r\n const newNode = Object.assign({}, node, { hasChildren: false, isLeaf: true });\r\n\r\n const _children = createTableTree(\r\n array,\r\n parentIdProperty,\r\n idProperty,\r\n node[idProperty],\r\n childrenProperty\r\n )\r\n\r\n newNode[childrenProperty] = _children;\r\n\r\n if (_children.length > 0) newNode['hasChildren'] = true\r\n if (_children.length > 0) newNode['isLeaf'] = false\r\n tree.push(newNode)\r\n })\r\n return tree\r\n}\r\n\r\n// @ts-ignore\r\nexport function createSelectTree(\r\n array: any[],\r\n parentIdProperty: string,\r\n idProperty: string,\r\n parentIdValue: any,\r\n labelProperty: string,\r\n level: number = 0\r\n) {\r\n\r\n if (array === null || array === undefined || array.length === 0) {\r\n return [];\r\n }\r\n\r\n const result = [];\r\n for (const item of array) {\r\n if (item[parentIdProperty] === parentIdValue) {\r\n item[labelProperty] = createPrefix(level) + item[labelProperty];\r\n result.push(item);\r\n result.push(...createSelectTree(array, parentIdProperty, idProperty, item[idProperty], labelProperty, level + 1));\r\n }\r\n }\r\n\r\n return result;\r\n\r\n\r\n}\r\n\r\nfunction createPrefix(level: number) {\r\n let result = '';\r\n for (let i = 0; i < level; i++) {\r\n result += '—';\r\n }\r\n return result;\r\n}\r\n\r\nexport interface INgNode {\r\n label:string;\r\n id:any,\r\n expanded: boolean;\r\n isLeaf:boolean;\r\n disabled:boolean,\r\n hidden?:boolean;\r\n key:string;\r\n parentNode?:INgNode,\r\n data:T,\r\n children?:INgNode[]\r\n}\r\n\r\n\r\n\r\nexport interface ICheckDisable {\r\n (item:T):boolean;\r\n}\r\n\r\nexport interface ICreateNgTreeArgument {\r\n array:T[];\r\n labelProperty:string;\r\n idProperty:string;\r\n keyProperty:string;\r\n parentIdValue:string | undefined | null;\r\n parentIdProperty:string;\r\n childrenProperty:string;\r\n fieldMappings:any;\r\n disabled: boolean | ICheckDisable,\r\n parentNode?:INgNode;\r\n\r\n}\r\n\r\nexport function createTree(argument:ICreateNgTreeArgument) : INgNode[]{\r\n const tree: INgNode[] = [];\r\n\r\n const nodes = _.filter(argument.array, [argument.parentIdProperty, argument.parentIdValue]);\r\n\r\n _.forEach(nodes, node => {\r\n const newNode: INgNode = {\r\n label: (node as any)[argument.labelProperty],\r\n id: (node as any)[argument.idProperty],\r\n expanded: true,\r\n isLeaf: true,\r\n disabled:(typeof argument.disabled === 'boolean'?argument.disabled:argument.disabled(node)),\r\n data:node,\r\n children:undefined,\r\n parentNode:argument.parentNode,\r\n hidden:false,\r\n key:((node as any)[argument.keyProperty]).toString()\r\n };\r\n\r\n\r\n\r\n const _children: INgNode[] = createTree({\r\n array:argument.array,\r\n parentIdProperty:argument.parentIdProperty,\r\n idProperty:argument.idProperty,\r\n parentIdValue:(node as any)[argument.idProperty],\r\n childrenProperty:argument.childrenProperty,\r\n fieldMappings:argument.fieldMappings,\r\n disabled:argument.disabled,\r\n labelProperty:argument.labelProperty,\r\n parentNode:newNode,\r\n keyProperty: argument.keyProperty\r\n }\r\n\r\n );\r\n\r\n if(_children&&_children.length>0){\r\n newNode.children = _children;\r\n } else {\r\n (newNode as any)[argument.childrenProperty] = undefined;\r\n }\r\n\r\n\r\n if (_children.length > 0){\r\n newNode['isLeaf'] = false;\r\n }\r\n\r\n tree.push(newNode)\r\n });\r\n return tree\r\n}\r\n\r\nexport function createNgTree(array: T[],\r\n parentIdProperty: string,\r\n idProperty: string,\r\n parentIdValue: any,\r\n childrenProperty: string,\r\n fieldMappings: any,\r\n disabled: boolean | ICheckDisable,\r\n keyProperty:string,\r\n parentNode?:INgNode,) : INgNode[] {\r\n\r\n return createTree({\r\n array:array,\r\n parentIdProperty:parentIdProperty,\r\n idProperty:idProperty,\r\n parentIdValue:parentIdValue,\r\n childrenProperty:childrenProperty,\r\n fieldMappings:fieldMappings,\r\n disabled:disabled,\r\n parentNode:parentNode,\r\n keyProperty:keyProperty?keyProperty:idProperty,\r\n labelProperty:'displayName'});\r\n}\r\n\r\nexport function ngTreeToDictionary(treeData:INgNode[]):{[key:string]:INgNode}{\r\n let result :{[key:string]:INgNode} = {};\r\n treeData.forEach(node=>{\r\n let id = node!.id.toString() as string;\r\n result[id] = node;\r\n\r\n const children = ngTreeToDictionary(node.children!);\r\n\r\n result = {...result,...children};\r\n });\r\n\r\n return result;\r\n\r\n}\r\n\r\nexport function ngTreeToArray(treeData?:INgNode[]):INgNode[]{\r\n let result:INgNode[] = [] ;\r\n if(treeData){\r\n treeData.forEach(node=>{\r\n result.push(node);\r\n result = [...ngTreeToArray(node.children)];\r\n });\r\n }\r\n return result;\r\n}\r\nexport function setNgNodeProperty(treeData:INgNode[],action:(arg:INgNode)=>unknown){\r\n treeData.forEach(item=>{\r\n action(item);\r\n if(item.children){\r\n setNgNodeProperty(item.children,action);\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\n\r\nexport function createOUTree(array: any,\r\n parentIdProperty: any,\r\n idProperty: any,\r\n parentIdValue: any,\r\n childrenProperty: any,\r\n disabled: any,\r\n ext: boolean = false) {\r\n const tree: any[] = []\r\n\r\n let nodes = _.filter(array, [parentIdProperty, parentIdValue])\r\n _.forEach(nodes, node => {\r\n const newNode: any = {\r\n label: `${node.displayName}`,\r\n data: node,\r\n id: node[idProperty],\r\n expanded: true,\r\n disabled\r\n }\r\n if (ext) {\r\n newNode.label += `(${node.memberCount}成员)`;\r\n }\r\n newNode[childrenProperty] = createOUTree(\r\n array,\r\n parentIdProperty,\r\n idProperty,\r\n node[idProperty],\r\n childrenProperty,\r\n disabled\r\n )\r\n tree.push(newNode)\r\n })\r\n return tree\r\n}\r\n\r\nexport function getKeys(array: any[]) {\r\n if (array) {\r\n return Array.from(\r\n new Set([\r\n 'Pages',\r\n ..._getKeys(array),\r\n ...array\r\n ])\r\n )\r\n } // 去重\r\n return []\r\n}\r\n\r\nfunction _getKeys(array: any[]) {\r\n let _result: any[] = [];\r\n [...array].forEach(z => {\r\n const _index = z.lastIndexOf('.')\r\n if (_index > 0) {\r\n const _p = z.substring(0, _index)\r\n _result = [..._result, _p]\r\n _result = [..._result, ..._getKeys(_p)]\r\n }\r\n })\r\n return _result\r\n}\r\n\r\nexport function rebuildKeys(array: any[]) {\r\n _.remove(array, z => {\r\n const _l = array.filter(zz => zz.indexOf(z) > -1).length\r\n return _l > 1\r\n })\r\n return array\r\n}\r\n\r\n// 获取栏目id数组\r\nexport function getCategoryIdList(categories:any[], categoryId:number) {\r\n let result:number[] = [categoryId];\r\n let item = findCategory(categories, categoryId);\r\n while(item?.parentId){\r\n result.push(item.parentId)\r\n item = findCategory(categories, item.parentId);\r\n }\r\n return result.reverse();\r\n}\r\n\r\nfunction findCategory(categories:any[], categoryId:number){\r\n for(let i = 0,len = categories.length;i你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!\r\n\r\n //tab\r\n //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位\r\n //,tabSize:4\r\n //,tabNode:' '\r\n\r\n //removeFormat\r\n //清除格式时可以删除的标签和属性\r\n //removeForamtTags标签\r\n //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'\r\n //removeFormatAttributes属性\r\n //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'\r\n\r\n //undo\r\n //可以最多回退的次数,默认20\r\n //,maxUndoCount:20\r\n //当输入的字符数超过该值时,保存一次现场\r\n //,maxInputCount:1\r\n\r\n //autoHeightEnabled\r\n // 是否自动长高,默认true\r\n //,autoHeightEnabled:true\r\n\r\n //scaleEnabled\r\n //是否可以拉伸长高,默认true(当开启时,自动长高失效)\r\n //,scaleEnabled:false\r\n //,minFrameWidth:800 //编辑器拖动时最小宽度,默认800\r\n //,minFrameHeight:220 //编辑器拖动时最小高度,默认220\r\n\r\n //autoFloatEnabled\r\n //是否保持toolbar的位置不动,默认true\r\n //,autoFloatEnabled:true\r\n //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面\r\n //,topOffset:30\r\n //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)\r\n //,toolbarTopOffset:400\r\n\r\n //设置远程图片是否抓取到本地保存\r\n ,\r\n catchRemoteImageEnable: true //设置是否抓取远程图片\r\n\r\n //pageBreakTag\r\n //分页标识符,默认是_ueditor_page_break_tag_\r\n //,pageBreakTag:'_ueditor_page_break_tag_'\r\n\r\n //autotypeset\r\n //自动排版参数\r\n //,autotypeset: {\r\n // mergeEmptyline: true, //合并空行\r\n // removeClass: true, //去掉冗余的class\r\n // removeEmptyline: false, //去掉空行\r\n // textAlign:\"left\", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版\r\n // imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版\r\n // pasteFilter: false, //根据规则过滤没事粘贴进来的内容\r\n // clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号\r\n // clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体\r\n // removeEmptyNode: false, // 去掉空节点\r\n // //可以去掉的标签\r\n // removeTagNames: {标签名字:1},\r\n // indent: false, // 行首缩进\r\n // indentValue : '2em', //行首缩进的大小\r\n // bdc2sb: false,\r\n // tobdc: false\r\n //}\r\n\r\n //tableDragable\r\n //表格是否可以拖拽\r\n //,tableDragable: true\r\n\r\n\r\n\r\n //sourceEditor\r\n //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror\r\n //注意默认codemirror只能在ie8+和非ie中使用\r\n //,sourceEditor:\"codemirror\"\r\n //如果sourceEditor是codemirror,还用配置一下两个参数\r\n //codeMirrorJsUrl js加载的路径,默认是 URL + \"third-party/codemirror/codemirror.js\"\r\n //,codeMirrorJsUrl:URL + \"third-party/codemirror/codemirror.js\"\r\n //codeMirrorCssUrl css加载的路径,默认是 URL + \"third-party/codemirror/codemirror.css\"\r\n //,codeMirrorCssUrl:URL + \"third-party/codemirror/codemirror.css\"\r\n //编辑器初始化完成后是否进入源码模式,默认为否。\r\n //,sourceEditorFirst:false\r\n\r\n //iframeUrlMap\r\n //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径\r\n //,iframeUrlMap:{\r\n // 'anchor':'~/dialogs/anchor/anchor.html',\r\n //}\r\n\r\n //allowLinkProtocol 允许的链接地址,有这些前缀的链接地址不会自动添加http\r\n //, allowLinkProtocols: ['http:', 'https:', '#', '/', 'ftp:', 'mailto:', 'tel:', 'git:', 'svn:']\r\n\r\n //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html\r\n //, webAppKey: \"\"\r\n\r\n //默认过滤规则相关配置项目\r\n //,disabledTableInTable:true //禁止表格嵌套\r\n ,allowDivTransToP:false //允许进入编辑器的div标签自动变成p标签\r\n //,rgb2Hex:true //默认产出的数据中的color自动从rgb格式变成16进制格式\r\n\r\n // xss 过滤是否开启,inserthtml等操作\r\n ,\r\n xssFilterRules: true\r\n //input xss过滤\r\n ,\r\n inputXssFilter: true\r\n //output xss过滤\r\n ,\r\n outputXssFilter: true\r\n // xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js\r\n ,\r\n whitList: {\r\n a: ['target', 'href', 'title', 'class', 'style'],\r\n abbr: ['title', 'class', 'style'],\r\n address: ['class', 'style'],\r\n area: ['shape', 'coords', 'href', 'alt'],\r\n article: [],\r\n aside: [],\r\n audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],\r\n b: ['class', 'style'],\r\n bdi: ['dir'],\r\n bdo: ['dir'],\r\n big: [],\r\n blockquote: ['cite', 'class', 'style'],\r\n br: [],\r\n caption: ['class', 'style'],\r\n center: [],\r\n cite: [],\r\n code: ['class', 'style'],\r\n col: ['align', 'valign', 'span', 'width', 'class', 'style'],\r\n colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],\r\n dd: ['class', 'style'],\r\n del: ['datetime'],\r\n details: ['open'],\r\n div: ['class', 'style'],\r\n dl: ['class', 'style'],\r\n dt: ['class', 'style'],\r\n em: ['class', 'style'],\r\n font: ['color', 'size', 'face'],\r\n footer: [],\r\n h1: ['class', 'style'],\r\n h2: ['class', 'style'],\r\n h3: ['class', 'style'],\r\n h4: ['class', 'style'],\r\n h5: ['class', 'style'],\r\n h6: ['class', 'style'],\r\n header: [],\r\n hr: [],\r\n i: ['class', 'style'],\r\n img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'],\r\n ins: ['datetime'],\r\n li: ['class', 'style'],\r\n mark: [],\r\n nav: [],\r\n ol: ['class', 'style'],\r\n p: ['class', 'style'],\r\n pre: ['class', 'style'],\r\n s: [],\r\n section: ['class', 'style'],\r\n small: [],\r\n span: ['class', 'style'],\r\n sub: ['class', 'style'],\r\n sup: ['class', 'style'],\r\n strong: ['class', 'style'],\r\n table: ['width', 'border', 'align', 'valign', 'class', 'style'],\r\n tbody: ['align', 'valign', 'class', 'style'],\r\n td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\r\n tfoot: ['align', 'valign', 'class', 'style'],\r\n th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],\r\n thead: ['align', 'valign', 'class', 'style'],\r\n tr: ['rowspan', 'align', 'valign', 'class', 'style'],\r\n tt: [],\r\n u: [],\r\n ul: ['class', 'style'],\r\n video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']\r\n }\r\n };\r\n\r\n function getUEBasePath(docUrl, confUrl) {\r\n\r\n return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());\r\n\r\n }\r\n\r\n function getConfigFilePath() {\r\n\r\n var configPath = document.getElementsByTagName('script');\r\n\r\n return configPath[configPath.length - 1].src;\r\n\r\n }\r\n\r\n function getBasePath(docUrl, confUrl) {\r\n\r\n var basePath = confUrl;\r\n\r\n\r\n if (/^(\\/|\\\\\\\\)/.test(confUrl)) {\r\n\r\n basePath = /^.+?\\w(\\/|\\\\\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\\/|\\\\\\\\)/, '');\r\n\r\n } else if (!/^[a-z]+:/i.test(confUrl)) {\r\n\r\n docUrl = docUrl.split(\"#\")[0].split(\"?\")[0].replace(/[^\\\\\\/]+$/, '');\r\n\r\n basePath = docUrl + \"\" + confUrl;\r\n\r\n }\r\n\r\n return optimizationPath(basePath);\r\n\r\n }\r\n\r\n function optimizationPath(path) {\r\n\r\n var protocol = /^[a-z]+:\\/\\//.exec(path)[0],\r\n tmp = null,\r\n res = [];\r\n\r\n path = path.replace(protocol, \"\").split(\"?\")[0].split(\"#\")[0];\r\n\r\n path = path.replace(/\\\\/g, '/').split(/\\//);\r\n\r\n path[path.length - 1] = \"\";\r\n\r\n while (path.length) {\r\n\r\n if ((tmp = path.shift()) === \"..\") {\r\n res.pop();\r\n } else if (tmp !== \".\") {\r\n res.push(tmp);\r\n }\r\n\r\n }\r\n\r\n return protocol + res.join(\"/\");\r\n\r\n }\r\n\r\n window.UE = {\r\n getUEBasePath: getUEBasePath\r\n };\r\n\r\n})();\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","/** Generate by swagger-axios-codegen */\r\n// tslint:disable\r\n/* eslint-disable */\r\nimport axiosStatic, { AxiosInstance } from 'axios';\r\n\r\nexport interface IRequestOptions {\r\n headers?: any;\r\n baseURL?: string;\r\n responseType?: string;\r\n}\r\n\r\nexport interface IRequestConfig {\r\n method?: any;\r\n headers?: any;\r\n url?: any;\r\n data?: any;\r\n params?: any;\r\n}\r\n\r\n// Add options interface\r\nexport interface ServiceOptions {\r\n axios?: AxiosInstance;\r\n}\r\n\r\n// Add default options\r\nexport const serviceOptions: ServiceOptions = {};\r\n\r\n// Instance selector\r\nexport function axios(configs: IRequestConfig, resolve: (p: any) => void, reject: (p: any) => void): Promise {\r\n if (serviceOptions.axios) {\r\n return serviceOptions.axios\r\n .request(configs)\r\n .then(res => {\r\n resolve(res.data);\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n } else {\r\n throw new Error('please inject yourself instance like axios ');\r\n }\r\n}\r\n\r\nexport function getConfigs(method: string, contentType: string, url: string, options: any): IRequestConfig {\r\n const configs: IRequestConfig = { ...options, method, url };\r\n configs.headers = {\r\n ...options.headers,\r\n 'Content-Type': contentType\r\n };\r\n return configs;\r\n}\r\n\r\nexport class IList extends Array {}\r\nexport class List extends Array {}\r\n\r\nexport interface IListResult {\r\n items?: T[];\r\n}\r\n\r\nexport class ListResultDto implements IListResult {\r\n items?: T[];\r\n}\r\n\r\nexport interface IPagedResult extends IListResult {\r\n totalCount: number;\r\n}\r\n\r\nexport class PagedResultDto implements IPagedResult {\r\n totalCount!: number;\r\n}\r\n\r\n// customer definition\r\n// empty\r\n\r\nexport class AccountService {\r\n /**\r\n *\r\n */\r\n static authorize(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/connect/oauth2/authorize';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAuthUrl(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/Account/GetAuthUrl';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static qyWeiXinLogin(\r\n params: {\r\n /** */\r\n code?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/Account/QyWeiXinLogin';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { code: params['code'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static qyWeiXinLogin1(\r\n params: {\r\n /** requestBody */\r\n body?: QyWeiXinLoginPostModel;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/Account/QyWeiXinLogin';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static isTenantAvailable(\r\n params: {\r\n /** requestBody */\r\n body?: IsTenantAvailableInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/IsTenantAvailable';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 微信用户登录\r\n */\r\n static weiXinLogin(\r\n params: {\r\n /** */\r\n weiXinUser?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/WeiXinLogin';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { weiXinUser: params['weiXinUser'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 注册\r\n */\r\n static register(\r\n params: {\r\n /** requestBody */\r\n body?: RegisterInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/Register';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 登录\r\n */\r\n static login(\r\n params: {\r\n /** requestBody */\r\n body?: LoginPostReqDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/Login';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static checkUserMobilePhone(\r\n params: {\r\n /** */\r\n phone?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/CheckUserMobilePhone';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { phone: params['phone'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getVerificationCode(\r\n params: {\r\n /** */\r\n phone?: string;\r\n /** */\r\n verificationCode?: VerificationCode;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/GetVerificationCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { phone: params['phone'], verificationCode: params['verificationCode'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static checkVerificationCode(\r\n params: {\r\n /** */\r\n phone?: string;\r\n /** */\r\n code?: string;\r\n /** */\r\n verificationCode?: VerificationCode;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Account/CheckVerificationCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { phone: params['phone'], code: params['code'], verificationCode: params['verificationCode'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ActivityService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** 标题 */\r\n title?: string;\r\n /** 状态 */\r\n status?: ActivityStatus;\r\n /** 是否为志愿者活动 */\r\n isVolunteerActivity?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Status: params['status'],\r\n IsVolunteerActivity: params['isVolunteerActivity'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发布活动\r\n */\r\n static publish(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/Publish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消发布活动\r\n */\r\n static cancelPublish(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/CancelPublish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取二维码\r\n */\r\n static downQrCode(\r\n params: {\r\n /** */\r\n id?: number;\r\n /** */\r\n qrType?: ActivityQrType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/DownQrCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'], qrType: params['qrType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新阅读数量\r\n */\r\n static updateReadCount(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/UpdateReadCount';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 判断活动是否可以报名\r\n */\r\n static canSignupActivity(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/CanSignupActivity';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 标题 */\r\n title?: string;\r\n /** 状态 */\r\n status?: ActivityStatus;\r\n /** 是否为志愿者活动 */\r\n isVolunteerActivity?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Activity/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Status: params['status'],\r\n IsVolunteerActivity: params['isVolunteerActivity'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ActivityApplyService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取服务记录统计\r\n */\r\n static getTotalDetails(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetTotalDetails';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { activityId: params['activityId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllPaid(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n /** */\r\n activityTitle?: string;\r\n /** */\r\n applyUserPhone?: string;\r\n /** */\r\n applyUserName?: string;\r\n /** */\r\n isPay?: boolean;\r\n /** */\r\n isPriced?: boolean;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n /** */\r\n status?: ActivityApplyStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetAllPaid';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ActivityId: params['activityId'],\r\n ActivityTitle: params['activityTitle'],\r\n ApplyUserPhone: params['applyUserPhone'],\r\n ApplyUserName: params['applyUserName'],\r\n IsPay: params['isPay'],\r\n IsPriced: params['isPriced'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n SpecialType: params['specialType'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllPriced(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n /** */\r\n activityTitle?: string;\r\n /** */\r\n applyUserPhone?: string;\r\n /** */\r\n applyUserName?: string;\r\n /** */\r\n isPay?: boolean;\r\n /** */\r\n isPriced?: boolean;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n /** */\r\n status?: ActivityApplyStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetAllPriced';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ActivityId: params['activityId'],\r\n ActivityTitle: params['activityTitle'],\r\n ApplyUserPhone: params['applyUserPhone'],\r\n ApplyUserName: params['applyUserName'],\r\n IsPay: params['isPay'],\r\n IsPriced: params['isPriced'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n SpecialType: params['specialType'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static postToAudit(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/PostToAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出活动名单\r\n */\r\n static exportExcel(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityApplyPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/ExportExcel';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出活动名单\r\n */\r\n static exportOrderExcel(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityApplyPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/ExportOrderExcel';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 报名签到,有管理权限的可以为别人签到\r\n */\r\n static checkIn(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/CheckIn';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消报名记录(不处理订单)\r\n */\r\n static cancelActivityApply(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/CancelActivityApply';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 未支付取消(用户可以取消自己的报名,管理员可以任意取消)\r\n */\r\n static unPaidCancel(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/UnPaidCancel';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 未支付取消(用户可以取消自己的报名,管理员可以任意取消)\r\n */\r\n static unPaidToAudited(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/UnPaidToAudited';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 报名\r\n */\r\n static signUp(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/SignUp';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取活动报名订单\r\n */\r\n static getActivityApplyOrder(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetActivityApplyOrder';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取活动报名\r\n */\r\n static getActivityApplyByOrderNo(\r\n params: {\r\n /** */\r\n orderNo?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetActivityApplyByOrderNo';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { orderNo: params['orderNo'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 处理支付回调\r\n */\r\n static processOrderResponse(\r\n params: {\r\n /** requestBody */\r\n body?: PaymentReponseInputDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/ProcessOrderResponse';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n /** */\r\n activityTitle?: string;\r\n /** */\r\n applyUserPhone?: string;\r\n /** */\r\n applyUserName?: string;\r\n /** */\r\n isPay?: boolean;\r\n /** */\r\n isPriced?: boolean;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n /** */\r\n status?: ActivityApplyStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ActivityId: params['activityId'],\r\n ActivityTitle: params['activityTitle'],\r\n ApplyUserPhone: params['applyUserPhone'],\r\n ApplyUserName: params['applyUserName'],\r\n IsPay: params['isPay'],\r\n IsPriced: params['isPriced'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n SpecialType: params['specialType'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户报名活动信息\r\n */\r\n static getUserActivityApplyInfo(\r\n params: {\r\n /** */\r\n userId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetUserActivityApplyInfo';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { userId: params['userId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 检查订单金额\r\n */\r\n static checkOrderPriceTotal(\r\n params: {\r\n /** */\r\n orderNo?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/CheckOrderPriceTotal';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { orderNo: params['orderNo'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ActivityApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n /** */\r\n activityTitle?: string;\r\n /** */\r\n applyUserPhone?: string;\r\n /** */\r\n applyUserName?: string;\r\n /** */\r\n isPay?: boolean;\r\n /** */\r\n isPriced?: boolean;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n /** */\r\n status?: ActivityApplyStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ActivityId: params['activityId'],\r\n ActivityTitle: params['activityTitle'],\r\n ApplyUserPhone: params['applyUserPhone'],\r\n ApplyUserName: params['applyUserName'],\r\n IsPay: params['isPay'],\r\n IsPriced: params['isPriced'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n SpecialType: params['specialType'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n activityId?: number;\r\n /** */\r\n activityTitle?: string;\r\n /** */\r\n applyUserPhone?: string;\r\n /** */\r\n applyUserName?: string;\r\n /** */\r\n isPay?: boolean;\r\n /** */\r\n isPriced?: boolean;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n /** */\r\n status?: ActivityApplyStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivityApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ActivityId: params['activityId'],\r\n ActivityTitle: params['activityTitle'],\r\n ApplyUserPhone: params['applyUserPhone'],\r\n ApplyUserName: params['applyUserName'],\r\n IsPay: params['isPay'],\r\n IsPriced: params['isPriced'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n SpecialType: params['specialType'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ActivitySignInRecordService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivitySignInRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n /** */\r\n sorting?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivitySignInRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount'],\r\n Sorting: params['sorting']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ActivitySignInRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivitySignInRecord/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ActivitySignInRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivitySignInRecord/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ActivitySignInRecord/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AlbumService {\r\n /**\r\n * 获取相册信息\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 创建相册\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: AlbumCreateUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新相册\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: AlbumCreateUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 删除相册\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取所有相册\r\n */\r\n static getAllAlbums(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/GetAllAlbums';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 上传照片到相册\r\n */\r\n static uploadPhoto(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/UploadPhoto';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 删除照片\r\n */\r\n static deletePhoto(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/DeletePhoto';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取照片列表\r\n */\r\n static getAllPhotos(\r\n params: {\r\n /** */\r\n albumId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/GetAllPhotos';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n AlbumId: params['albumId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 将照片转到新相册\r\n */\r\n static moveToNewAlbum(\r\n params: {\r\n /** requestBody */\r\n body?: AlbumPhotoMoveInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/MoveToNewAlbum';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 将照片设为相册封面\r\n */\r\n static setAsCover(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/SetAsCover';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 重命名照片\r\n */\r\n static renamePhoto(\r\n params: {\r\n /** requestBody */\r\n body?: RenameAlbumPhotoInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/RenamePhoto';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static download(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/Download';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static batchDownload(\r\n params: {\r\n /** 相册Id */\r\n albumId: number;\r\n /** 相册图片Id(多个用,隔开) */\r\n albumPhotoId: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Album/BatchDownload';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { AlbumId: params['albumId'], AlbumPhotoId: params['albumPhotoId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ApplicationPaymentService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ApplicationPaymentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetAllLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 申请人姓名 */\r\n applicantName?: string;\r\n /** 标题 */\r\n title?: string;\r\n /** */\r\n fundId?: number;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 基金项目名称 */\r\n fundProjectName?: string;\r\n /** 审批状态 */\r\n isAudited?: boolean;\r\n /** 验证状态 */\r\n validationStatus?: ApplicationPaymentValidationStatus;\r\n /** */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ApplicantName: params['applicantName'],\r\n Title: params['title'],\r\n FundID: params['fundId'],\r\n FundName: params['fundName'],\r\n FundProjectName: params['fundProjectName'],\r\n IsAudited: params['isAudited'],\r\n ValidationStatus: params['validationStatus'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ApplicationPaymentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 设置发票号码\r\n */\r\n static setInvoiceNumbers(\r\n params: {\r\n /** requestBody */\r\n body?: ApplicationPaymentInvoiceNumberInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/SetInvoiceNumbers';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取发票号码\r\n */\r\n static getInvoiceNumbers(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetInvoiceNumbers';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 增值税发票识别\r\n */\r\n static vatInvoice(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/VatInvoice';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 检查拨款\r\n */\r\n static checkFunding(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/CheckFunding';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 确认拨款\r\n */\r\n static confirmFunding(\r\n params: {\r\n /** requestBody */\r\n body?: ConfirmFundingInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/ConfirmFunding';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * TestNc\r\n */\r\n static testNc(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/TestNc';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 申请人姓名 */\r\n applicantName?: string;\r\n /** 标题 */\r\n title?: string;\r\n /** */\r\n fundId?: number;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 基金项目名称 */\r\n fundProjectName?: string;\r\n /** 审批状态 */\r\n isAudited?: boolean;\r\n /** 验证状态 */\r\n validationStatus?: ApplicationPaymentValidationStatus;\r\n /** */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ApplicantName: params['applicantName'],\r\n Title: params['title'],\r\n FundID: params['fundId'],\r\n FundName: params['fundName'],\r\n FundProjectName: params['fundProjectName'],\r\n IsAudited: params['isAudited'],\r\n ValidationStatus: params['validationStatus'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ApplicationPayment/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AreaService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: AreaCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: AreaCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllList(\r\n params: {\r\n /** */\r\n cityId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/GetAllList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { cityId: params['cityId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n areaName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n AreaName: params['areaName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Area/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AttachmentService {\r\n /**\r\n *\r\n */\r\n static getAttachments(\r\n params: {\r\n /** */\r\n hostId?: string;\r\n /** */\r\n hostType?: AttachmentHostType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Attachment/GetAttachments';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { hostId: params['hostId'], hostType: params['hostType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 上传到临时目录\r\n */\r\n static uploadToTemp(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Attachment/UploadToTemp';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 上传到Oss\r\n */\r\n static uploadToOss(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Attachment/UploadToOss';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载附件\r\n */\r\n static download(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Attachment/Download';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AuditFlowService {\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static active(\r\n params: {\r\n /** requestBody */\r\n body?: GuidEntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/Active';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static canAudit(\r\n params: {\r\n /** requestBody */\r\n body?: CanAuditRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/CanAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: AuditFlowCreateOrEditDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: AuditFlowCreateOrEditDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n desc?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Desc: params['desc'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlow/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AuditFlowProxyService {\r\n /**\r\n * CreateAsync\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: AuditFlowCreateOrEditProxyDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * GetForEdit\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n desc?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Desc: params['desc'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * UpdateAsync\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: AuditFlowCreateOrEditProxyDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 此记录当前用户是否可以进行审核\r\n */\r\n static canAudit(\r\n params: {\r\n /** requestBody */\r\n body?: CanAuditRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/CanAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n scope?: AuditFlowScope;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { scope: params['scope'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditFlowProxy/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AuditNodePreDefineService {\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n desc?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Desc: params['desc'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: AuditNodePreDefineCreateOrEditDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: AuditNodePreDefineCreateOrEditDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AuditNodePreDefine/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class AutoInvoicingService {\r\n /**\r\n * 获取最新待开票\r\n */\r\n static getInvoiceList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AutoInvoicing/GetInvoiceList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getInvoiceListAsCsv(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AutoInvoicing/GetInvoiceListAsCsv';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 开票完成\r\n */\r\n static complete(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/AutoInvoicing/Complete';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class BankNameService {\r\n /**\r\n *\r\n */\r\n static syncBankNamesFromNc(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/SyncBankNamesFromNC';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: BankNameCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: BankNameCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankName/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class BankReconciliationService {\r\n /**\r\n * 银行对账收入统计\r\n */\r\n static getBankReconciliationIncomeReport(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 账号 */\r\n bankAccount?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankReconciliation/GetBankReconciliationIncomeReport';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Year: params['year'], BankAccount: params['bankAccount'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 银行对账支出统计\r\n */\r\n static getBankReconciliationExpenseReport(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 账号 */\r\n bankAccount?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankReconciliation/GetBankReconciliationExpenseReport';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Year: params['year'], BankAccount: params['bankAccount'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class BankTypeService {\r\n /**\r\n *\r\n */\r\n static syncBankTypesFromNc(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/SyncBankTypesFromNC';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: BankTypeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: BankTypeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BankType/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class BeneficiaryService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: BeneficiaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: BeneficiaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static checkExist(\r\n params: {\r\n /** requestBody */\r\n body?: BeneficiaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/CheckExist';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 个案编号 */\r\n code?: string;\r\n /** 姓名 */\r\n realName?: string;\r\n /** 性别 */\r\n sex?: string;\r\n /** 最小年龄 */\r\n minAge?: number;\r\n /** 最大年龄 */\r\n maxAge?: number;\r\n /** 民族 */\r\n nation?: string;\r\n /** 省份Id */\r\n provinceId?: number;\r\n /** 城市Id */\r\n cityId?: number;\r\n /** 区域Id */\r\n areaId?: number;\r\n /** 街道Id */\r\n townId?: number;\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Code: params['code'],\r\n RealName: params['realName'],\r\n Sex: params['sex'],\r\n MinAge: params['minAge'],\r\n MaxAge: params['maxAge'],\r\n Nation: params['nation'],\r\n ProvinceId: params['provinceId'],\r\n CityId: params['cityId'],\r\n AreaId: params['areaId'],\r\n TownId: params['townId'],\r\n IsEnjoyTheSubsistenceAllowancePolicy: params['isEnjoyTheSubsistenceAllowancePolicy'],\r\n IsEnjoyOtherSalvation: params['isEnjoyOtherSalvation'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 个案编号 */\r\n code?: string;\r\n /** 姓名 */\r\n realName?: string;\r\n /** 性别 */\r\n sex?: string;\r\n /** 最小年龄 */\r\n minAge?: number;\r\n /** 最大年龄 */\r\n maxAge?: number;\r\n /** 民族 */\r\n nation?: string;\r\n /** 省份Id */\r\n provinceId?: number;\r\n /** 城市Id */\r\n cityId?: number;\r\n /** 区域Id */\r\n areaId?: number;\r\n /** 街道Id */\r\n townId?: number;\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Beneficiary/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Code: params['code'],\r\n RealName: params['realName'],\r\n Sex: params['sex'],\r\n MinAge: params['minAge'],\r\n MaxAge: params['maxAge'],\r\n Nation: params['nation'],\r\n ProvinceId: params['provinceId'],\r\n CityId: params['cityId'],\r\n AreaId: params['areaId'],\r\n TownId: params['townId'],\r\n IsEnjoyTheSubsistenceAllowancePolicy: params['isEnjoyTheSubsistenceAllowancePolicy'],\r\n IsEnjoyOtherSalvation: params['isEnjoyOtherSalvation'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class BeneficiaryServiceRecordServiceService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n serviceRecordType?: ServiceRecordType;\r\n /** */\r\n beneficiaryName?: string;\r\n /** */\r\n schoolName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ServiceRecordType: params['serviceRecordType'],\r\n BeneficiaryName: params['beneficiaryName'],\r\n SchoolName: params['schoolName'],\r\n ProjectName: params['projectName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ServiceRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ServiceRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: ServiceRecordPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n serviceRecordType?: ServiceRecordType;\r\n /** */\r\n beneficiaryName?: string;\r\n /** */\r\n schoolName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ServiceRecordType: params['serviceRecordType'],\r\n BeneficiaryName: params['beneficiaryName'],\r\n SchoolName: params['schoolName'],\r\n ProjectName: params['projectName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/BeneficiaryServiceRecordService/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CapitalExpenseRecordAppserviceService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalExpenseRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalExpenseRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取变更历史记录\r\n */\r\n static getRecordChangeList(\r\n params: {\r\n /** */\r\n recordId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetRecordChangeList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { recordId: params['recordId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getContractNoInformation(\r\n params: {\r\n /** */\r\n contractNo?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetContractNoInformation';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { contractNo: params['contractNo'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取内部项目预算项及实际使用金额\r\n */\r\n static getInternalBudgetItemAndUseRecord(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetInternalBudgetItemAndUseRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalExpenseRecordPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 保存变更申请\r\n */\r\n static changeApply(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalExpenseRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/ChangeApply';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消变更申请\r\n */\r\n static cancelChangeApply(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalExpenseRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/CancelChangeApply';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectReportList(\r\n params: {\r\n /** */\r\n projectName?: string;\r\n /** */\r\n year?: number;\r\n /** */\r\n projectSeriesId?: number;\r\n /** */\r\n projectType?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetProjectReportList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n Year: params['year'],\r\n ProjectSeriesId: params['projectSeriesId'],\r\n ProjectType: params['projectType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectRepprtDetailList(\r\n params: {\r\n /** */\r\n projectName?: string;\r\n /** */\r\n startDate?: string;\r\n /** */\r\n endDate?: string;\r\n /** */\r\n minAmount?: number;\r\n /** */\r\n maxAmount?: number;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n itemName?: string;\r\n /** */\r\n remark?: string;\r\n /** */\r\n summary?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetProjectRepprtDetailList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n MinAmount: params['minAmount'],\r\n MaxAmount: params['maxAmount'],\r\n ProjectId: params['projectId'],\r\n ItemName: params['itemName'],\r\n Remark: params['remark'],\r\n Summary: params['summary'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getExpenseRecordDetailByYear(\r\n params: {\r\n /** */\r\n isInternal?: boolean;\r\n /** */\r\n year?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetExpenseRecordDetailByYear';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { isInternal: params['isInternal'], year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 保存支付时间\r\n */\r\n static savePayDate(\r\n params: {\r\n /** */\r\n id?: number;\r\n /** */\r\n payDate?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/SavePayDate';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'], payDate: params['payDate'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 收款单位 */\r\n payeeName?: string;\r\n /** 开户银行 */\r\n payeeBankAccount?: string;\r\n /** 付款方式 */\r\n payType?: PayType;\r\n /** 合同编号 */\r\n contractNo?: string;\r\n /** 开始日期 */\r\n startDate?: string;\r\n /** 截止日期 */\r\n endDate?: string;\r\n /** */\r\n projectName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PayeeName: params['payeeName'],\r\n PayeeBankAccount: params['payeeBankAccount'],\r\n PayType: params['payType'],\r\n ContractNo: params['contractNo'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectName: params['projectName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 收款单位 */\r\n payeeName?: string;\r\n /** 开户银行 */\r\n payeeBankAccount?: string;\r\n /** 付款方式 */\r\n payType?: PayType;\r\n /** 合同编号 */\r\n contractNo?: string;\r\n /** 开始日期 */\r\n startDate?: string;\r\n /** 截止日期 */\r\n endDate?: string;\r\n /** */\r\n projectName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalExpenseRecordAppservice/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PayeeName: params['payeeName'],\r\n PayeeBankAccount: params['payeeBankAccount'],\r\n PayType: params['payType'],\r\n ContractNo: params['contractNo'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectName: params['projectName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CapitalIncomeRecordFromDonationService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromDonationCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromDonationCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取资金捐赠合计金额\r\n */\r\n static getDonationTotalMoney(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n donatorName?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/GetDonationTotalMoney';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n DonatorName: params['donatorName'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n CapitalProperty: params['capitalProperty'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromDonationPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n donatorName?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n DonatorName: params['donatorName'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n CapitalProperty: params['capitalProperty'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n donatorName?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromDonation/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n DonatorName: params['donatorName'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n CapitalProperty: params['capitalProperty'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CapitalIncomeRecordFromOtherService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromOtherCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromOtherCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取其他收入合计金额\r\n */\r\n static getOtherTotalMoney(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/GetOtherTotalMoney';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n IncomeCategory: params['incomeCategory'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: CapitalIncomeRecordFromOtherPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n IncomeCategory: params['incomeCategory'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n incomeDate?: string;\r\n /** */\r\n incomeDateStart?: string;\r\n /** */\r\n incomeDateEnd?: string;\r\n /** */\r\n incomeType?: PayType;\r\n /** */\r\n bankAccount?: string;\r\n /** */\r\n totalIncomeMoney?: number;\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n /** */\r\n currencyType?: CurrencyType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CapitalIncomeRecordFromOther/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IncomeDate: params['incomeDate'],\r\n IncomeDateStart: params['incomeDateStart'],\r\n IncomeDateEnd: params['incomeDateEnd'],\r\n IncomeType: params['incomeType'],\r\n BankAccount: params['bankAccount'],\r\n TotalIncomeMoney: params['totalIncomeMoney'],\r\n TotalIncomeMoneyStart: params['totalIncomeMoneyStart'],\r\n TotalIncomeMoneyEnd: params['totalIncomeMoneyEnd'],\r\n IncomeCategory: params['incomeCategory'],\r\n CurrencyType: params['currencyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CityService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CityCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CityCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllList(\r\n params: {\r\n /** */\r\n provinceId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/GetAllList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { provinceId: params['provinceId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n cityName?: string;\r\n /** */\r\n shortCode?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n CityName: params['cityName'],\r\n ShortCode: params['shortCode'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/City/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CmsAnchorService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CmsAnchorCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsAnchor/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CmsAnchorCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsAnchor/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsAnchor/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsAnchor/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsAnchor/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CmsCategoryService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CmsCategoryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CmsCategoryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static showIt(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/ShowIt';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static hiddenIt(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/HiddenIt';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getCmsCategoryList(\r\n params: {\r\n /** */\r\n categoryCode?: string;\r\n /** */\r\n isLeftJoin?: boolean;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/GetCmsCategoryList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { categoryCode: params['categoryCode'], isLeftJoin: params['isLeftJoin'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByCode(\r\n params: {\r\n /** */\r\n categoryCode?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/GetByCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { categoryCode: params['categoryCode'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 修改栏目排序\r\n */\r\n static updateSort(\r\n params: {\r\n /** requestBody */\r\n body?: CmsCategoryUpdateSortDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/UpdateSort';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 只和UseParentIdParameter为true时使用。 */\r\n parentId?: number;\r\n /** */\r\n parentCode?: string;\r\n /** */\r\n useParentIdParameter?: boolean;\r\n /** */\r\n isHidden?: boolean;\r\n /** */\r\n enableDataPermissionLimit?: boolean;\r\n /** */\r\n needShowContentCategory?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsCategory/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ParentId: params['parentId'],\r\n ParentCode: params['parentCode'],\r\n UseParentIdParameter: params['useParentIdParameter'],\r\n IsHidden: params['isHidden'],\r\n EnableDataPermissionLimit: params['enableDataPermissionLimit'],\r\n NeedShowContentCategory: params['needShowContentCategory'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CmsContentService {\r\n /**\r\n * 获取文章详情,包含明细\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static publish(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Publish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static cancelPublish(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/CancelPublish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 置顶\r\n */\r\n static stickyPost(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/StickyPost';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消置顶\r\n */\r\n static cancelStickyPost(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/CancelStickyPost';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static moveToTrash(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/MoveToTrash';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static restoreFromTrash(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/RestoreFromTrash';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CmsContentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CmsContentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 点赞\r\n */\r\n static praise(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Praise';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static searchPublishedContent(\r\n params: {\r\n /** */\r\n title?: string;\r\n /** */\r\n categoryId?: number;\r\n /** */\r\n categoryCode?: string;\r\n /** */\r\n publishYear?: number;\r\n /** */\r\n status?: CmsContentStatus;\r\n /** */\r\n enableDataPermissionLimit?: boolean;\r\n /** 指定要不包含的文章ID */\r\n noContainsId?: number;\r\n /** 排序方式.1=>默认方式,2=>lastest(最新) */\r\n sorting?: string;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金项目Id */\r\n fundProjectId?: number;\r\n /** */\r\n hasCategory?: boolean;\r\n /** 是否加载子栏目的文章列表 */\r\n isLoadChildrenCategoryArticles?: boolean;\r\n /** 首页滚动 */\r\n isHomeScrolling?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/SearchPublishedContent';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n CategoryId: params['categoryId'],\r\n CategoryCode: params['categoryCode'],\r\n PublishYear: params['publishYear'],\r\n Status: params['status'],\r\n EnableDataPermissionLimit: params['enableDataPermissionLimit'],\r\n NoContainsId: params['noContainsId'],\r\n Sorting: params['sorting'],\r\n FundID: params['fundId'],\r\n FundProjectID: params['fundProjectId'],\r\n HasCategory: params['hasCategory'],\r\n IsLoadChildrenCategoryArticles: params['isLoadChildrenCategoryArticles'],\r\n IsHomeScrolling: params['isHomeScrolling'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 批量更新文章栏目\r\n */\r\n static batchChangeCategory(\r\n params: {\r\n /** */\r\n contentIds?: string;\r\n /** */\r\n categoryId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/BatchChangeCategory';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { contentIds: params['contentIds'], categoryId: params['categoryId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static syncWechatNews(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/SyncWechatNews';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 首页滚动\r\n */\r\n static homeScrolling(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/HomeScrolling';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n title?: string;\r\n /** */\r\n categoryId?: number;\r\n /** */\r\n categoryCode?: string;\r\n /** */\r\n publishYear?: number;\r\n /** */\r\n status?: CmsContentStatus;\r\n /** */\r\n enableDataPermissionLimit?: boolean;\r\n /** 指定要不包含的文章ID */\r\n noContainsId?: number;\r\n /** 排序方式.1=>默认方式,2=>lastest(最新) */\r\n sorting?: string;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金项目Id */\r\n fundProjectId?: number;\r\n /** */\r\n hasCategory?: boolean;\r\n /** 是否加载子栏目的文章列表 */\r\n isLoadChildrenCategoryArticles?: boolean;\r\n /** 首页滚动 */\r\n isHomeScrolling?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsContent/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n CategoryId: params['categoryId'],\r\n CategoryCode: params['categoryCode'],\r\n PublishYear: params['publishYear'],\r\n Status: params['status'],\r\n EnableDataPermissionLimit: params['enableDataPermissionLimit'],\r\n NoContainsId: params['noContainsId'],\r\n Sorting: params['sorting'],\r\n FundID: params['fundId'],\r\n FundProjectID: params['fundProjectId'],\r\n HasCategory: params['hasCategory'],\r\n IsLoadChildrenCategoryArticles: params['isLoadChildrenCategoryArticles'],\r\n IsHomeScrolling: params['isHomeScrolling'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CmsFriendLinkService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CmsFriendLinkCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsFriendLink/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CmsFriendLinkCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsFriendLink/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsFriendLink/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsFriendLink/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** */\r\n link?: string;\r\n /** */\r\n displayOrder?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CmsFriendLink/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Link: params['link'],\r\n DisplayOrder: params['displayOrder'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CollectWaterService {\r\n /**\r\n * 同步NC收款流水\r\n */\r\n static syncCollectWater(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/SyncCollectWater';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetailForConfirm(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/GetDetailForConfirm';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static createByConfirm(\r\n params: {\r\n /** requestBody */\r\n body?: FundIncomeRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/CreateByConfirm';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 单据编号 */\r\n billNo?: string;\r\n /** */\r\n startDate?: string;\r\n /** */\r\n endDate?: string;\r\n /** 收支项目 */\r\n donateProject?: string;\r\n /** 摘要 */\r\n summary?: string;\r\n /** 收款银行账户 */\r\n receivingBankAccount?: string;\r\n /** 确认状态 */\r\n status?: CollectWaterStatus;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n BillNo: params['billNo'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n DonateProject: params['donateProject'],\r\n Summary: params['summary'],\r\n ReceivingBankAccount: params['receivingBankAccount'],\r\n Status: params['status'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CollectWaterCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CollectWaterCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CollectWater/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ConfigurationService {\r\n /**\r\n *\r\n */\r\n static changeUiTheme(\r\n params: {\r\n /** requestBody */\r\n body?: ChangeUiThemeInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Configuration/ChangeUiTheme';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CustomFormService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CustomFormCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CustomFormCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static copyExistForm(\r\n params: {\r\n /** requestBody */\r\n body?: CustomFormCopyInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/CopyExistForm';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取表单的ID\r\n */\r\n static getCustomFormId(\r\n params: {\r\n /** */\r\n hostType?: CustomFormType;\r\n /** */\r\n hostId?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/GetCustomFormId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { HostType: params['hostType'], HostId: params['hostId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据类名获取默认的固定字段表单定义\r\n */\r\n static getDefaultFields(\r\n params: {\r\n /** */\r\n formType?: CustomFormType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/GetDefaultFields';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { formType: params['formType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 拷贝\r\n */\r\n static copy(\r\n params: {\r\n /** requestBody */\r\n body?: CustomFormCopyInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/Copy';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n hostType?: CustomFormType;\r\n /** */\r\n hostId?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n HostType: params['hostType'],\r\n HostId: params['hostId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CustomForm/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class CycleDonateConfigService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 捐助人姓名 */\r\n displayName?: string;\r\n /** 手机号 */\r\n mobileTelephone?: string;\r\n /** 定时捐类型 */\r\n donationType?: DonationType;\r\n /** 是否开启 */\r\n isOpen?: boolean;\r\n /** 捐助人身份 */\r\n userType?: UserType;\r\n /** 捐赠类型 */\r\n donorType?: DonorType;\r\n /** Id */\r\n id?: number;\r\n /** 订单Id */\r\n contractOrderId?: string;\r\n /** 用户Id */\r\n userId?: number;\r\n /** 捐贈意向类型 */\r\n donorItemType?: DonorItemType;\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n MobileTelephone: params['mobileTelephone'],\r\n DonationType: params['donationType'],\r\n IsOpen: params['isOpen'],\r\n UserType: params['userType'],\r\n DonorType: params['donorType'],\r\n Id: params['id'],\r\n ContractOrderId: params['contractOrderId'],\r\n UserId: params['userId'],\r\n DonorItemType: params['donorItemType'],\r\n DonorItemId: params['donorItemId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetailByUser(\r\n params: {\r\n /** Id */\r\n id?: number;\r\n /** 捐贈意向类型 */\r\n donorItemType?: DonorItemType;\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/GetDetailByUser';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'], DonorItemType: params['donorItemType'], DonorItemId: params['donorItemId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetailByOrder(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/GetDetailByOrder';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static changeStatus(\r\n params: {\r\n /** requestBody */\r\n body?: CycleDonateChangeStatusInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/ChangeStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static changeCycle(\r\n params: {\r\n /** requestBody */\r\n body?: CycleDonateChangeCycleInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/CycleDonateConfig/ChangeCycle';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DashbordService {\r\n /**\r\n * 获取每月发布普通活动数量、志愿者活动数量\r\n */\r\n static getActivityCountMonthly(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetActivityCountMonthly';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取发布文章总数、发布活动总数\r\n */\r\n static getPublishedCount(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetPublishedCount';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取每月总志愿者数量、每月新增志愿者数量\r\n */\r\n static getVolunteerCountMonthly(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetVolunteerCountMonthly';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取站点访问记录(参数必填,否则报错)\r\n */\r\n static getAccessRecord(\r\n params: {\r\n /** */\r\n start: string;\r\n /** */\r\n end: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetAccessRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { start: params['start'], end: params['end'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 专项基金收入排行\r\n */\r\n static getFundIncomeRecordRank(\r\n params: {\r\n /** */\r\n start: string;\r\n /** */\r\n end?: string;\r\n /** */\r\n fundType?: string;\r\n /** */\r\n isLimitTop10?: boolean;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetFundIncomeRecordRank';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n start: params['start'],\r\n end: params['end'],\r\n fundType: params['fundType'],\r\n isLimitTop10: params['isLimitTop10']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 专项基金支出排行\r\n */\r\n static getFundAppropriateRecordRank(\r\n params: {\r\n /** */\r\n start: string;\r\n /** */\r\n end?: string;\r\n /** */\r\n fundType?: string;\r\n /** */\r\n isLimitTop10?: boolean;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetFundAppropriateRecordRank';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n start: params['start'],\r\n end: params['end'],\r\n fundType: params['fundType'],\r\n isLimitTop10: params['isLimitTop10']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 基金账户余额排行\r\n */\r\n static getFundBalanceRecordRank(\r\n params: {\r\n /** */\r\n start: string;\r\n /** */\r\n end?: string;\r\n /** */\r\n fundType?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetFundBalanceRecordRank';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { start: params['start'], end: params['end'], fundType: params['fundType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 各项目当月筹款排行\r\n */\r\n static getFundProjectIncomeRank(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetFundProjectIncomeRank';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 项目领域占比表\r\n */\r\n static getProjectCategoryChart(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetProjectCategoryChart';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 年度筹款额\r\n */\r\n static getTotalIncomeByYear(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetTotalIncomeByYear';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 年度新增基金总数\r\n */\r\n static getNewFundByYear(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetNewFundByYear';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 年度新增基金项目总数\r\n */\r\n static getNewFundProjectByYear(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetNewFundProjectByYear';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 年度新增志愿者总数\r\n */\r\n static getNewVolunteerByYear(\r\n params: {\r\n /** */\r\n year: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetNewVolunteerByYear';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { year: params['year'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 当月新增志愿者总数\r\n */\r\n static getNewVolunteerByCurrentMonth(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetNewVolunteerByCurrentMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 当月志愿者活动签到次数\r\n */\r\n static getActivitySignInCountByCurrentMonth(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetActivitySignInCountByCurrentMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 当月志愿者活动报名次数\r\n */\r\n static getActivityApplyCountByCurrentMonth(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetActivityApplyCountByCurrentMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 当月新发布志愿者活动数量\r\n */\r\n static getNewPublishedActivityCountByCurrentMonth(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Dashbord/GetNewPublishedActivityCountByCurrentMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DataDictionaryService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: DataDictionaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: DataDictionaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static syncToTenant(\r\n params: {\r\n /** requestBody */\r\n body?: DataDictionarySyncInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/SyncToTenant';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 分页查询\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n parentId?: number;\r\n /** */\r\n isParent?: boolean;\r\n /** 键名 */\r\n key?: string;\r\n /** 显示的名称 */\r\n displayName?: string;\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n /** */\r\n parentKey?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ParentId: params['parentId'],\r\n IsParent: params['isParent'],\r\n Key: params['key'],\r\n DisplayName: params['displayName'],\r\n DisplayOrder: params['displayOrder'],\r\n ParentKey: params['parentKey'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据parentID获取子字典数据\r\n */\r\n static getListByParentId(\r\n params: {\r\n /** */\r\n parentId?: number;\r\n /** */\r\n isParent?: boolean;\r\n /** 键名 */\r\n key?: string;\r\n /** 显示的名称 */\r\n displayName?: string;\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n /** */\r\n parentKey?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/GetListByParentId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ParentId: params['parentId'],\r\n IsParent: params['isParent'],\r\n Key: params['key'],\r\n DisplayName: params['displayName'],\r\n DisplayOrder: params['displayOrder'],\r\n ParentKey: params['parentKey'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据Key获取子字典数据\r\n */\r\n static getDataDictionaryListByKey(\r\n params: {\r\n /** */\r\n parentId?: number;\r\n /** */\r\n isParent?: boolean;\r\n /** 键名 */\r\n key?: string;\r\n /** 显示的名称 */\r\n displayName?: string;\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n /** */\r\n parentKey?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/GetDataDictionaryListByKey';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ParentId: params['parentId'],\r\n IsParent: params['isParent'],\r\n Key: params['key'],\r\n DisplayName: params['displayName'],\r\n DisplayOrder: params['displayOrder'],\r\n ParentKey: params['parentKey'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据Key获取不分页的字典项\r\n */\r\n static getDataDictionaryByKey(\r\n params: {\r\n /** */\r\n key?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/GetDataDictionaryByKey';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { key: params['key'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取所有的一级字典项\r\n */\r\n static getAllRoot(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/GetAllRoot';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataDictionary/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DataPermissionLimitService {\r\n /**\r\n * 获取数据\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n hostId?: string;\r\n /** */\r\n hostType?: DataPermissionLimitHostType;\r\n /** */\r\n targetType?: DataPermissionLimitTargetType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataPermissionLimit/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { HostId: params['hostId'], HostType: params['hostType'], TargetType: params['targetType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: DataPermissionLimitUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataPermissionLimit/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static reset(\r\n params: {\r\n /** requestBody */\r\n body?: DataPermissionLimitHostType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataPermissionLimit/Reset';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DataPermissionLimit/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DepartmentService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: DepartmentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Department/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Department/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: DepartmentCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Department/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Department/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Department/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DonatedAmountConfigService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: DonatedAmountConfigCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static search(\r\n params: {\r\n /** 名称 */\r\n name?: string;\r\n /** */\r\n sourceType?: DonatedAmountConfigSourceType;\r\n /** */\r\n sourceId?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/Search';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n SourceType: params['sourceType'],\r\n SourceId: params['sourceId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: DonatedAmountConfigCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 名称 */\r\n name?: string;\r\n /** */\r\n sourceType?: DonatedAmountConfigSourceType;\r\n /** */\r\n sourceId?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n SourceType: params['sourceType'],\r\n SourceId: params['sourceId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/DonatedAmountConfig/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class DownloadService {\r\n /**\r\n *\r\n */\r\n static attachment(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Download/Attachment';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static batchDownload(\r\n params: {\r\n /** */\r\n id?: string;\r\n /** */\r\n zipFileName?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Download/BatchDownload';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'], zipFileName: params['zipFileName'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ElectronicInvoiceService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ElectronicInvoiceCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static createByPaySuccess(\r\n params: {\r\n /** */\r\n invoiceAmount?: number;\r\n /** requestBody */\r\n body?: ElectronicInvoiceCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/CreateByPaySuccess';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { invoiceAmount: params['invoiceAmount'] };\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ElectronicInvoiceCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getSelectFundIncomeRecord(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/GetSelectFundIncomeRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getUserElectronicInvoice(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/GetUserElectronicInvoice';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取发票数据\r\n */\r\n static getInvoiceCount(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/GetInvoiceCount';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 设置发票数量\r\n */\r\n static setInvoiceCount(\r\n params: {\r\n /** requestBody */\r\n body?: ElectronicInvoiceCountPutDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/SetInvoiceCount';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 确认\r\n */\r\n static confirm(\r\n params: {\r\n /** requestBody */\r\n body?: ElectronicInvoiceConfirmPutDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/Confirm';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 冲红\r\n */\r\n static creditNote(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/CreditNote';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出电子发票\r\n */\r\n static exportExcel(\r\n params: {\r\n /** requestBody */\r\n body?: ElectronicInvoicePagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/ExportExcel';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 捐赠票据抬头 */\r\n donationNoteTitle?: string;\r\n /** 电子发票状态 */\r\n status?: ElectronicInvoiceStatus;\r\n /** 手机号 */\r\n mobilePhone?: string;\r\n /** 邮箱 */\r\n email?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DonationNoteTitle: params['donationNoteTitle'],\r\n Status: params['status'],\r\n MobilePhone: params['mobilePhone'],\r\n Email: params['email'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ElectronicInvoice/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class EnumService {\r\n /**\r\n * 获取枚举选项列表\r\n */\r\n static getValues(\r\n params: {\r\n /** 枚举名称,如:NotifyTemplateType */\r\n typeName?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Enum/GetValues';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { typeName: params['typeName'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllEnums(\r\n params: {\r\n /** */\r\n filter?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Enum/GetAllEnums';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { filter: params['filter'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAppEnums(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Enum/GetAppEnums';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAppEnumNames(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Enum/GetAppEnumNames';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalDueDiligenceRecordService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalDueDiligenceRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 尽调形式 */\r\n dueDiligenceTypeId?: number;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 结束时间 */\r\n endDate?: string;\r\n /** */\r\n startDateStart?: string;\r\n /** */\r\n startDateEnd?: string;\r\n /** */\r\n endDateStart?: string;\r\n /** */\r\n endDateEnd?: string;\r\n /** */\r\n place?: string;\r\n /** */\r\n members?: string;\r\n /** */\r\n visitObjectJson?: string;\r\n /** */\r\n orgInfo?: string;\r\n /** */\r\n projectInfo?: string;\r\n /** */\r\n omnibusOpinion?: string;\r\n /** */\r\n organizationUnitName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n organizationUnitId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DueDiligenceTypeId: params['dueDiligenceTypeId'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n StartDateStart: params['startDateStart'],\r\n StartDateEnd: params['startDateEnd'],\r\n EndDateStart: params['endDateStart'],\r\n EndDateEnd: params['endDateEnd'],\r\n Place: params['place'],\r\n Members: params['members'],\r\n VisitObjectJson: params['visitObjectJson'],\r\n OrgInfo: params['orgInfo'],\r\n ProjectInfo: params['projectInfo'],\r\n OmnibusOpinion: params['omnibusOpinion'],\r\n OrganizationUnitName: params['organizationUnitName'],\r\n ProjectName: params['projectName'],\r\n OrganizationUnitId: params['organizationUnitId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalDueDiligenceRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 尽调形式 */\r\n dueDiligenceTypeId?: number;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 结束时间 */\r\n endDate?: string;\r\n /** */\r\n startDateStart?: string;\r\n /** */\r\n startDateEnd?: string;\r\n /** */\r\n endDateStart?: string;\r\n /** */\r\n endDateEnd?: string;\r\n /** */\r\n place?: string;\r\n /** */\r\n members?: string;\r\n /** */\r\n visitObjectJson?: string;\r\n /** */\r\n orgInfo?: string;\r\n /** */\r\n projectInfo?: string;\r\n /** */\r\n omnibusOpinion?: string;\r\n /** */\r\n organizationUnitName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n organizationUnitId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DueDiligenceTypeId: params['dueDiligenceTypeId'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n StartDateStart: params['startDateStart'],\r\n StartDateEnd: params['startDateEnd'],\r\n EndDateStart: params['endDateStart'],\r\n EndDateEnd: params['endDateEnd'],\r\n Place: params['place'],\r\n Members: params['members'],\r\n VisitObjectJson: params['visitObjectJson'],\r\n OrgInfo: params['orgInfo'],\r\n ProjectInfo: params['projectInfo'],\r\n OmnibusOpinion: params['omnibusOpinion'],\r\n OrganizationUnitName: params['organizationUnitName'],\r\n ProjectName: params['projectName'],\r\n OrganizationUnitId: params['organizationUnitId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalDueDiligenceRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalMonthlyPlanService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalMonthlyPlanCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalMonthlyPlanCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取我的未填写总结的月活动计划列表\r\n */\r\n static getMyExternalMonthlyPlanList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetMyExternalMonthlyPlanList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { ProjectId: params['projectId'], Date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据年月获取有月计划的项目id\r\n */\r\n static getExternalProjectIdListByDate(\r\n params: {\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetExternalProjectIdListByDate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年月 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 所属项目ID */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 年月 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 所属项目ID */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlyPlan/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalMonthlySummarizeService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalMonthlySummarizeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalMonthlySummarizeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年月 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 年月 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalMonthlySummarize/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectService {\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 复制新增\r\n */\r\n static copyCreate(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/CopyCreate';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取外部项目计划书详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据ProjectId获取外部项目计划书详情\r\n */\r\n static getDetailByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetDetailByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectMonthlySummaizeDetailsByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetProjectMonthlySummaizeDetailsByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新外部项目预算表\r\n */\r\n static updateBudgetItem(\r\n params: {\r\n /** requestBody */\r\n body?: UpdateExternalProjectBudgetItemsDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/UpdateBudgetItem';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取外部项目已立项列表\r\n */\r\n static getExternalProjectList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetExternalProjectList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据年月获取有月计划的外部项目列表\r\n */\r\n static getExternalProjectListByDate(\r\n params: {\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetExternalProjectListByDate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n displayName?: string;\r\n /** */\r\n orgName?: string;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n isPhase?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n OrgName: params['orgName'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n IsPhase: params['isPhase'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n displayName?: string;\r\n /** */\r\n orgName?: string;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n isPhase?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProject/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n OrgName: params['orgName'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n IsPhase: params['isPhase'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectChangeApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectChangeApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectChangeApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 变更时间 */\r\n changeDate?: string;\r\n /** */\r\n changeTypes?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n ChangeDate: params['changeDate'],\r\n ChangeTypes: params['changeTypes'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 变更时间 */\r\n changeDate?: string;\r\n /** */\r\n changeTypes?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectChangeApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n ChangeDate: params['changeDate'],\r\n ChangeTypes: params['changeTypes'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectCloseReportService {\r\n /**\r\n *\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CloseReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: CloseReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发送评估总结报告填写通知\r\n */\r\n static sendNotify(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/SendNotify';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectCloseReport/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectIntentionService {\r\n /**\r\n * 获取项目意向书详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectIntentionCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectIntentionCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectIntention/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectPhaseService {\r\n /**\r\n *\r\n */\r\n static getProjectPhasesList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/GetProjectPhasesList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectMonthList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/GetProjectMonthList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectAttachmentListByPhase(\r\n params: {\r\n /** 项目ID */\r\n projectId?: number;\r\n /** 节点枚举 */\r\n stage?: WorkflowOfProjectByExternal;\r\n /** 年份 */\r\n year?: number;\r\n /** 月份 */\r\n month?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/GetProjectAttachmentListByPhase';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n Stage: params['stage'],\r\n Year: params['year'],\r\n Month: params['month'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectAttachmentListByMonth(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n /** 项目ID */\r\n projectId?: number;\r\n /** 年份 */\r\n year?: number;\r\n /** 月份 */\r\n month?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/GetProjectAttachmentListByMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n Month: params['month']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static batchDownloadProjectPhasesAttachment(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n stage?: WorkflowOfProjectByExternal;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/BatchDownloadProjectPhasesAttachment';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'], stage: params['stage'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static batchDownloadProjectMonthAttachment(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n month?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectPhase/BatchDownloadProjectMonthAttachment';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'], year: params['year'], month: params['month'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectProcessMonitoringService {\r\n /**\r\n * 获取监测记录详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectProcessMonitoringCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalProjectProcessMonitoringCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发送监测记录填写通知\r\n */\r\n static sendNotify(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/SendNotify';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 监测主题 */\r\n title?: string;\r\n /** 监测方式 */\r\n monitoringType?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n Title: params['title'],\r\n MonitoringType: params['monitoringType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 监测主题 */\r\n title?: string;\r\n /** 监测方式 */\r\n monitoringType?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProcessMonitoring/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n Title: params['title'],\r\n MonitoringType: params['monitoringType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectProgressReportService {\r\n /**\r\n * 获取中期报告详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProgressReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProgressReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发送中期报告填写通知\r\n */\r\n static sendNotify(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/SendNotify';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectProgressReport/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectReportService {\r\n /**\r\n * 外部项目宏观展示\r\n */\r\n static getMacroscopic(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetMacroscopic';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 外部项目微观展示\r\n */\r\n static getMicrocosmics(\r\n params: {\r\n /** 项目年份 */\r\n year?: number;\r\n /** 项目类型 */\r\n projectType?: number;\r\n /** 项目状态 */\r\n status?: WorkflowOfProjectByExternal;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetMicrocosmics';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n ProjectType: params['projectType'],\r\n Status: params['status'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取未完成月总结的项目\r\n */\r\n static getNotCompleteMonthlySummaryProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetNotCompleteMonthlySummaryProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取未正常关项的项目\r\n */\r\n static getNotClosingNormallyProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetNotClosingNormallyProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 没有交付中期报告的项目列表\r\n */\r\n static getNotCompleteProgressReportProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetNotCompleteProgressReportProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 没有交付结项自评报告的项目列表\r\n */\r\n static getNotCompleteSummaryReportProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectReport/GetNotCompleteSummaryReportProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ExternalProjectSummaryReportService {\r\n /**\r\n * 获取结项自评报告详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据项目Id获取结项自评报告详情\r\n */\r\n static getDetailByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetDetailByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: SummaryReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: SummaryReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发送结项自评报告填写通知\r\n */\r\n static sendNotify(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/SendNotify';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n projectName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ExternalProjectSummaryReport/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectName: params['projectName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FeedbackService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static submit(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/Submit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 我的在线留言\r\n */\r\n static getMy(\r\n params: {\r\n /** 标题 */\r\n title?: string;\r\n /** 内容 */\r\n content?: string;\r\n /** 联系方式 */\r\n contactType?: string;\r\n /** 反馈类型Id */\r\n typeCodeId?: number;\r\n /** 反馈来源 */\r\n sourceType?: FeedbackSourceType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/GetMy';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Content: params['content'],\r\n ContactType: params['contactType'],\r\n TypeCodeId: params['typeCodeId'],\r\n SourceType: params['sourceType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static replySave(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/ReplySave';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 标题 */\r\n title?: string;\r\n /** 内容 */\r\n content?: string;\r\n /** 联系方式 */\r\n contactType?: string;\r\n /** 反馈类型Id */\r\n typeCodeId?: number;\r\n /** 反馈来源 */\r\n sourceType?: FeedbackSourceType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Feedback/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Content: params['content'],\r\n ContactType: params['contactType'],\r\n TypeCodeId: params['typeCodeId'],\r\n SourceType: params['sourceType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FeedbackReplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackReplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FeedbackReplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 显示记录\r\n */\r\n static show(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Show';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 隐藏记录\r\n */\r\n static hidden(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/Hidden';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 反馈信息Id */\r\n feedbackId?: number;\r\n /** 内容 */\r\n content?: string;\r\n /** 是否隐藏 */\r\n isHide?: boolean;\r\n /** 用户Id */\r\n userId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FeedbackReply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FeedbackId: params['feedbackId'],\r\n Content: params['content'],\r\n IsHide: params['isHide'],\r\n UserId: params['userId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundService {\r\n /**\r\n * 开启筹款\r\n */\r\n static enableFundRaising(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/EnableFundRaising';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 关闭筹款\r\n */\r\n static disableFundRaising(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/DisableFundRaising';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 全部发送基金消息\r\n */\r\n static sendAllMessage(\r\n params: {\r\n /** */\r\n messageId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/SendAllMessage';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { messageId: params['messageId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 选择发送基金消息\r\n */\r\n static sendMessage(\r\n params: {\r\n /** requestBody */\r\n body?: FundSendMessageInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/SendMessage';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取二维码\r\n */\r\n static downQrCode(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n /** */\r\n donateType?: DonateType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/DownQrCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'], donateType: params['donateType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金名称 */\r\n name?: string;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Type: params['type'],\r\n IsAudited: params['isAudited'],\r\n FundCategory: params['fundCategory'],\r\n IsPublished: params['isPublished'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getList(\r\n params: {\r\n /** 基金名称 */\r\n name?: string;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/GetList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Type: params['type'],\r\n IsAudited: params['isAudited'],\r\n FundCategory: params['fundCategory'],\r\n IsPublished: params['isPublished'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取基金消息\r\n */\r\n static getFundMessage(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/GetFundMessage';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取基金消息\r\n */\r\n static getFundMessageAll(\r\n params: {\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/GetFundMessageAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取基金消息的未读数量\r\n */\r\n static getFundMessageUnReadCount(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/GetFundMessageUnReadCount';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新基金消息的阅读信息\r\n */\r\n static updateFundMessageRead(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/UpdateFundMessageRead';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 开始公示\r\n */\r\n static enablePublishShow(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/EnablePublishShow';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 关闭公示\r\n */\r\n static disablePublishShow(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Fund/DisablePublishShow';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundAccountService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 起始日期 */\r\n startDate?: string;\r\n /** 截止日期 */\r\n endDate?: string;\r\n /** 是否前端 */\r\n isFront?: boolean;\r\n /** 记录类型 */\r\n operationType?: FundAccountRecordOperationType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAccount/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Type: params['type'],\r\n FundID: params['fundId'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n IsFront: params['isFront'],\r\n OperationType: params['operationType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: FundAccountPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAccount/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static queryIncomeAndAppropriateFundRecord(\r\n params: {\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 起始日期 */\r\n startDate?: string;\r\n /** 截止日期 */\r\n endDate?: string;\r\n /** 是否前端 */\r\n isFront?: boolean;\r\n /** 记录类型 */\r\n operationType?: FundAccountRecordOperationType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAccount/QueryIncomeAndAppropriateFundRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Type: params['type'],\r\n FundID: params['fundId'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n IsFront: params['isFront'],\r\n OperationType: params['operationType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户最近一次申请的记录\r\n */\r\n static getLatestAudit(\r\n params: {\r\n /** */\r\n fundType?: FundType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/GetLatestAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { fundType: params['fundType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** */\r\n isAudited?: boolean;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n IsAudited: params['isAudited'],\r\n Type: params['type'],\r\n FundCategory: params['fundCategory'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** */\r\n isAudited?: boolean;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n IsAudited: params['isAudited'],\r\n Type: params['type'],\r\n FundCategory: params['fundCategory'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundAppropriateApplyService {\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundAppropriateApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n fundName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n isAudited?: boolean;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n title?: string;\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n /** */\r\n moneyAmountStart?: number;\r\n /** */\r\n moneyAmountEnd?: number;\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n /** 开户行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n /** 拨付类型 */\r\n appropriateType?: FundAppropriateType;\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n /** */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n ProjectName: params['projectName'],\r\n FundId: params['fundId'],\r\n IsAudited: params['isAudited'],\r\n ProjectId: params['projectId'],\r\n Title: params['title'],\r\n MoneyAmount: params['moneyAmount'],\r\n MoneyAmountStart: params['moneyAmountStart'],\r\n MoneyAmountEnd: params['moneyAmountEnd'],\r\n AppropriateReason: params['appropriateReason'],\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n ReceiverName: params['receiverName'],\r\n ReceiverTelephone: params['receiverTelephone'],\r\n AppropriateType: params['appropriateType'],\r\n OtherProjectName: params['otherProjectName'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n fundName?: string;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n isAudited?: boolean;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n title?: string;\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n /** */\r\n moneyAmountStart?: number;\r\n /** */\r\n moneyAmountEnd?: number;\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n /** 开户行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n /** 拨付类型 */\r\n appropriateType?: FundAppropriateType;\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n /** */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n ProjectName: params['projectName'],\r\n FundId: params['fundId'],\r\n IsAudited: params['isAudited'],\r\n ProjectId: params['projectId'],\r\n Title: params['title'],\r\n MoneyAmount: params['moneyAmount'],\r\n MoneyAmountStart: params['moneyAmountStart'],\r\n MoneyAmountEnd: params['moneyAmountEnd'],\r\n AppropriateReason: params['appropriateReason'],\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n ReceiverName: params['receiverName'],\r\n ReceiverTelephone: params['receiverTelephone'],\r\n AppropriateType: params['appropriateType'],\r\n OtherProjectName: params['otherProjectName'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundAppropriateRecordService {\r\n /**\r\n * 获取拨付统计\r\n */\r\n static statisticsTotalAmountByFundId(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateRecord/StatisticsTotalAmountByFundID';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取拨付统计\r\n */\r\n static statisticsTotalAmount(\r\n params: {\r\n /** */\r\n fundName?: string;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n title?: string;\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n /** 拨付金额 */\r\n moneyAmountStart?: number;\r\n /** 拨付金额 */\r\n moneyAmountEnd?: number;\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n /** 拨付时间 */\r\n appropriateTimeStart?: string;\r\n /** */\r\n appropriateTimeEnd?: string;\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n /** 开户行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n /** 状态 */\r\n status?: ValidStatus;\r\n /** 拨付类型 */\r\n appropriateType?: FundAppropriateType;\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n /** */\r\n year?: string;\r\n /** */\r\n month?: string;\r\n /** */\r\n day?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateRecord/StatisticsTotalAmount';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n FundId: params['fundId'],\r\n ProjectId: params['projectId'],\r\n ProjectName: params['projectName'],\r\n Title: params['title'],\r\n MoneyAmount: params['moneyAmount'],\r\n MoneyAmountStart: params['moneyAmountStart'],\r\n MoneyAmountEnd: params['moneyAmountEnd'],\r\n AppropriateReason: params['appropriateReason'],\r\n AppropriateTimeStart: params['appropriateTimeStart'],\r\n AppropriateTimeEnd: params['appropriateTimeEnd'],\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n ReceiverName: params['receiverName'],\r\n ReceiverTelephone: params['receiverTelephone'],\r\n Status: params['status'],\r\n AppropriateType: params['appropriateType'],\r\n OtherProjectName: params['otherProjectName'],\r\n Year: params['year'],\r\n Month: params['month'],\r\n Day: params['day'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n fundName?: string;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n title?: string;\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n /** 拨付金额 */\r\n moneyAmountStart?: number;\r\n /** 拨付金额 */\r\n moneyAmountEnd?: number;\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n /** 拨付时间 */\r\n appropriateTimeStart?: string;\r\n /** */\r\n appropriateTimeEnd?: string;\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n /** 开户行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n /** 状态 */\r\n status?: ValidStatus;\r\n /** 拨付类型 */\r\n appropriateType?: FundAppropriateType;\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n /** */\r\n year?: string;\r\n /** */\r\n month?: string;\r\n /** */\r\n day?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n FundId: params['fundId'],\r\n ProjectId: params['projectId'],\r\n ProjectName: params['projectName'],\r\n Title: params['title'],\r\n MoneyAmount: params['moneyAmount'],\r\n MoneyAmountStart: params['moneyAmountStart'],\r\n MoneyAmountEnd: params['moneyAmountEnd'],\r\n AppropriateReason: params['appropriateReason'],\r\n AppropriateTimeStart: params['appropriateTimeStart'],\r\n AppropriateTimeEnd: params['appropriateTimeEnd'],\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n ReceiverName: params['receiverName'],\r\n ReceiverTelephone: params['receiverTelephone'],\r\n Status: params['status'],\r\n AppropriateType: params['appropriateType'],\r\n OtherProjectName: params['otherProjectName'],\r\n Year: params['year'],\r\n Month: params['month'],\r\n Day: params['day'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 修改拨付时间\r\n */\r\n static changeAppropriateTime(\r\n params: {\r\n /** requestBody */\r\n body?: FundAppropriateRecordChangeAppropriateTimeInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateRecord/ChangeAppropriateTime';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundAppropriateRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundBankInfoService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundBankInfoCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundBankInfo/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundBankInfoCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundBankInfo/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundBankInfo/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundBankInfo/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundBankInfo/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundDonationMonthlyConfigService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationMonthlyConfig/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 捐赠项目类型 */\r\n donorItemType?: number;\r\n /** 捐赠项目编号 */\r\n donorItemId?: number;\r\n /** 捐赠协议序列号(签约银行返回) */\r\n donorSignSn?: string;\r\n /** 捐赠方类型(个人,团体,企业) */\r\n donorType?: DonorType;\r\n /** 固定捐助天 */\r\n donorDay?: number;\r\n /** 捐赠金额,单位:分 */\r\n donationAmount?: number;\r\n /** */\r\n donationAmountStart?: number;\r\n /** */\r\n donationAmountEnd?: number;\r\n /** 发票Id */\r\n invoiceId?: number;\r\n /** 捐赠留言 */\r\n leaveMessage?: string;\r\n /** 捐赠人联系号码 */\r\n mobileTelephone?: string;\r\n /** 发票附件编号,多个使用英文\",\"隔开 */\r\n attachments?: string;\r\n /** 捐赠人名称(匿名使用“爱心人士”) */\r\n displayName?: string;\r\n /** 平台与天付宝确认签约订单号,关联发票订单Id */\r\n spBillNo?: string;\r\n /** 天付宝确认签约订单号,关联发票订单Id */\r\n listId?: string;\r\n /** 月捐状态(1:开启,0:停止月捐) */\r\n isOpen?: boolean;\r\n /** 是否已确认 */\r\n isConfirmed?: boolean;\r\n /** 推荐人 */\r\n referrer?: string;\r\n /** 停止月捐时间 */\r\n stoppedTimeStart?: string;\r\n /** */\r\n stoppedTimeEnd?: string;\r\n /** 月捐类型(1天付宝,2微信) */\r\n configType?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationMonthlyConfig/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DonorItemType: params['donorItemType'],\r\n DonorItemId: params['donorItemId'],\r\n DonorSignSn: params['donorSignSn'],\r\n DonorType: params['donorType'],\r\n DonorDay: params['donorDay'],\r\n DonationAmount: params['donationAmount'],\r\n DonationAmountStart: params['donationAmountStart'],\r\n DonationAmountEnd: params['donationAmountEnd'],\r\n InvoiceId: params['invoiceId'],\r\n LeaveMessage: params['leaveMessage'],\r\n MobileTelephone: params['mobileTelephone'],\r\n Attachments: params['attachments'],\r\n DisplayName: params['displayName'],\r\n SpBillNo: params['spBillNo'],\r\n ListId: params['listId'],\r\n IsOpen: params['isOpen'],\r\n IsConfirmed: params['isConfirmed'],\r\n Referrer: params['referrer'],\r\n StoppedTimeStart: params['stoppedTimeStart'],\r\n StoppedTimeEnd: params['stoppedTimeEnd'],\r\n ConfigType: params['configType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 停止月捐\r\n */\r\n static stop(\r\n params: {\r\n /** requestBody */\r\n body?: EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationMonthlyConfig/Stop';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundDonationOrderService {\r\n /**\r\n * 创建基金捐助订单\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundDonationOrderCreateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 创建自动扣款订单\r\n */\r\n static createAutoDeductionOrder(\r\n params: {\r\n /** requestBody */\r\n body?: FundAutoDeductionOrderCreateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/CreateAutoDeductionOrder';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 处理支付回调\r\n */\r\n static processOrderResponse(\r\n params: {\r\n /** requestBody */\r\n body?: PaymentReponseInputDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/ProcessOrderResponse';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getById(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/GetById';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByOrderId(\r\n params: {\r\n /** */\r\n orderId?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/GetByOrderId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { orderId: params['orderId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n fundName?: string;\r\n /** */\r\n fundProjectName?: string;\r\n /** 订单号 */\r\n orderId?: string;\r\n /** 捐赠基金Id */\r\n fundId?: number;\r\n /** 捐赠项目ID */\r\n fundProjectId?: number;\r\n /** 捐赠金额 */\r\n donationAmount?: number;\r\n /** */\r\n donationAmountStart?: number;\r\n /** */\r\n donationAmountEnd?: number;\r\n /** 是否为手动新增订单 */\r\n isManualCreate?: boolean;\r\n /** 用户Id */\r\n userId?: number;\r\n /** 捐赠人手机号码 */\r\n mobileTelephone?: string;\r\n /** 捐赠人类型 */\r\n donorType?: DonorType;\r\n /** 捐赠人姓名 */\r\n donorName?: string;\r\n /** 留言 */\r\n leaveMessage?: string;\r\n /** 是否支付成功 */\r\n isPayed?: boolean;\r\n /** 支付成功时间 */\r\n payedTime?: string;\r\n /** */\r\n payedTimeStart?: string;\r\n /** */\r\n payedTimeEnd?: string;\r\n /** 支付类型 */\r\n paymentType?: string;\r\n /** 支付平台是否响应 */\r\n isResponsed?: boolean;\r\n /** 支付平台响应时间 */\r\n responseTime?: string;\r\n /** 支付平台返回消息 */\r\n resultMessage?: string;\r\n /** 显示的名称 */\r\n displayName?: string;\r\n /** 支付交易号 */\r\n tradeNo?: string;\r\n /** 捐赠者账号 */\r\n donorAccount?: string;\r\n /** 捐赠类型 */\r\n donationType?: IncomeType;\r\n /** 是否需要发票 */\r\n needInvoice?: boolean;\r\n /** 订单交易流水号(天付宝用) */\r\n orderSerialNo?: string;\r\n /** 推荐人 */\r\n referrer?: string;\r\n /** 月捐日期 */\r\n monthDonorDay?: number;\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundDonationOrder/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n FundProjectName: params['fundProjectName'],\r\n OrderId: params['orderId'],\r\n FundID: params['fundId'],\r\n FundProjectID: params['fundProjectId'],\r\n DonationAmount: params['donationAmount'],\r\n DonationAmountStart: params['donationAmountStart'],\r\n DonationAmountEnd: params['donationAmountEnd'],\r\n IsManualCreate: params['isManualCreate'],\r\n UserId: params['userId'],\r\n MobileTelephone: params['mobileTelephone'],\r\n DonorType: params['donorType'],\r\n DonorName: params['donorName'],\r\n LeaveMessage: params['leaveMessage'],\r\n IsPayed: params['isPayed'],\r\n PayedTime: params['payedTime'],\r\n PayedTimeStart: params['payedTimeStart'],\r\n PayedTimeEnd: params['payedTimeEnd'],\r\n PaymentType: params['paymentType'],\r\n IsResponsed: params['isResponsed'],\r\n ResponseTime: params['responseTime'],\r\n ResultMessage: params['resultMessage'],\r\n DisplayName: params['displayName'],\r\n TradeNo: params['tradeNo'],\r\n DonorAccount: params['donorAccount'],\r\n DonationType: params['donationType'],\r\n NeedInvoice: params['needInvoice'],\r\n OrderSerialNo: params['orderSerialNo'],\r\n Referrer: params['referrer'],\r\n MonthDonorDay: params['monthDonorDay'],\r\n DonorItemId: params['donorItemId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundIncomeRecordService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundIncomeRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 关键词 */\r\n keyword?: string;\r\n /** 捐赠者名称 */\r\n donorName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 结束时间 */\r\n endDate?: string;\r\n /** 捐赠者类型 */\r\n donorType?: DonorType;\r\n /** 捐赠意向 */\r\n incomeType?: IncomeType;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金项目Id */\r\n projectId?: number;\r\n /** 支付方式 */\r\n paymentType?: string;\r\n /** 捐助方式 */\r\n isMonthDonor?: boolean;\r\n /** 用户Id */\r\n userId?: number;\r\n /** */\r\n weixinTradeNo?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n DonorName: params['donorName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n DonorType: params['donorType'],\r\n IncomeType: params['incomeType'],\r\n FundId: params['fundId'],\r\n ProjectId: params['projectId'],\r\n PaymentType: params['paymentType'],\r\n IsMonthDonor: params['isMonthDonor'],\r\n UserId: params['userId'],\r\n WeixinTradeNo: params['weixinTradeNo'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundIncomeRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** 关键词 */\r\n keyword?: string;\r\n /** 捐赠者名称 */\r\n donorName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 结束时间 */\r\n endDate?: string;\r\n /** 捐赠者类型 */\r\n donorType?: DonorType;\r\n /** 捐赠意向 */\r\n incomeType?: IncomeType;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金项目Id */\r\n projectId?: number;\r\n /** 支付方式 */\r\n paymentType?: string;\r\n /** 捐助方式 */\r\n isMonthDonor?: boolean;\r\n /** 用户Id */\r\n userId?: number;\r\n /** */\r\n weixinTradeNo?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n DonorName: params['donorName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n DonorType: params['donorType'],\r\n IncomeType: params['incomeType'],\r\n FundId: params['fundId'],\r\n ProjectId: params['projectId'],\r\n PaymentType: params['paymentType'],\r\n IsMonthDonor: params['isMonthDonor'],\r\n UserId: params['userId'],\r\n WeixinTradeNo: params['weixinTradeNo'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getTotalMoney(\r\n params: {\r\n /** 关键词 */\r\n keyword?: string;\r\n /** 捐赠者名称 */\r\n donorName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 结束时间 */\r\n endDate?: string;\r\n /** 捐赠者类型 */\r\n donorType?: DonorType;\r\n /** 捐赠意向 */\r\n incomeType?: IncomeType;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金项目Id */\r\n projectId?: number;\r\n /** 支付方式 */\r\n paymentType?: string;\r\n /** 捐助方式 */\r\n isMonthDonor?: boolean;\r\n /** 用户Id */\r\n userId?: number;\r\n /** */\r\n weixinTradeNo?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetTotalMoney';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n DonorName: params['donorName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n DonorType: params['donorType'],\r\n IncomeType: params['incomeType'],\r\n FundId: params['fundId'],\r\n ProjectId: params['projectId'],\r\n PaymentType: params['paymentType'],\r\n IsMonthDonor: params['isMonthDonor'],\r\n UserId: params['userId'],\r\n WeixinTradeNo: params['weixinTradeNo'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getTotalByProtal(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetTotalByProtal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导入资金捐赠\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出捐赠明细\r\n */\r\n static exportFundIncomeRecord(\r\n params: {\r\n /** requestBody */\r\n body?: FundIncomeRecordPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/ExportFundIncomeRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出捐赠明细总表\r\n */\r\n static exportFundIncomeRecordTotal(\r\n params: {\r\n /** requestBody */\r\n body?: FundIncomeRecordPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/ExportFundIncomeRecordTotal';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户捐赠数据\r\n */\r\n static getUserDonateInfo(\r\n params: {\r\n /** */\r\n userId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetUserDonateInfo';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { userId: params['userId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getDonationIntentById(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundIncomeRecord/GetDonationIntentById';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundManageFeeRecordService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n /** */\r\n amount?: number;\r\n /** */\r\n amountStart?: number;\r\n /** */\r\n amountEnd?: number;\r\n /** */\r\n content?: string;\r\n /** */\r\n ration?: number;\r\n /** */\r\n rationStart?: number;\r\n /** */\r\n rationEnd?: number;\r\n /** */\r\n remark?: string;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** */\r\n startDate?: string;\r\n /** */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundManageFeeRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n Amount: params['amount'],\r\n AmountStart: params['amountStart'],\r\n AmountEnd: params['amountEnd'],\r\n Content: params['content'],\r\n Ration: params['ration'],\r\n RationStart: params['rationStart'],\r\n RationEnd: params['rationEnd'],\r\n Remark: params['remark'],\r\n FundName: params['fundName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundManageFeeRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 变更管理费\r\n */\r\n static change(\r\n params: {\r\n /** requestBody */\r\n body?: FundManageFeeRecordChangeRequestInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundManageFeeRecord/Change';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundModifyApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundModifyApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundModifyApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 基金名称 */\r\n name?: string;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Type: params['type'],\r\n IsAudited: params['isAudited'],\r\n FundCategory: params['fundCategory'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金名称 */\r\n name?: string;\r\n /** 基金类型 */\r\n type?: FundType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundModifyApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Type: params['type'],\r\n IsAudited: params['isAudited'],\r\n FundCategory: params['fundCategory'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundNonCashDonationService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundNonCashDonationRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** */\r\n company?: string;\r\n /** */\r\n address?: string;\r\n /** */\r\n homeTelephone?: string;\r\n /** 手机号码 */\r\n telephone?: string;\r\n /** 期望联系方式(1手机 2邮箱 3两种皆可) */\r\n contactType?: number;\r\n /** 捐赠类型(1物品捐赠,2场地/其他捐赠) */\r\n donationType?: number;\r\n /** */\r\n isAudited?: boolean;\r\n /** 关键词 */\r\n keyword?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Company: params['company'],\r\n Address: params['address'],\r\n HomeTelephone: params['homeTelephone'],\r\n Telephone: params['telephone'],\r\n ContactType: params['contactType'],\r\n DonationType: params['donationType'],\r\n IsAudited: params['isAudited'],\r\n Keyword: params['keyword'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户实物捐赠次数\r\n */\r\n static getUserNonCashDonationCount(\r\n params: {\r\n /** */\r\n userId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/GetUserNonCashDonationCount';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { userId: params['userId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundNonCashDonationRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n name?: string;\r\n /** */\r\n company?: string;\r\n /** */\r\n address?: string;\r\n /** */\r\n homeTelephone?: string;\r\n /** 手机号码 */\r\n telephone?: string;\r\n /** 期望联系方式(1手机 2邮箱 3两种皆可) */\r\n contactType?: number;\r\n /** 捐赠类型(1物品捐赠,2场地/其他捐赠) */\r\n donationType?: number;\r\n /** */\r\n isAudited?: boolean;\r\n /** 关键词 */\r\n keyword?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Name: params['name'],\r\n Company: params['company'],\r\n Address: params['address'],\r\n HomeTelephone: params['homeTelephone'],\r\n Telephone: params['telephone'],\r\n ContactType: params['contactType'],\r\n DonationType: params['donationType'],\r\n IsAudited: params['isAudited'],\r\n Keyword: params['keyword'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundNonCashDonation/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByPortal(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/GetByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 基金项目名称 */\r\n fundProjectName?: string;\r\n /** 基金项目状态 */\r\n status?: FundProjectStatus;\r\n /** 基金项目类型 */\r\n projectType?: FundProjectType;\r\n /** */\r\n categoryName?: string;\r\n /** */\r\n isNeedAll?: boolean;\r\n /** */\r\n isBrand?: boolean;\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 是否过滤OrgId */\r\n isFilterOrgId?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundName: params['fundName'],\r\n FundProjectName: params['fundProjectName'],\r\n Status: params['status'],\r\n ProjectType: params['projectType'],\r\n CategoryName: params['categoryName'],\r\n IsNeedAll: params['isNeedAll'],\r\n IsBrand: params['isBrand'],\r\n FundId: params['fundId'],\r\n IsFilterOrgId: params['isFilterOrgId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getList(\r\n params: {\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 基金项目名称 */\r\n name?: string;\r\n /** 项目范围 */\r\n categoryName?: string;\r\n /** 基金项目类型 */\r\n projectType?: FundProjectType;\r\n /** 基金项目状态 */\r\n projectStatus?: FundProjectStatus;\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/GetList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n FundName: params['fundName'],\r\n Name: params['name'],\r\n CategoryName: params['categoryName'],\r\n ProjectType: params['projectType'],\r\n ProjectStatus: params['projectStatus'],\r\n IsBrand: params['isBrand'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getSummarization(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/GetSummarization';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 手动创建订单记录\r\n */\r\n static manualCreateDonateOrder(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectManualCreateDonateOrderInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/ManualCreateDonateOrder';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 项目结项\r\n */\r\n static close(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectCloseInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/Close';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 结束项目\r\n */\r\n static endProject(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/EndProject';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 开始项目\r\n */\r\n static openProject(\r\n params: {\r\n /** requestBody */\r\n body?: Int32EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/OpenProject';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载二维码\r\n */\r\n static downloadQrCode(\r\n params: {\r\n /** */\r\n id?: number;\r\n /** */\r\n donateType?: DonateType;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/DownloadQrCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'], donateType: params['donateType'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 开启筹款\r\n */\r\n static enableFundRaising(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/EnableFundRaising';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 关闭筹款\r\n */\r\n static disableFundRaising(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/DisableFundRaising';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 开启公示\r\n */\r\n static disableFundSpecial(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/DisableFundSpecial';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 关闭公示\r\n */\r\n static enableFundSpecial(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/EnableFundSpecial';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 置顶\r\n */\r\n static stickyPost(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/StickyPost';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消置顶\r\n */\r\n static cancelStickyPost(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/CancelStickyPost';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 基金项目名称 */\r\n name?: string;\r\n /** 项目范围 */\r\n categoryName?: string;\r\n /** 基金项目类型 */\r\n projectType?: FundProjectType;\r\n /** 基金项目状态 */\r\n projectStatus?: FundProjectStatus;\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProject/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n FundName: params['fundName'],\r\n Name: params['name'],\r\n CategoryName: params['categoryName'],\r\n ProjectType: params['projectType'],\r\n ProjectStatus: params['projectStatus'],\r\n IsBrand: params['isBrand'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n /** */\r\n name?: string;\r\n /** */\r\n projectType?: FundProjectType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n Name: params['name'],\r\n ProjectType: params['projectType'],\r\n IsAudited: params['isAudited'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n /** */\r\n name?: string;\r\n /** */\r\n projectType?: FundProjectType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n Name: params['name'],\r\n ProjectType: params['projectType'],\r\n IsAudited: params['isAudited'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n /** */\r\n name?: string;\r\n /** */\r\n projectType?: FundProjectType;\r\n /** */\r\n isAudited?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n Name: params['name'],\r\n ProjectType: params['projectType'],\r\n IsAudited: params['isAudited'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectContentService {\r\n /**\r\n * 创建基金项目的文章。请先保存文章,在获取得到文章的ID后,再调用此接口\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectCmsContentCreateInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectContent/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 删除基金项目的文章关联,并下架该文章\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectContent/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n title?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectContent/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n ProjectName: params['projectName'],\r\n Title: params['title'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectDonationRecordService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n fundName?: string;\r\n /** */\r\n donorType?: number;\r\n /** */\r\n displayName?: string;\r\n /** */\r\n donateTimeStart?: string;\r\n /** */\r\n donateTimeEnd?: string;\r\n /** */\r\n donateMoney?: number;\r\n /** */\r\n donateMoneyStart?: number;\r\n /** */\r\n donateMoneyEnd?: number;\r\n /** */\r\n content?: string;\r\n /** */\r\n leaveMessage?: string;\r\n /** */\r\n recordSource?: number;\r\n /** */\r\n donorMobilePhone?: string;\r\n /** 捐赠类型(1为线上捐款,2为线下捐款) */\r\n paymentType?: number;\r\n /** 捐赠类型(1为捐给项目,2为捐给基金) */\r\n donationType?: number;\r\n /** 是否月捐 */\r\n isMonthDonor?: boolean;\r\n /** 推荐人 */\r\n referrer?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectDonationRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n ProjectName: params['projectName'],\r\n FundId: params['fundId'],\r\n FundName: params['fundName'],\r\n DonorType: params['donorType'],\r\n DisplayName: params['displayName'],\r\n DonateTimeStart: params['donateTimeStart'],\r\n DonateTimeEnd: params['donateTimeEnd'],\r\n DonateMoney: params['donateMoney'],\r\n DonateMoneyStart: params['donateMoneyStart'],\r\n DonateMoneyEnd: params['donateMoneyEnd'],\r\n Content: params['content'],\r\n LeaveMessage: params['leaveMessage'],\r\n RecordSource: params['recordSource'],\r\n DonorMobilePhone: params['donorMobilePhone'],\r\n PaymentType: params['paymentType'],\r\n DonationType: params['donationType'],\r\n IsMonthDonor: params['isMonthDonor'],\r\n Referrer: params['referrer'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectModifyApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectModifyApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n name?: string;\r\n /** */\r\n isAudited?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n FundId: params['fundId'],\r\n Name: params['name'],\r\n IsAudited: params['isAudited'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectModifyApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n fundId?: number;\r\n /** */\r\n name?: string;\r\n /** */\r\n isAudited?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n FundId: params['fundId'],\r\n Name: params['name'],\r\n IsAudited: params['isAudited'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectModifyApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectProgressService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectProgressCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectProgressCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发布\r\n */\r\n static publish(\r\n params: {\r\n /** requestBody */\r\n body?: EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/Publish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消发布\r\n */\r\n static cancelPublish(\r\n params: {\r\n /** requestBody */\r\n body?: EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/CancelPublish';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByPortal(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/GetByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllByPortal(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n summary?: string;\r\n /** */\r\n title?: string;\r\n /** */\r\n isPublish?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/GetAllByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n Summary: params['summary'],\r\n Title: params['title'],\r\n IsPublish: params['isPublish'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n summary?: string;\r\n /** */\r\n title?: string;\r\n /** */\r\n isPublish?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectProgress/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n Summary: params['summary'],\r\n Title: params['title'],\r\n IsPublish: params['isPublish'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundProjectYearSummaryService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 基金会点评\r\n */\r\n static appraise(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectYearSummaryAppraiseInput;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/Appraise';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectYearSummaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundProjectYearSummaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n projectName?: string;\r\n /** */\r\n year?: number;\r\n /** */\r\n serviceArea?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundProjectYearSummary/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n ProjectName: params['projectName'],\r\n Year: params['year'],\r\n ServiceArea: params['serviceArea'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class FundUserService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: FundUserCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getList(\r\n params: {\r\n /** */\r\n fundId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/GetList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { fundId: params['fundId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 基金Id */\r\n fundId?: number;\r\n /** 基金名称 */\r\n fundName?: string;\r\n /** 姓名 */\r\n surname?: string;\r\n /** 账号 */\r\n userName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n FundId: params['fundId'],\r\n FundName: params['fundName'],\r\n Surname: params['surname'],\r\n UserName: params['userName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getFundUserList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/GetFundUserList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: FundUserCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/FundUser/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalMonthlyPlanService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: InternalMonthlyPlanCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: InternalMonthlyPlanCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 分页查询\r\n */\r\n static getAll(\r\n params: {\r\n /** 年 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 所属项目ID */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取我的月活动计划列表\r\n */\r\n static getMyInternalMonthlyPlanList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetMyInternalMonthlyPlanList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { ProjectId: params['projectId'], Date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据年月获取有月计划的项目id\r\n */\r\n static getInternalProjectIdListByDate(\r\n params: {\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetInternalProjectIdListByDate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 所属项目ID */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlyPlan/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalMonthlySummarizeService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: InternalMonthlySummarizeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: InternalMonthlySummarizeCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 年 */\r\n date?: string;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalMonthlySummarize/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Date: params['date'],\r\n DisplayName: params['displayName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalPersonalYearEndSummaryService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: InternalPersonalYearEndSummaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: InternalPersonalYearEndSummaryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 年 */\r\n year?: number;\r\n /** */\r\n userName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n UserName: params['userName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年 */\r\n year?: number;\r\n /** */\r\n userName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n UserName: params['userName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalPersonalYearEndSummary/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalProjectService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n isPhase?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n IsPhase: params['isPhase'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取内部项目已立项列表\r\n */\r\n static getInternalProjectList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetInternalProjectList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据年月获取有月计划的内部项目列表\r\n */\r\n static getInternalProjectListByDate(\r\n params: {\r\n /** */\r\n date?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetInternalProjectListByDate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { date: params['date'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: InternalProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: InternalProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取内部项目立项书详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据项目Id获取内部项目立项书详情\r\n */\r\n static getDetailByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetDetailByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectMonthlySummaizeDetailsByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetProjectMonthlySummaizeDetailsByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getProjectBudgetItemListByProjectId(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetProjectBudgetItemListByProjectId';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新内部项目预算表\r\n */\r\n static updateBudgetItem(\r\n params: {\r\n /** requestBody */\r\n body?: UpdateInternalProjectBudgetItemDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/UpdateBudgetItem';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 复制内部项目\r\n */\r\n static copy(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Copy';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n isPhase?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n IsPhase: params['isPhase'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProject/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalProjectPhaseService {\r\n /**\r\n * 获取项目节点列表\r\n */\r\n static getProjectPhasesList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/GetProjectPhasesList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取项目月份列表\r\n */\r\n static getProjectMonthList(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/GetProjectMonthList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 分页获取项目节点附件列表,全部时Stage传null\r\n */\r\n static getProjectAttachmentListByPhase(\r\n params: {\r\n /** 项目ID */\r\n projectId?: number;\r\n /** 节点枚举 */\r\n stage?: WorkflowOfProjectByInternal;\r\n /** 年份 */\r\n year?: number;\r\n /** 月份 */\r\n month?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/GetProjectAttachmentListByPhase';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProjectId: params['projectId'],\r\n Stage: params['stage'],\r\n Year: params['year'],\r\n Month: params['month'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 分页获取项目月度附件列表,全部时Year和Month传0\r\n */\r\n static getProjectAttachmentListByMonth(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n /** 项目ID */\r\n projectId?: number;\r\n /** 年份 */\r\n year?: number;\r\n /** 月份 */\r\n month?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/GetProjectAttachmentListByMonth';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount'],\r\n ProjectId: params['projectId'],\r\n Year: params['year'],\r\n Month: params['month']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 项目节点附件全部下载\r\n */\r\n static batchDownloadProjectPhasesAttachment(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n stage?: WorkflowOfProjectByInternal;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/BatchDownloadProjectPhasesAttachment';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'], stage: params['stage'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 项目月度附件全部下载\r\n */\r\n static batchDownloadProjectMonthAttachment(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n /** */\r\n year?: number;\r\n /** */\r\n month?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectPhase/BatchDownloadProjectMonthAttachment';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'], year: params['year'], month: params['month'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalProjectReportService {\r\n /**\r\n * 内部项目宏观展示\r\n */\r\n static getMacroscopic(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectReport/GetMacroscopic';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 内部项目的微观展示\r\n */\r\n static getMicrocosmics(\r\n params: {\r\n /** 项目年份 */\r\n year?: number;\r\n /** 项目类型 */\r\n projectType?: number;\r\n /** 项目状态 */\r\n status?: WorkflowOfProjectByInternal;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectReport/GetMicrocosmics';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n ProjectType: params['projectType'],\r\n Status: params['status'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取未完成月总结的项目\r\n */\r\n static getNotCompleteMonthlySummaryProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectReport/GetNotCompleteMonthlySummaryProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取未正常关项的项目\r\n */\r\n static getNotClosingNormallyProjects(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectReport/GetNotClosingNormallyProjects';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class InternalProjectSummaryReportsService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: InternalProjectSummaryReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: InternalProjectSummaryReportCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 发送总结报告填写通知\r\n */\r\n static sendNotify(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/SendNotify';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 年 */\r\n year?: number;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 填写人 */\r\n userName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n DisplayName: params['displayName'],\r\n UserName: params['userName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 年 */\r\n year?: number;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 填写人 */\r\n userName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/InternalProjectSummaryReports/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n DisplayName: params['displayName'],\r\n UserName: params['userName'],\r\n ProjectId: params['projectId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class JobService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: JobCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Job/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: JobCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Job/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Job/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 信息标题 */\r\n title?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Job/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Job/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class MerchantService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: MerchantCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: MerchantCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static enableOrDisable(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/EnableOrDisable';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 推送至用友\r\n */\r\n static syncSupplierToNc(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/SyncSupplierToNC';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 单位名称 */\r\n unitName?: string;\r\n /** 单位地址 */\r\n unitAddress?: string;\r\n /** 负责人姓名 */\r\n principalName?: string;\r\n /** 负责人手机号 */\r\n principalMobilePhone?: string;\r\n /** 负责人邮箱 */\r\n principalEmailAddress?: string;\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n /** 所属基金 */\r\n fundName?: string;\r\n /** 是否已推送至用友 */\r\n isSynced?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Merchant/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n UnitName: params['unitName'],\r\n UnitAddress: params['unitAddress'],\r\n PrincipalName: params['principalName'],\r\n PrincipalMobilePhone: params['principalMobilePhone'],\r\n PrincipalEmailAddress: params['principalEmailAddress'],\r\n ContactName: params['contactName'],\r\n ContactMobilePhone: params['contactMobilePhone'],\r\n ContactEmailAddress: params['contactEmailAddress'],\r\n FundName: params['fundName'],\r\n IsSynced: params['isSynced'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class MerchantBankAccountService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: MerchantBankAccountCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: MerchantBankAccountCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static enableOrDisable(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/EnableOrDisable';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 推送至用友\r\n */\r\n static syncBankAccountToNc(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/SyncBankAccountToNC';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 客商主表Id */\r\n merchantId?: number;\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n /** 银行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** */\r\n isOnlyMine?: boolean;\r\n /** */\r\n isSynced?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/MerchantBankAccount/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n MerchantId: params['merchantId'],\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n IsOnlyMine: params['isOnlyMine'],\r\n IsSynced: params['isSynced'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class MessageService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: MessageCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Message/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: MessageCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Message/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Message/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Message/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 消息标题 */\r\n title?: string;\r\n /** 起始日期 */\r\n startDate?: string;\r\n /** 截止日期 */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Message/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class NotifyRecordService {\r\n /**\r\n * 获取通知发送记录详情\r\n */\r\n static getDetail(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/GetDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: NotifyRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: NotifyRecordCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 通知标题 */\r\n title?: string;\r\n /** 通知类型 */\r\n notifyType?: NotifyTemplateType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n NotifyType: params['notifyType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyRecord/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class NotifyTemplateService {\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyTemplate/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 通知模板标题 */\r\n title?: string;\r\n /** 通知模板类型 */\r\n notifyTemplateType?: NotifyTemplateType;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyTemplate/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n NotifyTemplateType: params['notifyTemplateType'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: NotifyTemplateCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyTemplate/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: NotifyTemplateCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyTemplate/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/NotifyTemplate/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class OrderService {\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 订单类型 */\r\n type?: OrderType;\r\n /** 关联表Id */\r\n applyId?: number;\r\n /** */\r\n userName?: string;\r\n /** */\r\n title?: string;\r\n /** 订单状态 */\r\n status?: OrderStatus;\r\n /** */\r\n onlyMine?: boolean;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Type: params['type'],\r\n ApplyId: params['applyId'],\r\n UserName: params['userName'],\r\n Title: params['title'],\r\n Status: params['status'],\r\n OnlyMine: params['onlyMine'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: OrderCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: OrderCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Order/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class OrganizationUnitService {\r\n /**\r\n * 导出合作方\r\n */\r\n static export(\r\n params: {\r\n /** requestBody */\r\n body?: OrganizationUnitPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Export';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 申请入驻(首次申请)\r\n */\r\n static apply(\r\n params: {\r\n /** requestBody */\r\n body?: OrganizationUnitCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Apply';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据Code获取邀约详情\r\n */\r\n static getInviteByCode(\r\n params: {\r\n /** */\r\n inviteCode?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/GetInviteByCode';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { inviteCode: params['inviteCode'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 重新申请\r\n */\r\n static reapply(\r\n params: {\r\n /** requestBody */\r\n body?: OrganizationUnitCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Reapply';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: OrganizationUnitCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: OrganizationUnitCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static createLoginAccount(\r\n params: {\r\n /** requestBody */\r\n body?: AgileOrganizationUnit;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/CreateLoginAccount';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n displayName?: string;\r\n /** 机构的类型(数据字典的ID) */\r\n organizationType?: number;\r\n /** */\r\n isApply?: boolean;\r\n /** */\r\n status?: OrganizationStatus;\r\n /** */\r\n principalName?: string;\r\n /** */\r\n mobilePhone?: string;\r\n /** */\r\n emailAddress?: string;\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n OrganizationType: params['organizationType'],\r\n IsApply: params['isApply'],\r\n Status: params['status'],\r\n PrincipalName: params['principalName'],\r\n MobilePhone: params['mobilePhone'],\r\n EmailAddress: params['emailAddress'],\r\n ContactName: params['contactName'],\r\n ContactMobilePhone: params['contactMobilePhone'],\r\n ContactEmailAddress: params['contactEmailAddress'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n displayName?: string;\r\n /** 机构的类型(数据字典的ID) */\r\n organizationType?: number;\r\n /** */\r\n isApply?: boolean;\r\n /** */\r\n status?: OrganizationStatus;\r\n /** */\r\n principalName?: string;\r\n /** */\r\n mobilePhone?: string;\r\n /** */\r\n emailAddress?: string;\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/OrganizationUnit/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n OrganizationType: params['organizationType'],\r\n IsApply: params['isApply'],\r\n Status: params['status'],\r\n PrincipalName: params['principalName'],\r\n MobilePhone: params['mobilePhone'],\r\n EmailAddress: params['emailAddress'],\r\n ContactName: params['contactName'],\r\n ContactMobilePhone: params['contactMobilePhone'],\r\n ContactEmailAddress: params['contactEmailAddress'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class PartnerCapitalApplyService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: PartnerCapitalApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: PartnerCapitalApplyCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 是否内部项目 */\r\n isInternal?: boolean;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IsInternal: params['isInternal'],\r\n DisplayName: params['displayName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 是否内部项目 */\r\n isInternal?: boolean;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 开始时间 */\r\n startDate?: string;\r\n /** 截止时间 */\r\n endDate?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IsInternal: params['isInternal'],\r\n DisplayName: params['displayName'],\r\n OrgName: params['orgName'],\r\n StartDate: params['startDate'],\r\n EndDate: params['endDate'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerCapitalApply/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class PartnerInviteService {\r\n /**\r\n *\r\n */\r\n static testEasyNetQ(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/TestEasyNetQ';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: PartnerInviteCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 邀约机构名称 */\r\n organizationName?: string;\r\n /** 机构类型 */\r\n organizationType?: number;\r\n /** */\r\n emailAddress?: string;\r\n /** */\r\n mobile?: string;\r\n /** */\r\n content?: string;\r\n /** */\r\n hasUsed?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n OrganizationName: params['organizationName'],\r\n OrganizationType: params['organizationType'],\r\n EmailAddress: params['emailAddress'],\r\n Mobile: params['mobile'],\r\n Content: params['content'],\r\n HasUsed: params['hasUsed'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: PartnerInviteCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PartnerInvite/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class PayService {\r\n /**\r\n * JS-SDK支付回调地址(在统一下单接口中设置notify_url)\r\n */\r\n static payNotifyUrl(\r\n params: {\r\n /** requestBody */\r\n body?: TenPayNotifyXml;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Pay/PayNotifyUrl';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class PcHomeService {\r\n /**\r\n *\r\n */\r\n static getSummary(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PCHome/GetSummary';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class PermissionDefinitionService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: PermissionDefinitionCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: PermissionDefinitionCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllCreatedNames(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/GetAllCreatedNames';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllPermissionNames(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/GetAllPermissionNames';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/PermissionDefinition/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ProjectService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n year?: number;\r\n /** */\r\n projectSeriesId?: number;\r\n /** */\r\n projectTypes?: string;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n noContainsId?: number;\r\n /** �Ƿ����IsPublicShow��ѯ�������ж� */\r\n isIgnorePublicShow?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Year: params['year'],\r\n ProjectSeriesId: params['projectSeriesId'],\r\n ProjectTypes: params['projectTypes'],\r\n Sorting: params['sorting'],\r\n NoContainsId: params['noContainsId'],\r\n IsIgnorePublicShow: params['isIgnorePublicShow'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取项目基本信息详情\r\n */\r\n static getProjectBasicDetail(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/GetProjectBasicDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新项目基本信息\r\n */\r\n static updateProjectBasicDetail(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectBasicDetailUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/UpdateProjectBasicDetail';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 设置是否公开显示\r\n */\r\n static changePublicShow(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/ChangePublicShow';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 终止项目\r\n */\r\n static terminate(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/Terminate';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取项目合作机构Id\r\n */\r\n static getProjectMappings(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/GetProjectMappings';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新项目合作机构\r\n */\r\n static updateMapping(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectOrganizationUnitMappingDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/UpdateMapping';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Project/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ProjectBeneficiaryMappingService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n beneficiaryName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 性别 */\r\n sex?: string;\r\n /** 最小年龄 */\r\n minAge?: number;\r\n /** 最大年龄 */\r\n maxAge?: number;\r\n /** 民族 */\r\n nation?: string;\r\n /** 省份Id */\r\n provinceId?: number;\r\n /** 城市Id */\r\n cityId?: number;\r\n /** 区域Id */\r\n areaId?: number;\r\n /** 街道Id */\r\n townId?: number;\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n BeneficiaryName: params['beneficiaryName'],\r\n ProjectId: params['projectId'],\r\n Sex: params['sex'],\r\n MinAge: params['minAge'],\r\n MaxAge: params['maxAge'],\r\n Nation: params['nation'],\r\n ProvinceId: params['provinceId'],\r\n CityId: params['cityId'],\r\n AreaId: params['areaId'],\r\n TownId: params['townId'],\r\n IsEnjoyTheSubsistenceAllowancePolicy: params['isEnjoyTheSubsistenceAllowancePolicy'],\r\n IsEnjoyOtherSalvation: params['isEnjoyOtherSalvation'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** */\r\n beneficiaryName?: string;\r\n /** */\r\n projectId?: number;\r\n /** 性别 */\r\n sex?: string;\r\n /** 最小年龄 */\r\n minAge?: number;\r\n /** 最大年龄 */\r\n maxAge?: number;\r\n /** 民族 */\r\n nation?: string;\r\n /** 省份Id */\r\n provinceId?: number;\r\n /** 城市Id */\r\n cityId?: number;\r\n /** 区域Id */\r\n areaId?: number;\r\n /** 街道Id */\r\n townId?: number;\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n BeneficiaryName: params['beneficiaryName'],\r\n ProjectId: params['projectId'],\r\n Sex: params['sex'],\r\n MinAge: params['minAge'],\r\n MaxAge: params['maxAge'],\r\n Nation: params['nation'],\r\n ProvinceId: params['provinceId'],\r\n CityId: params['cityId'],\r\n AreaId: params['areaId'],\r\n TownId: params['townId'],\r\n IsEnjoyTheSubsistenceAllowancePolicy: params['isEnjoyTheSubsistenceAllowancePolicy'],\r\n IsEnjoyOtherSalvation: params['isEnjoyOtherSalvation'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectBeneficiaryMappingCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectBeneficiaryMappingCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(\r\n params: {\r\n /** */\r\n projectId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { projectId: params['projectId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectBeneficiaryMapping/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ProjectInviteService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectInviteCreateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectInvite/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectInvite/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectInviteCreateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectInvite/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectInvite/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n isInternal?: boolean;\r\n /** 项目名称 */\r\n displayName?: string;\r\n /** 机构名称 */\r\n orgName?: string;\r\n /** 年份 */\r\n year?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectInvite/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n IsInternal: params['isInternal'],\r\n DisplayName: params['displayName'],\r\n OrgName: params['orgName'],\r\n Year: params['year'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ProjectSeriesService {\r\n /**\r\n * 根据Sequence升序获取列表\r\n */\r\n static getProjectSeriesList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/GetProjectSeriesList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 系列名称 */\r\n title?: string;\r\n /** 是否公开显示 */\r\n isPublicShow?: boolean;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n IsPublicShow: params['isPublicShow'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectSeriesCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProjectSeriesCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ProjectSeries/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ProvinceService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: ProvinceCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: ProvinceCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllList(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/GetAllList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n provinceName?: string;\r\n /** */\r\n shortName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n ProvinceName: params['provinceName'],\r\n ShortName: params['shortName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Province/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class RoleService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: RoleCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getRoles(\r\n params: {\r\n /** */\r\n permission?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetRoles';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Permission: params['permission'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: RoleCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取所有可分配的权限信息\r\n */\r\n static getAllPermissions(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetAllPermissions';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取分配给角色的权限数据权限分配\r\n */\r\n static getGrantedDataPermissionSettings(\r\n params: {\r\n /** */\r\n roleId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetGrantedDataPermissionSettings';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { roleId: params['roleId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取已分配的权限信息\r\n */\r\n static getGrantedPermissionNames(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetGrantedPermissionNames';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getRoleForEdit(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetRoleForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n keyword?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Role/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class ScopeDataSourceService {\r\n /**\r\n * 获取数据源内容\r\n */\r\n static getItems(\r\n params: {\r\n /** */\r\n providerName?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ScopeDataSource/GetItems';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { providerName: params['providerName'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取所有的数据源提供者\r\n */\r\n static getProviders(\r\n params: {\r\n /** */\r\n permissionCode?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ScopeDataSource/GetProviders';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { permissionCode: params['permissionCode'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取所有的支持数据权限控制的过滤器\r\n */\r\n static getAllSupportProviders(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/ScopeDataSource/GetAllSupportProviders';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class SessionService {\r\n /**\r\n *\r\n */\r\n static getBasicInfo(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Session/GetBasicInfo';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getCurrentLoginInformations(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Session/GetCurrentLoginInformations';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class SettingManagerService {\r\n /**\r\n *\r\n */\r\n static getValue(\r\n params: {\r\n /** */\r\n key?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/SettingManager/GetValue';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { key: params['key'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class SwiperService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: SwiperCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: SwiperCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据锚点编号获取轮播图列表\r\n */\r\n static getSwiperListByAnchor(\r\n params: {\r\n /** */\r\n anchorName?: string;\r\n /** */\r\n isMustImg?: boolean;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/GetSwiperListByAnchor';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { anchorName: params['anchorName'], isMustImg: params['isMustImg'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n displayName?: string;\r\n /** */\r\n cmsAnchorId?: number;\r\n /** */\r\n anchorName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Swiper/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n DisplayName: params['displayName'],\r\n CmsAnchorId: params['cmsAnchorId'],\r\n AnchorName: params['anchorName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TenantService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CreateTenantDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Tenant/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Tenant/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Tenant/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n keyword?: string;\r\n /** */\r\n isActive?: boolean;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Tenant/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n IsActive: params['isActive'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: TenantDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Tenant/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TenantAccessRecordService {\r\n /**\r\n *\r\n */\r\n static updateAccessRecord(\r\n params: {\r\n /** requestBody */\r\n body?: TenantAccessRecordCreateDto[];\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantAccessRecord/UpdateAccessRecord';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TenantAccountRecordService {\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 租户账户记录类型 */\r\n recordType?: TenantAccountRecordType;\r\n /** 项目/基金名称 */\r\n projectName?: string;\r\n /** 捐赠者名称 */\r\n donorName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantAccountRecord/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n RecordType: params['recordType'],\r\n ProjectName: params['projectName'],\r\n DonorName: params['donorName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getTenantAccountByPortal(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantAccountRecord/GetTenantAccountByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TenantBankAccountService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: TenantBankAccountCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: TenantBankAccountCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getList(\r\n params: {\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n /** 银行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/GetList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n /** 银行名称 */\r\n bankName?: string;\r\n /** 户名 */\r\n bankAccountName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TenantBankAccount/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n BankAccountCode: params['bankAccountCode'],\r\n BankName: params['bankName'],\r\n BankAccountName: params['bankAccountName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TestEntityService {\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: TestMainCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TestEntity/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TestEntity/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TestEntity/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: TestMainCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TestEntity/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/TestEntity/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TokenAuthService {\r\n /**\r\n *\r\n */\r\n static authenticate(\r\n params: {\r\n /** requestBody */\r\n body?: AuthenticateModel;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/TokenAuth/Authenticate';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getExternalAuthenticateResult(\r\n params: {\r\n /** */\r\n cacheKey?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/TokenAuth/GetExternalAuthenticateResult';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { cacheKey: params['cacheKey'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getExternalAuthenticationProviders(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/TokenAuth/GetExternalAuthenticationProviders';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static externalAuthenticate(\r\n params: {\r\n /** requestBody */\r\n body?: ExternalAuthenticateModel;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/TokenAuth/ExternalAuthenticate';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static weiXinLoginCallback(\r\n params: {\r\n /** */\r\n weiXinUser?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/TokenAuth/WeiXinLoginCallback';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { weiXinUser: params['weiXinUser'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class TownService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: TownCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: TownCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAllList(\r\n params: {\r\n /** */\r\n areaId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/GetAllList';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { areaId: params['areaId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n townName?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n TownName: params['townName'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Town/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class UEditorHandlerService {\r\n /**\r\n *\r\n */\r\n static uEditorUpload(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UEditorHandler/UEditorUpload';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static uEditorUpload1(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UEditorHandler/UEditorUpload';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static uEditorUpload2(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UEditorHandler/UEditorUpload';\r\n\r\n const configs: IRequestConfig = getConfigs('options', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class UserService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: CreateUserDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: UserDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** */\r\n keyword?: string;\r\n /** */\r\n isActive?: boolean;\r\n /** */\r\n organizationUnitId?: number;\r\n /** */\r\n departmentId?: number;\r\n /** */\r\n departments?: string;\r\n /** 用户查询模式: foundation | organizationUnit */\r\n mode?: string;\r\n /** 角色Id */\r\n roleId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n IsActive: params['isActive'],\r\n OrganizationUnitId: params['organizationUnitId'],\r\n DepartmentId: params['departmentId'],\r\n Departments: params['departments'],\r\n Mode: params['mode'],\r\n RoleId: params['roleId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByMobilePhone(\r\n params: {\r\n /** */\r\n mobilePhone?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetByMobilePhone';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { mobilePhone: params['mobilePhone'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getRoles(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetRoles';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static changeLanguage(\r\n params: {\r\n /** requestBody */\r\n body?: ChangeUserLanguageDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/ChangeLanguage';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取当前租户下的所有用户\r\n */\r\n static getAllUsers(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetAllUsers';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取机构的所有用户\r\n */\r\n static getOrganizationUnitUsers(\r\n params: {\r\n /** */\r\n keyword?: string;\r\n /** */\r\n isActive?: boolean;\r\n /** */\r\n organizationUnitId?: number;\r\n /** */\r\n departmentId?: number;\r\n /** */\r\n departments?: string;\r\n /** 用户查询模式: foundation | organizationUnit */\r\n mode?: string;\r\n /** 角色Id */\r\n roleId?: number;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetOrganizationUnitUsers';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Keyword: params['keyword'],\r\n IsActive: params['isActive'],\r\n OrganizationUnitId: params['organizationUnitId'],\r\n DepartmentId: params['departmentId'],\r\n Departments: params['departments'],\r\n Mode: params['mode'],\r\n RoleId: params['roleId'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 根据角色编号获取用户\r\n */\r\n static getUserListByRoleName(\r\n params: {\r\n /** */\r\n roleName?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetUserListByRoleName';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { roleName: params['roleName'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户个人信息\r\n */\r\n static getUserProfileForEdit(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/GetUserProfileForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static updateUserProfile(\r\n params: {\r\n /** requestBody */\r\n body?: UserProfileUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/UpdateUserProfile';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 更新用户头像\r\n */\r\n static updateUserHeadImageUrl(\r\n params: {\r\n /** */\r\n url?: string;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/UpdateUserHeadImageUrl';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n configs.params = { url: params['url'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static changePassword(\r\n params: {\r\n /** requestBody */\r\n body?: ChangePasswordDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/ChangePassword';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static resetPassword(\r\n params: {\r\n /** requestBody */\r\n body?: ResetPasswordDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/ResetPassword';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static resetPassword4Portal(\r\n params: {\r\n /** requestBody */\r\n body?: ResetPassword4PortalDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/User/ResetPassword4Portal';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class UserTaskService {\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: UserTaskCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 任务管理\r\n */\r\n static getAll(\r\n params: {\r\n /** 任务名称 */\r\n title?: string;\r\n /** 任务状态 */\r\n status?: TaskStatus;\r\n /** 紧急程度Id */\r\n importantLevelId?: number;\r\n /** 开始时间 */\r\n startTime?: string;\r\n /** 截止时间 */\r\n endTime?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Status: params['status'],\r\n ImportantLevelId: params['importantLevelId'],\r\n StartTime: params['startTime'],\r\n EndTime: params['endTime'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: UserTaskCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 我的任务\r\n */\r\n static getMyTask(\r\n params: {\r\n /** 任务名称 */\r\n title?: string;\r\n /** 任务状态 */\r\n status?: TaskStatus;\r\n /** 紧急程度Id */\r\n importantLevelId?: number;\r\n /** 开始时间 */\r\n startTime?: string;\r\n /** 截止时间 */\r\n endTime?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/GetMyTask';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Status: params['status'],\r\n ImportantLevelId: params['importantLevelId'],\r\n StartTime: params['startTime'],\r\n EndTime: params['endTime'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 认领任务\r\n */\r\n static claim(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Claim';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 提交审核\r\n */\r\n static submit(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Submit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 审核\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 任务名称 */\r\n title?: string;\r\n /** 任务状态 */\r\n status?: TaskStatus;\r\n /** 紧急程度Id */\r\n importantLevelId?: number;\r\n /** 开始时间 */\r\n startTime?: string;\r\n /** 截止时间 */\r\n endTime?: string;\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n /** */\r\n skipCount?: number;\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n Title: params['title'],\r\n Status: params['status'],\r\n ImportantLevelId: params['importantLevelId'],\r\n StartTime: params['startTime'],\r\n EndTime: params['endTime'],\r\n PageSize: params['pageSize'],\r\n SkipCount: params['skipCount'],\r\n PageIndex: params['pageIndex'],\r\n Sorting: params['sorting'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/UserTask/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class VolunteerService {\r\n /**\r\n *\r\n */\r\n static audit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLogProxy;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Audit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 志愿者姓名 */\r\n volunteerName?: string;\r\n /** 志愿者手机号 */\r\n volunteerPhone?: string;\r\n /** */\r\n volunteerId?: number;\r\n /** 志愿者编号 */\r\n volunteerCode?: string;\r\n /** */\r\n includeUserExtend?: boolean;\r\n /** 状态 */\r\n status?: VolunteerStatus;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n VolunteerName: params['volunteerName'],\r\n VolunteerPhone: params['volunteerPhone'],\r\n VolunteerId: params['volunteerId'],\r\n VolunteerCode: params['volunteerCode'],\r\n IncludeUserExtend: params['includeUserExtend'],\r\n Status: params['status'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 导出活动名单\r\n */\r\n static exportExcel(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerPagedResultRequestDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/ExportExcel';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static batchAudit(\r\n params: {\r\n /** requestBody */\r\n body?: BatchAuditDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/BatchAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 提交审核\r\n */\r\n static postToAudit(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/PostToAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 提交审核\r\n */\r\n static postTorReAudit(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/PostTorReAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 下载导入模板\r\n */\r\n static downloadTemplate(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/DownloadTemplate';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static import(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Import';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n configs.params = { id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 禁用\r\n */\r\n static ban(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Ban';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 取消禁用\r\n */\r\n static cancelBan(\r\n params: {\r\n /** requestBody */\r\n body?: Int64EntityDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/CancelBan';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static createByPortal(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/CreateByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getByPortal(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static updateByPortal(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/UpdateByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getCurrentUserByPortal(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetCurrentUserByPortal';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static actualAudit(\r\n params: {\r\n /** requestBody */\r\n body?: AuditUserLog;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/ActualAudit';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getMyAll(\r\n params: {\r\n /** 志愿者姓名 */\r\n volunteerName?: string;\r\n /** 志愿者手机号 */\r\n volunteerPhone?: string;\r\n /** */\r\n volunteerId?: number;\r\n /** 志愿者编号 */\r\n volunteerCode?: string;\r\n /** */\r\n includeUserExtend?: boolean;\r\n /** 状态 */\r\n status?: VolunteerStatus;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetMyAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n VolunteerName: params['volunteerName'],\r\n VolunteerPhone: params['volunteerPhone'],\r\n VolunteerId: params['volunteerId'],\r\n VolunteerCode: params['volunteerCode'],\r\n IncludeUserExtend: params['includeUserExtend'],\r\n Status: params['status'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getLogs(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetLogs';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getStatus(\r\n params: {\r\n /** */\r\n audit?: number;\r\n /** */\r\n auditStatus?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/Volunteer/GetStatus';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { audit: params['audit'], auditStatus: params['auditStatus'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport class VolunteerServiceHistoryService {\r\n /**\r\n * 获取服务记录统计\r\n */\r\n static getTotalDetails(options: IRequestOptions = {}): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/GetTotalDetails';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static create(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerServiceHistoryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/Create';\r\n\r\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n * 获取用户志愿者信息\r\n */\r\n static getUserVolunteerInfo(\r\n params: {\r\n /** */\r\n userId?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/GetUserVolunteerInfo';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { userId: params['userId'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getForEdit(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/GetForEdit';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static get(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/Get';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static getAll(\r\n params: {\r\n /** 志愿者姓名 */\r\n volunteerName?: string;\r\n /** 志愿者手机号 */\r\n volunteerPhone?: string;\r\n /** */\r\n volunteerId?: number;\r\n /** 志愿者编号 */\r\n volunteerCode?: string;\r\n /** */\r\n includeUserExtend?: boolean;\r\n /** 状态 */\r\n status?: VolunteerStatus;\r\n /** */\r\n sorting?: string;\r\n /** */\r\n skipCount?: number;\r\n /** */\r\n maxResultCount?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/GetAll';\r\n\r\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\r\n configs.params = {\r\n VolunteerName: params['volunteerName'],\r\n VolunteerPhone: params['volunteerPhone'],\r\n VolunteerId: params['volunteerId'],\r\n VolunteerCode: params['volunteerCode'],\r\n IncludeUserExtend: params['includeUserExtend'],\r\n Status: params['status'],\r\n Sorting: params['sorting'],\r\n SkipCount: params['skipCount'],\r\n MaxResultCount: params['maxResultCount']\r\n };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static update(\r\n params: {\r\n /** requestBody */\r\n body?: VolunteerServiceHistoryCreateOrUpdateDto;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/Update';\r\n\r\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\r\n\r\n let data = params.body;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n /**\r\n *\r\n */\r\n static delete(\r\n params: {\r\n /** */\r\n id?: number;\r\n } = {} as any,\r\n options: IRequestOptions = {}\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n let url = '/api/services/app/VolunteerServiceHistory/Delete';\r\n\r\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\r\n configs.params = { Id: params['id'] };\r\n let data = null;\r\n\r\n configs.data = data;\r\n axios(configs, resolve, reject);\r\n });\r\n }\r\n}\r\n\r\nexport interface QyWeiXinLoginPostModel {\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n password?: string;\r\n\r\n /** */\r\n qyWeiXinUserId?: string;\r\n}\r\n\r\nexport interface ExternalAuthenticateResultModel {\r\n /** */\r\n accessToken?: string;\r\n\r\n /** */\r\n encryptedAccessToken?: string;\r\n\r\n /** */\r\n expireInSeconds?: number;\r\n\r\n /** */\r\n waitingForActivation?: boolean;\r\n}\r\n\r\nexport interface IsTenantAvailableInput {\r\n /** */\r\n tenancyName?: string;\r\n}\r\n\r\nexport interface IsTenantAvailableOutput {\r\n /** */\r\n state?: TenantAvailabilityState;\r\n\r\n /** */\r\n tenantId?: number;\r\n}\r\n\r\nexport interface LoginPostRespDto {\r\n /** */\r\n errorInfo?: string;\r\n\r\n /** */\r\n accessToken?: string;\r\n\r\n /** */\r\n identityToken?: string;\r\n\r\n /** */\r\n expiresIn?: number;\r\n\r\n /** 租户Id */\r\n tenantId?: number;\r\n\r\n /** 机构Id */\r\n organizationUnitId?: number;\r\n\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** 企业微信Id */\r\n workWeiXinId?: string;\r\n}\r\n\r\nexport interface RegisterInput {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n password?: string;\r\n\r\n /** */\r\n captchaResponse?: string;\r\n}\r\n\r\nexport interface RegisterOutput {\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n canLogin?: boolean;\r\n}\r\n\r\nexport interface LoginPostReqDto {\r\n /** 用户名 */\r\n username?: string;\r\n\r\n /** 密码 */\r\n password?: string;\r\n\r\n /** 是否记住我 */\r\n rememberMe?: boolean;\r\n\r\n /** 租户 */\r\n tenancyName?: string;\r\n}\r\n\r\nexport interface AbpInvokeReturn {\r\n /** */\r\n hasError?: boolean;\r\n\r\n /** */\r\n errorCode?: string;\r\n\r\n /** */\r\n errorMessage?: string;\r\n\r\n /** */\r\n data?: object;\r\n}\r\n\r\nexport interface AttachmentDto {\r\n /** */\r\n fileName?: string;\r\n\r\n /** 文件的扩展名 */\r\n extension?: string;\r\n\r\n /** 是否为临时文件 */\r\n isTemp?: boolean;\r\n\r\n /** */\r\n url?: string;\r\n\r\n /** 附件的宿主ID */\r\n hostId?: string;\r\n\r\n /** */\r\n hostType?: AttachmentHostType;\r\n\r\n /** 文件的长度大小(单位:字节) */\r\n contentLength?: number;\r\n\r\n /** 文件的大小(自动计算的属性) */\r\n fileSize?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityDto {\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n content?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n place?: string;\r\n\r\n /** */\r\n placeCoordinate?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n aimAmount?: number;\r\n\r\n /** */\r\n price?: number;\r\n\r\n /** */\r\n signUpCount?: number;\r\n\r\n /** */\r\n activityStartTime?: Date;\r\n\r\n /** */\r\n activityEndTime?: Date;\r\n\r\n /** */\r\n applyEndTime?: Date;\r\n\r\n /** */\r\n status?: ActivityStatus;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n host?: string;\r\n\r\n /** */\r\n coOrganizer?: string;\r\n\r\n /** */\r\n typeID?: ActivityTypeEnum;\r\n\r\n /** */\r\n readCount?: number;\r\n\r\n /** */\r\n thumbsUpCount?: number;\r\n\r\n /** */\r\n isVolunteerActivity?: boolean;\r\n\r\n /** */\r\n totalMinutes?: number;\r\n\r\n /** 活动时长(小时) */\r\n totalHours?: number;\r\n\r\n /** */\r\n point?: number;\r\n\r\n /** */\r\n attachments?: AttachmentDto[];\r\n\r\n /** */\r\n checkInCount?: number;\r\n\r\n /** */\r\n cancelCount?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ActivityDto[];\r\n}\r\n\r\nexport interface Int64EntityDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityCreateOrUpdateDto {\r\n /** */\r\n status?: ActivityApplyStatus;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n content?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n place?: string;\r\n\r\n /** */\r\n placeCoordinate?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n aimAmount?: number;\r\n\r\n /** */\r\n price?: number;\r\n\r\n /** */\r\n signUpCount?: number;\r\n\r\n /** */\r\n activityStartTime?: Date;\r\n\r\n /** */\r\n activityEndTime?: Date;\r\n\r\n /** */\r\n applyTimeType?: number;\r\n\r\n /** */\r\n applyEndTime?: Date;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n host?: string;\r\n\r\n /** */\r\n coOrganizer?: string;\r\n\r\n /** */\r\n typeID?: number;\r\n\r\n /** */\r\n isVolunteerActivity?: boolean;\r\n\r\n /** */\r\n point?: number;\r\n\r\n /** 活动时长(小时) */\r\n totalHours?: number;\r\n\r\n /** 限制报名人数 */\r\n isLimitAim?: boolean;\r\n\r\n /** 活动是否收费 */\r\n isNotFree?: boolean;\r\n\r\n /** 是否发布 */\r\n isPublish?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityCreateOrUpdateDtoGetForEditOutput {\r\n /** */\r\n data?: ActivityCreateOrUpdateDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface OrganizationUnitShortDto {\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserDto {\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n isActive?: boolean;\r\n\r\n /** */\r\n fullName?: string;\r\n\r\n /** */\r\n lastLoginTime?: Date;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n departmentId?: number;\r\n\r\n /** */\r\n departmentName?: string;\r\n\r\n /** */\r\n roleNames?: string[];\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n userType?: UserType;\r\n\r\n /** */\r\n fundId?: number;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n\r\n /** 公众号openId */\r\n openId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AuditNodeDto {\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n roleName?: string;\r\n\r\n /** */\r\n roleId?: number;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n index?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n iCanAudit?: boolean;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditFlowDto {\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n status?: AuditFLowStatus;\r\n\r\n /** */\r\n scope?: number;\r\n\r\n /** */\r\n type?: AuditFlowType;\r\n\r\n /** */\r\n nodesMaxIndex?: number;\r\n\r\n /** */\r\n auditNodes?: AuditNodeDto[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ActivityApplyDto {\r\n /** */\r\n id?: number;\r\n\r\n /** 报名姓名 */\r\n surname?: string;\r\n\r\n /** 报名手机 */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** */\r\n activity?: ActivityDto;\r\n\r\n /** 报名用户ID\r\n存在导入或 */\r\n userId?: number;\r\n\r\n /** */\r\n applyUser?: UserDto;\r\n\r\n /** 审核通过时更新 */\r\n approvedTime?: Date;\r\n\r\n /** 用户在前端或管理员在后台取消时更新 */\r\n cancelTime?: Date;\r\n\r\n /** 审核不通过时更新 */\r\n sendbackTime?: Date;\r\n\r\n /** 活动报名被退回原因 */\r\n applyReturnReason?: string;\r\n\r\n /** */\r\n status?: ActivityApplyStatus;\r\n\r\n /** 报名时间 */\r\n applyTime?: Date;\r\n\r\n /** 签到时间 */\r\n checkInTime?: Date;\r\n\r\n /** 签到次数 */\r\n checkInTimes?: number;\r\n\r\n /** 总价 */\r\n totalPrice?: number;\r\n\r\n /** 已支付 */\r\n totalPaid?: number;\r\n\r\n /** 订单号 */\r\n billNo?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n isAudited?: boolean;\r\n\r\n /** */\r\n auditFlow?: AuditFlowDto;\r\n\r\n /** */\r\n currentAuditNodes?: AuditNodeDto[];\r\n\r\n /** 订单号 */\r\n orderId?: number;\r\n}\r\n\r\nexport interface ActivityApplyCreateOrUpdateDto {\r\n /** 报名姓名 */\r\n surname?: string;\r\n\r\n /** 报名手机 */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n status?: ApplyStatus;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** */\r\n activity?: ActivityDto;\r\n\r\n /** 报名用户ID\r\n存在导入或 */\r\n userId?: number;\r\n\r\n /** */\r\n applyUser?: UserDto;\r\n\r\n /** 审核通过时更新 */\r\n approvedTime?: Date;\r\n\r\n /** 用户在前端或管理员在后台取消时更新 */\r\n cancelTime?: Date;\r\n\r\n /** 审核不通过时更新 */\r\n sendbackTime?: Date;\r\n\r\n /** 活动报名被退回原因 */\r\n applyReturnReason?: string;\r\n\r\n /** 报名时间 */\r\n applyTime?: Date;\r\n\r\n /** 总价 */\r\n totalPrice?: number;\r\n\r\n /** */\r\n clientType?: ClientType;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ActivityApplyDto[];\r\n}\r\n\r\nexport interface ExcelRowImportError {\r\n /** */\r\n errorMessage?: string;\r\n\r\n /** */\r\n details?: string[];\r\n}\r\n\r\nexport interface ExcelRowImportResult {\r\n /** */\r\n model?: object;\r\n\r\n /** */\r\n success?: boolean;\r\n\r\n /** */\r\n error?: ExcelRowImportError;\r\n\r\n /** */\r\n rowNumber?: number;\r\n\r\n /** */\r\n resultType?: ImportResultType;\r\n}\r\n\r\nexport interface ImportResult {\r\n /** */\r\n excelFileName?: string;\r\n\r\n /** */\r\n importResults?: ExcelRowImportResult[];\r\n}\r\n\r\nexport interface ActivityApplyPagedResultRequestDto {\r\n /** */\r\n activityId?: number;\r\n\r\n /** */\r\n activityTitle?: string;\r\n\r\n /** */\r\n applyUserPhone?: string;\r\n\r\n /** */\r\n applyUserName?: string;\r\n\r\n /** */\r\n isPay?: boolean;\r\n\r\n /** */\r\n isPriced?: boolean;\r\n\r\n /** */\r\n isOnlyMine?: boolean;\r\n\r\n /** 1:已付款;2:未付款;3:已关闭 */\r\n specialType?: number;\r\n\r\n /** */\r\n status?: ActivityApplyStatus;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface ActivityApplyCreateOrUpdateDtoGetForEditOutput {\r\n /** */\r\n data?: ActivityApplyCreateOrUpdateDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface UserMiniDto {\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrderDto {\r\n /** 订单号 */\r\n orderNo?: string;\r\n\r\n /** 关联表Id */\r\n applyId?: number;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 图片 */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n type?: OrderType;\r\n\r\n /** 订单金额 */\r\n priceTotal?: number;\r\n\r\n /** 付款金额 */\r\n payedMoney?: number;\r\n\r\n /** 是否在线支付 */\r\n isOnlinePayed?: boolean;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n status?: OrderStatus;\r\n\r\n /** 支付时间 */\r\n payedTime?: Date;\r\n\r\n /** 交易号 */\r\n tradeNo?: string;\r\n\r\n /** 是否回调 */\r\n isResponse?: boolean;\r\n\r\n /** 回调时间 */\r\n responseTime?: Date;\r\n\r\n /** 回调结果 */\r\n resultMessage?: string;\r\n\r\n /** 取消时间 */\r\n cancelTime?: Date;\r\n\r\n /** 取消原因 */\r\n cancelReason?: string;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PaymentReponseInputDto {\r\n /** */\r\n sign_Type?: string;\r\n\r\n /** */\r\n payment_Type?: string;\r\n\r\n /** */\r\n buyer_Account?: string;\r\n\r\n /** */\r\n trade_Status?: string;\r\n\r\n /** */\r\n trade_No?: string;\r\n\r\n /** */\r\n total_Fee?: number;\r\n\r\n /** */\r\n order_No?: string;\r\n\r\n /** */\r\n notify_Type?: string;\r\n\r\n /** */\r\n notify_Id?: string;\r\n\r\n /** */\r\n notify_Time?: string;\r\n\r\n /** */\r\n sign?: string;\r\n\r\n /** */\r\n sortDict?: object;\r\n}\r\n\r\nexport interface UserActivityApplyInfoDto {\r\n /** 报名成功次数 */\r\n signUpCount?: number;\r\n}\r\n\r\nexport interface AbpBoolDto {\r\n /** 结果 */\r\n result?: boolean;\r\n}\r\n\r\nexport interface UserToken {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n loginProvider?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n value?: string;\r\n\r\n /** */\r\n expireDate?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserLogin {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n loginProvider?: string;\r\n\r\n /** */\r\n providerKey?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserRole {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n roleId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserClaim {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n claimType?: string;\r\n\r\n /** */\r\n claimValue?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserPermissionSetting {\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n isGranted?: boolean;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface Setting {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n value?: string;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface User {\r\n /** */\r\n departmentId?: number;\r\n\r\n /** */\r\n normalizedUserName?: string;\r\n\r\n /** */\r\n normalizedEmailAddress?: string;\r\n\r\n /** */\r\n concurrencyStamp?: string;\r\n\r\n /** */\r\n tokens?: UserToken[];\r\n\r\n /** */\r\n deleterUser?: User;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n lastModifierUser?: User;\r\n\r\n /** */\r\n authenticationSource?: string;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n fullName?: string;\r\n\r\n /** */\r\n password?: string;\r\n\r\n /** */\r\n emailConfirmationCode?: string;\r\n\r\n /** */\r\n passwordResetCode?: string;\r\n\r\n /** */\r\n lockoutEndDateUtc?: Date;\r\n\r\n /** */\r\n accessFailedCount?: number;\r\n\r\n /** */\r\n isLockoutEnabled?: boolean;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n isPhoneNumberConfirmed?: boolean;\r\n\r\n /** */\r\n securityStamp?: string;\r\n\r\n /** */\r\n isTwoFactorEnabled?: boolean;\r\n\r\n /** */\r\n logins?: UserLogin[];\r\n\r\n /** */\r\n roles?: UserRole[];\r\n\r\n /** */\r\n claims?: UserClaim[];\r\n\r\n /** */\r\n permissions?: UserPermissionSetting[];\r\n\r\n /** */\r\n settings?: Setting[];\r\n\r\n /** */\r\n isEmailConfirmed?: boolean;\r\n\r\n /** */\r\n isActive?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AuditUserLogProxy {\r\n /** */\r\n hostId?: string;\r\n\r\n /** */\r\n hostType?: AuditFlowScope;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n auditNodeId?: string;\r\n\r\n /** */\r\n status?: AuditUserLogStatus;\r\n\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n expired?: boolean;\r\n}\r\n\r\nexport interface AuditUserLog {\r\n /** */\r\n hostId?: string;\r\n\r\n /** */\r\n hostType?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n auditNodeId?: string;\r\n\r\n /** */\r\n status?: AuditUserLogStatus;\r\n\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n expired?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivityApplyDtoListResultDto {\r\n /** */\r\n items?: ActivityApplyDto[];\r\n}\r\n\r\nexport interface AuditUserLogDto {\r\n /** */\r\n hostType?: number;\r\n\r\n /** */\r\n status?: AuditUserLogStatus;\r\n\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n expired?: boolean;\r\n\r\n /** */\r\n auditNodeId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivitySignInRecordDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ActivitySignInRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ActivitySignInRecordDto[];\r\n}\r\n\r\nexport interface ActivitySignInRecordCreateOrUpdateDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AlbumDto {\r\n /** 相册名称 */\r\n name?: string;\r\n\r\n /** 相册描述 */\r\n summary?: string;\r\n\r\n /** 封面地址 */\r\n cover?: string;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AlbumCreateUpdateDto {\r\n /** 相册名称 */\r\n name?: string;\r\n\r\n /** 相册描述 */\r\n summary?: string;\r\n\r\n /** 封面地址 */\r\n cover?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AlbumDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AlbumDto[];\r\n}\r\n\r\nexport interface AlbumPhotoDto {\r\n /** */\r\n id?: number;\r\n\r\n /** 照片名称 */\r\n name?: string;\r\n\r\n /** 照片大小(byte) */\r\n photoSize?: number;\r\n\r\n /** */\r\n size?: string;\r\n\r\n /** 照片路径 */\r\n photoPath?: string;\r\n}\r\n\r\nexport interface AlbumPhotoDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AlbumPhotoDto[];\r\n}\r\n\r\nexport interface AlbumPhotoMoveInput {\r\n /** 目标相册 */\r\n albumId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface RenameAlbumPhotoInput {\r\n /** 照片名称 */\r\n name?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ApplicationPaymentCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 客商主表Id */\r\n merchantId?: number;\r\n\r\n /** 客商银行账号表Id */\r\n merchantBankAccountId?: number;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** */\r\n approvalCategory?: ApprovalCategory;\r\n\r\n /** 项目类别 */\r\n projectCategoryId?: number;\r\n\r\n /** 项目领域 */\r\n projectDomainId?: number;\r\n\r\n /** 活动分类 */\r\n activityClassId?: number;\r\n\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** 基金项目Id */\r\n fundProjectId?: number;\r\n\r\n /** 请款理由 */\r\n payReason?: string;\r\n\r\n /** */\r\n payCurrencyType?: CurrencyType;\r\n\r\n /** 支付金额 */\r\n payMoney?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n\r\n /** 拟办意见 */\r\n appropriateReason?: string;\r\n\r\n /** */\r\n attachmentStr?: string;\r\n\r\n /** */\r\n applyTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantBankAccountDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 银行名称 */\r\n bankName?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface MerchantDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 单位名称 */\r\n unitName?: string;\r\n\r\n /** 单位地址 */\r\n unitAddress?: string;\r\n\r\n /** 负责人姓名 */\r\n principalName?: string;\r\n\r\n /** 负责人手机号 */\r\n principalMobilePhone?: string;\r\n\r\n /** 负责人邮箱 */\r\n principalEmailAddress?: string;\r\n\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n\r\n /** */\r\n fundId?: number;\r\n\r\n /** 是否推送至NC系统 */\r\n isSynced?: boolean;\r\n\r\n /** 是否已启用 */\r\n isEnabled?: boolean;\r\n\r\n /** 用友系统中的供应商主键 */\r\n ncSupplierPK?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface MerchantBankAccountDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 客商主表Id */\r\n merchantId?: number;\r\n\r\n /** */\r\n merchant?: MerchantDto;\r\n\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 银行类型 */\r\n bankType?: string;\r\n\r\n /** */\r\n bankTypePK?: string;\r\n\r\n /** 银行名称 */\r\n bankName?: string;\r\n\r\n /** */\r\n bankNamePK?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** 是否推送至NC系统 */\r\n isSynced?: boolean;\r\n\r\n /** 是否已启用 */\r\n isEnabled?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundMiniDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectMiniDto {\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DataDictionaryDto {\r\n /** 租户。 */\r\n tenantId?: number;\r\n\r\n /** 键名 */\r\n key?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ApplicationPaymentDto {\r\n /** 审核流程Id */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n auditFlow?: AuditFlowDto;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 基金银行账号表Id */\r\n tenantBankAccountId?: number;\r\n\r\n /** */\r\n tenantBankAccount?: TenantBankAccountDto;\r\n\r\n /** 客商主表Id */\r\n merchantId?: number;\r\n\r\n /** */\r\n merchant?: MerchantDto;\r\n\r\n /** 客商银行账号表Id */\r\n merchantBankAccountId?: number;\r\n\r\n /** */\r\n merchantBankAccount?: MerchantBankAccountDto;\r\n\r\n /** 申请人Id */\r\n applicantId?: number;\r\n\r\n /** */\r\n applicant?: UserMiniDto;\r\n\r\n /** 资料提交人Id */\r\n operatorId?: number;\r\n\r\n /** */\r\n operator?: UserMiniDto;\r\n\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 基金项目Id */\r\n fundProjectId?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** 审批编号 */\r\n approvalNumber?: string;\r\n\r\n /** 提交时间 */\r\n submitTime?: Date;\r\n\r\n /** 申请人部门Id */\r\n applicantDeptId?: number;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** */\r\n approvalCategory?: ApprovalCategory;\r\n\r\n /** 审批类别 */\r\n approvalCategoryName?: string;\r\n\r\n /** 项目类别 */\r\n projectCategoryId?: number;\r\n\r\n /** */\r\n projectCategory?: DataDictionaryDto;\r\n\r\n /** 项目领域 */\r\n projectDomainId?: number;\r\n\r\n /** */\r\n projectDomain?: DataDictionaryDto;\r\n\r\n /** 活动分类 */\r\n activityClassId?: number;\r\n\r\n /** */\r\n activityClass?: DataDictionaryDto;\r\n\r\n /** 请款理由 */\r\n payReason?: string;\r\n\r\n /** */\r\n payCurrencyType?: CurrencyType;\r\n\r\n /** 支付金额 */\r\n payMoney?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 发票号码 */\r\n invoiceNumber?: string;\r\n\r\n /** 发票是否匹配 */\r\n isInvoiceMatched?: boolean;\r\n\r\n /** 第三方Id */\r\n thirdPartyId?: string;\r\n\r\n /** 第三方状态 */\r\n thirdPartyStatus?: string;\r\n\r\n /** 发票数量 */\r\n invoiceCount?: number;\r\n\r\n /** 已验证的发票数量 */\r\n verifiedInvoiceCount?: number;\r\n\r\n /** */\r\n auditFlowScope?: AuditFlowScope;\r\n\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n\r\n /** 原因 */\r\n reason?: string;\r\n\r\n /** */\r\n validationStatus?: ApplicationPaymentValidationStatus;\r\n\r\n /** 拟办意见 */\r\n appropriateReason?: string;\r\n\r\n /** 部门名称 */\r\n deptName?: string;\r\n\r\n /** */\r\n applyTime?: Date;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ApplicationPaymentDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ApplicationPaymentDto[];\r\n}\r\n\r\nexport interface ApplicationPaymentInvoiceNumberInput {\r\n /** 用款申请Id */\r\n id?: number;\r\n\r\n /** 发票号码 */\r\n invoiceNumbers?: string[];\r\n}\r\n\r\nexport interface Int32EntityDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ConfirmFundingInput {\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n tenantBankAccountId?: number;\r\n}\r\n\r\nexport interface ApplicationPaymentDtoListResultDto {\r\n /** */\r\n items?: ApplicationPaymentDto[];\r\n}\r\n\r\nexport interface AreaCreateOrUpdateDto {\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AreaDto {\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AreaDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AreaDto[];\r\n}\r\n\r\nexport interface UploadResult {\r\n /** */\r\n hostType?: AttachmentHostType;\r\n\r\n /** */\r\n attachmentId?: number;\r\n\r\n /** */\r\n fileName?: string;\r\n\r\n /** */\r\n url?: string;\r\n}\r\n\r\nexport interface AuditNodeCreateOrEditDto {\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n roleName?: string;\r\n\r\n /** */\r\n roleId?: number;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n index?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditFlowCreateOrEditDto {\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n nodesMaxIndex?: number;\r\n\r\n /** */\r\n status?: AuditFLowStatus;\r\n\r\n /** */\r\n type?: AuditFlowType;\r\n\r\n /** */\r\n scope?: number;\r\n\r\n /** */\r\n auditNodes?: AuditNodeCreateOrEditDto[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditFlowCreateOrEditDtoGetForEditOutput {\r\n /** */\r\n data?: AuditFlowCreateOrEditDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface GuidEntityDto {\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CanAuditRequestDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n}\r\n\r\nexport interface AuditFlowDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AuditFlowDto[];\r\n}\r\n\r\nexport interface AuditFlowCreateOrEditProxyDto {\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 描述 */\r\n desc?: string;\r\n\r\n /** */\r\n nodesMaxIndex?: number;\r\n\r\n /** */\r\n status?: AuditFLowStatus;\r\n\r\n /** */\r\n type?: AuditFlowType;\r\n\r\n /** */\r\n scope?: AuditFlowScope;\r\n\r\n /** 节点 */\r\n auditNodes?: AuditNodeCreateOrEditDto[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditFlowCreateOrEditProxyDtoGetForEditOutput {\r\n /** */\r\n data?: AuditFlowCreateOrEditProxyDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface AuditNodePreDefineCreateOrEditDto {\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n roleName?: string;\r\n\r\n /** */\r\n roleId?: number;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditNodePreDefineCreateOrEditDtoGetForEditOutput {\r\n /** */\r\n data?: AuditNodePreDefineCreateOrEditDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface RoleMiniDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AuditNodePreDefineDto {\r\n /** */\r\n desc?: string;\r\n\r\n /** */\r\n roleName?: string;\r\n\r\n /** */\r\n roleId?: number;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n userMini?: UserMiniDto;\r\n\r\n /** */\r\n role?: RoleMiniDto;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface AuditNodePreDefineDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AuditNodePreDefineDto[];\r\n}\r\n\r\nexport interface InvoiceDto {\r\n /** 交款人 */\r\n donorName?: string;\r\n\r\n /** 交款人类型 */\r\n donorType?: string;\r\n\r\n /** 收款方式 */\r\n donateType?: string;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 项目名称 */\r\n projectName?: string;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 金额 */\r\n money?: number;\r\n\r\n /** 创建时间 */\r\n creationTime?: string;\r\n\r\n /** 创建人Id */\r\n creatorUserId?: number;\r\n\r\n /** 创建人 */\r\n creatorUserName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface BankNameDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n bankNameCode?: string;\r\n\r\n /** */\r\n bankNamePK?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface BankNameDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: BankNameDto[];\r\n}\r\n\r\nexport interface BankNameCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n bankNameCode?: string;\r\n\r\n /** */\r\n bankNamePK?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DecimalMonthlyItem {\r\n /** */\r\n date?: string;\r\n\r\n /** */\r\n value?: number;\r\n}\r\n\r\nexport interface BankTypeDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n bankTypeCode?: string;\r\n\r\n /** */\r\n bankTypePK?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface BankTypeDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: BankTypeDto[];\r\n}\r\n\r\nexport interface BankTypeCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n bankTypeCode?: string;\r\n\r\n /** */\r\n bankTypePK?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AreaSelectDto {\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n townId?: number;\r\n}\r\n\r\nexport interface FamilyMembersInfoDto {\r\n /** 姓名 */\r\n name?: string;\r\n\r\n /** 称谓 */\r\n appellation?: string;\r\n\r\n /** 出生年月 */\r\n birthDate?: Date;\r\n\r\n /** 健康情况 */\r\n health?: string;\r\n\r\n /** 职业 */\r\n occupation?: string;\r\n\r\n /** 年收入 */\r\n annualIncome?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface BeneficiaryDto {\r\n /** 个案编号 */\r\n code?: string;\r\n\r\n /** 负责人 */\r\n principalName?: string;\r\n\r\n /** 负责人电话 */\r\n principalPhone?: string;\r\n\r\n /** 姓名 */\r\n realName?: string;\r\n\r\n /** 性别(男,女) */\r\n sex?: string;\r\n\r\n /** 出生日期 */\r\n birthday?: Date;\r\n\r\n /** 民族 */\r\n nation?: string;\r\n\r\n /** 联系电话 */\r\n phone?: string;\r\n\r\n /** 身份证号 */\r\n idNo?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** 详细地址 */\r\n homeAddress?: string;\r\n\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n\r\n /** 建档立卡金额(元\\/月) */\r\n otherSalvationAmount?: number;\r\n\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n\r\n /** 低保金额(元\\/月) */\r\n subsistenceAllowanceAmount?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** 家庭成员情况 */\r\n familyMembersInfoList?: FamilyMembersInfoDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface BeneficiaryCreateOrUpdateDto {\r\n /** 个案编号 */\r\n code?: string;\r\n\r\n /** 负责人 */\r\n principalName?: string;\r\n\r\n /** 负责人电话 */\r\n principalPhone?: string;\r\n\r\n /** 姓名 */\r\n realName?: string;\r\n\r\n /** 性别(男,女) */\r\n sex?: string;\r\n\r\n /** 出生日期 */\r\n birthday?: Date;\r\n\r\n /** 民族 */\r\n nation?: string;\r\n\r\n /** 联系电话 */\r\n phone?: string;\r\n\r\n /** 身份证号 */\r\n idNo?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** 详细地址 */\r\n homeAddress?: string;\r\n\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n\r\n /** 建档立卡金额(元\\/月) */\r\n otherSalvationAmount?: number;\r\n\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n\r\n /** 低保金额(元\\/月) */\r\n subsistenceAllowanceAmount?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 家庭成员情况 */\r\n familyMembersInfoList?: FamilyMembersInfoDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface BeneficiaryDtoListResultDto {\r\n /** */\r\n items?: BeneficiaryDto[];\r\n}\r\n\r\nexport interface BeneficiaryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: BeneficiaryDto[];\r\n}\r\n\r\nexport interface ProjectDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n isPublicShow?: boolean;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n workflowStep?: WorkflowOfProjectByExternal;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProvinceDto {\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n shortName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CityDto {\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n shortCode?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TownDto {\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrganizationUnitDto {\r\n /** 机构logo */\r\n logoImageUrl?: string;\r\n\r\n /** 机构名称 */\r\n displayName?: string;\r\n\r\n /** 机构类型,数据字典Id */\r\n organizationType?: number;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: ProvinceDto;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: CityDto;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: AreaDto;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: TownDto;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 负责人姓名 */\r\n principalName?: string;\r\n\r\n /** 主要负责人的手机号 */\r\n mobilePhone?: string;\r\n\r\n /** 主要负责人的邮箱 */\r\n emailAddress?: string;\r\n\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 合作方银行账号名称 */\r\n bankAccountName?: string;\r\n\r\n /** 开户行信息 */\r\n bankName?: string;\r\n\r\n /** 开户账号 */\r\n bankAccount?: string;\r\n\r\n /** 收件人 */\r\n receiverName?: string;\r\n\r\n /** 收件地址 */\r\n receiverAddress?: string;\r\n\r\n /** 收件电话 */\r\n receiverMobile?: string;\r\n\r\n /** 法人登记证书复印件 */\r\n certificateImagePath?: string;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n registerTime?: Date;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectServiceItemDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n serviceTime?: Date;\r\n\r\n /** */\r\n serviceMethod?: string;\r\n\r\n /** */\r\n serviceContent?: string;\r\n\r\n /** */\r\n target?: string;\r\n\r\n /** */\r\n completeStatus?: ProjectServiceRecordCompleteStatus;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n serviceMethods?: string[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ServiceRecordDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n serviceRecordType?: ServiceRecordType;\r\n\r\n /** */\r\n beneficiaryId?: number;\r\n\r\n /** */\r\n beneficiary?: BeneficiaryDto;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n schoolId?: number;\r\n\r\n /** */\r\n school?: OrganizationUnitDto;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n projectBeneficiaryMappingId?: number;\r\n\r\n /** */\r\n simpleDetail?: ProjectServiceItemDto;\r\n\r\n /** */\r\n serviceItems?: ProjectServiceItemDto[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ServiceRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ServiceRecordDto[];\r\n}\r\n\r\nexport interface ProjectServiceItemCreateOrUpdateDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n serviceTime?: Date;\r\n\r\n /** */\r\n serviceMethod?: string;\r\n\r\n /** */\r\n serviceMethods?: string[];\r\n\r\n /** */\r\n serviceContent?: string;\r\n\r\n /** */\r\n target?: string;\r\n\r\n /** */\r\n completeStatus?: ProjectServiceRecordCompleteStatus;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n}\r\n\r\nexport interface ServiceRecordCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n serviceRecordType?: ServiceRecordType;\r\n\r\n /** */\r\n beneficiaryId?: number;\r\n\r\n /** */\r\n schoolId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n projectBeneficiaryMappingId?: number;\r\n\r\n /** */\r\n serviceItems?: ProjectServiceItemCreateOrUpdateDto[];\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ServiceRecordPagedResultRequestDto {\r\n /** */\r\n serviceRecordType?: ServiceRecordType;\r\n\r\n /** */\r\n beneficiaryName?: string;\r\n\r\n /** */\r\n schoolName?: string;\r\n\r\n /** */\r\n projectName?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface ServiceRecordDtoListResultDto {\r\n /** */\r\n items?: ServiceRecordDto[];\r\n}\r\n\r\nexport interface CapitalExpenseRecordDetailCreateOrUpdateDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 项目类型 */\r\n projectType?: string;\r\n\r\n /** 项目类型名称 */\r\n projectTypeName?: string;\r\n\r\n /** 项目Id(-1为待分摊) */\r\n projectId?: number;\r\n\r\n /** 内部项目预算子项目内容 */\r\n internalProjectBudgetItemId?: string;\r\n\r\n /** 三级科目 */\r\n itemName?: string;\r\n\r\n /** 摘要 */\r\n summary?: string;\r\n\r\n /** 本次支付金额(元) */\r\n money?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 是否超出预算(该项目该三级科目已支付金额加本次支付金额是否超出预算金额) */\r\n isOver?: boolean;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalExpenseRecordCreateOrUpdateDto {\r\n /** 收款单位 */\r\n payeeName?: string;\r\n\r\n /** 开户银行 */\r\n payeeBankName?: string;\r\n\r\n /** 开户账号 */\r\n payeeBankAccount?: string;\r\n\r\n /** */\r\n payType?: PayType;\r\n\r\n /** 付款账号(数据字典,多选一) */\r\n payBankAccount?: string;\r\n\r\n /** 合同编号 */\r\n contractNo?: string;\r\n\r\n /** 合同总金额(元) */\r\n contractTotalMoney?: number;\r\n\r\n /** 累计已支付金额(元) */\r\n paidTotalMoney?: number;\r\n\r\n /** 本次支付合计金额(元) */\r\n totalMoney?: number;\r\n\r\n /** 剩余待分摊总金额(元) */\r\n nonApportionTotalMoney?: number;\r\n\r\n /** */\r\n details?: CapitalExpenseRecordDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectFullInfoDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n projectTypes?: string;\r\n\r\n /** */\r\n isPublicShow?: boolean;\r\n\r\n /** */\r\n projectSeriesId?: number;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n isInternal?: boolean;\r\n\r\n /** */\r\n progressReportDate?: Date;\r\n\r\n /** */\r\n summaryReportDate?: Date;\r\n\r\n /** */\r\n workflowStep?: number;\r\n\r\n /** */\r\n projectResult?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalExpenseRecordDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n capitalExpenseRecordId?: number;\r\n\r\n /** 项目类型 */\r\n projectType?: string;\r\n\r\n /** 项目类型名称 */\r\n projectTypeName?: string;\r\n\r\n /** 项目Id(-1为待分摊) */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectFullInfoDto;\r\n\r\n /** 内部项目预算子项目内容 */\r\n internalProjectBudgetItemId?: string;\r\n\r\n /** 三级科目 */\r\n itemName?: string;\r\n\r\n /** 摘要 */\r\n summary?: string;\r\n\r\n /** 本次支付金额(元) */\r\n money?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 是否超出预算(该项目该三级科目已支付金额加本次支付金额是否超出预算金额) */\r\n isOver?: boolean;\r\n\r\n /** */\r\n totalAmount?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalExpenseRecordDto {\r\n /** 收款单位 */\r\n payeeName?: string;\r\n\r\n /** 开户银行 */\r\n payeeBankName?: string;\r\n\r\n /** 开户账号 */\r\n payeeBankAccount?: string;\r\n\r\n /** */\r\n payType?: PayType;\r\n\r\n /** 付款账号(数据字典,多选一) */\r\n payBankAccount?: string;\r\n\r\n /** 合同编号 */\r\n contractNo?: string;\r\n\r\n /** 合同总金额(元) */\r\n contractTotalMoney?: number;\r\n\r\n /** 累计已支付金额(元) */\r\n paidTotalMoney?: number;\r\n\r\n /** 本次支付合计金额(元) */\r\n totalMoney?: number;\r\n\r\n /** 剩余待分摊总金额(元) */\r\n nonApportionTotalMoney?: number;\r\n\r\n /** */\r\n details?: CapitalExpenseRecordDetailDto[];\r\n\r\n /** */\r\n payDate?: Date;\r\n\r\n /** */\r\n simpleDetail?: CapitalExpenseRecordDetailDto;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n version?: number;\r\n\r\n /** */\r\n preVersionId?: number;\r\n\r\n /** */\r\n changeState?: ChangeState;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ContractNoInformationDto {\r\n /** */\r\n contractTotalMoney?: number;\r\n\r\n /** */\r\n paidTotalMoney?: number;\r\n}\r\n\r\nexport interface InternalBudgetItemAndUseRecordDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 序列(显示顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectBudgetCategory?: ProjectBudgetCategory;\r\n\r\n /** */\r\n projectBudgetType?: ProjectBudgetType;\r\n\r\n /** 子项目内容(三级科目) */\r\n itemName?: string;\r\n\r\n /** 具体内容 */\r\n content?: string;\r\n\r\n /** 单价(元) */\r\n unitPrice?: number;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 单位 */\r\n unit?: string;\r\n\r\n /** 预算报价 */\r\n budgetQuotation?: number;\r\n\r\n /** */\r\n projectBudgetCapitalSource?: ProjectBudgetCapitalSource;\r\n\r\n /** */\r\n actualMoney?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalExpenseRecordPagedResultRequestDto {\r\n /** 收款单位 */\r\n payeeName?: string;\r\n\r\n /** 开户银行 */\r\n payeeBankAccount?: string;\r\n\r\n /** */\r\n payType?: PayType;\r\n\r\n /** 合同编号 */\r\n contractNo?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 截止日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n projectName?: string;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface ProjectReportDto {\r\n /** */\r\n totalAmount?: number;\r\n\r\n /** */\r\n projectName?: string;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n projectSeries?: string;\r\n\r\n /** */\r\n projectType?: string;\r\n\r\n /** */\r\n projectTypeName?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n}\r\n\r\nexport interface ProjectReportDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectReportDto[];\r\n}\r\n\r\nexport interface ProjectDetailReprotDto {\r\n /** */\r\n money?: number;\r\n\r\n /** */\r\n itemName?: string;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n payeeName?: string;\r\n\r\n /** */\r\n payeeBankName?: string;\r\n\r\n /** */\r\n payeeBankAccount?: string;\r\n\r\n /** */\r\n contractNo?: string;\r\n\r\n /** */\r\n payDate?: Date;\r\n\r\n /** */\r\n totalAmount?: number;\r\n\r\n /** */\r\n projectName?: string;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n projectSeries?: string;\r\n\r\n /** */\r\n projectType?: string;\r\n\r\n /** */\r\n projectTypeName?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n}\r\n\r\nexport interface ProjectDetailReprotDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectDetailReprotDto[];\r\n}\r\n\r\nexport interface CapitalExpenseRecord {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n payeeName?: string;\r\n\r\n /** */\r\n payeeBankName?: string;\r\n\r\n /** */\r\n payeeBankAccount?: string;\r\n\r\n /** */\r\n payType?: PayType;\r\n\r\n /** */\r\n payBankAccount?: string;\r\n\r\n /** */\r\n contractNo?: string;\r\n\r\n /** */\r\n contractTotalMoney?: number;\r\n\r\n /** */\r\n paidTotalMoney?: number;\r\n\r\n /** */\r\n payDate?: Date;\r\n\r\n /** */\r\n totalMoney?: number;\r\n\r\n /** */\r\n nonApportionTotalMoney?: number;\r\n\r\n /** */\r\n details?: CapitalExpenseRecordDetail[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n enableRestartAudit?: boolean;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n version?: number;\r\n\r\n /** */\r\n preVersionId?: number;\r\n\r\n /** */\r\n changeState?: ChangeState;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectSeries {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n isPublicShow?: boolean;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n ignored?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface Province {\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n shortName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface City {\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: Province;\r\n\r\n /** */\r\n shortCode?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface Area {\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: City;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface Town {\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: Area;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrganizationUnit {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n parent?: OrganizationUnit;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n code?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n children?: OrganizationUnit[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface AgileOrganizationUnit {\r\n /** */\r\n organizationType?: number;\r\n\r\n /** */\r\n logoImageUrl?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: Province;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: City;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: Area;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: Town;\r\n\r\n /** */\r\n place?: string;\r\n\r\n /** */\r\n principalName?: string;\r\n\r\n /** */\r\n mobilePhone?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n contactName?: string;\r\n\r\n /** */\r\n contactMobilePhone?: string;\r\n\r\n /** */\r\n contactEmailAddress?: string;\r\n\r\n /** */\r\n creditCode?: string;\r\n\r\n /** */\r\n bankAccountName?: string;\r\n\r\n /** */\r\n bankName?: string;\r\n\r\n /** */\r\n bankAccount?: string;\r\n\r\n /** */\r\n receiverName?: string;\r\n\r\n /** */\r\n receiverAddress?: string;\r\n\r\n /** */\r\n receiverMobile?: string;\r\n\r\n /** */\r\n certificateImagePath?: string;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n registerTime?: Date;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n enableRestartAudit?: boolean;\r\n\r\n /** */\r\n partnerInviteId?: number;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n parent?: OrganizationUnit;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n code?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n children?: OrganizationUnit[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface Project {\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n startDate?: Date;\r\n\r\n /** */\r\n endDate?: Date;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n projectTypes?: string;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n isPublicShow?: boolean;\r\n\r\n /** */\r\n projectSeriesId?: number;\r\n\r\n /** */\r\n projectSeries?: ProjectSeries;\r\n\r\n /** */\r\n isInternal?: boolean;\r\n\r\n /** */\r\n workflowStep?: number;\r\n\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: AgileOrganizationUnit;\r\n\r\n /** */\r\n progressReportDate?: Date;\r\n\r\n /** */\r\n summaryReportDate?: Date;\r\n\r\n /** */\r\n ignored?: boolean;\r\n\r\n /** */\r\n projectResult?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalExpenseRecordDetail {\r\n /** */\r\n capitalExpenseRecordId?: number;\r\n\r\n /** */\r\n capitalExpenseRecord?: CapitalExpenseRecord;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n projectType?: string;\r\n\r\n /** */\r\n projectTypeName?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: Project;\r\n\r\n /** */\r\n internalProjectBudgetItemId?: string;\r\n\r\n /** */\r\n itemName?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n money?: number;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n isOver?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalExpenseRecordDtoListResultDto {\r\n /** */\r\n items?: CapitalExpenseRecordDto[];\r\n}\r\n\r\nexport interface CapitalExpenseRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CapitalExpenseRecordDto[];\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationDetailCreateOrUpdateDto {\r\n /** */\r\n id?: string;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n\r\n /** 项目Id */\r\n projectId?: number;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 金额 */\r\n money?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationCreateOrUpdateDto {\r\n /** 捐赠时间 */\r\n incomeDate?: Date;\r\n\r\n /** 捐赠方名称 */\r\n donatorName?: string;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** 付款账号 */\r\n payBankAccount?: string;\r\n\r\n /** 收款账号 */\r\n bankAccount?: string;\r\n\r\n /** 合计收入金额(元) */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n details?: CapitalIncomeRecordFromDonationDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n\r\n /** 项目Id */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 金额 */\r\n money?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 捐赠时间 */\r\n incomeDate?: Date;\r\n\r\n /** 捐赠方名称 */\r\n donatorName?: string;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** 付款账号 */\r\n payBankAccount?: string;\r\n\r\n /** 收款账号 */\r\n bankAccount?: string;\r\n\r\n /** 合计收入金额(元) */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n simpleDetail?: CapitalIncomeRecordFromDonationDetailDto;\r\n\r\n /** */\r\n details?: CapitalIncomeRecordFromDonationDetailDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationPagedResultRequestDto {\r\n /** */\r\n incomeDate?: Date;\r\n\r\n /** */\r\n incomeDateStart?: Date;\r\n\r\n /** */\r\n incomeDateEnd?: Date;\r\n\r\n /** */\r\n donatorName?: string;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** */\r\n bankAccount?: string;\r\n\r\n /** */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationDtoListResultDto {\r\n /** */\r\n items?: CapitalIncomeRecordFromDonationDto[];\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromDonationDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CapitalIncomeRecordFromDonationDto[];\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherDetailCreateOrUpdateDto {\r\n /** */\r\n id?: string;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 金额 */\r\n money?: number;\r\n\r\n /** 摘要 */\r\n remark?: string;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherCreateOrUpdateDto {\r\n /** 收入时间 */\r\n incomeDate?: Date;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** 付款账号 */\r\n payBankAccount?: string;\r\n\r\n /** 收款账号 */\r\n bankAccount?: string;\r\n\r\n /** 合计收入金额(元) */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n details?: CapitalIncomeRecordFromOtherDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n capitalProperty?: CapitalProperty;\r\n\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 金额 */\r\n money?: number;\r\n\r\n /** 摘要 */\r\n remark?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 收入时间 */\r\n incomeDate?: Date;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** 付款账号 */\r\n payBankAccount?: string;\r\n\r\n /** 收款账号 */\r\n bankAccount?: string;\r\n\r\n /** 合计收入金额(元) */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n simpleDetail?: CapitalIncomeRecordFromOtherDetailDto;\r\n\r\n /** */\r\n details?: CapitalIncomeRecordFromOtherDetailDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherPagedResultRequestDto {\r\n /** */\r\n incomeDate?: Date;\r\n\r\n /** */\r\n incomeDateStart?: Date;\r\n\r\n /** */\r\n incomeDateEnd?: Date;\r\n\r\n /** */\r\n incomeType?: PayType;\r\n\r\n /** */\r\n bankAccount?: string;\r\n\r\n /** */\r\n totalIncomeMoney?: number;\r\n\r\n /** */\r\n totalIncomeMoneyStart?: number;\r\n\r\n /** */\r\n totalIncomeMoneyEnd?: number;\r\n\r\n /** */\r\n incomeCategory?: IncomeCategory;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherDtoListResultDto {\r\n /** */\r\n items?: CapitalIncomeRecordFromOtherDto[];\r\n}\r\n\r\nexport interface CapitalIncomeRecordFromOtherDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CapitalIncomeRecordFromOtherDto[];\r\n}\r\n\r\nexport interface CityCreateOrUpdateDto {\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n shortCode?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CityDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CityDto[];\r\n}\r\n\r\nexport interface CmsAnchorCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** 锚点内容的建议宽度 */\r\n width?: number;\r\n\r\n /** 锚点内容的建议高度 */\r\n height?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsAnchorDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** 锚点内容的建议宽度 */\r\n width?: number;\r\n\r\n /** 锚点内容的建议高度 */\r\n height?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsAnchorDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CmsAnchorDto[];\r\n}\r\n\r\nexport interface CmsCategoryCreateOrUpdateDto {\r\n /** */\r\n categoryCode?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n mobileTitleImagePath?: string;\r\n\r\n /** */\r\n type?: CmsCategoryType;\r\n\r\n /** */\r\n redirectUrl?: string;\r\n\r\n /** */\r\n redirectUrlForWeixinMiniProgram?: string;\r\n\r\n /** 破格图片 */\r\n unconventionalImagePath?: string;\r\n\r\n /** 副标题 */\r\n contentAlias?: string;\r\n\r\n /** 栏目简介 */\r\n shortDesc?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsCategoryDto {\r\n /** */\r\n categoryCode?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n mobileTitleImagePath?: string;\r\n\r\n /** */\r\n type?: CmsCategoryType;\r\n\r\n /** */\r\n redirectUrl?: string;\r\n\r\n /** */\r\n redirectUrlForWeixinMiniProgram?: string;\r\n\r\n /** 破格图片 */\r\n unconventionalImagePath?: string;\r\n\r\n /** 副标题 */\r\n contentAlias?: string;\r\n\r\n /** */\r\n shortDesc?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsCategoryUpdateSortDto {\r\n /** Id */\r\n ids?: number[];\r\n}\r\n\r\nexport interface CmsCategoryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CmsCategoryDto[];\r\n}\r\n\r\nexport interface CmsContentDetailDto {\r\n /** 文章内容 */\r\n description?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n status?: CmsContentStatus;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n isTop?: boolean;\r\n\r\n /** 当被设置置顶后,呈现的显示顺序 */\r\n topDisplayOrder?: number;\r\n\r\n /** */\r\n titleImageUrl?: string;\r\n\r\n /** */\r\n cmsCategory?: CmsCategoryDto;\r\n\r\n /** */\r\n cmsCategoryId?: number;\r\n\r\n /** */\r\n author?: string;\r\n\r\n /** 发布时间 */\r\n publishTime?: Date;\r\n\r\n /** */\r\n source?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** 阅读数量 */\r\n readCount?: number;\r\n\r\n /** 点赞数量 */\r\n praisedCount?: number;\r\n\r\n /** */\r\n customlinks?: string;\r\n\r\n /** 首页滚动 */\r\n isHomeScrolling?: boolean;\r\n\r\n /** */\r\n attachments?: AttachmentDto[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsContentCreateOrUpdateDto {\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n titleImageUrl?: string;\r\n\r\n /** */\r\n cmsCategoryId?: number;\r\n\r\n /** */\r\n author?: string;\r\n\r\n /** 发布时间 */\r\n publishTime?: Date;\r\n\r\n /** 是否直接发布 */\r\n isPublish?: boolean;\r\n\r\n /** 内容来源 */\r\n source?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 阅读数量 */\r\n readCount?: number;\r\n\r\n /** 点赞数量 */\r\n praisedCount?: number;\r\n\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 基金项目Id */\r\n fundProjectID?: number;\r\n\r\n /** */\r\n customlinks?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsContentDto {\r\n /** */\r\n status?: CmsContentStatus;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n isTop?: boolean;\r\n\r\n /** 当被设置置顶后,呈现的显示顺序 */\r\n topDisplayOrder?: number;\r\n\r\n /** */\r\n titleImageUrl?: string;\r\n\r\n /** */\r\n cmsCategory?: CmsCategoryDto;\r\n\r\n /** */\r\n cmsCategoryId?: number;\r\n\r\n /** */\r\n author?: string;\r\n\r\n /** 发布时间 */\r\n publishTime?: Date;\r\n\r\n /** */\r\n source?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** 阅读数量 */\r\n readCount?: number;\r\n\r\n /** 点赞数量 */\r\n praisedCount?: number;\r\n\r\n /** */\r\n customlinks?: string;\r\n\r\n /** 首页滚动 */\r\n isHomeScrolling?: boolean;\r\n\r\n /** */\r\n attachments?: AttachmentDto[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsContentDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CmsContentDto[];\r\n}\r\n\r\nexport interface CmsFriendLinkCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n link?: string;\r\n\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n\r\n /** */\r\n logo?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsFriendLinkDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n link?: string;\r\n\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n\r\n /** */\r\n logo?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CmsFriendLinkDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CmsFriendLinkDto[];\r\n}\r\n\r\nexport interface InvoiceInformationDto {\r\n /** 订单ID */\r\n orderID?: string;\r\n\r\n /** 付款成功后创建的记录ID或手动新增的收入记录ID */\r\n recordID?: number;\r\n\r\n /** 抬头 */\r\n title?: string;\r\n\r\n /** 收件人姓名 */\r\n name?: string;\r\n\r\n /** 收件人电话 */\r\n telephone?: string;\r\n\r\n /** 收件人地址 */\r\n address?: string;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 税号 */\r\n taxNum?: string;\r\n\r\n /** 发票内容 */\r\n detailInfo?: string;\r\n\r\n /** 发票金额 */\r\n taxAmount?: number;\r\n\r\n /** */\r\n type?: ElectronicInvoiceType;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundIncomeRecordDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 捐赠基金Id */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 捐赠项目Id */\r\n fundProjectID?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** 捐赠产品Id */\r\n fundProductID?: number;\r\n\r\n /** 捐赠金额 */\r\n moneyAmount?: number;\r\n\r\n /** 捐赠描述 */\r\n content?: string;\r\n\r\n /** 捐赠时间 */\r\n incomeTime?: Date;\r\n\r\n /** 捐赠人姓名 */\r\n donorName?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** 捐赠人电话 */\r\n donorTelephone?: string;\r\n\r\n /** 捐赠人邮箱 */\r\n donorEmail?: string;\r\n\r\n /** 捐赠人地址 */\r\n donorAddress?: string;\r\n\r\n /** 邮政编码 */\r\n donorPostCode?: string;\r\n\r\n /** 是否需要发票 */\r\n isNeedInVoice?: boolean;\r\n\r\n /** */\r\n incomeType?: IncomeType;\r\n\r\n /** 付款类型(数据字典) */\r\n paymentType?: string;\r\n\r\n /** 是否线上支付 */\r\n isOnLinePayment?: boolean;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 留言 */\r\n leaveMessage?: string;\r\n\r\n /** 已打印次数 */\r\n printCount?: number;\r\n\r\n /** 是否来自境外 */\r\n isAbroad?: boolean;\r\n\r\n /** 是否月捐 */\r\n isMonthDonor?: boolean;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** 订单号 */\r\n orderID?: string;\r\n\r\n /** 捐赠意向 */\r\n donationIntent?: string;\r\n\r\n /** */\r\n invoiceInformation?: InvoiceInformationDto;\r\n\r\n /** 创建时间 */\r\n creationTime?: Date;\r\n\r\n /** 基金名称 */\r\n fundName?: string;\r\n\r\n /** 基金项目名称 */\r\n projectName?: string;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n donateYear?: string;\r\n\r\n /** */\r\n donateMonthAndDay?: string;\r\n\r\n /** */\r\n weixinTradeNo?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundIncomeRecordCreateOrUpdateDto {\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 捐赠基金Id */\r\n fundID?: number;\r\n\r\n /** 捐赠项目Id */\r\n fundProjectID?: number;\r\n\r\n /** 捐赠产品Id */\r\n fundProductID?: number;\r\n\r\n /** 捐赠金额 */\r\n moneyAmount?: number;\r\n\r\n /** 捐赠描述 */\r\n content?: string;\r\n\r\n /** 捐赠时间 */\r\n incomeTime?: Date;\r\n\r\n /** 捐赠人姓名 */\r\n donorName?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** 捐赠人电话 */\r\n donorTelephone?: string;\r\n\r\n /** 捐赠人邮箱 */\r\n donorEmail?: string;\r\n\r\n /** 捐赠人地址 */\r\n donorAddress?: string;\r\n\r\n /** 邮政编码 */\r\n donorPostCode?: string;\r\n\r\n /** 是否需要发票 */\r\n isNeedInVoice?: boolean;\r\n\r\n /** */\r\n incomeType?: IncomeType;\r\n\r\n /** 付款类型(数据字典) */\r\n paymentType?: string;\r\n\r\n /** 是否线上支付 */\r\n isOnLinePayment?: boolean;\r\n\r\n /** */\r\n currencyType?: CurrencyType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 留言 */\r\n leaveMessage?: string;\r\n\r\n /** 已打印次数 */\r\n printCount?: number;\r\n\r\n /** 是否来自境外 */\r\n isAbroad?: boolean;\r\n\r\n /** 是否月捐 */\r\n isMonthDonor?: boolean;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** 订单号 */\r\n orderID?: string;\r\n\r\n /** 发票Id */\r\n invoiceId?: number;\r\n\r\n /** 发票抬头 */\r\n invoiceTitle?: string;\r\n\r\n /** 发票收件人姓名 */\r\n invoiceName?: string;\r\n\r\n /** 发票收件人电话 */\r\n invoiceTelephone?: string;\r\n\r\n /** 发票收件人地址 */\r\n invoiceAddress?: string;\r\n\r\n /** */\r\n type?: ElectronicInvoiceType;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 线下转账记录ID */\r\n collectWaterId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CollectWaterDto {\r\n /** 单据编号 */\r\n billNo?: string;\r\n\r\n /** 单据日期 */\r\n billDate?: Date;\r\n\r\n /** 生效状态 */\r\n validStatus?: string;\r\n\r\n /** 交易对象类型 */\r\n tradeObjectType?: string;\r\n\r\n /** 收款交易类型 */\r\n collectionTradeType?: string;\r\n\r\n /** 付款银行账号 */\r\n paymentBankAccount?: string;\r\n\r\n /** 收支项目 */\r\n donateProject?: string;\r\n\r\n /** 结算方式 */\r\n paymentType?: string;\r\n\r\n /** 摘要 */\r\n summary?: string;\r\n\r\n /** 组织本币 */\r\n organizeLocalMoney?: number;\r\n\r\n /** 客户 */\r\n customer?: string;\r\n\r\n /** 收款原币金额 */\r\n originalMoney?: number;\r\n\r\n /** 币种 */\r\n currency?: string;\r\n\r\n /** 单据状态 */\r\n billStatus?: string;\r\n\r\n /** 收款银行账户 */\r\n receivingBankAccount?: string;\r\n\r\n /** 组织本币汇率 */\r\n organizeLocalExchangeRate?: number;\r\n\r\n /** */\r\n status?: CollectWaterStatus;\r\n\r\n /** 关联捐赠记录Id */\r\n fundIncomeRecordId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CollectWaterDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CollectWaterDto[];\r\n}\r\n\r\nexport interface CollectWaterCreateOrUpdateDto {\r\n /** 单据编号 */\r\n billNo?: string;\r\n\r\n /** 单据日期 */\r\n billDate?: Date;\r\n\r\n /** 生效状态 */\r\n validStatus?: string;\r\n\r\n /** 交易对象类型 */\r\n tradeObjectType?: string;\r\n\r\n /** 收款交易类型 */\r\n collectionTradeType?: string;\r\n\r\n /** 付款银行账号 */\r\n paymentBankAccount?: string;\r\n\r\n /** 收支项目 */\r\n donateProject?: string;\r\n\r\n /** 结算方式 */\r\n paymentType?: string;\r\n\r\n /** 摘要 */\r\n summary?: string;\r\n\r\n /** 组织本币 */\r\n organizeLocalMoney?: number;\r\n\r\n /** 客户 */\r\n customer?: string;\r\n\r\n /** 收款原币金额 */\r\n originalMoney?: number;\r\n\r\n /** 币种 */\r\n currency?: string;\r\n\r\n /** 单据状态 */\r\n billStatus?: string;\r\n\r\n /** 收款银行账户 */\r\n receivingBankAccount?: string;\r\n\r\n /** 组织本币汇率 */\r\n organizeLocalExchangeRate?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ChangeUiThemeInput {\r\n /** */\r\n theme?: string;\r\n}\r\n\r\nexport interface CustomFormLayoutDetailCreateOrUpdateDto {\r\n /** 显示顺序 */\r\n sequence?: number;\r\n\r\n /** */\r\n parentId?: string;\r\n\r\n /** */\r\n elementName?: string;\r\n\r\n /** */\r\n elementContent?: string;\r\n\r\n /** */\r\n textAlign?: string;\r\n\r\n /** */\r\n elementAttributes?: object;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFieldDataSourceCreateOrUpdateDto {\r\n /** 绑定的要显示的名称 */\r\n bindDisplayName?: string;\r\n\r\n /** 绑定的值 */\r\n bindValue?: string;\r\n\r\n /** */\r\n dataSourceType?: CustomFormDataSourceType;\r\n\r\n /** */\r\n fieldId?: string;\r\n\r\n /** */\r\n dataSource?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormFieldChooseValueCreateOrUpdateDto {\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormFieldCreateOrUpdateDto {\r\n /** 是否为动态字段 */\r\n isDynamic?: boolean;\r\n\r\n /** */\r\n fieldName?: string;\r\n\r\n /** */\r\n fieldDisplayName?: string;\r\n\r\n /** */\r\n placeholder?: string;\r\n\r\n /** */\r\n elementType?: string;\r\n\r\n /** 是否必填项 */\r\n required?: boolean;\r\n\r\n /** */\r\n fieldValidators?: string[];\r\n\r\n /** 所在的布局 */\r\n layoutId?: string;\r\n\r\n /** */\r\n dataSource?: CustomFieldDataSourceCreateOrUpdateDto;\r\n\r\n /** 可用来选择的自定义的列表值(仅当DataSource是CustomValues时,才有值) */\r\n chooseValues?: CustomFormFieldChooseValueCreateOrUpdateDto[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormCreateOrUpdateDto {\r\n /** */\r\n hostType?: CustomFormType;\r\n\r\n /** 宿主ID,可为空。当为空时,表示针对某类通用的。 */\r\n hostId?: string;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n layout?: CustomFormLayoutDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n fields?: CustomFormFieldCreateOrUpdateDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CustomFormLayoutDetailDto {\r\n /** */\r\n customFormId?: number;\r\n\r\n /** 显示顺序 */\r\n sequence?: number;\r\n\r\n /** */\r\n parentId?: string;\r\n\r\n /** */\r\n elementName?: string;\r\n\r\n /** */\r\n elementContent?: string;\r\n\r\n /** */\r\n textAlign?: string;\r\n\r\n /** */\r\n elementAttributes?: object;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFieldDataSourceDto {\r\n /** */\r\n fieldId?: string;\r\n\r\n /** 绑定的要显示的名称 */\r\n bindDisplayName?: string;\r\n\r\n /** 绑定的值 */\r\n bindValue?: string;\r\n\r\n /** */\r\n dataSourceType?: CustomFormDataSourceType;\r\n\r\n /** */\r\n dataSource?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormFieldChooseValueDto {\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormFieldDto {\r\n /** */\r\n customFormId?: number;\r\n\r\n /** 是否为动态字段 */\r\n isDynamic?: boolean;\r\n\r\n /** */\r\n fieldName?: string;\r\n\r\n /** */\r\n fieldDisplayName?: string;\r\n\r\n /** */\r\n placeholder?: string;\r\n\r\n /** */\r\n elementType?: string;\r\n\r\n /** 是否必填项 */\r\n required?: boolean;\r\n\r\n /** */\r\n fieldValidators?: string[];\r\n\r\n /** 所在的布局 */\r\n layoutId?: string;\r\n\r\n /** */\r\n dataSource?: CustomFieldDataSourceDto;\r\n\r\n /** 可用来选择的自定义的列表值(仅当DataSource是CustomValues时,才有值) */\r\n chooseValues?: CustomFormFieldChooseValueDto[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CustomFormDto {\r\n /** */\r\n hostType?: CustomFormType;\r\n\r\n /** 宿主ID,可为空。当为空时,表示针对某类通用的。 */\r\n hostId?: string;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n layout?: CustomFormLayoutDetailDto[];\r\n\r\n /** */\r\n fields?: CustomFormFieldDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CustomFormCopyInput {\r\n /** 宿主ID,可为空。当为空时,表示针对某类通用的。 */\r\n hostId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CustomFormDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CustomFormDto[];\r\n}\r\n\r\nexport interface CycleDonateConfigDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n user?: UserMiniDto;\r\n\r\n /** */\r\n invoice?: InvoiceInformationDto;\r\n\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** */\r\n donationType?: DonationType;\r\n\r\n /** */\r\n donationCycle?: DonationCycle;\r\n\r\n /** 捐赠时间 */\r\n donationTime?: Date;\r\n\r\n /** 固定捐助天 */\r\n donorDay?: number;\r\n\r\n /** 捐赠人 */\r\n displayName?: string;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** 联系电话 */\r\n mobileTelephone?: string;\r\n\r\n /** 捐赠金额 */\r\n donationAmount?: number;\r\n\r\n /** 捐赠留言 */\r\n leaveMessage?: string;\r\n\r\n /** 订单Id */\r\n contractOrderId?: string;\r\n\r\n /** 发票Id */\r\n invoiceId?: number;\r\n\r\n /** */\r\n donorItemType?: DonorItemType;\r\n\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n\r\n /** 捐赠协议序列号(签约银行返回) */\r\n donorSignSn?: string;\r\n\r\n /** 平台与天付宝确认签约订单号,关联发票订单Id */\r\n spBillNo?: string;\r\n\r\n /** 国采订单号 */\r\n listId?: string;\r\n\r\n /** 是否开启 */\r\n isOpen?: boolean;\r\n\r\n /** 是否已确认 */\r\n isConfirmed?: boolean;\r\n\r\n /** 是否为临时 */\r\n isTemp?: boolean;\r\n\r\n /** */\r\n userType?: UserType;\r\n\r\n /** 累计次数 */\r\n cumulativeTimes?: number;\r\n\r\n /** 累计捐款金额 */\r\n accumulatedDonationAmount?: number;\r\n\r\n /** 捐赠类型 */\r\n donationTypeName?: string;\r\n\r\n /** 捐赠周期 */\r\n donationCycleName?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CycleDonateConfigDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CycleDonateConfigDto[];\r\n}\r\n\r\nexport interface CycleDonateChangeStatusInput {\r\n /** Id */\r\n id?: number;\r\n\r\n /** */\r\n donorItemType?: DonorItemType;\r\n\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n}\r\n\r\nexport interface CycleDonateChangeCycleInput {\r\n /** Id */\r\n id?: number;\r\n\r\n /** */\r\n donationCycle?: DonationCycle;\r\n\r\n /** 捐赠时间 */\r\n donationTime?: Date;\r\n\r\n /** 固定捐助天 */\r\n donorDay?: number;\r\n\r\n /** 捐赠金额 */\r\n donationAmount?: number;\r\n}\r\n\r\nexport interface ActivityReportDto {\r\n /** 月份 */\r\n months?: number[];\r\n\r\n /** 普通活动 */\r\n generalActivity?: number[];\r\n\r\n /** 志愿者活动 */\r\n volunteerActivity?: number[];\r\n}\r\n\r\nexport interface DashbordPublishedCount {\r\n /** 发布文章总数 */\r\n articlePublishedCount?: number;\r\n\r\n /** 发布活动总数 */\r\n activityPublishedCount?: number;\r\n}\r\n\r\nexport interface VolunteerReportDto {\r\n /** 月份 */\r\n months?: number[];\r\n\r\n /** 总的数量 */\r\n total?: number[];\r\n\r\n /** 新增的数量 */\r\n new?: number[];\r\n}\r\n\r\nexport interface AccessRecordReportDto {\r\n /** */\r\n dateArray?: string[];\r\n\r\n /** */\r\n countArray?: number[];\r\n}\r\n\r\nexport interface TotalTenantAccessRecordReportDto {\r\n /** */\r\n pcData?: AccessRecordReportDto;\r\n\r\n /** */\r\n mobileData?: AccessRecordReportDto;\r\n\r\n /** */\r\n wechatData?: AccessRecordReportDto;\r\n}\r\n\r\nexport interface FundRankDto {\r\n /** */\r\n fundName?: string;\r\n\r\n /** */\r\n moneyTotal?: number;\r\n\r\n /** */\r\n fundID?: number;\r\n}\r\n\r\nexport interface FundProjectRankDto {\r\n /** */\r\n projectName?: string;\r\n\r\n /** */\r\n moneyTotal?: number;\r\n\r\n /** */\r\n projectID?: number;\r\n}\r\n\r\nexport interface ProjectCategoryChartDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n value?: number;\r\n}\r\n\r\nexport interface DataDictionaryCreateOrUpdateDto {\r\n /** 租户。 */\r\n tenantId?: number;\r\n\r\n /** 键名 */\r\n key?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** 显示顺序 */\r\n displayOrder?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DataDictionarySyncInput {\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n syncMode?: DataDictionarySyncMode;\r\n}\r\n\r\nexport interface DataDictionaryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: DataDictionaryDto[];\r\n}\r\n\r\nexport interface DataPermissionLimitDto {\r\n /** 宿主ID,可以是具体的id,也可以是`all`这个关键字 */\r\n hostId?: string;\r\n\r\n /** */\r\n hostType?: DataPermissionLimitHostType;\r\n\r\n /** */\r\n targetType?: DataPermissionLimitTargetType;\r\n\r\n /** 被授权的对象 */\r\n targetId?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface DataPermissionLimitUpdateDto {\r\n /** 宿主ID,可以是具体的id,也可以是`all`这个关键字 */\r\n hostId?: string[];\r\n\r\n /** */\r\n targetType?: DataPermissionLimitTargetType;\r\n\r\n /** */\r\n hostType?: DataPermissionLimitHostType;\r\n\r\n /** */\r\n targetId?: string[];\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface DepartmentCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DepartmentDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DepartmentDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: DepartmentDto[];\r\n}\r\n\r\nexport interface DonatedAmountConfigCreateOrUpdateDto {\r\n /** 名称 */\r\n name?: string;\r\n\r\n /** 金额 */\r\n amount?: number;\r\n\r\n /** 图片地址 */\r\n imageUrl?: string;\r\n\r\n /** */\r\n sourceType?: DonatedAmountConfigSourceType;\r\n\r\n /** */\r\n sourceId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DonatedAmountConfigDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** 名称 */\r\n name?: string;\r\n\r\n /** 金额 */\r\n amount?: number;\r\n\r\n /** 图片地址 */\r\n imageUrl?: string;\r\n\r\n /** */\r\n sourceType?: DonatedAmountConfigSourceType;\r\n\r\n /** 来源Id */\r\n sourceId?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface DonatedAmountConfigDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: DonatedAmountConfigDto[];\r\n}\r\n\r\nexport interface ElectronicInvoiceCreateOrUpdateDto {\r\n /** */\r\n type?: ElectronicInvoiceType;\r\n\r\n /** 捐赠票据抬头 */\r\n donationNoteTitle?: string;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 手机号 */\r\n mobilePhone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 善款捐赠明细Id */\r\n fundIncomeRecordIds?: number[];\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ElectronicInvoiceDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 冲红发票Id */\r\n creditNoteInvoiceId?: number;\r\n\r\n /** */\r\n creditNoteInvoice?: ElectronicInvoiceDto;\r\n\r\n /** */\r\n type?: ElectronicInvoiceType;\r\n\r\n /** 捐赠票据抬头 */\r\n donationNoteTitle?: string;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 手机号 */\r\n mobilePhone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 开票金额 */\r\n invoiceAmount?: number;\r\n\r\n /** */\r\n status?: ElectronicInvoiceStatus;\r\n\r\n /** 图片地址 */\r\n imageUrl?: string;\r\n\r\n /** 是否冲红发票 */\r\n isCreditNoteInvoice?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundIncomeRecordMiniDto {\r\n /** Id */\r\n id?: number;\r\n\r\n /** 捐赠意向 */\r\n donationIntent?: string;\r\n\r\n /** 捐赠金额 */\r\n moneyAmount?: number;\r\n\r\n /** 捐赠时间 */\r\n incomeTime?: Date;\r\n}\r\n\r\nexport interface FundIncomeRecordMiniDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundIncomeRecordMiniDto[];\r\n}\r\n\r\nexport interface UserElectronicInvoiceDto {\r\n /** */\r\n status?: ElectronicInvoiceStatus;\r\n\r\n /** 图片地址 */\r\n imageUrl?: string;\r\n\r\n /** */\r\n fundIncomeRecords?: FundIncomeRecordMiniDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserElectronicInvoiceDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: UserElectronicInvoiceDto[];\r\n}\r\n\r\nexport interface ElectronicInvoiceCountGetDto {\r\n /** 发票总张数 */\r\n totalNumber?: number;\r\n\r\n /** 已开发票数量 */\r\n invoicedQuantity?: number;\r\n\r\n /** 可开发票数量 */\r\n canInvoiceQuantity?: number;\r\n}\r\n\r\nexport interface ElectronicInvoiceCountPutDto {\r\n /** 新增发票张数 */\r\n totalNumber?: number;\r\n}\r\n\r\nexport interface ElectronicInvoiceConfirmPutDto {\r\n /** 电子发票Id */\r\n ids?: number[];\r\n}\r\n\r\nexport interface ElectronicInvoicePagedResultRequestDto {\r\n /** 捐赠票据抬头 */\r\n donationNoteTitle?: string;\r\n\r\n /** */\r\n status?: ElectronicInvoiceStatus;\r\n\r\n /** 手机号 */\r\n mobilePhone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface ElectronicInvoiceDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ElectronicInvoiceDto[];\r\n}\r\n\r\nexport interface SelectListGroup {\r\n /** */\r\n disabled?: boolean;\r\n\r\n /** */\r\n name?: string;\r\n}\r\n\r\nexport interface SelectListItem {\r\n /** */\r\n disabled?: boolean;\r\n\r\n /** */\r\n group?: SelectListGroup;\r\n\r\n /** */\r\n selected?: boolean;\r\n\r\n /** */\r\n text?: string;\r\n\r\n /** */\r\n value?: string;\r\n}\r\n\r\nexport interface ExternalDueDiligenceRecordCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n dueDiligenceTypeId?: number;\r\n\r\n /** */\r\n startDate?: Date;\r\n\r\n /** */\r\n endDate?: Date;\r\n\r\n /** */\r\n place?: string;\r\n\r\n /** */\r\n members?: string;\r\n\r\n /** */\r\n visitObjectJson?: string;\r\n\r\n /** */\r\n orgInfo?: string;\r\n\r\n /** */\r\n projectInfo?: string;\r\n\r\n /** */\r\n omnibusOpinion?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n cancelRestartAudit?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalDueDiligenceRecordDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n dueDiligenceTypeId?: number;\r\n\r\n /** */\r\n startDate?: Date;\r\n\r\n /** */\r\n endDate?: Date;\r\n\r\n /** */\r\n place?: string;\r\n\r\n /** */\r\n members?: string;\r\n\r\n /** */\r\n visitObjectJson?: string;\r\n\r\n /** */\r\n orgInfo?: string;\r\n\r\n /** */\r\n projectInfo?: string;\r\n\r\n /** */\r\n omnibusOpinion?: string;\r\n\r\n /** */\r\n dueDiligenceType?: DataDictionaryDto;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n cancelRestartAudit?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalDueDiligenceRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalDueDiligenceRecordDto[];\r\n}\r\n\r\nexport interface ExternalDueDiligenceRecordDtoListResultDto {\r\n /** */\r\n items?: ExternalDueDiligenceRecordDto[];\r\n}\r\n\r\nexport interface ExternalMonthlyPlanDetailCreateOrUpdateDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: ProvinceDto;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: CityDto;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: AreaDto;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: TownDto;\r\n\r\n /** 详细地址 */\r\n place?: string;\r\n\r\n /** 预计人数 */\r\n peopleCount?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlyPlanCreateOrUpdateDto {\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n details?: ExternalMonthlyPlanDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlyPlanDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: ProvinceDto;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: CityDto;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: AreaDto;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: TownDto;\r\n\r\n /** 详细地址 */\r\n place?: string;\r\n\r\n /** 预计人数 */\r\n peopleCount?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlyPlanDto {\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n month?: number;\r\n\r\n /** */\r\n details?: ExternalMonthlyPlanDetailDto[];\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlyPlanDtoListResultDto {\r\n /** */\r\n items?: ExternalMonthlyPlanDto[];\r\n}\r\n\r\nexport interface ExternalMonthlyPlanDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalMonthlyPlanDto[];\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n completeStatus?: ProjectMonthlyPlanCompleteStatus;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: ProvinceDto;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: CityDto;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: AreaDto;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: TownDto;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 实到人数 */\r\n peopleCount?: number;\r\n\r\n /** 原因\\/问题 */\r\n reason?: string;\r\n\r\n /** 对应策略 */\r\n tactics?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n externalMonthlyPlanDetailId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeDto {\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n month?: number;\r\n\r\n /** */\r\n details?: ExternalMonthlySummarizeDetailDto[];\r\n\r\n /** 面临的问题 */\r\n problem?: string;\r\n\r\n /** 所需资源 */\r\n needsResource?: string;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 对应月计划Id */\r\n externalMonthlyPlanId?: number;\r\n\r\n /** */\r\n externalMonthlyPlan?: ExternalMonthlyPlanDto;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeDetailCreateOrUpdateDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n completeStatus?: ProjectMonthlyPlanCompleteStatus;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 实到人数 */\r\n peopleCount?: number;\r\n\r\n /** 原因\\/问题 */\r\n reason?: string;\r\n\r\n /** 对应策略 */\r\n tactics?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n externalMonthlyPlanDetailId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n details?: ExternalMonthlySummarizeDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n externalMonthlyPlanId?: number;\r\n\r\n /** 面临的问题 */\r\n problem?: string;\r\n\r\n /** 所需资源 */\r\n needsResource?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeDtoListResultDto {\r\n /** */\r\n items?: ExternalMonthlySummarizeDto[];\r\n}\r\n\r\nexport interface ExternalMonthlySummarizeDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalMonthlySummarizeDto[];\r\n}\r\n\r\nexport interface ProjectSpecificGoalDto {\r\n /** 序列(顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 项目成效(具体目标) */\r\n effect?: string;\r\n\r\n /** 具体指标(具体目标描述) */\r\n norm?: string;\r\n\r\n /** 验证条件 */\r\n validateCondition?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ExternalProjectSpecificPlanDto {\r\n /** 序列(顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 具体内容 */\r\n summary?: string;\r\n\r\n /** 开始年月 */\r\n startDate?: Date;\r\n\r\n /** 结束年月 */\r\n endDate?: Date;\r\n\r\n /** 活动频次 */\r\n activityCount?: number;\r\n\r\n /** 参与人数 */\r\n peopleCount?: number;\r\n\r\n /** 预计产出 */\r\n output?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ProjectRiskPlanDto {\r\n /** 序列(顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 潜在风险 */\r\n risk?: string;\r\n\r\n /** 应对策略 */\r\n copingStrategy?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ProjectMemberItemDto {\r\n /** 序列(顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 姓名 */\r\n name?: string;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 年龄 */\r\n age?: number;\r\n\r\n /** 学历 */\r\n educationTypeId?: number;\r\n\r\n /** */\r\n educationType?: DataDictionaryDto;\r\n\r\n /** 所学专业 */\r\n major?: string;\r\n\r\n /** 职业资质 */\r\n qualifications?: string;\r\n\r\n /** 团队分工 */\r\n projectRole?: string;\r\n\r\n /** 投入的时间精力比(%) */\r\n inputPercent?: number;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ExternalProjectBudgetItemDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 序列(显示顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectBudgetCategory?: ProjectBudgetCategory;\r\n\r\n /** */\r\n projectBudgetType?: ProjectBudgetType;\r\n\r\n /** 子项目内容(三级科目) */\r\n itemName?: string;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 具体内容 */\r\n content?: string;\r\n\r\n /** 单价(元) */\r\n unitPrice?: number;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 单位 */\r\n unit?: string;\r\n\r\n /** 预算报价 */\r\n budgetQuotation?: number;\r\n\r\n /** */\r\n projectBudgetCapitalSource?: ProjectBudgetCapitalSource;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface ExternalProjectCreateOrUpdateDto {\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** 项目概述 */\r\n summary?: string;\r\n\r\n /** 项目关注的问题描述,以及对问题原因的分析 */\r\n problemDescription?: string;\r\n\r\n /** 项目实施地域的情况及服务对象的总体情况 */\r\n areaDescription?: string;\r\n\r\n /** 针对该问题,其他机构或政府已经采取的服务、政策及经验 */\r\n otherExperience?: string;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 直接受益对象 */\r\n benefitObjectOfDirect?: string;\r\n\r\n /** 间接受益对象 */\r\n benefitObjectOfIndirect?: string;\r\n\r\n /** 总目标 */\r\n objectiveOfMain?: string;\r\n\r\n /** 项目成效及成功指标 */\r\n effects?: ProjectSpecificGoalDto[];\r\n\r\n /** 具体计划 */\r\n specificPlans?: ExternalProjectSpecificPlanDto[];\r\n\r\n /** 项目风险预案 */\r\n riskPlans?: ProjectRiskPlanDto[];\r\n\r\n /** 项目团队信息 */\r\n projectMemberItems?: ProjectMemberItemDto[];\r\n\r\n /** 项目负责人简介 */\r\n projectMangerInfo?: string;\r\n\r\n /** 项目预算明细 */\r\n budgetItems?: ExternalProjectBudgetItemDto[];\r\n\r\n /** 向基金会申请资金 */\r\n applyMoney?: number;\r\n\r\n /** 自筹资金 */\r\n selfMoney?: number;\r\n\r\n /** 其他来源资金 */\r\n otherMoney?: number;\r\n\r\n /** 总预算 = 向基金会申请资金+自筹资金+其他来源资金 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 总预算 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectDetailDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n projectTypes?: string;\r\n\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** 项目概述 */\r\n summary?: string;\r\n\r\n /** 项目关注的问题描述,以及对问题原因的分析 */\r\n problemDescription?: string;\r\n\r\n /** 项目实施地域的情况及服务对象的总体情况 */\r\n areaDescription?: string;\r\n\r\n /** 针对该问题,其他机构或政府已经采取的服务、政策及经验 */\r\n otherExperience?: string;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 直接受益对象 */\r\n benefitObjectOfDirect?: string;\r\n\r\n /** 间接受益对象 */\r\n benefitObjectOfIndirect?: string;\r\n\r\n /** 总目标 */\r\n objectiveOfMain?: string;\r\n\r\n /** 项目成效及成功指标 */\r\n effects?: ProjectSpecificGoalDto[];\r\n\r\n /** 具体计划 */\r\n specificPlans?: ExternalProjectSpecificPlanDto[];\r\n\r\n /** 项目风险预案 */\r\n riskPlans?: ProjectRiskPlanDto[];\r\n\r\n /** 项目团队信息 */\r\n projectMemberItems?: ProjectMemberItemDto[];\r\n\r\n /** 项目负责人简介 */\r\n projectMangerInfo?: string;\r\n\r\n /** 项目预算明细 */\r\n budgetItems?: ExternalProjectBudgetItemDto[];\r\n\r\n /** 向基金会申请资金 */\r\n applyMoney?: number;\r\n\r\n /** 自筹资金 */\r\n selfMoney?: number;\r\n\r\n /** 其他来源资金 */\r\n otherMoney?: number;\r\n\r\n /** 总预算 = 向基金会申请资金+自筹资金+其他来源资金 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectMonthlySummaizeDetailsDto {\r\n /** 活动照片 */\r\n attachment?: AttachmentDto[];\r\n\r\n /** 活动标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** 执行概述 */\r\n summary?: string;\r\n}\r\n\r\nexport interface ProjectMonthlySummaizeDetailsDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectMonthlySummaizeDetailsDto[];\r\n}\r\n\r\nexport interface UpdateExternalProjectBudgetItemsDto {\r\n /** 项目预算明细 */\r\n budgetItems?: ExternalProjectBudgetItemDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectDtoListResultDto {\r\n /** */\r\n items?: ExternalProjectDto[];\r\n}\r\n\r\nexport interface ExternalProjectDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalProjectDto[];\r\n}\r\n\r\nexport interface ExternalProjectChangeApplyCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n sourceExternalProjectId?: number;\r\n\r\n /** */\r\n targetExternalProjectId?: number;\r\n\r\n /** 变更类别,多选,数据字典(经费变更\\/项目延期\\/内容变更\\/目标人群变更\\/其他变) */\r\n changeTypes?: string;\r\n\r\n /** */\r\n savedChangeTypes?: string[];\r\n\r\n /** 变更时间 */\r\n changeDate?: Date;\r\n\r\n /** 变更原因 */\r\n changeReason?: string;\r\n\r\n /** 变更内容 */\r\n changeContent?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectChangeApplyDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n sourceExternalProjectId?: number;\r\n\r\n /** */\r\n sourceExternalProject?: ExternalProjectDto;\r\n\r\n /** */\r\n targetExternalProjectId?: number;\r\n\r\n /** */\r\n targetExternalProject?: ExternalProjectDto;\r\n\r\n /** 变更类别,多选,数据字典(经费变更\\/项目延期\\/内容变更\\/目标人群变更\\/其他变) */\r\n changeTypes?: string;\r\n\r\n /** */\r\n savedChangeTypes?: string[];\r\n\r\n /** 变更时间 */\r\n changeDate?: Date;\r\n\r\n /** 变更原因 */\r\n changeReason?: string;\r\n\r\n /** 变更内容 */\r\n changeContent?: string;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnit;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectChangeApplyDtoListResultDto {\r\n /** */\r\n items?: ExternalProjectChangeApplyDto[];\r\n}\r\n\r\nexport interface ExternalProjectChangeApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalProjectChangeApplyDto[];\r\n}\r\n\r\nexport interface ExternalProjectActualBudgetItemDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** */\r\n projectBudgetCategory?: ProjectBudgetCategory;\r\n\r\n /** */\r\n projectBudgetType?: ProjectBudgetType;\r\n\r\n /** 子项目内容(三级科目) */\r\n itemName?: string;\r\n\r\n /** 具体计划Id */\r\n projectSpecificPlanId?: string;\r\n\r\n /** 具体目标Id */\r\n projectSpecificGoalId?: string;\r\n\r\n /** 具体内容 */\r\n content?: string;\r\n\r\n /** 单价(元) */\r\n unitPrice?: number;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 单位 */\r\n unit?: string;\r\n\r\n /** 预算报价 */\r\n budgetQuotation?: number;\r\n\r\n /** */\r\n projectBudgetCapitalSource?: ProjectBudgetCapitalSource;\r\n\r\n /** 计划预算明细项Id */\r\n budgetItemId?: number;\r\n\r\n /** 实际开支 */\r\n actualBudget?: number;\r\n\r\n /** 差额 */\r\n balance?: number;\r\n\r\n /** 实际占预算比例 */\r\n actualPercent?: number;\r\n\r\n /** 差异原因说明 */\r\n reason?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface CloseReportDetailDto {\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n externalProjectActualBudgetItems?: ExternalProjectActualBudgetItemDto[];\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 项目经费 */\r\n totalBudget?: number;\r\n\r\n /** 项目负责人 */\r\n projectManager?: string;\r\n\r\n /** 评估日期 */\r\n assessmentDate?: Date;\r\n\r\n /** 评估地点 */\r\n place?: string;\r\n\r\n /** 主要负责人员 */\r\n projectTeams?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 服务对象 */\r\n serviceObjects?: string;\r\n\r\n /** 服务区域 */\r\n serviceArea?: string;\r\n\r\n /** 评估形式 */\r\n assessmentType?: string;\r\n\r\n /** 1.\t项目提出的问题,以及对问题真实性的验证 */\r\n problemsCheck?: string;\r\n\r\n /** 2.\t回顾项目目标和执行计划 */\r\n implementReview?: string;\r\n\r\n /** 3.\t初期该领域\\/人群的状况,以及目前的状况 */\r\n situationCheck?: string;\r\n\r\n /** 4.\t资助行为如何回应了差距\\/问题 */\r\n subsidize?: string;\r\n\r\n /** 5.\t被资助方、受益人和其他参与方的访谈情况 */\r\n interviewCheck?: string;\r\n\r\n /** 1.\t总结的成功经验和模式 */\r\n experience?: string;\r\n\r\n /** 2.\t出现的问题及解决策略 */\r\n problemsSolution?: string;\r\n\r\n /** 3.\t成功\\/典型案例 */\r\n successfulCase?: string;\r\n\r\n /** 1.\t项目资金使用基本情况 */\r\n fundsUsage?: string;\r\n\r\n /** 2.\t问题及建议 */\r\n financeProblems?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CloseReportCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 项目经费 */\r\n totalBudget?: number;\r\n\r\n /** 项目负责人 */\r\n projectManager?: string;\r\n\r\n /** 评估日期 */\r\n assessmentDate?: Date;\r\n\r\n /** 评估地点 */\r\n place?: string;\r\n\r\n /** 主要负责人员 */\r\n projectTeams?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 服务对象 */\r\n serviceObjects?: string;\r\n\r\n /** 服务区域 */\r\n serviceArea?: string;\r\n\r\n /** 评估形式 */\r\n assessmentType?: string;\r\n\r\n /** 1.\t项目提出的问题,以及对问题真实性的验证 */\r\n problemsCheck?: string;\r\n\r\n /** 2.\t回顾项目目标和执行计划 */\r\n implementReview?: string;\r\n\r\n /** 3.\t初期该领域\\/人群的状况,以及目前的状况 */\r\n situationCheck?: string;\r\n\r\n /** 4.\t资助行为如何回应了差距\\/问题 */\r\n subsidize?: string;\r\n\r\n /** 5.\t被资助方、受益人和其他参与方的访谈情况 */\r\n interviewCheck?: string;\r\n\r\n /** 1.\t总结的成功经验和模式 */\r\n experience?: string;\r\n\r\n /** 2.\t出现的问题及解决策略 */\r\n problemsSolution?: string;\r\n\r\n /** 3.\t成功\\/典型案例 */\r\n successfulCase?: string;\r\n\r\n /** 1.\t项目资金使用基本情况 */\r\n fundsUsage?: string;\r\n\r\n /** 2.\t问题及建议 */\r\n financeProblems?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CloseReportDto {\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 项目经费 */\r\n totalBudget?: number;\r\n\r\n /** 项目负责人 */\r\n projectManager?: string;\r\n\r\n /** 评估日期 */\r\n assessmentDate?: Date;\r\n\r\n /** 评估地点 */\r\n place?: string;\r\n\r\n /** 主要负责人员 */\r\n projectTeams?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 服务对象 */\r\n serviceObjects?: string;\r\n\r\n /** 服务区域 */\r\n serviceArea?: string;\r\n\r\n /** 评估形式 */\r\n assessmentType?: string;\r\n\r\n /** 1.\t项目提出的问题,以及对问题真实性的验证 */\r\n problemsCheck?: string;\r\n\r\n /** 2.\t回顾项目目标和执行计划 */\r\n implementReview?: string;\r\n\r\n /** 3.\t初期该领域\\/人群的状况,以及目前的状况 */\r\n situationCheck?: string;\r\n\r\n /** 4.\t资助行为如何回应了差距\\/问题 */\r\n subsidize?: string;\r\n\r\n /** 5.\t被资助方、受益人和其他参与方的访谈情况 */\r\n interviewCheck?: string;\r\n\r\n /** 1.\t总结的成功经验和模式 */\r\n experience?: string;\r\n\r\n /** 2.\t出现的问题及解决策略 */\r\n problemsSolution?: string;\r\n\r\n /** 3.\t成功\\/典型案例 */\r\n successfulCase?: string;\r\n\r\n /** 1.\t项目资金使用基本情况 */\r\n fundsUsage?: string;\r\n\r\n /** 2.\t问题及建议 */\r\n financeProblems?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface CloseReportDtoListResultDto {\r\n /** */\r\n items?: CloseReportDto[];\r\n}\r\n\r\nexport interface CloseReportDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: CloseReportDto[];\r\n}\r\n\r\nexport interface ExternalProjectIntentionCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 拟落地的区域 */\r\n place?: string;\r\n\r\n /** 受益人群 */\r\n benefitObject?: string;\r\n\r\n /** 拟申请项目概述 */\r\n summary?: string;\r\n\r\n /** 拟解决的问题与拟达到的目标 */\r\n solvedProblem?: string;\r\n\r\n /** 拟采取的策略\\/开展的活动 */\r\n activityPlan?: string;\r\n\r\n /** 项目初步预算 */\r\n budgetPlan?: string;\r\n\r\n /** 执行机构过往经验 */\r\n executeExperience?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectIntentionDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 拟落地的区域 */\r\n place?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectIntentionDtoListResultDto {\r\n /** */\r\n items?: ExternalProjectIntentionDto[];\r\n}\r\n\r\nexport interface ExternalProjectIntentionDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalProjectIntentionDto[];\r\n}\r\n\r\nexport interface ExternalProjectPhaseItemDto {\r\n /** */\r\n stage?: WorkflowOfProjectByExternal;\r\n\r\n /** 节点名称 */\r\n name?: string;\r\n\r\n /** */\r\n status?: ProjectPhaseStatus;\r\n\r\n /** 跳转链接 */\r\n redirectUrl?: string[];\r\n}\r\n\r\nexport interface ProjectMonthItemDto {\r\n /** 年份 */\r\n year?: number;\r\n\r\n /** 月份 */\r\n month?: number;\r\n\r\n /** */\r\n status?: ProjectPhaseStatus;\r\n}\r\n\r\nexport interface AttachmentDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: AttachmentDto[];\r\n}\r\n\r\nexport interface ExternalProjectProcessMonitoringCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** 仅展示 */\r\n projectName?: string;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 监测方式 */\r\n monitoringType?: string;\r\n\r\n /** 监测主题 */\r\n title?: string;\r\n\r\n /** 监测过程 */\r\n monitoringProcess?: string;\r\n\r\n /** 观察发现 */\r\n observe?: string;\r\n\r\n /** 给对方的反馈 */\r\n feedback?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectProcessMonitoringDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: ProvinceDto;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: CityDto;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: AreaDto;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n town?: TownDto;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 监测方式 */\r\n monitoringType?: string;\r\n\r\n /** 监测主题 */\r\n title?: string;\r\n\r\n /** */\r\n monitoringProcess?: string;\r\n\r\n /** */\r\n observe?: string;\r\n\r\n /** */\r\n feedback?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ExternalProjectProcessMonitoringDtoListResultDto {\r\n /** */\r\n items?: ExternalProjectProcessMonitoringDto[];\r\n}\r\n\r\nexport interface ExternalProjectProcessMonitoringDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalProjectProcessMonitoringDto[];\r\n}\r\n\r\nexport interface ProgressReportDetailDto {\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** 项目执行团队及人员分工Json */\r\n projectMemberJson?: string;\r\n\r\n /** 指标完成情况Json */\r\n projectSpecificGoalJson?: string;\r\n\r\n /** 介入方式 */\r\n interventions?: string;\r\n\r\n /** 项目开展情况 */\r\n implementStatus?: string;\r\n\r\n /** 项目实施效果 */\r\n implementEffect?: string;\r\n\r\n /** 项目宣传情况 */\r\n publicityStatus?: string;\r\n\r\n /** 项目实施对组织自身的影响 */\r\n selfInfluence?: string;\r\n\r\n /** 项目创新性及可推广性 */\r\n innovation?: string;\r\n\r\n /** 项目经费使用情况 */\r\n budgetUsedJson?: string;\r\n\r\n /** 项目执行中的问题和建议 */\r\n problemsJson?: string;\r\n\r\n /** 下半年计划 */\r\n nextPlan?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProgressReportCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** 项目执行团队及人员分工Json */\r\n projectMemberJson?: string;\r\n\r\n /** 指标完成情况Json */\r\n projectSpecificGoalJson?: string;\r\n\r\n /** 介入方式 */\r\n interventions?: string;\r\n\r\n /** 项目开展情况 */\r\n implementStatus?: string;\r\n\r\n /** 项目实施效果 */\r\n implementEffect?: string;\r\n\r\n /** 项目宣传情况 */\r\n publicityStatus?: string;\r\n\r\n /** 项目实施对组织自身的影响 */\r\n selfInfluence?: string;\r\n\r\n /** 项目创新性及可推广性 */\r\n innovation?: string;\r\n\r\n /** 项目经费使用情况 */\r\n budgetUsedJson?: string;\r\n\r\n /** 项目执行中的问题和建议 */\r\n problemsJson?: string;\r\n\r\n /** 下半年计划 */\r\n nextPlan?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProgressReportDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProgressReportDtoListResultDto {\r\n /** */\r\n items?: ProgressReportDto[];\r\n}\r\n\r\nexport interface ProgressReportDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProgressReportDto[];\r\n}\r\n\r\nexport interface LineChartDto {\r\n /** 年份 */\r\n years?: number[];\r\n\r\n /** 项目数量 */\r\n projectCounts?: number[];\r\n\r\n /** 预算金额 */\r\n totalBudgets?: number[];\r\n\r\n /** 实际支出 */\r\n actualExpenses?: number[];\r\n\r\n /** 受益人次 */\r\n actualBeneficiaryCounts?: number[];\r\n\r\n /** 活动场次 */\r\n activityCounts?: number[];\r\n\r\n /** 覆盖区域数量 */\r\n townCounts?: number[];\r\n}\r\n\r\nexport interface ExternalMicrocosmicDto {\r\n /** 项目名称 */\r\n projectName?: string;\r\n\r\n /** 开始时间 */\r\n startDate?: string;\r\n\r\n /** 结束时间 */\r\n endDate?: string;\r\n\r\n /** */\r\n status?: WorkflowOfProjectByExternal;\r\n\r\n /** 活动场次 */\r\n activityCount?: number;\r\n\r\n /** 受益人次 */\r\n actualBeneficiaryCount?: number;\r\n\r\n /** 覆盖区域数量 */\r\n townCount?: number;\r\n\r\n /** 预算金额 */\r\n budget?: number;\r\n\r\n /** 实际支出 */\r\n actualExpenses?: number;\r\n}\r\n\r\nexport interface ExternalMicrocosmicDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ExternalMicrocosmicDto[];\r\n}\r\n\r\nexport interface ProjectOfNotCompleteDto {\r\n /** */\r\n startDate?: string;\r\n\r\n /** */\r\n endDate?: string;\r\n\r\n /** */\r\n projectName?: string;\r\n\r\n /** 姓名 */\r\n name?: string;\r\n\r\n /** */\r\n mobilePhone?: string;\r\n\r\n /** */\r\n email?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 内部或外部的对应ID */\r\n hostId?: number;\r\n\r\n /** */\r\n user?: User;\r\n}\r\n\r\nexport interface ProjectOfNotCompleteDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectOfNotCompleteDto[];\r\n}\r\n\r\nexport interface SummaryReportDetailDto {\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** 项目执行团队及人员分工Json */\r\n projectMemberJson?: string;\r\n\r\n /** 机构内部的决策机制 */\r\n decisionMechanism?: string;\r\n\r\n /** 合作机构Json */\r\n partnersJson?: string;\r\n\r\n /** 指标完成情况Json */\r\n projectSpecificGoalJson?: string;\r\n\r\n /** 介入方式 */\r\n interventions?: string;\r\n\r\n /** 活动开展情况 */\r\n implementStatus?: string;\r\n\r\n /** 项目活动完成情况对照表 */\r\n implementStatusJson?: string;\r\n\r\n /** 项目经费使用情况 */\r\n budgetUsedJson?: string;\r\n\r\n /** 服务对象反馈 */\r\n serviceObjectsFeedback?: string;\r\n\r\n /** 相关方反馈 */\r\n partnersFeedback?: string;\r\n\r\n /** 社会影响 */\r\n socialImpact?: string;\r\n\r\n /** 项目成果\\/产出 */\r\n output?: string;\r\n\r\n /** 对执行机构的作用 */\r\n effectForSelf?: string;\r\n\r\n /** 对领域\\/行业的作用 */\r\n effectForIndustry?: string;\r\n\r\n /** 项目执行中的问题和建议 */\r\n problemsJson?: string;\r\n\r\n /** 整个项目执行的反思 */\r\n executeIntrospection?: string;\r\n\r\n /** 对基金会的建议和反馈 */\r\n feedbackForFoundation?: string;\r\n\r\n /** */\r\n externalProjectActualBudgetItems?: ExternalProjectActualBudgetItemDto[];\r\n\r\n /** 实际开支 */\r\n actualBudget?: number;\r\n\r\n /** 差额 */\r\n balance?: number;\r\n\r\n /** 实际占预算比例 */\r\n actualPercent?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface SummaryReportCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** 项目执行团队及人员分工Json */\r\n projectMemberJson?: string;\r\n\r\n /** 机构内部的决策机制 */\r\n decisionMechanism?: string;\r\n\r\n /** 合作机构Json */\r\n partnersJson?: string;\r\n\r\n /** 指标完成情况Json */\r\n projectSpecificGoalJson?: string;\r\n\r\n /** 介入方式 */\r\n interventions?: string;\r\n\r\n /** 活动开展情况 */\r\n implementStatus?: string;\r\n\r\n /** 项目活动完成情况对照表 */\r\n implementStatusJson?: string;\r\n\r\n /** 项目经费使用情况 */\r\n budgetUsedJson?: string;\r\n\r\n /** 服务对象反馈 */\r\n serviceObjectsFeedback?: string;\r\n\r\n /** 相关方反馈 */\r\n partnersFeedback?: string;\r\n\r\n /** 社会影响 */\r\n socialImpact?: string;\r\n\r\n /** 项目成果\\/产出 */\r\n output?: string;\r\n\r\n /** 对执行机构的作用 */\r\n effectForSelf?: string;\r\n\r\n /** 对领域\\/行业的作用 */\r\n effectForIndustry?: string;\r\n\r\n /** 项目执行中的问题和建议 */\r\n problemsJson?: string;\r\n\r\n /** 整个项目执行的反思 */\r\n executeIntrospection?: string;\r\n\r\n /** 对基金会的建议和反馈 */\r\n feedbackForFoundation?: string;\r\n\r\n /** */\r\n externalProjectActualBudgetItems?: ExternalProjectActualBudgetItemDto[];\r\n\r\n /** 实际开支 */\r\n actualBudget?: number;\r\n\r\n /** 差额 */\r\n balance?: number;\r\n\r\n /** 实际占预算比例 */\r\n actualPercent?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface SummaryReportDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 提交报告日期 */\r\n reportDate?: Date;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface SummaryReportDtoListResultDto {\r\n /** */\r\n items?: SummaryReportDto[];\r\n}\r\n\r\nexport interface SummaryReportDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: SummaryReportDto[];\r\n}\r\n\r\nexport interface FeedbackCreateOrUpdateDto {\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 内容 */\r\n content?: string;\r\n\r\n /** 联系方式 */\r\n contactType?: string;\r\n\r\n /** 反馈类型Id */\r\n typeCodeId?: number;\r\n\r\n /** */\r\n sourceType?: FeedbackSourceType;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FeedbackDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n typeCode?: DataDictionaryDto;\r\n\r\n /** 反馈类型Id */\r\n typeCodeId?: number;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 内容 */\r\n content?: string;\r\n\r\n /** 联系方式 */\r\n contactType?: string;\r\n\r\n /** */\r\n sourceType?: FeedbackSourceType;\r\n\r\n /** 用户Id */\r\n accountId?: number;\r\n\r\n /** 回复人员Id */\r\n replyUserId?: number;\r\n\r\n /** 回复内容 */\r\n replyContent?: string;\r\n\r\n /** 机构用户Id */\r\n orgAccountId?: number;\r\n\r\n /** */\r\n feedbackTime?: Date;\r\n\r\n /** 回复时间 */\r\n replyTime?: Date;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FeedbackDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FeedbackDto[];\r\n}\r\n\r\nexport interface FeedbackReplyCreateOrUpdateDto {\r\n /** 反馈信息Id */\r\n feedbackId?: number;\r\n\r\n /** 回复内容 */\r\n content?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FeedbackReplyDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 反馈信息Id */\r\n feedbackId?: number;\r\n\r\n /** 回复内容 */\r\n content?: string;\r\n\r\n /** 是否隐藏 */\r\n isHide?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FeedbackReplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FeedbackReplyDto[];\r\n}\r\n\r\nexport interface FundSendMessageInput {\r\n /** */\r\n messageId?: number;\r\n\r\n /** */\r\n fundIds?: number[];\r\n}\r\n\r\nexport interface FundCreateOrUpdateDto {\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** 封面图片 */\r\n titleImage?: string;\r\n\r\n /** 创立人姓名 */\r\n founderName?: string;\r\n\r\n /** */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n fixTelephone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** */\r\n qq?: string;\r\n\r\n /** 成立日期 */\r\n foundDate?: Date;\r\n\r\n /** 宗旨 */\r\n purpose?: string;\r\n\r\n /** 资金使用范围 */\r\n usageRange?: string;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 起设金额 */\r\n intialCaptial?: number;\r\n\r\n /** 资金来源 */\r\n capitalSource?: string;\r\n\r\n /** 关注领域 */\r\n focusArea?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n viceChairman?: string;\r\n\r\n /** */\r\n chairman?: string;\r\n\r\n /** */\r\n member?: string;\r\n\r\n /** 联系人 */\r\n contacts?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 类别(数据字典里获得,个冠的类别有关爱之星,荣誉理事,功勋理事) */\r\n honorType?: string;\r\n\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该基金累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** 管委会主任ID */\r\n directorID?: number;\r\n\r\n /** 批示文件图片 */\r\n instructionsImage?: string;\r\n\r\n /** 牌匾图片 */\r\n plaqueImage?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 是否拥有自己的产品 */\r\n hasProducts?: boolean;\r\n\r\n /** 是否需要募捐 */\r\n isFundRaising?: boolean;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserExtendMiniDto {\r\n /** */\r\n user?: UserMiniDto;\r\n\r\n /** 企业职务 */\r\n companyDuty?: string;\r\n\r\n /** 职务 */\r\n duty?: string;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n}\r\n\r\nexport interface FundDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** 封面图片 */\r\n titleImage?: string;\r\n\r\n /** 创立人姓名 */\r\n founderName?: string;\r\n\r\n /** */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n fixTelephone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** */\r\n qq?: string;\r\n\r\n /** 成立日期 */\r\n foundDate?: Date;\r\n\r\n /** 宗旨 */\r\n purpose?: string;\r\n\r\n /** */\r\n usageRange?: string;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 起设金额 */\r\n intialCaptial?: number;\r\n\r\n /** 资金来源 */\r\n capitalSource?: string;\r\n\r\n /** */\r\n focusArea?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n viceChairman?: string;\r\n\r\n /** */\r\n chairman?: string;\r\n\r\n /** */\r\n member?: string;\r\n\r\n /** 联系人 */\r\n contacts?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 类别(数据字典里获得,个冠的类别有关爱之星,荣誉理事,功勋理事) */\r\n honorType?: string;\r\n\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该基金累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** 管委会主任ID */\r\n directorID?: number;\r\n\r\n /** 批示文件图片 */\r\n instructionsImage?: string;\r\n\r\n /** 牌匾图片 */\r\n plaqueImage?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 是否拥有自己的产品 */\r\n hasProducts?: boolean;\r\n\r\n /** 是否需要募捐 */\r\n isFundRaising?: boolean;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** 累计收入基金账户金额 */\r\n accumlativeMoney?: number;\r\n\r\n /** 当前基金账户金额 */\r\n availableMoney?: number;\r\n\r\n /** 基金成员 */\r\n users?: UserExtendMiniDto[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundDto[];\r\n}\r\n\r\nexport interface MessageDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 消息标题 */\r\n title?: string;\r\n\r\n /** 消息内容 */\r\n content?: string;\r\n\r\n /** */\r\n messageType?: MessageType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundMessageDto {\r\n /** */\r\n message?: MessageDto;\r\n\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 消息Id */\r\n messageID?: number;\r\n\r\n /** 否是已经阅读 */\r\n isReaded?: boolean;\r\n\r\n /** 阅读时间 */\r\n readTime?: Date;\r\n\r\n /** */\r\n attachments?: AttachmentDto[];\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundMessageDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundMessageDto[];\r\n}\r\n\r\nexport interface FundAccountDto {\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 基金名称 */\r\n fundName?: string;\r\n\r\n /** 当前基金账户金额 */\r\n availableMoney?: number;\r\n\r\n /** 累计收入基金账户金额 */\r\n accumlativeMoney?: number;\r\n\r\n /** 累计支出金额 */\r\n appropriatedMoney?: number;\r\n\r\n /** 管理费 */\r\n manageFee?: number;\r\n}\r\n\r\nexport interface FundAccountDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundAccountDto[];\r\n}\r\n\r\nexport interface FundAccountPagedResultRequestDto {\r\n /** */\r\n type?: FundType;\r\n\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 起始日期 */\r\n startDate?: string;\r\n\r\n /** 截止日期 */\r\n endDate?: string;\r\n\r\n /** 是否前端 */\r\n isFront?: boolean;\r\n\r\n /** */\r\n operationType?: FundAccountRecordOperationType;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface FundAccountRecordDto {\r\n /** 操作金额 */\r\n moneyAmount?: number;\r\n\r\n /** 操作时间 */\r\n operationTime?: string;\r\n\r\n /** 内容 */\r\n content?: string;\r\n\r\n /** 操作类型 */\r\n operationType?: number;\r\n}\r\n\r\nexport interface FundAccountRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundAccountRecordDto[];\r\n}\r\n\r\nexport interface FundApplyCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 基金名称 */\r\n fundName?: string;\r\n\r\n /** 申请人姓名 */\r\n applicantName?: string;\r\n\r\n /** 联系电话 */\r\n applicantMobileTelephone?: string;\r\n\r\n /** 固定电话 */\r\n applicantFixTelephone?: string;\r\n\r\n /** */\r\n applicantEmail?: string;\r\n\r\n /** */\r\n applicantQQ?: string;\r\n\r\n /** 启动资金金额 */\r\n intialCaptial?: number;\r\n\r\n /** 简介 */\r\n summary?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ApplyStatus;\r\n\r\n /** */\r\n applyTime?: Date;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n attachmentStr?: string;\r\n\r\n /** 资金使用范围 */\r\n usageRange?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundApplyDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 基金名称 */\r\n fundName?: string;\r\n\r\n /** 申请人姓名 */\r\n applicantName?: string;\r\n\r\n /** 联系电话 */\r\n applicantMobileTelephone?: string;\r\n\r\n /** 固定电话 */\r\n applicantFixTelephone?: string;\r\n\r\n /** */\r\n applicantEmail?: string;\r\n\r\n /** */\r\n applicantQQ?: string;\r\n\r\n /** 启动资金金额 */\r\n intialCaptial?: number;\r\n\r\n /** 简介 */\r\n summary?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ApplyStatus;\r\n\r\n /** */\r\n applyTime?: Date;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 资金使用范围 */\r\n usageRange?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundApplyDtoListResultDto {\r\n /** */\r\n items?: FundApplyDto[];\r\n}\r\n\r\nexport interface FundApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundApplyDto[];\r\n}\r\n\r\nexport interface FundAppropriateApplyCreateOrUpdateDto {\r\n /** */\r\n fundId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** 拨付标题 */\r\n title?: string;\r\n\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 开户行名称 */\r\n bankName?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n\r\n /** */\r\n appropriateType?: FundAppropriateType;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n\r\n /** */\r\n attachmentStr?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundAppropriateApplyDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** 拨付标题 */\r\n title?: string;\r\n\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 开户行名称 */\r\n bankName?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n\r\n /** */\r\n appropriateType?: FundAppropriateType;\r\n\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundAppropriateApplyDtoListResultDto {\r\n /** */\r\n items?: FundAppropriateApplyDto[];\r\n}\r\n\r\nexport interface FundAppropriateApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundAppropriateApplyDto[];\r\n}\r\n\r\nexport interface FundAppropriateRecordDto {\r\n /** */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n projectID?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 拨付标题 */\r\n title?: string;\r\n\r\n /** 拨付金额 */\r\n moneyAmount?: number;\r\n\r\n /** 拨付理由 */\r\n appropriateReason?: string;\r\n\r\n /** 拨付时间 */\r\n appropriateTime?: Date;\r\n\r\n /** 最终审核通过人 */\r\n operatorID?: number;\r\n\r\n /** */\r\n operator?: UserMiniDto;\r\n\r\n /** 收款银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 开户行名称 */\r\n bankName?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** 收款人姓名 */\r\n receiverName?: string;\r\n\r\n /** 收款人电话 */\r\n receiverTelephone?: string;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n appropriateType?: FundAppropriateType;\r\n\r\n /** 其他项目名称 */\r\n otherProjectName?: string;\r\n\r\n /** 用款申请Id */\r\n applicationPaymentId?: number;\r\n\r\n /** */\r\n applicationPayment?: ApplicationPaymentDto;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundAppropriateRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundAppropriateRecordDto[];\r\n}\r\n\r\nexport interface FundAppropriateRecordChangeAppropriateTimeInput {\r\n /** */\r\n newTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundBankInfoCreateOrUpdateDto {\r\n /** 收款人姓名 */\r\n name?: string;\r\n\r\n /** 收款人电话 */\r\n telephone?: string;\r\n\r\n /** 户名 */\r\n accountName?: string;\r\n\r\n /** 银行账号 */\r\n accountCode?: string;\r\n\r\n /** 开户银行名称 */\r\n bankName?: string;\r\n\r\n /** 是否默认 */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundBankInfoDto {\r\n /** */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundDto;\r\n\r\n /** 收款人姓名 */\r\n name?: string;\r\n\r\n /** 收款人电话 */\r\n telephone?: string;\r\n\r\n /** 户名 */\r\n accountName?: string;\r\n\r\n /** 银行账号 */\r\n accountCode?: string;\r\n\r\n /** 开户银行名称 */\r\n bankName?: string;\r\n\r\n /** 是否默认 */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundBankInfoDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundBankInfoDto[];\r\n}\r\n\r\nexport interface FundDonationMonthlyConfigDto {\r\n /** 会员Id */\r\n userId?: number;\r\n\r\n /** */\r\n user?: UserMiniDto;\r\n\r\n /** 捐赠项目类型 */\r\n donorItemType?: number;\r\n\r\n /** 捐赠项目编号 */\r\n donorItemId?: number;\r\n\r\n /** 捐赠协议序列号(签约银行返回) */\r\n donorSignSn?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** 固定捐助天 */\r\n donorDay?: number;\r\n\r\n /** 捐赠金额,单位:分 */\r\n donationAmount?: number;\r\n\r\n /** 发票Id */\r\n invoiceId?: number;\r\n\r\n /** 捐赠留言 */\r\n leaveMessage?: string;\r\n\r\n /** 捐赠人联系号码 */\r\n mobileTelephone?: string;\r\n\r\n /** 发票附件编号,多个使用英文\",\"隔开 */\r\n attachments?: string;\r\n\r\n /** 捐赠人名称(匿名使用“爱心人士”) */\r\n displayName?: string;\r\n\r\n /** 平台与天付宝确认签约订单号,关联发票订单Id */\r\n spBillNo?: string;\r\n\r\n /** 天付宝确认签约订单号,关联发票订单Id */\r\n listId?: string;\r\n\r\n /** 月捐状态(1:开启,0:停止月捐) */\r\n isOpen?: boolean;\r\n\r\n /** 是否已确认 */\r\n isConfirmed?: boolean;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** 停止月捐时间 */\r\n stoppedTime?: Date;\r\n\r\n /** 月捐类型(1天付宝,2微信) */\r\n configType?: number;\r\n\r\n /** 捐赠项目名称 */\r\n donorItemProjectName?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundDonationMonthlyConfigDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundDonationMonthlyConfigDto[];\r\n}\r\n\r\nexport interface EntityDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundDonationOrderCreateDto {\r\n /** */\r\n orderID?: string;\r\n\r\n /** 基金ID */\r\n fundID?: number;\r\n\r\n /** 项目ID */\r\n projectID?: number;\r\n\r\n /** 捐款数额 */\r\n donationAmount?: number;\r\n\r\n /** 会员ID */\r\n memberID?: number;\r\n\r\n /** 手机号码 */\r\n mobileTelephone?: string;\r\n\r\n /** 捐助者姓名 */\r\n donorName?: string;\r\n\r\n /** 留言 */\r\n leaveMessage?: string;\r\n\r\n /** 发票抬头 */\r\n invoiceHeader?: string;\r\n\r\n /** 订单生产时间 */\r\n createdTime?: string;\r\n\r\n /** 是否支付成功 */\r\n isPayed?: boolean;\r\n\r\n /** 支付成功时间 */\r\n payedTime?: string;\r\n\r\n /** 支付类型ID */\r\n paymentType?: number;\r\n\r\n /** 支付平台是否响应 */\r\n isResponsed?: boolean;\r\n\r\n /** 支付平台响应时间 */\r\n responseTime?: string;\r\n\r\n /** 支付平台返回消息 */\r\n resultMessage?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** 支付交易号 */\r\n tadeNO?: string;\r\n\r\n /** 捐赠者账户 */\r\n donatorAccount?: string;\r\n\r\n /** 失效时间 */\r\n invalidTime?: string;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n needInvoice?: boolean;\r\n\r\n /** */\r\n isAnonymous?: boolean;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** */\r\n inVoiceTitle?: string;\r\n\r\n /** */\r\n inVoiceName?: string;\r\n\r\n /** */\r\n inVoiceTelephone?: string;\r\n\r\n /** */\r\n inVoiceAddress?: string;\r\n\r\n /** */\r\n attachmentStr?: string;\r\n\r\n /** */\r\n incomeType?: IncomeType;\r\n\r\n /** 月捐日期 */\r\n monthDonorDay?: number;\r\n\r\n /** */\r\n donationType?: DonationType;\r\n\r\n /** */\r\n donationCycle?: DonationCycle;\r\n\r\n /** 捐赠时间 */\r\n donationTime?: Date;\r\n\r\n /** */\r\n donorItemType?: DonorItemType;\r\n\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n\r\n /** */\r\n type?: ElectronicInvoiceType;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n}\r\n\r\nexport interface FundDonationOrderDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 订单号 */\r\n orderID?: string;\r\n\r\n /** 捐赠基金Id */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 捐赠项目ID */\r\n fundProjectID?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** 捐赠金额 */\r\n donationAmount?: number;\r\n\r\n /** 是否为手动新增订单 */\r\n isManualCreate?: boolean;\r\n\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** 捐赠人手机号码 */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** 捐赠人姓名 */\r\n donorName?: string;\r\n\r\n /** 留言 */\r\n leaveMessage?: string;\r\n\r\n /** 是否支付成功 */\r\n isPayed?: boolean;\r\n\r\n /** 支付成功时间 */\r\n payedTime?: Date;\r\n\r\n /** 支付类型 */\r\n paymentType?: string;\r\n\r\n /** 支付平台是否响应 */\r\n isResponsed?: boolean;\r\n\r\n /** 支付平台响应时间 */\r\n responseTime?: Date;\r\n\r\n /** 支付平台返回消息 */\r\n resultMessage?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** 支付交易号 */\r\n tradeNo?: string;\r\n\r\n /** 捐赠者账号 */\r\n donorAccount?: string;\r\n\r\n /** 失效时间 */\r\n invalidTime?: Date;\r\n\r\n /** */\r\n donationType?: IncomeType;\r\n\r\n /** 是否需要发票 */\r\n needInvoice?: boolean;\r\n\r\n /** 订单交易流水号(天付宝用) */\r\n orderSerialNo?: string;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** 月捐日期 */\r\n monthDonorDay?: number;\r\n\r\n /** 捐赠意向Id */\r\n donorItemId?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundAutoDeductionOrderCreateDto {\r\n /** */\r\n fromBmsOrderId?: string;\r\n\r\n /** */\r\n newBmsOrderId?: string;\r\n\r\n /** */\r\n newBmsOrderPrice?: number;\r\n}\r\n\r\nexport interface FundDonationOrderDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundDonationOrderDto[];\r\n}\r\n\r\nexport interface FundIncomeRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundIncomeRecordDto[];\r\n}\r\n\r\nexport interface FundIncomeRecordTotalDto {\r\n /** */\r\n orgTotal?: number;\r\n\r\n /** */\r\n fundProjectTotal?: number;\r\n\r\n /** */\r\n fundTotal?: number;\r\n\r\n /** */\r\n aidStudentTotal?: number;\r\n\r\n /** */\r\n totalMoney?: number;\r\n}\r\n\r\nexport interface FundIncomeRecordTotalByPortalDto {\r\n /** 捐赠总额 */\r\n totalMoney?: number;\r\n\r\n /** 捐赠基金数 */\r\n donateFundCount?: number;\r\n\r\n /** 捐赠项目数 */\r\n donateProjectCount?: number;\r\n}\r\n\r\nexport interface FundIncomeRecordPagedResultRequestDto {\r\n /** 关键词 */\r\n keyword?: string;\r\n\r\n /** 捐赠者名称 */\r\n donorName?: string;\r\n\r\n /** 开始时间 */\r\n startDate?: string;\r\n\r\n /** 结束时间 */\r\n endDate?: string;\r\n\r\n /** */\r\n donorType?: DonorType;\r\n\r\n /** */\r\n incomeType?: IncomeType;\r\n\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** 基金项目Id */\r\n projectId?: number;\r\n\r\n /** 支付方式 */\r\n paymentType?: string;\r\n\r\n /** 捐助方式 */\r\n isMonthDonor?: boolean;\r\n\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** */\r\n weixinTradeNo?: string;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface UserDonateInfoDto {\r\n /** 资金捐赠次数 */\r\n donateCount?: number;\r\n\r\n /** 资金捐赠总金额 */\r\n donateMoney?: number;\r\n}\r\n\r\nexport interface FundManageFeeRecordDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 捐赠基金Id */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 管理费金额 */\r\n moneyAmount?: number;\r\n\r\n /** 捐赠描述 */\r\n content?: string;\r\n\r\n /** 管理费比例 */\r\n ration?: number;\r\n\r\n /** 源记录ID(由哪条原始数据产生) */\r\n sourceId?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 捐赠记录ID */\r\n incomeRecordId?: number;\r\n\r\n /** 记录是否发生过变更 */\r\n hasChanged?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundManageFeeRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundManageFeeRecordDto[];\r\n}\r\n\r\nexport interface FundManageFeeRecordChangeHistoryDto {\r\n /** */\r\n recordId?: number;\r\n\r\n /** 变更前金额 */\r\n beforeAmount?: number;\r\n\r\n /** 变更后金额 */\r\n afterAmount?: number;\r\n\r\n /** */\r\n type?: ManagerFeeChangeType;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creationTimeText?: string;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n}\r\n\r\nexport interface FundManageFeeFeeRecordDetailDto {\r\n /** */\r\n changeHistories?: FundManageFeeRecordChangeHistoryDto[];\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 捐赠基金Id */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 管理费金额 */\r\n moneyAmount?: number;\r\n\r\n /** 捐赠描述 */\r\n content?: string;\r\n\r\n /** 管理费比例 */\r\n ration?: number;\r\n\r\n /** 源记录ID(由哪条原始数据产生) */\r\n sourceId?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** 捐赠记录ID */\r\n incomeRecordId?: number;\r\n\r\n /** 记录是否发生过变更 */\r\n hasChanged?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundManageFeeRecordChangeRequestInput {\r\n /** 变更原因说明 */\r\n sumamry?: string;\r\n\r\n /** 目标金额 */\r\n amount?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundModifyApplyCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** 封面图片 */\r\n titleImage?: string;\r\n\r\n /** 创立人姓名 */\r\n founderName?: string;\r\n\r\n /** */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n fixTelephone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** */\r\n qq?: string;\r\n\r\n /** 成立日期 */\r\n foundDate?: Date;\r\n\r\n /** 宗旨 */\r\n purpose?: string;\r\n\r\n /** 资金使用范围 */\r\n usageRange?: string;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 起设金额 */\r\n intialCaptial?: number;\r\n\r\n /** 资金来源 */\r\n capitalSource?: string;\r\n\r\n /** 关注领域 */\r\n focusArea?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n viceChairman?: string;\r\n\r\n /** */\r\n chairman?: string;\r\n\r\n /** */\r\n member?: string;\r\n\r\n /** 联系人 */\r\n contacts?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 类别(数据字典里获得,个冠的类别有关爱之星,荣誉理事,功勋理事) */\r\n honorType?: string;\r\n\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该基金累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** 管委会主任ID */\r\n directorID?: number;\r\n\r\n /** 批示文件图片 */\r\n instructionsImage?: string;\r\n\r\n /** 牌匾图片 */\r\n plaqueImage?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 是否拥有自己的产品 */\r\n hasProducts?: boolean;\r\n\r\n /** 是否需要募捐 */\r\n isFundRaising?: boolean;\r\n\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundModifyApplyDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** 封面图片 */\r\n titleImage?: string;\r\n\r\n /** 创立人姓名 */\r\n founderName?: string;\r\n\r\n /** */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n fixTelephone?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** */\r\n qq?: string;\r\n\r\n /** 成立日期 */\r\n foundDate?: Date;\r\n\r\n /** 宗旨 */\r\n purpose?: string;\r\n\r\n /** */\r\n usageRange?: string;\r\n\r\n /** 管理费比例 */\r\n managementFeePercentage?: number;\r\n\r\n /** 起设金额 */\r\n intialCaptial?: number;\r\n\r\n /** 资金来源 */\r\n capitalSource?: string;\r\n\r\n /** */\r\n focusArea?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n viceChairman?: string;\r\n\r\n /** */\r\n chairman?: string;\r\n\r\n /** */\r\n member?: string;\r\n\r\n /** 联系人 */\r\n contacts?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 类别(数据字典里获得,个冠的类别有关爱之星,荣誉理事,功勋理事) */\r\n honorType?: string;\r\n\r\n /** 是否在网站上显示 */\r\n isPublished?: boolean;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该基金累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** 管委会主任ID */\r\n directorID?: number;\r\n\r\n /** 批示文件图片 */\r\n instructionsImage?: string;\r\n\r\n /** 牌匾图片 */\r\n plaqueImage?: string;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 是否拥有自己的产品 */\r\n hasProducts?: boolean;\r\n\r\n /** 是否需要募捐 */\r\n isFundRaising?: boolean;\r\n\r\n /** */\r\n applyStatus?: ApplyStatus;\r\n\r\n /** 基金Id */\r\n fundID?: number;\r\n\r\n /** 细分类别 */\r\n fundCategory?: string;\r\n\r\n /** 拒绝原因 */\r\n rejectReason?: string;\r\n\r\n /** 基金成员 */\r\n users?: UserExtendMiniDto[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundModifyApplyDtoListResultDto {\r\n /** */\r\n items?: FundModifyApplyDto[];\r\n}\r\n\r\nexport interface FundModifyApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundModifyApplyDto[];\r\n}\r\n\r\nexport interface FundNonCashDonationRecordCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 姓名 */\r\n name?: string;\r\n\r\n /** 公司 */\r\n company?: string;\r\n\r\n /** 地址 */\r\n address?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 家庭电话 */\r\n homeTelephone?: string;\r\n\r\n /** 手机号码 */\r\n telephone?: string;\r\n\r\n /** 期望联系方式(1手机 2邮箱 3两种皆可) */\r\n contactType?: number;\r\n\r\n /** 捐赠类型(1物品捐赠,2场地\\/其他捐赠) */\r\n donationType?: number;\r\n\r\n /** */\r\n nonCashDonationItemJson?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundNonCashDonationRecordDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 姓名 */\r\n name?: string;\r\n\r\n /** 公司 */\r\n company?: string;\r\n\r\n /** 地址 */\r\n address?: string;\r\n\r\n /** 邮箱 */\r\n email?: string;\r\n\r\n /** 家庭电话 */\r\n homeTelephone?: string;\r\n\r\n /** 手机号码 */\r\n telephone?: string;\r\n\r\n /** 期望联系方式(1手机 2邮箱 3两种皆可) */\r\n contactType?: number;\r\n\r\n /** 捐赠类型(1物品捐赠,2场地\\/其他捐赠) */\r\n donationType?: number;\r\n\r\n /** 捐赠人ID */\r\n donorId?: number;\r\n\r\n /** */\r\n nonCashDonationItemJson?: string;\r\n\r\n /** */\r\n status?: ApplyStatus;\r\n\r\n /** 拒绝原因 */\r\n rejectReason?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundNonCashDonationRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundNonCashDonationRecordDto[];\r\n}\r\n\r\nexport interface UserNonCashDonationInfoDto {\r\n /** 实物捐赠审核通过次数 */\r\n nonCashDonationCount?: number;\r\n}\r\n\r\nexport interface FundNonCashDonationRecordDtoListResultDto {\r\n /** */\r\n items?: FundNonCashDonationRecordDto[];\r\n}\r\n\r\nexport interface FundProjectCreateOrUpdateDto {\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** 所属基金ID */\r\n fundID?: number;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** 所属基金ID */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 是否已结项 */\r\n isEnd?: boolean;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** 是否置顶 */\r\n isTop?: boolean;\r\n\r\n /** 置顶顺序 */\r\n topDisplayOrder?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectDto[];\r\n}\r\n\r\nexport interface FundProjectSummarizationDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 结项标题 */\r\n title?: string;\r\n\r\n /** 简介 */\r\n summary?: string;\r\n\r\n /** 内容 */\r\n content?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectManualCreateDonateOrderInput {\r\n /** */\r\n fundProjectId?: number;\r\n\r\n /** 捐赠金额 */\r\n donationAmount?: number;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** 付款时间 */\r\n payedTime?: Date;\r\n\r\n /** 付款方式 */\r\n paymentType?: string;\r\n\r\n /** 手机号码 */\r\n mobileTelephone?: string;\r\n\r\n /** 捐助者姓名 */\r\n donorName?: string;\r\n\r\n /** 留言 */\r\n leaveMessage?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n}\r\n\r\nexport interface FundProjectCloseInput {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n content?: string;\r\n}\r\n\r\nexport interface FundProjectApplyCreateOrUpdateDto {\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** 所属基金ID */\r\n fundID?: number;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectApplyDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** 所属基金ID */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectApplyDto[];\r\n}\r\n\r\nexport interface FundProjectApplyDtoListResultDto {\r\n /** */\r\n items?: FundProjectApplyDto[];\r\n}\r\n\r\nexport interface FundProjectCmsContentCreateInput {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n cmsContentId?: number;\r\n}\r\n\r\nexport interface CmsContentMiniDto {\r\n /** */\r\n status?: CmsContentStatus;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n author?: string;\r\n\r\n /** 发布时间 */\r\n publishTime?: Date;\r\n\r\n /** 内容来源 */\r\n source?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectCmsContentDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: FundProjectMiniDto;\r\n\r\n /** */\r\n cmsContentId?: number;\r\n\r\n /** */\r\n content?: CmsContentMiniDto;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectCmsContentDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectCmsContentDto[];\r\n}\r\n\r\nexport interface FundProjectDonationRecordDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: FundProjectMiniDto;\r\n\r\n /** 项目所属基金 */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n fundProductId?: number;\r\n\r\n /** 捐助者类型(1为个人,2为单位) */\r\n donorType?: number;\r\n\r\n /** 捐款人姓名 */\r\n displayName?: string;\r\n\r\n /** 捐款时间 */\r\n donateTime?: Date;\r\n\r\n /** 捐款金额 */\r\n donateMoney?: number;\r\n\r\n /** 捐助内容 */\r\n content?: string;\r\n\r\n /** 捐助者留言 */\r\n leaveMessage?: string;\r\n\r\n /** 记录来源:0,手动录入,1:用户捐款 */\r\n recordSource?: number;\r\n\r\n /** 捐助者手机号 */\r\n donorMobilePhone?: string;\r\n\r\n /** 线上捐款订单号 */\r\n orderNO?: string;\r\n\r\n /** 捐赠类型(1为线上捐款,2为线下捐款) */\r\n paymentType?: number;\r\n\r\n /** 捐赠人,未登录状态捐赠时可为空 */\r\n userId?: number;\r\n\r\n /** 捐赠类型(1为捐给项目,2为捐给基金) */\r\n donationType?: number;\r\n\r\n /** 是否月捐 */\r\n isMonthDonor?: boolean;\r\n\r\n /** 推荐人 */\r\n referrer?: string;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectDonationRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectDonationRecordDto[];\r\n}\r\n\r\nexport interface FundProjectModifyApplyCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectModifyApplyDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: FundProjectDto;\r\n\r\n /** 所属基金ID */\r\n fundID?: number;\r\n\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** 标题图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目预算 */\r\n budget?: number;\r\n\r\n /** 项目预算说明 */\r\n budgetDescription?: string;\r\n\r\n /** 项目执行计划 */\r\n executionPlan?: string;\r\n\r\n /** 项目周期(月) */\r\n period?: number;\r\n\r\n /** 服务地区 */\r\n serviceArea?: string;\r\n\r\n /** 服务领域 */\r\n serviceField?: string;\r\n\r\n /** 项目目标 */\r\n projectGoal?: string;\r\n\r\n /** 项目简介 */\r\n summary?: string;\r\n\r\n /** 项目详细描述 */\r\n description?: string;\r\n\r\n /** 联系人姓名 */\r\n contactsName?: string;\r\n\r\n /** 联系人手机号码 */\r\n contactsMobileTelephone?: string;\r\n\r\n /** 联系人地址 */\r\n contactsAddress?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactsEmail?: string;\r\n\r\n /** 已经筹集捐款金额累计 */\r\n raisedAmountTotal?: number;\r\n\r\n /** 该项目累计捐款人数 */\r\n donatedPersonTotal?: number;\r\n\r\n /** 支出金额统计 */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n startTime?: Date;\r\n\r\n /** */\r\n endTime?: Date;\r\n\r\n /** */\r\n status?: FundProjectStatus;\r\n\r\n /** 项目编号(唯一) */\r\n code?: string;\r\n\r\n /** 是否专题项目 */\r\n isSpecial?: boolean;\r\n\r\n /** 是否需要筹款 */\r\n isFundRaising?: boolean;\r\n\r\n /** 项目范围 */\r\n categoryName?: string;\r\n\r\n /** 是否品牌项目 */\r\n isBrand?: boolean;\r\n\r\n /** 目标筹款金额 */\r\n targetAmountTotal?: number;\r\n\r\n /** 结项报告 */\r\n finalReport?: string;\r\n\r\n /** 项目可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 是否可以匿名捐赠 */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectModifyApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectModifyApplyDto[];\r\n}\r\n\r\nexport interface FundProjectModifyApplyDtoListResultDto {\r\n /** */\r\n items?: FundProjectModifyApplyDto[];\r\n}\r\n\r\nexport interface FundProjectProgressCreateOrUpdateDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 进展标题 */\r\n title?: string;\r\n\r\n /** 所属项目Id */\r\n projectId?: number;\r\n\r\n /** 简述 */\r\n summary?: string;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** 活动进展图片,以\",\"分隔 */\r\n images?: string;\r\n\r\n /** */\r\n publishedTime?: Date;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectProgressDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 进展标题 */\r\n title?: string;\r\n\r\n /** 所属项目Id */\r\n projectId?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMiniDto;\r\n\r\n /** 简述 */\r\n summary?: string;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n publishedTime?: Date;\r\n\r\n /** */\r\n publishUserId?: number;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** 活动进展图片,以\",\"分隔 */\r\n images?: string;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectProgressDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectProgressDto[];\r\n}\r\n\r\nexport interface FundProjectMixtureMiniDto {\r\n /** */\r\n fund?: FundMiniDto;\r\n\r\n /** 项目标题 */\r\n name?: string;\r\n\r\n /** */\r\n projectType?: FundProjectType;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectYearSummaryDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** */\r\n fundProjectId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n fundProject?: FundProjectMixtureMiniDto;\r\n\r\n /** 服务区域 */\r\n serviceArea?: string;\r\n\r\n /** 受益人数 */\r\n benefitNumber?: string;\r\n\r\n /** 活动效果 */\r\n activityEffect?: string;\r\n\r\n /** */\r\n summarization?: string;\r\n\r\n /** 年份 */\r\n year?: number;\r\n\r\n /** 基金会点评 */\r\n appraise?: string;\r\n\r\n /** 点评时间 */\r\n appraisedTime?: Date;\r\n\r\n /** 点评人 */\r\n appraiseUserId?: number;\r\n\r\n /** */\r\n appraiseUser?: UserMiniDto;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectYearSummaryAppraiseInput {\r\n /** */\r\n appraise?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectYearSummaryCreateOrUpdateDto {\r\n /** */\r\n fundProjectId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** 服务区域 */\r\n serviceArea?: string;\r\n\r\n /** 受益人数 */\r\n benefitNumber?: string;\r\n\r\n /** 活动效果 */\r\n activityEffect?: string;\r\n\r\n /** */\r\n summarization?: string;\r\n\r\n /** 年份 */\r\n year?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundProjectYearSummaryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundProjectYearSummaryDto[];\r\n}\r\n\r\nexport interface FundUserCreateOrUpdateDto {\r\n /** 账号 */\r\n userName?: string;\r\n\r\n /** 密码 */\r\n password?: string;\r\n\r\n /** 昵称 */\r\n name?: string;\r\n\r\n /** 邮箱 */\r\n emailAddress?: string;\r\n\r\n /** 姓名 */\r\n surname?: string;\r\n\r\n /** 手机号码 */\r\n phoneNumber?: string;\r\n\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 职务(数据字典且有对应枚举,所以value为1,2,3,4...) */\r\n duty?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 所在企业 */\r\n company?: string;\r\n\r\n /** 企业职务 */\r\n companyDuty?: string;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundUserDto {\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** 账号 */\r\n userName?: string;\r\n\r\n /** 昵称 */\r\n name?: string;\r\n\r\n /** 邮箱 */\r\n emailAddress?: string;\r\n\r\n /** 姓名 */\r\n surname?: string;\r\n\r\n /** 手机号码 */\r\n phoneNumber?: string;\r\n\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** 基金名称 */\r\n fundName?: string;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 职务(数据字典且有对应枚举,所以value为1,2,3,4...) */\r\n duty?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 所在企业 */\r\n company?: string;\r\n\r\n /** 企业职务 */\r\n companyDuty?: string;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface FundUserDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: FundUserDto[];\r\n}\r\n\r\nexport interface InternalMonthlyPlanDetailCreateOrUpdateDto {\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** 合作方机构Id */\r\n partnerOrgId?: string;\r\n\r\n /** */\r\n savedPartnerOrgIds?: number[];\r\n\r\n /** 所需支持 */\r\n needSupport?: string;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n enableRestartAudit?: boolean;\r\n}\r\n\r\nexport interface InternalMonthlyPlanCreateOrUpdateDto {\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n details?: InternalMonthlyPlanDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlyPlanDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** 内容概述 */\r\n summary?: string;\r\n\r\n /** 合作方机构Id */\r\n partnerOrgId?: string;\r\n\r\n /** */\r\n savedPartnerOrgIds?: number[];\r\n\r\n /** 所需支持 */\r\n needSupport?: string;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n internalMonthlyPlanId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlyPlanDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** 年 */\r\n year?: number;\r\n\r\n /** 对应的月份 */\r\n month?: number;\r\n\r\n /** */\r\n details?: InternalMonthlyPlanDetailDto[];\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlyPlanDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalMonthlyPlanDto[];\r\n}\r\n\r\nexport interface InternalMonthlyPlanDtoListResultDto {\r\n /** */\r\n items?: InternalMonthlyPlanDto[];\r\n}\r\n\r\nexport interface InternalMonthlySummarizeDetailCreateOrUpdateDto {\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n sequence?: number;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** 原计划 */\r\n summary?: string;\r\n\r\n /** 合作方机构Id */\r\n partnerOrgId?: string;\r\n\r\n /** */\r\n savedPartnerOrgIds?: number[];\r\n\r\n /** 执行概述 */\r\n executeSummary?: string;\r\n\r\n /** 受益人次 */\r\n benefitObjectCount?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n completeStatus?: ProjectMonthlyPlanCompleteStatus;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n internalMonthlyPlanDetailId?: number;\r\n}\r\n\r\nexport interface InternalMonthlySummarizeCreateOrUpdateDto {\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** 对应月计划Id */\r\n internalMonthlyPlanId?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n details?: InternalMonthlySummarizeDetailCreateOrUpdateDto[];\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlySummarizeDetailDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 开始日期 */\r\n startDate?: Date;\r\n\r\n /** 结束日期 */\r\n endDate?: Date;\r\n\r\n /** 原计划 */\r\n summary?: string;\r\n\r\n /** 合作方机构Id */\r\n partnerOrgId?: string;\r\n\r\n /** 执行概述 */\r\n executeSummary?: string;\r\n\r\n /** 受益人次 */\r\n benefitObjectCount?: number;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n completeStatus?: ProjectMonthlyPlanCompleteStatus;\r\n\r\n /** */\r\n internalMonthlySummarizeId?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n savedPartnerOrgIds?: number[];\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n internalMonthlyPlanDetailId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlySummarizeDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 日期 */\r\n date?: Date;\r\n\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n month?: number;\r\n\r\n /** 对应月计划Id */\r\n internalMonthlyPlanId?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n details?: InternalMonthlySummarizeDetailDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalMonthlySummarizeDtoListResultDto {\r\n /** */\r\n items?: InternalMonthlySummarizeDto[];\r\n}\r\n\r\nexport interface InternalMonthlySummarizeDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalMonthlySummarizeDto[];\r\n}\r\n\r\nexport interface InternalPersonalYearEndSummaryCreateOrUpdateDto {\r\n /** 年 */\r\n year?: number;\r\n\r\n /** */\r\n role?: string;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalPersonalYearEndSummaryDto {\r\n /** 年 */\r\n year?: number;\r\n\r\n /** */\r\n role?: string;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalPersonalYearEndSummaryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalPersonalYearEndSummaryDto[];\r\n}\r\n\r\nexport interface InternalPersonalYearEndSummaryDtoListResultDto {\r\n /** */\r\n items?: InternalPersonalYearEndSummaryDto[];\r\n}\r\n\r\nexport interface InternalProjectDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 项目概述 */\r\n summary?: string;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 总预算 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalProjectDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalProjectDto[];\r\n}\r\n\r\nexport interface InternalProjectBudgetItemDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 序列(显示顺序) */\r\n sequence?: number;\r\n\r\n /** */\r\n projectBudgetCategory?: ProjectBudgetCategory;\r\n\r\n /** */\r\n projectBudgetType?: ProjectBudgetType;\r\n\r\n /** 子项目内容(三级科目) */\r\n itemName?: string;\r\n\r\n /** 具体内容 */\r\n content?: string;\r\n\r\n /** 单价(元) */\r\n unitPrice?: number;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 单位 */\r\n unit?: string;\r\n\r\n /** 预算报价 */\r\n budgetQuotation?: number;\r\n\r\n /** */\r\n projectBudgetCapitalSource?: ProjectBudgetCapitalSource;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface InternalProjectCreateOrUpdateDto {\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** 项目类型,如:,1,11,111, */\r\n projectTypes?: string;\r\n\r\n /** 项目概述 */\r\n summary?: string;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 项目预算明细 */\r\n budgetItems?: InternalProjectBudgetItemDto[];\r\n\r\n /** 向基金会申请资金 */\r\n applyMoney?: number;\r\n\r\n /** 自筹资金 */\r\n selfMoney?: number;\r\n\r\n /** 其他来源资金 */\r\n otherMoney?: number;\r\n\r\n /** 总预算 = 向基金会申请资金+自筹资金+其他来源资金 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalProjectDetailDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** 项目类型,如:,1,11,111, */\r\n projectTypes?: string;\r\n\r\n /** 项目概述 */\r\n summary?: string;\r\n\r\n /** 实施地点 */\r\n place?: string;\r\n\r\n /** 项目开始日期 */\r\n startDate?: Date;\r\n\r\n /** 项目结束日期 */\r\n endDate?: Date;\r\n\r\n /** 项目预算明细 */\r\n budgetItems?: InternalProjectBudgetItemDto[];\r\n\r\n /** 向基金会申请资金 */\r\n applyMoney?: number;\r\n\r\n /** 自筹资金 */\r\n selfMoney?: number;\r\n\r\n /** 其他来源资金 */\r\n otherMoney?: number;\r\n\r\n /** 总预算 = 向基金会申请资金+自筹资金+其他来源资金 */\r\n totalMoney?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UpdateInternalProjectBudgetItemDto {\r\n /** 项目预算明细 */\r\n budgetItems?: InternalProjectBudgetItemDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalProjectDtoListResultDto {\r\n /** */\r\n items?: InternalProjectDto[];\r\n}\r\n\r\nexport interface InternalProjectPhasesItemDto {\r\n /** */\r\n stage?: WorkflowOfProjectByInternal;\r\n\r\n /** 节点名称 */\r\n name?: string;\r\n\r\n /** */\r\n status?: ProjectPhaseStatus;\r\n\r\n /** 跳转链接 */\r\n redirectUrl?: string[];\r\n}\r\n\r\nexport interface InternalMicrocosmicDto {\r\n /** */\r\n projectName?: string;\r\n\r\n /** */\r\n startDate?: string;\r\n\r\n /** */\r\n endDate?: string;\r\n\r\n /** */\r\n status?: WorkflowOfProjectByInternal;\r\n\r\n /** 活动场次 */\r\n activityCount?: number;\r\n\r\n /** 受益人次 */\r\n actualBeneficiaryCount?: number;\r\n\r\n /** 受益人数 */\r\n beneficiaryCount?: number;\r\n\r\n /** 覆盖区域数量 */\r\n townCount?: number;\r\n\r\n /** 各类型合作方数量 */\r\n organizationUnitCount?: object;\r\n\r\n /** 预算金额 */\r\n budget?: number;\r\n\r\n /** 实际支出 */\r\n actualExpenses?: number;\r\n\r\n /** 服务次数 */\r\n serviceCount?: number;\r\n}\r\n\r\nexport interface InternalMicrocosmicDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalMicrocosmicDto[];\r\n}\r\n\r\nexport interface InternalProjectSummaryReportCreateOrUpdateDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 年度 */\r\n year?: number;\r\n\r\n /** 填写人 */\r\n userName?: string;\r\n\r\n /** 项目总结内容 */\r\n summary?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalProjectSummaryReportDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 年度 */\r\n year?: number;\r\n\r\n /** 填写人 */\r\n userName?: string;\r\n\r\n /** 项目总结内容 */\r\n summary?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface InternalProjectSummaryReportDtoListResultDto {\r\n /** */\r\n items?: InternalProjectSummaryReportDto[];\r\n}\r\n\r\nexport interface InternalProjectSummaryReportDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: InternalProjectSummaryReportDto[];\r\n}\r\n\r\nexport interface JobCreateOrUpdateDto {\r\n /** 信息标题 */\r\n title?: string;\r\n\r\n /** 封面图片 */\r\n titleImagePath?: string;\r\n\r\n /** 工作城市 */\r\n city?: string;\r\n\r\n /** 地址 */\r\n address?: string;\r\n\r\n /** 联系方式 */\r\n contact?: string;\r\n\r\n /** 薪资 */\r\n salary?: string;\r\n\r\n /** 招聘人数 */\r\n recruitNumber?: number;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** 学历条件 */\r\n education?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface JobDto {\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 信息标题 */\r\n title?: string;\r\n\r\n /** 封面图片 */\r\n titleImagePath?: string;\r\n\r\n /** 工作城市 */\r\n city?: string;\r\n\r\n /** 地址 */\r\n address?: string;\r\n\r\n /** 联系方式 */\r\n contact?: string;\r\n\r\n /** 薪资 */\r\n salary?: string;\r\n\r\n /** 招聘人数 */\r\n recruitNumber?: number;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** 学历条件 */\r\n education?: string;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** 发布时间 */\r\n publishedTime?: Date;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface JobDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: JobDto[];\r\n}\r\n\r\nexport interface MerchantCreateOrUpdateDto {\r\n /** 基金Id */\r\n fundId?: number;\r\n\r\n /** 单位名称 */\r\n unitName?: string;\r\n\r\n /** 单位地址 */\r\n unitAddress?: string;\r\n\r\n /** 负责人姓名 */\r\n principalName?: string;\r\n\r\n /** 负责人手机号 */\r\n principalMobilePhone?: string;\r\n\r\n /** 负责人邮箱 */\r\n principalEmailAddress?: string;\r\n\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface MerchantDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: MerchantDto[];\r\n}\r\n\r\nexport interface MerchantBankAccountCreateOrUpdateDto {\r\n /** 客商主表Id */\r\n merchantId?: number;\r\n\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** */\r\n bankTypePK?: string;\r\n\r\n /** 银行名称 */\r\n bankNamePK?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface MerchantBankAccountDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: MerchantBankAccountDto[];\r\n}\r\n\r\nexport interface MessageCreateOrUpdateDto {\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 消息标题 */\r\n title?: string;\r\n\r\n /** 消息内容 */\r\n content?: string;\r\n\r\n /** */\r\n messageType?: MessageType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface MessageDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: MessageDto[];\r\n}\r\n\r\nexport interface NotifyTemplateDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 评估计划模板名称 */\r\n title?: string;\r\n\r\n /** 评估计划模板内容(富文本) */\r\n content?: string;\r\n\r\n /** */\r\n notifyTemplateType?: NotifyTemplateType;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface NotifyRecordDetailDto {\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n notifyTemplate?: NotifyTemplateDto;\r\n\r\n /** 项目Id */\r\n hostId?: number;\r\n\r\n /** */\r\n notifyType?: NotifyTemplateType;\r\n\r\n /** 通知模板Id */\r\n notifyTemplateId?: number;\r\n\r\n /** 通知标题 */\r\n title?: string;\r\n\r\n /** 通知内容(富文本) */\r\n content?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface NotifyRecordCreateOrUpdateDto {\r\n /** 项目Id */\r\n hostId?: number;\r\n\r\n /** */\r\n notifyType?: NotifyTemplateType;\r\n\r\n /** 通知模板Id */\r\n notifyTemplateId?: number;\r\n\r\n /** 通知标题 */\r\n title?: string;\r\n\r\n /** 通知内容(富文本) */\r\n content?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface NotifyRecordDto {\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 项目Id */\r\n hostId?: number;\r\n\r\n /** */\r\n notifyType?: NotifyTemplateType;\r\n\r\n /** 通知模板Id */\r\n notifyTemplateId?: number;\r\n\r\n /** 通知标题 */\r\n title?: string;\r\n\r\n /** 通知内容(富文本) */\r\n content?: string;\r\n\r\n /** 发送时间 */\r\n creationTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface NotifyRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: NotifyRecordDto[];\r\n}\r\n\r\nexport interface NotifyTemplateDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: NotifyTemplateDto[];\r\n}\r\n\r\nexport interface NotifyTemplateCreateOrUpdateDto {\r\n /** 评估计划模板名称 */\r\n title?: string;\r\n\r\n /** 评估计划模板内容(富文本) */\r\n content?: string;\r\n\r\n /** */\r\n notifyTemplateType?: NotifyTemplateType;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrderCreateOrUpdateDto {\r\n /** 订单号 */\r\n orderNo?: string;\r\n\r\n /** 关联表Id */\r\n applyId?: number;\r\n\r\n /** 标题 */\r\n title?: string;\r\n\r\n /** 图片 */\r\n titleImagePath?: string;\r\n\r\n /** */\r\n type?: OrderType;\r\n\r\n /** 订单金额 */\r\n priceTotal?: number;\r\n\r\n /** 付款金额 */\r\n payedMoney?: number;\r\n\r\n /** 是否在线支付 */\r\n isOnlinePayed?: boolean;\r\n\r\n /** 备注 */\r\n remark?: string;\r\n\r\n /** */\r\n status?: OrderStatus;\r\n\r\n /** 支付时间 */\r\n payedTime?: Date;\r\n\r\n /** 交易号 */\r\n tradeNo?: string;\r\n\r\n /** 是否回调 */\r\n isResponse?: boolean;\r\n\r\n /** 回调时间 */\r\n responseTime?: Date;\r\n\r\n /** 回调结果 */\r\n resultMessage?: string;\r\n\r\n /** 取消时间 */\r\n cancelTime?: Date;\r\n\r\n /** 取消原因 */\r\n cancelReason?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrderCreateOrUpdateDtoGetForEditOutput {\r\n /** */\r\n data?: OrderCreateOrUpdateDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface OrderDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: OrderDto[];\r\n}\r\n\r\nexport interface OrganizationUnitPagedResultRequestDto {\r\n /** */\r\n displayName?: string;\r\n\r\n /** 机构的类型(数据字典的ID) */\r\n organizationType?: number;\r\n\r\n /** */\r\n isApply?: boolean;\r\n\r\n /** */\r\n status?: OrganizationStatus;\r\n\r\n /** */\r\n principalName?: string;\r\n\r\n /** */\r\n mobilePhone?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n\r\n /** 每页记录数,用作替换MaxResultCount */\r\n pageSize?: number;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** 页码,用来替换SkipCount */\r\n pageIndex?: number;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface OrganizationUnitCreateOrUpdateDto {\r\n /** */\r\n inviteCode?: string;\r\n\r\n /** */\r\n logoImageUrl?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** 机构类型,数据字典Id */\r\n organizationType?: number;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** 地点 */\r\n place?: string;\r\n\r\n /** 负责人姓名 */\r\n principalName?: string;\r\n\r\n /** 主要负责人的手机号 */\r\n mobilePhone?: string;\r\n\r\n /** 主要负责人的邮箱 */\r\n emailAddress?: string;\r\n\r\n /** 联系人姓名 */\r\n contactName?: string;\r\n\r\n /** 联系人手机号 */\r\n contactMobilePhone?: string;\r\n\r\n /** 联系人邮箱 */\r\n contactEmailAddress?: string;\r\n\r\n /** 统一社会信用代码 */\r\n creditCode?: string;\r\n\r\n /** 合作方银行账号名称 */\r\n bankAccountName?: string;\r\n\r\n /** 开户行信息 */\r\n bankName?: string;\r\n\r\n /** 开户账号 */\r\n bankAccount?: string;\r\n\r\n /** 收件人 */\r\n receiverName?: string;\r\n\r\n /** 收件地址 */\r\n receiverAddress?: string;\r\n\r\n /** 收件电话 */\r\n receiverMobile?: string;\r\n\r\n /** 法人登记证书复印件 */\r\n certificateImagePath?: string;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PartnerInviteDto {\r\n /** 被邀请的机构名称 */\r\n organizationName?: string;\r\n\r\n /** */\r\n organizationType?: number;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n mobile?: string;\r\n\r\n /** 邀约的说明内容 */\r\n content?: string;\r\n\r\n /** */\r\n hasUsed?: boolean;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface OrganizationUnitLoginAccountResult {\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n password?: string;\r\n}\r\n\r\nexport interface OrganizationUnitDtoListResultDto {\r\n /** */\r\n items?: OrganizationUnitDto[];\r\n}\r\n\r\nexport interface OrganizationUnitDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: OrganizationUnitDto[];\r\n}\r\n\r\nexport interface PartnerCapitalApplyDetailCreateOrUpdateDto {\r\n /** */\r\n sequence?: number;\r\n\r\n /** 资金用途 */\r\n purpose?: string;\r\n\r\n /** 单价(元) */\r\n unitPrice?: number;\r\n\r\n /** 数量 */\r\n number?: number;\r\n\r\n /** 单位 */\r\n unit?: string;\r\n\r\n /** 预算(元) */\r\n budgetQuotation?: number;\r\n\r\n /** 配比资金(元) */\r\n otherFund?: number;\r\n\r\n /** 配比资金来源 */\r\n otherFundSource?: string;\r\n\r\n /** */\r\n id?: string;\r\n}\r\n\r\nexport interface PartnerCapitalApplyCreateOrUpdateDto {\r\n /** 项目Id */\r\n projectId?: number;\r\n\r\n /** 机构联系人 */\r\n contactName?: string;\r\n\r\n /** 申请理由 */\r\n applyReason?: string;\r\n\r\n /** 资金预算明细 */\r\n partnerCapitalApplyDetails?: PartnerCapitalApplyDetailCreateOrUpdateDto[];\r\n\r\n /** 合计申请资金(元) */\r\n totalApplyMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PartnerCapitalApplyDto {\r\n /** 项目Id */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** 机构联系人 */\r\n contactName?: string;\r\n\r\n /** 申请理由 */\r\n applyReason?: string;\r\n\r\n /** 资金预算明细 */\r\n partnerCapitalApplyDetails?: PartnerCapitalApplyDetailCreateOrUpdateDto[];\r\n\r\n /** 合计申请资金(元) */\r\n totalApplyMoney?: number;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PartnerCapitalApplyDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: PartnerCapitalApplyDto[];\r\n}\r\n\r\nexport interface PartnerCapitalApplyDtoListResultDto {\r\n /** */\r\n items?: PartnerCapitalApplyDto[];\r\n}\r\n\r\nexport interface PartnerInviteCreateOrUpdateDto {\r\n /** 被邀请的机构名称 */\r\n organizationName?: string;\r\n\r\n /** 机构类型,数据字典Id */\r\n organizationType?: number;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n mobile?: string;\r\n\r\n /** 邀约的说明内容 */\r\n content?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PartnerInviteDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: PartnerInviteDto[];\r\n}\r\n\r\nexport interface TenPayNotifyXml {\r\n /** */\r\n appid?: string;\r\n\r\n /** */\r\n mch_id?: string;\r\n\r\n /** */\r\n device_info?: string;\r\n\r\n /** */\r\n nonce_str?: string;\r\n\r\n /** */\r\n sign?: string;\r\n\r\n /** */\r\n result_code?: string;\r\n\r\n /** */\r\n err_code?: string;\r\n\r\n /** */\r\n err_code_des?: string;\r\n\r\n /** 交易类型 */\r\n trade_type?: string;\r\n\r\n /** 付款银行 ,银行类型,采用字符串类型的银行标识,银行类型见银行列表 */\r\n bank_type?: string;\r\n\r\n /** is_subscribe 用户是否关注公众账号,Y-关注,N-未关注 */\r\n is_subscribe?: string;\r\n\r\n /** */\r\n openid?: string;\r\n\r\n /** */\r\n total_fee?: string;\r\n\r\n /** */\r\n settlement_total_fee?: number;\r\n\r\n /** */\r\n fee_type?: string;\r\n\r\n /** */\r\n cash_fee?: string;\r\n\r\n /** */\r\n cash_fee_type?: string;\r\n\r\n /** 微信支付订单号 */\r\n transaction_id?: string;\r\n\r\n /** 商户订单号 */\r\n out_trade_no?: string;\r\n\r\n /** 支付完成时间 */\r\n time_end?: string;\r\n\r\n /** */\r\n return_code?: string;\r\n\r\n /** */\r\n return_msg?: string;\r\n}\r\n\r\nexport interface SummaryDto {\r\n /** */\r\n totalBeneficiaries?: number;\r\n\r\n /** */\r\n totalProjects?: number;\r\n\r\n /** */\r\n totalAmount?: number;\r\n}\r\n\r\nexport interface PermissionDefinitionCreateOrUpdateDto {\r\n /** 权限的键 */\r\n name?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n url?: string;\r\n\r\n /** 是否不在菜单中显示 */\r\n isHiddenForMenu?: boolean;\r\n\r\n /** */\r\n icon?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n permissionDefinitionScopes?: PermissionDefinitionScope[];\r\n\r\n /** 开启数据权限 */\r\n enableDataPermission?: boolean;\r\n\r\n /** 开启按创建人过滤,其中包括“仅自己、本部门、本部门及下属部门” */\r\n enableDataPermissionForCreator?: boolean;\r\n\r\n /** 开启数据范围过滤 */\r\n enableDataPermissionSpecifiedLimit?: boolean;\r\n\r\n /** 指定数据范围的数据源。 当开启数据范围过滤时,填写此值。 */\r\n dataPermissionSpecifiedDataSourceProvider?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PermissionDefinitionDto {\r\n /** 权限的键 */\r\n name?: string;\r\n\r\n /** 显示的名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n url?: string;\r\n\r\n /** 是否不在菜单中显示 */\r\n isHiddenForMenu?: boolean;\r\n\r\n /** */\r\n icon?: string;\r\n\r\n /** */\r\n parentId?: number;\r\n\r\n /** */\r\n permissionDefinitionScopes?: PermissionDefinitionScope[];\r\n\r\n /** 开启数据权限 */\r\n enableDataPermission?: boolean;\r\n\r\n /** 开启按创建人过滤,其中包括“仅自己、本部门、本部门及下属部门” */\r\n enableDataPermissionForCreator?: boolean;\r\n\r\n /** 开启数据范围过滤 */\r\n enableDataPermissionSpecifiedLimit?: boolean;\r\n\r\n /** 指定数据范围的数据源。 当开启数据范围过滤时,填写此值。 */\r\n dataPermissionSpecifiedDataSourceProvider?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface StringStringKeyValuePair {\r\n /** */\r\n key?: string;\r\n\r\n /** */\r\n value?: string;\r\n}\r\n\r\nexport interface PermissionDefinitionDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: PermissionDefinitionDto[];\r\n}\r\n\r\nexport interface ProjectFullInfoDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectFullInfoDto[];\r\n}\r\n\r\nexport interface ProjectBasicDetailUpdateDto {\r\n /** 项目图片 */\r\n titleImagePath?: string;\r\n\r\n /** 项目成果 */\r\n projectResult?: string;\r\n\r\n /** 项目类型,这个不用传,传数组即可 */\r\n projectTypes?: string;\r\n\r\n /** 中期报告提交时间 */\r\n progressReportDate?: Date;\r\n\r\n /** 末期报告提交时间 */\r\n summaryReportDate?: Date;\r\n\r\n /** 项目人员Id */\r\n projectManagerIds?: number[];\r\n\r\n /** */\r\n projectTypesArrary?: string[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectOrganizationUnitMappingDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** 合作机构Id */\r\n organizationUnitIds?: number[];\r\n}\r\n\r\nexport interface ProjectCreateOrUpdateDto {\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectBeneficiaryMappingDto {\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** */\r\n beneficiaryId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** 个案编号 */\r\n code?: string;\r\n\r\n /** 负责人 */\r\n principalName?: string;\r\n\r\n /** 负责人电话 */\r\n principalPhone?: string;\r\n\r\n /** 姓名 */\r\n realName?: string;\r\n\r\n /** 性别(男,女) */\r\n sex?: string;\r\n\r\n /** 出生日期 */\r\n birthday?: Date;\r\n\r\n /** 民族 */\r\n nation?: string;\r\n\r\n /** 联系电话 */\r\n phone?: string;\r\n\r\n /** 身份证号 */\r\n idNo?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** 详细地址 */\r\n homeAddress?: string;\r\n\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n\r\n /** 建档立卡金额(元\\/月) */\r\n otherSalvationAmount?: number;\r\n\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n\r\n /** 低保金额(元\\/月) */\r\n subsistenceAllowanceAmount?: number;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** 家庭成员情况 */\r\n familyMembersInfoList?: FamilyMembersInfoDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectBeneficiaryMappingDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectBeneficiaryMappingDto[];\r\n}\r\n\r\nexport interface ProjectBeneficiaryMappingDtoListResultDto {\r\n /** */\r\n items?: ProjectBeneficiaryMappingDto[];\r\n}\r\n\r\nexport interface ProjectBeneficiaryMappingCreateOrUpdateDto {\r\n /** 受益人ID */\r\n beneficiaryId?: number;\r\n\r\n /** */\r\n projectId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** 个案编号 */\r\n code?: string;\r\n\r\n /** 负责人 */\r\n principalName?: string;\r\n\r\n /** 负责人电话 */\r\n principalPhone?: string;\r\n\r\n /** 姓名 */\r\n realName?: string;\r\n\r\n /** 性别(男,女) */\r\n sex?: string;\r\n\r\n /** 出生日期 */\r\n birthday?: Date;\r\n\r\n /** 民族 */\r\n nation?: string;\r\n\r\n /** 联系电话 */\r\n phone?: string;\r\n\r\n /** 身份证号 */\r\n idNo?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n cityName?: string;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n areaName?: string;\r\n\r\n /** */\r\n townId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** */\r\n areaSelect?: AreaSelectDto;\r\n\r\n /** 详细地址 */\r\n homeAddress?: string;\r\n\r\n /** 是否为建档立卡户 */\r\n isEnjoyOtherSalvation?: boolean;\r\n\r\n /** 建档立卡金额(元\\/月) */\r\n otherSalvationAmount?: number;\r\n\r\n /** 是否享受低保政策 */\r\n isEnjoyTheSubsistenceAllowancePolicy?: boolean;\r\n\r\n /** 低保金额(元\\/月) */\r\n subsistenceAllowanceAmount?: number;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 家庭成员情况 */\r\n familyMembersInfoList?: FamilyMembersInfoDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectInviteCreateDto {\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** 是否内部项目 */\r\n isInternal?: boolean;\r\n\r\n /** 所属系列Id,数据字典,外部项目固定为行业支持 */\r\n projectSeriesId?: number;\r\n\r\n /** 所属年度 */\r\n year?: number;\r\n\r\n /** 邀约合作机构Id */\r\n organizationUnitId?: number[];\r\n\r\n /** 项目负责人Id */\r\n projectManagerIds?: number[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectSeriesShortDto {\r\n /** 系列名称 */\r\n title?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectInviteDto {\r\n /** 项目名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n project?: ProjectDto;\r\n\r\n /** 是否内部项目 */\r\n isInternal?: boolean;\r\n\r\n /** */\r\n projectSeries?: ProjectSeriesShortDto;\r\n\r\n /** 所属年度 */\r\n year?: number;\r\n\r\n /** 邀约合作机构Id */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitShortDto;\r\n\r\n /** */\r\n projectManagerList?: UserDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectInviteDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectInviteDto[];\r\n}\r\n\r\nexport interface ProjectSeriesDto {\r\n /** 系列名称 */\r\n title?: string;\r\n\r\n /** 图片 */\r\n titleImagePath?: string;\r\n\r\n /** 是否公开显示 */\r\n isPublicShow?: boolean;\r\n\r\n /** 序号 */\r\n sequence?: number;\r\n\r\n /** 是否默认,默认时不可删除 */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProjectSeriesDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProjectSeriesDto[];\r\n}\r\n\r\nexport interface ProjectSeriesCreateOrUpdateDto {\r\n /** 系列名称 */\r\n title?: string;\r\n\r\n /** 图片 */\r\n titleImagePath?: string;\r\n\r\n /** 是否公开显示 */\r\n isPublicShow?: boolean;\r\n\r\n /** 序号 */\r\n sequence?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProvinceCreateOrUpdateDto {\r\n /** */\r\n provinceName?: string;\r\n\r\n /** */\r\n shortName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ProvinceDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: ProvinceDto[];\r\n}\r\n\r\nexport interface DataPermissionSettingDto {\r\n /** */\r\n permissionCode?: string;\r\n\r\n /** */\r\n scope?: DataPermissionScopeType;\r\n\r\n /** */\r\n details?: string[];\r\n}\r\n\r\nexport interface RoleCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n normalizedName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** 是否为默认的角色 */\r\n isDefault?: boolean;\r\n\r\n /** 是否为固定角色 */\r\n isStatic?: boolean;\r\n\r\n /** */\r\n grantedPermissions?: string[];\r\n\r\n /** */\r\n roleScopes?: PermissionDefinitionScope[];\r\n\r\n /** */\r\n dataPermissionSettings?: DataPermissionSettingDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface RoleDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n normalizedName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n grantedPermissions?: string[];\r\n\r\n /** */\r\n isStatic?: boolean;\r\n\r\n /** */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n roleScopes?: PermissionDefinitionScope[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface RoleListDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n isStatic?: boolean;\r\n\r\n /** */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n roleScopes?: PermissionDefinitionScope[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface RoleListDtoListResultDto {\r\n /** */\r\n items?: RoleListDto[];\r\n}\r\n\r\nexport interface PermissionDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface PermissionDtoListResultDto {\r\n /** */\r\n items?: PermissionDto[];\r\n}\r\n\r\nexport interface CreateRoleDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n\r\n /** */\r\n normalizedName?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n grantedPermissions?: string[];\r\n\r\n /** */\r\n id?: number;\r\n\r\n /** */\r\n isDefault?: boolean;\r\n\r\n /** */\r\n isStatic?: boolean;\r\n\r\n /** */\r\n roleScopes?: PermissionDefinitionScope[];\r\n}\r\n\r\nexport interface GetRoleForEditOutput {\r\n /** */\r\n role?: CreateRoleDto;\r\n\r\n /** */\r\n permissions?: PermissionDefinitionDto[];\r\n\r\n /** */\r\n grantedPermissions?: PermissionDefinitionDto[];\r\n}\r\n\r\nexport interface RoleDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: RoleDto[];\r\n}\r\n\r\nexport interface DisplayItem {\r\n /** */\r\n id?: string;\r\n\r\n /** */\r\n displayName?: string;\r\n}\r\n\r\nexport interface ApplicationInfoDto {\r\n /** */\r\n version?: string;\r\n\r\n /** */\r\n releaseDate?: Date;\r\n\r\n /** */\r\n features?: object;\r\n}\r\n\r\nexport interface UserLoginInfoDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantLoginInfoDto {\r\n /** */\r\n tenancyName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface GetCurrentLoginInformationsOutput {\r\n /** */\r\n application?: ApplicationInfoDto;\r\n\r\n /** */\r\n user?: UserLoginInfoDto;\r\n\r\n /** */\r\n tenant?: TenantLoginInfoDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitDto;\r\n\r\n /** */\r\n permissions?: string[];\r\n}\r\n\r\nexport interface SwiperCreateOrUpdateDto {\r\n /** */\r\n redirectUrl?: string;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n titleImageUrl?: string;\r\n\r\n /** 名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n cmsAnchorId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface SwiperDto {\r\n /** */\r\n redirectUrl?: string;\r\n\r\n /** */\r\n displayOrder?: number;\r\n\r\n /** */\r\n titleImageUrl?: string;\r\n\r\n /** 名称 */\r\n displayName?: string;\r\n\r\n /** */\r\n cmsAnchorId?: number;\r\n\r\n /** */\r\n remark?: string;\r\n\r\n /** */\r\n anchor?: CmsAnchorDto;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface SwiperDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: SwiperDto[];\r\n}\r\n\r\nexport interface CreateTenantDto {\r\n /** */\r\n tenancyName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n adminEmailAddress?: string;\r\n\r\n /** */\r\n connectionString?: string;\r\n\r\n /** */\r\n isActive?: boolean;\r\n}\r\n\r\nexport interface TenantDto {\r\n /** */\r\n tenancyName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n isActive?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: TenantDto[];\r\n}\r\n\r\nexport interface TenantAccessRecordCreateDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** 类型 */\r\n type?: string;\r\n\r\n /** 访问日期 */\r\n date?: Date;\r\n}\r\n\r\nexport interface TenantAccountRecordDto {\r\n /** 金额 */\r\n moneyAmount?: number;\r\n\r\n /** */\r\n recordType?: TenantAccountRecordType;\r\n\r\n /** 内容 */\r\n content?: string;\r\n\r\n /** 是否属于基金托管 */\r\n isFundOwner?: boolean;\r\n\r\n /** 是否线上支付 */\r\n isOnLinePayment?: boolean;\r\n\r\n /** 数据字典维护 */\r\n paymentType?: string;\r\n\r\n /** 对应收入记录ID */\r\n incomeRecordId?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantAccountRecordDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: TenantAccountRecordDto[];\r\n}\r\n\r\nexport interface TenantAccountDto {\r\n /** 可用余额 */\r\n availableMoney?: number;\r\n\r\n /** 可用基金余额 */\r\n availableFundMoney?: number;\r\n\r\n /** 累计拨付金额 */\r\n appropriatedMoney?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantBankAccountCreateOrUpdateDto {\r\n /** 银行账号 */\r\n bankAccountCode?: string;\r\n\r\n /** 银行名称 */\r\n bankName?: string;\r\n\r\n /** 户名 */\r\n bankAccountName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TenantBankAccountDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: TenantBankAccountDto[];\r\n}\r\n\r\nexport interface TestDetail {\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n month?: number;\r\n\r\n /** */\r\n value?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TestMainCreateOrUpdateDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n testDetails?: TestDetail[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TestDetailDto {\r\n /** */\r\n year?: number;\r\n\r\n /** */\r\n month?: number;\r\n\r\n /** */\r\n value?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TestMainDto {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n title?: string;\r\n\r\n /** */\r\n testDetails?: TestDetailDto[];\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TestMainDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: TestMainDto[];\r\n}\r\n\r\nexport interface AuthenticateModel {\r\n /** */\r\n userNameOrEmailAddress?: string;\r\n\r\n /** */\r\n password?: string;\r\n\r\n /** */\r\n rememberClient?: boolean;\r\n}\r\n\r\nexport interface AuthenticateResultModel {\r\n /** */\r\n accessToken?: string;\r\n\r\n /** */\r\n encryptedAccessToken?: string;\r\n\r\n /** */\r\n expireInSeconds?: number;\r\n\r\n /** */\r\n userId?: number;\r\n}\r\n\r\nexport interface ExternalLoginProviderInfoModel {\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n clientId?: string;\r\n}\r\n\r\nexport interface ExternalAuthenticateModel {\r\n /** */\r\n authProvider?: string;\r\n\r\n /** */\r\n providerKey?: string;\r\n\r\n /** */\r\n providerAccessCode?: string;\r\n}\r\n\r\nexport interface TownCreateOrUpdateDto {\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n townName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface TownDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: TownDto[];\r\n}\r\n\r\nexport interface CreateUserDto {\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** 所属部门 */\r\n departmentId?: number;\r\n\r\n /** */\r\n isActive?: boolean;\r\n\r\n /** */\r\n roleNames?: string[];\r\n\r\n /** */\r\n password?: string;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n}\r\n\r\nexport interface UserDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: UserDto[];\r\n}\r\n\r\nexport interface RoleDtoListResultDto {\r\n /** */\r\n items?: RoleDto[];\r\n}\r\n\r\nexport interface ChangeUserLanguageDto {\r\n /** */\r\n languageName?: string;\r\n}\r\n\r\nexport interface UserOrganizationUnitDto {\r\n /** */\r\n user?: UserDto;\r\n\r\n /** */\r\n organizationUnit?: OrganizationUnitDto;\r\n\r\n /** */\r\n userName?: string;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n surname?: string;\r\n\r\n /** */\r\n emailAddress?: string;\r\n\r\n /** */\r\n isActive?: boolean;\r\n\r\n /** */\r\n fullName?: string;\r\n\r\n /** */\r\n lastLoginTime?: Date;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n departmentId?: number;\r\n\r\n /** */\r\n departmentName?: string;\r\n\r\n /** */\r\n roleNames?: string[];\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n userType?: UserType;\r\n\r\n /** */\r\n fundId?: number;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n\r\n /** 公众号openId */\r\n openId?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserOrganizationUnitDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: UserOrganizationUnitDto[];\r\n}\r\n\r\nexport interface UserProfileUpdateDto {\r\n /** 昵称 */\r\n name?: string;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 住址 */\r\n address?: string;\r\n\r\n /** 自我介绍 */\r\n description?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n headImgUrl?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface ChangePasswordDto {\r\n /** */\r\n currentPassword?: string;\r\n\r\n /** */\r\n newPassword?: string;\r\n}\r\n\r\nexport interface ResetPasswordDto {\r\n /** */\r\n adminPassword?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n newPassword?: string;\r\n}\r\n\r\nexport interface ResetPassword4PortalDto {\r\n /** */\r\n phone?: string;\r\n\r\n /** */\r\n newPassword?: string;\r\n}\r\n\r\nexport interface UserTaskCreateOrUpdateDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n savedAttachments?: number[];\r\n\r\n /** 紧急程度Id */\r\n importantLevelId?: number;\r\n\r\n /** TagId */\r\n tagId?: number;\r\n\r\n /** 被指派人Id */\r\n permissionUserId?: number;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** 任务标题 */\r\n title?: string;\r\n\r\n /** 任务内容 */\r\n content?: string;\r\n\r\n /** 任务开始时间 */\r\n startTime?: Date;\r\n\r\n /** 任务结束时间 */\r\n endTime?: Date;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserTaskDto {\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n creatorUser?: UserMiniDto;\r\n\r\n /** 紧急程度Id */\r\n importantLevelId?: number;\r\n\r\n /** */\r\n importantLevel?: DataDictionaryDto;\r\n\r\n /** TagId */\r\n tagId?: number;\r\n\r\n /** */\r\n tag?: DataDictionaryDto;\r\n\r\n /** 被指派人Id */\r\n permissionUserId?: number;\r\n\r\n /** */\r\n permissionUser?: UserMiniDto;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** */\r\n activity?: ActivityDto;\r\n\r\n /** 任务标题 */\r\n title?: string;\r\n\r\n /** 任务内容 */\r\n content?: string;\r\n\r\n /** */\r\n type?: TaskType;\r\n\r\n /** */\r\n status?: TaskStatus;\r\n\r\n /** 审核不通过理由 */\r\n sendbackReason?: string;\r\n\r\n /** 任务开始时间 */\r\n startTime?: Date;\r\n\r\n /** 任务结束时间 */\r\n endTime?: Date;\r\n\r\n /** 提交时间 */\r\n submitTime?: Date;\r\n\r\n /** 审核通过时间 */\r\n approvedTime?: Date;\r\n\r\n /** 审核不通过时间 */\r\n sendbackTime?: Date;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserTaskDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: UserTaskDto[];\r\n}\r\n\r\nexport interface UserTaskDtoListResultDto {\r\n /** */\r\n items?: UserTaskDto[];\r\n}\r\n\r\nexport interface Fund {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n organizationUnitId?: number;\r\n\r\n /** */\r\n creatorUser?: User;\r\n\r\n /** */\r\n name?: string;\r\n\r\n /** */\r\n titleImage?: string;\r\n\r\n /** */\r\n founderName?: string;\r\n\r\n /** */\r\n mobileTelephone?: string;\r\n\r\n /** */\r\n fixTelephone?: string;\r\n\r\n /** */\r\n email?: string;\r\n\r\n /** */\r\n qq?: string;\r\n\r\n /** */\r\n foundDate?: Date;\r\n\r\n /** */\r\n purpose?: string;\r\n\r\n /** */\r\n managementFeePercentage?: number;\r\n\r\n /** */\r\n intialCaptial?: number;\r\n\r\n /** */\r\n capitalSource?: string;\r\n\r\n /** */\r\n focusArea?: string;\r\n\r\n /** */\r\n summary?: string;\r\n\r\n /** */\r\n description?: string;\r\n\r\n /** */\r\n viceChairman?: string;\r\n\r\n /** */\r\n chairman?: string;\r\n\r\n /** */\r\n member?: string;\r\n\r\n /** */\r\n contacts?: string;\r\n\r\n /** */\r\n type?: FundType;\r\n\r\n /** */\r\n status?: ValidStatus;\r\n\r\n /** */\r\n honorType?: string;\r\n\r\n /** */\r\n isPublished?: boolean;\r\n\r\n /** */\r\n raisedAmountTotal?: number;\r\n\r\n /** */\r\n donatedPersonTotal?: number;\r\n\r\n /** */\r\n expenseAmountTotal?: number;\r\n\r\n /** */\r\n directorID?: number;\r\n\r\n /** */\r\n director?: User;\r\n\r\n /** */\r\n instructionsImage?: string;\r\n\r\n /** */\r\n plaqueImage?: string;\r\n\r\n /** */\r\n canAnonymous?: boolean;\r\n\r\n /** */\r\n hasProducts?: boolean;\r\n\r\n /** */\r\n isFundRaising?: boolean;\r\n\r\n /** */\r\n fundCategory?: string;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserExtendDto {\r\n /** */\r\n tenantId?: number;\r\n\r\n /** */\r\n userType?: UserType;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n user?: User;\r\n\r\n /** */\r\n fundId?: number;\r\n\r\n /** */\r\n fund?: Fund;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 职务(数据字典且有对应枚举,所以value为1,2,3,4...) */\r\n duty?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 所在企业 */\r\n company?: string;\r\n\r\n /** 企业职务 */\r\n companyDuty?: string;\r\n\r\n /** 成员图片\\/用户头像 */\r\n headImgUrl?: string;\r\n\r\n /** */\r\n provinceId?: number;\r\n\r\n /** */\r\n province?: Province;\r\n\r\n /** */\r\n cityId?: number;\r\n\r\n /** */\r\n city?: City;\r\n\r\n /** */\r\n areaId?: number;\r\n\r\n /** */\r\n area?: Area;\r\n\r\n /** 住址 */\r\n address?: string;\r\n\r\n /** 自我介绍 */\r\n description?: string;\r\n\r\n /** 公众号openId */\r\n openId?: string;\r\n\r\n /** 小程序openId */\r\n miniOpenId?: string;\r\n\r\n /** 公众号UnionId */\r\n unionId?: string;\r\n\r\n /** 生日 */\r\n birthday?: Date;\r\n\r\n /** 部门Id */\r\n departmentId?: number;\r\n\r\n /** */\r\n isDeleted?: boolean;\r\n\r\n /** */\r\n deleterUserId?: number;\r\n\r\n /** */\r\n deletionTime?: Date;\r\n\r\n /** */\r\n lastModificationTime?: Date;\r\n\r\n /** */\r\n lastModifierUserId?: number;\r\n\r\n /** */\r\n creationTime?: Date;\r\n\r\n /** */\r\n creatorUserId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface VolunteerDto {\r\n /** 用户Id */\r\n userId?: number;\r\n\r\n /** */\r\n surName?: string;\r\n\r\n /** */\r\n phoneNumber?: string;\r\n\r\n /** */\r\n mobile?: string;\r\n\r\n /** */\r\n idNo?: string;\r\n\r\n /** */\r\n sex?: string;\r\n\r\n /** */\r\n birthday?: Date;\r\n\r\n /** */\r\n user?: UserDto;\r\n\r\n /** */\r\n status?: VolunteerStatus;\r\n\r\n /** 审核通过时自动生成的唯一编号 */\r\n volunteerOrgCode?: string;\r\n\r\n /** 志愿者等级\r\n默认为0,未来根据服务时长自动增加 */\r\n level?: number;\r\n\r\n /** 参加时间 */\r\n joinTime?: Date;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n audit?: number;\r\n\r\n /** */\r\n auditStatus?: number;\r\n\r\n /** */\r\n isAudited?: boolean;\r\n\r\n /** */\r\n totalMinutes?: number;\r\n\r\n /** 服务时长\r\nAgileBoost.Szcharity.CustomDtoMapper */\r\n totalHours?: number;\r\n\r\n /** */\r\n userExtend?: UserExtendDto;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface VolunteerDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: VolunteerDto[];\r\n}\r\n\r\nexport interface VolunteerCreateOrUpdateDto {\r\n /** 姓名 */\r\n surName?: string;\r\n\r\n /** 手机号码 */\r\n mobile?: string;\r\n\r\n /** 身份证号码 */\r\n idNo?: string;\r\n\r\n /** 性别 */\r\n sex?: string;\r\n\r\n /** 生日 */\r\n birthday?: Date;\r\n\r\n /** */\r\n formId?: number;\r\n\r\n /** */\r\n extensionData?: string;\r\n\r\n /** */\r\n extensionObject?: object;\r\n\r\n /** */\r\n auditFlowId?: string;\r\n\r\n /** */\r\n userId?: number;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface VolunteerPagedResultRequestDto {\r\n /** 志愿者姓名 */\r\n volunteerName?: string;\r\n\r\n /** 志愿者手机号 */\r\n volunteerPhone?: string;\r\n\r\n /** */\r\n volunteerId?: number;\r\n\r\n /** 志愿者编号 */\r\n volunteerCode?: string;\r\n\r\n /** */\r\n includeUserExtend?: boolean;\r\n\r\n /** */\r\n status?: VolunteerStatus;\r\n\r\n /** */\r\n sorting?: string;\r\n\r\n /** */\r\n skipCount?: number;\r\n\r\n /** */\r\n maxResultCount?: number;\r\n}\r\n\r\nexport interface BatchAuditDto {\r\n /** */\r\n list?: AuditUserLogProxy[];\r\n}\r\n\r\nexport interface VolunteerDtoListResultDto {\r\n /** */\r\n items?: VolunteerDto[];\r\n}\r\n\r\nexport interface VolunteerServiceHistoryCreateOrUpdateDto {\r\n /** 志愿者Id */\r\n volunteerId?: number;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** 服务开始时间 */\r\n serviceStartTime?: Date;\r\n\r\n /** 服务结束时间 */\r\n serviceEndTime?: Date;\r\n\r\n /** 服务时长(小时) */\r\n serviceHour?: number;\r\n\r\n /** 服务内容 */\r\n serviceContent?: string;\r\n\r\n /** */\r\n serviceType?: ServiceType;\r\n\r\n /** 完成情况 */\r\n completeStatus?: string;\r\n\r\n /** 评价 */\r\n appraise?: string;\r\n\r\n /** 评价人姓名 */\r\n appraiserName?: string;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface VolunteerServiceHistoryDto {\r\n /** 志愿者Id */\r\n volunteerId?: number;\r\n\r\n /** */\r\n volunteer?: VolunteerDto;\r\n\r\n /** 对应的活动Id */\r\n activityId?: number;\r\n\r\n /** */\r\n activity?: ActivityDto;\r\n\r\n /** 服务开始时间 */\r\n serviceStartTime?: Date;\r\n\r\n /** 服务结束时间 */\r\n serviceEndTime?: Date;\r\n\r\n /** 服务时常(分钟) */\r\n serviceMinute?: number;\r\n\r\n /** 服务时长(小时) */\r\n serviceHour?: number;\r\n\r\n /** 服务内容 */\r\n serviceContent?: string;\r\n\r\n /** */\r\n serviceType?: ServiceType;\r\n\r\n /** 完成情况 */\r\n completeStatus?: string;\r\n\r\n /** 评价 */\r\n appraise?: string;\r\n\r\n /** 评价人姓名 */\r\n appraiserName?: string;\r\n\r\n /** 0:未核销,1:已核销 */\r\n checkStatus?: boolean;\r\n\r\n /** */\r\n id?: number;\r\n}\r\n\r\nexport interface UserVolunteerInfo {\r\n /** 服务时长 */\r\n serviceMinutes?: number;\r\n}\r\n\r\nexport interface VolunteerServiceHistoryCreateOrUpdateDtoGetForEditOutput {\r\n /** */\r\n data?: VolunteerServiceHistoryCreateOrUpdateDto;\r\n\r\n /** */\r\n schema?: any | null;\r\n\r\n /** */\r\n uiSchema?: any | null;\r\n\r\n /** */\r\n errorSchema?: any | null;\r\n}\r\n\r\nexport interface VolunteerServiceHistoryDtoPagedResultDto {\r\n /** */\r\n totalCount?: number;\r\n\r\n /** */\r\n items?: VolunteerServiceHistoryDto[];\r\n}\r\n\r\nexport enum TenantAvailabilityState {\r\n 'Available' = 'Available',\r\n 'InActive' = 'InActive',\r\n 'NotFound' = 'NotFound'\r\n}\r\n\r\nexport enum VerificationCode {\r\n 'RegisterVercificationCodeSMS' = 'RegisterVercificationCodeSMS',\r\n 'RetrivePasswordVercificationCodeSMS' = 'RetrivePasswordVercificationCodeSMS'\r\n}\r\n\r\nexport enum ActivityStatus {\r\n 'Deleted' = 'Deleted',\r\n 'Saved' = 'Saved',\r\n 'SendBacked' = 'SendBacked',\r\n 'Submited' = 'Submited',\r\n 'Approved' = 'Approved',\r\n 'Published' = 'Published',\r\n 'Finished' = 'Finished'\r\n}\r\n\r\nexport enum ActivityTypeEnum {\r\n 'GeneralActivity' = 'GeneralActivity',\r\n 'VolunteerActivity' = 'VolunteerActivity'\r\n}\r\n\r\nexport enum AttachmentHostType {\r\n 'Temp' = 'Temp',\r\n 'CmsContentTitleImage' = 'CmsContentTitleImage',\r\n 'CmsContentAttachment' = 'CmsContentAttachment',\r\n 'EditorImage' = 'EditorImage',\r\n 'CmsCategory' = 'CmsCategory',\r\n 'Swiper' = 'Swiper',\r\n 'FriendlyLinkLogo' = 'FriendlyLinkLogo',\r\n 'OrganizationUnit' = 'OrganizationUnit',\r\n 'Message' = 'Message',\r\n 'External_Project_Monthly_Summarize_Attachment' = 'External_Project_Monthly_Summarize_Attachment',\r\n 'External_Project_Monthly_Summarize_Photo' = 'External_Project_Monthly_Summarize_Photo',\r\n 'External_Project_Intention' = 'External_Project_Intention',\r\n 'External_Project' = 'External_Project',\r\n 'External_Project_Process_Monitoring' = 'External_Project_Process_Monitoring',\r\n 'External_Project_Progress_Report' = 'External_Project_Progress_Report',\r\n 'External_Project_Summary_Report' = 'External_Project_Summary_Report',\r\n 'External_Project_Close_Report' = 'External_Project_Close_Report',\r\n 'External_Project_Monthly_Summarize_Detail_Attachment' = 'External_Project_Monthly_Summarize_Detail_Attachment',\r\n 'Internal_Project_Monthly_Summarize_Attachment' = 'Internal_Project_Monthly_Summarize_Attachment',\r\n 'Internal_Project' = 'Internal_Project',\r\n 'Internal_Project_Summary_Report' = 'Internal_Project_Summary_Report',\r\n 'Internal_Personal_Year_End_Summary' = 'Internal_Personal_Year_End_Summary',\r\n 'Internal_ServiceRecord' = 'Internal_ServiceRecord',\r\n 'Beneficiary' = 'Beneficiary',\r\n 'ProjectSeries' = 'ProjectSeries',\r\n 'FundApply' = 'FundApply',\r\n 'Fund' = 'Fund',\r\n 'FundModifyApply' = 'FundModifyApply',\r\n 'FundProjectApply' = 'FundProjectApply',\r\n 'FundProject' = 'FundProject',\r\n 'FundProjectModifyApply' = 'FundProjectModifyApply',\r\n 'FundProjectProgress' = 'FundProjectProgress',\r\n 'DonatedAmountConfig' = 'DonatedAmountConfig',\r\n 'Invoice' = 'Invoice',\r\n 'FundAppropriateApply' = 'FundAppropriateApply',\r\n 'FundAppropriateRecord' = 'FundAppropriateRecord',\r\n 'FundUser' = 'FundUser',\r\n 'InvoiceInformation' = 'InvoiceInformation',\r\n 'UserTask' = 'UserTask',\r\n 'Activity' = 'Activity',\r\n 'Job' = 'Job',\r\n 'ApplicationPayment' = 'ApplicationPayment',\r\n 'FundDonationOrder' = 'FundDonationOrder',\r\n 'Volunteer' = 'Volunteer',\r\n 'ElectronicInvoice' = 'ElectronicInvoice'\r\n}\r\n\r\nexport enum ActivityQrType {\r\n 'Detail' = 'Detail',\r\n 'CheckIn' = 'CheckIn'\r\n}\r\n\r\nexport enum ActivityApplyStatus {\r\n 'Auditing' = 'Auditing',\r\n 'Return' = 'Return',\r\n 'WaitPay' = 'WaitPay',\r\n 'Approved' = 'Approved',\r\n 'Cancel' = 'Cancel'\r\n}\r\n\r\nexport enum UserType {\r\n 'Membership' = 'Membership',\r\n 'Tenant' = 'Tenant',\r\n 'Fund' = 'Fund',\r\n 'Platform' = 'Platform'\r\n}\r\n\r\nexport enum AuditFLowStatus {\r\n 'Closed' = 'Closed',\r\n 'Open' = 'Open'\r\n}\r\n\r\nexport enum AuditFlowType {\r\n 'AuditOne' = 'AuditOne',\r\n 'AuditAll' = 'AuditAll'\r\n}\r\n\r\nexport enum ApplyStatus {\r\n 'Cancel' = 'Cancel',\r\n 'Check' = 'Check',\r\n 'Return' = 'Return',\r\n 'Approved' = 'Approved'\r\n}\r\n\r\nexport enum ClientType {\r\n 'System' = 'System',\r\n 'PC' = 'PC',\r\n 'WeixinMini' = 'WeixinMini',\r\n 'Weixin' = 'Weixin',\r\n 'Backend' = 'Backend'\r\n}\r\n\r\nexport enum ImportResultType {\r\n 'Inserted' = 'Inserted',\r\n 'Updated' = 'Updated',\r\n 'NotFound' = 'NotFound',\r\n 'ValidationError' = 'ValidationError',\r\n 'Error' = 'Error',\r\n 'DataConvertFailed' = 'DataConvertFailed',\r\n 'Exist' = 'Exist'\r\n}\r\n\r\nexport enum OrderType {\r\n 'Activity' = 'Activity',\r\n 'Course' = 'Course'\r\n}\r\n\r\nexport enum OrderStatus {\r\n 'NotPay' = 'NotPay',\r\n 'Expired' = 'Expired',\r\n 'Finished' = 'Finished',\r\n 'Refunded' = 'Refunded',\r\n 'Cancel' = 'Cancel'\r\n}\r\n\r\nexport enum AuditFlowScope {\r\n 'All' = 'All',\r\n 'PartnerApply' = 'PartnerApply',\r\n 'ExternalProjectIntention' = 'ExternalProjectIntention',\r\n 'DueDiligenceRecord' = 'DueDiligenceRecord',\r\n 'ExternalProject' = 'ExternalProject',\r\n 'ExternalMonthlyPlan' = 'ExternalMonthlyPlan',\r\n 'ExternalMonthlySummarize' = 'ExternalMonthlySummarize',\r\n 'ExternalProjectAdjustment' = 'ExternalProjectAdjustment',\r\n 'ExternalProjectProgressReport' = 'ExternalProjectProgressReport',\r\n 'ExternalProjectProcessMonitoring' = 'ExternalProjectProcessMonitoring',\r\n 'ExternalProjectSummaryReport' = 'ExternalProjectSummaryReport',\r\n 'ExternalProjectCloseReport' = 'ExternalProjectCloseReport',\r\n 'InternalProject' = 'InternalProject',\r\n 'InternalMonthlyPlan' = 'InternalMonthlyPlan',\r\n 'InternalMonthlySummarize' = 'InternalMonthlySummarize',\r\n 'InternalProjectSummaryReport' = 'InternalProjectSummaryReport',\r\n 'InternalPersonalYearEndSummary' = 'InternalPersonalYearEndSummary',\r\n 'Beneficiary' = 'Beneficiary',\r\n 'ServiceRecord' = 'ServiceRecord',\r\n 'ProjectBebeficiaryMapping' = 'ProjectBebeficiaryMapping',\r\n 'CapitalIncomeRecordFromDonation' = 'CapitalIncomeRecordFromDonation',\r\n 'CapitalIncomeRecordFromOther' = 'CapitalIncomeRecordFromOther',\r\n 'PartnerCapitalApply' = 'PartnerCapitalApply',\r\n 'CapitalExpenseRecord' = 'CapitalExpenseRecord',\r\n 'FundApply' = 'FundApply',\r\n 'FundModifyApply' = 'FundModifyApply',\r\n 'FundProjectApply' = 'FundProjectApply',\r\n 'FundProjectModifyApply' = 'FundProjectModifyApply',\r\n 'FundNonCashDonation' = 'FundNonCashDonation',\r\n 'FundAppropriateApply' = 'FundAppropriateApply',\r\n 'Application_Payment_Current_Expenses_Le_5' = 'Application_Payment_Current_Expenses_Le_5',\r\n 'Application_Payment_Current_Expenses_Gt_5' = 'Application_Payment_Current_Expenses_Gt_5',\r\n 'Application_Payment_Expenditure_Charitable_Projects_Le_20' = 'Application_Payment_Expenditure_Charitable_Projects_Le_20',\r\n 'Application_Payment_Expenditure_Charitable_Projects_Gt_20' = 'Application_Payment_Expenditure_Charitable_Projects_Gt_20',\r\n 'Application_Payment_Physical_Investment_Le_100' = 'Application_Payment_Physical_Investment_Le_100',\r\n 'Application_Payment_Physical_Investment_Gt_100' = 'Application_Payment_Physical_Investment_Gt_100',\r\n 'Application_Payment_Investment_Financing_Le_500' = 'Application_Payment_Investment_Financing_Le_500',\r\n 'Application_Payment_Investment_Financing_Gt_500' = 'Application_Payment_Investment_Financing_Gt_500',\r\n 'Application_Payment_Internal_Business_Reconciliation_Le_20' = 'Application_Payment_Internal_Business_Reconciliation_Le_20',\r\n 'Application_Payment_Internal_Business_Reconciliation_Gt_20' = 'Application_Payment_Internal_Business_Reconciliation_Gt_20',\r\n 'Application_Payment_Other' = 'Application_Payment_Other',\r\n 'UserTask' = 'UserTask',\r\n 'Actiivty_Apply' = 'Actiivty_Apply',\r\n 'Volunteer' = 'Volunteer'\r\n}\r\n\r\nexport enum AuditUserLogStatus {\r\n 'Reject' = 'Reject',\r\n 'Pass' = 'Pass',\r\n 'Back' = 'Back',\r\n 'Continue' = 'Continue'\r\n}\r\n\r\nexport enum ApprovalCategory {\r\n 'Current_Expenses' = 'Current_Expenses',\r\n 'Expenditure_Charitable_Projects' = 'Expenditure_Charitable_Projects',\r\n 'Physical_Investment' = 'Physical_Investment',\r\n 'Investment_Financing' = 'Investment_Financing',\r\n 'Internal_Business_Reconciliation' = 'Internal_Business_Reconciliation',\r\n 'Other' = 'Other'\r\n}\r\n\r\nexport enum CurrencyType {\r\n 'RMB' = 'RMB'\r\n}\r\n\r\nexport enum FundProjectType {\r\n 'Professional' = 'Professional',\r\n 'Personal' = 'Personal',\r\n 'Online' = 'Online',\r\n 'Offline' = 'Offline'\r\n}\r\n\r\nexport enum ApplicationPaymentValidationStatus {\r\n 'Success' = 'Success',\r\n 'Fail' = 'Fail'\r\n}\r\n\r\nexport enum ServiceRecordType {\r\n 'Beneficiary' = 'Beneficiary',\r\n 'School' = 'School'\r\n}\r\n\r\nexport enum WorkflowOfProjectByExternal {\r\n 'ProjectApproval' = 'ProjectApproval',\r\n 'ProgressReport' = 'ProgressReport',\r\n 'SummaryReport' = 'SummaryReport',\r\n 'Closed' = 'Closed',\r\n 'Termination' = 'Termination'\r\n}\r\n\r\nexport enum ProjectServiceRecordCompleteStatus {\r\n 'NotComplete' = 'NotComplete',\r\n 'PartialComplete' = 'PartialComplete',\r\n 'AllComplete' = 'AllComplete'\r\n}\r\n\r\nexport enum PayType {\r\n 'Cash' = 'Cash',\r\n 'Transfer' = 'Transfer'\r\n}\r\n\r\nexport enum ChangeState {\r\n 'UnActive' = 'UnActive',\r\n 'Active' = 'Active'\r\n}\r\n\r\nexport enum ProjectBudgetCategory {\r\n 'BusinessActivityCost' = 'BusinessActivityCost'\r\n}\r\n\r\nexport enum ProjectBudgetType {\r\n 'ActivityCost' = 'ActivityCost',\r\n 'AdvertiseCost' = 'AdvertiseCost',\r\n 'AdministrativeCost' = 'AdministrativeCost',\r\n 'PersonnelSalary' = 'PersonnelSalary',\r\n 'Other' = 'Other'\r\n}\r\n\r\nexport enum ProjectBudgetCapitalSource {\r\n 'Apply' = 'Apply',\r\n 'Self' = 'Self',\r\n 'Other' = 'Other'\r\n}\r\n\r\nexport enum CapitalProperty {\r\n 'NonFinite' = 'NonFinite',\r\n 'Finite' = 'Finite'\r\n}\r\n\r\nexport enum IncomeCategory {\r\n 'Interest' = 'Interest',\r\n 'Investment' = 'Investment',\r\n 'Other' = 'Other'\r\n}\r\n\r\nexport enum CmsCategoryType {\r\n 'Content' = 'Content',\r\n 'Article' = 'Article'\r\n}\r\n\r\nexport enum CmsContentStatus {\r\n 'Draft' = 'Draft',\r\n 'Published' = 'Published',\r\n 'Deleted' = 'Deleted'\r\n}\r\n\r\nexport enum DonorType {\r\n 'Personal' = 'Personal',\r\n 'Group' = 'Group',\r\n 'Enterprise' = 'Enterprise'\r\n}\r\n\r\nexport enum IncomeType {\r\n 'Project' = 'Project',\r\n 'Fund' = 'Fund',\r\n 'Org' = 'Org'\r\n}\r\n\r\nexport enum ValidStatus {\r\n 'Deleted' = 'Deleted',\r\n 'InValid' = 'InValid',\r\n 'Valid' = 'Valid'\r\n}\r\n\r\nexport enum ElectronicInvoiceType {\r\n 'Personal' = 'Personal',\r\n 'EnOrOtherOrg' = 'EnOrOtherOrg'\r\n}\r\n\r\nexport enum CollectWaterStatus {\r\n 'Waiting' = 'Waiting',\r\n 'Confirmed' = 'Confirmed'\r\n}\r\n\r\nexport enum CustomFormType {\r\n 'OrganizationUnit' = 'OrganizationUnit',\r\n 'InternalProject' = 'InternalProject',\r\n 'Beneficiary' = 'Beneficiary',\r\n 'BeneficiaryServiceRecord' = 'BeneficiaryServiceRecord',\r\n 'SchoolServiceRecord' = 'SchoolServiceRecord',\r\n 'Volunteer' = 'Volunteer',\r\n 'ApplicationPayment' = 'ApplicationPayment'\r\n}\r\n\r\nexport enum CustomFormDataSourceType {\r\n 'Enum' = 'Enum',\r\n 'DataDictionary' = 'DataDictionary',\r\n 'CustomValues' = 'CustomValues'\r\n}\r\n\r\nexport enum DonationType {\r\n 'Monthly' = 'Monthly',\r\n 'Commemorative' = 'Commemorative',\r\n 'Birthday' = 'Birthday',\r\n 'Festival' = 'Festival'\r\n}\r\n\r\nexport enum DonorItemType {\r\n 'NonDirectional' = 'NonDirectional',\r\n 'NamingFund' = 'NamingFund',\r\n 'ProjectDonor' = 'ProjectDonor'\r\n}\r\n\r\nexport enum DonationCycle {\r\n 'Weekly' = 'Weekly',\r\n 'Monthly' = 'Monthly',\r\n 'Year' = 'Year'\r\n}\r\n\r\nexport enum DataDictionarySyncMode {\r\n 'MinimumEffect' = 'MinimumEffect',\r\n 'Force' = 'Force'\r\n}\r\n\r\nexport enum DataPermissionLimitHostType {\r\n 'CmsCategory' = 'CmsCategory'\r\n}\r\n\r\nexport enum DataPermissionLimitTargetType {\r\n 'User' = 'User',\r\n 'Role' = 'Role'\r\n}\r\n\r\nexport enum DonatedAmountConfigSourceType {\r\n 'Fund' = 'Fund',\r\n 'FundProject' = 'FundProject'\r\n}\r\n\r\nexport enum ElectronicInvoiceStatus {\r\n 'ToBeConfirmed' = 'ToBeConfirmed',\r\n 'BillingInProgress' = 'BillingInProgress',\r\n 'Invoiced' = 'Invoiced',\r\n 'Invalid' = 'Invalid',\r\n 'Failed' = 'Failed'\r\n}\r\n\r\nexport enum ProjectMonthlyPlanCompleteStatus {\r\n 'None' = 'None',\r\n 'Adjust' = 'Adjust',\r\n 'Complete' = 'Complete'\r\n}\r\n\r\nexport enum ProjectPhaseStatus {\r\n 'NoTask' = 'NoTask',\r\n 'None' = 'None',\r\n 'Ongoing' = 'Ongoing',\r\n 'DelayComplete' = 'DelayComplete',\r\n 'Complete' = 'Complete'\r\n}\r\n\r\nexport enum FeedbackSourceType {\r\n 'Reception' = 'Reception',\r\n 'Backstage' = 'Backstage'\r\n}\r\n\r\nexport enum DonateType {\r\n 'NormalDonate' = 'NormalDonate',\r\n 'MonthlyDonate' = 'MonthlyDonate',\r\n 'ProjectNormalDonate' = 'ProjectNormalDonate',\r\n 'ProjectMonthlyDonate' = 'ProjectMonthlyDonate'\r\n}\r\n\r\nexport enum FundType {\r\n 'Professional' = 'Professional'\r\n}\r\n\r\nexport enum MessageType {\r\n 'ProjectProgress' = 'ProjectProgress',\r\n 'Organization' = 'Organization',\r\n 'System' = 'System',\r\n 'Fund' = 'Fund',\r\n 'FundProjectProgress' = 'FundProjectProgress',\r\n 'Donor' = 'Donor'\r\n}\r\n\r\nexport enum FundAccountRecordOperationType {\r\n 'Income' = 'Income',\r\n 'Appropriate' = 'Appropriate',\r\n 'ManageFee' = 'ManageFee',\r\n 'ManageFeeReturn' = 'ManageFeeReturn',\r\n 'ManageFeeAdd' = 'ManageFeeAdd'\r\n}\r\n\r\nexport enum FundAppropriateType {\r\n 'FundProject' = 'FundProject',\r\n 'Fund' = 'Fund',\r\n 'CaseAppropriation' = 'CaseAppropriation',\r\n 'InternalAppropriation' = 'InternalAppropriation',\r\n 'QuotaAppropriationInTheAnnualPlan' = 'QuotaAppropriationInTheAnnualPlan',\r\n 'SCHProject' = 'SCHProject',\r\n 'SCHPersonal' = 'SCHPersonal',\r\n 'SCHIllness' = 'SCHIllness',\r\n 'FinancingCost' = 'FinancingCost',\r\n 'PerformCost' = 'PerformCost',\r\n 'ProjectCost' = 'ProjectCost',\r\n 'Goods' = 'Goods',\r\n 'TencentDay' = 'TencentDay',\r\n 'PoorDay' = 'PoorDay',\r\n 'Directional' = 'Directional',\r\n 'SupportDepartment' = 'SupportDepartment',\r\n 'CounterpartsSupport' = 'CounterpartsSupport',\r\n 'Other' = 'Other'\r\n}\r\n\r\nexport enum ManagerFeeChangeType {\r\n 'ManageFeeAdd' = 'ManageFeeAdd',\r\n 'ManageFeeReturn' = 'ManageFeeReturn'\r\n}\r\n\r\nexport enum FundProjectStatus {\r\n 'Deleted' = 'Deleted',\r\n 'InValid' = 'InValid',\r\n 'Valid' = 'Valid',\r\n 'End' = 'End'\r\n}\r\n\r\nexport enum WorkflowOfProjectByInternal {\r\n 'ProjectApproval' = 'ProjectApproval',\r\n 'Closed' = 'Closed',\r\n 'Termination' = 'Termination'\r\n}\r\n\r\nexport enum NotifyTemplateType {\r\n 'ProjectAssessmentPlan' = 'ProjectAssessmentPlan',\r\n 'OrganizationInvestigation' = 'OrganizationInvestigation'\r\n}\r\n\r\nexport enum OrganizationStatus {\r\n 'Pending' = 'Pending',\r\n 'Approved' = 'Approved',\r\n 'Rejected' = 'Rejected'\r\n}\r\n\r\nexport enum PermissionDefinitionScope {\r\n 'Foundation' = 'Foundation',\r\n 'Partner' = 'Partner'\r\n}\r\n\r\nexport enum DataPermissionScopeType {\r\n 'All' = 'All',\r\n 'Mine' = 'Mine',\r\n 'MyDepartment' = 'MyDepartment',\r\n 'MyDepartmentAndSubs' = 'MyDepartmentAndSubs',\r\n 'Specified' = 'Specified'\r\n}\r\n\r\nexport enum TenantAccountRecordType {\r\n 'Income' = 'Income',\r\n 'Outcome' = 'Outcome',\r\n 'ManageFee' = 'ManageFee',\r\n 'ManageFeeReturn' = 'ManageFeeReturn',\r\n 'ManageFeeAdd' = 'ManageFeeAdd'\r\n}\r\n\r\nexport enum TaskType {\r\n 'Volunteer' = 'Volunteer',\r\n 'Office' = 'Office'\r\n}\r\n\r\nexport enum TaskStatus {\r\n 'Waiting' = 'Waiting',\r\n 'SendBack' = 'SendBack',\r\n 'Executing' = 'Executing',\r\n 'Submit' = 'Submit',\r\n 'Complete' = 'Complete',\r\n 'Incomplete' = 'Incomplete'\r\n}\r\n\r\nexport enum VolunteerStatus {\r\n 'Pending' = 'Pending',\r\n 'Approved' = 'Approved',\r\n 'Rejected' = 'Rejected',\r\n 'Baned' = 'Baned'\r\n}\r\n\r\nexport enum ServiceType {\r\n 'PunchCard' = 'PunchCard',\r\n 'TaskExecute' = 'TaskExecute',\r\n 'ImportExcel' = 'ImportExcel'\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getForEdit: data => request({\r\n url: '/api/services/app/ActivityApply/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n getAll: data => request({\r\n url: '/api/services/app/ActivityApply/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/ActivityApply/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/ActivityApply/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/ActivityApply/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: data => {\r\n return request({\r\n url: '/api/services/app/ActivityApply/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import Cookies from 'js-cookie'\r\n\r\n// App\r\nconst sidebarStatusKey = 'sidebar_status'\r\nexport const getSidebarStatus = () => Cookies.get(sidebarStatusKey)\r\nexport const setSidebarStatus = (sidebarStatus: string) => Cookies.set(sidebarStatusKey, sidebarStatus)\r\n\r\nconst languageKey = 'language'\r\nexport const getLanguage = () => Cookies.get(languageKey)\r\nexport const setLanguage = (language: string) => Cookies.set(languageKey, language)\r\n\r\nconst sizeKey = 'size'\r\nexport const getSize = () => Cookies.get(sizeKey)\r\nexport const setSize = (size: string) => Cookies.set(sizeKey, size)\r\n\r\n\r\n// User\r\nconst tokenKey = 'vue_typescript_admin_access_token'\r\nexport const getToken = () => Cookies.get(tokenKey)\r\nexport const setToken = (token: string) => Cookies.set(tokenKey, token)\r\nexport const removeToken = () => Cookies.remove(tokenKey)\r\n\r\n\r\nconst ouKey = 'Abp-OrganizationUnitId'\r\nexport const getOu = () => Cookies.get(ouKey)\r\nexport const setOu = (id: string) => {\r\n console.log(\"Cookies.set ouKey\", id);\r\n Cookies.set(ouKey, id)\r\n}\r\nexport const removeOu = () => Cookies.remove(ouKey)\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=62f1d884&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=62f1d884&lang=scss&scoped=true&\"","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/userPointLog/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/userPointLog/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/userPointLog/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/userPointLog/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/userPointLog/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/userPointLog/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getForEdit: data => request({\r\n url: '/api/services/app/Activity/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n getAll: data => request({\r\n url: '/api/services/app/Activity/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/Activity/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/Activity/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/Activity/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n\r\n 'delete': function(data) {\r\n return request({\r\n url: '/api/services/app/Activity/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n },\r\n getQr: function(data) {\r\n return request({\r\n url: '/api/services/app/Activity/GetQr',\r\n method: 'get',\r\n params: data\r\n })\r\n },\r\n changeStatus: data => request({\r\n url: '/api/services/app/Activity/changeStatus',\r\n method: 'get',\r\n params: data\r\n }),\r\n approveActivity: data => request({\r\n url: '/api/services/app/Activity/approveActivity',\r\n method: 'post',\r\n data: data\r\n })\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/default-header.d45457fa.png\";","export const isValidUsername = (str: string) => ['admin', 'editor'].indexOf(str.trim()) >= 0\r\n\r\nexport const isExternal = (path: string) => /^(https?:|mailto:|tel:)/.test(path)\r\n\r\nfunction isValidPhone(str: string) {\r\n const reg = /^1[3|4|5|7|8][0-9]\\d{8}$/\r\n return reg.test(str)\r\n}\r\n\r\nfunction validPhone(rule: any, value: string, callback: any) {\r\n if (!value)\r\n callback(new Error('请输入手机号码!'))\r\n else if (!isValidPhone(value))\r\n callback(new Error('请输入正确的11位手机号码!'))\r\n else\r\n callback()\r\n}\r\n\r\nfunction validMoney(rule: any, value: string, callback: any) {\r\n if (!value)\r\n callback(new Error('金额不能为空!'))\r\n else if(!isValidNumber(value))\r\n callback(new Error('金额只能为数字和小数点!'))\r\n else\r\n callback()\r\n}\r\n\r\nfunction validAge(rule: any, value: string, callback: any) {\r\n if (!value)\r\n callback(new Error('年龄不能为空!'))\r\n else if(!isValidNumber(value))\r\n callback(new Error('年龄只能为数字!'))\r\n else\r\n callback()\r\n}\r\n\r\nfunction isValidNumber(str:string){\r\n const reg=/^(-?\\d+)(\\.\\d+)?$/\r\n return reg.test(str)\r\n}\r\n\r\nexport default {\r\n validPhone,\r\n validMoney,\r\n validAge\r\n}\r\n","import {AttachmentHostType} from \"@/api/appService\";\r\n\r\nexport class Attachment{\r\n static download(id:number){\r\n const baseURL = process.env.VUE_APP_BASE_API;\r\n window.open(`${baseURL}/api/services/app/Attachment/Download?id=${id}`,'_blank');\r\n }\r\n\r\n static uploadToOss(hostType:AttachmentHostType,file:any){\r\n\r\n }\r\n}\r\n","import request from '@/utils/request'\r\n\r\nimport {\r\n serviceOptions,\r\n AccountService,\r\n UserService,\r\n OrganizationUnitService,\r\n // AuditLogService,\r\n CmsContentService,\r\n CmsCategoryService,\r\n CmsAnchorService,\r\n SwiperService,\r\n CmsFriendLinkService,\r\n\r\n SessionService,\r\n RoleService,\r\n AuditFlowService,\r\n AuditNodePreDefineService,\r\n DepartmentService,\r\n AttachmentService,\r\n PermissionDefinitionService,\r\n\r\n NotifyTemplateService,\r\n DataDictionaryService,\r\n\r\n PartnerInviteService,\r\n\r\n EnumService,\r\n AlbumService,\r\n CapitalIncomeRecordFromOtherService,\r\n CapitalIncomeRecordFromDonationService,\r\n CapitalExpenseRecordAppserviceService,\r\n InternalMonthlyPlanService,\r\n InternalMonthlySummarizeService,\r\n InternalPersonalYearEndSummaryService,\r\n ExternalProjectIntentionService,\r\n ExternalMonthlyPlanService,\r\n ExternalMonthlySummarizeService,\r\n ProjectInviteService,\r\n ProjectService,\r\n ProjectSeriesService,\r\n ExternalDueDiligenceRecordService,\r\n ExternalProjectProcessMonitoringService,\r\n ExternalProjectProgressReportService,\r\n ExternalProjectSummaryReportService,\r\n ExternalProjectService,\r\n ExternalProjectCloseReportService,\r\n NotifyRecordService,\r\n ProvinceService,\r\n CityService,\r\n AreaService,\r\n TownService,\r\n CustomFormService,\r\n InternalProjectSummaryReportsService,\r\n InternalProjectService,\r\n PartnerCapitalApplyService,\r\n BeneficiaryService,\r\n ProjectBeneficiaryMappingService,\r\n BeneficiaryServiceRecordServiceService,\r\n BankReconciliationService,\r\n InternalProjectPhaseService,\r\n ExternalProjectPhaseService,\r\n InternalProjectReportService,\r\n ExternalProjectReportService,\r\n ExternalProjectChangeApplyService,\r\n FundService,\r\n FundApplyService,\r\n MessageService,\r\n FundModifyApplyService,\r\n FundUserService,\r\n AuditFlowProxyService,\r\n FundProjectService,\r\n FundProjectApplyService,\r\n FundProjectYearSummaryService,\r\n FundProjectModifyApplyService,\r\n FundProjectProgressService,\r\n FundDonationOrderService,\r\n FundNonCashDonationService,\r\n FundAppropriateApplyService,\r\n FundProjectDonationRecordService,\r\n FundAccountService,\r\n FundAppropriateRecordService,\r\n FundIncomeRecordService,\r\n FundManageFeeRecordService,\r\n FundDonationMonthlyConfigService,\r\n ActivityService,\r\n ActivityApplyService,\r\n ActivitySignInRecordService,\r\n VolunteerService,\r\n VolunteerServiceHistoryService,\r\n UserTaskService,\r\n JobService,\r\n FeedbackService,\r\n FeedbackReplyService,\r\n ElectronicInvoiceService,\r\n ApplicationPaymentService,\r\n DonatedAmountConfigService,\r\n DashbordService,\r\n TenantBankAccountService,\r\n MerchantService,\r\n MerchantBankAccountService,\r\n CycleDonateConfigService,\r\n ScopeDataSourceService,\r\n TokenAuthService,\r\n BankTypeService,\r\n BankNameService,\r\n CollectWaterService\r\n} from './appService'\r\n\r\nimport {Attachment} from './attachment';\r\nimport FeedbackReplyList from \"@/views/feedback/replyList.vue\";\r\nimport CollectWaterList from \"@/views/financeNew/collectWater/list.vue\";\r\n\r\n\r\nserviceOptions.axios = request;\r\n\r\n//const basrUrl = process.env.VUE_APP_BASE_API;\r\n\r\nconst tokenAuth = TokenAuthService;\r\nconst auditFlow = AuditFlowProxyService;\r\nconst auditNodePreDefine = AuditNodePreDefineService;\r\nconst account = AccountService;\r\nconst album = AlbumService;\r\nconst cmsContent = CmsContentService;\r\nconst cmsCategory = CmsCategoryService;\r\nconst cmsAnchor = CmsAnchorService;\r\nconst cmsFriendLink = CmsFriendLinkService;\r\nconst swiper = SwiperService;\r\nconst department = DepartmentService;\r\nconst organizationUnit = OrganizationUnitService;\r\nconst role = RoleService;\r\nconst session = SessionService;\r\nconst user = UserService;\r\nconst attachment = Attachment;\r\nconst attachmentService = AttachmentService;\r\nconst permissionDefinition = PermissionDefinitionService;\r\n\r\nconst partnerInvite = PartnerInviteService;\r\nconst notifyTemplate = NotifyTemplateService;\r\nconst dataDictionary = DataDictionaryService;\r\nconst capitalIncomeRecordFromOther = CapitalIncomeRecordFromOtherService;\r\nconst capitalIncomeRecordFromDonation = CapitalIncomeRecordFromDonationService;\r\nconst capitalExpenseRecord = CapitalExpenseRecordAppserviceService;\r\nconst internalMonthlyPlan = InternalMonthlyPlanService;\r\nconst internalMonthlySummarize = InternalMonthlySummarizeService;\r\nconst internalPersonalYearEndSummary = InternalPersonalYearEndSummaryService;\r\nconst enumService = EnumService;\r\nconst externalProjectIntention = ExternalProjectIntentionService;\r\nconst externalMonthlyPlanService = ExternalMonthlyPlanService;\r\nconst externalMonthlySummarize = ExternalMonthlySummarizeService;\r\nconst projectInvite = ProjectInviteService;\r\nconst projectSeries = ProjectSeriesService;\r\nconst project = ProjectService;\r\nconst externalDueDiligenceRecord = ExternalDueDiligenceRecordService;\r\nconst externalProjectProcessMonitoringService = ExternalProjectProcessMonitoringService;\r\nconst externalProjectProcessReport = ExternalProjectProgressReportService;\r\nconst externalProjectSummaryReport = ExternalProjectSummaryReportService;\r\nconst notifyRecord = NotifyRecordService;\r\n//\r\nconst province = ProvinceService;\r\nconst city = CityService;\r\nconst area = AreaService;\r\nconst town = TownService;\r\nconst externalProject = ExternalProjectService;\r\nconst externalProjectCloseReport = ExternalProjectCloseReportService;\r\n\r\nconst customFormService = CustomFormService;\r\nconst internalProjectSummaryReports = InternalProjectSummaryReportsService;\r\nconst internalProject = InternalProjectService;\r\nconst partnerCapitalApply = PartnerCapitalApplyService;\r\nconst beneficiary = BeneficiaryService;\r\nconst projectBeneficiaryMapping = ProjectBeneficiaryMappingService;\r\nconst beneficiaryServiceRecord = BeneficiaryServiceRecordServiceService;\r\nconst bankReconciliation = BankReconciliationService;\r\nconst guid = '00000000-0000-0000-0000-000000000000';\r\n\r\nconst internalProjectPhase = InternalProjectPhaseService;\r\nconst externalProjectPhase = ExternalProjectPhaseService;\r\nconst internalProjectReport = InternalProjectReportService;\r\nconst externalProjectReport = ExternalProjectReportService;\r\nconst externalProjectChangeApply = ExternalProjectChangeApplyService;\r\n\r\nconst fund = FundService;\r\nconst fundApply = FundApplyService;\r\nconst message = MessageService;\r\nconst fundModifyApply = FundModifyApplyService;\r\nconst fundUser = FundUserService;\r\nconst fundAccount = FundAccountService;\r\nconst fundAppropriateRecord = FundAppropriateRecordService;\r\nconst fundIncomeRecord = FundIncomeRecordService;\r\n\r\nconst fundProject = FundProjectService;\r\nconst fundProjectApply = FundProjectApplyService;\r\nconst fundProjectModifyApply = FundProjectModifyApplyService;\r\nconst fundProjectYearSummaryService = FundProjectYearSummaryService;\r\nconst fundProjectProgress = FundProjectProgressService;\r\nconst fundDonationOrder = FundDonationOrderService;\r\nconst fundProjectDonationRecord = FundProjectDonationRecordService;\r\nconst fundNonCashDonation = FundNonCashDonationService;\r\nconst fundAppropriateApply = FundAppropriateApplyService;\r\nconst fundManageFeeRecord = FundManageFeeRecordService;\r\nconst fundDonationMonthly = FundDonationMonthlyConfigService;\r\nconst cycleDonateConfig = CycleDonateConfigService;\r\n\r\n//activity\r\nconst activity = ActivityService;\r\nconst activityApply = ActivityApplyService;\r\nconst activitySignInRecord = ActivitySignInRecordService;\r\n\r\n//volunteer\r\nconst volunteer = VolunteerService;\r\nconst volunteerServiceHistory = VolunteerServiceHistoryService;\r\n\r\nconst userTask = UserTaskService;\r\nconst job = JobService;\r\nconst feedback = FeedbackService;\r\nconst feedbackReply = FeedbackReplyService;\r\nconst electronicInvoice = ElectronicInvoiceService;\r\nconst applicationPayment = ApplicationPaymentService;\r\nconst donatedAmountConfig = DonatedAmountConfigService;\r\n\r\nconst dashboard = DashbordService;\r\nconst tenantBankAccount = TenantBankAccountService\r\nconst merchant = MerchantService\r\nconst merchantBankAccount = MerchantBankAccountService\r\nconst dataPermissionScopeProvider = ScopeDataSourceService\r\nconst bankType = BankTypeService;\r\nconst bankName = BankNameService;\r\nconst collectWater = CollectWaterService;\r\n\r\nexport default {\r\n tokenAuth,\r\n auditFlow,\r\n album,\r\n auditNodePreDefine,\r\n account,\r\n cmsContent, cmsCategory, cmsAnchor, cmsFriendLink, swiper,\r\n organizationUnit, department,\r\n role,\r\n session,\r\n user,\r\n attachment,\r\n attachmentService,\r\n permissionDefinition,\r\n notifyTemplate,\r\n partnerInvite,\r\n enumService,\r\n guid,\r\n dataDictionary,\r\n capitalIncomeRecordFromOther,\r\n capitalIncomeRecordFromDonation,\r\n capitalExpenseRecord,\r\n internalMonthlyPlan,\r\n internalMonthlySummarize,\r\n internalPersonalYearEndSummary,\r\n externalProjectIntention,\r\n projectInvite,\r\n projectSeries,\r\n project,\r\n externalDueDiligenceRecord,\r\n externalProjectProcessMonitoringService,\r\n externalProjectProcessReport,\r\n externalMonthlyPlanService,\r\n externalMonthlySummarize,\r\n notifyRecord,\r\n externalProjectSummaryReport,\r\n province, city, area, town,\r\n externalProject,\r\n externalProjectCloseReport,\r\n internalProjectSummaryReports,\r\n internalProject,\r\n customFormService,\r\n partnerCapitalApply,\r\n beneficiary,\r\n projectBeneficiaryMapping,\r\n beneficiaryServiceRecord,\r\n bankReconciliation,\r\n internalProjectPhase,\r\n externalProjectPhase,\r\n internalProjectReport,\r\n externalProjectReport,\r\n externalProjectChangeApply,\r\n fund,\r\n fundApply,\r\n message,\r\n fundModifyApply,\r\n fundUser,\r\n fundProject,\r\n fundProjectApply,\r\n fundProjectModifyApply,\r\n fundProjectYearSummaryService,\r\n fundProjectProgress,\r\n fundDonationOrder,\r\n fundProjectDonationRecord,\r\n fundNonCashDonation,\r\n fundAppropriateApply,\r\n fundAccount,\r\n fundIncomeRecord,\r\n fundAppropriateRecord,\r\n fundManageFeeRecord,\r\n fundDonationMonthly,\r\n cycleDonateConfig,\r\n //activity\r\n activity,\r\n activityApply,\r\n activitySignInRecord,\r\n\r\n //volunteer\r\n volunteer,\r\n volunteerServiceHistory,\r\n\r\n userTask,\r\n job,\r\n feedback,\r\n feedbackReply,\r\n electronicInvoice,\r\n applicationPayment,\r\n donatedAmountConfig,\r\n\r\n dashboard,\r\n tenantBankAccount,\r\n merchant,\r\n merchantBankAccount,\r\n bankType,\r\n bankName,\r\n dataPermissionScopeProvider,\r\n collectWater\r\n}\r\n","import {Action, getModule, Module, Mutation, VuexModule} from 'vuex-module-decorators'\r\nimport {RouteConfig} from 'vue-router'\r\nimport store from '@/store'\r\nimport {constantRoutes} from '@/router'\r\nimport {PermissionDefinitionDto, PermissionDefinitionScope} from \"@/api/appService\";\r\nimport {createNgTree, INgNode} from \"@/utils/tree\";\r\nimport {getStore, setStore} from \"@/utils/storage\";\r\n\r\nexport interface IPermissionItem {\r\n displayOrder:number;\r\n name:string;\r\n displayName:string;\r\n children?:IPermissionItem[];\r\n icon?:string;\r\n url?:string;\r\n id:number\r\n}\r\n\r\n\r\n\r\n\r\nfunction filterPermission(permissions:string[],permissionDefinitions:INgNode[], scope:PermissionDefinitionScope){\r\n let res :IPermissionItem[] = [];\r\n permissionDefinitions.forEach(definition=>{\r\n if(!(definition.data.permissionDefinitionScopes?.some(s=>s == scope))??false){\r\n // don't do anything\r\n return;\r\n }\r\n if(definition.data.isHiddenForMenu){\r\n // don't do anything\r\n return;\r\n }\r\n\r\n\r\n let permissionItem:IPermissionItem | undefined;\r\n if(permissions.some(name=>name === definition.data.name)){\r\n permissionItem = {\r\n id:definition.id!,\r\n name:definition.data.name!,\r\n displayName:definition.data.displayName!,\r\n displayOrder:0,\r\n icon: definition.data.icon,\r\n children:[],\r\n url:definition.data.url\r\n };\r\n let children = definition.children;\r\n if(children && children.length){\r\n permissionItem.children = filterPermission(permissions,children,scope);\r\n }\r\n }\r\n\r\n if(permissionItem){\r\n res.push(permissionItem);\r\n }\r\n });\r\n\r\n return res;\r\n}\r\n\r\n\r\nexport interface IPermissionState {\r\n routes: RouteConfig[]\r\n dynamicRoutes: RouteConfig[]\r\n}\r\n\r\n// Create module later in your code (it will register itself automatically)\r\n// In the decorator we pass the store object into which module is injected\r\n// NOTE: When you set dynamic true, make sure you give module a name\r\n@Module({ dynamic:true, store, name: 'permission' })\r\nclass Permission extends VuexModule {\r\n\r\n public routes: RouteConfig[] = [];\r\n\r\n public dynamicRoutes: RouteConfig[] = [];\r\n\r\n public menus: IPermissionItem[] = getStore('permission') || [];\r\n\r\n\r\n @Mutation\r\n private SET_ROUTES(routes: RouteConfig[]) {\r\n this.dynamicRoutes = routes;\r\n this.routes = [...constantRoutes!, ...routes];\r\n }\r\n\r\n @Mutation\r\n private SET_MENUS(menus: IPermissionItem[]){\r\n this.menus = menus;\r\n setStore('permission',menus)\r\n }\r\n\r\n @Action\r\n public GenerateMenus(input: { permissions: string[], roles: string[], type: string, permissionDefinitions:PermissionDefinitionDto[] }) {\r\n if (input.permissions !== undefined) {\r\n let accessedMenus;\r\n const permissionTree = createNgTree(\r\n input.permissionDefinitions,\r\n 'parentId',\r\n 'id',\r\n null,\r\n 'children',\r\n '',\r\n false,\r\n 'id');\r\n\r\n let permissionScope:PermissionDefinitionScope;\r\n\r\n switch (input.type) {\r\n case 'Partner':\r\n permissionScope = PermissionDefinitionScope.Partner;\r\n break;\r\n case 'Foundation':\r\n permissionScope = PermissionDefinitionScope.Foundation;\r\n break;\r\n default:\r\n permissionScope = PermissionDefinitionScope.Foundation;\r\n break;\r\n\r\n }\r\n\r\n accessedMenus = filterPermission(input.permissions!,permissionTree,permissionScope);\r\n this.SET_MENUS(accessedMenus)\r\n }\r\n }\r\n\r\n}\r\n\r\nexport const PermissionModule = getModule(Permission);\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#ffd04b\"};","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=55d9c49f&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=55d9c49f&lang=scss&scoped=true&\"","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/socialSecurityAssign/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/socialSecurityAssign/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/socialSecurityAssign/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/socialSecurityAssign/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/socialSecurityAssign/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/socialSecurityAssign/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/PaymentCategory/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/PaymentCategory/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/PaymentCategory/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/PaymentCategory/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/PaymentCategory/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/PaymentCategory/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import {VuexModule, Module, Action, Mutation, getModule} from 'vuex-module-decorators'\r\nimport {removeToken} from '@/utils/cookies'\r\nimport {AppModule} from './app'\r\nimport store from '@/store'\r\nimport api from '@/api/index'\r\nimport router, {asyncRouter} from '@/router/index'\r\n\r\nimport {getOu, setOu} from '@/utils/cookies'\r\n\r\nimport {RouteConfig} from 'vue-router'\r\nimport {PermissionModule} from './permission'\r\nimport {UserLoginInfoDto, OrganizationUnitDto, AuthenticateResultModel} from '@/api/appService'\r\nimport {setStore, getStore} from '@/utils/storage'\r\n\r\n// export interface IUserState {\r\n// token: string\r\n// name: string\r\n// avatar: string\r\n// introduction: string\r\n// roles: string[]\r\n// user: any\r\n// }\r\n\r\nfunction getPermissionDefinitions() {\r\n return api.permissionDefinition.getAll({sorting: 'displayOrder asc,id asc', maxResultCount: 65536});\r\n}\r\n\r\nlet storage = JSON.parse(window.localStorage.getItem('user') || window.sessionStorage.getItem('user') || '{}') as any\r\n\r\n@Module({dynamic: true, store, name: 'user'})\r\nclass User extends VuexModule {\r\n\r\n public token = storage.token\r\n public name = storage.name\r\n public avatar = storage.avatar\r\n public introduction = storage.introduction;\r\n public tenantId?: number = storage.tenantId || 2\r\n public roles: string[] = storage.roles || []\r\n public permissions: string[] = storage.permissions || []\r\n\r\n public ou?: OrganizationUnitDto = getStore(\"currentOrganization\") || {\r\n displayName: \"深圳市慈善会\",\r\n logoImageUrl: '/img/logo-square-2.png',\r\n };\r\n\r\n get ouId() {\r\n let ouid = this.ou?.id ?? getOu();\r\n return ouid;\r\n }\r\n\r\n get getOU() {\r\n return this.ou;\r\n }\r\n\r\n public user: UserLoginInfoDto = (storage.user as UserLoginInfoDto) || {\r\n id: -1,\r\n name: undefined,\r\n surname: undefined,\r\n userName: undefined,\r\n emailAddress: undefined\r\n };\r\n\r\n get getToken() {\r\n return this.token;\r\n }\r\n\r\n\r\n get getRoles() {\r\n return this.roles;\r\n }\r\n\r\n\r\n get getIsAdmin() {\r\n return this.roles.find(x => x === \"Admin\") ? true : false;\r\n }\r\n\r\n\r\n get getAvatar() {\r\n return '';\r\n }\r\n\r\n get getName() {\r\n return this.user.name;\r\n }\r\n\r\n get getFullName() {\r\n // this.user.surname as string +\r\n return this.user?.name as string;\r\n }\r\n\r\n get getPermissions() {\r\n return this.permissions;\r\n }\r\n\r\n @Mutation\r\n private SET_TOKEN(token: string) {\r\n console.log('SET_TOKEN');\r\n this.token = token\r\n User.serialize({token})\r\n }\r\n\r\n @Mutation\r\n private SET_ROLES(roles: string[] | string) {\r\n console.log('SET_ROLES');\r\n if (Array.isArray(roles))\r\n this.roles = [...roles]\r\n else\r\n this.roles = [roles];\r\n\r\n User.serialize({roles})\r\n\r\n }\r\n\r\n\r\n @Mutation\r\n private SET_PERMISSIONS(permissions: string[]) {\r\n this.permissions = permissions;\r\n User.serialize({permissions:this.permissions})\r\n }\r\n\r\n @Mutation\r\n private SET_USER(user: any) {\r\n console.log('SET_USER');\r\n this.user = user\r\n User.serialize({user})\r\n }\r\n\r\n @Mutation\r\n private SET_OU(ou?: OrganizationUnitDto) {\r\n this.ou = ou\r\n setStore(\"currentOrganization\", ou);\r\n setOu(ou?.id?.toString() ?? '');\r\n User.serialize(ou)\r\n }\r\n\r\n private static serialize(params:any){\r\n storage = {...storage,...params}\r\n window.localStorage.setItem('user',JSON.stringify(storage))\r\n window.sessionStorage.setItem('user',JSON.stringify(storage))\r\n }\r\n\r\n\r\n @Action\r\n public SetToken(token: string) {\r\n this.SET_TOKEN(token)\r\n }\r\n\r\n @Action\r\n public SetRoles(roles: string[] | string) {\r\n if (Array.isArray(roles))\r\n this.SET_ROLES(roles)\r\n else\r\n this.SET_ROLES([roles])\r\n }\r\n\r\n @Action\r\n public Logout() {\r\n this.SET_OU(undefined);\r\n this.SET_TOKEN('');\r\n this.SET_PERMISSIONS([]);\r\n this.SET_ROLES([]);\r\n this.SET_USER(undefined);\r\n }\r\n\r\n @Action\r\n public async login(loginResult: AuthenticateResultModel) {\r\n this.SET_TOKEN(loginResult.accessToken!)\r\n await getPermissionDefinitions().then(permissionResponse => {\r\n api.session.getCurrentLoginInformations().then((res) => {\r\n //console.log(res);\r\n this.SET_USER(res.user)\r\n AppModule.SetTenant(res.tenant!);\r\n\r\n\r\n if (res.permissions) {\r\n this.SET_PERMISSIONS(res.permissions)\r\n } else {\r\n this.SET_PERMISSIONS([])\r\n }\r\n\r\n\r\n let organizationUnitType = \"\";\r\n if (res.organizationUnit) {\r\n organizationUnitType = res.organizationUnit!.organizationType! + '';\r\n this.SET_OU(res.organizationUnit)\r\n } else {\r\n if (this.getIsAdmin) {\r\n organizationUnitType = \"Foundation\"\r\n }\r\n }\r\n PermissionModule.GenerateMenus({\r\n permissions: res.permissions!,\r\n roles: [],\r\n type: organizationUnitType,\r\n permissionDefinitions: permissionResponse.items!\r\n });\r\n\r\n });\r\n });\r\n\r\n }\r\n\r\n\r\n @Action\r\n public ResetToken() {\r\n removeToken()\r\n this.SET_TOKEN('')\r\n this.SET_ROLES([])\r\n }\r\n\r\n @Action\r\n public GetUserInfo(roles: string[]) {\r\n getPermissionDefinitions().then(permissionResponse => {\r\n api.session.getCurrentLoginInformations().then((res) => {\r\n //console.log(res);\r\n store.commit('SET_USER', res.user);\r\n\r\n AppModule.SetTenant(res.tenant!);\r\n\r\n\r\n if (res.permissions) {\r\n store.commit('SET_PERMISSIONS', res.permissions);\r\n }\r\n\r\n\r\n let organizationUnitType = \"\";\r\n if (res.organizationUnit) {\r\n organizationUnitType = res.organizationUnit!.organizationType! + '';\r\n store.commit('SET_OU', res.organizationUnit)\r\n } else {\r\n if (this.getIsAdmin) {\r\n organizationUnitType = \"Foundation\"\r\n }\r\n }\r\n PermissionModule.GenerateMenus({\r\n permissions: res.permissions!,\r\n roles: roles,\r\n type: organizationUnitType,\r\n permissionDefinitions: permissionResponse.items!\r\n });\r\n\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n @Action\r\n public Set_Ou(ou: OrganizationUnitDto) {\r\n this.SET_OU(ou);\r\n setStore(\"currentOrganization\", ou);\r\n getPermissionDefinitions().then(permissionResponse => {\r\n PermissionModule.GenerateMenus({\r\n permissions: this.permissions!,\r\n roles: this.roles,\r\n type: ou.organizationType! + '',\r\n permissionDefinitions: permissionResponse.items!\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport const UserModule = getModule(User)\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#ffd04b\"};","import request from '../../utils/request'\r\n\r\nexport default {\r\n isTenantAvailable: data => request({\r\n url: '/api/services/app/Account/IsTenantAvailable',\r\n method: 'post',\r\n data: data\r\n }),\r\n register: data => request({\r\n url: '/api/services/app/Account/Register',\r\n method: 'post',\r\n data: data\r\n })\r\n\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=1&id=02c3c202&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=1&id=02c3c202&lang=scss&scoped=true&\"","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/payrollOfPartner/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/payrollOfPartner/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/payrollOfPartner/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/payrollOfPartner/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/payrollOfPartner/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/payrollOfPartner/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=e7209e14&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=e7209e14&lang=scss&scoped=true&\"","export default {\r\n route: {\r\n dashboard: 'Dashboard',\r\n documentation: 'Documentation',\r\n guide: 'Guide',\r\n permission: 'Permission',\r\n pagePermission: 'Page Permission',\r\n rolePermission: 'Role Permission',\r\n directivePermission: 'Directive Permission',\r\n icons: 'Icons',\r\n components: 'Components',\r\n tinymce: 'Tinymce',\r\n markdown: 'Markdown',\r\n jsonEditor: 'JSON Editor',\r\n splitPane: 'SplitPane',\r\n avatarUpload: 'Avatar Upload',\r\n dropzone: 'Dropzone',\r\n sticky: 'Sticky',\r\n countTo: 'Count To',\r\n componentMixin: 'Mixin',\r\n backToTop: 'Back To Top',\r\n draggableDialog: 'Draggable Dialog',\r\n draggableKanban: 'Draggable Kanban',\r\n draggableList: 'Draggable List',\r\n draggableSelect: 'Draggable Select',\r\n charts: 'Charts',\r\n barChart: 'Bar Chart',\r\n lineChart: 'Line Chart',\r\n mixedChart: 'Mixed Chart',\r\n example: 'Example',\r\n nested: 'Nested Routes',\r\n menu1: 'Menu 1',\r\n 'menu1-1': 'Menu 1-1',\r\n 'menu1-2': 'Menu 1-2',\r\n 'menu1-2-1': 'Menu 1-2-1',\r\n 'menu1-2-2': 'Menu 1-2-2',\r\n 'menu1-3': 'Menu 1-3',\r\n menu2: 'Menu 2',\r\n table: 'Table',\r\n dynamicTable: 'Dynamic Table',\r\n draggableTable: 'Draggable Table',\r\n inlineEditTable: 'Inline Edit Table',\r\n complexTable: 'Complex Table',\r\n tab: 'Tab',\r\n form: 'Form',\r\n createArticle: 'Create Article',\r\n editArticle: 'Edit Article',\r\n articleList: 'Article List',\r\n errorPages: 'Error Pages',\r\n page401: '401',\r\n page404: '404',\r\n errorLog: 'Error Log',\r\n excel: 'Excel',\r\n exportExcel: 'Export Excel',\r\n selectExcel: 'Export Selected',\r\n mergeHeader: 'Merge Header',\r\n uploadExcel: 'Upload Excel',\r\n zip: 'Zip',\r\n pdf: 'PDF',\r\n exportZip: 'Export Zip',\r\n theme: 'Theme',\r\n clipboard: 'Clipboard',\r\n i18n: 'I18n',\r\n externalLink: 'External Link',\r\n profile: 'Profile'\r\n },\r\n navbar: {\r\n logOut: 'Log Out',\r\n dashboard: 'Dashboard',\r\n github: 'Github',\r\n theme: 'Theme',\r\n size: 'Global Size',\r\n profile: 'Profile'\r\n },\r\n login: {\r\n title: 'Login Form',\r\n logIn: 'Login',\r\n username: 'Username',\r\n password: 'Password',\r\n any: 'any',\r\n thirdparty: 'Or connect with',\r\n thirdpartyTips: 'Can not be simulated on local, so please combine you own business simulation! ! !'\r\n },\r\n documentation: {\r\n documentation: 'Documentation',\r\n github: 'Github Repository'\r\n },\r\n permission: {\r\n createRole: 'New Role',\r\n editPermission: 'Edit',\r\n roles: 'Your roles',\r\n switchRoles: 'Switch roles',\r\n tips: 'In some cases, using v-permission will have no effect. For example: Element-UI el-tab or el-table-column and other scenes that dynamically render dom. You can only do this with v-if.',\r\n delete: 'Delete',\r\n confirm: 'Confirm',\r\n cancel: 'Cancel'\r\n },\r\n guide: {\r\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\r\n button: 'Show Guide'\r\n },\r\n components: {\r\n documentation: 'Documentation',\r\n tinymceTips: 'Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.',\r\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\r\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\r\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\r\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\r\n },\r\n table: {\r\n dynamicTips1: 'Fixed header, sorted by header order',\r\n dynamicTips2: 'Not fixed header, sorted by click order',\r\n dragTips1: 'The default order',\r\n dragTips2: 'The after dragging order',\r\n title: 'Title',\r\n importance: 'Importance',\r\n type: 'Type',\r\n remark: 'Remark',\r\n search: 'Search',\r\n add: 'Add',\r\n export: 'Export',\r\n reviewer: 'Reviewer',\r\n id: 'ID',\r\n date: 'Date',\r\n author: 'Author',\r\n readings: 'Readings',\r\n status: 'Status',\r\n actions: 'Actions',\r\n edit: 'Edit',\r\n publish: 'Publish',\r\n draft: 'Draft',\r\n delete: 'Delete',\r\n cancel: 'Cancel',\r\n confirm: 'Confirm'\r\n },\r\n example: {\r\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive\\'s \\'include\\' currently does not support caching based on routes, so now it\\'s cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or don\\'t use keep-alive\\'s \\'include\\' to cache all pages directly. See details'\r\n },\r\n errorLog: {\r\n tips: 'Please click the bug icon in the upper right corner',\r\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\r\n documentation: 'Document introduction'\r\n },\r\n excel: {\r\n export: 'Export',\r\n selectedExport: 'Export Selected Items',\r\n placeholder: 'Please enter the file name (default excel-list)'\r\n },\r\n zip: {\r\n export: 'Export',\r\n placeholder: 'Please enter the file name (default file)'\r\n },\r\n pdf: {\r\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\r\n },\r\n theme: {\r\n change: 'Change Theme',\r\n documentation: 'Theme documentation',\r\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\r\n },\r\n tagsView: {\r\n refresh: 'Refresh',\r\n close: 'Close',\r\n closeOthers: 'Close Others',\r\n closeAll: 'Close All'\r\n },\r\n settings: {\r\n title: 'Page style setting',\r\n theme: 'Theme Color',\r\n showTagsView: 'Open Tags-View',\r\n showSidebarLogo: 'Sidebar Logo',\r\n fixedHeader: 'Fixed Header',\r\n sidebarTextTheme: 'Sidebar Text Theme'\r\n }\r\n}\r\n","export default {\r\n route: {\r\n dashboard: '首页',\r\n documentation: '文档',\r\n guide: '引导页',\r\n permission: '权限测试页',\r\n rolePermission: '角色权限',\r\n pagePermission: '页面权限',\r\n directivePermission: '指令权限',\r\n icons: '图标',\r\n components: '组件',\r\n tinymce: '富文本编辑器',\r\n markdown: 'Markdown',\r\n jsonEditor: 'JSON 编辑器',\r\n splitPane: 'Splitpane',\r\n avatarUpload: '头像上传',\r\n dropzone: 'Dropzone',\r\n sticky: 'Sticky',\r\n countTo: 'Count To',\r\n componentMixin: '小组件',\r\n backToTop: '返回顶部',\r\n draggableDialog: '可拖拽对话框',\r\n draggableKanban: '可拖拽看板',\r\n draggableList: '可拖拽列表',\r\n draggableSelect: '可拖拽选择',\r\n charts: '图表',\r\n barChart: '柱状图表',\r\n lineChart: '折线图',\r\n mixedChart: '混合图表',\r\n example: '综合实例',\r\n nested: '路由嵌套',\r\n menu1: '菜单 1',\r\n 'menu1-1': '菜单 1-1',\r\n 'menu1-2': '菜单 1-2',\r\n 'menu1-2-1': '菜单 1-2-1',\r\n 'menu1-2-2': '菜单 1-2-2',\r\n 'menu1-3': '菜单 1-3',\r\n menu2: '菜单 2',\r\n table: '表格',\r\n dynamicTable: '动态表格',\r\n draggableTable: '可拖拽表格',\r\n inlineEditTable: '表格内编辑',\r\n complexTable: '综合表格',\r\n tab: '分栏',\r\n form: '表单',\r\n createArticle: '创建文章',\r\n editArticle: '编辑文章',\r\n articleList: '文章列表',\r\n errorPages: '错误页面',\r\n page401: '401',\r\n page404: '404',\r\n errorLog: '错误日志',\r\n excel: 'Excel',\r\n exportExcel: '导出 Excel',\r\n selectExcel: '导出 已选择项',\r\n mergeHeader: '导出 多级表头',\r\n uploadExcel: '上传 Excel',\r\n zip: 'Zip',\r\n pdf: 'PDF',\r\n exportZip: '导出 Zip',\r\n theme: '换肤',\r\n clipboard: '粘贴板',\r\n i18n: '国际化',\r\n externalLink: '外链',\r\n profile: '个人中心'\r\n },\r\n navbar: {\r\n logOut: '退出登录',\r\n dashboard: '首页',\r\n github: '项目地址',\r\n theme: '换肤',\r\n size: '布局大小',\r\n profile: '个人中心'\r\n },\r\n login: {\r\n title: '系统登录',\r\n logIn: '登录',\r\n username: '账号',\r\n password: '密码',\r\n any: '随便填',\r\n thirdparty: '第三方登录',\r\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\r\n },\r\n documentation: {\r\n documentation: '文档',\r\n github: 'Github 地址'\r\n },\r\n permission: {\r\n createRole: '新增角色',\r\n editPermission: '编辑权限',\r\n roles: '你的权限',\r\n switchRoles: '切换权限',\r\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。',\r\n delete: '删除',\r\n confirm: '确定',\r\n cancel: '取消'\r\n },\r\n guide: {\r\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\r\n button: '打开引导'\r\n },\r\n components: {\r\n documentation: '文档',\r\n tinymceTips: '富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见',\r\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\r\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\r\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\r\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\r\n },\r\n table: {\r\n dynamicTips1: '固定表头, 按照表头顺序排序',\r\n dynamicTips2: '不固定表头, 按照点击顺序排序',\r\n dragTips1: '默认顺序',\r\n dragTips2: '拖拽后顺序',\r\n title: '标题',\r\n importance: '重要性',\r\n type: '类型',\r\n remark: '点评',\r\n search: '搜索',\r\n add: '添加',\r\n export: '导出',\r\n reviewer: '审核人',\r\n id: '序号',\r\n date: '时间',\r\n author: '作者',\r\n readings: '阅读数',\r\n status: '状态',\r\n actions: '操作',\r\n edit: '编辑',\r\n publish: '发布',\r\n draft: '草稿',\r\n delete: '删除',\r\n cancel: '取 消',\r\n confirm: '确 定'\r\n },\r\n example: {\r\n warning: '创建和编辑页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基于 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见'\r\n },\r\n errorLog: {\r\n tips: '请点击右上角bug小图标',\r\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\r\n documentation: '文档介绍'\r\n },\r\n excel: {\r\n export: '导出',\r\n selectedExport: '导出已选择项',\r\n placeholder: '请输入文件名(默认excel-list)'\r\n },\r\n zip: {\r\n export: '导出',\r\n placeholder: '请输入文件名(默认file)'\r\n },\r\n pdf: {\r\n tips: '这里使用 window.print() 来实现下载pdf的功能'\r\n },\r\n theme: {\r\n change: '换肤',\r\n documentation: '换肤文档',\r\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\r\n },\r\n tagsView: {\r\n refresh: '刷新',\r\n close: '关闭',\r\n closeOthers: '关闭其它',\r\n closeAll: '关闭所有'\r\n },\r\n settings: {\r\n title: '系统布局配置',\r\n theme: '主题色',\r\n showTagsView: '显示 Tags-View',\r\n showSidebarLogo: '显示侧边栏 Logo',\r\n fixedHeader: '固定 Header',\r\n sidebarTextTheme: '侧边栏文字主题色'\r\n }\r\n}\r\n","export default {\r\n route: {\r\n dashboard: 'Panel de control',\r\n documentation: 'Documentación',\r\n guide: 'Guía',\r\n permission: 'Permisos',\r\n rolePermission: 'Permisos de rol',\r\n pagePermission: 'Permisos de la página',\r\n directivePermission: 'Permisos de la directiva',\r\n icons: 'Iconos',\r\n components: 'Componentes',\r\n tinymce: 'Tinymce',\r\n markdown: 'Markdown',\r\n jsonEditor: 'Editor JSON',\r\n splitPane: 'Panel dividido',\r\n avatarUpload: 'Subir avatar',\r\n dropzone: 'Subir ficheros',\r\n sticky: 'Sticky',\r\n countTo: 'Count To',\r\n componentMixin: 'Mixin',\r\n backToTop: 'Ir arriba',\r\n draggableDialog: 'Draggable Dialog',\r\n draggableKanban: 'Draggable Kanban',\r\n draggableList: 'Draggable List',\r\n draggableSelect: 'Draggable Select',\r\n charts: 'Gráficos',\r\n barChart: 'Bar Chart',\r\n lineChart: 'Gráfico de líneas',\r\n mixedChart: 'Mixed Chart',\r\n example: 'Ejemplo',\r\n nested: 'Rutas anidadass',\r\n menu1: 'Menu 1',\r\n 'menu1-1': 'Menu 1-1',\r\n 'menu1-2': 'Menu 1-2',\r\n 'menu1-2-1': 'Menu 1-2-1',\r\n 'menu1-2-2': 'Menu 1-2-2',\r\n 'menu1-3': 'Menu 1-3',\r\n menu2: 'Menu 2',\r\n table: 'Tabla',\r\n dynamicTable: 'Tabla dinámica',\r\n draggableTable: 'Arrastrar tabla',\r\n inlineEditTable: 'Editor',\r\n complexTable: 'Complex Table',\r\n tab: 'Pestaña',\r\n form: 'Formulario',\r\n createArticle: 'Crear artículo',\r\n editArticle: 'Editar artículo',\r\n articleList: 'Listado de artículos',\r\n errorPages: 'Páginas de error',\r\n page401: '401',\r\n page404: '404',\r\n errorLog: 'Registro de errores',\r\n excel: 'Excel',\r\n exportExcel: 'Exportar a Excel',\r\n selectExcel: 'Export seleccionado',\r\n mergeHeader: 'Merge Header',\r\n uploadExcel: 'Subir Excel',\r\n zip: 'Zip',\r\n pdf: 'PDF',\r\n exportZip: 'Exportar a Zip',\r\n theme: 'Tema',\r\n clipboard: 'Clipboard',\r\n i18n: 'I18n',\r\n externalLink: 'Enlace externo',\r\n profile: 'Profile'\r\n },\r\n navbar: {\r\n logOut: 'Salir',\r\n dashboard: 'Panel de control',\r\n github: 'Github',\r\n theme: 'Tema',\r\n size: 'Tamaño global',\r\n profile: 'Profile'\r\n },\r\n login: {\r\n title: 'Formulario de acceso',\r\n logIn: 'Acceso',\r\n username: 'Usuario',\r\n password: 'Contraseña',\r\n any: 'nada',\r\n thirdparty: 'Conectar con',\r\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\r\n },\r\n documentation: {\r\n documentation: 'Documentación',\r\n github: 'Repositorio Github'\r\n },\r\n permission: {\r\n createRole: 'Nuevo rol',\r\n editPermission: 'Permiso de edición',\r\n roles: 'Tus permisos',\r\n switchRoles: 'Cambiar permisos',\r\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.',\r\n delete: 'Borrar',\r\n confirm: 'Confirmar',\r\n cancel: 'Cancelar'\r\n },\r\n guide: {\r\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\r\n button: 'Ver guía'\r\n },\r\n components: {\r\n documentation: 'Documentación',\r\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\r\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\r\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\r\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\r\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\r\n },\r\n table: {\r\n dynamicTips1: 'Fixed header, sorted by header order',\r\n dynamicTips2: 'Not fixed header, sorted by click order',\r\n dragTips1: 'Orden por defecto',\r\n dragTips2: 'The after dragging order',\r\n title: 'Título',\r\n importance: 'Importancia',\r\n type: 'Tipo',\r\n remark: 'Remark',\r\n search: 'Buscar',\r\n add: 'Añadir',\r\n export: 'Exportar',\r\n reviewer: 'Reviewer',\r\n id: 'ID',\r\n date: 'Fecha',\r\n author: 'Autor',\r\n readings: 'Lector',\r\n status: 'Estado',\r\n actions: 'Acciones',\r\n edit: 'Editar',\r\n publish: 'Publicar',\r\n draft: 'Draft',\r\n delete: 'Eliminar',\r\n cancel: 'Cancelar',\r\n confirm: 'Confirmar'\r\n },\r\n example: {\r\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all pages directly. See details'\r\n },\r\n errorLog: {\r\n tips: 'Please click the bug icon in the upper right corner',\r\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\r\n documentation: 'Documento de introducción'\r\n },\r\n excel: {\r\n export: 'Exportar',\r\n selectedExport: 'Exportar seleccionados',\r\n placeholder: 'Por favor escribe un nombre de fichero'\r\n },\r\n zip: {\r\n export: 'Exportar',\r\n placeholder: 'Por favor escribe un nombre de fichero'\r\n },\r\n pdf: {\r\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\r\n },\r\n theme: {\r\n change: 'Cambiar tema',\r\n documentation: 'Documentación del tema',\r\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\r\n },\r\n tagsView: {\r\n refresh: 'Actualizar',\r\n close: 'Cerrar',\r\n closeOthers: 'Cerrar otros',\r\n closeAll: 'Cerrar todos'\r\n },\r\n settings: {\r\n title: 'Page style setting',\r\n theme: 'Theme Color',\r\n showTagsView: 'Show Tags-View',\r\n showSidebarLogo: 'Show Sidebar Logo',\r\n fixedHeader: 'Fixed Header',\r\n sidebarTextTheme: 'Sidebar Text Theme'\r\n }\r\n}\r\n","export default {\r\n route: {\r\n dashboard: 'トップ',\r\n documentation: 'ドキュメント',\r\n guide: 'ガイド',\r\n permission: '権限',\r\n rolePermission: '権限ロール',\r\n pagePermission: 'ページ権限',\r\n directivePermission: 'ディレクティブ権限',\r\n icons: 'アイコン',\r\n components: 'コンポーネント',\r\n tinymce: 'TinyMCE',\r\n markdown: 'Markdown',\r\n jsonEditor: 'JSON Editor',\r\n splitPane: 'パネル',\r\n avatarUpload: 'アバターアップロード',\r\n dropzone: 'Dropzone',\r\n sticky: 'Sticky',\r\n countTo: 'Count To',\r\n componentMixin: 'コンポーネントMixin',\r\n backToTop: 'Back To Top',\r\n draggableDialog: 'Draggable Dialog',\r\n draggableKanban: 'Draggable 看板',\r\n draggableList: 'Draggable List',\r\n draggableSelect: 'Draggable Select',\r\n charts: 'チャート',\r\n barChart: 'Barチャート',\r\n lineChart: 'Lineチャート',\r\n mixedChart: 'Mixedチャート',\r\n example: 'Example',\r\n nested: 'Nested Routes',\r\n menu1: 'メニュー1',\r\n 'menu1-1': 'メニュー 1-1',\r\n 'menu1-2': 'メニュー 1-2',\r\n 'menu1-2-1': 'メニュー 1-2-1',\r\n 'menu1-2-2': 'メニュー 1-2-2',\r\n 'menu1-3': 'メニュー 1-3',\r\n menu2: 'メニュー 2',\r\n table: 'Table',\r\n dynamicTable: '可変 Table',\r\n draggableTable: 'Draggable Table',\r\n inlineEditTable: 'Inline Edit Table',\r\n complexTable: 'Complex Table',\r\n tab: 'Tab',\r\n form: 'フォーム',\r\n createArticle: '投稿作成',\r\n editArticle: '投稿編集',\r\n articleList: '投稿リスト',\r\n errorPages: 'エラーページ',\r\n page401: '401',\r\n page404: '404',\r\n errorLog: 'エラーログ',\r\n excel: 'Excel',\r\n exportExcel: '一括エクスポート',\r\n selectExcel: '複数選択エクスポート',\r\n mergeHeader: 'ヘッダーマージ',\r\n uploadExcel: 'アップロード',\r\n zip: 'Zip',\r\n pdf: 'PDF',\r\n exportZip: 'Export Zip',\r\n theme: 'テーマ変更',\r\n clipboard: 'Clipboard',\r\n i18n: '多言語',\r\n externalLink: '外部リンク',\r\n profile: 'プロフィール'\r\n },\r\n navbar: {\r\n dashboard: 'トップ',\r\n github: 'GitHub',\r\n logOut: 'ログアウト',\r\n profile: 'プロフィール',\r\n theme: 'テーマ変更',\r\n size: '画面サイズ'\r\n },\r\n login: {\r\n title: 'ユーザログイン',\r\n logIn: 'ログイン',\r\n username: 'ユーザ名',\r\n password: 'パスワード',\r\n any: 'any',\r\n thirdparty: '外部IDでログイン',\r\n thirdpartyTips: 'ローカル環境ではログインできません。実装が必要です。'\r\n },\r\n documentation: {\r\n documentation: 'ドキュメント',\r\n github: 'Github Link'\r\n },\r\n permission: {\r\n createRole: 'ロール追加',\r\n editPermission: 'ロール変更',\r\n roles: 'ロール',\r\n switchRoles: 'ロール切替',\r\n tips: 'v-permissionは使えない時があります。例えば: Element-UI の el-tab、 el-table-column 及び他の dom。v-ifを使う必要があります。',\r\n delete: '削除',\r\n confirm: '確認',\r\n cancel: 'キャンセル'\r\n },\r\n guide: {\r\n description: 'ガイドは各機能の説明です。',\r\n button: 'ガイドを見る'\r\n },\r\n components: {\r\n documentation: 'ドキュメント',\r\n tinymceTips: 'tinymceは管理画面に重要な機能ですが、その同時に落とし穴がありあす。tinymceを使う道のりが大変でした。Tinymceを使う時に各自のプロジェクト状況で判断が必要です。ドキュメントはこちら',\r\n stickyTips: 'ページの指定位置へスクロールした場合、表示されます。',\r\n backToTopTips1: 'トップへスクロールが表示されます。',\r\n backToTopTips2: 'ボタンのスタイルはカスタマイズできます。例えば、show/hide、height、position。 またはElementのel-tooltipを使って、ツールチップを実装できます。',\r\n imageUploadTips: 'mockjsは使えないため、カスタマイズしています。公式の最新バージョンを使ってください。'\r\n },\r\n table: {\r\n dynamicTips1: '先頭は固定、最後に追加',\r\n dynamicTips2: '戦後に追加せず、指定列に追加',\r\n dragTips1: 'デフォルト順番',\r\n dragTips2: 'Drag後の順番',\r\n title: 'タイトル',\r\n importance: '重要',\r\n type: 'タイプ',\r\n remark: '評価',\r\n search: '検索',\r\n add: '追加',\r\n export: 'エクスポート',\r\n reviewer: 'レビュアー',\r\n id: '番号',\r\n date: '日時',\r\n author: '作成者',\r\n readings: '閲覧数',\r\n status: 'ステータス',\r\n actions: '操作',\r\n edit: '編集',\r\n publish: '公開',\r\n draft: '下書き',\r\n delete: 'キャンセル',\r\n cancel: 'キャンセル',\r\n confirm: '確認'\r\n },\r\n example: {\r\n warning: '新規作成と編集画面は keep-alive を使えないです。keep-alive の include はrouteのキャッシュは使えないです。そのため、component name を使ってキャッシュさせるようにします。このようなキャッシュ機能を作りたい場合,localStorageを使う手があります。もしくは keep-alive の includeを使って、全ページキャッシュする方法はあります。'\r\n },\r\n errorLog: {\r\n tips: '右上のbugアイコンをクリックしてください。',\r\n description: '管理画面はspaを使う場合が多い、ユーザ体現向上はできますが、想定外エラーが発生する場合があります。Vueはそのエラーハンドリング機能を提供し、エラーレポートができます。',\r\n documentation: 'ドキュメント'\r\n },\r\n excel: {\r\n export: 'エクスポート',\r\n selectedExport: 'エクスポート対象を選択してください。',\r\n placeholder: 'ファイル名を入力してください。'\r\n },\r\n zip: {\r\n export: 'エクスポート',\r\n placeholder: 'ファイル名を入力してください。'\r\n },\r\n pdf: {\r\n tips: 'window.print() を使ってPDFダウンロードしています。'\r\n },\r\n theme: {\r\n change: 'テーマ切替',\r\n documentation: 'ドキュメント',\r\n tips: 'Tips: テーマの切り替え方法はnavbarのtheme-pickと異なります、使い方はドキュメントを確認してください。'\r\n },\r\n tagsView: {\r\n refresh: '更新',\r\n close: '閉じる',\r\n closeOthers: 'その他閉じる',\r\n closeAll: 'すべて閉じる'\r\n },\r\n settings: {\r\n title: 'システムテーマ',\r\n theme: 'テーマ色',\r\n showTagsView: 'Tags-View 開く',\r\n showSidebarLogo: 'Show Sidebar Logo',\r\n fixedHeader: 'Fixed Header',\r\n sidebarTextTheme: 'Sidebar Text Theme'\r\n }\r\n}\r\n","import Vue from 'vue'\r\nimport VueI18n from 'vue-i18n'\r\n\r\nimport { getLanguage } from '@/utils/cookies'\r\n\r\nimport elementEnLocale from 'element-ui/lib/locale/lang/en'\r\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'\r\nimport elementEsLocale from 'element-ui/lib/locale/lang/es'\r\nimport elementJaLocale from 'element-ui/lib/locale/lang/ja'\r\n\r\n// User defined lang\r\nimport enLocale from './en'\r\nimport zhLocale from './zh'\r\nimport esLocale from './es'\r\nimport jaLocale from './ja'\r\n\r\nVue.use(VueI18n)\r\n\r\nconst messages = {\r\n en: {\r\n ...enLocale,\r\n ...elementEnLocale\r\n },\r\n zh: {\r\n ...zhLocale,\r\n ...elementZhLocale\r\n },\r\n es: {\r\n ...esLocale,\r\n ...elementEsLocale\r\n },\r\n ja: {\r\n ...jaLocale,\r\n ...elementJaLocale\r\n }\r\n}\r\n\r\nexport const getLocale = () => {\r\n const cookieLanguage = getLanguage()\r\n if (cookieLanguage) {\r\n return cookieLanguage\r\n }\r\n\r\n const language = navigator.language.toLowerCase()\r\n const locales = Object.keys(messages)\r\n for (const locale of locales) {\r\n if (language.indexOf(locale) > -1) {\r\n return locale\r\n }\r\n }\r\n\r\n // Default language is english\r\n return 'en'\r\n}\r\n\r\nconst i18n = new VueI18n({\r\n locale: getLocale(),\r\n messages\r\n})\r\n\r\nexport default i18n\r\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\r\nimport { getSidebarStatus, setSidebarStatus, getSize } from '@/utils/cookies'\r\nimport store from '@/store'\r\nimport { getLocale } from '@/lang'\r\nimport { TenantLoginInfoDto } from '@/api/appService'\r\n\r\nexport enum DeviceType {\r\n Mobile = 0,\r\n Desktop = 1,\r\n}\r\n\r\n// export interface IAppState {\r\n// device: DeviceType\r\n// sidebar: {\r\n// opened: boolean\r\n// withoutAnimation: boolean\r\n// },\r\n// name: string,\r\n// version: string,\r\n// tenant: ITenantLoginInfoDto,\r\n// tenantId: number | string | undefined,\r\n// routers: RouteConfig[] | undefined\r\n// }\r\n\r\n@Module({ dynamic:true, store, name: 'app' })\r\nclass App extends VuexModule {\r\n public sidebar = {\r\n opened: getSidebarStatus() !== 'closed',\r\n withoutAnimation: false\r\n }\r\n device = DeviceType.Desktop\r\n public language = getLocale()\r\n public size = getSize() || 'medium'\r\n\r\n public name = ''\r\n public version = ''\r\n public tenant: TenantLoginInfoDto | undefined = undefined\r\n tenantId: any = null;\r\n\r\n get getTenantId() {\r\n return this.tenantId;\r\n }\r\n\r\n @Mutation\r\n private TOGGLE_SIDEBAR(withoutAnimation: boolean) {\r\n this.sidebar.opened = !this.sidebar.opened\r\n this.sidebar.withoutAnimation = withoutAnimation\r\n if (this.sidebar.opened) {\r\n setSidebarStatus('opened')\r\n } else {\r\n setSidebarStatus('closed')\r\n }\r\n }\r\n\r\n\r\n @Mutation\r\n private CLOSE_SIDEBAR(withoutAnimation: boolean) {\r\n this.sidebar.opened = false\r\n this.sidebar.withoutAnimation = withoutAnimation\r\n setSidebarStatus('closed')\r\n }\r\n\r\n @Mutation\r\n private TOGGLE_DEVICE(device: DeviceType) {\r\n this.device = device\r\n }\r\n\r\n @Mutation\r\n private SETTENANTID(tenantId: number) {\r\n console.log(\"SETTENANTID\", tenantId);\r\n\r\n this.tenantId = tenantId;\r\n }\r\n\r\n @Mutation\r\n private SETTENANT(tenant: TenantLoginInfoDto | undefined) {\r\n this.tenant = tenant\r\n }\r\n\r\n @Action\r\n public ToggleSideBar(withoutAnimation: boolean) {\r\n this.TOGGLE_SIDEBAR(withoutAnimation)\r\n }\r\n\r\n @Action\r\n public CloseSideBar(withoutAnimation: boolean) {\r\n this.CLOSE_SIDEBAR(withoutAnimation)\r\n }\r\n\r\n @Action\r\n public ToggleDevice(device: DeviceType) {\r\n this.TOGGLE_DEVICE(device)\r\n }\r\n\r\n @Action\r\n public SetTenantId(tenantId: number) {\r\n this.SETTENANTID(tenantId);\r\n }\r\n\r\n @Action\r\n public SetTenant(tenant: TenantLoginInfoDto | undefined) {\r\n this.SETTENANT(tenant);\r\n }\r\n}\r\n\r\nexport const AppModule = getModule(App)\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.classObj.mobile && _vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_c('sidebar',{staticClass:\"sidebar-container\"}),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('router-view')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator'\r\n\r\n@Component({\r\n name: 'AppMain'\r\n})\r\nexport default class extends Vue {}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=62f1d884&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=62f1d884&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62f1d884\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"id\":\"hamburger-container\",\"is-active\":_vm.sidebar.opened},on:{\"toggleClick\":_vm.toggleSideBar}}),_c('breadcrumb',{staticClass:\"breadcrumb-container\",attrs:{\"id\":\"breadcrumb-container\"}}),_c('div',{staticClass:\"right-menu\"},[_c('div',{staticClass:\"user-name\"},[_vm._v(_vm._s(_vm.userName))]),_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[(_vm.avatar)?_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar}}):_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.defineImg}}),_c('i',{staticClass:\"el-icon-caret-bottom\"})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('router-link',{attrs:{\"to\":\"/welcome\"}},[_c('el-dropdown-item',[_vm._v(\" 回首页 \")])],1),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.changePassword($event)}}},[_c('span',{staticStyle:{\"display\":\"block\"}},[_vm._v(\"修改密码\")])]),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.logout($event)}}},[_c('span',{staticStyle:{\"display\":\"block\"}},[_vm._v(\"退出登录\")])])],1)],1),_c('change-password',{ref:\"changePasswordForm\"})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-breadcrumb',{staticClass:\"app-breadcrumb\",attrs:{\"separator\":\"/\"}},[_c('transition-group',{attrs:{\"name\":\"breadcrumb\"}},_vm._l((_vm.breadcrumbs),function(item,index){return _c('el-breadcrumb-item',{key:item.path},[(item.redirect === 'noredirect' || index === _vm.breadcrumbs.length-1)?_c('span',{staticClass:\"no-redirect\"},[_vm._v(_vm._s(item.meta.title))]):_c('a',[_vm._v(_vm._s(item.meta.title))])])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { compile } from \"path-to-regexp\";\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { RouteRecord, Route } from \"vue-router\";\r\n\r\n@Component({\r\n name: \"Breadcrumb\",\r\n})\r\nexport default class extends Vue {\r\n private breadcrumbs: RouteRecord[] = [];\r\n\r\n @Watch(\"$route\")\r\n private onRouteChange(route: Route) {\r\n // if you go to the redirect page, do not update the breadcrumbs\r\n if (route.path.startsWith(\"/redirect/\")) {\r\n return;\r\n }\r\n this.getBreadcrumb();\r\n }\r\n\r\n created() {\r\n this.getBreadcrumb();\r\n }\r\n\r\n private getBreadcrumb() {\r\n let matched = (this as any).$route.matched.filter(\r\n (item: RouteRecord) => item.meta && (item.meta as any).title\r\n );\r\n const first = matched[0];\r\n // if (!this.isDashboard(first)) {\r\n // const dashboardRoute = {\r\n // path: \"/dashboard\",\r\n // meta: {\r\n // title: \"Dashboard\",\r\n // },\r\n // };\r\n //\r\n // matched = [dashboardRoute].concat(matched);\r\n // }\r\n this.breadcrumbs = matched.filter((item: RouteRecord) => {\r\n return (\r\n item.meta &&\r\n (item.meta as any).title &&\r\n (item.meta as any).breadcrumb !== false\r\n );\r\n });\r\n }\r\n\r\n private isDashboard(route: RouteRecord) {\r\n const name = route && route.meta && (route.meta as any).title;\r\n return name === \"Dashboard\";\r\n }\r\n\r\n private pathCompile(path: string) {\r\n // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561\r\n const { params } = (this as any).$route;\r\n const toPath = compile(path);\r\n return toPath(params);\r\n }\r\n\r\n private handleLink(item: any) {\r\n const { redirect, path } = item;\r\n if (redirect) {\r\n this.$router.push(redirect);\r\n return;\r\n }\r\n this.$router.push(this.pathCompile(path));\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=55d9c49f&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=55d9c49f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"55d9c49f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[{'is-active': _vm.isActive}],on:{\"click\":_vm.toggleClick}},[_c('svg-icon',{attrs:{\"name\":\"hamburger\",\"width\":\"20\",\"height\":\"20\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator'\r\n\r\n@Component({\r\n name: 'Hamburger'\r\n})\r\nexport default class extends Vue {\r\n @Prop({ default: false }) private isActive!: boolean\r\n\r\n private toggleClick() {\r\n this.$emit('toggleClick')\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=e7209e14&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=e7209e14&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e7209e14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"title\":\"修改密码\",\"visible\":_vm.show,\"close-on-click-modal\":false},on:{\"update:visible\":function($event){_vm.show=$event},\"close\":_vm.cancel}},[_c('el-form',{ref:\"dataForm\",attrs:{\"rules\":_vm.ruleRule,\"model\":_vm.form,\"label-position\":\"top\"}},[_c('el-form-item',{attrs:{\"label\":\"当前密码\",\"prop\":\"currentPassword\"}},[_c('el-input',{model:{value:(_vm.form.currentPassword),callback:function ($$v) {_vm.$set(_vm.form, \"currentPassword\", $$v)},expression:\"form.currentPassword\"}})],1),_c('el-form-item',{attrs:{\"label\":\"新密码\",\"prop\":\"newPassword\"}},[_c('el-input',{model:{value:(_vm.form.newPassword),callback:function ($$v) {_vm.$set(_vm.form, \"newPassword\", $$v)},expression:\"form.newPassword\"}})],1)],1),_c('el-button',{attrs:{\"type\":\"default\"},on:{\"click\":_vm.cancel}},[_vm._v(\"取消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"确认\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {\r\n Component,\r\n Vue,\r\n Inject,\r\n Prop,\r\n Watch,\r\n Ref\r\n} from \"vue-property-decorator\";\r\n\r\nimport api from \"@/api\";\r\nimport { ChangePasswordDto } from \"@/api/appService\";\r\nimport { createNgTree, rebuildKeys, getKeys } from \"@/utils/tree\";\r\nimport { ElForm } from \"element-ui/types/form\";\r\n\r\n@Component({\r\n name: \"ChangePassword\"\r\n})\r\nexport default class ChangePassword extends Vue {\r\n @Ref() readonly dataForm!: ElForm;\r\n\r\n defaultData: ChangePasswordDto = {\r\n currentPassword: undefined,\r\n newPassword: undefined\r\n };\r\n\r\n userId!: number;\r\n show = false;\r\n form: ChangePasswordDto = { ...this.defaultData };\r\n cancel() {\r\n this.show = false;\r\n this.form = { ...this.defaultData };\r\n }\r\n\r\n async save() {\r\n (this.$refs.dataForm as any).validate(async (valid: boolean) => {\r\n if (valid) {\r\n await api.user.changePassword({\r\n body: this.form\r\n });\r\n this.show = false;\r\n this.$message.success(\"更新成功\");\r\n }\r\n });\r\n }\r\n\r\n ruleRule = {\r\n currentPassword: [\r\n {\r\n required: true,\r\n message: \"请输入当前密码\",\r\n trigger: \"blur\"\r\n }\r\n ],\r\n newPassword: [\r\n {\r\n required: true,\r\n message: \"请输入新密码\",\r\n trigger: \"blur\"\r\n }\r\n ]\r\n };\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changePassword.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./changePassword.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./changePassword.vue?vue&type=template&id=07c55a84&\"\nimport script from \"./changePassword.vue?vue&type=script&lang=ts&\"\nexport * from \"./changePassword.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { AppModule } from \"@/store/modules/app\";\r\nimport { UserModule } from \"@/store/modules/user\";\r\nimport Breadcrumb from \"@/components/Breadcrumb/index.vue\";\r\nimport Hamburger from \"@/components/Hamburger/index.vue\";\r\n\r\n\r\nimport { removeOu } from \"../../../utils/cookies\";\r\nimport ChangePassword from \"@/views/ou/user/changePassword.vue\";\r\n\r\n@Component({\r\n name: \"Navbar\",\r\n components: {\r\n Breadcrumb,\r\n Hamburger,\r\n ChangePassword\r\n }\r\n})\r\nexport default class extends Vue {\r\n get sidebar() {\r\n return AppModule.sidebar;\r\n }\r\n\r\n get device() {\r\n return AppModule.device.toString();\r\n }\r\n\r\n get avatar() {\r\n return UserModule.getAvatar;\r\n }\r\n\r\n get userName() {\r\n return UserModule.getFullName;\r\n }\r\n\r\n private toggleSideBar() {\r\n AppModule.ToggleSideBar(false);\r\n }\r\n\r\n async logout() {\r\n // await UserModule.LogOut()\r\n await removeOu();\r\n UserModule.Logout();\r\n this.$router.push({name:'login'})\r\n // this.$router.push(`/login?redirect=${this.$route.fullPath}`)\r\n }\r\n\r\n defineImg = require('@/assets/images/default-header.png')\r\n\r\n private async changePassword() {\r\n (this.$refs.changePasswordForm as any).show = true;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=703043ea&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=703043ea&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"703043ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('logo',{attrs:{\"collapse\":_vm.isCollapse}}),_c('el-menu',{attrs:{\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"unique-opened\":true,\"collapse-transition\":true,\"mode\":\"vertical\"}},_vm._l((_vm.menus),function(menu){return _c('sidebar-item',{key:menu.id,attrs:{\"item\":menu,\"base-path\":menu.url,\"is-collapse\":_vm.isCollapse}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.isCollapse ? 'simple-mode' : 'full-mode', {'first-level': _vm.isFirstLevel}]},[(_vm.onlyItem)?[_c('sidebar-item-link',{attrs:{\"to\":_vm.onlyItem.url}},[_c('el-menu-item',{class:{'submenu-title-noDropdown': _vm.isFirstLevel},attrs:{\"index\":(_vm.onlyItem.id).toString()}},[(_vm.onlyItem.icon)?_c('svg-icon',{attrs:{\"name\":_vm.onlyItem.icon}}):_vm._e(),(_vm.onlyItem.displayName)?_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.onlyItem.displayName))]):_vm._e()],1)],1)]:_c('el-submenu',{attrs:{\"index\":(_vm.item.id).toString(),\"popper-append-to-body\":\"\"}},[_c('template',{slot:\"title\"},[(_vm.item.icon)?_c('svg-icon',{attrs:{\"name\":_vm.item.icon}}):_vm._e(),_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.item.displayName))])],1),(_vm.item.children)?_vm._l((_vm.item.children),function(child){return _c('sidebar-item',{key:child.id,staticClass:\"nest-menu\",attrs:{\"item\":child,\"is-collapse\":_vm.isCollapse,\"is-first-level\":false,\"base-path\":child.url}})}):_vm._e()],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isExternal(_vm.to))?_c('a',{attrs:{\"href\":_vm.to,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._t(\"default\")],2):_c('router-link',{attrs:{\"to\":_vm.to}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { isExternal } from \"@/utils/validate\";\r\n\r\n@Component({\r\n name: \"SidebarItemLink\"\r\n})\r\nexport default class extends Vue {\r\n @Prop({ required: true }) private to!: string;\r\n\r\n private isExternal = isExternal;\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItemLink.vue?vue&type=template&id=1bd09d97&\"\nimport script from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport path from 'path'\r\nimport { Component, Prop, Vue } from 'vue-property-decorator'\r\nimport { Route, RouteConfig } from 'vue-router'\r\nimport { isExternal } from '@/utils/validate'\r\nimport SidebarItemLink from './SidebarItemLink.vue'\r\nimport {IPermissionItem} from \"@/store/modules/permission\";\r\n\r\n@Component({\r\n // Set 'name' here to prevent uglifyjs from causing recursive component not work\r\n // See https://medium.com/haiiro-io/element-component-name-with-vue-class-component-f3b435656561 for detail\r\n name: 'SidebarItem',\r\n components: {\r\n SidebarItemLink\r\n }\r\n})\r\nexport default class extends Vue {\r\n @Prop({ required: true }) private item!: IPermissionItem;\r\n @Prop({ default: false }) private isCollapse!: boolean;\r\n @Prop({ default: true }) private isFirstLevel!: boolean;\r\n @Prop({ default: '' }) private basePath!: string;\r\n\r\n get showingChildNumber() {\r\n return this.item.children?.length??0;\r\n }\r\n\r\n get onlyItem(){\r\n if(this.item.children && this.item.children.length){\r\n return null;\r\n } else {\r\n return this.item;\r\n }\r\n }\r\n\r\n get theOnlyOneChild() {\r\n if (this.showingChildNumber > 1) {\r\n return null\r\n }\r\n\r\n if(this.item.children && this.item.children.length){\r\n return this.item.children![0];\r\n }\r\n\r\n\r\n // If there is no children, return itself with path removed,\r\n // because this.basePath already conatins item's path information\r\n return { ...this.item }\r\n }\r\n\r\n private resolvePath(routePath: string) {\r\n if (isExternal(routePath)) {\r\n return routePath\r\n }\r\n if (isExternal(this.basePath)) {\r\n return this.basePath\r\n }\r\n return path.resolve(this.basePath, routePath??'')\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=02c3c202&scoped=true&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarItem.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./SidebarItem.vue?vue&type=style&index=1&id=02c3c202&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02c3c202\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar-logo-container\",class:{'collapse':_vm.collapse}},[_c('transition',{attrs:{\"name\":\"sidebarLogoFade\"}},[(_vm.collapse)?_c('router-link',{key:\"collapse\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/welcome\"}},[(_vm.logo)?_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":_vm.logo}}):_c('h1',{staticClass:\"sidebar-title\"},[_vm._v(_vm._s(_vm.title)+\" \")])]):_c('router-link',{key:\"expand\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/welcome\"}},[(_vm.logo)?_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":_vm.logo}}):_vm._e(),_c('h1',{staticClass:\"sidebar-title\"},[_vm._v(_vm._s(_vm.title)+\" \")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {Component, Vue, Inject, Prop, Watch} from \"vue-property-decorator\";\r\nimport api from \"@/api\";\r\n\r\nimport {UserModule} from \"@/store/modules/user\"\r\nimport {AppModule} from '../../../store/modules/app';\r\n\r\n@Component({\r\n name: \"SidebarLogo\"\r\n})\r\nexport default class SidebarLogo extends Vue {\r\n get collapse() {\r\n return !AppModule.sidebar.opened\r\n }\r\n\r\n get title() {\r\n if (UserModule.ou) {\r\n return UserModule.ou!.displayName\r\n } else {\r\n return '深圳市慈善会'\r\n }\r\n\r\n }\r\n\r\n get logo() {\r\n return UserModule.ou?.logoImageUrl??'';\r\n }\r\n\r\n created() {\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./logo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./logo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./logo.vue?vue&type=template&id=2eac6bd6&scoped=true&\"\nimport script from \"./logo.vue?vue&type=script&lang=ts&\"\nexport * from \"./logo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./logo.vue?vue&type=style&index=0&id=2eac6bd6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2eac6bd6\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { AppModule } from \"@/store/modules/app\";\r\nimport SidebarItem from \"./SidebarItem.vue\";\r\nimport variables from \"@/styles/_variables.scss\";\r\nimport { UserModule } from \"../../../store/modules/user\";\r\nimport { PermissionModule } from \"@/store/modules/permission\";\r\nimport Logo from \"./logo.vue\";\r\n\r\n@Component({\r\n name: \"SideBar\",\r\n components: {\r\n SidebarItem,\r\n Logo\r\n }\r\n})\r\nexport default class extends Vue {\r\n get sidebar() {\r\n return AppModule.sidebar;\r\n }\r\n\r\n get menus() {\r\n let menus = PermissionModule.menus;\r\n return menus;\r\n }\r\n\r\n get variables() {\r\n return variables;\r\n }\r\n\r\n get isCollapse() {\r\n return !this.sidebar.opened;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=c707a1c4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=c707a1c4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c707a1c4\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Watch } from 'vue-property-decorator'\r\nimport { AppModule, DeviceType } from '@/store/modules/app'\r\n\r\nconst WIDTH = 992 // refer to Bootstrap's responsive design\r\n\r\n@Component({\r\n name: 'ResizeMixin'\r\n})\r\nexport default class extends Vue {\r\n get device() {\r\n return AppModule.device\r\n }\r\n\r\n get sidebar() {\r\n return AppModule.sidebar\r\n }\r\n\r\n @Watch('$route')\r\n private onRouteChange() {\r\n if (this.device === DeviceType.Mobile && this.sidebar.opened) {\r\n AppModule.CloseSideBar(false)\r\n }\r\n }\r\n\r\n beforeMount() {\r\n window.addEventListener('resize', this.resizeHandler)\r\n }\r\n\r\n mounted() {\r\n const isMobile = this.isMobile()\r\n if (isMobile) {\r\n AppModule.ToggleDevice(DeviceType.Mobile)\r\n AppModule.CloseSideBar(true)\r\n }\r\n }\r\n\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.resizeHandler)\r\n }\r\n\r\n private isMobile() {\r\n const rect = document.body.getBoundingClientRect()\r\n return rect.width - 1 < WIDTH\r\n }\r\n\r\n private resizeHandler() {\r\n if (!document.hidden) {\r\n const isMobile = this.isMobile()\r\n AppModule.ToggleDevice(isMobile ? DeviceType.Mobile : DeviceType.Desktop)\r\n if (isMobile) {\r\n AppModule.CloseSideBar(true)\r\n }\r\n }\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component } from 'vue-property-decorator'\r\nimport { mixins } from 'vue-class-component'\r\nimport { DeviceType, AppModule } from '@/store/modules/app'\r\nimport { AppMain, Navbar, Sidebar } from './components'\r\nimport ResizeMixin from './mixin/resize'\r\n\r\n@Component({\r\n name: 'Layout',\r\n components: {\r\n AppMain,\r\n Navbar,\r\n Sidebar\r\n }\r\n})\r\nexport default class extends mixins(ResizeMixin) {\r\n get classObj() {\r\n return {\r\n hideSidebar: !this.sidebar.opened,\r\n openSidebar: this.sidebar.opened,\r\n withoutAnimation: this.sidebar.withoutAnimation,\r\n mobile: this.device === DeviceType.Mobile\r\n }\r\n }\r\n\r\n private handleClickOutside() {\r\n AppModule.CloseSideBar(false)\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=dd50c8d2&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=dd50c8d2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd50c8d2\",\n null\n \n)\n\nexport default component.exports","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst adminRouter: RouteConfig[] = [\r\n {\r\n path: '/admin',\r\n component: Layout,\r\n name: 'admin',\r\n redirect: '',\r\n meta: {\r\n title: '系统设置'\r\n },\r\n children: [\r\n {\r\n path: 'dataDictionaries',\r\n name: 'dataDictionaries',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/admin/dataDictionaries/list.vue'),\r\n meta: {\r\n title: '数据字典'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\nexport default adminRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst cmsRouter: RouteConfig[] = [\r\n {\r\n path: '/cms',\r\n component: Layout,\r\n name: 'cms',\r\n redirect: '',\r\n meta: {\r\n title: '内容管理'\r\n },\r\n children: [\r\n {\r\n path: 'categories',\r\n name: 'categories',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/category/index.vue'),\r\n meta: {\r\n title: '栏目管理'\r\n }\r\n },\r\n {\r\n path: 'category-create/:parentId',\r\n name: 'category-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/category/edit.vue'),\r\n meta: {\r\n title: '新建栏目'\r\n }\r\n },\r\n {\r\n path: 'category-edit/:id',\r\n name: 'category-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/category/edit.vue'),\r\n meta: {\r\n title: '编辑栏目'\r\n }\r\n },\r\n {\r\n path: 'content-list/:fundId/:fundProjectId',\r\n name: 'content-list-other',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/list.vue'),\r\n meta: {\r\n title: '内容管理'\r\n }\r\n },\r\n {\r\n path: 'content-list',\r\n name: 'content-list',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/list.vue'),\r\n meta: {\r\n title: '内容管理'\r\n }\r\n },\r\n {\r\n path: 'content-create/:fundId/:fundProjectId',\r\n name: 'content-create-other',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/edit.vue'),\r\n meta: {\r\n title: '新增内容'\r\n }\r\n },\r\n {\r\n path: 'content-create',\r\n name: 'content-create',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/edit.vue'),\r\n meta: {\r\n title: '新增内容'\r\n }\r\n },\r\n {\r\n path: 'content-edit/:id',\r\n name: 'content-edit',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/edit.vue'),\r\n meta: {\r\n title: '編輯内容'\r\n }\r\n },\r\n {\r\n path: 'content-detail/:id',\r\n name: 'content-detail',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/detail.vue'),\r\n meta: {\r\n title: '内容详情'\r\n }\r\n },\r\n {\r\n path: 'wechat-content-list/:fundId/:fundProjectId',\r\n name: 'wechat-content-list-other',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/wechatContent/list.vue'),\r\n meta: {\r\n title: '微信文章同步管理'\r\n }\r\n },\r\n {\r\n path: 'wechat-content-list',\r\n name: 'wechat-content-list',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/wechatContent/list.vue'),\r\n meta: {\r\n title: '微信文章同步管理'\r\n }\r\n },\r\n {\r\n path: 'trash',\r\n name: 'trash',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/cms/content/trash.vue'),\r\n meta: {\r\n title: '内容废纸篓'\r\n }\r\n },\r\n {\r\n path: 'friendLink',\r\n name: 'friendLink',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/friendLink/list.vue'),\r\n meta: {\r\n title: '合作伙伴'\r\n }\r\n },\r\n {\r\n path: 'friendLink/create',\r\n name: 'friendLinkCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/friendLink/edit.vue'),\r\n meta: {\r\n title: '新建合作伙伴'\r\n }\r\n },\r\n {\r\n path: 'friendLink/edit/:id',\r\n name: 'friendLinkEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/friendLink/edit.vue'),\r\n meta: {\r\n title: '编辑合作伙伴'\r\n }\r\n },\r\n {\r\n path: 'album-list',\r\n name: 'album-list',\r\n component: () => import(/* webpackChunkName: \"albumPhotosList\" */ '@/views/cms/albumPhotos/list.vue'),\r\n meta: {\r\n title: '相册管理'\r\n }\r\n },\r\n {\r\n path: 'photo-list/:id',\r\n name: 'photo-list',\r\n component: () => import(/* webpackChunkName: \"photoList\" */ '@/views/cms/albumPhotos/photoList.vue'),\r\n meta: {\r\n title: '照片管理'\r\n }\r\n\r\n },\r\n {\r\n path: 'anchor',\r\n name: 'anchor',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/anchor/list.vue'),\r\n meta: {\r\n title: '锚点管理'\r\n }\r\n },\r\n {\r\n path: 'anchor/create',\r\n name: 'anchorCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/anchor/edit.vue'),\r\n meta: {\r\n title: '新建锚点'\r\n }\r\n },\r\n {\r\n path: 'anchor/edit/:id',\r\n name: 'anchorEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/anchor/edit.vue'),\r\n meta: {\r\n title: '编辑锚点'\r\n }\r\n },\r\n {\r\n path: 'swiper',\r\n name: 'swiper',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/swiper/list.vue'),\r\n meta: {\r\n title: '轮播图管理'\r\n }\r\n },\r\n {\r\n path: 'swiper/create',\r\n name: 'swiperCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/swiper/edit.vue'),\r\n meta: {\r\n title: '新建轮播图'\r\n }\r\n },\r\n {\r\n path: 'swiper/edit/:id',\r\n name: 'swiperEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/cms/swiper/edit.vue'),\r\n meta: {\r\n title: '编辑轮播图'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default cmsRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst projectRouter: RouteConfig[] = [\r\n {\r\n path: '/project',\r\n component: Layout,\r\n name: 'project',\r\n redirect: '',\r\n meta: {\r\n title: '项目管理'\r\n },\r\n children: [\r\n {\r\n path: 'externalProjectChangeApply',\r\n name: 'externalProjectChangeApply',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectChangeApply/list.vue'),\r\n meta: {\r\n title: '外部项目变更申请'\r\n }\r\n },\r\n {\r\n path: 'externalProjectChangeApply/create',\r\n name: 'externalProjectChangeApplyCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectChangeApply/edit.vue'),\r\n meta: {\r\n title: '新建外部项目变更申请'\r\n }\r\n },\r\n {\r\n path: 'externalProjectChangeApply/edit/:id',\r\n name: 'externalProjectChangeApplyEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectChangeApply/edit.vue'),\r\n meta: {\r\n title: '编辑外部项目变更申请'\r\n }\r\n },\r\n {\r\n path: 'externalProjectChangeApply/detail/:id',\r\n name: 'externalProjectChangeApplyDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectChangeApply/detail.vue'),\r\n meta: {\r\n title: '外部项目变更申请详情'\r\n }\r\n },\r\n {\r\n path: 'externalProjectChangeApply/editProject/:targetExternalProjectId',\r\n name: 'externalProjectChangeApplyEditProject',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/edit.vue'),\r\n meta: {\r\n title: '编辑外部项目变更申请项目书'\r\n }\r\n },\r\n {\r\n path: 'externalProjectChangeApply/createProject/:sourceProjectId',\r\n name: 'externalProjectChangeApplyCreateProject',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/edit.vue'),\r\n meta: {\r\n title: '新建外部项目变更申请项目书'\r\n }\r\n },\r\n {\r\n path: 'projectSeries',\r\n name: 'projectSeries',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectSeries/list.vue'),\r\n meta: {\r\n title: '项目系列管理'\r\n }\r\n },\r\n {\r\n path: 'projectSeries/create',\r\n name: 'projectSeriesCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectSeries/edit.vue'),\r\n meta: {\r\n title: '新建项目系列'\r\n }\r\n },\r\n {\r\n path: 'projectSeries/edit/:id',\r\n name: 'projectSeriesEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectSeries/edit.vue'),\r\n meta: {\r\n title: '编辑项目系列'\r\n }\r\n },\r\n {\r\n path: 'otherIncome',\r\n name: 'otherIncome',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/otherIncome/list.vue'),\r\n meta: {\r\n title: '其他资金收入管理'\r\n }\r\n },\r\n {\r\n path: 'otherIncome/create',\r\n name: 'otherIncomeCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/otherIncome/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'otherIncome/edit/:id',\r\n name: 'otherIncomeEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/otherIncome/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'otherIncome/detail',\r\n name: 'otherIncomeDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/otherIncome/detail.vue'),\r\n meta: {\r\n title: '其他资金收入详情'\r\n }\r\n },\r\n {\r\n path: 'donationIncome',\r\n name: 'donationIncome',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/donationIncome/list.vue'),\r\n meta: {\r\n title: '资金捐赠管理'\r\n }\r\n },\r\n {\r\n path: 'donationIncome-create',\r\n name: 'donationIncome-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/donationIncome/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'donationIncome-edit/:id',\r\n name: 'donationIncome-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/donationIncome/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'donationIncome-detail',\r\n name: 'donationIncome-detail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/donationIncome/detail.vue'),\r\n meta: {\r\n title: '捐赠详情'\r\n }\r\n },\r\n //外部项目月计划\r\n {\r\n path: 'externalMonthPlan',\r\n name: 'externalMonthPlan',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthPlan/list.vue'),\r\n meta: {\r\n title: '项目月计划表'\r\n }\r\n },\r\n {\r\n path: 'externalMonthPlan/create',\r\n name: 'externalMonthPlanCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthPlan/edit.vue'),\r\n meta: {\r\n title: '新建外部项目月计划'\r\n }\r\n },\r\n {\r\n path: 'externalMonthPlan/edit/:id',\r\n name: 'externalMonthPlanEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthPlan/edit.vue'),\r\n meta: {\r\n title: '编辑外部项目月计划'\r\n }\r\n },\r\n {\r\n path: 'externalMonthPlan/detail/:id',\r\n name: 'externalMonthPlanDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthPlan/detail.vue'),\r\n meta: {\r\n title: '外部项目月计划表详情'\r\n }\r\n },\r\n //个人年终总结\r\n {\r\n path: 'internalPersonalYearEndSummary',\r\n name: 'internalPersonalYearEndSummary',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalPersonalYearEndSummary/list.vue'),\r\n meta: {\r\n title: '个人年终总结'\r\n }\r\n },\r\n {\r\n path: 'internalPersonalYearEndSummary/create',\r\n name: 'internalPersonalYearEndSummaryCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalPersonalYearEndSummary/edit.vue'),\r\n meta: {\r\n title: '新建个人年终总结'\r\n }\r\n },\r\n {\r\n path: 'internalPersonalYearEndSummary/edit/:id',\r\n name: 'internalPersonalYearEndSummaryEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalPersonalYearEndSummary/edit.vue'),\r\n meta: {\r\n title: '编辑个人年终总结'\r\n }\r\n },\r\n {\r\n path: 'internalPersonalYearEndSummary/detail/:id',\r\n name: 'internalPersonalYearEndSummaryDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalPersonalYearEndSummary/detail.vue'),\r\n meta: {\r\n title: '个人年终总结详情'\r\n }\r\n },\r\n\r\n {\r\n path: 'monthlyPlan',\r\n name: 'monthlyPlan',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/monthlyPlan/list.vue'),\r\n meta: {\r\n title: '项目月计划表'\r\n }\r\n },\r\n\r\n {\r\n path: 'monthlyPlanCreate',\r\n name: 'monthlyPlan-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/monthlyPlan/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'monthlyPlanEdit/:id',\r\n name: 'monthlyPlan-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/monthlyPlan/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'monthlyPlanDetail/:id',\r\n name: 'monthlyPlan-detail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/monthlyPlan/detail.vue'),\r\n meta: {\r\n title: '项目月计划表详情'\r\n }\r\n },\r\n //外部项目月计划\r\n {\r\n path: 'externalMonthlySummarize',\r\n name: 'externalMonthlySummarize',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthlySummarize/list.vue'),\r\n meta: {\r\n title: '外部项目月总结管理'\r\n }\r\n },\r\n {\r\n path: 'externalMonthlySummarize/create',\r\n name: 'externalMonthlySummarizeCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthlySummarize/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'externalMonthlySummarize/edit/:id',\r\n name: 'externalMonthlySummarizeEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthlySummarize/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'externalMonthlySummarize/detail/:id',\r\n name: 'externalMonthlySummarizeDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalMonthlySummarize/detail.vue'),\r\n meta: {\r\n title: '内部项目月总结详情'\r\n }\r\n },\r\n //\r\n {\r\n path: 'internalMonthlySummarize',\r\n name: 'internalMonthlySummarize',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalMonthlySummarize/list.vue'),\r\n meta: {\r\n title: '内部项目月总结管理'\r\n }\r\n },\r\n {\r\n path: 'internalMonthlySummarize/create',\r\n name: 'internalMonthlySummarizeCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalMonthlySummarize/edit.vue'),\r\n meta: {\r\n title: '新建月总结记录'\r\n }\r\n },\r\n {\r\n path: 'internalMonthlySummarize/edit/:id',\r\n name: 'internalMonthlySummarizeEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalMonthlySummarize/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'internalMonthlySummarize/detail/:id',\r\n name: 'internalMonthlySummarizeDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalMonthlySummarize/detail.vue'),\r\n meta: {\r\n title: '内部项目月总结详情'\r\n }\r\n },\r\n {\r\n path: 'externalProject/letterIntent',\r\n name: 'externalProjectLetterIntent',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/letterIntent/list.vue'),\r\n meta: {\r\n title: '意向书管理'\r\n }\r\n },\r\n {\r\n path: 'externalProject/letterIntentCreate',\r\n name: 'externalProjectLetterIntent-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/letterIntent/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'externalProjectProcessMonitoring',\r\n name: 'externalProjectProcessMonitoring',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectProcessMonitoring/list.vue'),\r\n meta: {\r\n title: '外部项目监测记录管理'\r\n }\r\n },\r\n {\r\n path: 'externalProjectProcessMonitoring/create/:projectId',\r\n name: 'externalProjectProcessMonitoring-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectProcessMonitoring/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'externalProjectProcessMonitoring/edit/:id',\r\n name: 'externalProjectProcessMonitoring-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectProcessMonitoring/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'externalProject/letterIntentEdit/:id',\r\n name: 'externalProjectLetterIntent-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/letterIntent/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'externalProjectProcessMonitoringDetail',\r\n name: 'externalProjectProcessMonitoring-detail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectProcessMonitoring/detail.vue'),\r\n meta: {\r\n title: '监测记录详情'\r\n }\r\n },\r\n {\r\n path: 'externalProject/letterIntentDetail/:id',\r\n name: 'externalProjectLetterIntent-detail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/letterIntent/detail.vue'),\r\n meta: {\r\n title: '意向书管理详情'\r\n }\r\n },\r\n {\r\n path: 'externalProject/progressReports',\r\n name: 'externalProject-progressReports',\r\n component: () => import('@/views/project/externalProject/progressReports/index.vue'),\r\n meta: {\r\n title: '中期总结报告列表'\r\n }\r\n },\r\n {\r\n path: 'externalProject/progressReports/create',\r\n name: 'externalProject-progressReports-create',\r\n component: () => import('@/views/project/externalProject/progressReports/edit.vue'),\r\n meta: {\r\n title: '创建中期总结报告'\r\n }\r\n },\r\n {\r\n path: 'externalProject/progressReports/edit/:id',\r\n name: 'externalProject-progressReports-edit',\r\n component: () => import('@/views/project/externalProject/progressReports/edit.vue'),\r\n meta: {\r\n title: '修改中期总结报告'\r\n }\r\n },\r\n {\r\n path: 'externalProject/progressReports/detail/:id',\r\n name: 'externalProject-progressReports-detail',\r\n component: () => import('@/views/project/externalProject/progressReports/detail.vue'),\r\n meta: {\r\n title: '中期总结详情'\r\n }\r\n },\r\n // 外部项目\r\n {\r\n path: 'projectInvite/list',\r\n name: 'projectInviteList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectInvite/list.vue'),\r\n meta: {\r\n title: '项目邀约管理'\r\n }\r\n },\r\n {\r\n path: 'projectInvite/create',\r\n name: 'projectInviteCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectInvite/edit.vue'),\r\n meta: {\r\n title: '创建项目邀约'\r\n }\r\n },\r\n {\r\n path: 'projectInvite/detail/:id',\r\n name: 'projectInviteDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectInvite/detail.vue'),\r\n meta: {\r\n title: '查看项目邀约'\r\n }\r\n },\r\n // 内部项目\r\n {\r\n path: 'projectInvite/list/:type',\r\n name: 'projectInviteListInternal',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/projectInvite/list.vue'),\r\n meta: {\r\n title: '项目邀约管理'\r\n }\r\n },\r\n {\r\n path: 'customForm',\r\n name: 'projectCustomForm',\r\n component: () => import(/* webpackChunkName: \"projectCustomForm\" */ '@/views/projectCustomForm/index.vue'),\r\n meta: {\r\n title: '项目自定义表单管理'\r\n },\r\n },\r\n {\r\n path: 'externalProject/notifyRecord/assessmentPlan/:type',\r\n name: 'externalProjectNotifyRecordAssessmentPlan',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/list.vue'),\r\n meta: {\r\n title: '评估计划通知'\r\n }\r\n },\r\n {\r\n path: 'externalProject/notifyRecord-create/assessmentPlan/:type',\r\n name: 'externalProjectNotifyRecordCreateAssessmentPlan',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/edit.vue'),\r\n meta: {\r\n title: '创建通知'\r\n }\r\n },\r\n {\r\n path: 'externalProject/notifyRecord-detail/assessmentPlan/:type/:id',\r\n name: 'externalProjectNotifyRecordDetailAssessmentPlan',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/detail.vue'),\r\n meta: {\r\n title: '通知详情'\r\n }\r\n },\r\n {\r\n path: 'externalProject/notifyRecord/investigation/:type',\r\n name: 'externalProjectNotifyRecordInvestigation',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/list.vue'),\r\n meta: {\r\n title: '尽职调查通知'\r\n }\r\n },\r\n // {\r\n // path: 'externalProject/notifyRecord-create/investigation/:type',\r\n // name: 'externalProjectNotificationCreateInvestigation',\r\n // component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/editBeneficiary.vue'),\r\n // meta: {\r\n // title: '创建尽职调查通知'\r\n // }\r\n // },\r\n // {\r\n // path: 'externalProject/notifyRecord-detail/investigation/:type/:id',\r\n // name: 'externalProjectNotificationDetailInvestigation',\r\n // component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/notifyRecord/detail.vue'),\r\n // meta: {\r\n // title: '尽职调查通知详情'\r\n // }\r\n // }\r\n {\r\n path: 'externalProject/proposal',\r\n name: 'externalProjectProposal',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/list.vue'),\r\n meta: {\r\n title: '计划书管理'\r\n }\r\n },\r\n {\r\n path: 'externalProject/proposalCreate',\r\n name: 'externalProjectProposal-create',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/edit.vue'),\r\n meta: {\r\n title: '新建记录'\r\n }\r\n },\r\n {\r\n path: 'externalProject/proposalEdit/:id',\r\n name: 'externalProjectProposal-edit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/edit.vue'),\r\n meta: {\r\n title: '编辑记录'\r\n }\r\n },\r\n {\r\n path: 'externalProject/proposalDetail/:id',\r\n name: 'externalProjectProposal-detail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/proposal/detail.vue'),\r\n meta: {\r\n title: '项目计划书详情'\r\n }\r\n },\r\n {\r\n path: 'externalProjectSummaryReport/list',\r\n name: 'externalProjectSummaryReportList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectSummaryReport/list.vue'),\r\n meta: {\r\n title: '项目总结自评报告管理'\r\n }\r\n },\r\n {\r\n path: 'externalProjectSummaryReport/create',\r\n name: 'externalProjectSummaryReportCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectSummaryReport/edit.vue'),\r\n meta: {\r\n title: '新建项目总结自评报告'\r\n }\r\n },\r\n {\r\n path: 'externalProjectSummaryReport/edit/:id',\r\n name: 'externalProjectSummaryReportEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectSummaryReport/edit.vue'),\r\n meta: {\r\n title: '修改项目总结自评报告'\r\n }\r\n },\r\n {\r\n path: 'externalProjectSummaryReport/detail/:id',\r\n name: 'externalProjectSummaryReportDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectSummaryReport/detail.vue'),\r\n meta: {\r\n title: '查看项目总结自评报告'\r\n }\r\n },\r\n {\r\n path: 'externalProjectCloseReport/list',\r\n name: 'externalProjectCloseReportList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectCloseReport/list.vue'),\r\n meta: {\r\n title: '结项评估报告管理'\r\n }\r\n },\r\n {\r\n path: 'externalProjectCloseReport/create',\r\n name: 'externalProjectCloseReportCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectCloseReport/edit.vue'),\r\n meta: {\r\n title: '新建项目结项评估报告'\r\n }\r\n },\r\n {\r\n path: 'externalProjectCloseReport/edit/:id',\r\n name: 'externalProjectCloseReportEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectCloseReport/edit.vue'),\r\n meta: {\r\n title: '修改项目结项评估报告'\r\n }\r\n },\r\n {\r\n path: 'externalProjectCloseReport/detail/:id',\r\n name: 'externalProjectCloseReportDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProjectCloseReport/detail.vue'),\r\n meta: {\r\n title: '查看项目结项评估报告'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSummaryReports/list',\r\n name: 'internalProjectSummaryReportsList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/summaryReports/list.vue'),\r\n meta: {\r\n title: '项目总结报告管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSummaryReports/create',\r\n name: 'internalProjectSummaryReportsCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/summaryReports/edit.vue'),\r\n meta: {\r\n title: '新建项目总结报告'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSummaryReports/edit/:id',\r\n name: 'internalProjectSummaryReportsEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/summaryReports/edit.vue'),\r\n meta: {\r\n title: '修改项目总结报告'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSummaryReports/detail/:id',\r\n name: 'internalProjectSummaryReportsDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/summaryReports/detail.vue'),\r\n meta: {\r\n title: '查看项目总结报告'\r\n }\r\n },\r\n {\r\n path: 'dueDiligenceRecordList',\r\n name: 'dueDiligenceRecordList',\r\n component: () => import('@/views/project/dueDiligenceRecord/index.vue'),\r\n meta: {\r\n title: '尽职报告列表'\r\n }\r\n },\r\n {\r\n path: 'dueDiligenceRecord/create',\r\n name: 'dueDiligenceRecordCreate',\r\n component: () => import('@/views/project/dueDiligenceRecord/edit.vue'),\r\n meta: {\r\n title: '创建尽职报告'\r\n }\r\n },\r\n {\r\n path: 'dueDiligenceRecord/edit/:id',\r\n name: 'dueDiligenceRecordEdit',\r\n component: () => import('@/views/project/dueDiligenceRecord/edit.vue'),\r\n meta: {\r\n title: '修改尽职报告'\r\n }\r\n },\r\n {\r\n path: 'dueDiligenceRecord/detail/:id',\r\n name: 'dueDiligenceRecordDetail',\r\n component: () => import('@/views/project/dueDiligenceRecord/detail.vue'),\r\n meta: {\r\n title: '尽职报告详情'\r\n }\r\n },\r\n // 外部项目\r\n {\r\n path: 'partnerCapitalApply/list',\r\n name: 'partnerCapitalApplyList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/partnerCapitalApply/list.vue'),\r\n meta: {\r\n title: '合作方资金申请管理'\r\n }\r\n },\r\n {\r\n path: 'partnerCapitalApply/create',\r\n name: 'partnerCapitalApplyCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/partnerCapitalApply/edit.vue'),\r\n meta: {\r\n title: '新建合作方资金申请'\r\n }\r\n },\r\n {\r\n path: 'partnerCapitalApply/edit/:id',\r\n name: 'partnerCapitalApplyEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/partnerCapitalApply/edit.vue'),\r\n meta: {\r\n title: '修改合作方资金申请'\r\n }\r\n },\r\n {\r\n path: 'partnerCapitalApply/detail/:id',\r\n name: 'partnerCapitalApplyDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/partnerCapitalApply/detail.vue'),\r\n meta: {\r\n title: '合作方资金申请详情'\r\n }\r\n },\r\n // 内部项目\r\n {\r\n path: 'partnerCapitalApply/list/:type',\r\n name: 'partnerCapitalApplyListInternal',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/partnerCapitalApply/list.vue'),\r\n meta: {\r\n title: '合作方资金申请管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposal/list',\r\n name: 'internalProjectProposalList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/list.vue'),\r\n meta: {\r\n title: '项目立项管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposal/edit',\r\n name: 'internalProjectProposalEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/index.vue'),\r\n meta: {\r\n title: '修改项目立项'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposal/detail',\r\n name: 'internalProjectProposalDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/customDetail.vue'),\r\n meta: {\r\n title: '查看项目立项'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiary/list',\r\n name: 'internalProjectBeneficiaryList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiary/list.vue'),\r\n meta: {\r\n title: '受益人管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiary/create',\r\n name: 'internalProjectBeneficiaryCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiary/edit.vue'),\r\n meta: {\r\n title: '新建受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiary/edit/:id',\r\n name: 'internalProjectBeneficiaryEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiary/edit.vue'),\r\n meta: {\r\n title: '修改受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiary/detail/:id',\r\n name: 'internalProjectBeneficiaryDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiary/detail.vue'),\r\n meta: {\r\n title: '查看受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposalBeneficiary/list',\r\n name: 'internalProjectProposalBeneficiaryList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/beneficiary/list.vue'),\r\n meta: {\r\n title: '项目受益人管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposalBeneficiary/create',\r\n name: 'internalProjectProposalBeneficiaryCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/beneficiary/index.vue'),\r\n meta: {\r\n title: '新建项目受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposalBeneficiary/add',\r\n name: 'internalProjectProposalBeneficiaryAdd',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/beneficiary/add.vue'),\r\n meta: {\r\n title: '添加已有受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposalBeneficiary/edit',\r\n name: 'internalProjectProposalBeneficiaryEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/beneficiary/add.vue'),\r\n meta: {\r\n title: '修改项目受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectProposalBeneficiary/detail',\r\n name: 'internalProjectProposalBeneficiaryDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/projectProposal/beneficiary/detail.vue'),\r\n meta: {\r\n title: '查看项目受益人'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiaryServiceRecord/list',\r\n name: 'internalProjectBeneficiaryServiceRecordList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/list.vue'),\r\n meta: {\r\n title: '服务记录列表'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiaryServiceRecord/index',\r\n name: 'internalProjectBeneficiaryServiceRecordIndex',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/index.vue'),\r\n meta: {\r\n title: '受益人服务记录管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiaryServiceRecord/create',\r\n name: 'internalProjectBeneficiaryServiceRecordCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/editBeneficiary.vue'),\r\n meta: {\r\n title: '新建受益人服务记录'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiaryServiceRecord/edit',\r\n name: 'internalProjectBeneficiaryServiceRecordEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/editBeneficiary.vue'),\r\n meta: {\r\n title: '修改受益人服务记录'\r\n }\r\n },\r\n {\r\n path: 'internalProjectBeneficiaryServiceRecord/index/:type',\r\n name: 'internalProjectBeneficiaryServiceRecordIndex',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/index.vue'),\r\n meta: {\r\n title: '组织服务记录管理'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSchoolServiceRecord/create',\r\n name: 'internalProjectSchoolServiceRecordCreate',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/editSchool.vue'),\r\n meta: {\r\n title: '新建组织服务记录'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSchoolServiceRecord/edit',\r\n name: 'internalProjectSchoolServiceRecordEdit',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/editSchool.vue'),\r\n meta: {\r\n title: '修改组织服务记录'\r\n }\r\n },\r\n {\r\n path: 'internalProjectSchoolServiceRecord/detail',\r\n name: 'internalProjectSchoolServiceRecordDetail',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/beneficiaryServiceRecord/detail.vue'),\r\n meta: {\r\n title: '查看服务记录'\r\n }\r\n },\r\n {\r\n path: 'result/edit/:projectId',\r\n name: 'editProjectResult',\r\n component: () => import(/* webpackChunkName: \"project\" */ '@/views/project/common/ProjectResultEdit.vue'),\r\n meta: {\r\n title: '项目成果维护'\r\n }\r\n },\r\n {\r\n path: 'internalProjectPhases/list',\r\n name: 'internalProjectPhasesList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/phases/list.vue'),\r\n meta: {\r\n title: '项目周期'\r\n }\r\n },\r\n {\r\n path: 'internalProjectPhases/index/:id',\r\n name: 'internalProjectPhasesIndex',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/internalProject/phases/index.vue'),\r\n meta: {\r\n title: '查看项目周期'\r\n }\r\n },\r\n {\r\n path: 'externalProjectPhases/list',\r\n name: 'externalProjectPhasesList',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/phases/list.vue'),\r\n meta: {\r\n title: '项目周期'\r\n }\r\n },\r\n {\r\n path: 'externalProjectPhases/index/:id',\r\n name: 'externalProjectPhasesIndex',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/project/externalProject/phases/index.vue'),\r\n meta: {\r\n title: '查看项目周期'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default projectRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst ouRouter: RouteConfig[] = [\r\n {\r\n path: '/ou',\r\n component: Layout,\r\n name: 'admin',\r\n redirect: '',\r\n meta: {\r\n title: '权限管理'\r\n },\r\n children: [\r\n {\r\n path: 'permissionDefinition',\r\n name: 'permissionDefinition',\r\n component: () => import(/* webpackChunkName: \"admin-permission\" */ '@/views/admin/permission/definition/index.vue'),\r\n meta: {\r\n title: '菜单管理'\r\n }\r\n },\r\n {\r\n path: 'roles',\r\n name: 'roles',\r\n component: () => import(/* webpackChunkName: \"admin-role\" */ '@/views/admin/role/list.vue'),\r\n meta: {\r\n title: '角色管理'\r\n }\r\n\r\n },\r\n {\r\n path:'roles/create',\r\n name:'role-create',\r\n meta:{\r\n title:'新建角色',\r\n },\r\n component: () => import(/* webpackChunkName: \"admin-role\" */ '@/views/admin/role/editSinglePage.vue'),\r\n },\r\n {\r\n path:'roles/edit/:id',\r\n name:'role-edit',\r\n meta:{\r\n title:'编辑角色',\r\n },\r\n component: () => import(/* webpackChunkName: \"admin-role\" */ '@/views/admin/role/editSinglePage.vue'),\r\n },\r\n\r\n {\r\n path: 'departments',\r\n name: 'departments',\r\n component: () => import(/* webpackChunkName: \"admin-ou\" */ '@/views/ou/department/index.vue'),\r\n meta: {\r\n title: '部门管理'\r\n }\r\n },\r\n {\r\n path: 'users',\r\n name: 'usersList',\r\n component: () => import(/* webpackChunkName: \"admin-user\" */ '@/views/ou/user/list.vue'),\r\n meta: {\r\n title: '用户管理'\r\n }\r\n },\r\n {\r\n // 合作方的用户管理\r\n path: 'ou-users',\r\n name: 'ou-users',\r\n component: () => import(/* webpackChunkName: \"admin-user\" */ '@/views/ou/user/ouUsers.vue'),\r\n meta: {\r\n title: '用户管理'\r\n }\r\n },\r\n {\r\n path: 'users/create',\r\n name: 'usersCreate',\r\n component: () => import(/* webpackChunkName: \"admin-user\" */ '@/views/ou/user/edit.vue'),\r\n meta: {\r\n title: '新建用户'\r\n }\r\n },\r\n {\r\n path: 'users/edit/:id',\r\n name: 'usersEdit',\r\n component: () => import(/* webpackChunkName: \"admin-user\" */ '@/views/ou/user/edit.vue'),\r\n meta: {\r\n title: '修改用户'\r\n }\r\n },\r\n {\r\n path: 'users/detail/:id',\r\n name: 'usersDetail',\r\n component: () => import(/* webpackChunkName: \"admin-user\" */ '@/views/ou/user/detail.vue'),\r\n meta: {\r\n title: '用户详情'\r\n }\r\n },\r\n {\r\n path: \"roleUsers/:id\",\r\n name: \"RoleUsers\",\r\n component: () =>\r\n import(\r\n /* webpackChunkName: \"admin-user\" */ \"@/views/ou/user/roleUsers.vue\"\r\n ),\r\n meta: {\r\n title: \"角色用户列表\",\r\n },\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default ouRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst auditRouter: RouteConfig[] = [\r\n {\r\n path: '/audit',\r\n name: 'audit',\r\n redirect: '',\r\n component: Layout,\r\n meta: {\r\n title: '系统设置'\r\n },\r\n children: [\r\n {\r\n path: 'flowDefinition/management',\r\n name:'auditFlowDefinitionManagement',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/audits/auditFlowList.vue'),\r\n meta: {\r\n title: '审核流程定义'\r\n },\r\n\r\n },\r\n {\r\n path:'flowDefinition/edit/:id',\r\n name:'auditFlowDefinitionEdit',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/audits/edit-auditFlow.vue'),\r\n meta: {\r\n title: '审核流程编辑'\r\n }\r\n },\r\n {\r\n path:'flowDefinition/create',\r\n name:'auditFlowDefinitionCreate',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/audits/edit-auditFlow.vue'),\r\n meta: {\r\n title: '审核流程编辑'\r\n }\r\n },\r\n\r\n {\r\n path: 'preDefinition',\r\n name: 'preDefinition',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/audits/auditNodePreDefineList.vue'),\r\n meta: {\r\n title: '审核节点预定义'\r\n }\r\n },\r\n\r\n {\r\n path: 'auditFlowDetail/:hostType/:hostId/:auditFlowId',\r\n name: 'auditFlowDetail',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/audits/auditFlowDetail.vue'),\r\n meta: {\r\n title: '审核信息详情'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default auditRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst formRouter: RouteConfig[] = [\r\n {\r\n path: '/form',\r\n component: Layout,\r\n name: 'customForm',\r\n redirect: '',\r\n meta: {\r\n title: '表单设计'\r\n },\r\n children: [\r\n {\r\n path: 'index',\r\n name: 'customFormIndex',\r\n component: () => import(/* webpackChunkName: \"form\" */ '@/views/customForm/index.vue'),\r\n meta: {\r\n title: '表单设计'\r\n }\r\n },\r\n {\r\n path:'design',\r\n name:'customFormDesign',\r\n component: () => import(/* webpackChunkName: \"form\" */ '@/views/customForm/index.vue'),\r\n meta: {\r\n title: '表单设计'\r\n }\r\n },\r\n {\r\n path:'usage/:id',\r\n name:'customFormUsage',\r\n component: () => import(/* webpackChunkName: \"form\" */ '@/views/project/externalProject/customDemo/index.vue'),\r\n meta:{\r\n title:'使用示例'\r\n }\r\n },\r\n {\r\n path:'dataDetail',\r\n name:'customFormDataDetail',\r\n component: () => import(/* webpackChunkName: \"form\" */ '@/views/customForm/standardDetail.vue'),\r\n meta:{\r\n title: '明细'\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default formRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst partnerInviteRouter: RouteConfig[] = [\r\n {\r\n path: '/partnerInvite',\r\n name: 'partnerInvite',\r\n redirect: '',\r\n component: Layout,\r\n meta: {\r\n title: '合作方管理'\r\n },\r\n children: [\r\n {\r\n path: 'index',\r\n name:'index',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/partnerInvite/index.vue'),\r\n meta: {\r\n title: '合作方邀约列表'\r\n },\r\n\r\n },\r\n {\r\n path: 'create',\r\n name: 'partnerInviteCreate',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/partnerInvite/edit.vue'),\r\n meta: {\r\n title: '合作方邀约新增'\r\n }\r\n },\r\n {\r\n path:'edit/:id',\r\n name:'partnerInviteEdit',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/partnerInvite/edit.vue'),\r\n meta: {\r\n title: '合作方邀约编辑'\r\n }\r\n },\r\n {\r\n path: 'import/result/:reportName',\r\n name: 'uploadTemplateDetail',\r\n component: () => import('@/components/UploadTemplate/result.vue'),\r\n meta: {\r\n title: '模板导入结果'\r\n }\r\n },\r\n {\r\n path: 'customForm',\r\n name:'partnerCustomForm',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/partnerCustomForm/index.vue'),\r\n meta: {\r\n title: '合作方表单维护'\r\n },\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default partnerInviteRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst notifyRouter: RouteConfig[] = [\r\n {\r\n path: '/notify',\r\n component: Layout,\r\n name: 'cms',\r\n redirect: '',\r\n meta: {\r\n title: '通知模板'\r\n },\r\n children: [\r\n {\r\n path: 'list',\r\n name: 'notify-list',\r\n component: () => import('@/views/notify/template/list.vue'),\r\n meta: {\r\n title: '通知模板列表'\r\n }\r\n },\r\n {\r\n path: 'create',\r\n name: 'notifyCreate',\r\n component: () => import('@/views/notify/template/edit.vue'),\r\n meta: {\r\n title: '创建通知模板'\r\n }\r\n },\r\n {\r\n path: 'edit/:id',\r\n name: 'notifyEdit',\r\n component: () => import('@/views/notify/template/edit.vue'),\r\n meta: {\r\n title: '修改通知模板'\r\n }\r\n },\r\n {\r\n path: 'detail/:id',\r\n name: 'notifyDetail',\r\n component: () => import('@/views/notify/template/detail.vue'),\r\n meta: {\r\n title: '通知模板详情'\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default notifyRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst organizationRouter: RouteConfig[] = [\r\n {\r\n path: '/organization',\r\n component: Layout,\r\n name: 'organization',\r\n meta: {\r\n title: '合作方'\r\n },\r\n children: [\r\n {\r\n path: 'list',\r\n name: 'organizationList',\r\n component: () => import('@/views/organization/list.vue'),\r\n meta: {\r\n title: '合作方列表'\r\n }\r\n },\r\n {\r\n path: 'create',\r\n name: 'organizationCreate',\r\n component: () => import('@/views/organization/edit.vue'),\r\n meta: {\r\n title: '创建合作方'\r\n }\r\n },\r\n {\r\n path: 'edit/:id',\r\n name: 'organizationEdit',\r\n component: () => import('@/views/organization/edit.vue'),\r\n meta: {\r\n title: '修改合作方'\r\n }\r\n },\r\n {\r\n path: 'detail',\r\n name: 'orgDetail',\r\n component: () => import('@/views/organization/detail.vue'),\r\n meta: {\r\n title: '合作方详情'\r\n }\r\n },\r\n {\r\n path: 'detail/:id',\r\n name: 'organizationDetail',\r\n component: () => import('@/views/organizationApply/detail.vue'),\r\n meta: {\r\n title: '合作方详情'\r\n }\r\n },\r\n {\r\n path: 'import/result/:reportName',\r\n name: 'uploadTemplateDetail',\r\n component: () => import('@/components/UploadTemplate/result.vue'),\r\n meta: {\r\n title: '模板导入结果'\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default organizationRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst organizationApplyRouter: RouteConfig[] = [\r\n {\r\n path: '/organizationApply',\r\n component: Layout,\r\n name: 'organizationApply',\r\n meta: {\r\n title: '合作方申请管理'\r\n },\r\n children: [\r\n {\r\n path: 'list',\r\n name: 'organizationApplyList',\r\n component: () => import('@/views/organizationApply/list.vue'),\r\n meta: {\r\n title: '合作方申请列表'\r\n }\r\n },\r\n {\r\n path: 'edit/:id',\r\n name: 'organization-apply-edit',\r\n component: () => import('@/views/organization/edit.vue'),\r\n meta: {\r\n title: '修改合作方'\r\n }\r\n },\r\n {\r\n path: 'detail/:id',\r\n name: 'organizationApplyDetail',\r\n component: () => import('@/views/organizationApply/detail.vue'),\r\n meta: {\r\n title: '合作方申请详情'\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default organizationApplyRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst financeRouter: RouteConfig[] = [\r\n {\r\n path: '/finance',\r\n name: 'finance',\r\n redirect: '',\r\n component: Layout,\r\n meta: {\r\n title: '财务管理'\r\n },\r\n children: [\r\n {\r\n path: 'expenseRecord',\r\n name: 'expenseRecord',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/expenseRecord/index.vue'),\r\n meta: {\r\n title: '支出记录管理'\r\n },\r\n\r\n },\r\n {\r\n path: 'expenseRecord/create',\r\n name: 'expenseRecordCreate',\r\n component: () => import(/* webpackChunkName: \"contentList\" */ '@/views/finance/expenseRecord/edit.vue'),\r\n meta: {\r\n title: '新增支出记录'\r\n }\r\n },\r\n {\r\n path: 'expenseRecord/edit/:id',\r\n name: 'expenseRecordEdit',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/expenseRecord/edit.vue'),\r\n meta: {\r\n title: '编辑支出记录'\r\n }\r\n },\r\n {\r\n path: 'expenseRecord/detail/:id',\r\n name: 'expenseRecordDetail',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/expenseRecord/detail.vue'),\r\n meta: {\r\n title: '支出记录详情'\r\n }\r\n },\r\n {\r\n path: 'expenseRecord/change/:id',\r\n name: 'expenseRecordChange',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/expenseRecord/changeApply.vue'),\r\n meta: {\r\n title: '支出记录变更'\r\n }\r\n },\r\n {\r\n path: 'expenseRecord/changeRecord/:id',\r\n name: 'expenseRecordChangeRecord',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/expenseRecord/changeRecord.vue'),\r\n meta: {\r\n title: '支出记录变更历史记录'\r\n }\r\n },\r\n {\r\n path: 'bankReconciliation',\r\n name: 'bankReconciliation',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/bankReconciliation/index.vue'),\r\n meta: {\r\n title: '银行对账'\r\n }\r\n },\r\n {\r\n path: 'financeManage',\r\n name: 'financeManageProjectReport',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/financeManage/projectReport.vue'),\r\n meta: {\r\n title: '项目报表总计'\r\n }\r\n },\r\n {\r\n path: 'financeManage/projectDetailReport/:id',\r\n name: 'financeManageProjectDetailReport',\r\n component: () => import(/* webpackChunkName: \"partnerInvite\" */ '@/views/finance/financeManage/projectDetailReport.vue'),\r\n meta: {\r\n title: '项目报表明细'\r\n }\r\n }\r\n // {\r\n // path: 'import/result/:reportName',\r\n // name: 'uploadTemplateDetail',\r\n // component: () => import('@/components/UploadTemplate/result.vue'),\r\n // meta: {\r\n // title: '模板导入结果'\r\n // }\r\n // }\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default financeRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst fundRouter: RouteConfig[] = [\r\n {\r\n path: '/fund',\r\n component: Layout,\r\n name: 'fund',\r\n redirect: '',\r\n meta: {\r\n title: '专项基金管理'\r\n },\r\n children: [\r\n {\r\n path: 'fundMaintain',\r\n name: 'fundMaintain',\r\n component: () => import('@/views/fund/fundMaintain/list.vue'),\r\n meta: {\r\n title: '基金设立'\r\n }\r\n },\r\n {\r\n path: 'fundApply',\r\n name: 'fundApply',\r\n component: () => import('@/views/fund/fundApply/list.vue'),\r\n meta: {\r\n title: '基金审核'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'fundApplyDetail',\r\n component: () => import('@/views/fund/fundMaintain/applyDetail.vue'),\r\n meta: {\r\n title: '基金申请详情'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: 'fundMaintain/create',\r\n name: 'fundMaintainCreate',\r\n component: () => import('@/views/fund/fundMaintain/create.vue'),\r\n meta: {\r\n title: '新增基金'\r\n }\r\n },\r\n {\r\n path: 'fundMaintain/edit/:id',\r\n name: 'fundMaintainEdit',\r\n component: () => import('@/views/fund/fundMaintain/edit.vue'),\r\n meta: {\r\n title: '修改基金'\r\n }\r\n },\r\n {\r\n path: 'fundMaintain/moneyFormEdit/:id',\r\n name: 'fundMoneyFormEdit',\r\n component: () => import('@/views/fund/fundMaintain/moneyFormEdit.vue'),\r\n meta: {\r\n title: '捐赠金额自定义'\r\n }\r\n },\r\n {\r\n path: 'fundMaintain/editApply/:id',\r\n name: 'fundMaintainApplyEdit',\r\n component: () => import('@/views/fund/fundMaintain/editApply.vue'),\r\n meta: {\r\n title: '修改基金申请'\r\n }\r\n },\r\n {\r\n path: 'fundApply/editApply/:id',\r\n name: 'fundApplyEdit',\r\n component: () => import('@/views/fund/fundApply/editFundApply.vue'),\r\n meta: {\r\n title: '修改基金申请'\r\n }\r\n },\r\n {\r\n path: 'fundMaintain/detail/:id',\r\n name: 'fundMaintainDetail',\r\n component: () => import('@/views/fund/fundMaintain/detail.vue'),\r\n meta: {\r\n title: '基金详情'\r\n }\r\n },\r\n {\r\n path: 'fundMaintain/applyDetail/:id',\r\n name: 'fundMaintainApplyDetail',\r\n component: () => import('@/views/fund/fundMaintain/applyDetail.vue'),\r\n meta: {\r\n title: '基金申请详情'\r\n }\r\n },\r\n {\r\n path: 'messageCenter',\r\n name: 'messageCenter',\r\n component: () => import('@/views/fund/messageCenter/list.vue'),\r\n meta: {\r\n title: '基金消息'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'messageCenterDetail',\r\n component: () => import('@/views/fund/messageCenter/detail.vue'),\r\n meta: {\r\n title: '基金消息详情'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: 'messageCenter/messageMaintain',\r\n name: 'messageMaintain',\r\n component: () => import('@/views/fund/messageCenter/messageMaintain.vue'),\r\n meta: {\r\n title: '运维中心'\r\n }\r\n },\r\n {\r\n path: 'messageCenter/create',\r\n name: 'messageCenterCreate',\r\n component: () => import('@/views/fund/messageCenter/edit.vue'),\r\n meta: {\r\n title: '新增基金消息'\r\n }\r\n },\r\n {\r\n path: 'messageCenter/edit/:id',\r\n name: 'messageCenterEdit',\r\n component: () => import('@/views/fund/messageCenter/edit.vue'),\r\n meta: {\r\n title: '修改基金消息'\r\n }\r\n },\r\n\r\n {\r\n path: 'fundUser',\r\n name: 'fundUser',\r\n component: () => import('@/views/fund/fundUser/list.vue'),\r\n meta: {\r\n title: '基金成员管理'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'fundUserDetail',\r\n component: () => import('@/views/fund/fundUser/detail.vue'),\r\n meta: {\r\n title: '基金成员详情'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: 'fundUser/create',\r\n name: 'fundUserCreate',\r\n component: () => import('@/views/fund/fundUser/edit.vue'),\r\n meta: {\r\n title: '新增基金成员'\r\n }\r\n },\r\n {\r\n path: 'fundUser/edit/:id',\r\n name: 'fundUserEdit',\r\n component: () => import('@/views/fund/fundUser/edit.vue'),\r\n meta: {\r\n title: '修改基金成员'\r\n }\r\n },\r\n\r\n {\r\n path: 'fundModifyApply',\r\n name: 'fundModifyApply',\r\n component: () => import('@/views/fund/fundModifyApply/list.vue'),\r\n meta: {\r\n title: '基金修改审核'\r\n }\r\n },\r\n {\r\n path: 'fundModifyApply/detail/:id',\r\n name: 'fundModifyApplyDetail',\r\n component: () => import('@/views/fund/fundModifyApply/detail.vue'),\r\n meta: {\r\n title: '基金修改详情'\r\n }\r\n },\r\n // {\r\n // path: 'fundManageFeeRecord/detail/:id',\r\n // name: 'fundManageFeeRecordDetail2',\r\n // component: () => import('@/views/fund/fundManageFeeRecord/detail.vue'),\r\n // meta: {\r\n // title: '基金管理费详情'\r\n // }\r\n // },\r\n {\r\n path: 'fundManageFeeRecord/edit/:id',\r\n name: 'fundManageFeeRecordEdit',\r\n component: () => import('@/views/fund/fundManageFeeRecord/edit.vue'),\r\n meta: {\r\n title: '编辑基金管理费'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default fundRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst fundProjectRouter: RouteConfig[] = [\r\n {\r\n path: '/fundProject',\r\n component: Layout,\r\n name: 'fundProject',\r\n redirect: '',\r\n meta: {\r\n title: '项目管理'\r\n },\r\n children: [\r\n {\r\n path: 'fundProject/:fundId',\r\n name: 'fundProject',\r\n component: () => import('@/views/fundProject/fundProject/list.vue'),\r\n meta: {\r\n title: '基金会项目发布'\r\n }\r\n },\r\n {\r\n path: 'fundProject',\r\n name: 'fundProject',\r\n component: () => import('@/views/fundProject/fundProject/list.vue'),\r\n meta: {\r\n title: '基金会项目发布'\r\n }\r\n },\r\n {\r\n path: 'fundProjectCreate',\r\n name: 'fundProjectCreate',\r\n component: () => import('@/views/fundProject/fundProject/create.vue'),\r\n meta: {\r\n title: '新增基金会项目'\r\n }\r\n },\r\n {\r\n path: 'fundProjectEdit/:id',\r\n name: 'fundProjectEdit',\r\n component: () => import('@/views/fundProject/fundProject/edit.vue'),\r\n meta: {\r\n title: '修改基金会项目'\r\n }\r\n },\r\n {\r\n path: 'fundProjectMoneyFormEdit/:id',\r\n name: 'fundProjectMoneyFormEdit',\r\n component: () => import('@/views/fundProject/fundProject/moneyFormEdit.vue'),\r\n meta: {\r\n title: '捐赠金额自定义'\r\n }\r\n },\r\n {\r\n path: 'fundProjectEditApply/:id',\r\n name: 'fundProjectApplyEdit',\r\n component: () => import('@/views/fundProject/fundProject/editApply.vue'),\r\n meta: {\r\n title: '基金会项目修改申请'\r\n }\r\n },\r\n {\r\n path: 'fundProject/detail/:id',\r\n name: 'fundProjectDetail',\r\n component: () => import('@/views/fundProject/fundProject/detail.vue'),\r\n meta: {\r\n title: '基金会项目详情'\r\n }\r\n },\r\n {\r\n path: 'fundProject/createDonateOrder/:id',\r\n name: 'createDonateOrder',\r\n component: () => import('@/views/fundProject/fundProject/createDonateOrder.vue'),\r\n meta: {\r\n title: '新增捐助'\r\n }\r\n },\r\n {\r\n path: 'fundProject/createEndReport/:id',\r\n name: 'createEndReport',\r\n component: () => import('@/views/fundProject/fundProject/createEndReport.vue'),\r\n meta: {\r\n title: '结项报告'\r\n }\r\n },\r\n {\r\n path: 'fundProjectApply',\r\n name: 'fundProjectApply',\r\n component: () => import('@/views/fundProject/fundProjectApply/list.vue'),\r\n meta: {\r\n title: '基金会项目审核'\r\n }\r\n },\r\n {\r\n path: 'fundProjectApply/detail/:id',\r\n name: 'fundProjectApplyDetail',\r\n component: () => import('@/views/fundProject/fundProjectApply/detail.vue'),\r\n meta: {\r\n title: '基金会项目审核详情'\r\n }\r\n },\r\n {\r\n path: 'fundProjectYearSummary/:fundProjectId',\r\n name: 'fundProjectYearSummary',\r\n component: () => import('@/views/fundProject/fundProjectYearSummary/list.vue'),\r\n meta: {\r\n title: '年度总结管理'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'fundProjectYearSummaryDetail',\r\n component: () => import('@/views/fundProject/fundProjectYearSummary/detail.vue'),\r\n meta: {\r\n title: '年度总结详情'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: 'fundProjectYearSummary/edit/:projectId',\r\n name: 'fundProjectYearSummaryCreate',\r\n component: () => import('@/views/fundProject/fundProjectYearSummary/edit.vue'),\r\n meta: {\r\n title: '新增年度总结'\r\n }\r\n },\r\n {\r\n path: 'fundProjectYearSummary/edit/:id/:projectId',\r\n name: 'fundProjectYearSummaryEdit',\r\n component: () => import('@/views/fundProject/fundProjectYearSummary/edit.vue'),\r\n meta: {\r\n title: '修改年度总结'\r\n }\r\n },\r\n\r\n {\r\n path: 'fundProjectModifyApply',\r\n name: 'fundProjectModifyApply',\r\n component: () => import('@/views/fundProject/fundProjectModifyApply/list.vue'),\r\n meta: {\r\n title: '基金项目修改审核'\r\n }\r\n },\r\n {\r\n path: 'fundProjectModifyApply/detail/:id',\r\n name: 'fundProjectModifyApplyDetail',\r\n component: () => import('@/views/fundProject/fundProjectModifyApply/detail.vue'),\r\n meta: {\r\n title: '基金项目修改审核详情'\r\n }\r\n },\r\n {\r\n path: 'fundProjectProgress',\r\n name: 'fundProjectProgress',\r\n component: () => import('@/views/fundProject/fundProjectProgress/fundProjectList.vue'),\r\n meta: {\r\n title: '基金会项目进展管理'\r\n }\r\n },\r\n {\r\n path: 'fundProjectProgress/list/:projectId',\r\n name: 'fundProjectProgressList',\r\n component: () => import('@/views/fundProject/fundProjectProgress/list.vue'),\r\n meta: {\r\n title: '基金会项目进展'\r\n },\r\n children:[\r\n {\r\n path: 'fundProjectProgress/detail/:id',\r\n name: 'fundProjectProgressDetail',\r\n component: () => import('@/views/fundProject/fundProjectProgress/detail.vue'),\r\n meta: {\r\n title: '项目进展详情'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: 'fundProjectProgress/create/:projectId',\r\n name: 'fundProjectProgressCreate',\r\n component: () => import('@/views/fundProject/fundProjectProgress/edit.vue'),\r\n meta: {\r\n title: '新增项目进展'\r\n }\r\n },\r\n {\r\n path: 'fundProjectProgress/edit/:id/:projectId',\r\n name: 'fundProjectProgressEdit',\r\n component: () => import('@/views/fundProject/fundProjectProgress/edit.vue'),\r\n meta: {\r\n title: '修改项目进展'\r\n }\r\n },\r\n\r\n {\r\n path: 'fundAppropriateApply',\r\n name: 'fundAppropriateApply',\r\n component: () => import('@/views/fundProject/fundAppropriateApply/list.vue'),\r\n meta: {\r\n title: '一般业务走款申请'\r\n }\r\n },\r\n {\r\n path: 'fundAppropriateApply/create',\r\n name: 'fundAppropriateApplyCreate',\r\n component: () => import('@/views/fundProject/fundAppropriateApply/edit.vue'),\r\n meta: {\r\n title: '新增一般业务走款申请'\r\n }\r\n },\r\n {\r\n path: 'fundAppropriateApply/detail/:id',\r\n name: 'fundAppropriateApplyDetail',\r\n component: () => import('@/views/fundProject/fundAppropriateApply/detail.vue'),\r\n meta: {\r\n title: '一般业务走款申请详情'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default fundProjectRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst activityRouter: RouteConfig[] = [\r\n {\r\n path: '/activity',\r\n component: Layout,\r\n name: 'activity',\r\n redirect: '/activity/activity-list',\r\n meta: {\r\n title: '活动管理'\r\n },\r\n children: [\r\n {\r\n path: 'activity-list',\r\n name: 'ActivityList',\r\n component: () => import(/* webpackChunkName: \"Activity\" */ '@/views/activity/activity/list.vue'),\r\n meta: {\r\n title: '活动维护'\r\n }\r\n },\r\n {\r\n path: 'detail/:id?',\r\n name: 'ActivityDetail',\r\n component: () => import(/* webpackChunkName: \"ActivityDetail\" */ '@/views/activity/activity-detail.vue'),\r\n meta: {\r\n title: '活动详情'\r\n }\r\n },\r\n {\r\n path: 'activity/edit/:id',\r\n name: 'ActivityEdit',\r\n component: () => import(/* webpackChunkName: \"ActivityEdit\" */'@/views/activity/activity/edit.vue'),\r\n meta: {\r\n title: '活动发布'\r\n }\r\n },\r\n {\r\n path: \"activity/checkIn/:id?\",\r\n name: \"ActivityCheckIn\",\r\n component: () => import(/* webpackChunkName: \"ActivityCheckIn\" */ '@/views/activity/activity/checkIn.vue'),\r\n meta: {\r\n title: \"报名签到\"\r\n }\r\n },\r\n {\r\n path: \"apply/list/:activityId?\",\r\n name: \"ActivityApplyList\",\r\n component: () => import(/* webpackChunkName: \"ActivityApplyList\" */ '@/views/activity/apply/list.vue'),\r\n meta: {\r\n title: \"活动订单\"\r\n },\r\n children:[\r\n {\r\n path: 'apply/:id?',\r\n name: 'ActivityApplyDetail',\r\n component: () => import(/* webpackChunkName: \"ActivityApplyDetail\" */ '@/views/activity/apply/detail.vue'),\r\n meta: {\r\n title: '报名详情'\r\n }\r\n }\r\n ]\r\n },\r\n\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default activityRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst volunteerRouter: RouteConfig[] = [\r\n {\r\n path: '/volunteer',\r\n component: Layout,\r\n name: 'Volunteer',\r\n redirect: '/volunteer/volunteer-list',\r\n meta: {\r\n title: '志愿者管理'\r\n },\r\n children: [\r\n {\r\n path: 'volunteer/list',\r\n name: 'VolunteerList',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/list.vue'),\r\n meta: {\r\n title: '志愿者信息维护'\r\n }\r\n },\r\n {\r\n path: 'volunteer/audit-list',\r\n name: 'VolunteerAuditList',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/audit-list.vue'),\r\n meta: {\r\n title: '志愿者申请审核'\r\n }\r\n },\r\n {\r\n path: 'volunteer/edit/:id',\r\n name: 'volunteerEdit',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/edit.vue'),\r\n meta: {\r\n title: '修改志愿者'\r\n }\r\n },\r\n {\r\n path: 'volunteer/create',\r\n name: 'volunteerCreate',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/edit.vue'),\r\n meta: {\r\n title: '新增志愿者'\r\n }\r\n },\r\n {\r\n path: 'volunteer/audit/detail/:id',\r\n name: 'VolunteerAuditDetail',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/audit-detail.vue'),\r\n meta: {\r\n title: '志愿者申请详情'\r\n }\r\n },\r\n {\r\n path: 'volunteer/:id?',\r\n name: 'VolunteerDetail',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/volunteer/volunteer/detail.vue'),\r\n meta: {\r\n title: '志愿者详情'\r\n }\r\n },\r\n {\r\n path: 'orgVolunteerApply',\r\n name: 'orgVolunteerApply',\r\n component: () => import(/* webpackChunkName: \"volunteer\" */ '@/views/admin/orgVolunteerApply/index.vue'),\r\n meta: {\r\n title: '志愿者表单自定义'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default volunteerRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst taskRouter: RouteConfig[] = [\r\n {\r\n path: '/taskCenter',\r\n component: Layout,\r\n name: 'taskCenter',\r\n redirect: '/taskCenter',\r\n meta: {\r\n title: '办公中心'\r\n },\r\n children: [\r\n {\r\n path: 'taskManager',\r\n name: 'taskManager',\r\n component: () => import('@/views/taskCenter/taskManager/taskList.vue'),\r\n meta: {\r\n title: '任务管理'\r\n }\r\n },{\r\n path:'detail/:id',\r\n name:'taskManagerDetail',\r\n component:() => import('@/views/taskCenter/taskManager/detail.vue'),\r\n meta:{\r\n title:'任务详情'\r\n }\r\n },\r\n {\r\n path: 'taskManager/create',\r\n name: 'taskManagerCreate',\r\n component: () => import('@/views/taskCenter/taskManager/edit.vue'),\r\n meta: {\r\n title: '新增任务'\r\n }\r\n },\r\n {\r\n path: 'taskManager/edit/:id',\r\n name: 'taskManagerEdit',\r\n component: () => import('@/views/taskCenter/taskManager/edit.vue'),\r\n meta: {\r\n title: '修改任务'\r\n }\r\n },\r\n {\r\n path: 'myTask',\r\n name: 'myTask',\r\n component: () => import('@/views/taskCenter/myTask/myTask.vue'),\r\n meta: {\r\n title: '待办任务'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default taskRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst jobRouter: RouteConfig[] = [\r\n {\r\n path: '/jobMaintain',\r\n component: Layout,\r\n name: 'officeCenter',\r\n redirect: '',\r\n meta: {\r\n title: '办公中心'\r\n },\r\n children: [\r\n {\r\n path: 'jobMaintain',\r\n name: 'jobMaintain',\r\n component: () => import('@/views/jobMaintain/list.vue'),\r\n meta: {\r\n title: '招聘管理'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'jobMaintainDetail',\r\n component: () => import('@/views/jobMaintain/detail.vue'),\r\n meta: {\r\n title: '招聘信息详情'\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: 'jobMaintain/create',\r\n name: 'jobMaintainCreate',\r\n component: () => import('@/views/jobMaintain/edit.vue'),\r\n meta: {\r\n title: '新增招聘信息'\r\n }\r\n },\r\n {\r\n path: 'jobMaintain/edit/:id',\r\n name: 'jobMaintainEdit',\r\n component: () => import('@/views/jobMaintain/edit.vue'),\r\n meta: {\r\n title: '修改招聘信息'\r\n }\r\n },\r\n\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default jobRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst feedbackRouter: RouteConfig[] = [\r\n {\r\n path: '/feedback',\r\n component: Layout,\r\n name: 'feedback',\r\n redirect: '',\r\n meta: {\r\n title: '办公中心'\r\n },\r\n children: [\r\n {\r\n path: 'feedback',\r\n name: 'feedback',\r\n component: () => import('@/views/feedback/list.vue'),\r\n meta: {\r\n title: '官网反馈管理'\r\n }\r\n },\r\n {\r\n path: 'feedbackReply/:feedbackId',\r\n name: 'feedbackReply',\r\n component: () => import('@/views/feedback/replyList.vue'),\r\n meta: {\r\n title: '反馈信息回复'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default feedbackRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst financeNewRouter: RouteConfig[] = [\r\n {\r\n path: '/financeManage',\r\n name: 'financeManage',\r\n redirect: '',\r\n component: Layout,\r\n meta: {\r\n title: '财务管理'\r\n },\r\n children: [\r\n {\r\n path: 'fundAccount',\r\n name: 'fundAccount',\r\n component: () => import('@/views/fund/fundAccount/list.vue'),\r\n meta: {\r\n title: '基金账户查询'\r\n }\r\n },\r\n {\r\n path: 'electronicInvoice',\r\n name: 'electronicInvoice',\r\n component: () => import(/* webpackChunkName: \"financeNew\" */ '@/views/financeNew/electronicInvoice/list.vue'),\r\n meta: {\r\n title: '电子发票管理'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'electronicInvoiceDetail',\r\n component: () => import(/* webpackChunkName: \"financeNew\" */ '@/views/financeNew/electronicInvoice/detail.vue'),\r\n meta: {\r\n title: '电子发票详情'\r\n },\r\n },\r\n ]\r\n },\r\n\r\n {\r\n path: 'electronicInvoice/edit/:id',\r\n name: 'electronicInvoiceEdit',\r\n component: () => import(/* webpackChunkName: \"financeNew\" */ '@/views/financeNew/electronicInvoice/edit.vue'),\r\n meta: {\r\n title: '修改电子发票'\r\n },\r\n },\r\n {\r\n path: 'applicationPayment',\r\n name: 'applicationPayment',\r\n component: () => import('@/views/financeNew/applicationPayment/list.vue'),\r\n meta: {\r\n title: '善款拨付发票识别'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'applicationPaymentDetail',\r\n component: () => import('@/views/financeNew/applicationPayment/detail.vue'),\r\n meta: {\r\n title: '查看善款拨付发票识别'\r\n }\r\n },\r\n ]\r\n },\r\n\r\n {\r\n path: 'tenantBankAccount',\r\n name: 'tenantBankAccount',\r\n component: () => import('@/views/financeNew/tenantBankAccount/list.vue'),\r\n meta: {\r\n title: '付款账户管理'\r\n }\r\n },\r\n {\r\n path: 'fundAppropriateRecord',\r\n name: 'fundAppropriateRecord',\r\n component: () => import('@/views/fund/fundAppropriateRecord/list.vue'),\r\n meta: {\r\n title: '基金善款拨付记录'\r\n }\r\n },\r\n {\r\n path: 'fundManageFeeRecord',\r\n name: 'fundManageFeeRecord',\r\n component: () => import('@/views/fund/fundManageFeeRecord/list.vue'),\r\n meta: {\r\n title: '基金管理费维护'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'fundManageFeeRecordDetail',\r\n component: () => import('@/views/fund/fundManageFeeRecord/detail.vue'),\r\n meta: {\r\n title: '基金管理费详情'\r\n },\r\n }\r\n ]\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default financeNewRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst officeRouter: RouteConfig[] = [\r\n {\r\n path: '/office',\r\n component: Layout,\r\n name: 'office',\r\n redirect: '',\r\n meta: {\r\n title: '办公中心'\r\n },\r\n children: [\r\n {\r\n path: 'applicationPayment',\r\n name: 'applicationPayment',\r\n component: () => import('@/views/officeCenter/applicationPayment/list.vue'),\r\n meta: {\r\n title: '用款申请'\r\n }\r\n },\r\n {\r\n path: 'applicationPayment/detail/:id',\r\n name: 'officeApplicationPaymentDetail',\r\n component: () => import('@/views/officeCenter/applicationPayment/detail.vue'),\r\n meta: {\r\n title: '查看用款申请'\r\n }\r\n },\r\n {\r\n path: 'applicationPayment/create',\r\n name: 'applicationPaymentCreate',\r\n component: () => import('@/views/officeCenter/applicationPayment/edit.vue'),\r\n meta: {\r\n title: '新建用款申请'\r\n }\r\n },\r\n {\r\n path: 'applicationPayment/edit/:id',\r\n name: 'applicationPaymentEdit',\r\n component: () => import('@/views/officeCenter/applicationPayment/edit.vue'),\r\n meta: {\r\n title: '编辑用款申请'\r\n }\r\n },\r\n {\r\n path: 'merchant',\r\n name: 'merchant',\r\n component: () => import('@/views/officeCenter/merchant/list.vue'),\r\n meta: {\r\n title: '收款账户管理'\r\n }\r\n },\r\n {\r\n path: 'merchantBankAccount',\r\n name: 'merchantBankAccount',\r\n component: () => import('@/views/officeCenter/merchantBankAccount/list.vue'),\r\n meta: {\r\n title: '账户管理'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default officeRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst donateRouter: RouteConfig[] = [\r\n {\r\n path: '/donate',\r\n component: Layout,\r\n name: 'donate',\r\n redirect: '',\r\n meta: {\r\n title: '捐赠管理'\r\n },\r\n children: [\r\n {\r\n path: 'fundIncomeRecord',\r\n name: 'fundIncomeRecord',\r\n component: () => import('@/views/fund/fundIncomeRecord/list.vue'),\r\n meta: {\r\n title: '基金善款捐赠明细'\r\n },\r\n children:[\r\n {\r\n path:'detail/:id',\r\n name:'fundIncomeRecordDetail',\r\n component: () => import('@/views/fund/fundIncomeRecord/detail2.vue'),\r\n meta:{\r\n title:'捐赠记录详情'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: 'fundIncomeRecord/create',\r\n name: 'fundIncomeRecordCreate',\r\n component: () => import('@/views/fund/fundIncomeRecord/edit.vue'),\r\n meta: {\r\n title: '新增基金善款捐赠明细'\r\n }\r\n },\r\n {\r\n path: 'fundIncomeRecord/edit/:id',\r\n name: 'fundIncomeRecordEdit',\r\n component: () => import('@/views/fund/fundIncomeRecord/edit.vue'),\r\n meta: {\r\n title: '修改基金善款捐赠明细'\r\n }\r\n },\r\n {\r\n path: 'collectWater',\r\n name: 'collectWater',\r\n component: () => import('@/views/financeNew/collectWater/list.vue'),\r\n meta: {\r\n title: '线下转账明细'\r\n },\r\n children:[\r\n {\r\n path:'detail/:id',\r\n name:'collectWaterDetail',\r\n component: () => import('@/views/financeNew/collectWater/detail.vue'),\r\n meta:{\r\n title:'线下转账明细详情'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: 'collectWater/confirm/:id',\r\n name: 'collectWaterConfirm',\r\n component: () => import('@/views/financeNew/collectWater/edit.vue'),\r\n meta: {\r\n title: '确认线下转账明细'\r\n }\r\n },\r\n // {\r\n // path: 'fundIncomeRecord/detail/:id',\r\n // name: 'fundIncomeRecordDetail',\r\n // component: () => import('@/views/fund/fundIncomeRecord/detail.vue'),\r\n // meta: {\r\n // title: '捐赠记录详情'\r\n // }\r\n // },\r\n {\r\n path: 'fundDonationMonthly',\r\n name: 'fundDonationMonthly',\r\n component: () => import('@/views/fund/fundDonationMonthly/list.vue'),\r\n meta: {\r\n title: '定时捐管理'\r\n },\r\n children:[\r\n {\r\n path: 'detail/:id',\r\n name: 'fundDonationMonthlyDetail',\r\n component: () => import('@/views/fund/fundDonationMonthly/detail.vue'),\r\n meta: {\r\n title: '月捐详情'\r\n }\r\n },\r\n ]\r\n },\r\n\r\n {\r\n path: 'fundDonationOrder',\r\n name: 'fundDonationOrder',\r\n component: () => import('@/views/fundProject/fundDonationOrder/list.vue'),\r\n meta: {\r\n title: '基金会项目捐助订单'\r\n }\r\n },\r\n {\r\n path: 'fundProjectDonationRecord',\r\n name: 'fundProjectDonationRecord',\r\n component: () => import('@/views/fundProject/fundProjectDonationRecord/list.vue'),\r\n meta: {\r\n title: '基金会项目捐助记录'\r\n }\r\n },\r\n {\r\n path: 'fundNonCashDonation',\r\n name: 'fundNonCashDonation',\r\n component: () => import('@/views/fundProject/fundNonCashDonation/list.vue'),\r\n meta: {\r\n title: '实物捐赠管理'\r\n }\r\n },\r\n {\r\n path: 'fundNonCashDonation/create',\r\n name: 'fundNonCashDonationCreate',\r\n component: () => import('@/views/fundProject/fundNonCashDonation/edit.vue'),\r\n meta: {\r\n title: '新增实物捐赠'\r\n }\r\n },\r\n {\r\n path: 'fundNonCashDonation/detail/:id',\r\n name: 'fundNonCashDonationDetail',\r\n component: () => import('@/views/fundProject/fundNonCashDonation/detail.vue'),\r\n meta: {\r\n title: '实物捐赠详情'\r\n }\r\n },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default donateRouter;\r\n","import {\r\n RouteConfig\r\n} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\n\r\nconst syncDataRouter: RouteConfig[] = [\r\n {\r\n path: '/syncData',\r\n component: Layout,\r\n name: 'syncData',\r\n redirect: '',\r\n meta: {\r\n title: '数据同步'\r\n },\r\n children: [\r\n {\r\n path: 'largeDonation',\r\n name: 'largeDonation',\r\n component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/syncData/largeDonation/list.vue'),\r\n meta: {\r\n title: '大额捐赠同步'\r\n }\r\n },\r\n // {\r\n // path: 'largeDonation-create',\r\n // name: 'largeDonation-create',\r\n // component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/syncData/largeDonation/edit.vue'),\r\n // meta: {\r\n // title: '新建大额捐赠同步'\r\n // }\r\n // },\r\n // {\r\n // path: 'largeDonation-edit/:id',\r\n // name: 'largeDonation-edit',\r\n // component: () => import(/* webpackChunkName: \"ouUserManager\" */ '@/views/syncData/largeDonation/edit.vue'),\r\n // meta: {\r\n // title: '编辑大额捐赠同步'\r\n // }\r\n // },\r\n ]\r\n }\r\n]\r\n\r\n\r\nexport default syncDataRouter;\r\n","import Vue from 'vue'\r\nimport Router, {RouteConfig} from 'vue-router'\r\nimport Layout from '@/layout/index.vue'\r\nimport {UserModule} from \"@/store/modules/user\";\r\n\r\nimport adminRouter from '@/router/modules/admin';\r\nimport cmsRouter from '@/router/modules/cms';\r\nimport projectRouter from '@/router/modules/project';\r\nimport ouRouter from '@/router/modules/ou';\r\nimport auditRouter from \"@/router/modules/audit\";\r\nimport formRouter from \"@/router/modules/form\";\r\n\r\nimport partnerInviteRouter from \"@/router/modules/partnerInvite\";\r\nimport notifyRouter from \"@/router/modules/notify\";\r\nimport organizationRouter from \"@/router/modules/organization\";\r\nimport organizationApplyRouter from \"@/router/modules/organizationApply\";\r\nimport financeRouter from \"@/router/modules/finance\";\r\nimport fundRouter from \"@/router/modules/fund\";\r\nimport fundProjectRouter from \"@/router/modules/fundProject\";\r\nimport activityRouter from './modules/activity';\r\nimport volunteerRouter from './modules/volunteer';\r\nimport taskRouter from \"@/router/modules/task\";\r\nimport jobRouter from \"@/router/modules/job\";\r\nimport feedbackRouter from \"@/router/modules/feedback\";\r\nimport financeNewRouter from \"@/router/modules/financeNew\";\r\nimport officeRouter from \"@/router/modules/office\";\r\nimport donateRouter from \"@/router/modules/donate\";\r\nimport syncDataRouter from \"@/router/modules/syncData\"\r\n\r\nVue.use(Router)\r\n\r\n/*\r\n redirect: if set to 'noredirect', no redirect action will be trigger when clicking the breadcrumb\r\n meta: {\r\n title: 'title' the name showed in subMenu and breadcrumb (recommend set)\r\n icon: 'svg-name' the icon showed in the sidebar\r\n breadcrumb: false if false, the item will be hidden in breadcrumb (default is true)\r\n hidden: true if true, this route will not show in the sidebar (default is false)\r\n }\r\n*/\r\n\r\nexport const constantRoutes: RouteConfig[] = [\r\n\r\n {\r\n path: '/redirect',\r\n component: Layout,\r\n meta: {hidden: true, auth: false},\r\n children: [{\r\n path: '/redirect/:path(.*)',\r\n component: () => import(/* webpackChunkName: \"redirect\" */ '@/views/redirect/index.vue')\r\n }]\r\n },\r\n {\r\n path: '/404',\r\n component: () => import(/* webpackChunkName: \"404\" */ '@/views/404.vue'),\r\n meta: {hidden: true, auth: false}\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import(/* webpackChunkName: \"account\" */ '@/views/account/login.vue'),\r\n meta: {\r\n title:'登录',\r\n hidden: true,\r\n auth: false\r\n }\r\n },\r\n {\r\n path: '/wxCallback',\r\n name: 'wxCallback',\r\n component: () => import(/* webpackChunkName: \"account\" */ '@/views/account/wxCallback.vue'),\r\n meta: {\r\n title:'企业微信登录',\r\n hidden: true,\r\n auth: false\r\n }\r\n },\r\n {\r\n path: '/generate/viewList',\r\n component: () => import(/* webpackChunkName: \"404\" */ '@/views/generateView/viewList.vue'),\r\n meta: {\r\n title: '列表页面生成器',\r\n }\r\n },\r\n {\r\n path: '/',\r\n component: Layout,\r\n redirect: '/dashboard',\r\n meta: {\r\n title: 'Dashboard',\r\n },\r\n children: [\r\n {\r\n path: 'dashboard',\r\n component: () => import(/* webpackChunkName: \"dashboard\" */ '@/views/dashboard/index.vue'),\r\n meta: {\r\n title: 'Dashboard',\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n path: '/albumIframe',\r\n component: () => import(/* webpackChunkName: \"dashboard\" */ '@/components/Album/index.vue'),\r\n meta: {\r\n title: '相册管理',\r\n }\r\n },\r\n {\r\n path: '/audit',\r\n component: Layout,\r\n redirect: '',\r\n meta: {\r\n title: '我的待审核列表',\r\n },\r\n children: [\r\n {\r\n path: 'myAudit',\r\n name: 'myAudit',\r\n component: () => import(/* webpackChunkName: \"audit\" */ '@/views/myAudit/index.vue'),\r\n meta: {\r\n title: '我的待审核列表'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n path: '/',\r\n component: Layout,\r\n redirect: '/welcome',\r\n meta: {\r\n title: '',\r\n },\r\n children: [\r\n {\r\n path: 'welcome',\r\n component: () => import(/* webpackChunkName: \"welcome\" */ '@/views/welcome.vue'),\r\n meta: {\r\n title: '首页',\r\n }\r\n },\r\n ]\r\n },\r\n]\r\n\r\n// 动态加载菜单\r\nexport const asyncRouter: RouteConfig[] = [\r\n {\r\n path: '*',\r\n redirect: '/404',\r\n meta: {hidden: true}\r\n }\r\n]\r\n\r\nconst router = new Router({\r\n // mode: 'history', // Enable this if you need.\r\n scrollBehavior: (to, from, savedPosition) => {\r\n if (savedPosition) {\r\n return savedPosition\r\n } else {\r\n return {x: 0, y: 0}\r\n }\r\n },\r\n base: process.env.BASE_URL,\r\n\r\n routes: [\r\n ...constantRoutes,\r\n ...adminRouter,\r\n ...ouRouter,\r\n ...cmsRouter,\r\n ...financeRouter,\r\n ...asyncRouter,\r\n ...auditRouter,\r\n ...notifyRouter,\r\n ...organizationRouter,\r\n ...partnerInviteRouter,\r\n ...organizationApplyRouter,\r\n ...projectRouter,\r\n ...formRouter,\r\n ...fundRouter,\r\n ...fundProjectRouter,\r\n ...activityRouter,\r\n ...volunteerRouter,\r\n ...taskRouter,\r\n ...jobRouter,\r\n ...feedbackRouter,\r\n ...financeNewRouter,\r\n ...officeRouter,\r\n ...donateRouter,\r\n ...syncDataRouter\r\n ]\r\n});\r\n\r\nrouter.beforeEach(((to, from, next) => {\r\n const token = UserModule.token;\r\n if (token) {\r\n next();\r\n } else {\r\n if ((to.meta as any).auth !== false) {\r\n next({name: 'login', params: {returnUrl: to.fullPath}});\r\n } else {\r\n next();\r\n }\r\n }\r\n}))\r\n\r\nexport default router;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#ffd04b\"};","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/payrollOfSelf/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/payrollOfSelf/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/payrollOfSelf/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/payrollOfSelf/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/payrollOfSelf/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/payrollOfSelf/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/reimbursement/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/reimbursement/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/reimbursement/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/reimbursement/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/reimbursement/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/reimbursement/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","import axios from 'axios'\r\nimport { Message } from 'element-ui'\r\nimport { UserModule } from '@/store/modules/user'\r\nimport { AppModule } from '@/store/modules/app';\r\nimport { getOu } from './cookies';\r\nimport store from '@/store/index';\r\nimport {ancestorWhere} from \"tslint\";\r\n\r\n// auth.userManager.events.addAccessTokenExpiring(function () {\r\n// console.log(\"token expiring...\");\r\n// Message.info({ message: \"token expiring...\", duration: 2000 });\r\n// setTimeout(() => {\r\n// auth.userManager.signinRedirect();\r\n// }, 1000);\r\n// });\r\n//\r\n// auth.userManager.events.addAccessTokenExpired(function () {\r\n// console.log(\"Token Expired...\");\r\n// Message.info({ message: \"登录信息已过期,正在跳转登录\", duration: 2000 });\r\n// setTimeout(() => {\r\n// auth.userManager.signinRedirect();\r\n// }, 1000);\r\n// });\r\n\r\n\r\n\r\nconst tenantId_Key =\r\n \"http://www.aspnetboilerplate.com/identity/claims/tenantId\";\r\n\r\nlet refreshing = false;\r\n\r\nconst service = axios.create({\r\n baseURL: process.env.VUE_APP_BASE_API,\r\n timeout: 25000,\r\n\r\n})\r\n\r\n\r\n// Request interceptors\r\nservice.interceptors.request.use(config => {\r\n config.headers['Abp-OrganizationUnitId'] = UserModule.ouId || getOu();\r\n config.headers['Abp.ManagePlatform'] = true\r\n config.headers[\"Abp-TenantId\"] = AppModule.getTenantId;\r\n config.headers[\"Authorization\"] = `Bearer ${UserModule.getToken}`;\r\n config.headers[\"Content-Type\"] = 'application/json';\r\n config.headers['Endpoint'] = \"Management\"\r\n config.headers['.AspNetCore.Culture'] = 'c=zh-Hans|uic=zh-Hans'\r\n return config\r\n},\r\n (error) => {\r\n Promise.reject(error)\r\n }\r\n)\r\n\r\n// Response interceptors\r\nservice.interceptors.response.use(\r\n (response) => {\r\n if (isAbpResponse(response)) {\r\n return doAbpResponse(response).then(abpRes => {\r\n return abpRes\r\n }, error => {\r\n Message({\r\n message: error,\r\n type: 'error',\r\n duration: 5 * 1000\r\n })\r\n return error\r\n })\r\n } else {\r\n return response;\r\n }\r\n },\r\n (err) => {\r\n // var axiosConfig = err.response.config;\r\n // if (err.response.status === 401) {\r\n // console.log(\"axios error status is 401\");\r\n // // if already refreshing don't refresh\r\n // if (!refreshing) {\r\n // refreshing = true;\r\n // console.log(\"to refresh the token\");\r\n // return auth.signinSilent().then(user => {\r\n // console.log(user);\r\n // if (user) {\r\n // axios.defaults.headers.common[\"Authorization\"] = `Bearer ${user.access_token}`;\r\n // axiosConfig.headers[\"Authorization\"] = `Bearer ${user.access_token}`;\r\n // }\r\n // refreshing = false;\r\n // // retry the http request\r\n // return axios(axiosConfig);\r\n // }, (error: any) => {\r\n // console.log(error);\r\n // refreshing = false;\r\n // });\r\n // }\r\n // }\r\n console.log('%chttp response error', 'color:red;')\r\n console.log(err)\r\n if (isAbpResponse(err.response)) {\r\n // if (error.response.data.unAuthorizedRequest === true) {\r\n // store.dispatch(\"user/logout\").then(() => {\r\n // return Promise.reject(error.response.data.error)\r\n // });\r\n // }\r\n // if (err.response.data.unAuthorizedRequest) {\r\n // auth.logout();\r\n // return;\r\n // }\r\n if (err.response.data.error.validationErrors && err.response.data.error.validationErrors.length > 0) {\r\n const message = [];\r\n message.push(`

请求参数未能通过验证

`);\r\n message.push('
    ');\r\n err.response.data.error.validationErrors.forEach((errItem: any) => message.push(`
  • ${errItem.message}
  • `));\r\n message.push('
');\r\n Message({\r\n message: message.join('\\n'),\r\n type: 'error',\r\n dangerouslyUseHTMLString: true,\r\n duration: 5 * 1000\r\n })\r\n } else {\r\n Message({\r\n message: err.response.data.error.details || err.response.data.error.message,\r\n type: 'error',\r\n duration: 5 * 1000\r\n })\r\n }\r\n\r\n\r\n return Promise.reject(err.response.data.error)\r\n } else {\r\n Message({\r\n message: err.message,\r\n type: 'error',\r\n duration: 5 * 1000\r\n })\r\n return Promise.reject(err)\r\n }\r\n },\r\n)\r\n\r\n\r\nfunction isAbpResponse(response: any) {\r\n return response && response.data && response.data.__abp\r\n}\r\n\r\nfunction doAbpResponse(response: any) {\r\n return new Promise((resolve, reject) => {\r\n const $eventBus = (window as any).$eventBus;\r\n if (response.data.success === true) {\r\n let _response = response;\r\n _response.data = response.data.result\r\n resolve(_response)\r\n if(/(Update|Delete|Create)$/.test(response.config.url)){\r\n // @ts-ignore\r\n const action = (/(Update|Delete|Create)$/.exec(response.config.url))[0].toLowerCase();\r\n if($eventBus){\r\n const eventName = `data-${action}d`;\r\n $eventBus.$emit(eventName,_response.data);\r\n console.log(`window.$eventBus $emit:${eventName}`);\r\n }\r\n } else if(/(GetAll|Get)/.test(response.config.url) === false){\r\n if($eventBus){\r\n const eventName = `api-action-completed`;\r\n $eventBus.$emit(eventName,_response.data);\r\n console.log(`window.$eventBus $emit:${eventName}`);\r\n }\r\n }\r\n } else {\r\n //todo:处理ABP错误\r\n reject(response.data.error.message)\r\n }\r\n })\r\n}\r\n\r\n\r\nexport default service\r\n","export const PREFIX = 'tm_';\r\n/**\r\n * 存储localStorage\r\n * @param name\r\n * @param content\r\n * @param duration Storage有效时间,单位:小时\r\n * @param set_time 是否设置时间\r\n * @returns {boolean}\r\n */\r\nexport const setStore = (name: string, content: any, set_time = false, duration = 0) => {\r\n if (!name) return false;\r\n name = PREFIX + name;\r\n if (typeof content !== 'string') {\r\n content = JSON.stringify(content)\r\n }\r\n if (set_time) {\r\n let date = new Date;\r\n if (duration > 0) {\r\n content += '&' + (date.getTime() + duration * 3600 * 1e3)\r\n } else {\r\n content += '&0'\r\n }\r\n content += '&' + (date.getTime())\r\n }\r\n window.localStorage.setItem(name, content)\r\n};\r\n\r\n/**\r\n * 获取localStorage\r\n * @param name\r\n * @returns {boolean}\r\n */\r\nexport function getStore(name: string): T | undefined {\r\n let parse = true;\r\n if (!name) return undefined;\r\n name = PREFIX + name;\r\n if (parse) {\r\n if (typeof (window.localStorage.getItem(name)) == \"string\" && window.localStorage.getItem(name) != \"undefined\") {\r\n return JSON.parse(window.localStorage.getItem(name) ?? \"null\")\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * 删除localStorage\r\n */\r\nexport const removeStore = (name: string) => {\r\n if (!name) return false;\r\n name = PREFIX + name;\r\n window.localStorage.removeItem(name)\r\n};\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=c707a1c4&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=c707a1c4&lang=scss&scoped=true&\"","import request from '../../utils/request'\r\n\r\nexport default {\r\n getAll: data => request({\r\n url: '/api/services/app/DataDictionaries/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/DataDictionaries/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/DataDictionaries/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/DataDictionaries/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/DataDictionaries/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function (data) {\r\n return request({\r\n url: '/api/services/app/DataDictionaries/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n },\r\n getListByParentId: data => request({\r\n url: '/api/services/app/DataDictionaries/GetListByParentId',\r\n method: 'get',\r\n params: data\r\n }),\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n // getForEdit: data => request({\r\n // url: '/api/services/app/Comment/GetForEdit',\r\n // method: 'get',\r\n // params: data\r\n // }),\r\n getAll: data => request({\r\n url: '/api/services/app/Comment/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/Comment/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/Comment/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n\r\n update: data => request({\r\n url: '/api/services/app/Comment/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n 'delete': function(data) {\r\n return request({\r\n url: '/api/services/app/Comment/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n },\r\n reply: data => request({\r\n url: '/api/services/app/Comment/Reply',\r\n method: 'post',\r\n data: data\r\n })\r\n}\r\n","import request from '../../utils/request'\r\n\r\nexport default {\r\n downloadTemplate: data => request({\r\n url: '/api/services/app/FinanceReportDataImport/DownloadTemplate',\r\n method: 'get',\r\n params: data\r\n }),\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport router, { asyncRouter } from \"./router/index\";\r\nimport { log } from \"util\";\r\n\r\nimport { UserModule } from \"@/store/modules/user\";\r\nimport { AppModule } from \"@/store/modules/app\";\r\n\r\n\r\n@Component({\r\n name: \"App\"\r\n})\r\nexport default class extends Vue {\r\n\r\n}\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7c6fa6c4&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n '404': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'back-top': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'bug': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'chart': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'clipboard': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'component': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'dashboard': {\r\n width: 128,\r\n height: 100,\r\n viewBox: '0 0 128 100',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'documentation': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'drag': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'edit': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'education': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'email': {\r\n width: 128,\r\n height: 96,\r\n viewBox: '0 0 128 96',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'example': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'excel': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'exit-fullscreen': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'eye-off': {\r\n width: 128,\r\n height: 64,\r\n viewBox: '0 0 128 64',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'eye-on': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'form': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'fullscreen': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'guide-2': {\r\n width: 1000,\r\n height: 1000,\r\n viewBox: '0 0 1000 1000',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'guide': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'hamburger': {\r\n width: 64,\r\n height: 64,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'icon': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'international': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'language': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'like': {\r\n width: 24,\r\n height: 24,\r\n viewBox: '0 0 24 24',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'link': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'list': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'lock': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'message': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'money': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'nested': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'password': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'pdf': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'people': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'peoples': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'qq': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'search': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'shopping': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'size': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'skill': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'star': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'tab': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'table': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'theme': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'tree-table': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'tree': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'user': {\r\n width: 130,\r\n height: 130,\r\n viewBox: '0 0 130 130',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'wechat': {\r\n width: 128,\r\n height: 110,\r\n viewBox: '0 0 128 110',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'zip': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 128 128',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'mg-role': {\r\n width: 128,\r\n height: 128,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'setting': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'kechengguanli': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'shuju': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'cate': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'doc': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'card': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'organization': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'project': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'order': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'refund': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'pays': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'editDoc': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'auditDoc': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'docYes': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'recycle': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'addNode': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ``\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'arrowDown': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'auditingDoc': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1821 1024',\r\n data: ''\r\n }\r\n})\r\n","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'moneyBag': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'payrollAdd': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'baoxiao': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n});","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'aliyun': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'protocol': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'mail': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'category': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'question': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})","/* eslint-disable */\r\n/* tslint:disable */\r\n// @ts-ignore\r\nimport icon from 'vue-svgicon'\r\nicon.register({\r\n 'department': {\r\n width: 200,\r\n height: 200,\r\n viewBox: '0 0 1024 1024',\r\n data: ''\r\n }\r\n})\r\n\r\n","import router from './router'\r\nimport NProgress from 'nprogress'\r\nimport 'nprogress/nprogress.css'\r\nimport { Route } from 'vue-router'\r\nimport { getOu } from './utils/cookies'\r\n\r\nNProgress.configure({ showSpinner: false })\r\n\r\nrouter.beforeEach(async (to: Route, _: Route, next: any) => {\r\n // Start progress bar\r\n // NProgress.start()\r\n console.log(\"before_route\");\r\n let ou = getOu();\r\n next();\r\n NProgress.done();\r\n})\r\n\r\nrouter.afterEach((to: Route) => {\r\n // Finish progress bar\r\n NProgress.done()\r\n\r\n // set page title\r\n if ((to.meta as any).title) {\r\n document.title = (to.meta as any).title;\r\n }\r\n})\r\n","import moment from 'moment'\r\nimport {OrganizationUnitDto} from \"@/api/appService\";\r\nimport api from \"@/api\";\r\n\r\nmoment.locale('zh-cn')\r\n\r\nfunction formatDate(value: any, arg: string | undefined) {\r\n if (value) {\r\n if (arg) {\r\n if (arg === 'fromNow') {\r\n return moment(String(value)).fromNow()\r\n }\r\n return moment(String(value)).format(arg)\r\n }\r\n return moment(String(value)).format('YYYY-MM-DD HH:mm:ss')\r\n }\r\n}\r\n\r\nfunction formatYearMonthDayDate(value: any, arg: string | undefined) {\r\n if (value) {\r\n if (arg) {\r\n if (arg === 'fromNow') {\r\n return moment(String(value)).fromNow()\r\n }\r\n return moment(String(value)).format(arg)\r\n }\r\n return moment(String(value)).format('YYYY-MM-DD')\r\n }\r\n}\r\nfunction formatYearMonthDayDateData(value: any, arg: string | undefined) {\r\n if (value) {\r\n if (arg) {\r\n if (arg === 'fromNow') {\r\n return moment(String(value)).fromNow()\r\n }\r\n return moment(String(value)).format(arg)\r\n }\r\n return moment(String(value)).format('YYYY年MM月DD日')\r\n }\r\n}\r\n\r\nfunction formatYearMonth(value: any) {\r\n if (value)\r\n return moment(value).format('YYYY-MM');\r\n}\r\nfunction formatYearMonthData(value: any) {\r\n if (value)\r\n return moment(value).format('YYYY年MM月');\r\n}\r\nfunction currency(value: any) {\r\n if (value) {\r\n return '¥' + parseFloat(value).toFixed(2)\r\n }\r\n return value\r\n}\r\n\r\nfunction formatPartnerOrg(orgIds: string, orgList: OrganizationUnitDto[]) {\r\n const displayNames: string[] = [];\r\n orgList.map((item: any) => {\r\n if (orgIds.indexOf(item.id) > -1) {\r\n displayNames.push(item.displayName);\r\n }\r\n });\r\n return displayNames.join(\",\");\r\n}\r\n\r\nfunction formatIncomeType(incomeType?: string) {\r\n switch (incomeType) {\r\n case \"Cash\":\r\n return \"现金\";\r\n\r\n case \"Transfer\":\r\n return \"转账\";\r\n }\r\n}\r\n\r\nfunction formatCapitalProperty(capitalProperty?: string) {\r\n switch (capitalProperty) {\r\n case \"NonFinite\":\r\n return \"非限定性\";\r\n\r\n case \"Finite\":\r\n return \"限定性\";\r\n }\r\n}\r\n\r\nfunction formatIncomeCategory(incomeCategory?: string) {\r\n switch (incomeCategory) {\r\n case \"Interest\":\r\n return \"利息\";\r\n\r\n case \"Investment\":\r\n return \"投资收益\";\r\n\r\n case \"Other\":\r\n return \"其他\";\r\n }\r\n}\r\n\r\nfunction formatCurrencyType(currencyType?: string) {\r\n switch (currencyType) {\r\n case \"RMB\":\r\n return \"人民币\";\r\n }\r\n}\r\n\r\nfunction formatCurrency(value?: number) {\r\n\r\n value = Math.round(Number(value) * Math.pow(10, 2)) / Math.pow(10, 2) //四舍五入\r\n const currency = Number(value).toFixed(2); //不足补位\r\n return currency;\r\n\r\n}\r\n\r\nfunction getSingleColumnSum(list?: any[]) {\r\n let sum: number = 0;\r\n list!.map((item, index) => {\r\n if (item.money)\r\n sum += parseFloat(item.money);\r\n });\r\n return sum;\r\n}\r\n\r\nfunction formatEducationType(value?:number,){\r\n\r\n}\r\n\r\nfunction formatMoney(value?:any,){\r\n if (!value) {\r\n return value;\r\n }\r\n value = Math.round(Number(value) * Math.pow(10, 2)) / Math.pow(10, 2) //四舍五入\r\n const money = value.toFixed(2).replace(/(\\d)(?=(\\d{4})+\\.)/g, '$1\\'')\r\n return money;\r\n}\r\n\r\nfunction formatYesOrNo(value?: boolean) {\r\n switch (value) {\r\n case true:\r\n return \"是\";\r\n case false:\r\n return \"否\";\r\n default:\r\n return \"否\";\r\n }\r\n}\r\n\r\nfunction formatIsSynced(value?: boolean){\r\n switch (value){\r\n case true:\r\n return \"已同步\";\r\n case false:\r\n return \"未同步\";\r\n default:\r\n return \"未同步\";\r\n }\r\n}\r\n\r\nfunction formatIsEnabled(value?: boolean){\r\n switch (value){\r\n case true:\r\n return \"已启用\";\r\n case false:\r\n return \"已禁用\";\r\n default:\r\n return \"已禁用\";\r\n }\r\n}\r\n\r\nexport default {\r\n formatDate,\r\n formatYearMonthDayDate,\r\n formatYearMonthDayDateData,\r\n formatYearMonth,\r\n formatYearMonthData,\r\n currency,\r\n formatPartnerOrg,\r\n formatIncomeType,\r\n formatCapitalProperty,\r\n formatCurrencyType,\r\n formatCurrency,\r\n formatIncomeCategory,\r\n getSingleColumnSum,\r\n formatMoney,\r\n formatYesOrNo,\r\n formatIsSynced,\r\n formatIsEnabled\r\n}\r\n","import { OrganizationUnitDto } from '@/api/appService'\r\n\r\nexport default {\r\n\r\n filters: {\r\n // 课程报名详情\r\n applyStatus(value: string) {\r\n if (value) {\r\n switch (value) {\r\n case 'NotPay':\r\n return '未支付'\r\n case 'Approved':\r\n return '待参与'\r\n case 'CheckOut':\r\n return '完成'\r\n case 'Canceled':\r\n return '已取消'\r\n case 'Refunded':\r\n return '已退款'\r\n case 'Reject':\r\n return '已退回'\r\n case 'Refunding':\r\n return '退款中'\r\n case 'Auditing':\r\n return '待审核'\r\n case 'Payed':\r\n return '已支付'\r\n default:\r\n return '未知';\r\n }\r\n }\r\n return '未知'\r\n },\r\n\r\n // 活动类型\r\n activityType(value: number) {\r\n if (value || (value === 0)) {\r\n switch (value) {\r\n case 0:\r\n return '课程'\r\n case 1:\r\n return '普通活动'\r\n case 2:\r\n return '志愿者活动'\r\n case 11:\r\n return '课程'\r\n default:\r\n break\r\n }\r\n }\r\n return '未知'\r\n },\r\n\r\n // 活动状态\r\n activityStatus(value: number) {\r\n if (value || (value === 0)) {\r\n switch (value) {\r\n case 0:\r\n return '草稿'\r\n case 1:\r\n return '待审核'\r\n case 2:\r\n return '审核退回'\r\n case 6:\r\n return '审核通过'\r\n case 7:\r\n return '已发布'\r\n default:\r\n break\r\n }\r\n }\r\n return value\r\n },\r\n\r\n // 支付类型\r\n payType(value: number) {\r\n if (value || (value === 0)) {\r\n switch (value) {\r\n case 0:\r\n return '微信'\r\n case 1:\r\n return '微信扫码'\r\n case 2:\r\n return '支付宝'\r\n case 3:\r\n return '银联'\r\n case 4:\r\n return '用户余额'\r\n default:\r\n break\r\n }\r\n }\r\n return '未知'\r\n },\r\n\r\n // 订单类型\r\n orderType(value: number) {\r\n if (value || (value === 0)) {\r\n switch (value) {\r\n case 0:\r\n return '课程报名'\r\n default:\r\n break\r\n }\r\n }\r\n return '未知'\r\n },\r\n\r\n // 机构类型\r\n ou_type(value: number) {\r\n if (value || (value === 0)) {\r\n switch (value) {\r\n case 1:\r\n return '教育培训类院校'\r\n case 2:\r\n return '企业'\r\n case 3:\r\n return '社会组织'\r\n default:\r\n return '未知'\r\n }\r\n }\r\n return '未知'\r\n },\r\n volunteerHistoryServiceType(value?:string){\r\n if(!value){\r\n return ''\r\n } else {\r\n switch (value){\r\n case 'PunchCard':return '活动打卡';\r\n case 'TaskExecute':return '任务执行';\r\n case 'ImportExcel':return 'Excel导入';\r\n default:return value;\r\n }\r\n }\r\n }\r\n\r\n }\r\n}\r\n","const permissions = {\r\n \"Pages_AlbumPhotos\":\"Pages_AlbumPhotos\", // 相册管理\r\n\r\n\r\n \"Pages_anchor\":\"Pages_anchor\", // 锚点管理\r\n \"Pages_anchor_Create\":\"Pages_anchor_Create\", // 锚点管理-创建\r\n \"Pages_anchor_Delete\":\"Pages_anchor_Delete\", // 锚点管理-删除\r\n \"Pages_anchor_Edit\":\"Pages_anchor_Edit\", // 锚点管理-修改\r\n\r\n\r\n \"Pages_CMS\":\"Pages_CMS\", // 内容管理\r\n\r\n\r\n \"Pages_CmsCategory\":\"Pages_CmsCategory\", // 栏目管理\r\n \"Pages_CmsCategory_Add\":\"Pages_CmsCategory_Add\", // 栏目管理-添加栏目\r\n \"Pages_CmsCategory_Delete\":\"Pages_CmsCategory_Delete\", // 栏目管理-删除栏目\r\n \"Pages_CmsCategory_Update\":\"Pages_CmsCategory_Update\", // 栏目管理-更新栏目\r\n\r\n\r\n \"Pages_CmsContent\":\"Pages_CmsContent\", // 文章管理\r\n \"Pages_CmsContent_Create\":\"Pages_CmsContent_Create\", // 文章管理-创建\r\n \"Pages_CmsContent_Delete\":\"Pages_CmsContent_Delete\", // 文章管理-删除\r\n \"Pages_CmsContent_Edit\":\"Pages_CmsContent_Edit\", // 文章管理-修改\r\n\r\n\r\n \"Pages_CmsContentTrash\":\"Pages_CmsContentTrash\", // 内容废纸篓\r\n \"Pages_CmsContentTrash_Delete\":\"Pages_CmsContentTrash_Delete\", // 内容废纸篓-彻底删除\r\n \"Pages_CmsContentTrash_Restore\":\"Pages_CmsContentTrash_Restore\", // 内容废纸篓-恢复\r\n\r\n\r\n \"Pages_Friend\":\"Pages_Friend\", // 合作方管理\r\n\r\n\r\n \"Pages_Notify\":\"Pages_Notify\", // 通知模板管理\r\n\r\n\r\n \"Pages_OrganizationUsers\":\"Pages_OrganizationUsers\", // 合作方用户管理\r\n \"Pages_OrganizationUsers_Create\":\"Pages_OrganizationUsers_Create\", // 合作方用户管理-创建\r\n \"Pages_OrganizationUsers_Delete\":\"Pages_OrganizationUsers_Delete\", // 合作方用户管理-删除\r\n \"Pages_OrganizationUsers_Edit\":\"Pages_OrganizationUsers_Edit\", // 合作方用户管理-修改\r\n \"Pages_OrganizationUsers_ResetPassword\":\"Pages_OrganizationUsers_ResetPassword\", // 合作方用户管理-重置密码\r\n\r\n\r\n \"Pages_Permission\":\"Pages_Permission\", // 权限管理\r\n\r\n\r\n \"Pages_Swiper\":\"Pages_Swiper\", // 轮播图管理\r\n \"Pages_Swiper_Create\":\"Pages_Swiper_Create\", // 轮播图管理-创建\r\n \"Pages_Swiper_Delete\":\"Pages_Swiper_Delete\", // 轮播图管理-删除\r\n \"Pages_Swiper_Edit\":\"Pages_Swiper_Edit\", // 轮播图管理-修改\r\n\r\n\r\n \"Pages_TenantSettings_AliyunOss\":\"Pages_TenantSettings.AliyunOss\", // AliyunOss\r\n\r\n\r\n \"Pages_TenantSettings_Sms\":\"Pages_TenantSettings.Sms\", // 短信设置\r\n\r\n\r\n \"Pages_AuditFlow\":\"Pages.AuditFlow\", // 审核流程定义\r\n \"Pages_AuditFlow_Create\":\"Pages.AuditFlow:Create\", // 审核流程定义-创建\r\n \"Pages_AuditFlow_Edit\":\"Pages.AuditFlow:Edit\", // 审核流程定义-修改\r\n \"Pages_AuditFlow_ResetPassword\":\"Pages.AuditFlow:ResetPassword\", // 审核流程定义-重置密码\r\n\r\n\r\n \"Pages_AuditNodePreDefinition\":\"Pages.AuditNodePreDefinition\", // 审核节点预定义\r\n \"Pages_AuditNodePreDefinition_Create\":\"Pages.AuditNodePreDefinition:Create\", // 审核节点预定义-创建\r\n \"Pages_AuditNodePreDefinition_Edit\":\"Pages.AuditNodePreDefinition:Edit\", // 审核节点预定义-修改\r\n \"Pages_AuditNodePreDefinition_ResetPassword\":\"Pages.AuditNodePreDefinition:ResetPassword\", // 审核节点预定义-重置密码\r\n\r\n\r\n \"Pages_BankReconciliation\":\"Pages.BankReconciliation\", // 银行对账\r\n \"Pages_BankReconciliation_Export\":\"Pages.BankReconciliation:Export\", // 银行对账-导出\r\n\r\n\r\n \"Pages_Dashboard\":\"Pages.Dashboard\", // Dashboard\r\n \"Pages_Dashboard_Pages.Dashboard.ExternalProject\":\"Pages.Dashboard:Pages.Dashboard.ExternalProject\", // Dashboard-外部项目\r\n \"Pages_Dashboard_Pages.Dashboard.InternalProject\":\"Pages.Dashboard:Pages.Dashboard.InternalProject\", // Dashboard-内部项目\r\n\r\n\r\n \"Pages_DataDictionaries\":\"Pages.DataDictionaries\", // 数据字典\r\n \"Pages_DataDictionaries_CreateNode\":\"Pages.DataDictionaries:CreateNode\", // 数据字典-创建字典项\r\n \"Pages_DataDictionaries_CreateValue\":\"Pages.DataDictionaries:CreateValue\", // 数据字典-创建字典值\r\n \"Pages_DataDictionaries_DeleteNode\":\"Pages.DataDictionaries:DeleteNode\", // 数据字典-删除字典项\r\n \"Pages_DataDictionaries_DeleteValue\":\"Pages.DataDictionaries:DeleteValue\", // 数据字典-删除字典值\r\n \"Pages_DataDictionaries_EditNode\":\"Pages.DataDictionaries:EditNode\", // 数据字典-修改字典项\r\n \"Pages_DataDictionaries_EditValue\":\"Pages.DataDictionaries:EditValue\", // 数据字典-修改字典值\r\n\r\n\r\n \"Pages_Departments\":\"Pages.Departments\", // 部门管理\r\n \"Pages_Departments_Create\":\"Pages.Departments:Create\", // 部门管理-创建\r\n \"Pages_Departments_Delete\":\"Pages.Departments:Delete\", // 部门管理-删除\r\n \"Pages_Departments_Edit\":\"Pages.Departments:Edit\", // 部门管理-修改\r\n\r\n\r\n \"Pages_DonationIncome\":\"Pages.DonationIncome\", // 资金捐赠管理\r\n \"Pages_DonationIncome_Audit\":\"Pages.DonationIncome:Audit\", // 资金捐赠管理-审核\r\n \"Pages_DonationIncome_Create\":\"Pages.DonationIncome:Create\", // 资金捐赠管理-创建\r\n \"Pages_DonationIncome_Delete\":\"Pages.DonationIncome:Delete\", // 资金捐赠管理-删除\r\n \"Pages_DonationIncome_Edit\":\"Pages.DonationIncome:Edit\", // 资金捐赠管理-修改\r\n \"Pages_DonationIncome_Export\":\"Pages.DonationIncome:Export\", // 资金捐赠管理-导出\r\n \"Pages_DonationIncome_Import\":\"Pages.DonationIncome:Import\", // 资金捐赠管理-导入\r\n \"Pages_DonationIncome_StartAudit\":\"Pages.DonationIncome:StartAudit\", // 资金捐赠管理-提交/重新审核\r\n\r\n\r\n \"Pages_DueDiligenceRecord\":\"Pages.DueDiligenceRecord\", // 尽职调查报告\r\n \"Pages_DueDiligenceRecord_Audit\":\"Pages.DueDiligenceRecord:Audit\", // 尽职调查报告-审核\r\n \"Pages_DueDiligenceRecord_Create\":\"Pages.DueDiligenceRecord:Create\", // 尽职调查报告-创建\r\n \"Pages_DueDiligenceRecord_Delete\":\"Pages.DueDiligenceRecord:Delete\", // 尽职调查报告-删除\r\n \"Pages_DueDiligenceRecord_Edit\":\"Pages.DueDiligenceRecord:Edit\", // 尽职调查报告-修改\r\n\r\n\r\n \"Pages_ExpenseRecord\":\"Pages.ExpenseRecord\", // 支出记录单管理\r\n \"Pages_ExpenseRecord_Audit\":\"Pages.ExpenseRecord:Audit\", // 支出记录单管理-审核\r\n \"Pages_ExpenseRecord_ChangeApply\":\"Pages.ExpenseRecord:ChangeApply\", // 支出记录单管理-变更申请\r\n \"Pages_ExpenseRecord_Create\":\"Pages.ExpenseRecord:Create\", // 支出记录单管理-创建\r\n \"Pages_ExpenseRecord_Delete\":\"Pages.ExpenseRecord:Delete\", // 支出记录单管理-删除\r\n \"Pages_ExpenseRecord_Edit\":\"Pages.ExpenseRecord:Edit\", // 支出记录单管理-修改\r\n \"Pages_ExpenseRecord_ExpendTime\":\"Pages.ExpenseRecord:ExpendTime\", // 支出记录单管理-支出时间\r\n \"Pages_ExpenseRecord_Export\":\"Pages.ExpenseRecord:Export\", // 支出记录单管理-导出\r\n \"Pages_ExpenseRecord_Import\":\"Pages.ExpenseRecord:Import\", // 支出记录单管理-导入\r\n \"Pages_ExpenseRecord_StartAudit\":\"Pages.ExpenseRecord:StartAudit\", // 支出记录单管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProgressReports\":\"Pages.ExternalProgressReports\", // 中期报告管理\r\n \"Pages_ExternalProgressReports_Audit\":\"Pages.ExternalProgressReports:Audit\", // 中期报告管理-审核\r\n \"Pages_ExternalProgressReports_Create\":\"Pages.ExternalProgressReports:Create\", // 中期报告管理-创建\r\n \"Pages_ExternalProgressReports_Delete\":\"Pages.ExternalProgressReports:Delete\", // 中期报告管理-删除\r\n \"Pages_ExternalProgressReports_Edit\":\"Pages.ExternalProgressReports:Edit\", // 中期报告管理-修改\r\n \"Pages_ExternalProgressReports_FillNotice\":\"Pages.ExternalProgressReports:FillNotice\", // 中期报告管理- 发送填写通知\r\n \"Pages_ExternalProgressReports_StartAudit\":\"Pages.ExternalProgressReports:StartAudit\", // 中期报告管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProject\":\"Pages.ExternalProject\", // 外部项目\r\n\r\n\r\n \"Pages_ExternalProjectCloseReport\":\"Pages.ExternalProjectCloseReport\", // 结项评估报告\r\n \"Pages_ExternalProjectCloseReport_Audit\":\"Pages.ExternalProjectCloseReport:Audit\", // 结项评估报告-审核\r\n \"Pages_ExternalProjectCloseReport_Create\":\"Pages.ExternalProjectCloseReport:Create\", // 结项评估报告-创建\r\n \"Pages_ExternalProjectCloseReport_Delete\":\"Pages.ExternalProjectCloseReport:Delete\", // 结项评估报告-删除\r\n \"Pages_ExternalProjectCloseReport_Edit\":\"Pages.ExternalProjectCloseReport:Edit\", // 结项评估报告-修改\r\n \"Pages_ExternalProjectCloseReport_FillNotice\":\"Pages.ExternalProjectCloseReport:FillNotice\", // 结项评估报告- 发送填写通知\r\n \"Pages_ExternalProjectCloseReport_StartAudit\":\"Pages.ExternalProjectCloseReport:StartAudit\", // 结项评估报告-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectLetterIntent\":\"Pages.ExternalProjectLetterIntent\", // 意向书管理\r\n \"Pages_ExternalProjectLetterIntent_Audit\":\"Pages.ExternalProjectLetterIntent:Audit\", // 意向书管理-审核\r\n \"Pages_ExternalProjectLetterIntent_Delete\":\"Pages.ExternalProjectLetterIntent:Delete\", // 意向书管理-删除\r\n \"Pages_ExternalProjectLetterIntent_Edit\":\"Pages.ExternalProjectLetterIntent:Edit\", // 意向书管理-修改\r\n \"Pages_ExternalProjectLetterIntent_StartAudit\":\"Pages.ExternalProjectLetterIntent:StartAudit\", // 意向书管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectMonthlyPlan\":\"Pages.ExternalProjectMonthlyPlan\", // 项目月计划管理\r\n \"Pages_ExternalProjectMonthlyPlan_Audit\":\"Pages.ExternalProjectMonthlyPlan:Audit\", // 项目月计划管理-审核\r\n \"Pages_ExternalProjectMonthlyPlan_Create\":\"Pages.ExternalProjectMonthlyPlan:Create\", // 项目月计划管理-创建\r\n \"Pages_ExternalProjectMonthlyPlan_Delete\":\"Pages.ExternalProjectMonthlyPlan:Delete\", // 项目月计划管理-删除\r\n \"Pages_ExternalProjectMonthlyPlan_Edit\":\"Pages.ExternalProjectMonthlyPlan:Edit\", // 项目月计划管理-修改\r\n \"Pages_ExternalProjectMonthlyPlan_StartAudit\":\"Pages.ExternalProjectMonthlyPlan:StartAudit\", // 项目月计划管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectMonthlySummarize\":\"Pages.ExternalProjectMonthlySummarize\", // 项目月总结管理\r\n \"Pages_ExternalProjectMonthlySummarize_Audit\":\"Pages.ExternalProjectMonthlySummarize:Audit\", // 项目月总结管理-审核\r\n \"Pages_ExternalProjectMonthlySummarize_Create\":\"Pages.ExternalProjectMonthlySummarize:Create\", // 项目月总结管理-创建\r\n \"Pages_ExternalProjectMonthlySummarize_Delete\":\"Pages.ExternalProjectMonthlySummarize:Delete\", // 项目月总结管理-删除\r\n \"Pages_ExternalProjectMonthlySummarize_Edit\":\"Pages.ExternalProjectMonthlySummarize:Edit\", // 项目月总结管理-修改\r\n \"Pages_ExternalProjectMonthlySummarize_StartAudit\":\"Pages.ExternalProjectMonthlySummarize:StartAudit\", // 项目月总结管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectPartnerCapitalApply\":\"Pages.ExternalProjectPartnerCapitalApply\", // 合作方资金申请\r\n \"Pages_ExternalProjectPartnerCapitalApply_Audit\":\"Pages.ExternalProjectPartnerCapitalApply:Audit\", // 合作方资金申请-审核\r\n \"Pages_ExternalProjectPartnerCapitalApply_Create\":\"Pages.ExternalProjectPartnerCapitalApply:Create\", // 合作方资金申请-创建\r\n \"Pages_ExternalProjectPartnerCapitalApply_Delete\":\"Pages.ExternalProjectPartnerCapitalApply:Delete\", // 合作方资金申请-删除\r\n \"Pages_ExternalProjectPartnerCapitalApply_Edit\":\"Pages.ExternalProjectPartnerCapitalApply:Edit\", // 合作方资金申请-修改\r\n\r\n\r\n \"Pages_ExternalProjectPhases\":\"Pages.ExternalProjectPhases\", // 项目周期\r\n \"Pages_ExternalProjectPhases_Stop\":\"Pages.ExternalProjectPhases:Stop\", // 项目周期-终止\r\n\r\n\r\n \"Pages_ExternalProjectProcessMonitoring\":\"Pages.ExternalProjectProcessMonitoring\", // 监测记录管理\r\n \"Pages_ExternalProjectProcessMonitoring_Audit\":\"Pages.ExternalProjectProcessMonitoring:Audit\", // 监测记录管理-审核\r\n \"Pages_ExternalProjectProcessMonitoring_Create\":\"Pages.ExternalProjectProcessMonitoring:Create\", // 监测记录管理-创建\r\n \"Pages_ExternalProjectProcessMonitoring_Delete\":\"Pages.ExternalProjectProcessMonitoring:Delete\", // 监测记录管理-删除\r\n \"Pages_ExternalProjectProcessMonitoring_Edit\":\"Pages.ExternalProjectProcessMonitoring:Edit\", // 监测记录管理-修改\r\n \"Pages_ExternalProjectProcessMonitoring_FillNotice\":\"Pages.ExternalProjectProcessMonitoring:FillNotice\", // 监测记录管理-发送填写通知\r\n \"Pages_ExternalProjectProcessMonitoring_StartAudit\":\"Pages.ExternalProjectProcessMonitoring:StartAudit\", // 监测记录管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectProjectInvite\":\"Pages.ExternalProjectProjectInvite\", // 项目邀约\r\n \"Pages_ExternalProjectProjectInvite_Create\":\"Pages.ExternalProjectProjectInvite:Create\", // 项目邀约-创建\r\n \"Pages_ExternalProjectProjectInvite_Delete\":\"Pages.ExternalProjectProjectInvite:Delete\", // 项目邀约-删除\r\n\r\n\r\n \"Pages_ExternalProjectProposal\":\"Pages.ExternalProjectProposal\", // 计划书管理\r\n \"Pages_ExternalProjectProposal_Audit\":\"Pages.ExternalProjectProposal:Audit\", // 计划书管理-审核\r\n \"Pages_ExternalProjectProposal_ChangeManager\":\"Pages.ExternalProjectProposal:ChangeManager\", // 计划书管理-项目负责人修改\r\n \"Pages_ExternalProjectProposal_ChangeProjectReportSubmitDate\":\"Pages.ExternalProjectProposal:ChangeProjectReportSubmitDate\", // 计划书管理-项目报告提交时间设置\r\n \"Pages_ExternalProjectProposal_ChangeProjectType\":\"Pages.ExternalProjectProposal:ChangeProjectType\", // 计划书管理-修改项目类型\r\n \"Pages_ExternalProjectProposal_Delete\":\"Pages.ExternalProjectProposal:Delete\", // 计划书管理-删除\r\n \"Pages_ExternalProjectProposal_Edit\":\"Pages.ExternalProjectProposal:Edit\", // 计划书管理-修改\r\n \"Pages_ExternalProjectProposal_projectBudgetEdit\":\"Pages.ExternalProjectProposal:projectBudgetEdit\", // 计划书管理-维护项目预算表\r\n \"Pages_ExternalProjectProposal_ProjectResultEdit\":\"Pages.ExternalProjectProposal:ProjectResultEdit\", // 计划书管理-维护项目成果\r\n \"Pages_ExternalProjectProposal_PublishControl\":\"Pages.ExternalProjectProposal:PublishControl\", // 计划书管理-发布控制\r\n \"Pages_ExternalProjectProposal_StartAudit\":\"Pages.ExternalProjectProposal:StartAudit\", // 计划书管理-提交/重新审核\r\n \"Pages_ExternalProjectProposal_TitleImageUpdate\":\"Pages.ExternalProjectProposal:TitleImageUpdate\", // 计划书管理-修改标题图片\r\n\r\n\r\n \"Pages_ExternalProjectProposalChangeApply\":\"Pages.ExternalProjectProposalChangeApply\", // 计划书变更管理\r\n \"Pages_ExternalProjectProposalChangeApply_Audit\":\"Pages.ExternalProjectProposalChangeApply:Audit\", // 计划书变更管理-审核\r\n \"Pages_ExternalProjectProposalChangeApply_Create\":\"Pages.ExternalProjectProposalChangeApply:Create\", // 计划书变更管理-创建\r\n \"Pages_ExternalProjectProposalChangeApply_Delete\":\"Pages.ExternalProjectProposalChangeApply:Delete\", // 计划书变更管理-删除\r\n \"Pages_ExternalProjectProposalChangeApply_Edit\":\"Pages.ExternalProjectProposalChangeApply:Edit\", // 计划书变更管理-修改\r\n \"Pages_ExternalProjectProposalChangeApply_StartAudit\":\"Pages.ExternalProjectProposalChangeApply:StartAudit\", // 计划书变更管理-提交/重新审核\r\n\r\n\r\n \"Pages_ExternalProjectSummaryReport\":\"Pages.ExternalProjectSummaryReport\", // 自评报告管理\r\n \"Pages_ExternalProjectSummaryReport_Audit\":\"Pages.ExternalProjectSummaryReport:Audit\", // 自评报告管理-审核\r\n \"Pages_ExternalProjectSummaryReport_Create\":\"Pages.ExternalProjectSummaryReport:Create\", // 自评报告管理-创建\r\n \"Pages_ExternalProjectSummaryReport_Delete\":\"Pages.ExternalProjectSummaryReport:Delete\", // 自评报告管理-删除\r\n \"Pages_ExternalProjectSummaryReport_Edit\":\"Pages.ExternalProjectSummaryReport:Edit\", // 自评报告管理-修改\r\n \"Pages_ExternalProjectSummaryReport_FillNotice\":\"Pages.ExternalProjectSummaryReport:FillNotice\", // 自评报告管理- 发送填写通知\r\n \"Pages_ExternalProjectSummaryReport_StartAudit\":\"Pages.ExternalProjectSummaryReport:StartAudit\", // 自评报告管理-提交/重新审核\r\n\r\n\r\n \"Pages_Finance\":\"Pages.Finance\", // 财务管理\r\n\r\n\r\n \"Pages_FinanceManage\":\"Pages.FinanceManage\", // 项目报表\r\n\r\n\r\n \"Pages_FriendLink\":\"Pages.FriendLink\", // 合作伙伴\r\n \"Pages_FriendLink_Create\":\"Pages.FriendLink:Create\", // 合作伙伴-创建\r\n \"Pages_FriendLink_Delete\":\"Pages.FriendLink:Delete\", // 合作伙伴-删除\r\n \"Pages_FriendLink_Edit\":\"Pages.FriendLink:Edit\", // 合作伙伴-修改\r\n\r\n\r\n \"Pages_Fund\":\"Pages.Fund\", // 基金管理\r\n\r\n\r\n \"Pages_FundApply_Audit\":\"Pages.FundApply:Audit\", // 基金申请审核\r\n\r\n\r\n \"Pages_FundMaintain\":\"Pages.FundMaintain\", // 基金管理\r\n\r\n\r\n \"Pages_FundModifyApply\":\"Pages.FundModifyApply\", // 基金会修改审核\r\n\r\n\r\n \"Pages_FundUser\":\"Pages.FundUser\", // 基金成员管理\r\n\r\n\r\n \"Pages_InternalPersonalYearEndSummary\":\"Pages.InternalPersonalYearEndSummary\", // 个人年终总结\r\n \"Pages_InternalPersonalYearEndSummary_Audit\":\"Pages.InternalPersonalYearEndSummary:Audit\", // 个人年终总结-审核\r\n \"Pages_InternalPersonalYearEndSummary_Create\":\"Pages.InternalPersonalYearEndSummary:Create\", // 个人年终总结-创建\r\n \"Pages_InternalPersonalYearEndSummary_Delete\":\"Pages.InternalPersonalYearEndSummary:Delete\", // 个人年终总结-删除\r\n \"Pages_InternalPersonalYearEndSummary_Edit\":\"Pages.InternalPersonalYearEndSummary:Edit\", // 个人年终总结-修改\r\n \"Pages_InternalPersonalYearEndSummary_StartAudit\":\"Pages.InternalPersonalYearEndSummary:StartAudit\", // 个人年终总结-提交/重新审核\r\n\r\n\r\n \"Pages_InternalProject\":\"Pages.InternalProject\", // 内部项目\r\n\r\n\r\n \"Pages_InternalProjectBeneficiary\":\"Pages.InternalProjectBeneficiary\", // 受益人管理\r\n \"Pages_InternalProjectBeneficiary_Create\":\"Pages.InternalProjectBeneficiary:Create\", // 受益人管理-创建\r\n \"Pages_InternalProjectBeneficiary_Delete\":\"Pages.InternalProjectBeneficiary:Delete\", // 受益人管理-删除\r\n \"Pages_InternalProjectBeneficiary_Edit\":\"Pages.InternalProjectBeneficiary:Edit\", // 受益人管理-修改\r\n\r\n\r\n \"Pages_InternalProjectBeneficiaryServiceRecord\":\"Pages.InternalProjectBeneficiaryServiceRecord\", // 受益人服务记录\r\n \"Pages_InternalProjectBeneficiaryServiceRecord_Audit\":\"Pages.InternalProjectBeneficiaryServiceRecord:Audit\", // 受益人服务记录-审核\r\n \"Pages_InternalProjectBeneficiaryServiceRecord_Create\":\"Pages.InternalProjectBeneficiaryServiceRecord:Create\", // 受益人服务记录-创建\r\n \"Pages_InternalProjectBeneficiaryServiceRecord_Delete\":\"Pages.InternalProjectBeneficiaryServiceRecord:Delete\", // 受益人服务记录-删除\r\n \"Pages_InternalProjectBeneficiaryServiceRecord_Edit\":\"Pages.InternalProjectBeneficiaryServiceRecord:Edit\", // 受益人服务记录-修改\r\n\r\n\r\n \"Pages_InternalProjectMonthlyPlan\":\"Pages.InternalProjectMonthlyPlan\", // 月度计划管理\r\n \"Pages_InternalProjectMonthlyPlan_Audit\":\"Pages.InternalProjectMonthlyPlan:Audit\", // 月度计划管理-审核\r\n \"Pages_InternalProjectMonthlyPlan_Create\":\"Pages.InternalProjectMonthlyPlan:Create\", // 月度计划管理-创建\r\n \"Pages_InternalProjectMonthlyPlan_Delete\":\"Pages.InternalProjectMonthlyPlan:Delete\", // 月度计划管理-删除\r\n \"Pages_InternalProjectMonthlyPlan_Edit\":\"Pages.InternalProjectMonthlyPlan:Edit\", // 月度计划管理-修改\r\n \"Pages_InternalProjectMonthlyPlan_StartAudit\":\"Pages.InternalProjectMonthlyPlan:StartAudit\", // 月度计划管理-提交/重新审核\r\n\r\n\r\n \"Pages_InternalProjectMonthlySummarize\":\"Pages.InternalProjectMonthlySummarize\", // 月总结管理\r\n \"Pages_InternalProjectMonthlySummarize_Audit\":\"Pages.InternalProjectMonthlySummarize:Audit\", // 月总结管理-审核\r\n \"Pages_InternalProjectMonthlySummarize_Create\":\"Pages.InternalProjectMonthlySummarize:Create\", // 月总结管理-创建\r\n \"Pages_InternalProjectMonthlySummarize_Delete\":\"Pages.InternalProjectMonthlySummarize:Delete\", // 月总结管理-删除\r\n \"Pages_InternalProjectMonthlySummarize_Edit\":\"Pages.InternalProjectMonthlySummarize:Edit\", // 月总结管理-修改\r\n \"Pages_InternalProjectMonthlySummarize_StartAudit\":\"Pages.InternalProjectMonthlySummarize:StartAudit\", // 月总结管理-提交/重新审核\r\n\r\n\r\n \"Pages_InternalProjectPartnerCapitalApply\":\"Pages.InternalProjectPartnerCapitalApply\", // 合作方资金申请\r\n \"Pages_InternalProjectPartnerCapitalApply_Audit\":\"Pages.InternalProjectPartnerCapitalApply:Audit\", // 合作方资金申请-审核\r\n \"Pages_InternalProjectPartnerCapitalApply_Create\":\"Pages.InternalProjectPartnerCapitalApply:Create\", // 合作方资金申请-创建\r\n \"Pages_InternalProjectPartnerCapitalApply_Delete\":\"Pages.InternalProjectPartnerCapitalApply:Delete\", // 合作方资金申请-删除\r\n \"Pages_InternalProjectPartnerCapitalApply_Edit\":\"Pages.InternalProjectPartnerCapitalApply:Edit\", // 合作方资金申请-修改\r\n \"Pages_InternalProjectPartnerCapitalApply_StartAudit\":\"Pages.InternalProjectPartnerCapitalApply:StartAudit\", // 合作方资金申请-提交/重新审核\r\n\r\n\r\n \"Pages_InternalProjectPhases\":\"Pages.InternalProjectPhases\", // 项目周期\r\n \"Pages_InternalProjectPhases_Stop\":\"Pages.InternalProjectPhases:Stop\", // 项目周期-终止\r\n\r\n\r\n \"Pages_InternalProjectProjectInvite\":\"Pages.InternalProjectProjectInvite\", // 项目邀约\r\n \"Pages_InternalProjectProjectInvite_Copy\":\"Pages.InternalProjectProjectInvite:Copy\", // 项目邀约-复制项目\r\n \"Pages_InternalProjectProjectInvite_Create\":\"Pages.InternalProjectProjectInvite:Create\", // 项目邀约-创建\r\n \"Pages_InternalProjectProjectInvite_CustomFormEdit\":\"Pages.InternalProjectProjectInvite:CustomFormEdit\", // 项目邀约-自定义表单\r\n \"Pages_InternalProjectProjectInvite_Delete\":\"Pages.InternalProjectProjectInvite:Delete\", // 项目邀约-删除\r\n \"Pages_InternalProjectProjectInvite_Edit\":\"Pages.InternalProjectProjectInvite:Edit\", // 项目邀约-修改\r\n\r\n\r\n \"Pages_InternalProjectProposal\":\"Pages.InternalProjectProposal\", // 项目立项管理\r\n \"Pages_InternalProjectProposal_Audit\":\"Pages.InternalProjectProposal:Audit\", // 项目立项管理-审核\r\n \"Pages_InternalProjectProposal_BeneficiaryMapping\":\"Pages.InternalProjectProposal:BeneficiaryMapping\", // 项目立项管理-受益人管理\r\n \"Pages_InternalProjectProposal_ChangeManager\":\"Pages.InternalProjectProposal:ChangeManager\", // 项目立项管理-修改项目负责人\r\n \"Pages_InternalProjectProposal_ChangeProjectType\":\"Pages.InternalProjectProposal:ChangeProjectType\", // 项目立项管理-修改项目类型\r\n \"Pages_InternalProjectProposal_Delete\":\"Pages.InternalProjectProposal:Delete\", // 项目立项管理-删除\r\n \"Pages_InternalProjectProposal_Edit\":\"Pages.InternalProjectProposal:Edit\", // 项目立项管理-修改\r\n \"Pages_InternalProjectProposal_OrganizationUnitMapping\":\"Pages.InternalProjectProposal:OrganizationUnitMapping\", // 项目立项管理-合作方管理\r\n \"Pages_InternalProjectProposal_ProjectResultEdit\":\"Pages.InternalProjectProposal:ProjectResultEdit\", // 项目立项管理-维护项目成果\r\n \"Pages_InternalProjectProposal_PublishControl\":\"Pages.InternalProjectProposal:PublishControl\", // 项目立项管理-发布控制\r\n \"Pages_InternalProjectProposal_StartAudit\":\"Pages.InternalProjectProposal:StartAudit\", // 项目立项管理-提交/重新审核\r\n \"Pages_InternalProjectProposal_TitleImageUpdate\":\"Pages.InternalProjectProposal:TitleImageUpdate\", // 项目立项管理-修改标题图片\r\n \"Pages_InternalProjectProposal_UpdateBudgetItems\":\"Pages.InternalProjectProposal:UpdateBudgetItems\", // 项目立项管理-维护项目预算\r\n\r\n\r\n \"Pages_InternalProjectSchoolServiceRecord\":\"Pages.InternalProjectSchoolServiceRecord\", // 组织服务记录管理\r\n \"Pages_InternalProjectSchoolServiceRecord_Audit\":\"Pages.InternalProjectSchoolServiceRecord:Audit\", // 组织服务记录管理-审核\r\n \"Pages_InternalProjectSchoolServiceRecord_Create\":\"Pages.InternalProjectSchoolServiceRecord:Create\", // 组织服务记录管理-创建\r\n \"Pages_InternalProjectSchoolServiceRecord_Delete\":\"Pages.InternalProjectSchoolServiceRecord:Delete\", // 组织服务记录管理-删除\r\n \"Pages_InternalProjectSchoolServiceRecord_Edit\":\"Pages.InternalProjectSchoolServiceRecord:Edit\", // 组织服务记录管理-修改\r\n\r\n\r\n \"Pages_InternalProjectSummaryReports\":\"Pages.InternalProjectSummaryReports\", // 总结报告管理\r\n \"Pages_InternalProjectSummaryReports_Audit\":\"Pages.InternalProjectSummaryReports:Audit\", // 总结报告管理-审核\r\n \"Pages_InternalProjectSummaryReports_Create\":\"Pages.InternalProjectSummaryReports:Create\", // 总结报告管理-创建\r\n \"Pages_InternalProjectSummaryReports_Delete\":\"Pages.InternalProjectSummaryReports:Delete\", // 总结报告管理-删除\r\n \"Pages_InternalProjectSummaryReports_Edit\":\"Pages.InternalProjectSummaryReports:Edit\", // 总结报告管理-修改\r\n \"Pages_InternalProjectSummaryReports_FillNotice\":\"Pages.InternalProjectSummaryReports:FillNotice\", // 总结报告管理- 发送填写通知\r\n \"Pages_InternalProjectSummaryReports_StartAudit\":\"Pages.InternalProjectSummaryReports:StartAudit\", // 总结报告管理-提交/重新审核\r\n\r\n\r\n \"Pages_MessageCenter\":\"Pages.MessageCenter\", // 基金消息\r\n\r\n\r\n \"Pages_MoneyOtherIncome\":\"Pages.MoneyOtherIncome\", // 其他资金收入管理\r\n \"Pages_MoneyOtherIncome_Audit\":\"Pages.MoneyOtherIncome:Audit\", // 其他资金收入管理-审核\r\n \"Pages_MoneyOtherIncome_Create\":\"Pages.MoneyOtherIncome:Create\", // 其他资金收入管理-创建\r\n \"Pages_MoneyOtherIncome_Delete\":\"Pages.MoneyOtherIncome:Delete\", // 其他资金收入管理-删除\r\n \"Pages_MoneyOtherIncome_Edit\":\"Pages.MoneyOtherIncome:Edit\", // 其他资金收入管理-修改\r\n \"Pages_MoneyOtherIncome_Export\":\"Pages.MoneyOtherIncome:Export\", // 其他资金收入管理-导出\r\n \"Pages_MoneyOtherIncome_Import\":\"Pages.MoneyOtherIncome:Import\", // 其他资金收入管理-导入\r\n \"Pages_MoneyOtherIncome_StartAudit\":\"Pages.MoneyOtherIncome:StartAudit\", // 其他资金收入管理-提交/重新审核\r\n\r\n\r\n \"Pages_MyAudit\":\"Pages.MyAudit\", // 我的审核列表\r\n\r\n\r\n \"Pages_NotifyList\":\"Pages.NotifyList\", // 通知模板\r\n \"Pages_NotifyList_Create\":\"Pages.NotifyList:Create\", // 通知模板-创建\r\n \"Pages_NotifyList_Delete\":\"Pages.NotifyList:Delete\", // 通知模板-删除\r\n \"Pages_NotifyList_Edit\":\"Pages.NotifyList:Edit\", // 通知模板-修改\r\n\r\n\r\n \"Pages_NotifyRecordOrganizationInvestigation\":\"Pages.NotifyRecordOrganizationInvestigation\", // 尽职调查通知\r\n \"Pages_NotifyRecordOrganizationInvestigation_Create\":\"Pages.NotifyRecordOrganizationInvestigation:Create\", // 尽职调查通知-创建\r\n \"Pages_NotifyRecordOrganizationInvestigation_Delete\":\"Pages.NotifyRecordOrganizationInvestigation:Delete\", // 尽职调查通知-删除\r\n\r\n\r\n \"Pages_NotifyRecordProjectAssessmentPlan\":\"Pages.NotifyRecordProjectAssessmentPlan\", // 评估计划通知\r\n \"Pages_NotifyRecordProjectAssessmentPlan_Create\":\"Pages.NotifyRecordProjectAssessmentPlan:Create\", // 评估计划通知-创建\r\n \"Pages_NotifyRecordProjectAssessmentPlan_Delete\":\"Pages.NotifyRecordProjectAssessmentPlan:Delete\", // 评估计划通知-删除\r\n\r\n\r\n \"Pages_Organization\":\"Pages.Organization\", // 合作方维护\r\n \"Pages_Organization_Create\":\"Pages.Organization:Create\", // 合作方维护-创建\r\n \"Pages_Organization_Delete\":\"Pages.Organization:Delete\", // 合作方维护-删除\r\n \"Pages_Organization_Edit\":\"Pages.Organization:Edit\", // 合作方维护-修改\r\n \"Pages_Organization_Import\":\"Pages.Organization:Import\", // 合作方维护-导入\r\n\r\n\r\n \"Pages_OrganizationApply\":\"Pages.OrganizationApply\", // 合作方审核\r\n \"Pages_OrganizationApply_Audit\":\"Pages.OrganizationApply:Audit\", // 合作方审核-审核\r\n \"Pages_OrganizationApply_Delete\":\"Pages.OrganizationApply:Delete\", // 合作方审核-删除\r\n \"Pages_OrganizationApply_ImproveTheDueDiligenceReport\":\"Pages.OrganizationApply:ImproveTheDueDiligenceReport\", // 合作方审核-完善尽职调查报告\r\n\r\n\r\n \"Pages_PartnerCustomForm\":\"Pages.PartnerCustomForm\", // 合作方表单维护\r\n\r\n\r\n \"Pages_PartnerInvite\":\"Pages.PartnerInvite\", // 合作方邀约\r\n \"Pages_PartnerInvite_Create\":\"Pages.PartnerInvite:Create\", // 合作方邀约-创建\r\n \"Pages_PartnerInvite_Delete\":\"Pages.PartnerInvite:Delete\", // 合作方邀约-删除\r\n \"Pages_PartnerInvite_Edit\":\"Pages.PartnerInvite:Edit\", // 合作方邀约-修改\r\n \"Pages_PartnerInvite_Import\":\"Pages.PartnerInvite:Import\", // 合作方邀约-导入\r\n\r\n\r\n \"Pages_PermissionDefinition\":\"Pages.PermissionDefinition\", // 权限定义\r\n\r\n\r\n \"Pages_Project\":\"Pages.Project\", // 项目管理\r\n\r\n\r\n \"Pages_ProjectProjectSeries\":\"Pages.ProjectProjectSeries\", // 项目系列管理\r\n \"Pages_ProjectProjectSeries_Create\":\"Pages.ProjectProjectSeries:Create\", // 项目系列管理-创建\r\n \"Pages_ProjectProjectSeries_Delete\":\"Pages.ProjectProjectSeries:Delete\", // 项目系列管理-删除\r\n \"Pages_ProjectProjectSeries_Edit\":\"Pages.ProjectProjectSeries:Edit\", // 项目系列管理-修改\r\n\r\n\r\n \"Pages_Roles\":\"Pages.Roles\", // 角色管理\r\n \"Pages_Roles_Create\":\"Pages.Roles:Create\", // 角色管理-创建\r\n \"Pages_Roles_Delete\":\"Pages.Roles:Delete\", // 角色管理-删除\r\n \"Pages_Roles_Edit\":\"Pages.Roles:Edit\", // 角色管理-修改\r\n \"Pages_Roles_GrantPermissions\":\"Pages.Roles:GrantPermissions\", // 角色管理-分配权限\r\n\r\n\r\n \"Pages_System\":\"Pages.System\", // 系统设置\r\n\r\n\r\n \"Pages_Users\":\"Pages.Users\", // 用户管理\r\n \"Pages_Users_Create\":\"Pages.Users:Create\", // 用户管理-创建\r\n \"Pages_Users_Delete\":\"Pages.Users:Delete\", // 用户管理-删除\r\n \"Pages_Users_Edit\":\"Pages.Users:Edit\", // 用户管理-修改\r\n \"Pages_Users_ResetPassword\":\"Pages.Users:ResetPassword\", // 用户管理-重置密码\r\n}\r\nexport default permissions;","const areaAllApis: any = {}\r\n\r\nconst requiredApis = require.context(\r\n '@/api/areas', true, /\\.js$/\r\n)\r\n\r\nrequiredApis.keys()\r\n .forEach((fileName: string) => {\r\n const name: any[] | null = /([\\w\\d]+)/.exec(fileName)\r\n const areaApi = requiredApis(fileName)\r\n if (name != null)\r\n areaAllApis[name[0]] = (areaApi.default)\r\n });\r\nexport default areaAllApis\r\n","\r\nimport Vue from 'vue'\r\nimport Pin from 'vue-pin';\r\n\r\nimport 'normalize.css'\r\nimport ElementUI from 'element-ui'\r\nimport SvgIcon from 'vue-svgicon'\r\nimport '@/styles/element-variables.scss'\r\nimport '@/styles/index.scss'\r\n\r\nimport App from '@/App.vue'\r\nimport store from '@/store'\r\nimport router from '@/router'\r\nimport '@/icons/components'\r\nimport '@/permission'\r\nimport filter from \"@/utils/filter\"\r\nimport enumFilter from '@/mixins/filters/enums';\r\nimport permissions from '@/core/permission';\r\n\r\nimport areaAllApis from \"@/api/area\"\r\n\r\nimport '../public/ueditor/ueditor.config.js'\r\nimport '../public/ueditor/ueditor.all.js'\r\nimport '../public/ueditor/lang/zh-cn/zh-cn.js'\r\nimport '../public/ueditor/ueditor.parse.min.js'\r\nimport '../public/ueditor/themes/default/css/ueditor.min.css'\r\n\r\nVue.filter('formatDate', filter.formatDate)\r\nVue.filter('formatYearMonthDayDate', filter.formatYearMonthDayDate)\r\nVue.filter('formatYearMonthDayDateData', filter.formatYearMonthDayDateData)\r\nVue.filter('formatYearMonthData', filter.formatYearMonthData)\r\nVue.filter('currency', filter.currency)\r\nVue.filter('formatPartnerOrg',filter.formatPartnerOrg)\r\nVue.filter('formatYearMonth',filter.formatYearMonth)\r\nVue.filter('formatCurrencyType',filter.formatCurrencyType)\r\nVue.filter('formatCapitalProperty',filter.formatCapitalProperty)\r\nVue.filter('formatIncomeType',filter.formatIncomeType)\r\nVue.filter('formatIncomeCategory',filter.formatIncomeCategory)\r\nVue.filter('formatCurrency',filter.formatCurrency)\r\nVue.filter('getSingleColumnSum',filter.getSingleColumnSum)\r\nVue.filter('formatMoney',filter.formatMoney)\r\nVue.filter('formatYesOrNo',filter.formatYesOrNo)\r\nVue.filter('volunteerHistoryServiceType',enumFilter.filters.volunteerHistoryServiceType);\r\n\r\n\r\nVue.filter('formatIsSynced',filter.formatIsSynced)\r\nVue.filter('formatIsEnabled',filter.formatIsEnabled)\r\nVue.prototype.$uploadUrl = process.env.VUE_APP_BASE_API + '/api/services/app/Client/Upload?id=2'\r\nVue.prototype.$abpApi = areaAllApis;\r\nVue.prototype.baseURL = process.env.VUE_APP_BASE_API;\r\nVue.prototype.$permissions = permissions;\r\nVue.prototype.hasPermission = hasPermission;\r\nVue.use(ElementUI);\r\nVue.use(Pin);\r\nVue.use(SvgIcon, {\r\n tagName: 'svg-icon',\r\n defaultWidth: '1em',\r\n defaultHeight: '1em'/**/\r\n});\r\n\r\nconst eventBus = new Vue();\r\n(window as any).$eventBus = eventBus;\r\nVue.prototype.$bus = eventBus;\r\n\r\n// 获取年月\r\nVue.prototype.$getCaption = function (obj: string, state: number = 0) {\r\n const index = obj.lastIndexOf(\"\\-\");\r\n if (state === 0) {\r\n obj = obj.substring(0, index);\r\n } else {\r\n obj = obj.substring(index + 1, obj.length);\r\n }\r\n return obj;\r\n};\r\n\r\n\r\nVue.config.productionTip = false\r\nVue.prototype.$getActualPageIndex = function () {\r\n var historyParams = sessionStorage.getItem('HISTORY_SEARCH_PARAMS')\r\n var historyUrlSame = sessionStorage.getItem('HISTORY_SEARCH_URL_SAME')\r\n if (historyParams && Boolean(historyUrlSame)) {\r\n historyParams = JSON.parse(historyParams)\r\n // @ts-ignore\r\n return historyParams.PageInde\r\n }\r\n return -1\r\n}\r\n\r\nVue.prototype.$getActualPageSize = function () {\r\n var historyParams = sessionStorage.getItem('HISTORY_SEARCH_PARAMS')\r\n var historyUrlSame = sessionStorage.getItem('HISTORY_SEARCH_path')\r\n console.log(location.hash, 'this.$route.path')\r\n if (historyParams && location.hash === historyUrlSame) {\r\n historyParams = JSON.parse(historyParams)\r\n // @ts-ignore\r\n return historyParams.PageSize\r\n }\r\n return -1\r\n}\r\n\r\n\r\nVue.prototype.$clearHistorySearchParams = function () {\r\n sessionStorage.setItem('HISTORY_SEARCH_PARAMS', '')\r\n sessionStorage.setItem('HISTORY_SEARCH_URL', '')\r\n}\r\n\r\n\r\nVue.directive('permission',{\r\n bind:(el,binding,vnode)=>{\r\n const permissionName = binding.value;\r\n const permissions = store.state.user.permissions;\r\n if(!hasPermission(permissionName)){\r\n el.style.display = 'none';\r\n }\r\n\r\n },\r\n update(el,binding,vnode){\r\n console.log(' directive:permission update');\r\n const permissionName = binding.value;\r\n const permissions = store.state.user.permissions;\r\n if(!hasPermission(permissionName)){\r\n el.style.display = 'none';\r\n } else {\r\n el.style.display = '';\r\n }\r\n }\r\n})\r\n\r\nfunction hasPermission(permissionName:string) :boolean{\r\n const permissions = store.state.user.permissions;\r\n if(!(permissions\r\n && permissions instanceof Array\r\n && permissions.length\r\n && permissions.some(name=>name === permissionName))){\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: (h) => h(App)\r\n}).$mount('#app')\r\n\r\n\r\n\r\n\r\n","(function(){(function(){UE=window.UE||{};var f=!!window.ActiveXObject,h={removeLastbs:function(a){return a.replace(/\\/$/,\"\")},extend:function(a,c){for(var b=arguments,d=this.isBoolean(b[b.length-1])?b[b.length-1]:!1,e=this.isBoolean(b[b.length-1])?b.length-1:b.length,k=1;k=b&&a===c)return d=k,!1});return d},hasClass:function(a,c){c=c.replace(/(^[ ]+)|([ ]+$)/g,\"\").replace(/[ ]{2,}/g,\" \").split(\" \");for(var b=0,d,e=a.className;d=c[b++];)if(!(new RegExp(\"\\\\b\"+d+\"\\\\b\",\"i\")).test(e))return!1;return b-1==c.length},addClass:function(a,c){if(a){c=\r\nthis.trim(c).replace(/[ ]{2,}/g,\" \").split(\" \");for(var b=0,d,e=a.className;d=c[b++];)(new RegExp(\"\\\\b\"+d+\"\\\\b\")).test(e)||(e+=\" \"+d);a.className=h.trim(e)}},removeClass:function(a,c){c=this.isArray(c)?c:this.trim(c).replace(/[ ]{2,}/g,\" \").split(\" \");for(var b=0,d,e=a.className;d=c[b++];)e=e.replace(new RegExp(\"\\\\b\"+d+\"\\\\b\"),\"\");e=this.trim(e).replace(/[ ]{2,}/g,\" \");a.className=e;!e&&a.removeAttribute(\"className\")},on:function(a,c,b){var d=this.isArray(c)?c:c.split(/\\s+/),e=d.length;if(e)for(;e--;)if(c=\r\nd[e],a.addEventListener)a.addEventListener(c,b,!1);else{b._d||(b._d={els:[]});var k=c+b.toString(),n=h.indexOf(b._d.els,a);b._d[k]&&-1!=n||(-1==n&&b._d.els.push(a),b._d[k]||(b._d[k]=function(a){return b.call(a.srcElement,a||window.event)}),a.attachEvent(\"on\"+c,b._d[k]))}a=null},off:function(a,c,b){var d=this.isArray(c)?c:c.split(/\\s+/),e=d.length;if(e)for(;e--;)if(c=d[e],a.removeEventListener)a.removeEventListener(c,b,!1);else{var k=c+b.toString();try{a.detachEvent(\"on\"+c,b._d?b._d[k]:b)}catch(n){}b._d&&\r\nb._d[k]&&(c=h.indexOf(b._d.els,a),-1!=c&&b._d.els.splice(c,1),0==b._d.els.length&&delete b._d[k])}},loadFile:function(){function a(a,d){try{for(var e=0,k;k=c[e++];)if(k.doc===a&&k.url==(d.src||d.href))return k}catch(n){return null}}var c=[];return function(b,d,e){var k=a(b,d);if(k)k.ready?e&&e():k.funs.push(e);else if(c.push({doc:b,url:d.src||d.href,funs:[e]}),!b.body){e=[];for(var n in d)\"tag\"!=n&&e.push(n+'=\"'+d[n]+'\"');b.write(\"<\"+d.tag+\" \"+e.join(\" \")+\" >\")}else if(!d.id||!b.getElementById(d.id)){var l=\r\nb.createElement(d.tag);delete d.tag;for(n in d)l.setAttribute(n,d[n]);l.onload=l.onreadystatechange=function(){if(!this.readyState||/loaded|complete/.test(this.readyState)){k=a(b,d);if(0 request({\r\n url: '/api/services/app/payrollAssign/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n get: data => request({\r\n url: '/api/services/app/payrollAssign/Get',\r\n method: 'get',\r\n params: data\r\n }),\r\n getForEdit: data => request({\r\n url: '/api/services/app/payrollAssign/GetForEdit',\r\n method: 'get',\r\n params: data\r\n }),\r\n create: data => request({\r\n url: '/api/services/app/payrollAssign/Create',\r\n method: 'post',\r\n data: data\r\n }),\r\n update: data => request({\r\n url: '/api/services/app/payrollAssign/Update',\r\n method: 'put',\r\n data: data\r\n }),\r\n delete: function(data) {\r\n return request({\r\n url: '/api/services/app/payrollAssign/delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n }\r\n}\r\n","/*!\r\n * UEditor\r\n * version: ueditor\r\n * build: Tue Aug 25 2015 15:26:07 GMT+0800 (CST)\r\n */\r\n\r\n(function () {\r\n // editor.js\r\n UEDITOR_CONFIG = window.UEDITOR_CONFIG || {};\r\n\r\n var baidu = window.baidu || {};\r\n\r\n window.baidu = baidu;\r\n\r\n window.UE = baidu.editor = window.UE || {};\r\n\r\n UE.plugins = {};\r\n\r\n UE.commands = {};\r\n\r\n UE.instants = {};\r\n\r\n UE.I18N = {};\r\n\r\n UE._customizeUI = {};\r\n\r\n UE.version = \"1.4.3\";\r\n\r\n var dom = UE.dom = {};\r\n\r\n // core/browser.js\r\n /**\r\n * 浏览器判断模块\r\n * @file\r\n * @module UE.browser\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 提供浏览器检测的模块\r\n * @unfile\r\n * @module UE.browser\r\n */\r\n var browser = UE.browser = function () {\r\n var agent = navigator.userAgent.toLowerCase(),\r\n opera = window.opera,\r\n browser = {\r\n /**\r\n * @property {boolean} ie 检测当前浏览器是否为IE\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie ) {\r\n * console.log( '当前浏览器是IE' );\r\n * }\r\n * ```\r\n */\r\n ie: /(msie\\s|trident.*rv:)([\\w.]+)/.test(agent),\r\n\r\n /**\r\n * @property {boolean} opera 检测当前浏览器是否为Opera\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.opera ) {\r\n * console.log( '当前浏览器是Opera' );\r\n * }\r\n * ```\r\n */\r\n opera: (!!opera && opera.version),\r\n\r\n /**\r\n * @property {boolean} webkit 检测当前浏览器是否是webkit内核的浏览器\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.webkit ) {\r\n * console.log( '当前浏览器是webkit内核浏览器' );\r\n * }\r\n * ```\r\n */\r\n webkit: (agent.indexOf(' applewebkit/') > -1),\r\n\r\n /**\r\n * @property {boolean} mac 检测当前浏览器是否是运行在mac平台下\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.mac ) {\r\n * console.log( '当前浏览器运行在mac平台下' );\r\n * }\r\n * ```\r\n */\r\n mac: (agent.indexOf('macintosh') > -1),\r\n\r\n /**\r\n * @property {boolean} quirks 检测当前浏览器是否处于“怪异模式”下\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.quirks ) {\r\n * console.log( '当前浏览器运行处于“怪异模式”' );\r\n * }\r\n * ```\r\n */\r\n quirks: (document.compatMode == 'BackCompat')\r\n };\r\n\r\n /**\r\n * @property {boolean} gecko 检测当前浏览器内核是否是gecko内核\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.gecko ) {\r\n * console.log( '当前浏览器内核是gecko内核' );\r\n * }\r\n * ```\r\n */\r\n browser.gecko = (navigator.product == 'Gecko' && !browser.webkit && !browser.opera && !browser.ie);\r\n\r\n var version = 0;\r\n\r\n // Internet Explorer 6.0+\r\n if (browser.ie) {\r\n\r\n var v1 = agent.match(/(?:msie\\s([\\w.]+))/);\r\n var v2 = agent.match(/(?:trident.*rv:([\\w.]+))/);\r\n if (v1 && v2 && v1[1] && v2[1]) {\r\n version = Math.max(v1[1] * 1, v2[1] * 1);\r\n } else if (v1 && v1[1]) {\r\n version = v1[1] * 1;\r\n } else if (v2 && v2[1]) {\r\n version = v2[1] * 1;\r\n } else {\r\n version = 0;\r\n }\r\n\r\n browser.ie11Compat = document.documentMode == 11;\r\n /**\r\n * @property { boolean } ie9Compat 检测浏览器模式是否为 IE9 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie9Compat ) {\r\n * console.log( '当前浏览器运行在IE9兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie9Compat = document.documentMode == 9;\r\n\r\n /**\r\n * @property { boolean } ie8 检测浏览器是否是IE8浏览器\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie8 ) {\r\n * console.log( '当前浏览器是IE8浏览器' );\r\n * }\r\n * ```\r\n */\r\n browser.ie8 = !!document.documentMode;\r\n\r\n /**\r\n * @property { boolean } ie8Compat 检测浏览器模式是否为 IE8 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie8Compat ) {\r\n * console.log( '当前浏览器运行在IE8兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie8Compat = document.documentMode == 8;\r\n\r\n /**\r\n * @property { boolean } ie7Compat 检测浏览器模式是否为 IE7 兼容模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie7Compat ) {\r\n * console.log( '当前浏览器运行在IE7兼容模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie7Compat = ((version == 7 && !document.documentMode) ||\r\n document.documentMode == 7);\r\n\r\n /**\r\n * @property { boolean } ie6Compat 检测浏览器模式是否为 IE6 模式 或者怪异模式\r\n * @warning 如果浏览器不是IE, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.ie6Compat ) {\r\n * console.log( '当前浏览器运行在IE6模式或者怪异模式下' );\r\n * }\r\n * ```\r\n */\r\n browser.ie6Compat = (version < 7 || browser.quirks);\r\n\r\n browser.ie9above = version > 8;\r\n\r\n browser.ie9below = version < 9;\r\n\r\n browser.ie11above = version > 10;\r\n\r\n browser.ie11below = version < 11;\r\n\r\n }\r\n\r\n // Gecko.\r\n if (browser.gecko) {\r\n var geckoRelease = agent.match(/rv:([\\d\\.]+)/);\r\n if (geckoRelease) {\r\n geckoRelease = geckoRelease[1].split('.');\r\n version = geckoRelease[0] * 10000 + (geckoRelease[1] || 0) * 100 + (geckoRelease[2] || 0) * 1;\r\n }\r\n }\r\n\r\n /**\r\n * @property { Number } chrome 检测当前浏览器是否为Chrome, 如果是,则返回Chrome的大版本号\r\n * @warning 如果浏览器不是chrome, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.chrome ) {\r\n * console.log( '当前浏览器是Chrome' );\r\n * }\r\n * ```\r\n */\r\n if (/chrome\\/(\\d+\\.\\d)/i.test(agent)) {\r\n browser.chrome = +RegExp['\\x241'];\r\n }\r\n\r\n /**\r\n * @property { Number } safari 检测当前浏览器是否为Safari, 如果是,则返回Safari的大版本号\r\n * @warning 如果浏览器不是safari, 则该值为undefined\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.safari ) {\r\n * console.log( '当前浏览器是Safari' );\r\n * }\r\n * ```\r\n */\r\n if (/(\\d+\\.\\d)?(?:\\.\\d)?\\s+safari\\/?(\\d+\\.\\d+)?/i.test(agent) && !/chrome/i.test(agent)) {\r\n browser.safari = +(RegExp['\\x241'] || RegExp['\\x242']);\r\n }\r\n\r\n\r\n // Opera 9.50+\r\n if (browser.opera)\r\n version = parseFloat(opera.version());\r\n\r\n // WebKit 522+ (Safari 3+)\r\n if (browser.webkit)\r\n version = parseFloat(agent.match(/ applewebkit\\/(\\d+)/)[1]);\r\n\r\n /**\r\n * @property { Number } version 检测当前浏览器版本号\r\n * @remind\r\n *
    \r\n *
  • IE系列返回值为5,6,7,8,9,10等
  • \r\n *
  • gecko系列会返回10900,158900等
  • \r\n *
  • webkit系列会返回其build号 (如 522等)
  • \r\n *
\r\n * @example\r\n * ```javascript\r\n * console.log( '当前浏览器版本号是: ' + UE.browser.version );\r\n * ```\r\n */\r\n browser.version = version;\r\n\r\n /**\r\n * @property { boolean } isCompatible 检测当前浏览器是否能够与UEditor良好兼容\r\n * @example\r\n * ```javascript\r\n * if ( UE.browser.isCompatible ) {\r\n * console.log( '浏览器与UEditor能够良好兼容' );\r\n * }\r\n * ```\r\n */\r\n browser.isCompatible = !browser.mobile && (\r\n (browser.ie && version >= 6) ||\r\n (browser.gecko && version >= 10801) ||\r\n (browser.opera && version >= 9.5) ||\r\n (browser.air && version >= 1) ||\r\n (browser.webkit && version >= 522) ||\r\n false);\r\n return browser;\r\n }();\r\n //快捷方式\r\n var ie = browser.ie,\r\n webkit = browser.webkit,\r\n gecko = browser.gecko,\r\n opera = browser.opera;\r\n\r\n // core/utils.js\r\n /**\r\n * 工具函数包\r\n * @file\r\n * @module UE.utils\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * UEditor封装使用的静态工具函数\r\n * @module UE.utils\r\n * @unfile\r\n */\r\n\r\n var utils = UE.utils = {\r\n\r\n /**\r\n * 用给定的迭代器遍历对象\r\n * @method each\r\n * @param { Object } obj 需要遍历的对象\r\n * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key\r\n * @example\r\n * ```javascript\r\n * var demoObj = {\r\n * key1: 1,\r\n * key2: 2\r\n * };\r\n *\r\n * //output: key1: 1, key2: 2\r\n * UE.utils.each( demoObj, funciton ( value, key ) {\r\n *\r\n * console.log( key + \":\" + value );\r\n *\r\n * } );\r\n * ```\r\n */\r\n\r\n /**\r\n * 用给定的迭代器遍历数组或类数组对象\r\n * @method each\r\n * @param { Array } array 需要遍历的数组或者类数组\r\n * @param { Function } iterator 迭代器, 该方法接受两个参数, 第一个参数是当前所处理的value, 第二个参数是当前遍历对象的key\r\n * @example\r\n * ```javascript\r\n * var divs = document.getElmentByTagNames( \"div\" );\r\n *\r\n * //output: 0: DIV, 1: DIV ...\r\n * UE.utils.each( divs, funciton ( value, key ) {\r\n *\r\n * console.log( key + \":\" + value.tagName );\r\n *\r\n * } );\r\n * ```\r\n */\r\n each: function (obj, iterator, context) {\r\n if (obj == null) return;\r\n if (obj.length === +obj.length) {\r\n for (var i = 0, l = obj.length; i < l; i++) {\r\n if (iterator.call(context, obj[i], i, obj) === false)\r\n return false;\r\n }\r\n } else {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (iterator.call(context, obj[key], key, obj) === false)\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 以给定对象作为原型创建一个新对象\r\n * @method makeInstance\r\n * @param { Object } protoObject 该对象将作为新创建对象的原型\r\n * @return { Object } 新的对象, 该对象的原型是给定的protoObject对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var protoObject = { sayHello: function () { console.log('Hello UEditor!'); } };\r\n *\r\n * var newObject = UE.utils.makeInstance( protoObject );\r\n * //output: Hello UEditor!\r\n * newObject.sayHello();\r\n * ```\r\n */\r\n makeInstance: function (obj) {\r\n var noop = new Function();\r\n noop.prototype = obj;\r\n obj = new noop;\r\n noop.prototype = null;\r\n return obj;\r\n },\r\n\r\n /**\r\n * 将source对象中的属性扩展到target对象上\r\n * @method extend\r\n * @remind 该方法将强制把source对象上的属性复制到target对象上\r\n * @see UE.utils.extend(Object,Object,Boolean)\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object } source 源对象, 该对象的属性会被附加到target对象上\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = { name: 'target', sex: 1 },\r\n * source = { name: 'source', age: 17 };\r\n *\r\n * UE.utils.extend( target, source );\r\n *\r\n * //output: { name: 'source', sex: 1, age: 17 }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 将source对象中的属性扩展到target对象上, 根据指定的isKeepTarget值决定是否保留目标对象中与\r\n * 源对象属性名相同的属性值。\r\n * @method extend\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object } source 源对象, 该对象的属性会被附加到target对象上\r\n * @param { Boolean } isKeepTarget 是否保留目标对象中与源对象中属性名相同的属性\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = { name: 'target', sex: 1 },\r\n * source = { name: 'source', age: 17 };\r\n *\r\n * UE.utils.extend( target, source, true );\r\n *\r\n * //output: { name: 'target', sex: 1, age: 17 }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n extend: function (t, s, b) {\r\n if (s) {\r\n for (var k in s) {\r\n if (!b || !t.hasOwnProperty(k)) {\r\n t[k] = s[k];\r\n }\r\n }\r\n }\r\n return t;\r\n },\r\n\r\n /**\r\n * 将给定的多个对象的属性复制到目标对象target上\r\n * @method extend2\r\n * @remind 该方法将强制把源对象上的属性复制到target对象上\r\n * @remind 该方法支持两个及以上的参数, 从第二个参数开始, 其属性都会被复制到第一个参数上。 如果遇到同名的属性,\r\n * 将会覆盖掉之前的值。\r\n * @param { Object } target 目标对象, 新的属性将附加到该对象上\r\n * @param { Object... } source 源对象, 支持多个对象, 该对象的属性会被附加到target对象上\r\n * @return { Object } 返回target对象\r\n * @example\r\n * ```javascript\r\n *\r\n * var target = {},\r\n * source1 = { name: 'source', age: 17 },\r\n * source2 = { title: 'dev' };\r\n *\r\n * UE.utils.extend2( target, source1, source2 );\r\n *\r\n * //output: { name: 'source', age: 17, title: 'dev' }\r\n * console.log( target );\r\n *\r\n * ```\r\n */\r\n extend2: function (t) {\r\n var a = arguments;\r\n for (var i = 1; i < a.length; i++) {\r\n var x = a[i];\r\n for (var k in x) {\r\n if (!t.hasOwnProperty(k)) {\r\n t[k] = x[k];\r\n }\r\n }\r\n }\r\n return t;\r\n },\r\n\r\n /**\r\n * 模拟继承机制, 使得subClass继承自superClass\r\n * @method inherits\r\n * @param { Object } subClass 子类对象\r\n * @param { Object } superClass 超类对象\r\n * @warning 该方法只能让subClass继承超类的原型, subClass对象自身的属性和方法不会被继承\r\n * @return { Object } 继承superClass后的子类对象\r\n * @example\r\n * ```javascript\r\n * function SuperClass(){\r\n * this.name = \"小李\";\r\n * }\r\n *\r\n * SuperClass.prototype = {\r\n * hello:function(str){\r\n * console.log(this.name + str);\r\n * }\r\n * }\r\n *\r\n * function SubClass(){\r\n * this.name = \"小张\";\r\n * }\r\n *\r\n * UE.utils.inherits(SubClass,SuperClass);\r\n *\r\n * var sub = new SubClass();\r\n * //output: '小张早上好!\r\n * sub.hello(\"早上好!\");\r\n * ```\r\n */\r\n inherits: function (subClass, superClass) {\r\n var oldP = subClass.prototype,\r\n newP = utils.makeInstance(superClass.prototype);\r\n utils.extend(newP, oldP, true);\r\n subClass.prototype = newP;\r\n return (newP.constructor = subClass);\r\n },\r\n\r\n /**\r\n * 用指定的context对象作为函数fn的上下文\r\n * @method bind\r\n * @param { Function } fn 需要绑定上下文的函数对象\r\n * @param { Object } content 函数fn新的上下文对象\r\n * @return { Function } 一个新的函数, 该函数作为原始函数fn的代理, 将完成fn的上下文调换工作。\r\n * @example\r\n * ```javascript\r\n *\r\n * var name = 'window',\r\n * newTest = null;\r\n *\r\n * function test () {\r\n * console.log( this.name );\r\n * }\r\n *\r\n * newTest = UE.utils.bind( test, { name: 'object' } );\r\n *\r\n * //output: object\r\n * newTest();\r\n *\r\n * //output: window\r\n * test();\r\n *\r\n * ```\r\n */\r\n bind: function (fn, context) {\r\n return function () {\r\n return fn.apply(context, arguments);\r\n };\r\n },\r\n\r\n /**\r\n * 创建延迟指定时间后执行的函数fn\r\n * @method defer\r\n * @param { Function } fn 需要延迟执行的函数对象\r\n * @param { int } delay 延迟的时间, 单位是毫秒\r\n * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后,\r\n * 而不能保证刚好到达延迟时间时执行。\r\n * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果\r\n * @example\r\n * ```javascript\r\n * var start = 0;\r\n *\r\n * function test(){\r\n * console.log( new Date() - start );\r\n * }\r\n *\r\n * var testDefer = UE.utils.defer( test, 1000 );\r\n * //\r\n * start = new Date();\r\n * //output: (大约在1000毫秒之后输出) 1000\r\n * testDefer();\r\n * ```\r\n */\r\n\r\n /**\r\n * 创建延迟指定时间后执行的函数fn, 如果在延迟时间内再次执行该方法, 将会根据指定的exclusion的值,\r\n * 决定是否取消前一次函数的执行, 如果exclusion的值为true, 则取消执行,反之,将继续执行前一个方法。\r\n * @method defer\r\n * @param { Function } fn 需要延迟执行的函数对象\r\n * @param { int } delay 延迟的时间, 单位是毫秒\r\n * @param { Boolean } exclusion 如果在延迟时间内再次执行该函数,该值将决定是否取消执行前一次函数的执行,\r\n * 值为true表示取消执行, 反之则将在执行前一次函数之后才执行本次函数调用。\r\n * @warning 该方法的时间控制是不精确的,仅仅只能保证函数的执行是在给定的时间之后,\r\n * 而不能保证刚好到达延迟时间时执行。\r\n * @return { Function } 目标函数fn的代理函数, 只有执行该函数才能起到延时效果\r\n * @example\r\n * ```javascript\r\n *\r\n * function test(){\r\n * console.log(1);\r\n * }\r\n *\r\n * var testDefer = UE.utils.defer( test, 1000, true );\r\n *\r\n * //output: (两次调用仅有一次输出) 1\r\n * testDefer();\r\n * testDefer();\r\n * ```\r\n */\r\n defer: function (fn, delay, exclusion) {\r\n var timerID;\r\n return function () {\r\n if (exclusion) {\r\n clearTimeout(timerID);\r\n }\r\n timerID = setTimeout(fn, delay);\r\n };\r\n },\r\n\r\n /**\r\n * 获取元素item在数组array中首次出现的位置, 如果未找到item, 则返回-1\r\n * @method indexOf\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @param { Array } array 需要查找的数组对象\r\n * @param { * } item 需要在目标数组中查找的值\r\n * @return { int } 返回item在目标数组array中首次出现的位置, 如果在数组中未找到item, 则返回-1\r\n * @example\r\n * ```javascript\r\n * var item = 1,\r\n * arr = [ 3, 4, 6, 8, 1, 1, 2 ];\r\n *\r\n * //output: 4\r\n * console.log( UE.utils.indexOf( arr, item ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取元素item数组array中首次出现的位置, 如果未找到item, 则返回-1。通过start的值可以指定搜索的起始位置。\r\n * @method indexOf\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @param { Array } array 需要查找的数组对象\r\n * @param { * } item 需要在目标数组中查找的值\r\n * @param { int } start 搜索的起始位置\r\n * @return { int } 返回item在目标数组array中的start位置之后首次出现的位置, 如果在数组中未找到item, 则返回-1\r\n * @example\r\n * ```javascript\r\n * var item = 1,\r\n * arr = [ 3, 4, 6, 8, 1, 2, 8, 3, 2, 1, 1, 4 ];\r\n *\r\n * //output: 9\r\n * console.log( UE.utils.indexOf( arr, item, 5 ) );\r\n * ```\r\n */\r\n indexOf: function (array, item, start) {\r\n var index = -1;\r\n start = this.isNumber(start) ? start : 0;\r\n this.each(array, function (v, i) {\r\n if (i >= start && v === item) {\r\n index = i;\r\n return false;\r\n }\r\n });\r\n return index;\r\n },\r\n\r\n /**\r\n * 移除数组array中所有的元素item\r\n * @method removeItem\r\n * @param { Array } array 要移除元素的目标数组\r\n * @param { * } item 将要被移除的元素\r\n * @remind 该方法的匹配过程使用的是恒等“===”\r\n * @example\r\n * ```javascript\r\n * var arr = [ 4, 5, 7, 1, 3, 4, 6 ];\r\n *\r\n * UE.utils.removeItem( arr, 4 );\r\n * //output: [ 5, 7, 1, 3, 6 ]\r\n * console.log( arr );\r\n *\r\n * ```\r\n */\r\n removeItem: function (array, item) {\r\n for (var i = 0, l = array.length; i < l; i++) {\r\n if (array[i] === item) {\r\n array.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 删除字符串str的首尾空格\r\n * @method trim\r\n * @param { String } str 需要删除首尾空格的字符串\r\n * @return { String } 删除了首尾的空格后的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = \" UEdtior \";\r\n *\r\n * //output: 9\r\n * console.log( str.length );\r\n *\r\n * //output: 7\r\n * console.log( UE.utils.trim( \" UEdtior \" ).length );\r\n *\r\n * //output: 9\r\n * console.log( str.length );\r\n *\r\n * ```\r\n */\r\n trim: function (str) {\r\n return str.replace(/(^[ \\t\\n\\r]+)|([ \\t\\n\\r]+$)/g, '');\r\n },\r\n\r\n /**\r\n * 将字符串str以','分隔成数组后,将该数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1\r\n * @method listToMap\r\n * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。\r\n * @param { String } str 该字符串将被以','分割为数组, 然后进行转化\r\n * @return { Object } 转化之后的hash对象\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1}\r\n * console.log( UE.utils.listToMap( 'UEdtior,Hello' ) );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 将字符串数组转换成哈希对象, 其生成的hash对象的key为数组中的元素, value为1\r\n * @method listToMap\r\n * @warning 该方法在生成的hash对象中,会为每一个key同时生成一个另一个全大写的key。\r\n * @param { Array } arr 字符串数组\r\n * @return { Object } 转化之后的hash对象\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: Object {UEdtior: 1, UEDTIOR: 1, Hello: 1, HELLO: 1}\r\n * console.log( UE.utils.listToMap( [ 'UEdtior', 'Hello' ] ) );\r\n *\r\n * ```\r\n */\r\n listToMap: function (list) {\r\n if (!list) return {};\r\n list = utils.isArray(list) ? list : list.split(',');\r\n for (var i = 0, ci, obj = {}; ci = list[i++];) {\r\n obj[ci.toUpperCase()] = obj[ci] = 1;\r\n }\r\n return obj;\r\n },\r\n\r\n /**\r\n * 将str中的html符号转义,将转义“',&,<,\",>”五个字符\r\n * @method unhtml\r\n * @param { String } str 需要转义的字符串\r\n * @return { String } 转义后的字符串\r\n * @example\r\n * ```javascript\r\n * var html = '&';\r\n *\r\n * //output: <body>&</body>\r\n * console.log( UE.utils.unhtml( html ) );\r\n *\r\n * ```\r\n */\r\n unhtml: function (str, reg) {\r\n return str ? str.replace(reg || /[&<\">'](?:(amp|lt|quot|gt|#39|nbsp|#\\d+);)?/g, function (a, b) {\r\n if (b) {\r\n return a;\r\n } else {\r\n return {\r\n '<': '<',\r\n '&': '&',\r\n '\"': '"',\r\n '>': '>',\r\n \"'\": '''\r\n } [a]\r\n }\r\n\r\n }) : '';\r\n },\r\n\r\n /**\r\n * 将str中的转义字符还原成html字符\r\n * @see UE.utils.unhtml(String);\r\n * @method html\r\n * @param { String } str 需要逆转义的字符串\r\n * @return { String } 逆转义后的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = '<body>&</body>';\r\n *\r\n * //output: &\r\n * console.log( UE.utils.html( str ) );\r\n *\r\n * ```\r\n */\r\n html: function (str) {\r\n return str ? str.replace(/&((g|l|quo)t|amp|#39|nbsp);/g, function (m) {\r\n return {\r\n '<': '<',\r\n '&': '&',\r\n '"': '\"',\r\n '>': '>',\r\n ''': \"'\",\r\n ' ': ' '\r\n } [m]\r\n }) : '';\r\n },\r\n\r\n /**\r\n * 将css样式转换为驼峰的形式\r\n * @method cssStyleToDomStyle\r\n * @param { String } cssName 需要转换的css样式名\r\n * @return { String } 转换成驼峰形式后的css样式名\r\n * @example\r\n * ```javascript\r\n *\r\n * var str = 'border-top';\r\n *\r\n * //output: borderTop\r\n * console.log( UE.utils.cssStyleToDomStyle( str ) );\r\n *\r\n * ```\r\n */\r\n cssStyleToDomStyle: function () {\r\n var test = document.createElement('div').style,\r\n cache = {\r\n 'float': test.cssFloat != undefined ? 'cssFloat' : test.styleFloat != undefined ? 'styleFloat' : 'float'\r\n };\r\n\r\n return function (cssName) {\r\n return cache[cssName] || (cache[cssName] = cssName.toLowerCase().replace(/-./g, function (match) {\r\n return match.charAt(1).toUpperCase();\r\n }));\r\n };\r\n }(),\r\n\r\n /**\r\n * 动态加载文件到doc中\r\n * @method loadFile\r\n * @param { DomDocument } document 需要加载资源文件的文档对象\r\n * @param { Object } options 加载资源文件的属性集合, 取值请参考代码示例\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.loadFile( document, {\r\n * src:\"test.js\",\r\n * tag:\"script\",\r\n * type:\"text/javascript\",\r\n * defer:\"defer\"\r\n * } );\r\n *\r\n * ```\r\n */\r\n\r\n /**\r\n * 动态加载文件到doc中,加载成功后执行的回调函数fn\r\n * @method loadFile\r\n * @param { DomDocument } document 需要加载资源文件的文档对象\r\n * @param { Object } options 加载资源文件的属性集合, 该集合支持的值是script标签和style标签支持的所有属性。\r\n * @param { Function } fn 资源文件加载成功之后执行的回调\r\n * @warning 对于在同一个文档中多次加载同一URL的文件, 该方法会在第一次加载之后缓存该请求,\r\n * 在此之后的所有同一URL的请求, 将会直接触发回调。\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.loadFile( document, {\r\n * src:\"test.js\",\r\n * tag:\"script\",\r\n * type:\"text/javascript\",\r\n * defer:\"defer\"\r\n * }, function () {\r\n * console.log('加载成功');\r\n * } );\r\n *\r\n * ```\r\n */\r\n loadFile: function () {\r\n var tmpList = [];\r\n\r\n function getItem(doc, obj) {\r\n try {\r\n for (var i = 0, ci; ci = tmpList[i++];) {\r\n if (ci.doc === doc && ci.url == (obj.src || obj.href)) {\r\n return ci;\r\n }\r\n }\r\n } catch (e) {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n return function (doc, obj, fn) {\r\n var item = getItem(doc, obj);\r\n if (item) {\r\n if (item.ready) {\r\n fn && fn();\r\n } else {\r\n item.funs.push(fn)\r\n }\r\n return;\r\n }\r\n tmpList.push({\r\n doc: doc,\r\n url: obj.src || obj.href,\r\n funs: [fn]\r\n });\r\n if (!doc.body) {\r\n var html = [];\r\n for (var p in obj) {\r\n if (p == 'tag') continue;\r\n html.push(p + '=\"' + obj[p] + '\"')\r\n }\r\n doc.write('<' + obj.tag + ' ' + html.join(' ') + ' >');\r\n return;\r\n }\r\n if (obj.id && doc.getElementById(obj.id)) {\r\n return;\r\n }\r\n var element = doc.createElement(obj.tag);\r\n delete obj.tag;\r\n for (var p in obj) {\r\n element.setAttribute(p, obj[p]);\r\n }\r\n element.onload = element.onreadystatechange = function () {\r\n if (!this.readyState || /loaded|complete/.test(this.readyState)) {\r\n item = getItem(doc, obj);\r\n if (item.funs.length > 0) {\r\n item.ready = 1;\r\n for (var fi; fi = item.funs.pop();) {\r\n fi();\r\n }\r\n }\r\n element.onload = element.onreadystatechange = null;\r\n }\r\n };\r\n element.onerror = function () {\r\n throw Error('The load ' + (obj.href || obj.src) + ' fails,check the url settings of file ueditor.config.js ')\r\n };\r\n doc.getElementsByTagName(\"head\")[0].appendChild(element);\r\n }\r\n }(),\r\n\r\n /**\r\n * 判断obj对象是否为空\r\n * @method isEmptyObject\r\n * @param { * } obj 需要判断的对象\r\n * @remind 如果判断的对象是NULL, 将直接返回true, 如果是数组且为空, 返回true, 如果是字符串, 且字符串为空,\r\n * 返回true, 如果是普通对象, 且该对象没有任何实例属性, 返回true\r\n * @return { Boolean } 对象是否为空\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( {} ) );\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( [] ) );\r\n *\r\n * //output: true\r\n * console.log( UE.utils.isEmptyObject( \"\" ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( { key: 1 } ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( [1] ) );\r\n *\r\n * //output: false\r\n * console.log( UE.utils.isEmptyObject( \"1\" ) );\r\n *\r\n * ```\r\n */\r\n isEmptyObject: function (obj) {\r\n if (obj == null) return true;\r\n if (this.isArray(obj) || this.isString(obj)) return obj.length === 0;\r\n for (var key in obj)\r\n if (obj.hasOwnProperty(key)) return false;\r\n return true;\r\n },\r\n\r\n /**\r\n * 把rgb格式的颜色值转换成16进制格式\r\n * @method fixColor\r\n * @param { String } rgb格式的颜色值\r\n * @param { String }\r\n * @example\r\n * rgb(255,255,255) => \"#ffffff\"\r\n */\r\n fixColor: function (name, value) {\r\n if (/color/i.test(name) && /rgba?/.test(value)) {\r\n var array = value.split(\",\");\r\n if (array.length > 3)\r\n return \"\";\r\n value = \"#\";\r\n for (var i = 0, color; color = array[i++];) {\r\n color = parseInt(color.replace(/[^\\d]/gi, ''), 10).toString(16);\r\n value += color.length == 1 ? \"0\" + color : color;\r\n }\r\n value = value.toUpperCase();\r\n }\r\n return value;\r\n },\r\n /**\r\n * 只针对border,padding,margin做了处理,因为性能问题\r\n * @public\r\n * @function\r\n * @param {String} val style字符串\r\n */\r\n optCss: function (val) {\r\n var padding, margin, border;\r\n val = val.replace(/(padding|margin|border)\\-([^:]+):([^;]+);?/gi, function (str, key, name, val) {\r\n if (val.split(' ').length == 1) {\r\n switch (key) {\r\n case 'padding':\r\n !padding && (padding = {});\r\n padding[name] = val;\r\n return '';\r\n case 'margin':\r\n !margin && (margin = {});\r\n margin[name] = val;\r\n return '';\r\n case 'border':\r\n return val == 'initial' ? '' : str;\r\n }\r\n }\r\n return str;\r\n });\r\n\r\n function opt(obj, name) {\r\n if (!obj) {\r\n return '';\r\n }\r\n var t = obj.top,\r\n b = obj.bottom,\r\n l = obj.left,\r\n r = obj.right,\r\n val = '';\r\n if (!t || !l || !b || !r) {\r\n for (var p in obj) {\r\n val += ';' + name + '-' + p + ':' + obj[p] + ';';\r\n }\r\n } else {\r\n val += ';' + name + ':' +\r\n (t == b && b == l && l == r ? t :\r\n t == b && l == r ? (t + ' ' + l) :\r\n l == r ? (t + ' ' + l + ' ' + b) : (t + ' ' + r + ' ' + b + ' ' + l)) + ';'\r\n }\r\n return val;\r\n }\r\n\r\n val += opt(padding, 'padding') + opt(margin, 'margin');\r\n return val.replace(/^[ \\n\\r\\t;]*|[ \\n\\r\\t]*$/, '').replace(/;([ \\n\\r\\t]+)|\\1;/g, ';')\r\n .replace(/(&((l|g)t|quot|#39))?;{2,}/g, function (a, b) {\r\n return b ? b + \";;\" : ';'\r\n });\r\n },\r\n\r\n /**\r\n * 克隆对象\r\n * @method clone\r\n * @param { Object } source 源对象\r\n * @return { Object } source的一个副本\r\n */\r\n\r\n /**\r\n * 深度克隆对象,将source的属性克隆到target对象, 会覆盖target重名的属性。\r\n * @method clone\r\n * @param { Object } source 源对象\r\n * @param { Object } target 目标对象\r\n * @return { Object } 附加了source对象所有属性的target对象\r\n */\r\n clone: function (source, target) {\r\n var tmp;\r\n target = target || {};\r\n for (var i in source) {\r\n if (source.hasOwnProperty(i)) {\r\n tmp = source[i];\r\n if (typeof tmp == 'object') {\r\n target[i] = utils.isArray(tmp) ? [] : {};\r\n utils.clone(source[i], target[i])\r\n } else {\r\n target[i] = tmp;\r\n }\r\n }\r\n }\r\n return target;\r\n },\r\n\r\n /**\r\n * 把cm/pt为单位的值转换为px为单位的值\r\n * @method transUnitToPx\r\n * @param { String } 待转换的带单位的字符串\r\n * @return { String } 转换为px为计量单位的值的字符串\r\n * @example\r\n * ```javascript\r\n *\r\n * //output: 500px\r\n * console.log( UE.utils.transUnitToPx( '20cm' ) );\r\n *\r\n * //output: 27px\r\n * console.log( UE.utils.transUnitToPx( '20pt' ) );\r\n *\r\n * ```\r\n */\r\n transUnitToPx: function (val) {\r\n if (!/(pt|cm)/.test(val)) {\r\n return val\r\n }\r\n var unit;\r\n val.replace(/([\\d.]+)(\\w+)/, function (str, v, u) {\r\n val = v;\r\n unit = u;\r\n });\r\n switch (unit) {\r\n case 'cm':\r\n val = parseFloat(val) * 25;\r\n break;\r\n case 'pt':\r\n val = Math.round(parseFloat(val) * 96 / 72);\r\n }\r\n return val + (val ? 'px' : '');\r\n },\r\n\r\n /**\r\n * 在dom树ready之后执行给定的回调函数\r\n * @method domReady\r\n * @remind 如果在执行该方法的时候, dom树已经ready, 那么回调函数将立刻执行\r\n * @param { Function } fn dom树ready之后的回调函数\r\n * @example\r\n * ```javascript\r\n *\r\n * UE.utils.domReady( function () {\r\n *\r\n * console.log('123');\r\n *\r\n * } );\r\n *\r\n * ```\r\n */\r\n domReady: function () {\r\n\r\n var fnArr = [];\r\n\r\n function doReady(doc) {\r\n //确保onready只执行一次\r\n doc.isReady = true;\r\n for (var ci; ci = fnArr.pop(); ci()) {}\r\n }\r\n\r\n return function (onready, win) {\r\n win = win || window;\r\n var doc = win.document;\r\n onready && fnArr.push(onready);\r\n if (doc.readyState === \"complete\") {\r\n doReady(doc);\r\n } else {\r\n doc.isReady && doReady(doc);\r\n if (browser.ie && browser.version != 11) {\r\n (function () {\r\n if (doc.isReady) return;\r\n try {\r\n doc.documentElement.doScroll(\"left\");\r\n } catch (error) {\r\n setTimeout(arguments.callee, 0);\r\n return;\r\n }\r\n doReady(doc);\r\n })();\r\n win.attachEvent('onload', function () {\r\n doReady(doc)\r\n });\r\n } else {\r\n doc.addEventListener(\"DOMContentLoaded\", function () {\r\n doc.removeEventListener(\"DOMContentLoaded\", arguments.callee, false);\r\n doReady(doc);\r\n }, false);\r\n win.addEventListener('load', function () {\r\n doReady(doc)\r\n }, false);\r\n }\r\n }\r\n\r\n }\r\n }(),\r\n\r\n /**\r\n * 动态添加css样式\r\n * @method cssRule\r\n * @param { String } 节点名称\r\n * @grammar UE.utils.cssRule('添加的样式的节点名称',['样式','放到哪个document上'])\r\n * @grammar UE.utils.cssRule('body','body{background:#ccc}') => null //给body添加背景颜色\r\n * @grammar UE.utils.cssRule('body') =>样式的字符串 //取得key值为body的样式的内容,如果没有找到key值先关的样式将返回空,例如刚才那个背景颜色,将返回 body{background:#ccc}\r\n * @grammar UE.utils.cssRule('body',document) => 返回指定key的样式,并且指定是哪个document\r\n * @grammar UE.utils.cssRule('body','') =>null //清空给定的key值的背景颜色\r\n */\r\n cssRule: browser.ie && browser.version != 11 ? function (key, style, doc) {\r\n var indexList, index;\r\n if (style === undefined || style && style.nodeType && style.nodeType == 9) {\r\n //获取样式\r\n doc = style && style.nodeType && style.nodeType == 9 ? style : (doc || document);\r\n indexList = doc.indexList || (doc.indexList = {});\r\n index = indexList[key];\r\n if (index !== undefined) {\r\n return doc.styleSheets[index].cssText\r\n }\r\n return undefined;\r\n }\r\n doc = doc || document;\r\n indexList = doc.indexList || (doc.indexList = {});\r\n index = indexList[key];\r\n //清除样式\r\n if (style === '') {\r\n if (index !== undefined) {\r\n doc.styleSheets[index].cssText = '';\r\n delete indexList[key];\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n //添加样式\r\n if (index !== undefined) {\r\n sheetStyle = doc.styleSheets[index];\r\n } else {\r\n sheetStyle = doc.createStyleSheet('', index = doc.styleSheets.length);\r\n indexList[key] = index;\r\n }\r\n sheetStyle.cssText = style;\r\n } : function (key, style, doc) {\r\n var head, node;\r\n if (style === undefined || style && style.nodeType && style.nodeType == 9) {\r\n //获取样式\r\n doc = style && style.nodeType && style.nodeType == 9 ? style : (doc || document);\r\n node = doc.getElementById(key);\r\n return node ? node.innerHTML : undefined;\r\n }\r\n doc = doc || document;\r\n node = doc.getElementById(key);\r\n\r\n //清除样式\r\n if (style === '') {\r\n if (node) {\r\n node.parentNode.removeChild(node);\r\n return true\r\n }\r\n return false;\r\n }\r\n\r\n //添加样式\r\n if (node) {\r\n node.innerHTML = style;\r\n } else {\r\n node = doc.createElement('style');\r\n node.id = key;\r\n node.innerHTML = style;\r\n doc.getElementsByTagName('head')[0].appendChild(node);\r\n }\r\n },\r\n sort: function (array, compareFn) {\r\n compareFn = compareFn || function (item1, item2) {\r\n return item1.localeCompare(item2);\r\n };\r\n for (var i = 0, len = array.length; i < len; i++) {\r\n for (var j = i, length = array.length; j < length; j++) {\r\n if (compareFn(array[i], array[j]) > 0) {\r\n var t = array[i];\r\n array[i] = array[j];\r\n array[j] = t;\r\n }\r\n }\r\n }\r\n return array;\r\n },\r\n serializeParam: function (json) {\r\n var strArr = [];\r\n for (var i in json) {\r\n //忽略默认的几个参数\r\n if (i == \"method\" || i == \"timeout\" || i == \"async\") continue;\r\n //传递过来的对象和函数不在提交之列\r\n if (!((typeof json[i]).toLowerCase() == \"function\" || (typeof json[i]).toLowerCase() == \"object\")) {\r\n strArr.push(encodeURIComponent(i) + \"=\" + encodeURIComponent(json[i]));\r\n } else if (utils.isArray(json[i])) {\r\n //支持传数组内容\r\n for (var j = 0; j < json[i].length; j++) {\r\n strArr.push(encodeURIComponent(i) + \"[]=\" + encodeURIComponent(json[i][j]));\r\n }\r\n }\r\n }\r\n return strArr.join(\"&\");\r\n },\r\n formatUrl: function (url) {\r\n var u = url.replace(/&&/g, '&');\r\n u = u.replace(/\\?&/g, '?');\r\n u = u.replace(/&$/g, '');\r\n u = u.replace(/&#/g, '#');\r\n u = u.replace(/&+/g, '&');\r\n return u;\r\n },\r\n isCrossDomainUrl: function (url) {\r\n var a = document.createElement('a');\r\n a.href = url;\r\n if (browser.ie) {\r\n a.href = a.href;\r\n }\r\n return !(a.protocol == location.protocol && a.hostname == location.hostname &&\r\n (a.port == location.port || (a.port == '80' && location.port == '') || (a.port == '' && location.port == '80')));\r\n },\r\n clearEmptyAttrs: function (obj) {\r\n for (var p in obj) {\r\n if (obj[p] === '') {\r\n delete obj[p]\r\n }\r\n }\r\n return obj;\r\n },\r\n str2json: function (s) {\r\n\r\n if (!utils.isString(s)) return null;\r\n if (window.JSON) {\r\n return JSON.parse(s);\r\n } else {\r\n return (new Function(\"return \" + utils.trim(s || '')))();\r\n }\r\n\r\n },\r\n json2str: (function () {\r\n\r\n if (window.JSON) {\r\n\r\n return JSON.stringify;\r\n\r\n } else {\r\n\r\n var escapeMap = {\r\n \"\\b\": '\\\\b',\r\n \"\\t\": '\\\\t',\r\n \"\\n\": '\\\\n',\r\n \"\\f\": '\\\\f',\r\n \"\\r\": '\\\\r',\r\n '\"': '\\\\\"',\r\n \"\\\\\": '\\\\\\\\'\r\n };\r\n\r\n function encodeString(source) {\r\n if (/[\"\\\\\\x00-\\x1f]/.test(source)) {\r\n source = source.replace(\r\n /[\"\\\\\\x00-\\x1f]/g,\r\n function (match) {\r\n var c = escapeMap[match];\r\n if (c) {\r\n return c;\r\n }\r\n c = match.charCodeAt();\r\n return \"\\\\u00\" +\r\n Math.floor(c / 16).toString(16) +\r\n (c % 16).toString(16);\r\n });\r\n }\r\n return '\"' + source + '\"';\r\n }\r\n\r\n function encodeArray(source) {\r\n var result = [\"[\"],\r\n l = source.length,\r\n preComma, i, item;\r\n\r\n for (i = 0; i < l; i++) {\r\n item = source[i];\r\n\r\n switch (typeof item) {\r\n case \"undefined\":\r\n case \"function\":\r\n case \"unknown\":\r\n break;\r\n default:\r\n if (preComma) {\r\n result.push(',');\r\n }\r\n result.push(utils.json2str(item));\r\n preComma = 1;\r\n }\r\n }\r\n result.push(\"]\");\r\n return result.join(\"\");\r\n }\r\n\r\n function pad(source) {\r\n return source < 10 ? '0' + source : source;\r\n }\r\n\r\n function encodeDate(source) {\r\n return '\"' + source.getFullYear() + \"-\" +\r\n pad(source.getMonth() + 1) + \"-\" +\r\n pad(source.getDate()) + \"T\" +\r\n pad(source.getHours()) + \":\" +\r\n pad(source.getMinutes()) + \":\" +\r\n pad(source.getSeconds()) + '\"';\r\n }\r\n\r\n return function (value) {\r\n switch (typeof value) {\r\n case 'undefined':\r\n return 'undefined';\r\n\r\n case 'number':\r\n return isFinite(value) ? String(value) : \"null\";\r\n\r\n case 'string':\r\n return encodeString(value);\r\n\r\n case 'boolean':\r\n return String(value);\r\n\r\n default:\r\n if (value === null) {\r\n return 'null';\r\n } else if (utils.isArray(value)) {\r\n return encodeArray(value);\r\n } else if (utils.isDate(value)) {\r\n return encodeDate(value);\r\n } else {\r\n var result = ['{'],\r\n encode = utils.json2str,\r\n preComma,\r\n item;\r\n\r\n for (var key in value) {\r\n if (Object.prototype.hasOwnProperty.call(value, key)) {\r\n item = value[key];\r\n switch (typeof item) {\r\n case 'undefined':\r\n case 'unknown':\r\n case 'function':\r\n break;\r\n default:\r\n if (preComma) {\r\n result.push(',');\r\n }\r\n preComma = 1;\r\n result.push(encode(key) + ':' + encode(item));\r\n }\r\n }\r\n }\r\n result.push('}');\r\n return result.join('');\r\n }\r\n }\r\n };\r\n }\r\n\r\n })()\r\n\r\n };\r\n /**\r\n * 判断给定的对象是否是字符串\r\n * @method isString\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是字符串\r\n */\r\n\r\n /**\r\n * 判断给定的对象是否是数组\r\n * @method isArray\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是数组\r\n */\r\n\r\n /**\r\n * 判断给定的对象是否是一个Function\r\n * @method isFunction\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是Function\r\n */\r\n\r\n /**\r\n * 判断给定的对象是否是Number\r\n * @method isNumber\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是Number\r\n */\r\n\r\n /**\r\n * 判断给定的对象是否是一个正则表达式\r\n * @method isRegExp\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是正则表达式\r\n */\r\n\r\n /**\r\n * 判断给定的对象是否是一个普通对象\r\n * @method isObject\r\n * @param { * } object 需要判断的对象\r\n * @return { Boolean } 给定的对象是否是普通对象\r\n */\r\n utils.each(['String', 'Function', 'Array', 'Number', 'RegExp', 'Object', 'Date'], function (v) {\r\n UE.utils['is' + v] = function (obj) {\r\n return Object.prototype.toString.apply(obj) == '[object ' + v + ']';\r\n }\r\n });\r\n\r\n // core/EventBase.js\r\n /**\r\n * UE采用的事件基类\r\n * @file\r\n * @module UE\r\n * @class EventBase\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n /**\r\n * UE采用的事件基类,继承此类的对应类将获取addListener,removeListener,fireEvent方法。\r\n * 在UE中,Editor以及所有ui实例都继承了该类,故可以在对应的ui对象以及editor对象上使用上述方法。\r\n * @unfile\r\n * @module UE\r\n * @class EventBase\r\n */\r\n\r\n /**\r\n * 通过此构造器,子类可以继承EventBase获取事件监听的方法\r\n * @constructor\r\n * @example\r\n * ```javascript\r\n * UE.EventBase.call(editor);\r\n * ```\r\n */\r\n var EventBase = UE.EventBase = function () {};\r\n\r\n EventBase.prototype = {\r\n\r\n /**\r\n * 注册事件监听器\r\n * @method addListener\r\n * @param { String } types 监听的事件名称,同时监听多个事件使用空格分隔\r\n * @param { Function } fn 监听的事件被触发时,会执行该回调函数\r\n * @waining 事件被触发时,监听的函数假如返回的值恒等于true,回调函数的队列中后面的函数将不执行\r\n * @example\r\n * ```javascript\r\n * editor.addListener('selectionchange',function(){\r\n * console.log(\"选区已经变化!\");\r\n * })\r\n * editor.addListener('beforegetcontent aftergetcontent',function(type){\r\n * if(type == 'beforegetcontent'){\r\n * //do something\r\n * }else{\r\n * //do something\r\n * }\r\n * console.log(this.getContent) // this是注册的事件的编辑器实例\r\n * })\r\n * ```\r\n * @see UE.EventBase:fireEvent(String)\r\n */\r\n addListener: function (types, listener) {\r\n types = utils.trim(types).split(/\\s+/);\r\n for (var i = 0, ti; ti = types[i++];) {\r\n getListener(this, ti, true).push(listener);\r\n }\r\n },\r\n\r\n on: function (types, listener) {\r\n return this.addListener(types, listener);\r\n },\r\n off: function (types, listener) {\r\n return this.removeListener(types, listener)\r\n },\r\n trigger: function () {\r\n return this.fireEvent.apply(this, arguments);\r\n },\r\n /**\r\n * 移除事件监听器\r\n * @method removeListener\r\n * @param { String } types 移除的事件名称,同时移除多个事件使用空格分隔\r\n * @param { Function } fn 移除监听事件的函数引用\r\n * @example\r\n * ```javascript\r\n * //changeCallback为方法体\r\n * editor.removeListener(\"selectionchange\",changeCallback);\r\n * ```\r\n */\r\n removeListener: function (types, listener) {\r\n types = utils.trim(types).split(/\\s+/);\r\n for (var i = 0, ti; ti = types[i++];) {\r\n utils.removeItem(getListener(this, ti) || [], listener);\r\n }\r\n },\r\n\r\n /**\r\n * 触发事件\r\n * @method fireEvent\r\n * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔\r\n * @remind 该方法会触发addListener\r\n * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值\r\n * @example\r\n * ```javascript\r\n * editor.fireEvent(\"selectionchange\");\r\n * ```\r\n */\r\n\r\n /**\r\n * 触发事件\r\n * @method fireEvent\r\n * @param { String } types 触发的事件名称,同时触发多个事件使用空格分隔\r\n * @param { *... } options 可选参数,可以传入一个或多个参数,会传给事件触发的回调函数\r\n * @return { * } 返回触发事件的队列中,最后执行的回调函数的返回值\r\n * @example\r\n * ```javascript\r\n *\r\n * editor.addListener( \"selectionchange\", function ( type, arg1, arg2 ) {\r\n *\r\n * console.log( arg1 + \" \" + arg2 );\r\n *\r\n * } );\r\n *\r\n * //触发selectionchange事件, 会执行上面的事件监听器\r\n * //output: Hello World\r\n * editor.fireEvent(\"selectionchange\", \"Hello\", \"World\");\r\n * ```\r\n */\r\n fireEvent: function () {\r\n var types = arguments[0];\r\n types = utils.trim(types).split(' ');\r\n for (var i = 0, ti; ti = types[i++];) {\r\n var listeners = getListener(this, ti),\r\n r, t, k;\r\n if (listeners) {\r\n k = listeners.length;\r\n while (k--) {\r\n if (!listeners[k]) continue;\r\n t = listeners[k].apply(this, arguments);\r\n if (t === true) {\r\n return t;\r\n }\r\n if (t !== undefined) {\r\n r = t;\r\n }\r\n }\r\n }\r\n if (t = this['on' + ti.toLowerCase()]) {\r\n r = t.apply(this, arguments);\r\n }\r\n }\r\n return r;\r\n }\r\n };\r\n /**\r\n * 获得对象所拥有监听类型的所有监听器\r\n * @unfile\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method getListener\r\n * @public\r\n * @param { Object } obj 查询监听器的对象\r\n * @param { String } type 事件类型\r\n * @param { Boolean } force 为true且当前所有type类型的侦听器不存在时,创建一个空监听器数组\r\n * @return { Array } 监听器数组\r\n */\r\n function getListener(obj, type, force) {\r\n var allListeners;\r\n type = type.toLowerCase();\r\n return ((allListeners = (obj.__allListeners || force && (obj.__allListeners = {}))) &&\r\n (allListeners[type] || force && (allListeners[type] = [])));\r\n }\r\n\r\n\r\n\r\n // core/dtd.js\r\n ///import editor.js\r\n ///import core/dom/dom.js\r\n ///import core/utils.js\r\n /**\r\n * dtd html语义化的体现类\r\n * @constructor\r\n * @namespace dtd\r\n */\r\n var dtd = dom.dtd = (function () {\r\n function _(s) {\r\n for (var k in s) {\r\n s[k.toUpperCase()] = s[k];\r\n }\r\n return s;\r\n }\r\n var X = utils.extend2;\r\n var A = _({\r\n isindex: 1,\r\n fieldset: 1\r\n }),\r\n B = _({\r\n input: 1,\r\n button: 1,\r\n select: 1,\r\n textarea: 1,\r\n label: 1\r\n }),\r\n C = X(_({\r\n a: 1\r\n }), B),\r\n D = X({\r\n iframe: 1\r\n }, C),\r\n E = _({\r\n hr: 1,\r\n ul: 1,\r\n menu: 1,\r\n div: 1,\r\n blockquote: 1,\r\n noscript: 1,\r\n table: 1,\r\n center: 1,\r\n address: 1,\r\n dir: 1,\r\n pre: 1,\r\n h5: 1,\r\n dl: 1,\r\n h4: 1,\r\n noframes: 1,\r\n h6: 1,\r\n ol: 1,\r\n h1: 1,\r\n h3: 1,\r\n h2: 1\r\n }),\r\n F = _({\r\n ins: 1,\r\n del: 1,\r\n script: 1,\r\n style: 1\r\n }),\r\n G = X(_({\r\n b: 1,\r\n acronym: 1,\r\n bdo: 1,\r\n 'var': 1,\r\n '#': 1,\r\n abbr: 1,\r\n code: 1,\r\n br: 1,\r\n i: 1,\r\n cite: 1,\r\n kbd: 1,\r\n u: 1,\r\n strike: 1,\r\n s: 1,\r\n tt: 1,\r\n strong: 1,\r\n q: 1,\r\n samp: 1,\r\n em: 1,\r\n dfn: 1,\r\n span: 1\r\n }), F),\r\n H = X(_({\r\n sub: 1,\r\n img: 1,\r\n embed: 1,\r\n object: 1,\r\n sup: 1,\r\n basefont: 1,\r\n map: 1,\r\n applet: 1,\r\n font: 1,\r\n big: 1,\r\n small: 1\r\n }), G),\r\n I = X(_({\r\n p: 1\r\n }), H),\r\n J = X(_({\r\n iframe: 1\r\n }), H, B),\r\n K = _({\r\n img: 1,\r\n embed: 1,\r\n noscript: 1,\r\n br: 1,\r\n kbd: 1,\r\n center: 1,\r\n button: 1,\r\n basefont: 1,\r\n h5: 1,\r\n h4: 1,\r\n samp: 1,\r\n h6: 1,\r\n ol: 1,\r\n h1: 1,\r\n h3: 1,\r\n h2: 1,\r\n form: 1,\r\n font: 1,\r\n '#': 1,\r\n select: 1,\r\n menu: 1,\r\n ins: 1,\r\n abbr: 1,\r\n label: 1,\r\n code: 1,\r\n table: 1,\r\n script: 1,\r\n cite: 1,\r\n input: 1,\r\n iframe: 1,\r\n strong: 1,\r\n textarea: 1,\r\n noframes: 1,\r\n big: 1,\r\n small: 1,\r\n span: 1,\r\n hr: 1,\r\n sub: 1,\r\n bdo: 1,\r\n 'var': 1,\r\n div: 1,\r\n object: 1,\r\n sup: 1,\r\n strike: 1,\r\n dir: 1,\r\n map: 1,\r\n dl: 1,\r\n applet: 1,\r\n del: 1,\r\n isindex: 1,\r\n fieldset: 1,\r\n ul: 1,\r\n b: 1,\r\n acronym: 1,\r\n a: 1,\r\n blockquote: 1,\r\n i: 1,\r\n u: 1,\r\n s: 1,\r\n tt: 1,\r\n address: 1,\r\n q: 1,\r\n pre: 1,\r\n p: 1,\r\n em: 1,\r\n dfn: 1\r\n }),\r\n\r\n L = X(_({\r\n a: 0\r\n }), J), //a不能被切开,所以把他\r\n M = _({\r\n tr: 1\r\n }),\r\n N = _({\r\n '#': 1\r\n }),\r\n O = X(_({\r\n param: 1\r\n }), K),\r\n P = X(_({\r\n form: 1\r\n }), A, D, E, I),\r\n Q = _({\r\n li: 1,\r\n ol: 1,\r\n ul: 1\r\n }),\r\n R = _({\r\n style: 1,\r\n script: 1\r\n }),\r\n S = _({\r\n base: 1,\r\n link: 1,\r\n meta: 1,\r\n title: 1\r\n }),\r\n T = X(S, R),\r\n U = _({\r\n head: 1,\r\n body: 1\r\n }),\r\n V = _({\r\n html: 1\r\n });\r\n\r\n var block = _({\r\n address: 1,\r\n blockquote: 1,\r\n center: 1,\r\n dir: 1,\r\n div: 1,\r\n dl: 1,\r\n fieldset: 1,\r\n form: 1,\r\n h1: 1,\r\n h2: 1,\r\n h3: 1,\r\n h4: 1,\r\n h5: 1,\r\n h6: 1,\r\n hr: 1,\r\n isindex: 1,\r\n menu: 1,\r\n noframes: 1,\r\n ol: 1,\r\n p: 1,\r\n pre: 1,\r\n table: 1,\r\n ul: 1\r\n }),\r\n\r\n empty = _({\r\n area: 1,\r\n base: 1,\r\n basefont: 1,\r\n br: 1,\r\n col: 1,\r\n command: 1,\r\n dialog: 1,\r\n embed: 1,\r\n hr: 1,\r\n img: 1,\r\n input: 1,\r\n isindex: 1,\r\n keygen: 1,\r\n link: 1,\r\n meta: 1,\r\n param: 1,\r\n source: 1,\r\n track: 1,\r\n wbr: 1\r\n });\r\n\r\n return _({\r\n\r\n // $ 表示自定的属性\r\n\r\n // body外的元素列表.\r\n $nonBodyContent: X(V, U, S),\r\n\r\n //块结构元素列表\r\n $block: block,\r\n\r\n //内联元素列表\r\n $inline: L,\r\n\r\n $inlineWithA: X(_({\r\n a: 1\r\n }), L),\r\n\r\n $body: X(_({\r\n script: 1,\r\n style: 1\r\n }), block),\r\n\r\n $cdata: _({\r\n script: 1,\r\n style: 1\r\n }),\r\n\r\n //自闭和元素\r\n $empty: empty,\r\n\r\n //不是自闭合,但不能让range选中里边\r\n $nonChild: _({\r\n iframe: 1,\r\n textarea: 1\r\n }),\r\n //列表元素列表\r\n $listItem: _({\r\n dd: 1,\r\n dt: 1,\r\n li: 1\r\n }),\r\n\r\n //列表根元素列表\r\n $list: _({\r\n ul: 1,\r\n ol: 1,\r\n dl: 1\r\n }),\r\n\r\n //不能认为是空的元素\r\n $isNotEmpty: _({\r\n table: 1,\r\n ul: 1,\r\n ol: 1,\r\n dl: 1,\r\n iframe: 1,\r\n area: 1,\r\n base: 1,\r\n col: 1,\r\n hr: 1,\r\n img: 1,\r\n embed: 1,\r\n input: 1,\r\n link: 1,\r\n meta: 1,\r\n param: 1,\r\n h1: 1,\r\n h2: 1,\r\n h3: 1,\r\n h4: 1,\r\n h5: 1,\r\n h6: 1\r\n }),\r\n\r\n //如果没有子节点就可以删除的元素列表,像span,a\r\n $removeEmpty: _({\r\n a: 1,\r\n abbr: 1,\r\n acronym: 1,\r\n address: 1,\r\n b: 1,\r\n bdo: 1,\r\n big: 1,\r\n cite: 1,\r\n code: 1,\r\n del: 1,\r\n dfn: 1,\r\n em: 1,\r\n font: 1,\r\n i: 1,\r\n ins: 1,\r\n label: 1,\r\n kbd: 1,\r\n q: 1,\r\n s: 1,\r\n samp: 1,\r\n small: 1,\r\n span: 1,\r\n strike: 1,\r\n strong: 1,\r\n sub: 1,\r\n sup: 1,\r\n tt: 1,\r\n u: 1,\r\n 'var': 1\r\n }),\r\n\r\n $removeEmptyBlock: _({\r\n 'p': 1,\r\n 'div': 1\r\n }),\r\n\r\n //在table元素里的元素列表\r\n $tableContent: _({\r\n caption: 1,\r\n col: 1,\r\n colgroup: 1,\r\n tbody: 1,\r\n td: 1,\r\n tfoot: 1,\r\n th: 1,\r\n thead: 1,\r\n tr: 1,\r\n table: 1\r\n }),\r\n //不转换的标签\r\n $notTransContent: _({\r\n pre: 1,\r\n script: 1,\r\n style: 1,\r\n textarea: 1\r\n }),\r\n html: U,\r\n head: T,\r\n style: N,\r\n script: N,\r\n body: P,\r\n base: {},\r\n link: {},\r\n meta: {},\r\n title: N,\r\n col: {},\r\n tr: _({\r\n td: 1,\r\n th: 1\r\n }),\r\n img: {},\r\n embed: {},\r\n colgroup: _({\r\n thead: 1,\r\n col: 1,\r\n tbody: 1,\r\n tr: 1,\r\n tfoot: 1\r\n }),\r\n noscript: P,\r\n td: P,\r\n br: {},\r\n th: P,\r\n center: P,\r\n kbd: L,\r\n button: X(I, E),\r\n basefont: {},\r\n h5: L,\r\n h4: L,\r\n samp: L,\r\n h6: L,\r\n ol: Q,\r\n h1: L,\r\n h3: L,\r\n option: N,\r\n h2: L,\r\n form: X(A, D, E, I),\r\n select: _({\r\n optgroup: 1,\r\n option: 1\r\n }),\r\n font: L,\r\n ins: L,\r\n menu: Q,\r\n abbr: L,\r\n label: L,\r\n table: _({\r\n thead: 1,\r\n col: 1,\r\n tbody: 1,\r\n tr: 1,\r\n colgroup: 1,\r\n caption: 1,\r\n tfoot: 1\r\n }),\r\n code: L,\r\n tfoot: M,\r\n cite: L,\r\n li: P,\r\n input: {},\r\n iframe: P,\r\n strong: L,\r\n textarea: N,\r\n noframes: P,\r\n big: L,\r\n small: L,\r\n //trace:\r\n span: _({\r\n '#': 1,\r\n br: 1,\r\n b: 1,\r\n strong: 1,\r\n u: 1,\r\n i: 1,\r\n em: 1,\r\n sub: 1,\r\n sup: 1,\r\n strike: 1,\r\n span: 1\r\n }),\r\n hr: L,\r\n dt: L,\r\n sub: L,\r\n optgroup: _({\r\n option: 1\r\n }),\r\n param: {},\r\n bdo: L,\r\n 'var': L,\r\n div: P,\r\n object: O,\r\n sup: L,\r\n dd: P,\r\n strike: L,\r\n area: {},\r\n dir: Q,\r\n map: X(_({\r\n area: 1,\r\n form: 1,\r\n p: 1\r\n }), A, F, E),\r\n applet: O,\r\n dl: _({\r\n dt: 1,\r\n dd: 1\r\n }),\r\n del: L,\r\n isindex: {},\r\n fieldset: X(_({\r\n legend: 1\r\n }), K),\r\n thead: M,\r\n ul: Q,\r\n acronym: L,\r\n b: L,\r\n a: X(_({\r\n a: 1\r\n }), J),\r\n blockquote: X(_({\r\n td: 1,\r\n tr: 1,\r\n tbody: 1,\r\n li: 1\r\n }), P),\r\n caption: L,\r\n i: L,\r\n u: L,\r\n tbody: M,\r\n s: L,\r\n address: X(D, I),\r\n tt: L,\r\n legend: L,\r\n q: L,\r\n pre: X(G, C),\r\n p: X(_({\r\n 'a': 1\r\n }), L),\r\n em: L,\r\n dfn: L\r\n });\r\n })();\r\n\r\n\r\n // core/domUtils.js\r\n /**\r\n * Dom操作工具包\r\n * @file\r\n * @module UE.dom.domUtils\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * Dom操作工具包\r\n * @unfile\r\n * @module UE.dom.domUtils\r\n */\r\n function getDomNode(node, start, ltr, startFromChild, fn, guard) {\r\n var tmpNode = startFromChild && node[start],\r\n parent;\r\n !tmpNode && (tmpNode = node[ltr]);\r\n while (!tmpNode && (parent = (parent || node).parentNode)) {\r\n if (parent.tagName == 'BODY' || guard && !guard(parent)) {\r\n return null;\r\n }\r\n tmpNode = parent[ltr];\r\n }\r\n if (tmpNode && fn && !fn(tmpNode)) {\r\n return getDomNode(tmpNode, start, ltr, false, fn);\r\n }\r\n return tmpNode;\r\n }\r\n var attrFix = ie && browser.version < 9 ? {\r\n tabindex: \"tabIndex\",\r\n readonly: \"readOnly\",\r\n \"for\": \"htmlFor\",\r\n \"class\": \"className\",\r\n maxlength: \"maxLength\",\r\n cellspacing: \"cellSpacing\",\r\n cellpadding: \"cellPadding\",\r\n rowspan: \"rowSpan\",\r\n colspan: \"colSpan\",\r\n usemap: \"useMap\",\r\n frameborder: \"frameBorder\"\r\n } : {\r\n tabindex: \"tabIndex\",\r\n readonly: \"readOnly\"\r\n },\r\n styleBlock = utils.listToMap([\r\n '-webkit-box', '-moz-box', 'block',\r\n 'list-item', 'table', 'table-row-group',\r\n 'table-header-group', 'table-footer-group',\r\n 'table-row', 'table-column-group', 'table-column',\r\n 'table-cell', 'table-caption'\r\n ]);\r\n var domUtils = dom.domUtils = {\r\n //节点常量\r\n NODE_ELEMENT: 1,\r\n NODE_DOCUMENT: 9,\r\n NODE_TEXT: 3,\r\n NODE_COMMENT: 8,\r\n NODE_DOCUMENT_FRAGMENT: 11,\r\n\r\n //位置关系\r\n POSITION_IDENTICAL: 0,\r\n POSITION_DISCONNECTED: 1,\r\n POSITION_FOLLOWING: 2,\r\n POSITION_PRECEDING: 4,\r\n POSITION_IS_CONTAINED: 8,\r\n POSITION_CONTAINS: 16,\r\n //ie6使用其他的会有一段空白出现\r\n fillChar: ie && browser.version == '6' ? '\\ufeff' : '\\u200B',\r\n //-------------------------Node部分--------------------------------\r\n keys: {\r\n /*Backspace*/\r\n 8: 1,\r\n /*Delete*/\r\n 46: 1,\r\n /*Shift*/\r\n 16: 1,\r\n /*Ctrl*/\r\n 17: 1,\r\n /*Alt*/\r\n 18: 1,\r\n 37: 1,\r\n 38: 1,\r\n 39: 1,\r\n 40: 1,\r\n 13: 1 /*enter*/\r\n },\r\n /**\r\n * 获取节点A相对于节点B的位置关系\r\n * @method getPosition\r\n * @param { Node } nodeA 需要查询位置关系的节点A\r\n * @param { Node } nodeB 需要查询位置关系的节点B\r\n * @return { Number } 节点A与节点B的关系\r\n * @example\r\n * ```javascript\r\n * //output: 20\r\n * var position = UE.dom.domUtils.getPosition( document.documentElement, document.body );\r\n *\r\n * switch ( position ) {\r\n *\r\n * //0\r\n * case UE.dom.domUtils.POSITION_IDENTICAL:\r\n * console.log('元素相同');\r\n * break;\r\n * //1\r\n * case UE.dom.domUtils.POSITION_DISCONNECTED:\r\n * console.log('两个节点在不同的文档中');\r\n * break;\r\n * //2\r\n * case UE.dom.domUtils.POSITION_FOLLOWING:\r\n * console.log('节点A在节点B之后');\r\n * break;\r\n * //4\r\n * case UE.dom.domUtils.POSITION_PRECEDING;\r\n * console.log('节点A在节点B之前');\r\n * break;\r\n * //8\r\n * case UE.dom.domUtils.POSITION_IS_CONTAINED:\r\n * console.log('节点A被节点B包含');\r\n * break;\r\n * case 10:\r\n * console.log('节点A被节点B包含且节点A在节点B之后');\r\n * break;\r\n * //16\r\n * case UE.dom.domUtils.POSITION_CONTAINS:\r\n * console.log('节点A包含节点B');\r\n * break;\r\n * case 20:\r\n * console.log('节点A包含节点B且节点A在节点B之前');\r\n * break;\r\n *\r\n * }\r\n * ```\r\n */\r\n getPosition: function (nodeA, nodeB) {\r\n // 如果两个节点是同一个节点\r\n if (nodeA === nodeB) {\r\n // domUtils.POSITION_IDENTICAL\r\n return 0;\r\n }\r\n var node,\r\n parentsA = [nodeA],\r\n parentsB = [nodeB];\r\n node = nodeA;\r\n while (node = node.parentNode) {\r\n // 如果nodeB是nodeA的祖先节点\r\n if (node === nodeB) {\r\n // domUtils.POSITION_IS_CONTAINED + domUtils.POSITION_FOLLOWING\r\n return 10;\r\n }\r\n parentsA.push(node);\r\n }\r\n node = nodeB;\r\n while (node = node.parentNode) {\r\n // 如果nodeA是nodeB的祖先节点\r\n if (node === nodeA) {\r\n // domUtils.POSITION_CONTAINS + domUtils.POSITION_PRECEDING\r\n return 20;\r\n }\r\n parentsB.push(node);\r\n }\r\n parentsA.reverse();\r\n parentsB.reverse();\r\n if (parentsA[0] !== parentsB[0]) {\r\n // domUtils.POSITION_DISCONNECTED\r\n return 1;\r\n }\r\n var i = -1;\r\n while (i++, parentsA[i] === parentsB[i]) {}\r\n nodeA = parentsA[i];\r\n nodeB = parentsB[i];\r\n while (nodeA = nodeA.nextSibling) {\r\n if (nodeA === nodeB) {\r\n // domUtils.POSITION_PRECEDING\r\n return 4\r\n }\r\n }\r\n // domUtils.POSITION_FOLLOWING\r\n return 2;\r\n },\r\n\r\n /**\r\n * 检测节点node在父节点中的索引位置\r\n * @method getNodeIndex\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Number } 该节点在父节点中的位置\r\n * @see UE.dom.domUtils.getNodeIndex(Node,Boolean)\r\n */\r\n\r\n /**\r\n * 检测节点node在父节点中的索引位置, 根据给定的mergeTextNode参数决定是否要合并多个连续的文本节点为一个节点\r\n * @method getNodeIndex\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { Boolean } mergeTextNode 是否合并多个连续的文本节点为一个节点\r\n * @return { Number } 该节点在父节点中的位置\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"div\");\r\n *\r\n * node.appendChild( document.createTextNode( \"hello\" ) );\r\n * node.appendChild( document.createTextNode( \"world\" ) );\r\n * node.appendChild( node = document.createElement( \"div\" ) );\r\n *\r\n * //output: 2\r\n * console.log( UE.dom.domUtils.getNodeIndex( node ) );\r\n *\r\n * //output: 1\r\n * console.log( UE.dom.domUtils.getNodeIndex( node, true ) );\r\n *\r\n * ```\r\n */\r\n getNodeIndex: function (node, ignoreTextNode) {\r\n var preNode = node,\r\n i = 0;\r\n while (preNode = preNode.previousSibling) {\r\n if (ignoreTextNode && preNode.nodeType == 3) {\r\n if (preNode.nodeType != preNode.nextSibling.nodeType) {\r\n i++;\r\n }\r\n continue;\r\n }\r\n i++;\r\n }\r\n return i;\r\n },\r\n\r\n /**\r\n * 检测节点node是否在给定的document对象上\r\n * @method inDoc\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { DomDocument } doc 需要检测的document对象\r\n * @return { Boolean } 该节点node是否在给定的document的dom树上\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"div\");\r\n *\r\n * //output: false\r\n * console.log( UE.do.domUtils.inDoc( node, document ) );\r\n *\r\n * document.body.appendChild( node );\r\n *\r\n * //output: true\r\n * console.log( UE.do.domUtils.inDoc( node, document ) );\r\n *\r\n * ```\r\n */\r\n inDoc: function (node, doc) {\r\n return domUtils.getPosition(node, doc) == 10;\r\n },\r\n /**\r\n * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点,\r\n * 查找的起点是给定node节点的父节点。\r\n * @method findParent\r\n * @param { Node } node 需要查找的节点\r\n * @param { Function } filterFn 自定义的过滤方法。\r\n * @warning 查找的终点是到body节点为止\r\n * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该\r\n * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。\r\n * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var filterNode = UE.dom.domUtils.findParent( document.body.firstChild, function ( node ) {\r\n *\r\n * //由于查找的终点是body节点, 所以永远也不会匹配当前过滤器的条件, 即这里永远会返回false\r\n * return node.tagName === \"HTML\";\r\n *\r\n * } );\r\n *\r\n * //output: true\r\n * console.log( filterNode === null );\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的过滤规则filterFn, 查找符合该过滤规则的node节点的第一个祖先节点,\r\n * 如果includeSelf的值为true,则查找的起点是给定的节点node, 否则, 起点是node的父节点\r\n * @method findParent\r\n * @param { Node } node 需要查找的节点\r\n * @param { Function } filterFn 自定义的过滤方法。\r\n * @param { Boolean } includeSelf 查找过程是否包含自身\r\n * @warning 查找的终点是到body节点为止\r\n * @remind 自定义的过滤方法filterFn接受一个Node对象作为参数, 该对象代表当前执行检测的祖先节点。 如果该\r\n * 节点满足过滤条件, 则要求返回true, 这时将直接返回该节点作为findParent()的结果, 否则, 请返回false。\r\n * @remind 如果includeSelf为true, 则过滤器第一次执行时的参数会是节点本身。\r\n * 反之, 过滤器第一次执行时的参数将是该节点的父节点。\r\n * @return { Node | Null } 如果找到符合过滤条件的节点, 就返回该节点, 否则返回NULL\r\n * @example\r\n * ```html\r\n * \r\n *\r\n *
\r\n *
\r\n *\r\n * \r\n * \r\n * ```\r\n */\r\n findParent: function (node, filterFn, includeSelf) {\r\n if (node && !domUtils.isBody(node)) {\r\n node = includeSelf ? node : node.parentNode;\r\n while (node) {\r\n if (!filterFn || filterFn(node) || domUtils.isBody(node)) {\r\n return filterFn && !filterFn(node) && domUtils.isBody(node) ? null : node;\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n return null;\r\n },\r\n /**\r\n * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。\r\n * @method findParentByTagName\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Array } tagNames 需要查找的父节点的名称数组\r\n * @warning 查找的终点是到body节点为止\r\n * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName(\"div\")[0], [ \"BODY\" ] );\r\n * //output: BODY\r\n * console.log( node.tagName );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node,\r\n * 否则, 起点是node的父节点。\r\n * @method findParentByTagName\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Array } tagNames 需要查找的父节点的名称数组\r\n * @param { Boolean } includeSelf 查找过程是否包含node节点自身\r\n * @warning 查找的终点是到body节点为止\r\n * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var queryTarget = document.getElementsByTagName(\"div\")[0];\r\n * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ \"DIV\" ], true );\r\n * //output: true\r\n * console.log( queryTarget === node );\r\n * ```\r\n */\r\n findParentByTagName: function (node, tagNames, includeSelf, excludeFn) {\r\n tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]);\r\n return domUtils.findParent(node, function (node) {\r\n return tagNames[node.tagName] && !(excludeFn && excludeFn(node));\r\n }, includeSelf);\r\n },\r\n /**\r\n * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。\r\n * @method findParents\r\n * @param { Node } node 需要查找的节点对象\r\n * @return { Array } 给定节点的祖先节点数组\r\n * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取\r\n * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个\r\n */\r\n\r\n /**\r\n * 查找节点node的祖先节点集合, 如果includeSelf的值为true,\r\n * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。\r\n * @method findParents\r\n * @param { Node } node 需要查找的节点对象\r\n * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象\r\n * @return { Array } 给定节点的祖先节点数组\r\n */\r\n findParents: function (node, includeSelf, filterFn, closerFirst) {\r\n var parents = includeSelf && (filterFn && filterFn(node) || !filterFn) ? [node] : [];\r\n while (node = domUtils.findParent(node, filterFn)) {\r\n parents.push(node);\r\n }\r\n return closerFirst ? parents : parents.reverse();\r\n },\r\n\r\n /**\r\n * 在节点node后面插入新节点newNode\r\n * @method insertAfter\r\n * @param { Node } node 目标节点\r\n * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后\r\n * @return { Node } 新插入的节点\r\n */\r\n insertAfter: function (node, newNode) {\r\n return node.nextSibling ? node.parentNode.insertBefore(newNode, node.nextSibling) :\r\n node.parentNode.appendChild(newNode);\r\n },\r\n\r\n /**\r\n * 删除节点node及其下属的所有节点\r\n * @method remove\r\n * @param { Node } node 需要删除的节点对象\r\n * @return { Node } 返回刚删除的节点对象\r\n * @example\r\n * ```html\r\n *
\r\n *
你好
\r\n *
\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 删除节点node,并根据keepChildren的值决定是否保留子节点\r\n * @method remove\r\n * @param { Node } node 需要删除的节点对象\r\n * @param { Boolean } keepChildren 是否需要保留子节点\r\n * @return { Node } 返回刚删除的节点对象\r\n * @example\r\n * ```html\r\n *
\r\n *
你好
\r\n *
\r\n * \r\n * ```\r\n */\r\n remove: function (node, keepChildren) {\r\n var parent = node.parentNode,\r\n child;\r\n if (parent) {\r\n if (keepChildren && node.hasChildNodes()) {\r\n while (child = node.firstChild) {\r\n parent.insertBefore(child, node);\r\n }\r\n }\r\n parent.removeChild(node);\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 取得node节点的下一个兄弟节点, 如果该节点其后没有兄弟节点, 则递归查找其父节点之后的第一个兄弟节点,\r\n * 直到找到满足条件的节点或者递归到BODY节点之后才会结束。\r\n * @method getNextDomNode\r\n * @param { Node } node 需要获取其后的兄弟节点的节点对象\r\n * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```html\r\n * \r\n *
\r\n * \r\n *
\r\n * xxx\r\n * \r\n * \r\n * ```\r\n * @example\r\n * ```html\r\n * \r\n *
\r\n * \r\n * xxx\r\n *
\r\n * xxx\r\n * \r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 取得node节点的下一个兄弟节点, 如果startFromChild的值为ture,则先获取其子节点,\r\n * 如果有子节点则直接返回第一个子节点;如果没有子节点或者startFromChild的值为false,\r\n * 则执行getNextDomNode(Node node)的查找过程。\r\n * @method getNextDomNode\r\n * @param { Node } node 需要获取其后的兄弟节点的节点对象\r\n * @param { Boolean } startFromChild 查找过程是否从其子节点开始\r\n * @return { Node | NULL } 如果找满足条件的节点, 则返回该节点, 否则返回NULL\r\n * @see UE.dom.domUtils.getNextDomNode(Node)\r\n */\r\n getNextDomNode: function (node, startFromChild, filterFn, guard) {\r\n return getDomNode(node, 'firstChild', 'nextSibling', startFromChild, filterFn, guard);\r\n },\r\n getPreDomNode: function (node, startFromChild, filterFn, guard) {\r\n return getDomNode(node, 'lastChild', 'previousSibling', startFromChild, filterFn, guard);\r\n },\r\n /**\r\n * 检测节点node是否属是UEditor定义的bookmark节点\r\n * @method isBookmarkNode\r\n * @private\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 是否是bookmark节点\r\n * @example\r\n * ```html\r\n * \r\n * \r\n * ```\r\n */\r\n isBookmarkNode: function (node) {\r\n return node.nodeType == 1 && node.id && /^_baidu_bookmark_/i.test(node.id);\r\n },\r\n /**\r\n * 获取节点node所属的window对象\r\n * @method getWindow\r\n * @param { Node } node 节点对象\r\n * @return { Window } 当前节点所属的window对象\r\n * @example\r\n * ```javascript\r\n * //output: true\r\n * console.log( UE.dom.domUtils.getWindow( document.body ) === window );\r\n * ```\r\n */\r\n getWindow: function (node) {\r\n var doc = node.ownerDocument || node;\r\n return doc.defaultView || doc.parentWindow;\r\n },\r\n /**\r\n * 获取离nodeA与nodeB最近的公共的祖先节点\r\n * @method getCommonAncestor\r\n * @param { Node } nodeA 第一个节点\r\n * @param { Node } nodeB 第二个节点\r\n * @remind 如果给定的两个节点是同一个节点, 将直接返回该节点。\r\n * @return { Node | NULL } 如果未找到公共节点, 返回NULL, 否则返回最近的公共祖先节点。\r\n * @example\r\n * ```javascript\r\n * var commonAncestor = UE.dom.domUtils.getCommonAncestor( document.body, document.body.firstChild );\r\n * //output: true\r\n * console.log( commonAncestor.tagName.toLowerCase() === 'body' );\r\n * ```\r\n */\r\n getCommonAncestor: function (nodeA, nodeB) {\r\n if (nodeA === nodeB)\r\n return nodeA;\r\n var parentsA = [nodeA],\r\n parentsB = [nodeB],\r\n parent = nodeA,\r\n i = -1;\r\n while (parent = parent.parentNode) {\r\n if (parent === nodeB) {\r\n return parent;\r\n }\r\n parentsA.push(parent);\r\n }\r\n parent = nodeB;\r\n while (parent = parent.parentNode) {\r\n if (parent === nodeA)\r\n return parent;\r\n parentsB.push(parent);\r\n }\r\n parentsA.reverse();\r\n parentsB.reverse();\r\n while (i++, parentsA[i] === parentsB[i]) {}\r\n return i == 0 ? null : parentsA[i - 1];\r\n\r\n },\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * 则这些兄弟节点将被删除\r\n * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext) //ignoreNext指定是否忽略右边空节点\r\n * @grammar UE.dom.domUtils.clearEmptySibling(node,ignoreNext,ignorePre) //ignorePre指定是否忽略左边空节点\r\n * @example\r\n * ```html\r\n * \r\n *
\r\n * \r\n * \r\n * \r\n * xxx\r\n * \r\n * \r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true,\r\n * 则忽略对右边兄弟节点的操作。\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作\r\n * 则这些兄弟节点将被删除\r\n * @see UE.dom.domUtils.clearEmptySibling(Node)\r\n */\r\n\r\n /**\r\n * 清除node节点左右连续为空的兄弟inline节点, 如果ignoreNext的值为true,\r\n * 则忽略对右边兄弟节点的操作, 如果ignorePre的值为true,则忽略对左边兄弟节点的操作。\r\n * @method clearEmptySibling\r\n * @param { Node } node 执行的节点对象, 如果该节点的左右连续的兄弟节点是空的inline节点,\r\n * @param { Boolean } ignoreNext 是否忽略忽略对右边的兄弟节点的操作\r\n * @param { Boolean } ignorePre 是否忽略忽略对左边的兄弟节点的操作\r\n * 则这些兄弟节点将被删除\r\n * @see UE.dom.domUtils.clearEmptySibling(Node)\r\n */\r\n clearEmptySibling: function (node, ignoreNext, ignorePre) {\r\n function clear(next, dir) {\r\n var tmpNode;\r\n while (next && !domUtils.isBookmarkNode(next) && (domUtils.isEmptyInlineElement(next)\r\n //这里不能把空格算进来会吧空格干掉,出现文字间的空格丢掉了\r\n ||\r\n !new RegExp('[^\\t\\n\\r' + domUtils.fillChar + ']').test(next.nodeValue))) {\r\n tmpNode = next[dir];\r\n domUtils.remove(next);\r\n next = tmpNode;\r\n }\r\n }!ignoreNext && clear(node.nextSibling, 'nextSibling');\r\n !ignorePre && clear(node.previousSibling, 'previousSibling');\r\n },\r\n /**\r\n * 将一个文本节点textNode拆分成两个文本节点,offset指定拆分位置\r\n * @method split\r\n * @param { Node } textNode 需要拆分的文本节点对象\r\n * @param { int } offset 需要拆分的位置, 位置计算从0开始\r\n * @return { Node } 拆分后形成的新节点\r\n * @example\r\n * ```html\r\n *
abcdef
\r\n * \r\n * ```\r\n */\r\n split: function (node, offset) {\r\n var doc = node.ownerDocument;\r\n if (browser.ie && offset == node.nodeValue.length) {\r\n var next = doc.createTextNode('');\r\n return domUtils.insertAfter(node, next);\r\n }\r\n var retval = node.splitText(offset);\r\n //ie8下splitText不会跟新childNodes,我们手动触发他的更新\r\n if (browser.ie8) {\r\n var tmpNode = doc.createTextNode('');\r\n domUtils.insertAfter(retval, tmpNode);\r\n domUtils.remove(tmpNode);\r\n }\r\n return retval;\r\n },\r\n\r\n /**\r\n * 检测文本节点textNode是否为空节点(包括空格、换行、占位符等字符)\r\n * @method isWhitespace\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 检测的节点是否为空\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n *
\r\n * \r\n * ```\r\n */\r\n isWhitespace: function (node) {\r\n return !new RegExp('[^ \\t\\n\\r' + domUtils.fillChar + ']').test(node.nodeValue);\r\n },\r\n /**\r\n * 获取元素element相对于viewport的位置坐标\r\n * @method getXY\r\n * @param { Node } element 需要计算位置的节点对象\r\n * @return { Object } 返回形如{x:left,y:top}的一个key-value映射对象, 其中键x代表水平偏移距离,\r\n * y代表垂直偏移距离。\r\n *\r\n * @example\r\n * ```javascript\r\n * var location = UE.dom.domUtils.getXY( document.getElementById(\"test\") );\r\n * //output: test的坐标为: 12, 24\r\n * console.log( 'test的坐标为: ', location.x, ',', location.y );\r\n * ```\r\n */\r\n getXY: function (element) {\r\n var x = 0,\r\n y = 0;\r\n while (element.offsetParent) {\r\n y += element.offsetTop;\r\n x += element.offsetLeft;\r\n element = element.offsetParent;\r\n }\r\n return {\r\n 'x': x,\r\n 'y': y\r\n };\r\n },\r\n /**\r\n * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数\r\n * @method on\r\n * @param { Node } element 需要绑定事件的节点对象\r\n * @param { String } type 绑定的事件类型\r\n * @param { Function } handler 事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.on(document.body,\"click\",function(e){\r\n * //e为事件对象,this为被点击元素对戏那个\r\n * });\r\n * ```\r\n */\r\n\r\n /**\r\n * 为元素element绑定原生DOM事件,type为事件类型,handler为处理函数\r\n * @method on\r\n * @param { Node } element 需要绑定事件的节点对象\r\n * @param { Array } type 绑定的事件类型数组\r\n * @param { Function } handler 事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.on(document.body,[\"click\",\"mousedown\"],function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n on: function (element, type, handler) {\r\n\r\n var types = utils.isArray(type) ? type : utils.trim(type).split(/\\s+/),\r\n k = types.length;\r\n if (k)\r\n while (k--) {\r\n type = types[k];\r\n if (element.addEventListener) {\r\n element.addEventListener(type, handler, false);\r\n } else {\r\n if (!handler._d) {\r\n handler._d = {\r\n els: []\r\n };\r\n }\r\n var key = type + handler.toString(),\r\n index = utils.indexOf(handler._d.els, element);\r\n if (!handler._d[key] || index == -1) {\r\n if (index == -1) {\r\n handler._d.els.push(element);\r\n }\r\n if (!handler._d[key]) {\r\n handler._d[key] = function (evt) {\r\n return handler.call(evt.srcElement, evt || window.event);\r\n };\r\n }\r\n\r\n\r\n element.attachEvent('on' + type, handler._d[key]);\r\n }\r\n }\r\n }\r\n element = null;\r\n },\r\n /**\r\n * 解除DOM事件绑定\r\n * @method un\r\n * @param { Node } element 需要解除事件绑定的节点对象\r\n * @param { String } type 需要接触绑定的事件类型\r\n * @param { Function } handler 对应的事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.un(document.body,\"click\",function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n\r\n /**\r\n * 解除DOM事件绑定\r\n * @method un\r\n * @param { Node } element 需要解除事件绑定的节点对象\r\n * @param { Array } type 需要接触绑定的事件类型数组\r\n * @param { Function } handler 对应的事件处理器\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.un(document.body, [\"click\",\"mousedown\"],function(evt){\r\n * //evt为事件对象,this为被点击元素对象\r\n * });\r\n * ```\r\n */\r\n un: function (element, type, handler) {\r\n var types = utils.isArray(type) ? type : utils.trim(type).split(/\\s+/),\r\n k = types.length;\r\n if (k)\r\n while (k--) {\r\n type = types[k];\r\n if (element.removeEventListener) {\r\n element.removeEventListener(type, handler, false);\r\n } else {\r\n var key = type + handler.toString();\r\n try {\r\n element.detachEvent('on' + type, handler._d ? handler._d[key] : handler);\r\n } catch (e) {}\r\n if (handler._d && handler._d[key]) {\r\n var index = utils.indexOf(handler._d.els, element);\r\n if (index != -1) {\r\n handler._d.els.splice(index, 1);\r\n }\r\n handler._d.els.length == 0 && delete handler._d[key];\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 比较节点nodeA与节点nodeB是否具有相同的标签名、属性名以及属性值\r\n * @method isSameElement\r\n * @param { Node } nodeA 需要比较的节点\r\n * @param { Node } nodeB 需要比较的节点\r\n * @return { Boolean } 两个节点是否具有相同的标签名、属性名以及属性值\r\n * @example\r\n * ```html\r\n * ssss\r\n * bbbbb\r\n * ssss\r\n * bbbbb\r\n *\r\n * \r\n * ```\r\n */\r\n isSameElement: function (nodeA, nodeB) {\r\n if (nodeA.tagName != nodeB.tagName) {\r\n return false;\r\n }\r\n var thisAttrs = nodeA.attributes,\r\n otherAttrs = nodeB.attributes;\r\n if (!ie && thisAttrs.length != otherAttrs.length) {\r\n return false;\r\n }\r\n var attrA, attrB, al = 0,\r\n bl = 0;\r\n for (var i = 0; attrA = thisAttrs[i++];) {\r\n if (attrA.nodeName == 'style') {\r\n if (attrA.specified) {\r\n al++;\r\n }\r\n if (domUtils.isSameStyle(nodeA, nodeB)) {\r\n continue;\r\n } else {\r\n return false;\r\n }\r\n }\r\n if (ie) {\r\n if (attrA.specified) {\r\n al++;\r\n attrB = otherAttrs.getNamedItem(attrA.nodeName);\r\n } else {\r\n continue;\r\n }\r\n } else {\r\n attrB = nodeB.attributes[attrA.nodeName];\r\n }\r\n if (!attrB.specified || attrA.nodeValue != attrB.nodeValue) {\r\n return false;\r\n }\r\n }\r\n // 有可能attrB的属性包含了attrA的属性之外还有自己的属性\r\n if (ie) {\r\n for (i = 0; attrB = otherAttrs[i++];) {\r\n if (attrB.specified) {\r\n bl++;\r\n }\r\n }\r\n if (al != bl) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * 判断节点nodeA与节点nodeB的元素的style属性是否一致\r\n * @method isSameStyle\r\n * @param { Node } nodeA 需要比较的节点\r\n * @param { Node } nodeB 需要比较的节点\r\n * @return { Boolean } 两个节点是否具有相同的style属性值\r\n * @example\r\n * ```html\r\n * ssss\r\n * bbbbb\r\n * ssss\r\n * bbbbb\r\n *\r\n * \r\n * ```\r\n */\r\n isSameStyle: function (nodeA, nodeB) {\r\n var styleA = nodeA.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':'),\r\n styleB = nodeB.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':');\r\n if (browser.opera) {\r\n styleA = nodeA.style;\r\n styleB = nodeB.style;\r\n if (styleA.length != styleB.length)\r\n return false;\r\n for (var p in styleA) {\r\n if (/^(\\d+|csstext)$/i.test(p)) {\r\n continue;\r\n }\r\n if (styleA[p] != styleB[p]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n if (!styleA || !styleB) {\r\n return styleA == styleB;\r\n }\r\n styleA = styleA.split(';');\r\n styleB = styleB.split(';');\r\n if (styleA.length != styleB.length) {\r\n return false;\r\n }\r\n for (var i = 0, ci; ci = styleA[i++];) {\r\n if (utils.indexOf(styleB, ci) == -1) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n /**\r\n * 检查节点node是否为block元素\r\n * @method isBlockElm\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 是否是block元素节点\r\n * @warning 该方法的判断规则如下: 如果该元素原本是block元素, 则不论该元素当前的css样式是什么都会返回true;\r\n * 否则,检测该元素的css样式, 如果该元素当前是block元素, 则返回true。 其余情况下都返回false。\r\n * @example\r\n * ```html\r\n * \r\n * \r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n isBlockElm: function (node) {\r\n return node.nodeType == 1 && (dtd.$block[node.tagName] || styleBlock[domUtils.getComputedStyle(node, 'display')]) && !dtd.$nonChild[node.tagName];\r\n },\r\n /**\r\n * 检测node节点是否为body节点\r\n * @method isBody\r\n * @param { Element } node 需要检测的dom元素\r\n * @return { Boolean } 给定的元素是否是body元素\r\n * @example\r\n * ```javascript\r\n * //output: true\r\n * console.log( UE.dom.domUtils.isBody( document.body ) );\r\n * ```\r\n */\r\n isBody: function (node) {\r\n return node && node.nodeType == 1 && node.tagName.toLowerCase() == 'body';\r\n },\r\n /**\r\n * 以node节点为分界,将该节点的指定祖先节点parent拆分成两个独立的节点,\r\n * 拆分形成的两个节点之间是node节点\r\n * @method breakParent\r\n * @param { Node } node 作为分界的节点对象\r\n * @param { Node } parent 该节点必须是node节点的祖先节点, 且是block节点。\r\n * @return { Node } 给定的node分界节点\r\n * @example\r\n * ```javascript\r\n *\r\n * var node = document.createElement(\"span\"),\r\n * wrapNode = document.createElement( \"div\" ),\r\n * parent = document.createElement(\"p\");\r\n *\r\n * parent.appendChild( node );\r\n * wrapNode.appendChild( parent );\r\n *\r\n * //拆分前\r\n * //output:

\r\n * console.log( wrapNode.innerHTML );\r\n *\r\n *\r\n * UE.dom.domUtils.breakParent( node, parent );\r\n * //拆分后\r\n * //output:

\r\n * console.log( wrapNode.innerHTML );\r\n *\r\n * ```\r\n */\r\n breakParent: function (node, parent) {\r\n var tmpNode,\r\n parentClone = node,\r\n clone = node,\r\n leftNodes,\r\n rightNodes;\r\n do {\r\n parentClone = parentClone.parentNode;\r\n if (leftNodes) {\r\n tmpNode = parentClone.cloneNode(false);\r\n tmpNode.appendChild(leftNodes);\r\n leftNodes = tmpNode;\r\n tmpNode = parentClone.cloneNode(false);\r\n tmpNode.appendChild(rightNodes);\r\n rightNodes = tmpNode;\r\n } else {\r\n leftNodes = parentClone.cloneNode(false);\r\n rightNodes = leftNodes.cloneNode(false);\r\n }\r\n while (tmpNode = clone.previousSibling) {\r\n leftNodes.insertBefore(tmpNode, leftNodes.firstChild);\r\n }\r\n while (tmpNode = clone.nextSibling) {\r\n rightNodes.appendChild(tmpNode);\r\n }\r\n clone = parentClone;\r\n } while (parent !== parentClone);\r\n tmpNode = parent.parentNode;\r\n tmpNode.insertBefore(leftNodes, parent);\r\n tmpNode.insertBefore(rightNodes, parent);\r\n tmpNode.insertBefore(node, rightNodes);\r\n domUtils.remove(parent);\r\n return node;\r\n },\r\n /**\r\n * 检查节点node是否是空inline节点\r\n * @method isEmptyInlineElement\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Number } 如果给定的节点是空的inline节点, 则返回1, 否则返回0。\r\n * @example\r\n * ```html\r\n * => 1\r\n * => 1\r\n * => 1\r\n * xx => 0\r\n * ```\r\n */\r\n isEmptyInlineElement: function (node) {\r\n if (node.nodeType != 1 || !dtd.$removeEmpty[node.tagName]) {\r\n return 0;\r\n }\r\n node = node.firstChild;\r\n while (node) {\r\n //如果是创建的bookmark就跳过\r\n if (domUtils.isBookmarkNode(node)) {\r\n return 0;\r\n }\r\n if (node.nodeType == 1 && !domUtils.isEmptyInlineElement(node) ||\r\n node.nodeType == 3 && !domUtils.isWhitespace(node)\r\n ) {\r\n return 0;\r\n }\r\n node = node.nextSibling;\r\n }\r\n return 1;\r\n\r\n },\r\n\r\n /**\r\n * 删除node节点下首尾两端的空白文本子节点\r\n * @method trimWhiteTextNode\r\n * @param { Element } node 需要执行删除操作的元素对象\r\n * @example\r\n * ```javascript\r\n * var node = document.createElement(\"div\");\r\n *\r\n * node.appendChild( document.createTextNode( \"\" ) );\r\n *\r\n * node.appendChild( document.createElement(\"div\") );\r\n *\r\n * node.appendChild( document.createTextNode( \"\" ) );\r\n *\r\n * //3\r\n * console.log( node.childNodes.length );\r\n *\r\n * UE.dom.domUtils.trimWhiteTextNode( node );\r\n *\r\n * //1\r\n * console.log( node.childNodes.length );\r\n * ```\r\n */\r\n trimWhiteTextNode: function (node) {\r\n function remove(dir) {\r\n var child;\r\n while ((child = node[dir]) && child.nodeType == 3 && domUtils.isWhitespace(child)) {\r\n node.removeChild(child);\r\n }\r\n }\r\n remove('firstChild');\r\n remove('lastChild');\r\n },\r\n\r\n /**\r\n * 合并node节点下相同的子节点\r\n * @name mergeChild\r\n * @desc\r\n * UE.dom.domUtils.mergeChild(node,tagName) //tagName要合并的子节点的标签\r\n * @example\r\n *

xxaaxx

\r\n * ==> UE.dom.domUtils.mergeChild(node,'span')\r\n *

xxaaxx

\r\n */\r\n mergeChild: function (node, tagName, attrs) {\r\n var list = domUtils.getElementsByTagName(node, node.tagName.toLowerCase());\r\n for (var i = 0, ci; ci = list[i++];) {\r\n if (!ci.parentNode || domUtils.isBookmarkNode(ci)) {\r\n continue;\r\n }\r\n //span单独处理\r\n if (ci.tagName.toLowerCase() == 'span') {\r\n if (node === ci.parentNode) {\r\n domUtils.trimWhiteTextNode(node);\r\n if (node.childNodes.length == 1) {\r\n node.style.cssText = ci.style.cssText + \";\" + node.style.cssText;\r\n domUtils.remove(ci, true);\r\n continue;\r\n }\r\n }\r\n ci.style.cssText = node.style.cssText + ';' + ci.style.cssText;\r\n if (attrs) {\r\n var style = attrs.style;\r\n if (style) {\r\n style = style.split(';');\r\n for (var j = 0, s; s = style[j++];) {\r\n ci.style[utils.cssStyleToDomStyle(s.split(':')[0])] = s.split(':')[1];\r\n }\r\n }\r\n }\r\n if (domUtils.isSameStyle(ci, node)) {\r\n domUtils.remove(ci, true);\r\n }\r\n continue;\r\n }\r\n if (domUtils.isSameElement(node, ci)) {\r\n domUtils.remove(ci, true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 原生方法getElementsByTagName的封装\r\n * @method getElementsByTagName\r\n * @param { Node } node 目标节点对象\r\n * @param { String } tagName 需要查找的节点的tagName, 多个tagName以空格分割\r\n * @return { Array } 符合条件的节点集合\r\n */\r\n getElementsByTagName: function (node, name, filter) {\r\n if (filter && utils.isString(filter)) {\r\n var className = filter;\r\n filter = function (node) {\r\n return domUtils.hasClass(node, className)\r\n }\r\n }\r\n name = utils.trim(name).replace(/[ ]{2,}/g, ' ').split(' ');\r\n var arr = [];\r\n for (var n = 0, ni; ni = name[n++];) {\r\n var list = node.getElementsByTagName(ni);\r\n for (var i = 0, ci; ci = list[i++];) {\r\n if (!filter || filter(ci))\r\n arr.push(ci);\r\n }\r\n }\r\n\r\n return arr;\r\n },\r\n /**\r\n * 将节点node提取到父节点上\r\n * @method mergeToParent\r\n * @param { Element } node 需要提取的元素对象\r\n * @example\r\n * ```html\r\n *
\r\n *
\r\n * \r\n *
\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n mergeToParent: function (node) {\r\n var parent = node.parentNode;\r\n while (parent && dtd.$removeEmpty[parent.tagName]) {\r\n if (parent.tagName == node.tagName || parent.tagName == 'A') { //针对a标签单独处理\r\n domUtils.trimWhiteTextNode(parent);\r\n //span需要特殊处理 不处理这样的情况 xxxxxxxxx\r\n if (parent.tagName == 'SPAN' && !domUtils.isSameStyle(parent, node) ||\r\n (parent.tagName == 'A' && node.tagName == 'SPAN')) {\r\n if (parent.childNodes.length > 1 || parent !== node.parentNode) {\r\n node.style.cssText = parent.style.cssText + \";\" + node.style.cssText;\r\n parent = parent.parentNode;\r\n continue;\r\n } else {\r\n parent.style.cssText += \";\" + node.style.cssText;\r\n //trace:952 a标签要保持下划线\r\n if (parent.tagName == 'A') {\r\n parent.style.textDecoration = 'underline';\r\n }\r\n }\r\n }\r\n if (parent.tagName != 'A') {\r\n parent === node.parentNode && domUtils.remove(node, true);\r\n break;\r\n }\r\n }\r\n parent = parent.parentNode;\r\n }\r\n },\r\n /**\r\n * 合并节点node的左右兄弟节点\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @example\r\n * ```html\r\n * xxxxoooxxxx\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 合并节点node的左右兄弟节点, 可以根据给定的条件选择是否忽略合并左节点。\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @param { Boolean } ignorePre 是否忽略合并左节点\r\n * @example\r\n * ```html\r\n * xxxxoooxxxx\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 合并节点node的左右兄弟节点,可以根据给定的条件选择是否忽略合并左右节点。\r\n * @method mergeSibling\r\n * @param { Element } node 需要合并的目标节点\r\n * @param { Boolean } ignorePre 是否忽略合并左节点\r\n * @param { Boolean } ignoreNext 是否忽略合并右节点\r\n * @remind 如果同时忽略左右节点, 则该操作什么也不会做\r\n * @example\r\n * ```html\r\n * xxxxoooxxxx\r\n *\r\n * \r\n * ```\r\n */\r\n mergeSibling: function (node, ignorePre, ignoreNext) {\r\n function merge(rtl, start, node) {\r\n var next;\r\n if ((next = node[rtl]) && !domUtils.isBookmarkNode(next) && next.nodeType == 1 && domUtils.isSameElement(node, next)) {\r\n while (next.firstChild) {\r\n if (start == 'firstChild') {\r\n node.insertBefore(next.lastChild, node.firstChild);\r\n } else {\r\n node.appendChild(next.firstChild);\r\n }\r\n }\r\n domUtils.remove(next);\r\n }\r\n }!ignorePre && merge('previousSibling', 'firstChild', node);\r\n !ignoreNext && merge('nextSibling', 'lastChild', node);\r\n },\r\n\r\n /**\r\n * 设置节点node及其子节点不会被选中\r\n * @method unSelectable\r\n * @param { Element } node 需要执行操作的dom元素\r\n * @remind 执行该操作后的节点, 将不能被鼠标选中\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.unSelectable( document.body );\r\n * ```\r\n */\r\n unSelectable: ie && browser.ie9below || browser.opera ? function (node) {\r\n //for ie9\r\n node.onselectstart = function () {\r\n return false;\r\n };\r\n node.onclick = node.onkeyup = node.onkeydown = function () {\r\n return false;\r\n };\r\n node.unselectable = 'on';\r\n node.setAttribute(\"unselectable\", \"on\");\r\n for (var i = 0, ci; ci = node.all[i++];) {\r\n switch (ci.tagName.toLowerCase()) {\r\n case 'iframe':\r\n case 'textarea':\r\n case 'input':\r\n case 'select':\r\n break;\r\n default:\r\n ci.unselectable = 'on';\r\n node.setAttribute(\"unselectable\", \"on\");\r\n }\r\n }\r\n } : function (node) {\r\n node.style.MozUserSelect =\r\n node.style.webkitUserSelect =\r\n node.style.msUserSelect =\r\n node.style.KhtmlUserSelect = 'none';\r\n },\r\n /**\r\n * 删除节点node上的指定属性名称的属性\r\n * @method removeAttributes\r\n * @param { Node } node 需要删除属性的节点对象\r\n * @param { String } attrNames 可以是空格隔开的多个属性名称,该操作将会依次删除相应的属性\r\n * @example\r\n * ```html\r\n *
\r\n * xxxxx\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 删除节点node上的指定属性名称的属性\r\n * @method removeAttributes\r\n * @param { Node } node 需要删除属性的节点对象\r\n * @param { Array } attrNames 需要删除的属性名数组\r\n * @example\r\n * ```html\r\n *
\r\n * xxxxx\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n removeAttributes: function (node, attrNames) {\r\n attrNames = utils.isArray(attrNames) ? attrNames : utils.trim(attrNames).replace(/[ ]{2,}/g, ' ').split(' ');\r\n for (var i = 0, ci; ci = attrNames[i++];) {\r\n ci = attrFix[ci] || ci;\r\n switch (ci) {\r\n case 'className':\r\n node[ci] = '';\r\n break;\r\n case 'style':\r\n node.style.cssText = '';\r\n var val = node.getAttributeNode('style');\r\n !browser.ie && val && node.removeAttributeNode(val);\r\n }\r\n node.removeAttribute(ci);\r\n }\r\n },\r\n /**\r\n * 在doc下创建一个标签名为tag,属性为attrs的元素\r\n * @method createElement\r\n * @param { DomDocument } doc 新创建的元素属于该document节点创建\r\n * @param { String } tagName 需要创建的元素的标签名\r\n * @param { Object } attrs 新创建的元素的属性key-value集合\r\n * @return { Element } 新创建的元素对象\r\n * @example\r\n * ```javascript\r\n * var ele = UE.dom.domUtils.createElement( document, 'div', {\r\n * id: 'test'\r\n * } );\r\n *\r\n * //output: DIV\r\n * console.log( ele.tagName );\r\n *\r\n * //output: test\r\n * console.log( ele.id );\r\n *\r\n * ```\r\n */\r\n createElement: function (doc, tag, attrs) {\r\n return domUtils.setAttributes(doc.createElement(tag), attrs)\r\n },\r\n /**\r\n * 为节点node添加属性attrs,attrs为属性键值对\r\n * @method setAttributes\r\n * @param { Element } node 需要设置属性的元素对象\r\n * @param { Object } attrs 需要设置的属性名-值对\r\n * @return { Element } 设置属性的元素对象\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n *\r\n */\r\n setAttributes: function (node, attrs) {\r\n for (var attr in attrs) {\r\n if (attrs.hasOwnProperty(attr)) {\r\n var value = attrs[attr];\r\n switch (attr) {\r\n case 'class':\r\n //ie下要这样赋值,setAttribute不起作用\r\n node.className = value;\r\n break;\r\n case 'style':\r\n node.style.cssText = node.style.cssText + \";\" + value;\r\n break;\r\n case 'innerHTML':\r\n node[attr] = value;\r\n break;\r\n case 'value':\r\n node.value = value;\r\n break;\r\n default:\r\n node.setAttribute(attrFix[attr] || attr, value);\r\n }\r\n }\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 获取元素element经过计算后的样式值\r\n * @method getComputedStyle\r\n * @param { Element } element 需要获取样式的元素对象\r\n * @param { String } styleName 需要获取的样式名\r\n * @return { String } 获取到的样式值\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n getComputedStyle: function (element, styleName) {\r\n //一下的属性单独处理\r\n var pros = 'width height top left';\r\n\r\n if (pros.indexOf(styleName) > -1) {\r\n return element['offset' + styleName.replace(/^\\w/, function (s) {\r\n return s.toUpperCase()\r\n })] + 'px';\r\n }\r\n //忽略文本节点\r\n if (element.nodeType == 3) {\r\n element = element.parentNode;\r\n }\r\n //ie下font-size若body下定义了font-size,则从currentStyle里会取到这个font-size. 取不到实际值,故此修改.\r\n if (browser.ie && browser.version < 9 && styleName == 'font-size' && !element.style.fontSize &&\r\n !dtd.$empty[element.tagName] && !dtd.$nonChild[element.tagName]) {\r\n var span = element.ownerDocument.createElement('span');\r\n span.style.cssText = 'padding:0;border:0;font-family:simsun;';\r\n span.innerHTML = '.';\r\n element.appendChild(span);\r\n var result = span.offsetHeight;\r\n element.removeChild(span);\r\n span = null;\r\n return result + 'px';\r\n }\r\n try {\r\n var value = domUtils.getStyle(element, styleName) ||\r\n (window.getComputedStyle ? domUtils.getWindow(element).getComputedStyle(element, '').getPropertyValue(styleName) :\r\n (element.currentStyle || element.style)[utils.cssStyleToDomStyle(styleName)]);\r\n\r\n } catch (e) {\r\n return \"\";\r\n }\r\n return utils.transUnitToPx(utils.fixColor(styleName, value));\r\n },\r\n /**\r\n * 删除元素element指定的className\r\n * @method removeClasses\r\n * @param { Element } ele 需要删除class的元素节点\r\n * @param { String } classNames 需要删除的className, 多个className之间以空格分开\r\n * @example\r\n * ```html\r\n * xxx\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 删除元素element指定的className\r\n * @method removeClasses\r\n * @param { Element } ele 需要删除class的元素节点\r\n * @param { Array } classNames 需要删除的className数组\r\n * @example\r\n * ```html\r\n * xxx\r\n *\r\n * \r\n * ```\r\n */\r\n removeClasses: function (elm, classNames) {\r\n classNames = utils.isArray(classNames) ? classNames :\r\n utils.trim(classNames).replace(/[ ]{2,}/g, ' ').split(' ');\r\n for (var i = 0, ci, cls = elm.className; ci = classNames[i++];) {\r\n cls = cls.replace(new RegExp('\\\\b' + ci + '\\\\b'), '')\r\n }\r\n cls = utils.trim(cls).replace(/[ ]{2,}/g, ' ');\r\n if (cls) {\r\n elm.className = cls;\r\n } else {\r\n domUtils.removeAttributes(elm, ['class']);\r\n }\r\n },\r\n /**\r\n * 给元素element添加className\r\n * @method addClass\r\n * @param { Node } ele 需要增加className的元素\r\n * @param { String } classNames 需要添加的className, 多个className之间以空格分割\r\n * @remind 相同的类名不会被重复添加\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 判断元素element是否包含给定的样式类名className\r\n * @method hasClass\r\n * @param { Node } ele 需要检测的元素\r\n * @param { Array } classNames 需要检测的className数组\r\n * @return { Boolean } 元素是否包含所有给定的className\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n hasClass: function (element, className) {\r\n if (utils.isRegExp(className)) {\r\n return className.test(element.className)\r\n }\r\n className = utils.trim(className).replace(/[ ]{2,}/g, ' ').split(' ');\r\n for (var i = 0, ci, cls = element.className; ci = className[i++];) {\r\n if (!new RegExp('\\\\b' + ci + '\\\\b', 'i').test(cls)) {\r\n return false;\r\n }\r\n }\r\n return i - 1 == className.length;\r\n },\r\n\r\n /**\r\n * 阻止事件默认行为\r\n * @method preventDefault\r\n * @param { Event } evt 需要阻止默认行为的事件对象\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.preventDefault( evt );\r\n * ```\r\n */\r\n preventDefault: function (evt) {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n },\r\n /**\r\n * 删除元素element指定的样式\r\n * @method removeStyle\r\n * @param { Element } element 需要删除样式的元素\r\n * @param { String } styleName 需要删除的样式名\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n removeStyle: function (element, name) {\r\n if (browser.ie) {\r\n //针对color先单独处理一下\r\n if (name == 'color') {\r\n name = '(^|;)' + name;\r\n }\r\n element.style.cssText = element.style.cssText.replace(new RegExp(name + '[^:]*:[^;]+;?', 'ig'), '')\r\n } else {\r\n if (element.style.removeProperty) {\r\n element.style.removeProperty(name);\r\n } else {\r\n element.style.removeAttribute(utils.cssStyleToDomStyle(name));\r\n }\r\n }\r\n\r\n\r\n if (!element.style.cssText) {\r\n domUtils.removeAttributes(element, ['style']);\r\n }\r\n },\r\n /**\r\n * 获取元素element的style属性的指定值\r\n * @method getStyle\r\n * @param { Element } element 需要获取属性值的元素\r\n * @param { String } styleName 需要获取的style的名称\r\n * @warning 该方法仅获取元素style属性中所标明的值\r\n * @return { String } 该元素包含指定的style属性值\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n getStyle: function (element, name) {\r\n var value = element.style[utils.cssStyleToDomStyle(name)];\r\n return utils.fixColor(name, value);\r\n },\r\n /**\r\n * 为元素element设置样式属性值\r\n * @method setStyle\r\n * @param { Element } element 需要设置样式的元素\r\n * @param { String } styleName 样式名\r\n * @param { String } styleValue 样式值\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n setStyle: function (element, name, value) {\r\n element.style[utils.cssStyleToDomStyle(name)] = value;\r\n if (!utils.trim(element.style.cssText)) {\r\n this.removeAttributes(element, 'style')\r\n }\r\n },\r\n /**\r\n * 为元素element设置多个样式属性值\r\n * @method setStyles\r\n * @param { Element } element 需要设置样式的元素\r\n * @param { Object } styles 样式名值对\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n setStyles: function (element, styles) {\r\n for (var name in styles) {\r\n if (styles.hasOwnProperty(name)) {\r\n domUtils.setStyle(element, name, styles[name]);\r\n }\r\n }\r\n },\r\n /**\r\n * 删除_moz_dirty属性\r\n * @private\r\n * @method removeDirtyAttr\r\n */\r\n removeDirtyAttr: function (node) {\r\n for (var i = 0, ci, nodes = node.getElementsByTagName('*'); ci = nodes[i++];) {\r\n ci.removeAttribute('_moz_dirty');\r\n }\r\n node.removeAttribute('_moz_dirty');\r\n },\r\n /**\r\n * 获取子节点的数量\r\n * @method getChildCount\r\n * @param { Element } node 需要检测的元素\r\n * @return { Number } 给定的node元素的子节点数量\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的过滤规则, 获取符合条件的子节点的数量\r\n * @method getChildCount\r\n * @param { Element } node 需要检测的元素\r\n * @param { Function } fn 过滤器, 要求对符合条件的子节点返回true, 反之则要求返回false\r\n * @return { Number } 符合过滤条件的node元素的子节点数量\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n getChildCount: function (node, fn) {\r\n var count = 0,\r\n first = node.firstChild;\r\n fn = fn || function () {\r\n return 1;\r\n };\r\n while (first) {\r\n if (fn(first)) {\r\n count++;\r\n }\r\n first = first.nextSibling;\r\n }\r\n return count;\r\n },\r\n\r\n /**\r\n * 判断给定节点是否为空节点\r\n * @method isEmptyNode\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 节点是否为空\r\n * @example\r\n * ```javascript\r\n * UE.dom.domUtils.isEmptyNode( document.body );\r\n * ```\r\n */\r\n isEmptyNode: function (node) {\r\n return !node.firstChild || domUtils.getChildCount(node, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isBookmarkNode(node) && !domUtils.isWhitespace(node)\r\n }) == 0\r\n },\r\n clearSelectedArr: function (nodes) {\r\n var node;\r\n while (node = nodes.pop()) {\r\n domUtils.removeAttributes(node, ['class']);\r\n }\r\n },\r\n /**\r\n * 将显示区域滚动到指定节点的位置\r\n * @method scrollToView\r\n * @param {Node} node 节点\r\n * @param {window} win window对象\r\n * @param {Number} offsetTop 距离上方的偏移量\r\n */\r\n scrollToView: function (node, win, offsetTop) {\r\n var getViewPaneSize = function () {\r\n var doc = win.document,\r\n mode = doc.compatMode == 'CSS1Compat';\r\n return {\r\n width: (mode ? doc.documentElement.clientWidth : doc.body.clientWidth) || 0,\r\n height: (mode ? doc.documentElement.clientHeight : doc.body.clientHeight) || 0\r\n };\r\n },\r\n getScrollPosition = function (win) {\r\n if ('pageXOffset' in win) {\r\n return {\r\n x: win.pageXOffset || 0,\r\n y: win.pageYOffset || 0\r\n };\r\n } else {\r\n var doc = win.document;\r\n return {\r\n x: doc.documentElement.scrollLeft || doc.body.scrollLeft || 0,\r\n y: doc.documentElement.scrollTop || doc.body.scrollTop || 0\r\n };\r\n }\r\n };\r\n var winHeight = getViewPaneSize().height,\r\n offset = winHeight * -1 + offsetTop;\r\n offset += (node.offsetHeight || 0);\r\n var elementPosition = domUtils.getXY(node);\r\n offset += elementPosition.y;\r\n var currentScroll = getScrollPosition(win).y;\r\n // offset += 50;\r\n if (offset > currentScroll || offset < currentScroll - winHeight) {\r\n win.scrollTo(0, offset + (offset < 0 ? -20 : 20));\r\n }\r\n },\r\n /**\r\n * 判断给定节点是否为br\r\n * @method isBr\r\n * @param { Node } node 需要判断的节点对象\r\n * @return { Boolean } 给定的节点是否是br节点\r\n */\r\n isBr: function (node) {\r\n return node.nodeType == 1 && node.tagName == 'BR';\r\n },\r\n /**\r\n * 判断给定的节点是否是一个“填充”节点\r\n * @private\r\n * @method isFillChar\r\n * @param { Node } node 需要判断的节点\r\n * @param { Boolean } isInStart 是否从节点内容的开始位置匹配\r\n * @returns { Boolean } 节点是否是填充节点\r\n */\r\n isFillChar: function (node, isInStart) {\r\n if (node.nodeType != 3)\r\n return false;\r\n var text = node.nodeValue;\r\n if (isInStart) {\r\n return new RegExp('^' + domUtils.fillChar).test(text)\r\n }\r\n return !text.replace(new RegExp(domUtils.fillChar, 'g'), '').length\r\n },\r\n isStartInblock: function (range) {\r\n var tmpRange = range.cloneRange(),\r\n flag = 0,\r\n start = tmpRange.startContainer,\r\n tmp;\r\n if (start.nodeType == 1 && start.childNodes[tmpRange.startOffset]) {\r\n start = start.childNodes[tmpRange.startOffset];\r\n var pre = start.previousSibling;\r\n while (pre && domUtils.isFillChar(pre)) {\r\n start = pre;\r\n pre = pre.previousSibling;\r\n }\r\n }\r\n if (this.isFillChar(start, true) && tmpRange.startOffset == 1) {\r\n tmpRange.setStartBefore(start);\r\n start = tmpRange.startContainer;\r\n }\r\n\r\n while (start && domUtils.isFillChar(start)) {\r\n tmp = start;\r\n start = start.previousSibling\r\n }\r\n if (tmp) {\r\n tmpRange.setStartBefore(tmp);\r\n start = tmpRange.startContainer;\r\n }\r\n if (start.nodeType == 1 && domUtils.isEmptyNode(start) && tmpRange.startOffset == 1) {\r\n tmpRange.setStart(start, 0).collapse(true);\r\n }\r\n while (!tmpRange.startOffset) {\r\n start = tmpRange.startContainer;\r\n if (domUtils.isBlockElm(start) || domUtils.isBody(start)) {\r\n flag = 1;\r\n break;\r\n }\r\n var pre = tmpRange.startContainer.previousSibling,\r\n tmpNode;\r\n if (!pre) {\r\n tmpRange.setStartBefore(tmpRange.startContainer);\r\n } else {\r\n while (pre && domUtils.isFillChar(pre)) {\r\n tmpNode = pre;\r\n pre = pre.previousSibling;\r\n }\r\n if (tmpNode) {\r\n tmpRange.setStartBefore(tmpNode);\r\n } else {\r\n tmpRange.setStartBefore(tmpRange.startContainer);\r\n }\r\n }\r\n }\r\n return flag && !domUtils.isBody(tmpRange.startContainer) ? 1 : 0;\r\n },\r\n\r\n /**\r\n * 判断给定的元素是否是一个空元素\r\n * @method isEmptyBlock\r\n * @param { Element } node 需要判断的元素\r\n * @return { Boolean } 是否是空元素\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 根据指定的判断规则判断给定的元素是否是一个空元素\r\n * @method isEmptyBlock\r\n * @param { Element } node 需要判断的元素\r\n * @param { RegExp } reg 对内容执行判断的正则表达式对象\r\n * @return { Boolean } 是否是空元素\r\n */\r\n isEmptyBlock: function (node, reg) {\r\n if (node.nodeType != 1)\r\n return 0;\r\n reg = reg || new RegExp('[ \\xa0\\t\\r\\n' + domUtils.fillChar + ']', 'g');\r\n\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var n in dtd.$isNotEmpty) {\r\n if (node.getElementsByTagName(n).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n },\r\n\r\n /**\r\n * 移动元素使得该元素的位置移动指定的偏移量的距离\r\n * @method setViewportOffset\r\n * @param { Element } element 需要设置偏移量的元素\r\n * @param { Object } offset 偏移量, 形如{ left: 100, top: 50 }的一个键值对, 表示该元素将在\r\n * 现有的位置上向水平方向偏移offset.left的距离, 在竖直方向上偏移\r\n * offset.top的距离\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n setViewportOffset: function (element, offset) {\r\n var left = parseInt(element.style.left) | 0;\r\n var top = parseInt(element.style.top) | 0;\r\n var rect = element.getBoundingClientRect();\r\n var offsetLeft = offset.left - rect.left;\r\n var offsetTop = offset.top - rect.top;\r\n if (offsetLeft) {\r\n element.style.left = left + offsetLeft + 'px';\r\n }\r\n if (offsetTop) {\r\n element.style.top = top + offsetTop + 'px';\r\n }\r\n },\r\n\r\n /**\r\n * 用“填充字符”填充节点\r\n * @method fillNode\r\n * @private\r\n * @param { DomDocument } doc 填充的节点所在的docment对象\r\n * @param { Node } node 需要填充的节点对象\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n fillNode: function (doc, node) {\r\n var tmpNode = browser.ie ? doc.createTextNode(domUtils.fillChar) : doc.createElement('br');\r\n node.innerHTML = '';\r\n node.appendChild(tmpNode);\r\n },\r\n\r\n /**\r\n * 把节点src的所有子节点追加到另一个节点tag上去\r\n * @method moveChild\r\n * @param { Node } src 源节点, 该节点下的所有子节点将被移除\r\n * @param { Node } tag 目标节点, 从源节点移除的子节点将被追加到该节点下\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n *
\r\n *
\r\n *
\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 把节点src的所有子节点移动到另一个节点tag上去, 可以通过dir参数控制附加的行为是“追加”还是“插入顶部”\r\n * @method moveChild\r\n * @param { Node } src 源节点, 该节点下的所有子节点将被移除\r\n * @param { Node } tag 目标节点, 从源节点移除的子节点将被附加到该节点下\r\n * @param { Boolean } dir 附加方式, 如果为true, 则附加进去的节点将被放到目标节点的顶部, 反之,则放到末尾\r\n * @example\r\n * ```html\r\n *
\r\n * \r\n *
\r\n *
\r\n *
\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n moveChild: function (src, tag, dir) {\r\n while (src.firstChild) {\r\n if (dir && tag.firstChild) {\r\n tag.insertBefore(src.lastChild, tag.firstChild);\r\n } else {\r\n tag.appendChild(src.firstChild);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 判断节点的标签上是否不存在任何属性\r\n * @method hasNoAttributes\r\n * @private\r\n * @param { Node } node 需要检测的节点对象\r\n * @return { Boolean } 节点是否不包含任何属性\r\n * @example\r\n * ```html\r\n *
xxxx
\r\n *\r\n * \r\n * ```\r\n */\r\n hasNoAttributes: function (node) {\r\n return browser.ie ? /^<\\w+\\s*?>/.test(node.outerHTML) : node.attributes.length == 0;\r\n },\r\n\r\n /**\r\n * 检测节点是否是UEditor所使用的辅助节点\r\n * @method isCustomeNode\r\n * @private\r\n * @param { Node } node 需要检测的节点\r\n * @remind 辅助节点是指编辑器要完成工作临时添加的节点, 在输出的时候将会从编辑器内移除, 不会影响最终的结果。\r\n * @return { Boolean } 给定的节点是否是一个辅助节点\r\n */\r\n isCustomeNode: function (node) {\r\n return node.nodeType == 1 && node.getAttribute('_ue_custom_node_');\r\n },\r\n\r\n /**\r\n * 检测节点的标签是否是给定的标签\r\n * @method isTagNode\r\n * @param { Node } node 需要检测的节点对象\r\n * @param { String } tagName 标签\r\n * @return { Boolean } 节点的标签是否是给定的标签\r\n * @example\r\n * ```html\r\n *
\r\n *\r\n * \r\n * ```\r\n */\r\n isTagNode: function (node, tagNames) {\r\n return node.nodeType == 1 && new RegExp('\\\\b' + node.tagName + '\\\\b', 'i').test(tagNames)\r\n },\r\n\r\n /**\r\n * 给定一个节点数组,在通过指定的过滤器过滤后, 获取其中满足过滤条件的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false\r\n * @return { Node | NULL } 如果找到符合过滤条件的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: null\r\n * console.log( UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() !== 'div';\r\n * } ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 给定一个节点数组nodeList和一组标签名tagNames, 获取其中能够匹配标签名的节点集合中的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { String } tagNames 需要匹配的标签名, 多个标签名之间用空格分割\r\n * @return { Node | NULL } 如果找到标签名匹配的节点, 则返回该节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: null\r\n * console.log( UE.dom.domUtils.filterNodeList( divNodes, 'a span' ) );\r\n * ```\r\n */\r\n\r\n /**\r\n * 给定一个节点数组,在通过指定的过滤器过滤后, 如果参数forAll为true, 则会返回所有满足过滤\r\n * 条件的节点集合, 否则, 返回满足条件的节点集合中的第一个节点\r\n * @method filterNodeList\r\n * @param { Array } nodeList 需要过滤的节点数组\r\n * @param { Function } fn 过滤器, 对符合条件的节点, 执行结果返回true, 反之则返回false\r\n * @param { Boolean } forAll 是否返回整个节点数组, 如果该参数为false, 则返回节点集合中的第一个节点\r\n * @return { Array | Node | NULL } 如果找到符合过滤条件的节点, 则根据参数forAll的值决定返回满足\r\n * 过滤条件的节点数组或第一个节点, 否则返回NULL\r\n * @example\r\n * ```javascript\r\n * var divNodes = document.getElementsByTagName(\"div\");\r\n * divNodes = [].slice.call( divNodes, 0 );\r\n *\r\n * //output: 3(假定有3个div)\r\n * console.log( divNodes.length );\r\n *\r\n * var nodes = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() === 'div';\r\n * }, true );\r\n *\r\n * //output: 3\r\n * console.log( nodes.length );\r\n *\r\n * var node = UE.dom.domUtils.filterNodeList( divNodes, function ( node ) {\r\n * return node.tagName.toLowerCase() === 'div';\r\n * }, false );\r\n *\r\n * //output: div\r\n * console.log( node.nodeName );\r\n * ```\r\n */\r\n filterNodeList: function (nodelist, filter, forAll) {\r\n var results = [];\r\n if (!utils.isFunction(filter)) {\r\n var str = filter;\r\n filter = function (n) {\r\n return utils.indexOf(utils.isArray(str) ? str : str.split(' '), n.tagName.toLowerCase()) != -1\r\n };\r\n }\r\n utils.each(nodelist, function (n) {\r\n filter(n) && results.push(n)\r\n });\r\n return results.length == 0 ? null : results.length == 1 || !forAll ? results[0] : results\r\n },\r\n\r\n /**\r\n * 查询给定的range选区是否在给定的node节点内,且在该节点的最末尾\r\n * @method isInNodeEndBoundary\r\n * @param { UE.dom.Range } rng 需要判断的range对象, 该对象的startContainer不能为NULL\r\n * @param node 需要检测的节点对象\r\n * @return { Number } 如果给定的选取range对象是在node内部的最末端, 则返回1, 否则返回0\r\n */\r\n isInNodeEndBoundary: function (rng, node) {\r\n var start = rng.startContainer;\r\n if (start.nodeType == 3 && rng.startOffset != start.nodeValue.length) {\r\n return 0;\r\n }\r\n if (start.nodeType == 1 && rng.startOffset != start.childNodes.length) {\r\n return 0;\r\n }\r\n while (start !== node) {\r\n if (start.nextSibling) {\r\n return 0\r\n };\r\n start = start.parentNode;\r\n }\r\n return 1;\r\n },\r\n isBoundaryNode: function (node, dir) {\r\n var tmp;\r\n while (!domUtils.isBody(node)) {\r\n tmp = node;\r\n node = node.parentNode;\r\n if (tmp !== node[dir]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n fillHtml: browser.ie11below ? ' ' : '
'\r\n };\r\n var fillCharReg = new RegExp(domUtils.fillChar, 'g');\r\n\r\n // core/Range.js\r\n /**\r\n * Range封装\r\n * @file\r\n * @module UE.dom\r\n * @class Range\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * dom操作封装\r\n * @unfile\r\n * @module UE.dom\r\n */\r\n\r\n /**\r\n * Range实现类,本类是UEditor底层核心类,封装不同浏览器之间的Range操作。\r\n * @unfile\r\n * @module UE.dom\r\n * @class Range\r\n */\r\n\r\n\r\n (function () {\r\n var guid = 0,\r\n fillChar = domUtils.fillChar,\r\n fillData;\r\n\r\n /**\r\n * 更新range的collapse状态\r\n * @param {Range} range range对象\r\n */\r\n function updateCollapse(range) {\r\n range.collapsed =\r\n range.startContainer && range.endContainer &&\r\n range.startContainer === range.endContainer &&\r\n range.startOffset == range.endOffset;\r\n }\r\n\r\n function selectOneNode(rng) {\r\n return !rng.collapsed && rng.startContainer.nodeType == 1 && rng.startContainer === rng.endContainer && rng.endOffset - rng.startOffset == 1\r\n }\r\n\r\n function setEndPoint(toStart, node, offset, range) {\r\n //如果node是自闭合标签要处理\r\n if (node.nodeType == 1 && (dtd.$empty[node.tagName] || dtd.$nonChild[node.tagName])) {\r\n offset = domUtils.getNodeIndex(node) + (toStart ? 0 : 1);\r\n node = node.parentNode;\r\n }\r\n if (toStart) {\r\n range.startContainer = node;\r\n range.startOffset = offset;\r\n if (!range.endContainer) {\r\n range.collapse(true);\r\n }\r\n } else {\r\n range.endContainer = node;\r\n range.endOffset = offset;\r\n if (!range.startContainer) {\r\n range.collapse(false);\r\n }\r\n }\r\n updateCollapse(range);\r\n return range;\r\n }\r\n\r\n function execContentsAction(range, action) {\r\n //调整边界\r\n //range.includeBookmark();\r\n var start = range.startContainer,\r\n end = range.endContainer,\r\n startOffset = range.startOffset,\r\n endOffset = range.endOffset,\r\n doc = range.document,\r\n frag = doc.createDocumentFragment(),\r\n tmpStart, tmpEnd;\r\n if (start.nodeType == 1) {\r\n start = start.childNodes[startOffset] || (tmpStart = start.appendChild(doc.createTextNode('')));\r\n }\r\n if (end.nodeType == 1) {\r\n end = end.childNodes[endOffset] || (tmpEnd = end.appendChild(doc.createTextNode('')));\r\n }\r\n if (start === end && start.nodeType == 3) {\r\n frag.appendChild(doc.createTextNode(start.substringData(startOffset, endOffset - startOffset)));\r\n //is not clone\r\n if (action) {\r\n start.deleteData(startOffset, endOffset - startOffset);\r\n range.collapse(true);\r\n }\r\n return frag;\r\n }\r\n var current, currentLevel, clone = frag,\r\n startParents = domUtils.findParents(start, true),\r\n endParents = domUtils.findParents(end, true);\r\n for (var i = 0; startParents[i] == endParents[i];) {\r\n i++;\r\n }\r\n for (var j = i, si; si = startParents[j]; j++) {\r\n current = si.nextSibling;\r\n if (si == start) {\r\n if (!tmpStart) {\r\n if (range.startContainer.nodeType == 3) {\r\n clone.appendChild(doc.createTextNode(start.nodeValue.slice(startOffset)));\r\n //is not clone\r\n if (action) {\r\n start.deleteData(startOffset, start.nodeValue.length - startOffset);\r\n }\r\n } else {\r\n clone.appendChild(!action ? start.cloneNode(true) : start);\r\n }\r\n }\r\n } else {\r\n currentLevel = si.cloneNode(false);\r\n clone.appendChild(currentLevel);\r\n }\r\n while (current) {\r\n if (current === end || current === endParents[j]) {\r\n break;\r\n }\r\n si = current.nextSibling;\r\n clone.appendChild(!action ? current.cloneNode(true) : current);\r\n current = si;\r\n }\r\n clone = currentLevel;\r\n }\r\n clone = frag;\r\n if (!startParents[i]) {\r\n clone.appendChild(startParents[i - 1].cloneNode(false));\r\n clone = clone.firstChild;\r\n }\r\n for (var j = i, ei; ei = endParents[j]; j++) {\r\n current = ei.previousSibling;\r\n if (ei == end) {\r\n if (!tmpEnd && range.endContainer.nodeType == 3) {\r\n clone.appendChild(doc.createTextNode(end.substringData(0, endOffset)));\r\n //is not clone\r\n if (action) {\r\n end.deleteData(0, endOffset);\r\n }\r\n }\r\n } else {\r\n currentLevel = ei.cloneNode(false);\r\n clone.appendChild(currentLevel);\r\n }\r\n //如果两端同级,右边第一次已经被开始做了\r\n if (j != i || !startParents[i]) {\r\n while (current) {\r\n if (current === start) {\r\n break;\r\n }\r\n ei = current.previousSibling;\r\n clone.insertBefore(!action ? current.cloneNode(true) : current, clone.firstChild);\r\n current = ei;\r\n }\r\n }\r\n clone = currentLevel;\r\n }\r\n if (action) {\r\n range.setStartBefore(!endParents[i] ? endParents[i - 1] : !startParents[i] ? startParents[i - 1] : endParents[i]).collapse(true);\r\n }\r\n tmpStart && domUtils.remove(tmpStart);\r\n tmpEnd && domUtils.remove(tmpEnd);\r\n return frag;\r\n }\r\n\r\n /**\r\n * 创建一个跟document绑定的空的Range实例\r\n * @constructor\r\n * @param { Document } document 新建的选区所属的文档对象\r\n */\r\n\r\n /**\r\n * @property { Node } startContainer 当前Range的开始边界的容器节点, 可以是一个元素节点或者是文本节点\r\n */\r\n\r\n /**\r\n * @property { Node } startOffset 当前Range的开始边界容器节点的偏移量, 如果是元素节点,\r\n * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符\r\n */\r\n\r\n /**\r\n * @property { Node } endContainer 当前Range的结束边界的容器节点, 可以是一个元素节点或者是文本节点\r\n */\r\n\r\n /**\r\n * @property { Node } endOffset 当前Range的结束边界容器节点的偏移量, 如果是元素节点,\r\n * 该值就是childNodes中的第几个节点, 如果是文本节点就是文本内容的第几个字符\r\n */\r\n\r\n /**\r\n * @property { Boolean } collapsed 当前Range是否闭合\r\n * @default true\r\n * @remind Range是闭合的时候, startContainer === endContainer && startOffset === endOffset\r\n */\r\n\r\n /**\r\n * @property { Document } document 当前Range所属的Document对象\r\n * @remind 不同range的的document属性可以是不同的\r\n */\r\n var Range = dom.Range = function (document) {\r\n var me = this;\r\n me.startContainer =\r\n me.startOffset =\r\n me.endContainer =\r\n me.endOffset = null;\r\n me.document = document;\r\n me.collapsed = true;\r\n };\r\n\r\n /**\r\n * 删除fillData\r\n * @param doc\r\n * @param excludeNode\r\n */\r\n function removeFillData(doc, excludeNode) {\r\n try {\r\n if (fillData && domUtils.inDoc(fillData, doc)) {\r\n if (!fillData.nodeValue.replace(fillCharReg, '').length) {\r\n var tmpNode = fillData.parentNode;\r\n domUtils.remove(fillData);\r\n while (tmpNode && domUtils.isEmptyInlineElement(tmpNode) &&\r\n //safari的contains有bug\r\n (browser.safari ? !(domUtils.getPosition(tmpNode, excludeNode) & domUtils.POSITION_CONTAINS) : !tmpNode.contains(excludeNode))\r\n ) {\r\n fillData = tmpNode.parentNode;\r\n domUtils.remove(tmpNode);\r\n tmpNode = fillData;\r\n }\r\n } else {\r\n fillData.nodeValue = fillData.nodeValue.replace(fillCharReg, '');\r\n }\r\n }\r\n } catch (e) {}\r\n }\r\n\r\n /**\r\n * @param node\r\n * @param dir\r\n */\r\n function mergeSibling(node, dir) {\r\n var tmpNode;\r\n node = node[dir];\r\n while (node && domUtils.isFillChar(node)) {\r\n tmpNode = node[dir];\r\n domUtils.remove(node);\r\n node = tmpNode;\r\n }\r\n }\r\n\r\n Range.prototype = {\r\n\r\n /**\r\n * 克隆选区的内容到一个DocumentFragment里\r\n * @method cloneContents\r\n * @return { DocumentFragment | NULL } 如果选区是闭合的将返回null, 否则, 返回包含所clone内容的DocumentFragment元素\r\n * @example\r\n * ```html\r\n * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \r\n * ```\r\n */\r\n cloneContents: function () {\r\n return this.collapsed ? null : execContentsAction(this, 0);\r\n },\r\n\r\n /**\r\n * 删除当前选区范围中的所有内容\r\n * @method deleteContents\r\n * @remind 执行完该操作后, 当前Range对象变成了闭合状态\r\n * @return { UE.dom.Range } 当前操作的Range对象\r\n * @example\r\n * ```html\r\n * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \r\n * ```\r\n */\r\n deleteContents: function () {\r\n var txt;\r\n if (!this.collapsed) {\r\n execContentsAction(this, 1);\r\n }\r\n if (browser.webkit) {\r\n txt = this.startContainer;\r\n if (txt.nodeType == 3 && !txt.nodeValue.length) {\r\n this.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 将当前选区的内容提取到一个DocumentFragment里\r\n * @method extractContents\r\n * @remind 执行该操作后, 选区将变成闭合状态\r\n * @warning 执行该操作后, 原来选区所选中的内容将从dom树上剥离出来\r\n * @return { DocumentFragment } 返回包含所提取内容的DocumentFragment对象\r\n * @example\r\n * ```html\r\n * \r\n * \r\n * xx[xxx]x\r\n *\r\n * \r\n * \r\n */\r\n extractContents: function () {\r\n return this.collapsed ? null : execContentsAction(this, 2);\r\n },\r\n\r\n /**\r\n * 设置Range的开始容器节点和偏移量\r\n * @method setStart\r\n * @remind 如果给定的节点是元素节点,那么offset指的是其子元素中索引为offset的元素,\r\n * 如果是文本节点,那么offset指的是其文本内容的第offset个字符\r\n * @remind 如果提供的容器节点是一个不能包含子元素的节点, 则该选区的开始容器将被设置\r\n * 为该节点的父节点, 此时, 其距离开始容器的偏移量也变成了该节点在其父节点\r\n * 中的索引\r\n * @param { Node } node 将被设为当前选区开始边界容器的节点对象\r\n * @param { int } offset 选区的开始位置偏移量\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * \r\n * xxxxxxxxxxxxx[xxx]\r\n *\r\n * \r\n * ```\r\n * @example\r\n * ```html\r\n * \r\n * xxx[xx]x\r\n *\r\n * \r\n * ```\r\n */\r\n setStart: function (node, offset) {\r\n return setEndPoint(true, node, offset, this);\r\n },\r\n\r\n /**\r\n * 设置Range的结束容器和偏移量\r\n * @method setEnd\r\n * @param { Node } node 作为当前选区结束边界容器的节点对象\r\n * @param { int } offset 结束边界的偏移量\r\n * @see UE.dom.Range:setStart(Node,int)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEnd: function (node, offset) {\r\n return setEndPoint(false, node, offset, this);\r\n },\r\n\r\n /**\r\n * 将Range开始位置设置到node节点之后\r\n * @method setStartAfter\r\n * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引+1\r\n * @param { Node } node 选区的开始边界将紧接着该节点之后\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * \r\n * xxxxxxx[xxxx]\r\n *\r\n * \r\n * ```\r\n */\r\n setStartAfter: function (node) {\r\n return this.setStart(node.parentNode, domUtils.getNodeIndex(node) + 1);\r\n },\r\n\r\n /**\r\n * 将Range开始位置设置到node节点之前\r\n * @method setStartBefore\r\n * @remind 该操作将会把给定节点的父节点作为range的开始容器, 且偏移量是该节点在其父节点中的位置索引\r\n * @param { Node } node 新的选区开始位置在该节点之前\r\n * @see UE.dom.Range:setStartAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setStartBefore: function (node) {\r\n return this.setStart(node.parentNode, domUtils.getNodeIndex(node));\r\n },\r\n\r\n /**\r\n * 将Range结束位置设置到node节点之后\r\n * @method setEndAfter\r\n * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引+1\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * \r\n * [xxxxxxx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n setEndAfter: function (node) {\r\n return this.setEnd(node.parentNode, domUtils.getNodeIndex(node) + 1);\r\n },\r\n\r\n /**\r\n * 将Range结束位置设置到node节点之前\r\n * @method setEndBefore\r\n * @remind 该操作将会把给定节点的父节点作为range的结束容器, 且偏移量是该节点在其父节点中的位置索引\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setEndAfter(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndBefore: function (node) {\r\n return this.setEnd(node.parentNode, domUtils.getNodeIndex(node));\r\n },\r\n\r\n /**\r\n * 设置Range的开始位置到node节点内的第一个子节点之前\r\n * @method setStartAtFirst\r\n * @remind 选区的开始容器将变成给定的节点, 且偏移量为0\r\n * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartBefore(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * \r\n * xxxxx[xx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n setStartAtFirst: function (node) {\r\n return this.setStart(node, 0);\r\n },\r\n\r\n /**\r\n * 设置Range的开始位置到node节点内的最后一个节点之后\r\n * @method setStartAtLast\r\n * @remind 选区的开始容器将变成给定的节点, 且偏移量为该节点的子节点数\r\n * @remind 如果给定的节点是元素节点, 则该节点必须是允许包含子节点的元素。\r\n * @param { Node } node 目标节点\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setStartAtLast: function (node) {\r\n return this.setStart(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length);\r\n },\r\n\r\n /**\r\n * 设置Range的结束位置到node节点内的第一个节点之前\r\n * @method setEndAtFirst\r\n * @param { Node } node 目标节点\r\n * @remind 选区的结束容器将变成给定的节点, 且偏移量为0\r\n * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndAtFirst: function (node) {\r\n return this.setEnd(node, 0);\r\n },\r\n\r\n /**\r\n * 设置Range的结束位置到node节点内的最后一个节点之后\r\n * @method setEndAtLast\r\n * @param { Node } node 目标节点\r\n * @remind 选区的结束容器将变成给定的节点, 且偏移量为该节点的子节点数量\r\n * @remind node必须是一个元素节点, 且必须是允许包含子节点的元素。\r\n * @see UE.dom.Range:setStartAtFirst(Node)\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n setEndAtLast: function (node) {\r\n return this.setEnd(node, node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length);\r\n },\r\n\r\n /**\r\n * 选中给定节点\r\n * @method selectNode\r\n * @remind 此时, 选区的开始容器和结束容器都是该节点的父节点, 其startOffset是该节点在父节点中的位置索引,\r\n * 而endOffset为startOffset+1\r\n * @param { Node } node 需要选中的节点\r\n * @return { UE.dom.Range } 当前range对象,此时的range仅包含当前给定的节点对象\r\n * @example\r\n * ```html\r\n * \r\n * xxxxx[xx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n selectNode: function (node) {\r\n return this.setStartBefore(node).setEndAfter(node);\r\n },\r\n\r\n /**\r\n * 选中给定节点内部的所有节点\r\n * @method selectNodeContents\r\n * @remind 此时, 选区的开始容器和结束容器都是该节点, 其startOffset为0,\r\n * 而endOffset是该节点的子节点数。\r\n * @param { Node } node 目标节点, 当前range将包含该节点内的所有节点\r\n * @return { UE.dom.Range } 当前range对象, 此时range仅包含给定节点的所有子节点\r\n * @example\r\n * ```html\r\n * \r\n * xxxxx[xx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n selectNodeContents: function (node) {\r\n return this.setStart(node, 0).setEndAtLast(node);\r\n },\r\n\r\n /**\r\n * clone当前Range对象\r\n * @method cloneRange\r\n * @remind 返回的range是一个全新的range对象, 其内部所有属性与当前被clone的range相同。\r\n * @return { UE.dom.Range } 当前range对象的一个副本\r\n */\r\n cloneRange: function () {\r\n var me = this;\r\n return new Range(me.document).setStart(me.startContainer, me.startOffset).setEnd(me.endContainer, me.endOffset);\r\n\r\n },\r\n\r\n /**\r\n * 向当前选区的结束处闭合选区\r\n * @method collapse\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * \r\n * xxxxx[xx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 闭合当前选区,根据给定的toStart参数项决定是向当前选区开始处闭合还是向结束处闭合,\r\n * 如果toStart的值为true,则向开始位置闭合, 反之,向结束位置闭合。\r\n * @method collapse\r\n * @param { Boolean } toStart 是否向选区开始处闭合\r\n * @return { UE.dom.Range } 当前range对象,此时range对象处于闭合状态\r\n * @see UE.dom.Range:collapse()\r\n * @example\r\n * ```html\r\n * \r\n * xxxxx[xx]xxxx\r\n *\r\n * \r\n * ```\r\n */\r\n collapse: function (toStart) {\r\n var me = this;\r\n if (toStart) {\r\n me.endContainer = me.startContainer;\r\n me.endOffset = me.startOffset;\r\n } else {\r\n me.startContainer = me.endContainer;\r\n me.startOffset = me.endOffset;\r\n }\r\n me.collapsed = true;\r\n return me;\r\n },\r\n\r\n /**\r\n * 调整range的开始位置和结束位置,使其\"收缩\"到最小的位置\r\n * @method shrinkBoundary\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n * xxxx[xxxxx] => xxxx[xxxxx]\r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * \r\n * x[xx]xxx\r\n *\r\n * \r\n * ```\r\n *\r\n * @example\r\n * ```html\r\n * [xxxxxxxxxxx] => [xxxxxxxxxxx]\r\n * ```\r\n */\r\n\r\n /**\r\n * 调整range的开始位置和结束位置,使其\"收缩\"到最小的位置,\r\n * 如果ignoreEnd的值为true,则忽略对结束位置的调整\r\n * @method shrinkBoundary\r\n * @param { Boolean } ignoreEnd 是否忽略对结束位置的调整\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.domUtils.Range:shrinkBoundary()\r\n */\r\n shrinkBoundary: function (ignoreEnd) {\r\n var me = this,\r\n child,\r\n collapsed = me.collapsed;\r\n\r\n function check(node) {\r\n return node.nodeType == 1 && !domUtils.isBookmarkNode(node) && !dtd.$empty[node.tagName] && !dtd.$nonChild[node.tagName]\r\n }\r\n while (me.startContainer.nodeType == 1 //是element\r\n &&\r\n (child = me.startContainer.childNodes[me.startOffset]) //子节点也是element\r\n &&\r\n check(child)) {\r\n me.setStart(child, 0);\r\n }\r\n if (collapsed) {\r\n return me.collapse(true);\r\n }\r\n if (!ignoreEnd) {\r\n while (me.endContainer.nodeType == 1 //是element\r\n &&\r\n me.endOffset > 0 //如果是空元素就退出 endOffset=0那么endOffst-1为负值,childNodes[endOffset]报错\r\n &&\r\n (child = me.endContainer.childNodes[me.endOffset - 1]) //子节点也是element\r\n &&\r\n check(child)) {\r\n me.setEnd(child, child.childNodes.length);\r\n }\r\n }\r\n return me;\r\n },\r\n\r\n /**\r\n * 获取离当前选区内包含的所有节点最近的公共祖先节点,\r\n * @method getCommonAncestor\r\n * @remind 返回的公共祖先节点一定不是range自身的容器节点, 但有可能是一个文本节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @example\r\n * ```html\r\n * //选区示例\r\n * xxxx[xxx]xxxxxx\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到\r\n * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf\r\n * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点\r\n * @method getCommonAncestor\r\n * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @see UE.dom.Range:getCommonAncestor()\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n * xxxxxxxxx[xxx]xxxxxxxx\r\n *\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 获取当前选区所包含的所有节点的公共祖先节点, 可以根据给定的参数 includeSelf 决定获取到\r\n * 的公共祖先节点是否可以是当前选区的startContainer或endContainer节点, 如果 includeSelf\r\n * 的取值为true, 则返回的节点可以是自身的容器节点, 否则, 则不能是容器节点; 同时可以根据\r\n * ignoreTextNode 参数的取值决定是否忽略类型为文本节点的祖先节点。\r\n * @method getCommonAncestor\r\n * @param { Boolean } includeSelf 是否允许获取到的公共祖先节点是当前range对象的容器节点\r\n * @param { Boolean } ignoreTextNode 获取祖先节点的过程中是否忽略类型为文本节点的祖先节点\r\n * @return { Node } 当前range对象内所有节点的公共祖先节点\r\n * @see UE.dom.Range:getCommonAncestor()\r\n * @see UE.dom.Range:getCommonAncestor(Boolean)\r\n * @example\r\n * ```html\r\n * \r\n *\r\n * \r\n * xxxxxxxx[x]xxxxxxxxxxx\r\n *\r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n getCommonAncestor: function (includeSelf, ignoreTextNode) {\r\n var me = this,\r\n start = me.startContainer,\r\n end = me.endContainer;\r\n if (start === end) {\r\n if (includeSelf && selectOneNode(this)) {\r\n start = start.childNodes[me.startOffset];\r\n if (start.nodeType == 1)\r\n return start;\r\n }\r\n //只有在上来就相等的情况下才会出现是文本的情况\r\n return ignoreTextNode && start.nodeType == 3 ? start.parentNode : start;\r\n }\r\n return domUtils.getCommonAncestor(start, end);\r\n },\r\n\r\n /**\r\n * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上\r\n * @method trimBoundary\r\n * @remind 该操作有可能会引起文本节点被切开\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * //选区示例\r\n * xxx[xxxxx]xxx\r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 调整当前Range的开始和结束边界容器,如果是容器节点是文本节点,就调整到包含该文本节点的父节点上,\r\n * 可以根据 ignoreEnd 参数的值决定是否调整对结束边界的调整\r\n * @method trimBoundary\r\n * @param { Boolean } ignoreEnd 是否忽略对结束边界的调整\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * //选区示例\r\n * xxx[xxxxx]xxx\r\n *\r\n * \r\n * ```\r\n */\r\n trimBoundary: function (ignoreEnd) {\r\n this.txtToElmBoundary();\r\n var start = this.startContainer,\r\n offset = this.startOffset,\r\n collapsed = this.collapsed,\r\n end = this.endContainer;\r\n if (start.nodeType == 3) {\r\n if (offset == 0) {\r\n this.setStartBefore(start);\r\n } else {\r\n if (offset >= start.nodeValue.length) {\r\n this.setStartAfter(start);\r\n } else {\r\n var textNode = domUtils.split(start, offset);\r\n //跟新结束边界\r\n if (start === end) {\r\n this.setEnd(textNode, this.endOffset - offset);\r\n } else if (start.parentNode === end) {\r\n this.endOffset += 1;\r\n }\r\n this.setStartBefore(textNode);\r\n }\r\n }\r\n if (collapsed) {\r\n return this.collapse(true);\r\n }\r\n }\r\n if (!ignoreEnd) {\r\n offset = this.endOffset;\r\n end = this.endContainer;\r\n if (end.nodeType == 3) {\r\n if (offset == 0) {\r\n this.setEndBefore(end);\r\n } else {\r\n offset < end.nodeValue.length && domUtils.split(end, offset);\r\n this.setEndAfter(end);\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则什么也不做\r\n * @method txtToElmBoundary\r\n * @remind 该操作不会修改dom节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n\r\n /**\r\n * 如果选区在文本的边界上,就扩展选区到文本的父节点上, 如果当前选区是闭合的, 则根据参数项\r\n * ignoreCollapsed 的值决定是否执行该调整\r\n * @method txtToElmBoundary\r\n * @param { Boolean } ignoreCollapsed 是否忽略选区的闭合状态, 如果该参数取值为true, 则\r\n * 不论选区是否闭合, 都会执行该操作, 反之, 则不会对闭合的选区执行该操作\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n txtToElmBoundary: function (ignoreCollapsed) {\r\n function adjust(r, c) {\r\n var container = r[c + 'Container'],\r\n offset = r[c + 'Offset'];\r\n if (container.nodeType == 3) {\r\n if (!offset) {\r\n r['set' + c.replace(/(\\w)/, function (a) {\r\n return a.toUpperCase();\r\n }) + 'Before'](container);\r\n } else if (offset >= container.nodeValue.length) {\r\n r['set' + c.replace(/(\\w)/, function (a) {\r\n return a.toUpperCase();\r\n }) + 'After'](container);\r\n }\r\n }\r\n }\r\n\r\n if (ignoreCollapsed || !this.collapsed) {\r\n adjust(this, 'start');\r\n adjust(this, 'end');\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 在当前选区的开始位置前插入节点,新插入的节点会被该range包含\r\n * @method insertNode\r\n * @param { Node } node 需要插入的节点\r\n * @remind 插入的节点可以是一个DocumentFragment依次插入多个节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n insertNode: function (node) {\r\n var first = node,\r\n length = 1;\r\n if (node.nodeType == 11) {\r\n first = node.firstChild;\r\n length = node.childNodes.length;\r\n }\r\n this.trimBoundary(true);\r\n var start = this.startContainer,\r\n offset = this.startOffset;\r\n var nextNode = start.childNodes[offset];\r\n if (nextNode) {\r\n start.insertBefore(node, nextNode);\r\n } else {\r\n start.appendChild(node);\r\n }\r\n if (first.parentNode === this.endContainer) {\r\n this.endOffset = this.endOffset + length;\r\n }\r\n return this.setStartBefore(first);\r\n },\r\n\r\n /**\r\n * 闭合选区到当前选区的开始位置, 并且定位光标到闭合后的位置\r\n * @method setCursor\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:collapse()\r\n */\r\n\r\n /**\r\n * 闭合选区,可以根据参数toEnd的值控制选区是向前闭合还是向后闭合, 并且定位光标到闭合后的位置。\r\n * @method setCursor\r\n * @param { Boolean } toEnd 是否向后闭合, 如果为true, 则闭合选区时, 将向结束容器方向闭合,\r\n * 反之,则向开始容器方向闭合\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:collapse(Boolean)\r\n */\r\n setCursor: function (toEnd, noFillData) {\r\n return this.collapse(!toEnd).select(noFillData);\r\n },\r\n\r\n /**\r\n * 创建当前range的一个书签,记录下当前range的位置,方便当dom树改变时,还能找回原来的选区位置\r\n * @method createBookmark\r\n * @param { Boolean } serialize 控制返回的标记位置是对当前位置的引用还是ID,如果该值为true,则\r\n * 返回标记位置的ID, 反之则返回标记位置节点的引用\r\n * @return { Object } 返回一个书签记录键值对, 其包含的key有: start => 开始标记的ID或者引用,\r\n * end => 结束标记的ID或引用, id => 当前标记的类型, 如果为true,则表示\r\n * 返回的记录的类型为ID, 反之则为引用\r\n */\r\n createBookmark: function (serialize, same) {\r\n var endNode,\r\n startNode = this.document.createElement('span');\r\n startNode.style.cssText = 'display:none;line-height:0px;';\r\n startNode.appendChild(this.document.createTextNode('\\u200D'));\r\n startNode.id = '_baidu_bookmark_start_' + (same ? '' : guid++);\r\n\r\n if (!this.collapsed) {\r\n endNode = startNode.cloneNode(true);\r\n endNode.id = '_baidu_bookmark_end_' + (same ? '' : guid++);\r\n }\r\n this.insertNode(startNode);\r\n if (endNode) {\r\n this.collapse().insertNode(endNode).setEndBefore(endNode);\r\n }\r\n this.setStartAfter(startNode);\r\n return {\r\n start: serialize ? startNode.id : startNode,\r\n end: endNode ? serialize ? endNode.id : endNode : null,\r\n id: serialize\r\n }\r\n },\r\n\r\n /**\r\n * 调整当前range的边界到书签位置,并删除该书签对象所标记的位置内的节点\r\n * @method moveToBookmark\r\n * @param { BookMark } bookmark createBookmark所创建的标签对象\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:createBookmark(Boolean)\r\n */\r\n moveToBookmark: function (bookmark) {\r\n var start = bookmark.id ? this.document.getElementById(bookmark.start) : bookmark.start,\r\n end = bookmark.end && bookmark.id ? this.document.getElementById(bookmark.end) : bookmark.end;\r\n this.setStartBefore(start);\r\n domUtils.remove(start);\r\n if (end) {\r\n this.setEndBefore(end);\r\n domUtils.remove(end);\r\n } else {\r\n this.collapse(true);\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 调整range的边界,使其\"放大\"到最近的父节点\r\n * @method enlarge\r\n * @remind 会引起选区的变化\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n\r\n /**\r\n * 调整range的边界,使其\"放大\"到最近的父节点,根据参数 toBlock 的取值, 可以\r\n * 要求扩大之后的父节点是block节点\r\n * @method enlarge\r\n * @param { Boolean } toBlock 是否要求扩大之后的父节点必须是block节点\r\n * @return { UE.dom.Range } 当前range对象\r\n */\r\n enlarge: function (toBlock, stopFn) {\r\n var isBody = domUtils.isBody,\r\n pre, node, tmp = this.document.createTextNode('');\r\n if (toBlock) {\r\n node = this.startContainer;\r\n if (node.nodeType == 1) {\r\n if (node.childNodes[this.startOffset]) {\r\n pre = node = node.childNodes[this.startOffset]\r\n } else {\r\n node.appendChild(tmp);\r\n pre = node = tmp;\r\n }\r\n } else {\r\n pre = node;\r\n }\r\n while (1) {\r\n if (domUtils.isBlockElm(node)) {\r\n node = pre;\r\n while ((pre = node.previousSibling) && !domUtils.isBlockElm(pre)) {\r\n node = pre;\r\n }\r\n this.setStartBefore(node);\r\n break;\r\n }\r\n pre = node;\r\n node = node.parentNode;\r\n }\r\n node = this.endContainer;\r\n if (node.nodeType == 1) {\r\n if (pre = node.childNodes[this.endOffset]) {\r\n node.insertBefore(tmp, pre);\r\n } else {\r\n node.appendChild(tmp);\r\n }\r\n pre = node = tmp;\r\n } else {\r\n pre = node;\r\n }\r\n while (1) {\r\n if (domUtils.isBlockElm(node)) {\r\n node = pre;\r\n while ((pre = node.nextSibling) && !domUtils.isBlockElm(pre)) {\r\n node = pre;\r\n }\r\n this.setEndAfter(node);\r\n break;\r\n }\r\n pre = node;\r\n node = node.parentNode;\r\n }\r\n if (tmp.parentNode === this.endContainer) {\r\n this.endOffset--;\r\n }\r\n domUtils.remove(tmp);\r\n }\r\n\r\n // 扩展边界到最大\r\n if (!this.collapsed) {\r\n while (this.startOffset == 0) {\r\n if (stopFn && stopFn(this.startContainer)) {\r\n break;\r\n }\r\n if (isBody(this.startContainer)) {\r\n break;\r\n }\r\n this.setStartBefore(this.startContainer);\r\n }\r\n while (this.endOffset == (this.endContainer.nodeType == 1 ? this.endContainer.childNodes.length : this.endContainer.nodeValue.length)) {\r\n if (stopFn && stopFn(this.endContainer)) {\r\n break;\r\n }\r\n if (isBody(this.endContainer)) {\r\n break;\r\n }\r\n this.setEndAfter(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n enlargeToBlockElm: function (ignoreEnd) {\r\n while (!domUtils.isBlockElm(this.startContainer)) {\r\n this.setStartBefore(this.startContainer);\r\n }\r\n if (!ignoreEnd) {\r\n while (!domUtils.isBlockElm(this.endContainer)) {\r\n this.setEndAfter(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n /**\r\n * 调整Range的边界,使其\"缩小\"到最合适的位置\r\n * @method adjustmentBoundary\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:shrinkBoundary()\r\n */\r\n adjustmentBoundary: function () {\r\n if (!this.collapsed) {\r\n while (!domUtils.isBody(this.startContainer) &&\r\n this.startOffset == this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length &&\r\n this.startContainer[this.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n\r\n this.setStartAfter(this.startContainer);\r\n }\r\n while (!domUtils.isBody(this.endContainer) && !this.endOffset &&\r\n this.endContainer[this.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n this.setEndBefore(this.endContainer);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 给range选区中的内容添加给定的inline标签\r\n * @method applyInlineStyle\r\n * @param { String } tagName 需要添加的标签名\r\n * @example\r\n * ```html\r\n *

xxxx[xxxx]x

==> range.applyInlineStyle(\"strong\") ==>

xxxx[xxxx]x

\r\n * ```\r\n */\r\n\r\n /**\r\n * 给range选区中的内容添加给定的inline标签, 并且为标签附加上一些初始化属性。\r\n * @method applyInlineStyle\r\n * @param { String } tagName 需要添加的标签名\r\n * @param { Object } attrs 跟随新添加的标签的属性\r\n * @return { UE.dom.Range } 当前选区\r\n * @example\r\n * ```html\r\n *

xxxx[xxxx]x

\r\n *\r\n * ==>\r\n *\r\n * \r\n * range.applyInlineStyle(\"strong\",{\"style\":\"font-size:12px\"})\r\n *\r\n * ==>\r\n *\r\n *

xxxx[xxxx]x

\r\n * ```\r\n */\r\n applyInlineStyle: function (tagName, attrs, list) {\r\n if (this.collapsed) return this;\r\n this.trimBoundary().enlarge(false,\r\n function (node) {\r\n return node.nodeType == 1 && domUtils.isBlockElm(node)\r\n }).adjustmentBoundary();\r\n var bookmark = this.createBookmark(),\r\n end = bookmark.end,\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node);\r\n },\r\n current = domUtils.getNextDomNode(bookmark.start, false, filterFn),\r\n node,\r\n pre,\r\n range = this.cloneRange();\r\n while (current && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) {\r\n if (current.nodeType == 3 || dtd[tagName][current.tagName]) {\r\n range.setStartBefore(current);\r\n node = current;\r\n while (node && (node.nodeType == 3 || dtd[tagName][node.tagName]) && node !== end) {\r\n pre = node;\r\n node = domUtils.getNextDomNode(node, node.nodeType == 1, null, function (parent) {\r\n return dtd[tagName][parent.tagName];\r\n });\r\n }\r\n var frag = range.setEndAfter(pre).extractContents(),\r\n elm;\r\n if (list && list.length > 0) {\r\n var level, top;\r\n top = level = list[0].cloneNode(false);\r\n for (var i = 1, ci; ci = list[i++];) {\r\n level.appendChild(ci.cloneNode(false));\r\n level = level.firstChild;\r\n }\r\n elm = level;\r\n } else {\r\n elm = range.document.createElement(tagName);\r\n }\r\n if (attrs) {\r\n domUtils.setAttributes(elm, attrs);\r\n }\r\n elm.appendChild(frag);\r\n range.insertNode(list ? top : elm);\r\n //处理下滑线在a上的情况\r\n var aNode;\r\n if (tagName == 'span' && attrs.style && /text\\-decoration/.test(attrs.style) && (aNode = domUtils.findParentByTagName(elm, 'a', true))) {\r\n domUtils.setAttributes(aNode, attrs);\r\n domUtils.remove(elm, true);\r\n elm = aNode;\r\n } else {\r\n domUtils.mergeSibling(elm);\r\n domUtils.clearEmptySibling(elm);\r\n }\r\n //去除子节点相同的\r\n domUtils.mergeChild(elm, attrs);\r\n current = domUtils.getNextDomNode(elm, false, filterFn);\r\n domUtils.mergeToParent(elm);\r\n if (node === end) {\r\n break;\r\n }\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return this.moveToBookmark(bookmark);\r\n },\r\n\r\n /**\r\n * 移除当前选区内指定的inline标签,但保留其中的内容\r\n * @method removeInlineStyle\r\n * @param { String } tagName 需要移除的标签名\r\n * @return { UE.dom.Range } 当前的range对象\r\n * @example\r\n * ```html\r\n * xx[xxxxyyyzz]z => range.removeInlineStyle([\"em\"]) => xx[xxxxyyyzz]z\r\n * ```\r\n */\r\n\r\n /**\r\n * 移除当前选区内指定的一组inline标签,但保留其中的内容\r\n * @method removeInlineStyle\r\n * @param { Array } tagNameArr 需要移除的标签名的数组\r\n * @return { UE.dom.Range } 当前的range对象\r\n * @see UE.dom.Range:removeInlineStyle(String)\r\n */\r\n removeInlineStyle: function (tagNames) {\r\n if (this.collapsed) return this;\r\n tagNames = utils.isArray(tagNames) ? tagNames : [tagNames];\r\n this.shrinkBoundary().adjustmentBoundary();\r\n var start = this.startContainer,\r\n end = this.endContainer;\r\n while (1) {\r\n if (start.nodeType == 1) {\r\n if (utils.indexOf(tagNames, start.tagName.toLowerCase()) > -1) {\r\n break;\r\n }\r\n if (start.tagName.toLowerCase() == 'body') {\r\n start = null;\r\n break;\r\n }\r\n }\r\n start = start.parentNode;\r\n }\r\n while (1) {\r\n if (end.nodeType == 1) {\r\n if (utils.indexOf(tagNames, end.tagName.toLowerCase()) > -1) {\r\n break;\r\n }\r\n if (end.tagName.toLowerCase() == 'body') {\r\n end = null;\r\n break;\r\n }\r\n }\r\n end = end.parentNode;\r\n }\r\n var bookmark = this.createBookmark(),\r\n frag,\r\n tmpRange;\r\n if (start) {\r\n tmpRange = this.cloneRange().setEndBefore(bookmark.start).setStartBefore(start);\r\n frag = tmpRange.extractContents();\r\n tmpRange.insertNode(frag);\r\n domUtils.clearEmptySibling(start, true);\r\n start.parentNode.insertBefore(bookmark.start, start);\r\n }\r\n if (end) {\r\n tmpRange = this.cloneRange().setStartAfter(bookmark.end).setEndAfter(end);\r\n frag = tmpRange.extractContents();\r\n tmpRange.insertNode(frag);\r\n domUtils.clearEmptySibling(end, false, true);\r\n end.parentNode.insertBefore(bookmark.end, end.nextSibling);\r\n }\r\n var current = domUtils.getNextDomNode(bookmark.start, false, function (node) {\r\n return node.nodeType == 1;\r\n }),\r\n next;\r\n while (current && current !== bookmark.end) {\r\n next = domUtils.getNextDomNode(current, true, function (node) {\r\n return node.nodeType == 1;\r\n });\r\n if (utils.indexOf(tagNames, current.tagName.toLowerCase()) > -1) {\r\n domUtils.remove(current, true);\r\n }\r\n current = next;\r\n }\r\n return this.moveToBookmark(bookmark);\r\n },\r\n\r\n /**\r\n * 获取当前选中的自闭合的节点\r\n * @method getClosedNode\r\n * @return { Node | NULL } 如果当前选中的是自闭合节点, 则返回该节点, 否则返回NULL\r\n */\r\n getClosedNode: function () {\r\n var node;\r\n if (!this.collapsed) {\r\n var range = this.cloneRange().adjustmentBoundary().shrinkBoundary();\r\n if (selectOneNode(range)) {\r\n var child = range.startContainer.childNodes[range.startOffset];\r\n if (child && child.nodeType == 1 && (dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName])) {\r\n node = child;\r\n }\r\n }\r\n }\r\n return node;\r\n },\r\n\r\n /**\r\n * 在页面上高亮range所表示的选区\r\n * @method select\r\n * @return { UE.dom.Range } 返回当前Range对象\r\n */\r\n //这里不区分ie9以上,trace:3824\r\n select: browser.ie ? function (noFillData, textRange) {\r\n var nativeRange;\r\n if (!this.collapsed)\r\n this.shrinkBoundary();\r\n var node = this.getClosedNode();\r\n if (node && !textRange) {\r\n try {\r\n nativeRange = this.document.body.createControlRange();\r\n nativeRange.addElement(node);\r\n nativeRange.select();\r\n } catch (e) {}\r\n return this;\r\n }\r\n var bookmark = this.createBookmark(),\r\n start = bookmark.start,\r\n end;\r\n nativeRange = this.document.body.createTextRange();\r\n nativeRange.moveToElementText(start);\r\n nativeRange.moveStart('character', 1);\r\n if (!this.collapsed) {\r\n var nativeRangeEnd = this.document.body.createTextRange();\r\n end = bookmark.end;\r\n nativeRangeEnd.moveToElementText(end);\r\n nativeRange.setEndPoint('EndToEnd', nativeRangeEnd);\r\n } else {\r\n if (!noFillData && this.startContainer.nodeType != 3) {\r\n //使用|x固定住光标\r\n var tmpText = this.document.createTextNode(fillChar),\r\n tmp = this.document.createElement('span');\r\n tmp.appendChild(this.document.createTextNode(fillChar));\r\n start.parentNode.insertBefore(tmp, start);\r\n start.parentNode.insertBefore(tmpText, start);\r\n //当点b,i,u时,不能清除i上边的b\r\n removeFillData(this.document, tmpText);\r\n fillData = tmpText;\r\n mergeSibling(tmp, 'previousSibling');\r\n mergeSibling(start, 'nextSibling');\r\n nativeRange.moveStart('character', -1);\r\n nativeRange.collapse(true);\r\n }\r\n }\r\n this.moveToBookmark(bookmark);\r\n tmp && domUtils.remove(tmp);\r\n //IE在隐藏状态下不支持range操作,catch一下\r\n try {\r\n nativeRange.select();\r\n } catch (e) {}\r\n return this;\r\n } : function (notInsertFillData) {\r\n function checkOffset(rng) {\r\n\r\n function check(node, offset, dir) {\r\n if (node.nodeType == 3 && node.nodeValue.length < offset) {\r\n rng[dir + 'Offset'] = node.nodeValue.length\r\n }\r\n }\r\n check(rng.startContainer, rng.startOffset, 'start');\r\n check(rng.endContainer, rng.endOffset, 'end');\r\n }\r\n var win = domUtils.getWindow(this.document),\r\n sel = win.getSelection(),\r\n txtNode;\r\n //FF下关闭自动长高时滚动条在关闭dialog时会跳\r\n //ff下如果不body.focus将不能定位闭合光标到编辑器内\r\n browser.gecko ? this.document.body.focus() : win.focus();\r\n if (sel) {\r\n sel.removeAllRanges();\r\n // trace:870 chrome/safari后边是br对于闭合得range不能定位 所以去掉了判断\r\n // this.startContainer.nodeType != 3 &&! ((child = this.startContainer.childNodes[this.startOffset]) && child.nodeType == 1 && child.tagName == 'BR'\r\n if (this.collapsed && !notInsertFillData) {\r\n // //opear如果没有节点接着,原生的不能够定位,不能在body的第一级插入空白节点\r\n // if (notInsertFillData && browser.opera && !domUtils.isBody(this.startContainer) && this.startContainer.nodeType == 1) {\r\n // var tmp = this.document.createTextNode('');\r\n // this.insertNode(tmp).setStart(tmp, 0).collapse(true);\r\n // }\r\n //\r\n //处理光标落在文本节点的情况\r\n //处理以下的情况\r\n //|xxxx\r\n //xxxx|xxxx\r\n //xxxx|\r\n var start = this.startContainer,\r\n child = start;\r\n if (start.nodeType == 1) {\r\n child = start.childNodes[this.startOffset];\r\n\r\n }\r\n if (!(start.nodeType == 3 && this.startOffset) &&\r\n (child ?\r\n (!child.previousSibling || child.previousSibling.nodeType != 3) :\r\n (!start.lastChild || start.lastChild.nodeType != 3)\r\n )\r\n ) {\r\n txtNode = this.document.createTextNode(fillChar);\r\n //跟着前边走\r\n this.insertNode(txtNode);\r\n removeFillData(this.document, txtNode);\r\n mergeSibling(txtNode, 'previousSibling');\r\n mergeSibling(txtNode, 'nextSibling');\r\n fillData = txtNode;\r\n this.setStart(txtNode, browser.webkit ? 1 : 0).collapse(true);\r\n }\r\n }\r\n var nativeRange = this.document.createRange();\r\n if (this.collapsed && browser.opera && this.startContainer.nodeType == 1) {\r\n var child = this.startContainer.childNodes[this.startOffset];\r\n if (!child) {\r\n //往前靠拢\r\n child = this.startContainer.lastChild;\r\n if (child && domUtils.isBr(child)) {\r\n this.setStartBefore(child).collapse(true);\r\n }\r\n } else {\r\n //向后靠拢\r\n while (child && domUtils.isBlockElm(child)) {\r\n if (child.nodeType == 1 && child.childNodes[0]) {\r\n child = child.childNodes[0]\r\n } else {\r\n break;\r\n }\r\n }\r\n child && this.setStartBefore(child).collapse(true)\r\n }\r\n\r\n }\r\n //是createAddress最后一位算的不准,现在这里进行微调\r\n checkOffset(this);\r\n nativeRange.setStart(this.startContainer, this.startOffset);\r\n nativeRange.setEnd(this.endContainer, this.endOffset);\r\n // sel.addRange(nativeRange);\r\n if (this.document.body.contains(nativeRange.commonAncestorContainer)) {\r\n sel.addRange(nativeRange);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * 滚动到当前range开始的位置\r\n * @method scrollToView\r\n * @param { Window } win 当前range对象所属的window对象\r\n * @return { UE.dom.Range } 当前Range对象\r\n */\r\n\r\n /**\r\n * 滚动到距离当前range开始位置 offset 的位置处\r\n * @method scrollToView\r\n * @param { Window } win 当前range对象所属的window对象\r\n * @param { Number } offset 距离range开始位置处的偏移量, 如果为正数, 则向下偏移, 反之, 则向上偏移\r\n * @return { UE.dom.Range } 当前Range对象\r\n */\r\n scrollToView: function (win, offset) {\r\n win = win ? window : domUtils.getWindow(this.document);\r\n var me = this,\r\n span = me.document.createElement('span');\r\n //trace:717\r\n span.innerHTML = ' ';\r\n me.cloneRange().insertNode(span);\r\n domUtils.scrollToView(span, win, offset);\r\n domUtils.remove(span);\r\n return me;\r\n },\r\n\r\n /**\r\n * 判断当前选区内容是否占位符\r\n * @private\r\n * @method inFillChar\r\n * @return { Boolean } 如果是占位符返回true,否则返回false\r\n */\r\n inFillChar: function () {\r\n var start = this.startContainer;\r\n if (this.collapsed && start.nodeType == 3 &&\r\n start.nodeValue.replace(new RegExp('^' + domUtils.fillChar), '').length + 1 == start.nodeValue.length\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * 保存\r\n * @method createAddress\r\n * @private\r\n * @return { Boolean } 返回开始和结束的位置\r\n * @example\r\n * ```html\r\n * \r\n *

\r\n * aaaa\r\n * \r\n * \r\n * bbbb\r\n * \r\n * \r\n *

\r\n *\r\n * \r\n * \r\n * ```\r\n */\r\n createAddress: function (ignoreEnd, ignoreTxt) {\r\n var addr = {},\r\n me = this;\r\n\r\n function getAddress(isStart) {\r\n var node = isStart ? me.startContainer : me.endContainer;\r\n var parents = domUtils.findParents(node, true, function (node) {\r\n return !domUtils.isBody(node)\r\n }),\r\n addrs = [];\r\n for (var i = 0, ci; ci = parents[i++];) {\r\n addrs.push(domUtils.getNodeIndex(ci, ignoreTxt));\r\n }\r\n var firstIndex = 0;\r\n\r\n if (ignoreTxt) {\r\n if (node.nodeType == 3) {\r\n var tmpNode = node.previousSibling;\r\n while (tmpNode && tmpNode.nodeType == 3) {\r\n firstIndex += tmpNode.nodeValue.replace(fillCharReg, '').length;\r\n tmpNode = tmpNode.previousSibling;\r\n }\r\n firstIndex += (isStart ? me.startOffset : me.endOffset) // - (fillCharReg.test(node.nodeValue) ? 1 : 0 )\r\n } else {\r\n node = node.childNodes[isStart ? me.startOffset : me.endOffset];\r\n if (node) {\r\n firstIndex = domUtils.getNodeIndex(node, ignoreTxt);\r\n } else {\r\n node = isStart ? me.startContainer : me.endContainer;\r\n var first = node.firstChild;\r\n while (first) {\r\n if (domUtils.isFillChar(first)) {\r\n first = first.nextSibling;\r\n continue;\r\n }\r\n firstIndex++;\r\n if (first.nodeType == 3) {\r\n while (first && first.nodeType == 3) {\r\n first = first.nextSibling;\r\n }\r\n } else {\r\n first = first.nextSibling;\r\n }\r\n }\r\n }\r\n }\r\n\r\n } else {\r\n firstIndex = isStart ? domUtils.isFillChar(node) ? 0 : me.startOffset : me.endOffset\r\n }\r\n if (firstIndex < 0) {\r\n firstIndex = 0;\r\n }\r\n addrs.push(firstIndex);\r\n return addrs;\r\n }\r\n addr.startAddress = getAddress(true);\r\n if (!ignoreEnd) {\r\n addr.endAddress = me.collapsed ? [].concat(addr.startAddress) : getAddress();\r\n }\r\n return addr;\r\n },\r\n\r\n /**\r\n * 保存\r\n * @method createAddress\r\n * @private\r\n * @return { Boolean } 返回开始和结束的位置\r\n * @example\r\n * ```html\r\n * \r\n *

\r\n * aaaa\r\n * \r\n * \r\n * bbbb\r\n * \r\n * \r\n *

\r\n *\r\n * \r\n * \r\n * ```\r\n */\r\n moveToAddress: function (addr, ignoreEnd) {\r\n var me = this;\r\n\r\n function getNode(address, isStart) {\r\n var tmpNode = me.document.body,\r\n parentNode, offset;\r\n for (var i = 0, ci, l = address.length; i < l; i++) {\r\n ci = address[i];\r\n parentNode = tmpNode;\r\n tmpNode = tmpNode.childNodes[ci];\r\n if (!tmpNode) {\r\n offset = ci;\r\n break;\r\n }\r\n }\r\n if (isStart) {\r\n if (tmpNode) {\r\n me.setStartBefore(tmpNode)\r\n } else {\r\n me.setStart(parentNode, offset)\r\n }\r\n } else {\r\n if (tmpNode) {\r\n me.setEndBefore(tmpNode)\r\n } else {\r\n me.setEnd(parentNode, offset)\r\n }\r\n }\r\n }\r\n getNode(addr.startAddress, true);\r\n !ignoreEnd && addr.endAddress && getNode(addr.endAddress);\r\n return me;\r\n },\r\n\r\n /**\r\n * 判断给定的Range对象是否和当前Range对象表示的是同一个选区\r\n * @method equals\r\n * @param { UE.dom.Range } 需要判断的Range对象\r\n * @return { Boolean } 如果给定的Range对象与当前Range对象表示的是同一个选区, 则返回true, 否则返回false\r\n */\r\n equals: function (rng) {\r\n for (var p in this) {\r\n if (this.hasOwnProperty(p)) {\r\n if (this[p] !== rng[p])\r\n return false\r\n }\r\n }\r\n return true;\r\n\r\n },\r\n\r\n /**\r\n * 遍历range内的节点。每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点\r\n * 作为其参数。\r\n * @method traversal\r\n * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数\r\n * @return { UE.dom.Range } 当前range对象\r\n * @example\r\n * ```html\r\n *\r\n * \r\n *\r\n * \r\n * \r\n * \r\n * \r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n\r\n /**\r\n * 遍历range内的节点。\r\n * 每当遍历一个节点时, 都会执行参数项 doFn 指定的函数, 该函数的接受当前遍历的节点\r\n * 作为其参数。\r\n * 可以通过参数项 filterFn 来指定一个过滤器, 只有符合该过滤器过滤规则的节点才会触\r\n * 发doFn函数的执行\r\n * @method traversal\r\n * @param { Function } doFn 对每个遍历的节点要执行的方法, 该方法接受当前遍历的节点作为其参数\r\n * @param { Function } filterFn 过滤器, 该函数接受当前遍历的节点作为参数, 如果该节点满足过滤\r\n * 规则, 请返回true, 该节点会触发doFn, 否则, 请返回false, 则该节点不\r\n * 会触发doFn。\r\n * @return { UE.dom.Range } 当前range对象\r\n * @see UE.dom.Range:traversal(Function)\r\n * @example\r\n * ```html\r\n *\r\n * \r\n *\r\n * \r\n * \r\n * \r\n * \r\n * \r\n *\r\n * \r\n * ```\r\n */\r\n traversal: function (doFn, filterFn) {\r\n if (this.collapsed)\r\n return this;\r\n var bookmark = this.createBookmark(),\r\n end = bookmark.end,\r\n current = domUtils.getNextDomNode(bookmark.start, false, filterFn);\r\n while (current && current !== end && (domUtils.getPosition(current, end) & domUtils.POSITION_PRECEDING)) {\r\n var tmpNode = domUtils.getNextDomNode(current, false, filterFn);\r\n doFn(current);\r\n current = tmpNode;\r\n }\r\n return this.moveToBookmark(bookmark);\r\n }\r\n };\r\n })();\r\n\r\n // core/Selection.js\r\n /**\r\n * 选集\r\n * @file\r\n * @module UE.dom\r\n * @class Selection\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 选区集合\r\n * @unfile\r\n * @module UE.dom\r\n * @class Selection\r\n */\r\n (function () {\r\n\r\n function getBoundaryInformation(range, start) {\r\n var getIndex = domUtils.getNodeIndex;\r\n range = range.duplicate();\r\n range.collapse(start);\r\n var parent = range.parentElement();\r\n //如果节点里没有子节点,直接退出\r\n if (!parent.hasChildNodes()) {\r\n return {\r\n container: parent,\r\n offset: 0\r\n };\r\n }\r\n var siblings = parent.children,\r\n child,\r\n testRange = range.duplicate(),\r\n startIndex = 0,\r\n endIndex = siblings.length - 1,\r\n index = -1,\r\n distance;\r\n while (startIndex <= endIndex) {\r\n index = Math.floor((startIndex + endIndex) / 2);\r\n child = siblings[index];\r\n testRange.moveToElementText(child);\r\n var position = testRange.compareEndPoints('StartToStart', range);\r\n if (position > 0) {\r\n endIndex = index - 1;\r\n } else if (position < 0) {\r\n startIndex = index + 1;\r\n } else {\r\n //trace:1043\r\n return {\r\n container: parent,\r\n offset: getIndex(child)\r\n };\r\n }\r\n }\r\n if (index == -1) {\r\n testRange.moveToElementText(parent);\r\n testRange.setEndPoint('StartToStart', range);\r\n distance = testRange.text.replace(/(\\r\\n|\\r)/g, '\\n').length;\r\n siblings = parent.childNodes;\r\n if (!distance) {\r\n child = siblings[siblings.length - 1];\r\n return {\r\n container: child,\r\n offset: child.nodeValue.length\r\n };\r\n }\r\n\r\n var i = siblings.length;\r\n while (distance > 0) {\r\n distance -= siblings[--i].nodeValue.length;\r\n }\r\n return {\r\n container: siblings[i],\r\n offset: -distance\r\n };\r\n }\r\n testRange.collapse(position > 0);\r\n testRange.setEndPoint(position > 0 ? 'StartToStart' : 'EndToStart', range);\r\n distance = testRange.text.replace(/(\\r\\n|\\r)/g, '\\n').length;\r\n if (!distance) {\r\n return dtd.$empty[child.tagName] || dtd.$nonChild[child.tagName] ? {\r\n container: parent,\r\n offset: getIndex(child) + (position > 0 ? 0 : 1)\r\n } : {\r\n container: child,\r\n offset: position > 0 ? 0 : child.childNodes.length\r\n }\r\n }\r\n while (distance > 0) {\r\n try {\r\n var pre = child;\r\n child = child[position > 0 ? 'previousSibling' : 'nextSibling'];\r\n distance -= child.nodeValue.length;\r\n } catch (e) {\r\n return {\r\n container: parent,\r\n offset: getIndex(pre)\r\n };\r\n }\r\n }\r\n return {\r\n container: child,\r\n offset: position > 0 ? -distance : child.nodeValue.length + distance\r\n }\r\n }\r\n\r\n /**\r\n * 将ieRange转换为Range对象\r\n * @param {Range} ieRange ieRange对象\r\n * @param {Range} range Range对象\r\n * @return {Range} range 返回转换后的Range对象\r\n */\r\n function transformIERangeToRange(ieRange, range) {\r\n if (ieRange.item) {\r\n range.selectNode(ieRange.item(0));\r\n } else {\r\n var bi = getBoundaryInformation(ieRange, true);\r\n range.setStart(bi.container, bi.offset);\r\n if (ieRange.compareEndPoints('StartToEnd', ieRange) != 0) {\r\n bi = getBoundaryInformation(ieRange, false);\r\n range.setEnd(bi.container, bi.offset);\r\n }\r\n }\r\n return range;\r\n }\r\n\r\n /**\r\n * 获得ieRange\r\n * @param {Selection} sel Selection对象\r\n * @return {ieRange} 得到ieRange\r\n */\r\n function _getIERange(sel) {\r\n var ieRange;\r\n //ie下有可能报错\r\n try {\r\n ieRange = sel.getNative().createRange();\r\n } catch (e) {\r\n return null;\r\n }\r\n var el = ieRange.item ? ieRange.item(0) : ieRange.parentElement();\r\n if ((el.ownerDocument || el) === sel.document) {\r\n return ieRange;\r\n }\r\n return null;\r\n }\r\n\r\n var Selection = dom.Selection = function (doc) {\r\n var me = this,\r\n iframe;\r\n me.document = doc;\r\n if (browser.ie9below) {\r\n iframe = domUtils.getWindow(doc).frameElement;\r\n domUtils.on(iframe, 'beforedeactivate', function () {\r\n me._bakIERange = me.getIERange();\r\n });\r\n domUtils.on(iframe, 'activate', function () {\r\n try {\r\n if (!_getIERange(me) && me._bakIERange) {\r\n me._bakIERange.select();\r\n }\r\n } catch (ex) {}\r\n me._bakIERange = null;\r\n });\r\n }\r\n iframe = doc = null;\r\n };\r\n\r\n Selection.prototype = {\r\n\r\n rangeInBody: function (rng, txtRange) {\r\n var node = browser.ie9below || txtRange ? rng.item ? rng.item() : rng.parentElement() : rng.startContainer;\r\n\r\n return node === this.document.body || domUtils.inDoc(node, this.document);\r\n },\r\n\r\n /**\r\n * 获取原生seleciton对象\r\n * @method getNative\r\n * @return { Object } 获得selection对象\r\n * @example\r\n * ```javascript\r\n * editor.selection.getNative();\r\n * ```\r\n */\r\n getNative: function () {\r\n var doc = this.document;\r\n try {\r\n return !doc ? null : browser.ie9below ? doc.selection : domUtils.getWindow(doc).getSelection();\r\n } catch (e) {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * 获得ieRange\r\n * @method getIERange\r\n * @return { Object } 返回ie原生的Range\r\n * @example\r\n * ```javascript\r\n * editor.selection.getIERange();\r\n * ```\r\n */\r\n getIERange: function () {\r\n var ieRange = _getIERange(this);\r\n if (!ieRange) {\r\n if (this._bakIERange) {\r\n return this._bakIERange;\r\n }\r\n }\r\n return ieRange;\r\n },\r\n\r\n /**\r\n * 缓存当前选区的range和选区的开始节点\r\n * @method cache\r\n */\r\n cache: function () {\r\n this.clear();\r\n this._cachedRange = this.getRange();\r\n this._cachedStartElement = this.getStart();\r\n this._cachedStartElementPath = this.getStartElementPath();\r\n },\r\n\r\n /**\r\n * 获取选区开始位置的父节点到body\r\n * @method getStartElementPath\r\n * @return { Array } 返回父节点集合\r\n * @example\r\n * ```javascript\r\n * editor.selection.getStartElementPath();\r\n * ```\r\n */\r\n getStartElementPath: function () {\r\n if (this._cachedStartElementPath) {\r\n return this._cachedStartElementPath;\r\n }\r\n var start = this.getStart();\r\n if (start) {\r\n return domUtils.findParents(start, true, null, true)\r\n }\r\n return [];\r\n },\r\n\r\n /**\r\n * 清空缓存\r\n * @method clear\r\n */\r\n clear: function () {\r\n this._cachedStartElementPath = this._cachedRange = this._cachedStartElement = null;\r\n },\r\n\r\n /**\r\n * 编辑器是否得到了选区\r\n * @method isFocus\r\n */\r\n isFocus: function () {\r\n try {\r\n if (browser.ie9below) {\r\n\r\n var nativeRange = _getIERange(this);\r\n return !!(nativeRange && this.rangeInBody(nativeRange));\r\n } else {\r\n return !!this.getNative().rangeCount;\r\n }\r\n } catch (e) {\r\n return false;\r\n }\r\n\r\n },\r\n\r\n /**\r\n * 获取选区对应的Range\r\n * @method getRange\r\n * @return { Object } 得到Range对象\r\n * @example\r\n * ```javascript\r\n * editor.selection.getRange();\r\n * ```\r\n */\r\n getRange: function () {\r\n var me = this;\r\n\r\n function optimze(range) {\r\n var child = me.document.body.firstChild,\r\n collapsed = range.collapsed;\r\n while (child && child.firstChild) {\r\n range.setStart(child, 0);\r\n child = child.firstChild;\r\n }\r\n if (!range.startContainer) {\r\n range.setStart(me.document.body, 0)\r\n }\r\n if (collapsed) {\r\n range.collapse(true);\r\n }\r\n }\r\n\r\n if (me._cachedRange != null) {\r\n return this._cachedRange;\r\n }\r\n var range = new baidu.editor.dom.Range(me.document);\r\n\r\n if (browser.ie9below) {\r\n var nativeRange = me.getIERange();\r\n if (nativeRange) {\r\n //备份的_bakIERange可能已经实效了,dom树发生了变化比如从源码模式切回来,所以try一下,实效就放到body开始位置\r\n try {\r\n transformIERangeToRange(nativeRange, range);\r\n } catch (e) {\r\n optimze(range);\r\n }\r\n\r\n } else {\r\n optimze(range);\r\n }\r\n } else {\r\n var sel = me.getNative();\r\n if (sel && sel.rangeCount) {\r\n var firstRange = sel.getRangeAt(0);\r\n var lastRange = sel.getRangeAt(sel.rangeCount - 1);\r\n range.setStart(firstRange.startContainer, firstRange.startOffset).setEnd(lastRange.endContainer, lastRange.endOffset);\r\n if (range.collapsed && domUtils.isBody(range.startContainer) && !range.startOffset) {\r\n optimze(range);\r\n }\r\n } else {\r\n //trace:1734 有可能已经不在dom树上了,标识的节点\r\n if (this._bakRange && domUtils.inDoc(this._bakRange.startContainer, this.document)) {\r\n return this._bakRange;\r\n }\r\n optimze(range);\r\n }\r\n }\r\n return this._bakRange = range;\r\n },\r\n\r\n /**\r\n * 获取开始元素,用于状态反射\r\n * @method getStart\r\n * @return { Element } 获得开始元素\r\n * @example\r\n * ```javascript\r\n * editor.selection.getStart();\r\n * ```\r\n */\r\n getStart: function () {\r\n if (this._cachedStartElement) {\r\n return this._cachedStartElement;\r\n }\r\n var range = browser.ie9below ? this.getIERange() : this.getRange(),\r\n tmpRange,\r\n start, tmp, parent;\r\n if (browser.ie9below) {\r\n if (!range) {\r\n //todo 给第一个值可能会有问题\r\n return this.document.body.firstChild;\r\n }\r\n //control元素\r\n if (range.item) {\r\n return range.item(0);\r\n }\r\n tmpRange = range.duplicate();\r\n //修正ie下x[xx] 闭合后 x|xx\r\n tmpRange.text.length > 0 && tmpRange.moveStart('character', 1);\r\n tmpRange.collapse(1);\r\n start = tmpRange.parentElement();\r\n parent = tmp = range.parentElement();\r\n while (tmp = tmp.parentNode) {\r\n if (tmp == start) {\r\n start = parent;\r\n break;\r\n }\r\n }\r\n } else {\r\n range.shrinkBoundary();\r\n start = range.startContainer;\r\n if (start.nodeType == 1 && start.hasChildNodes()) {\r\n start = start.childNodes[Math.min(start.childNodes.length - 1, range.startOffset)];\r\n }\r\n if (start.nodeType == 3) {\r\n return start.parentNode;\r\n }\r\n }\r\n return start;\r\n },\r\n\r\n /**\r\n * 得到选区中的文本\r\n * @method getText\r\n * @return { String } 选区中包含的文本\r\n * @example\r\n * ```javascript\r\n * editor.selection.getText();\r\n * ```\r\n */\r\n getText: function () {\r\n var nativeSel, nativeRange;\r\n if (this.isFocus() && (nativeSel = this.getNative())) {\r\n nativeRange = browser.ie9below ? nativeSel.createRange() : nativeSel.getRangeAt(0);\r\n return browser.ie9below ? nativeRange.text : nativeRange.toString();\r\n }\r\n return '';\r\n },\r\n\r\n /**\r\n * 清除选区\r\n * @method clearRange\r\n * @example\r\n * ```javascript\r\n * editor.selection.clearRange();\r\n * ```\r\n */\r\n clearRange: function () {\r\n this.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n }\r\n };\r\n })();\r\n\r\n // core/Editor.js\r\n /**\r\n * 编辑器主类,包含编辑器提供的大部分公用接口\r\n * @file\r\n * @module UE\r\n * @class Editor\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n /**\r\n * UEditor的核心类,为用户提供与编辑器交互的接口。\r\n * @unfile\r\n * @module UE\r\n * @class Editor\r\n */\r\n\r\n (function () {\r\n var uid = 0,\r\n _selectionChangeTimer;\r\n\r\n /**\r\n * 获取编辑器的html内容,赋值到编辑器所在表单的textarea文本域里面\r\n * @private\r\n * @method setValue\r\n * @param { UE.Editor } editor 编辑器事例\r\n */\r\n function setValue(form, editor) {\r\n var textarea;\r\n if (editor.textarea) {\r\n if (utils.isString(editor.textarea)) {\r\n for (var i = 0, ti, tis = domUtils.getElementsByTagName(form, 'textarea'); ti = tis[i++];) {\r\n if (ti.id == 'ueditor_textarea_' + editor.options.textarea) {\r\n textarea = ti;\r\n break;\r\n }\r\n }\r\n } else {\r\n textarea = editor.textarea;\r\n }\r\n }\r\n if (!textarea) {\r\n form.appendChild(textarea = domUtils.createElement(document, 'textarea', {\r\n 'name': editor.options.textarea,\r\n 'id': 'ueditor_textarea_' + editor.options.textarea,\r\n 'style': \"display:none\"\r\n }));\r\n //不要产生多个textarea\r\n editor.textarea = textarea;\r\n }!textarea.getAttribute('name') && textarea.setAttribute('name', editor.options.textarea);\r\n textarea.value = editor.hasContents() ?\r\n (editor.options.allHtmlEnabled ? editor.getAllHtml() : editor.getContent(null, null, true)) :\r\n ''\r\n }\r\n\r\n function loadPlugins(me) {\r\n //初始化插件\r\n for (var pi in UE.plugins) {\r\n UE.plugins[pi].call(me);\r\n }\r\n\r\n }\r\n\r\n function checkCurLang(I18N) {\r\n for (var lang in I18N) {\r\n return lang\r\n }\r\n }\r\n\r\n function langReadied(me) {\r\n me.langIsReady = true;\r\n\r\n me.fireEvent(\"langReady\");\r\n }\r\n\r\n /**\r\n * 编辑器准备就绪后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event ready\r\n * @remind render方法执行完成之后,会触发该事件\r\n * @remind\r\n * @example\r\n * ```javascript\r\n * editor.addListener( 'ready', function( editor ) {\r\n * editor.execCommand( 'focus' ); //编辑器家在完成后,让编辑器拿到焦点\r\n * } );\r\n * ```\r\n */\r\n /**\r\n * 执行destroy方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event destroy\r\n * @see UE.Editor:destroy()\r\n */\r\n /**\r\n * 执行reset方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event reset\r\n * @see UE.Editor:reset()\r\n */\r\n /**\r\n * 执行focus方法,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event focus\r\n * @see UE.Editor:focus(Boolean)\r\n */\r\n /**\r\n * 语言加载完成会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event langReady\r\n */\r\n /**\r\n * 运行命令之后会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event beforeExecCommand\r\n */\r\n /**\r\n * 运行命令之后会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event afterExecCommand\r\n */\r\n /**\r\n * 运行命令之前会触发该命令\r\n * @module UE\r\n * @class Editor\r\n * @event firstBeforeExecCommand\r\n */\r\n /**\r\n * 在getContent方法执行之前会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeGetContent\r\n * @see UE.Editor:getContent()\r\n */\r\n /**\r\n * 在getContent方法执行之后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterGetContent\r\n * @see UE.Editor:getContent()\r\n */\r\n /**\r\n * 在getAllHtml方法执行时会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event getAllHtml\r\n * @see UE.Editor:getAllHtml()\r\n */\r\n /**\r\n * 在setContent方法执行之前会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeSetContent\r\n * @see UE.Editor:setContent(String)\r\n */\r\n /**\r\n * 在setContent方法执行之后会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterSetContent\r\n * @see UE.Editor:setContent(String)\r\n */\r\n /**\r\n * 每当编辑器内部选区发生改变时,将触发该事件\r\n * @event selectionchange\r\n * @warning 该事件的触发非常频繁,不建议在该事件的处理过程中做重量级的处理\r\n * @example\r\n * ```javascript\r\n * editor.addListener( 'selectionchange', function( editor ) {\r\n * console.log('选区发生改变');\r\n * }\r\n */\r\n /**\r\n * 在所有selectionchange的监听函数执行之前,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event beforeSelectionChange\r\n * @see UE.Editor:selectionchange\r\n */\r\n /**\r\n * 在所有selectionchange的监听函数执行完之后,会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event afterSelectionChange\r\n * @see UE.Editor:selectionchange\r\n */\r\n /**\r\n * 编辑器内容发生改变时会触发该事件\r\n * @module UE\r\n * @class Editor\r\n * @event contentChange\r\n */\r\n\r\n\r\n /**\r\n * 以默认参数构建一个编辑器实例\r\n * @constructor\r\n * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面\r\n * @example\r\n * ```javascript\r\n * var editor = new UE.Editor();\r\n * editor.execCommand('blod');\r\n * ```\r\n * @see UE.Config\r\n */\r\n\r\n /**\r\n * 以给定的参数集合创建一个编辑器实例,对于未指定的参数,将应用默认参数。\r\n * @constructor\r\n * @remind 通过 改构造方法实例化的编辑器,不带ui层.需要render到一个容器,编辑器实例才能正常渲染到页面\r\n * @param { Object } setting 创建编辑器的参数\r\n * @example\r\n * ```javascript\r\n * var editor = new UE.Editor();\r\n * editor.execCommand('blod');\r\n * ```\r\n * @see UE.Config\r\n */\r\n var Editor = UE.Editor = function (options) {\r\n var me = this;\r\n me.uid = uid++;\r\n EventBase.call(me);\r\n me.commands = {};\r\n me.options = utils.extend(utils.clone(options || {}), UEDITOR_CONFIG, true);\r\n me.shortcutkeys = {};\r\n me.inputRules = [];\r\n me.outputRules = [];\r\n //设置默认的常用属性\r\n me.setOpt(Editor.defaultOptions(me));\r\n\r\n /* 尝试异步加载后台配置 */\r\n me.loadServerConfig();\r\n\r\n if (!utils.isEmptyObject(UE.I18N)) {\r\n //修改默认的语言类型\r\n me.options.lang = checkCurLang(UE.I18N);\r\n UE.plugin.load(me);\r\n langReadied(me);\r\n\r\n } else {\r\n utils.loadFile(document, {\r\n src: me.options.langPath + me.options.lang + \"/\" + me.options.lang + \".js\",\r\n tag: \"script\",\r\n type: \"text/javascript\",\r\n defer: \"defer\"\r\n }, function () {\r\n UE.plugin.load(me);\r\n langReadied(me);\r\n });\r\n }\r\n\r\n UE.instants['ueditorInstant' + me.uid] = me;\r\n };\r\n Editor.prototype = {\r\n registerCommand: function (name, obj) {\r\n this.commands[name] = obj;\r\n },\r\n /**\r\n * 编辑器对外提供的监听ready事件的接口, 通过调用该方法,达到的效果与监听ready事件是一致的\r\n * @method ready\r\n * @param { Function } fn 编辑器ready之后所执行的回调, 如果在注册事件之前编辑器已经ready,将会\r\n * 立即触发该回调。\r\n * @remind 需要等待编辑器加载完成后才能执行的代码,可以使用该方法传入\r\n * @example\r\n * ```javascript\r\n * editor.ready( function( editor ) {\r\n * editor.setContent('初始化完毕');\r\n * } );\r\n * ```\r\n * @see UE.Editor.event:ready\r\n */\r\n ready: function (fn) {\r\n var me = this;\r\n if (fn) {\r\n me.isReady ? fn.apply(me) : me.addListener('ready', fn);\r\n }\r\n },\r\n\r\n /**\r\n * 该方法是提供给插件里面使用,设置配置项默认值\r\n * @method setOpt\r\n * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置\r\n * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。\r\n * @param { String } key 编辑器的可接受的选项名称\r\n * @param { * } val 该选项可接受的值\r\n * @example\r\n * ```javascript\r\n * editor.setOpt( 'initContent', '欢迎使用编辑器' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 该方法是提供给插件里面使用,以{key:value}集合的方式设置插件内用到的配置项默认值\r\n * @method setOpt\r\n * @warning 三处设置配置项的优先级: 实例化时传入参数 > setOpt()设置 > config文件里设置\r\n * @warning 该方法仅供编辑器插件内部和编辑器初始化时调用,其他地方不能调用。\r\n * @param { Object } options 将要设置的选项的键值对对象\r\n * @example\r\n * ```javascript\r\n * editor.setOpt( {\r\n * 'initContent': '欢迎使用编辑器'\r\n * } );\r\n * ```\r\n */\r\n setOpt: function (key, val) {\r\n var obj = {};\r\n if (utils.isString(key)) {\r\n obj[key] = val\r\n } else {\r\n obj = key;\r\n }\r\n utils.extend(this.options, obj, true);\r\n },\r\n getOpt: function (key) {\r\n return this.options[key]\r\n },\r\n /**\r\n * 销毁编辑器实例,使用textarea代替\r\n * @method destroy\r\n * @example\r\n * ```javascript\r\n * editor.destroy();\r\n * ```\r\n */\r\n destroy: function () {\r\n\r\n var me = this;\r\n me.fireEvent('destroy');\r\n var container = me.container.parentNode;\r\n var textarea = me.textarea;\r\n if (!textarea) {\r\n textarea = document.createElement('textarea');\r\n container.parentNode.insertBefore(textarea, container);\r\n } else {\r\n textarea.style.display = ''\r\n }\r\n\r\n textarea.style.width = me.iframe.offsetWidth + 'px';\r\n textarea.style.height = me.iframe.offsetHeight + 'px';\r\n textarea.value = me.getContent();\r\n textarea.id = me.key;\r\n container.innerHTML = '';\r\n domUtils.remove(container);\r\n var key = me.key;\r\n //trace:2004\r\n for (var p in me) {\r\n if (me.hasOwnProperty(p)) {\r\n delete this[p];\r\n }\r\n }\r\n UE.delEditor(key);\r\n },\r\n\r\n /**\r\n * 渲染编辑器的DOM到指定容器\r\n * @method render\r\n * @param { String } containerId 指定一个容器ID\r\n * @remind 执行该方法,会触发ready事件\r\n * @warning 必须且只能调用一次\r\n */\r\n\r\n /**\r\n * 渲染编辑器的DOM到指定容器\r\n * @method render\r\n * @param { Element } containerDom 直接指定容器对象\r\n * @remind 执行该方法,会触发ready事件\r\n * @warning 必须且只能调用一次\r\n */\r\n render: function (container) {\r\n var me = this,\r\n options = me.options,\r\n getStyleValue = function (attr) {\r\n return parseInt(domUtils.getComputedStyle(container, attr));\r\n };\r\n if (utils.isString(container)) {\r\n container = document.getElementById(container);\r\n }\r\n if (container) {\r\n if (options.initialFrameWidth) {\r\n options.minFrameWidth = options.initialFrameWidth\r\n } else {\r\n options.minFrameWidth = options.initialFrameWidth = container.offsetWidth;\r\n }\r\n if (options.initialFrameHeight) {\r\n options.minFrameHeight = options.initialFrameHeight\r\n } else {\r\n options.initialFrameHeight = options.minFrameHeight = container.offsetHeight;\r\n }\r\n\r\n container.style.width = /%$/.test(options.initialFrameWidth) ? '100%' : options.initialFrameWidth -\r\n getStyleValue(\"padding-left\") - getStyleValue(\"padding-right\") + 'px';\r\n container.style.height = /%$/.test(options.initialFrameHeight) ? '100%' : options.initialFrameHeight -\r\n getStyleValue(\"padding-top\") - getStyleValue(\"padding-bottom\") + 'px';\r\n\r\n container.style.zIndex = options.zIndex;\r\n\r\n var html = (ie && browser.version < 9 ? '' : '') +\r\n '' +\r\n '' +\r\n (options.iframeCssUrl ? '' : '') +\r\n (options.initialStyle ? '' : '') +\r\n '' +\r\n '';\r\n container.appendChild(domUtils.createElement(document, 'iframe', {\r\n id: 'ueditor_' + me.uid,\r\n width: \"100%\",\r\n height: \"100%\",\r\n frameborder: \"0\",\r\n //先注释掉了,加的原因忘记了,但开启会直接导致全屏模式下内容多时不会出现滚动条\r\n // scrolling :'no',\r\n src: 'javascript:void(function(){document.open();' + (options.customDomain && document.domain != location.hostname ? 'document.domain=\"' + document.domain + '\";' : '') +\r\n 'document.write(\"' + html + '\");document.close();}())'\r\n }));\r\n container.style.overflow = 'hidden';\r\n //解决如果是给定的百分比,会导致高度算不对的问题\r\n setTimeout(function () {\r\n if (/%$/.test(options.initialFrameWidth)) {\r\n options.minFrameWidth = options.initialFrameWidth = container.offsetWidth;\r\n //如果这里给定宽度,会导致ie在拖动窗口大小时,编辑区域不随着变化\r\n // container.style.width = options.initialFrameWidth + 'px';\r\n }\r\n if (/%$/.test(options.initialFrameHeight)) {\r\n options.minFrameHeight = options.initialFrameHeight = container.offsetHeight;\r\n container.style.height = options.initialFrameHeight + 'px';\r\n }\r\n })\r\n }\r\n },\r\n\r\n /**\r\n * 编辑器初始化\r\n * @method _setup\r\n * @private\r\n * @param { Element } doc 编辑器Iframe中的文档对象\r\n */\r\n _setup: function (doc) {\r\n\r\n var me = this,\r\n options = me.options;\r\n if (ie) {\r\n doc.body.disabled = true;\r\n doc.body.contentEditable = true;\r\n doc.body.disabled = false;\r\n } else {\r\n doc.body.contentEditable = true;\r\n }\r\n doc.body.spellcheck = false;\r\n me.document = doc;\r\n me.window = doc.defaultView || doc.parentWindow;\r\n me.iframe = me.window.frameElement;\r\n me.body = doc.body;\r\n me.selection = new dom.Selection(doc);\r\n //gecko初始化就能得到range,无法判断isFocus了\r\n var geckoSel;\r\n if (browser.gecko && (geckoSel = this.selection.getNative())) {\r\n geckoSel.removeAllRanges();\r\n }\r\n this._initEvents();\r\n //为form提交提供一个隐藏的textarea\r\n for (var form = this.iframe.parentNode; !domUtils.isBody(form); form = form.parentNode) {\r\n if (form.tagName == 'FORM') {\r\n me.form = form;\r\n if (me.options.autoSyncData) {\r\n domUtils.on(me.window, 'blur', function () {\r\n setValue(form, me);\r\n });\r\n } else {\r\n domUtils.on(form, 'submit', function () {\r\n setValue(this, me);\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n if (options.initialContent) {\r\n if (options.autoClearinitialContent) {\r\n var oldExecCommand = me.execCommand;\r\n me.execCommand = function () {\r\n me.fireEvent('firstBeforeExecCommand');\r\n return oldExecCommand.apply(me, arguments);\r\n };\r\n this._setDefaultContent(options.initialContent);\r\n } else\r\n this.setContent(options.initialContent, false, true);\r\n }\r\n\r\n //编辑器不能为空内容\r\n\r\n if (domUtils.isEmptyNode(me.body)) {\r\n me.body.innerHTML = '

' + (browser.ie ? '' : '
') + '

';\r\n }\r\n //如果要求focus, 就把光标定位到内容开始\r\n if (options.focus) {\r\n setTimeout(function () {\r\n me.focus(me.options.focusInEnd);\r\n //如果自动清除开着,就不需要做selectionchange;\r\n !me.options.autoClearinitialContent && me._selectionChange();\r\n }, 0);\r\n }\r\n if (!me.container) {\r\n me.container = this.iframe.parentNode;\r\n }\r\n if (options.fullscreen && me.ui) {\r\n me.ui.setFullScreen(true);\r\n }\r\n\r\n try {\r\n me.document.execCommand('2D-position', false, false);\r\n } catch (e) {}\r\n try {\r\n me.document.execCommand('enableInlineTableEditing', false, false);\r\n } catch (e) {}\r\n try {\r\n me.document.execCommand('enableObjectResizing', false, false);\r\n } catch (e) {}\r\n\r\n //挂接快捷键\r\n me._bindshortcutKeys();\r\n me.isReady = 1;\r\n me.fireEvent('ready');\r\n options.onready && options.onready.call(me);\r\n if (!browser.ie9below) {\r\n domUtils.on(me.window, ['blur', 'focus'], function (e) {\r\n //chrome下会出现alt+tab切换时,导致选区位置不对\r\n if (e.type == 'blur') {\r\n me._bakRange = me.selection.getRange();\r\n try {\r\n me._bakNativeRange = me.selection.getNative().getRangeAt(0);\r\n me.selection.getNative().removeAllRanges();\r\n } catch (e) {\r\n me._bakNativeRange = null;\r\n }\r\n\r\n } else {\r\n try {\r\n me._bakRange && me._bakRange.select();\r\n } catch (e) {}\r\n }\r\n });\r\n }\r\n //trace:1518 ff3.6body不够寛,会导致点击空白处无法获得焦点\r\n if (browser.gecko && browser.version <= 10902) {\r\n //修复ff3.6初始化进来,不能点击获得焦点\r\n me.body.contentEditable = false;\r\n setTimeout(function () {\r\n me.body.contentEditable = true;\r\n }, 100);\r\n setInterval(function () {\r\n me.body.style.height = me.iframe.offsetHeight - 20 + 'px'\r\n }, 100)\r\n }\r\n\r\n !options.isShow && me.setHide();\r\n options.readonly && me.setDisabled();\r\n },\r\n\r\n /**\r\n * 同步数据到编辑器所在的form\r\n * 从编辑器的容器节点向上查找form元素,若找到,就同步编辑内容到找到的form里,为提交数据做准备,主要用于是手动提交的情况\r\n * 后台取得数据的键值,使用你容器上的name属性,如果没有就使用参数里的textarea项\r\n * @method sync\r\n * @example\r\n * ```javascript\r\n * editor.sync();\r\n * form.sumbit(); //form变量已经指向了form元素\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据传入的formId,在页面上查找要同步数据的表单,若找到,就同步编辑内容到找到的form里,为提交数据做准备\r\n * 后台取得数据的键值,该键值默认使用给定的编辑器容器的name属性,如果没有name属性则使用参数项里给定的“textarea”项\r\n * @method sync\r\n * @param { String } formID 指定一个要同步数据的form的id,编辑器的数据会同步到你指定form下\r\n */\r\n sync: function (formId) {\r\n var me = this,\r\n form = formId ? document.getElementById(formId) :\r\n domUtils.findParent(me.iframe.parentNode, function (node) {\r\n return node.tagName == 'FORM'\r\n }, true);\r\n form && setValue(form, me);\r\n },\r\n\r\n /**\r\n * 设置编辑器高度\r\n * @method setHeight\r\n * @remind 当配置项autoHeightEnabled为真时,该方法无效\r\n * @param { Number } number 设置的高度值,纯数值,不带单位\r\n * @example\r\n * ```javascript\r\n * editor.setHeight(number);\r\n * ```\r\n */\r\n setHeight: function (height, notSetHeight) {\r\n if (height !== parseInt(this.iframe.parentNode.style.height)) {\r\n this.iframe.parentNode.style.height = height + 'px';\r\n }!notSetHeight && (this.options.minFrameHeight = this.options.initialFrameHeight = height);\r\n this.body.style.height = height + 'px';\r\n !notSetHeight && this.trigger('setHeight')\r\n },\r\n\r\n /**\r\n * 为编辑器的编辑命令提供快捷键\r\n * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口\r\n * @method addshortcutkey\r\n * @param { Object } keyset 命令名和快捷键键值对对象,多个按钮的快捷键用“+”分隔\r\n * @example\r\n * ```javascript\r\n * editor.addshortcutkey({\r\n * \"Bold\" : \"ctrl+66\",//^B\r\n * \"Italic\" : \"ctrl+73\", //^I\r\n * });\r\n * ```\r\n */\r\n /**\r\n * 这个接口是为插件扩展提供的接口,主要是为新添加的插件,如果需要添加快捷键,所提供的接口\r\n * @method addshortcutkey\r\n * @param { String } cmd 触发快捷键时,响应的命令\r\n * @param { String } keys 快捷键的字符串,多个按钮用“+”分隔\r\n * @example\r\n * ```javascript\r\n * editor.addshortcutkey(\"Underline\", \"ctrl+85\"); //^U\r\n * ```\r\n */\r\n addshortcutkey: function (cmd, keys) {\r\n var obj = {};\r\n if (keys) {\r\n obj[cmd] = keys\r\n } else {\r\n obj = cmd;\r\n }\r\n utils.extend(this.shortcutkeys, obj)\r\n },\r\n\r\n /**\r\n * 对编辑器设置keydown事件监听,绑定快捷键和命令,当快捷键组合触发成功,会响应对应的命令\r\n * @method _bindshortcutKeys\r\n * @private\r\n */\r\n _bindshortcutKeys: function () {\r\n var me = this,\r\n shortcutkeys = this.shortcutkeys;\r\n me.addListener('keydown', function (type, e) {\r\n var keyCode = e.keyCode || e.which;\r\n for (var i in shortcutkeys) {\r\n var tmp = shortcutkeys[i].split(',');\r\n for (var t = 0, ti; ti = tmp[t++];) {\r\n ti = ti.split(':');\r\n var key = ti[0],\r\n param = ti[1];\r\n if (/^(ctrl)(\\+shift)?\\+(\\d+)$/.test(key.toLowerCase()) || /^(\\d+)$/.test(key)) {\r\n if (((RegExp.$1 == 'ctrl' ? (e.ctrlKey || e.metaKey) : 0) &&\r\n (RegExp.$2 != \"\" ? e[RegExp.$2.slice(1) + \"Key\"] : 1) &&\r\n keyCode == RegExp.$3\r\n ) ||\r\n keyCode == RegExp.$1\r\n ) {\r\n if (me.queryCommandState(i, param) != -1)\r\n me.execCommand(i, param);\r\n domUtils.preventDefault(e);\r\n }\r\n }\r\n }\r\n\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * 获取编辑器的内容\r\n * @method getContent\r\n * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @return { String } 编辑器的内容字符串, 如果编辑器的内容为空,或者是空的标签内容(如:”<p><br/></p>“), 则返回空字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:

123456

\r\n * var content = editor.getContent(); //返回值:

123456

\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取编辑器的内容。 可以通过参数定义编辑器内置的判空规则\r\n * @method getContent\r\n * @param { Function } fn 自定的判空规则, 要求该方法返回一个boolean类型的值,\r\n * 代表当前编辑器的内容是否空,\r\n * 如果返回true, 则该方法将直接返回空字符串;如果返回false,则编辑器将返回\r\n * 经过内置过滤规则处理后的内容。\r\n * @remind 该方法在处理包含有初始化内容的时候能起到很好的作用。\r\n * @warning 该方法获取到的是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @return { String } 编辑器的内容字符串\r\n * @example\r\n * ```javascript\r\n * // editor 是一个编辑器的实例\r\n * var content = editor.getContent( function ( editor ) {\r\n * return editor.body.innerHTML === '欢迎使用UEditor'; //返回空字符串\r\n * } );\r\n * ```\r\n */\r\n getContent: function (cmd, fn, notSetCursor, ignoreBlank, formatter) {\r\n var me = this;\r\n if (cmd && utils.isFunction(cmd)) {\r\n fn = cmd;\r\n cmd = '';\r\n }\r\n if (fn ? !fn() : !this.hasContents()) {\r\n return '';\r\n }\r\n me.fireEvent('beforegetcontent');\r\n var root = UE.htmlparser(me.body.innerHTML, ignoreBlank);\r\n me.filterOutputRule(root);\r\n me.fireEvent('aftergetcontent', cmd, root);\r\n return root.toHtml(formatter);\r\n },\r\n\r\n /**\r\n * 取得完整的html代码,可以直接显示成完整的html文档\r\n * @method getAllHtml\r\n * @return { String } 编辑器的内容html文档字符串\r\n * @eaxmple\r\n * ```javascript\r\n * editor.getAllHtml(); //返回格式大致是: ......\r\n * ```\r\n */\r\n getAllHtml: function () {\r\n var me = this,\r\n headHtml = [],\r\n html = '';\r\n me.fireEvent('getAllHtml', headHtml);\r\n if (browser.ie && browser.version > 8) {\r\n var headHtmlForIE9 = '';\r\n utils.each(me.document.styleSheets, function (si) {\r\n headHtmlForIE9 += (si.href ? '' : '');\r\n });\r\n utils.each(me.document.getElementsByTagName('script'), function (si) {\r\n headHtmlForIE9 += si.outerHTML;\r\n });\r\n\r\n }\r\n return '' + (me.options.charset ? '' : '') +\r\n (headHtmlForIE9 || me.document.getElementsByTagName('head')[0].innerHTML) + headHtml.join('\\n') + '' +\r\n '' + me.getContent(null, null, true) + '';\r\n },\r\n\r\n /**\r\n * 得到编辑器的纯文本内容,但会保留段落格式\r\n * @method getPlainTxt\r\n * @return { String } 编辑器带段落格式的纯文本内容字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:

1

2

\r\n * console.log(editor.getPlainTxt()); //输出:\"1\\n2\\n\r\n * ```\r\n */\r\n getPlainTxt: function () {\r\n var reg = new RegExp(domUtils.fillChar, 'g'),\r\n html = this.body.innerHTML.replace(/[\\n\\r]/g, ''); //ie要先去了\\n在处理\r\n html = html.replace(/<(p|div)[^>]*>(| )<\\/\\1>/gi, '\\n')\r\n .replace(//gi, '\\n')\r\n .replace(/<[^>/]+>/g, '')\r\n .replace(/(\\n)?<\\/([^>]+)>/g, function (a, b, c) {\r\n return dtd.$block[c] ? '\\n' : b ? b : '';\r\n });\r\n //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0\r\n return html.replace(reg, '').replace(/\\u00a0/g, ' ').replace(/ /g, ' ');\r\n },\r\n\r\n /**\r\n * 获取编辑器中的纯文本内容,没有段落格式\r\n * @method getContentTxt\r\n * @return { String } 编辑器不带段落格式的纯文本内容字符串\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容:

1

2

\r\n * console.log(editor.getPlainTxt()); //输出:\"12\r\n * ```\r\n */\r\n getContentTxt: function () {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n //取出来的空格会有c2a0会变成乱码,处理这种情况\\u00a0\r\n return this.body[browser.ie ? 'innerText' : 'textContent'].replace(reg, '').replace(/\\u00a0/g, ' ');\r\n },\r\n\r\n /**\r\n * 设置编辑器的内容,可修改编辑器当前的html内容\r\n * @method setContent\r\n * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @warning 该方法会触发selectionchange事件\r\n * @param { String } html 要插入的html内容\r\n * @example\r\n * ```javascript\r\n * editor.getContent('

test

');\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置编辑器的内容,可修改编辑器当前的html内容\r\n * @method setContent\r\n * @warning 通过该方法插入的内容,是经过编辑器内置的过滤规则进行过滤后得到的内容\r\n * @warning 该方法会触发selectionchange事件\r\n * @param { String } html 要插入的html内容\r\n * @param { Boolean } isAppendTo 若传入true,不清空原来的内容,在最后插入内容,否则,清空内容再插入\r\n * @example\r\n * ```javascript\r\n * //假设设置前的编辑器内容是

old text

\r\n * editor.setContent('

new text

', true); //插入的结果是

old text

new text

\r\n * ```\r\n */\r\n setContent: function (html, isAppendTo, notFireSelectionchange) {\r\n var me = this;\r\n\r\n me.fireEvent('beforesetcontent', html);\r\n var root = UE.htmlparser(html);\r\n me.filterInputRule(root);\r\n html = root.toHtml();\r\n\r\n me.body.innerHTML = (isAppendTo ? me.body.innerHTML : '') + html;\r\n\r\n\r\n function isCdataDiv(node) {\r\n return node.tagName == 'DIV' && node.getAttribute('cdata_tag');\r\n }\r\n //给文本或者inline节点套p标签\r\n if (me.options.enterTag == 'p') {\r\n\r\n var child = this.body.firstChild,\r\n tmpNode;\r\n if (!child || child.nodeType == 1 &&\r\n (dtd.$cdata[child.tagName] || isCdataDiv(child) ||\r\n domUtils.isCustomeNode(child)\r\n ) &&\r\n child === this.body.lastChild) {\r\n this.body.innerHTML = '

' + (browser.ie ? ' ' : '
') + '

' + this.body.innerHTML;\r\n\r\n } else {\r\n var p = me.document.createElement('p');\r\n while (child) {\r\n while (child && (child.nodeType == 3 || child.nodeType == 1 && dtd.p[child.tagName] && !dtd.$cdata[child.tagName])) {\r\n tmpNode = child.nextSibling;\r\n p.appendChild(child);\r\n child = tmpNode;\r\n }\r\n if (p.firstChild) {\r\n if (!child) {\r\n me.body.appendChild(p);\r\n break;\r\n } else {\r\n child.parentNode.insertBefore(p, child);\r\n p = me.document.createElement('p');\r\n }\r\n }\r\n child = child.nextSibling;\r\n }\r\n }\r\n }\r\n me.fireEvent('aftersetcontent');\r\n me.fireEvent('contentchange');\r\n\r\n !notFireSelectionchange && me._selectionChange();\r\n //清除保存的选区\r\n me._bakRange = me._bakIERange = me._bakNativeRange = null;\r\n //trace:1742 setContent后gecko能得到焦点问题\r\n var geckoSel;\r\n if (browser.gecko && (geckoSel = this.selection.getNative())) {\r\n geckoSel.removeAllRanges();\r\n }\r\n if (me.options.autoSyncData) {\r\n me.form && setValue(me.form, me);\r\n }\r\n },\r\n\r\n /**\r\n * 让编辑器获得焦点,默认focus到编辑器头部\r\n * @method focus\r\n * @example\r\n * ```javascript\r\n * editor.focus()\r\n * ```\r\n */\r\n\r\n /**\r\n * 让编辑器获得焦点,toEnd确定focus位置\r\n * @method focus\r\n * @param { Boolean } toEnd 默认focus到编辑器头部,toEnd为true时focus到内容尾部\r\n * @example\r\n * ```javascript\r\n * editor.focus(true)\r\n * ```\r\n */\r\n focus: function (toEnd) {\r\n try {\r\n var me = this,\r\n rng = me.selection.getRange();\r\n if (toEnd) {\r\n var node = me.body.lastChild;\r\n if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) {\r\n if (domUtils.isEmptyBlock(node)) {\r\n rng.setStartAtFirst(node)\r\n } else {\r\n rng.setStartAtLast(node)\r\n }\r\n rng.collapse(true);\r\n }\r\n rng.setCursor(true);\r\n } else {\r\n if (!rng.collapsed && domUtils.isBody(rng.startContainer) && rng.startOffset == 0) {\r\n\r\n var node = me.body.firstChild;\r\n if (node && node.nodeType == 1 && !dtd.$empty[node.tagName]) {\r\n rng.setStartAtFirst(node).collapse(true);\r\n }\r\n }\r\n\r\n rng.select(true);\r\n\r\n }\r\n this.fireEvent('focus selectionchange');\r\n } catch (e) {}\r\n\r\n },\r\n isFocus: function () {\r\n return this.selection.isFocus();\r\n },\r\n blur: function () {\r\n var sel = this.selection.getNative();\r\n if (sel.empty && browser.ie) {\r\n var nativeRng = document.body.createTextRange();\r\n nativeRng.moveToElementText(document.body);\r\n nativeRng.collapse(true);\r\n nativeRng.select();\r\n sel.empty()\r\n } else {\r\n sel.removeAllRanges()\r\n }\r\n\r\n //this.fireEvent('blur selectionchange');\r\n },\r\n /**\r\n * 初始化UE事件及部分事件代理\r\n * @method _initEvents\r\n * @private\r\n */\r\n _initEvents: function () {\r\n var me = this,\r\n doc = me.document,\r\n win = me.window;\r\n me._proxyDomEvent = utils.bind(me._proxyDomEvent, me);\r\n domUtils.on(doc, ['click', 'contextmenu', 'mousedown', 'keydown', 'keyup', 'keypress', 'mouseup', 'mouseover', 'mouseout', 'selectstart'], me._proxyDomEvent);\r\n domUtils.on(win, ['focus', 'blur'], me._proxyDomEvent);\r\n domUtils.on(me.body, 'drop', function (e) {\r\n //阻止ff下默认的弹出新页面打开图片\r\n if (browser.gecko && e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n me.fireEvent('contentchange')\r\n });\r\n domUtils.on(doc, ['mouseup', 'keydown'], function (evt) {\r\n //特殊键不触发selectionchange\r\n if (evt.type == 'keydown' && (evt.ctrlKey || evt.metaKey || evt.shiftKey || evt.altKey)) {\r\n return;\r\n }\r\n if (evt.button == 2) return;\r\n me._selectionChange(250, evt);\r\n });\r\n },\r\n /**\r\n * 触发事件代理\r\n * @method _proxyDomEvent\r\n * @private\r\n * @return { * } fireEvent的返回值\r\n * @see UE.EventBase:fireEvent(String)\r\n */\r\n _proxyDomEvent: function (evt) {\r\n if (this.fireEvent('before' + evt.type.replace(/^on/, '').toLowerCase()) === false) {\r\n return false;\r\n }\r\n if (this.fireEvent(evt.type.replace(/^on/, ''), evt) === false) {\r\n return false;\r\n }\r\n return this.fireEvent('after' + evt.type.replace(/^on/, '').toLowerCase())\r\n },\r\n /**\r\n * 变化选区\r\n * @method _selectionChange\r\n * @private\r\n */\r\n _selectionChange: function (delay, evt) {\r\n var me = this;\r\n //有光标才做selectionchange 为了解决未focus时点击source不能触发更改工具栏状态的问题(source命令notNeedUndo=1)\r\n // if ( !me.selection.isFocus() ){\r\n // return;\r\n // }\r\n\r\n\r\n var hackForMouseUp = false;\r\n var mouseX, mouseY;\r\n if (browser.ie && browser.version < 9 && evt && evt.type == 'mouseup') {\r\n var range = this.selection.getRange();\r\n if (!range.collapsed) {\r\n hackForMouseUp = true;\r\n mouseX = evt.clientX;\r\n mouseY = evt.clientY;\r\n }\r\n }\r\n clearTimeout(_selectionChangeTimer);\r\n _selectionChangeTimer = setTimeout(function () {\r\n if (!me.selection || !me.selection.getNative()) {\r\n return;\r\n }\r\n //修复一个IE下的bug: 鼠标点击一段已选择的文本中间时,可能在mouseup后的一段时间内取到的range是在selection的type为None下的错误值.\r\n //IE下如果用户是拖拽一段已选择文本,则不会触发mouseup事件,所以这里的特殊处理不会对其有影响\r\n var ieRange;\r\n if (hackForMouseUp && me.selection.getNative().type == 'None') {\r\n ieRange = me.document.body.createTextRange();\r\n try {\r\n ieRange.moveToPoint(mouseX, mouseY);\r\n } catch (ex) {\r\n ieRange = null;\r\n }\r\n }\r\n var bakGetIERange;\r\n if (ieRange) {\r\n bakGetIERange = me.selection.getIERange;\r\n me.selection.getIERange = function () {\r\n return ieRange;\r\n };\r\n }\r\n me.selection.cache();\r\n if (bakGetIERange) {\r\n me.selection.getIERange = bakGetIERange;\r\n }\r\n if (me.selection._cachedRange && me.selection._cachedStartElement) {\r\n me.fireEvent('beforeselectionchange');\r\n // 第二个参数causeByUi为true代表由用户交互造成的selectionchange.\r\n me.fireEvent('selectionchange', !!evt);\r\n me.fireEvent('afterselectionchange');\r\n me.selection.clear();\r\n }\r\n }, delay || 50);\r\n },\r\n\r\n /**\r\n * 执行编辑命令\r\n * @method _callCmdFn\r\n * @private\r\n * @param { String } fnName 函数名称\r\n * @param { * } args 传给命令函数的参数\r\n * @return { * } 返回命令函数运行的返回值\r\n */\r\n _callCmdFn: function (fnName, args) {\r\n var cmdName = args[0].toLowerCase(),\r\n cmd, cmdFn;\r\n cmd = this.commands[cmdName] || UE.commands[cmdName];\r\n cmdFn = cmd && cmd[fnName];\r\n //没有querycommandstate或者没有command的都默认返回0\r\n if ((!cmd || !cmdFn) && fnName == 'queryCommandState') {\r\n return 0;\r\n } else if (cmdFn) {\r\n return cmdFn.apply(this, args);\r\n }\r\n },\r\n\r\n /**\r\n * 执行编辑命令cmdName,完成富文本编辑效果\r\n * @method execCommand\r\n * @param { String } cmdName 需要执行的命令\r\n * @remind 具体命令的使用请参考命令列表\r\n * @return { * } 返回命令函数运行的返回值\r\n * @example\r\n * ```javascript\r\n * editor.execCommand(cmdName);\r\n * ```\r\n */\r\n execCommand: function (cmdName) {\r\n cmdName = cmdName.toLowerCase();\r\n var me = this,\r\n result,\r\n cmd = me.commands[cmdName] || UE.commands[cmdName];\r\n if (!cmd || !cmd.execCommand) {\r\n return null;\r\n }\r\n if (!cmd.notNeedUndo && !me.__hasEnterExecCommand) {\r\n me.__hasEnterExecCommand = true;\r\n if (me.queryCommandState.apply(me, arguments) != -1) {\r\n me.fireEvent('saveScene');\r\n me.fireEvent.apply(me, ['beforeexeccommand', cmdName].concat(arguments));\r\n result = this._callCmdFn('execCommand', arguments);\r\n //保存场景时,做了内容对比,再看是否进行contentchange触发,这里多触发了一次,去掉\r\n // (!cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange');\r\n me.fireEvent.apply(me, ['afterexeccommand', cmdName].concat(arguments));\r\n me.fireEvent('saveScene');\r\n }\r\n me.__hasEnterExecCommand = false;\r\n } else {\r\n result = this._callCmdFn('execCommand', arguments);\r\n (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me.fireEvent('contentchange')\r\n }\r\n (!me.__hasEnterExecCommand && !cmd.ignoreContentChange && !me._ignoreContentChange) && me._selectionChange();\r\n return result;\r\n },\r\n\r\n /**\r\n * 根据传入的command命令,查选编辑器当前的选区,返回命令的状态\r\n * @method queryCommandState\r\n * @param { String } cmdName 需要查询的命令名称\r\n * @remind 具体命令的使用请参考命令列表\r\n * @return { Number } number 返回放前命令的状态,返回值三种情况:(-1|0|1)\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState(cmdName) => (-1|0|1)\r\n * ```\r\n * @see COMMAND.LIST\r\n */\r\n queryCommandState: function (cmdName) {\r\n return this._callCmdFn('queryCommandState', arguments);\r\n },\r\n\r\n /**\r\n * 根据传入的command命令,查选编辑器当前的选区,根据命令返回相关的值\r\n * @method queryCommandValue\r\n * @param { String } cmdName 需要查询的命令名称\r\n * @remind 具体命令的使用请参考命令列表\r\n * @remind 只有部分插件有此方法\r\n * @return { * } 返回每个命令特定的当前状态值\r\n * @grammar editor.queryCommandValue(cmdName) => {*}\r\n * @see COMMAND.LIST\r\n */\r\n queryCommandValue: function (cmdName) {\r\n return this._callCmdFn('queryCommandValue', arguments);\r\n },\r\n\r\n /**\r\n * 检查编辑区域中是否有内容\r\n * @method hasContents\r\n * @remind 默认有文本内容,或者有以下节点都不认为是空\r\n * table,ul,ol,dl,iframe,area,base,col,hr,img,embed,input,link,meta,param\r\n * @return { Boolean } 检查有内容返回true,否则返回false\r\n * @example\r\n * ```javascript\r\n * editor.hasContents()\r\n * ```\r\n */\r\n\r\n /**\r\n * 检查编辑区域中是否有内容,若包含参数tags中的节点类型,直接返回true\r\n * @method hasContents\r\n * @param { Array } tags 传入数组判断时用到的节点类型\r\n * @return { Boolean } 若文档中包含tags数组里对应的tag,返回true,否则返回false\r\n * @example\r\n * ```javascript\r\n * editor.hasContents(['span']);\r\n * ```\r\n */\r\n hasContents: function (tags) {\r\n if (tags) {\r\n for (var i = 0, ci; ci = tags[i++];) {\r\n if (this.document.getElementsByTagName(ci).length > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (!domUtils.isEmptyBlock(this.body)) {\r\n return true\r\n }\r\n //随时添加,定义的特殊标签如果存在,不能认为是空\r\n tags = ['div'];\r\n for (i = 0; ci = tags[i++];) {\r\n var nodes = domUtils.getElementsByTagName(this.document, ci);\r\n for (var n = 0, cn; cn = nodes[n++];) {\r\n if (domUtils.isCustomeNode(cn)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * 重置编辑器,可用来做多个tab使用同一个编辑器实例\r\n * @method reset\r\n * @remind 此方法会清空编辑器内容,清空回退列表,会触发reset事件\r\n * @example\r\n * ```javascript\r\n * editor.reset()\r\n * ```\r\n */\r\n reset: function () {\r\n this.fireEvent('reset');\r\n },\r\n\r\n /**\r\n * 设置当前编辑区域可以编辑\r\n * @method setEnabled\r\n * @example\r\n * ```javascript\r\n * editor.setEnabled()\r\n * ```\r\n */\r\n setEnabled: function () {\r\n var me = this,\r\n range;\r\n if (me.body.contentEditable == 'false') {\r\n me.body.contentEditable = true;\r\n range = me.selection.getRange();\r\n //有可能内容丢失了\r\n try {\r\n range.moveToBookmark(me.lastBk);\r\n delete me.lastBk\r\n } catch (e) {\r\n range.setStartAtFirst(me.body).collapse(true)\r\n }\r\n range.select(true);\r\n if (me.bkqueryCommandState) {\r\n me.queryCommandState = me.bkqueryCommandState;\r\n delete me.bkqueryCommandState;\r\n }\r\n if (me.bkqueryCommandValue) {\r\n me.queryCommandValue = me.bkqueryCommandValue;\r\n delete me.bkqueryCommandValue;\r\n }\r\n me.fireEvent('selectionchange');\r\n }\r\n },\r\n enable: function () {\r\n return this.setEnabled();\r\n },\r\n\r\n /** 设置当前编辑区域不可编辑\r\n * @method setDisabled\r\n */\r\n\r\n /** 设置当前编辑区域不可编辑,except中的命令除外\r\n * @method setDisabled\r\n * @param { String } except 例外命令的字符串\r\n * @remind 即使设置了disable,此处配置的例外命令仍然可以执行\r\n * @example\r\n * ```javascript\r\n * editor.setDisabled('bold'); //禁用工具栏中除加粗之外的所有功能\r\n * ```\r\n */\r\n\r\n /** 设置当前编辑区域不可编辑,except中的命令除外\r\n * @method setDisabled\r\n * @param { Array } except 例外命令的字符串数组,数组中的命令仍然可以执行\r\n * @remind 即使设置了disable,此处配置的例外命令仍然可以执行\r\n * @example\r\n * ```javascript\r\n * editor.setDisabled(['bold','insertimage']); //禁用工具栏中除加粗和插入图片之外的所有功能\r\n * ```\r\n */\r\n setDisabled: function (except) {\r\n var me = this;\r\n except = except ? utils.isArray(except) ? except : [except] : [];\r\n if (me.body.contentEditable == 'true') {\r\n if (!me.lastBk) {\r\n me.lastBk = me.selection.getRange().createBookmark(true);\r\n }\r\n me.body.contentEditable = false;\r\n me.bkqueryCommandState = me.queryCommandState;\r\n me.bkqueryCommandValue = me.queryCommandValue;\r\n me.queryCommandState = function (type) {\r\n if (utils.indexOf(except, type) != -1) {\r\n return me.bkqueryCommandState.apply(me, arguments);\r\n }\r\n return -1;\r\n };\r\n me.queryCommandValue = function (type) {\r\n if (utils.indexOf(except, type) != -1) {\r\n return me.bkqueryCommandValue.apply(me, arguments);\r\n }\r\n return null;\r\n };\r\n me.fireEvent('selectionchange');\r\n }\r\n },\r\n disable: function (except) {\r\n return this.setDisabled(except);\r\n },\r\n\r\n /**\r\n * 设置默认内容\r\n * @method _setDefaultContent\r\n * @private\r\n * @param { String } cont 要存入的内容\r\n */\r\n _setDefaultContent: function () {\r\n function clear() {\r\n var me = this;\r\n if (me.document.getElementById('initContent')) {\r\n me.body.innerHTML = '

' + (ie ? '' : '
') + '

';\r\n me.removeListener('firstBeforeExecCommand focus', clear);\r\n setTimeout(function () {\r\n me.focus();\r\n me._selectionChange();\r\n }, 0)\r\n }\r\n }\r\n\r\n return function (cont) {\r\n var me = this;\r\n me.body.innerHTML = '

' + cont + '

';\r\n\r\n me.addListener('firstBeforeExecCommand focus', clear);\r\n }\r\n }(),\r\n\r\n /**\r\n * 显示编辑器\r\n * @method setShow\r\n * @example\r\n * ```javascript\r\n * editor.setShow()\r\n * ```\r\n */\r\n setShow: function () {\r\n var me = this,\r\n range = me.selection.getRange();\r\n if (me.container.style.display == 'none') {\r\n //有可能内容丢失了\r\n try {\r\n range.moveToBookmark(me.lastBk);\r\n delete me.lastBk\r\n } catch (e) {\r\n range.setStartAtFirst(me.body).collapse(true)\r\n }\r\n //ie下focus实效,所以做了个延迟\r\n setTimeout(function () {\r\n range.select(true);\r\n }, 100);\r\n me.container.style.display = '';\r\n }\r\n\r\n },\r\n show: function () {\r\n return this.setShow();\r\n },\r\n /**\r\n * 隐藏编辑器\r\n * @method setHide\r\n * @example\r\n * ```javascript\r\n * editor.setHide()\r\n * ```\r\n */\r\n setHide: function () {\r\n var me = this;\r\n if (!me.lastBk) {\r\n me.lastBk = me.selection.getRange().createBookmark(true);\r\n }\r\n me.container.style.display = 'none'\r\n },\r\n hide: function () {\r\n return this.setHide();\r\n },\r\n\r\n /**\r\n * 根据指定的路径,获取对应的语言资源\r\n * @method getLang\r\n * @param { String } path 路径根据的是lang目录下的语言文件的路径结构\r\n * @return { Object | String } 根据路径返回语言资源的Json格式对象或者语言字符串\r\n * @example\r\n * ```javascript\r\n * editor.getLang('contextMenu.delete'); //如果当前是中文,那返回是的是'删除'\r\n * ```\r\n */\r\n getLang: function (path) {\r\n var lang = UE.I18N[this.options.lang];\r\n if (!lang) {\r\n throw Error(\"not import language file\");\r\n }\r\n path = (path || \"\").split(\".\");\r\n for (var i = 0, ci; ci = path[i++];) {\r\n lang = lang[ci];\r\n if (!lang) break;\r\n }\r\n return lang;\r\n },\r\n\r\n /**\r\n * 计算编辑器html内容字符串的长度\r\n * @method getContentLength\r\n * @return { Number } 返回计算的长度\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容

132

\r\n * editor.getContentLength() //返回27\r\n * ```\r\n */\r\n /**\r\n * 计算编辑器当前纯文本内容的长度\r\n * @method getContentLength\r\n * @param { Boolean } ingoneHtml 传入true时,只按照纯文本来计算\r\n * @return { Number } 返回计算的长度,内容中有hr/img/iframe标签,长度加1\r\n * @example\r\n * ```javascript\r\n * //编辑器html内容

132

\r\n * editor.getContentLength() //返回3\r\n * ```\r\n */\r\n getContentLength: function (ingoneHtml, tagNames) {\r\n var count = this.getContent(false, false, true).length;\r\n if (ingoneHtml) {\r\n tagNames = (tagNames || []).concat(['hr', 'img', 'iframe']);\r\n count = this.getContentTxt().replace(/[\\t\\r\\n]+/g, '').length;\r\n for (var i = 0, ci; ci = tagNames[i++];) {\r\n count += this.document.getElementsByTagName(ci).length;\r\n }\r\n }\r\n return count;\r\n },\r\n\r\n /**\r\n * 注册输入过滤规则\r\n * @method addInputRule\r\n * @param { Function } rule 要添加的过滤规则\r\n * @example\r\n * ```javascript\r\n * editor.addInputRule(function(root){\r\n * $.each(root.getNodesByTagName('div'),function(i,node){\r\n * node.tagName=\"p\";\r\n * });\r\n * });\r\n * ```\r\n */\r\n addInputRule: function (rule) {\r\n this.inputRules.push(rule);\r\n },\r\n\r\n /**\r\n * 执行注册的过滤规则\r\n * @method filterInputRule\r\n * @param { UE.uNode } root 要过滤的uNode节点\r\n * @remind 执行editor.setContent方法和执行'inserthtml'命令后,会运行该过滤函数\r\n * @example\r\n * ```javascript\r\n * editor.filterInputRule(editor.body);\r\n * ```\r\n * @see UE.Editor:addInputRule\r\n */\r\n filterInputRule: function (root) {\r\n for (var i = 0, ci; ci = this.inputRules[i++];) {\r\n ci.call(this, root)\r\n }\r\n },\r\n\r\n /**\r\n * 注册输出过滤规则\r\n * @method addOutputRule\r\n * @param { Function } rule 要添加的过滤规则\r\n * @example\r\n * ```javascript\r\n * editor.addOutputRule(function(root){\r\n * $.each(root.getNodesByTagName('p'),function(i,node){\r\n * node.tagName=\"div\";\r\n * });\r\n * });\r\n * ```\r\n */\r\n addOutputRule: function (rule) {\r\n this.outputRules.push(rule)\r\n },\r\n\r\n /**\r\n * 根据输出过滤规则,过滤编辑器内容\r\n * @method filterOutputRule\r\n * @remind 执行editor.getContent方法的时候,会先运行该过滤函数\r\n * @param { UE.uNode } root 要过滤的uNode节点\r\n * @example\r\n * ```javascript\r\n * editor.filterOutputRule(editor.body);\r\n * ```\r\n * @see UE.Editor:addOutputRule\r\n */\r\n filterOutputRule: function (root) {\r\n for (var i = 0, ci; ci = this.outputRules[i++];) {\r\n ci.call(this, root)\r\n }\r\n },\r\n\r\n /**\r\n * 根据action名称获取请求的路径\r\n * @method getActionUrl\r\n * @remind 假如没有设置serverUrl,会根据imageUrl设置默认的controller路径\r\n * @param { String } action action名称\r\n * @example\r\n * ```javascript\r\n * editor.getActionUrl('config'); //返回 \"/ueditor/php/controller.php?action=config\"\r\n * editor.getActionUrl('image'); //返回 \"/ueditor/php/controller.php?action=uplaodimage\"\r\n * editor.getActionUrl('scrawl'); //返回 \"/ueditor/php/controller.php?action=uplaodscrawl\"\r\n * editor.getActionUrl('imageManager'); //返回 \"/ueditor/php/controller.php?action=listimage\"\r\n * ```\r\n */\r\n getActionUrl: function (action) {\r\n var actionName = this.getOpt(action) || action,\r\n imageUrl = this.getOpt('imageUrl'),\r\n serverUrl = this.getOpt('serverUrl');\r\n\r\n if (!serverUrl && imageUrl) {\r\n serverUrl = imageUrl.replace(/^(.*[\\/]).+([\\.].+)$/, '$1controller$2');\r\n }\r\n\r\n if (serverUrl) {\r\n serverUrl = serverUrl + (serverUrl.indexOf('?') == -1 ? '?' : '&') + 'action=' + (actionName || '');\r\n return utils.formatUrl(serverUrl);\r\n } else {\r\n return '';\r\n }\r\n }\r\n };\r\n utils.inherits(Editor, EventBase);\r\n })();\r\n\r\n\r\n // core/Editor.defaultoptions.js\r\n //维护编辑器一下默认的不在插件中的配置项\r\n UE.Editor.defaultOptions = function (editor) {\r\n\r\n var _url = editor.options.UEDITOR_HOME_URL;\r\n return {\r\n isShow: true,\r\n initialContent: '',\r\n initialStyle: '',\r\n autoClearinitialContent: false,\r\n iframeCssUrl: _url + 'themes/iframe.css',\r\n textarea: 'editorValue',\r\n focus: false,\r\n focusInEnd: true,\r\n autoClearEmptyNode: true,\r\n fullscreen: false,\r\n readonly: false,\r\n zIndex: 999,\r\n imagePopup: true,\r\n enterTag: 'p',\r\n customDomain: false,\r\n lang: 'zh-cn',\r\n langPath: _url + 'lang/',\r\n theme: 'default',\r\n themePath: _url + 'themes/',\r\n allHtmlEnabled: false,\r\n scaleEnabled: false,\r\n tableNativeEditInFF: false,\r\n autoSyncData: true,\r\n fileNameFormat: '{time}{rand:6}'\r\n }\r\n };\r\n\r\n // core/loadconfig.js\r\n (function () {\r\n\r\n UE.Editor.prototype.loadServerConfig = function () {\r\n var me = this;\r\n setTimeout(function () {\r\n try {\r\n me.options.imageUrl && me.setOpt('serverUrl', me.options.imageUrl.replace(/^(.*[\\/]).+([\\.].+)$/, '$1controller$2'));\r\n\r\n var configUrl = me.getActionUrl('config'),\r\n isJsonp = utils.isCrossDomainUrl(configUrl);\r\n\r\n /* 发出ajax请求 */\r\n me._serverConfigLoaded = false;\r\n\r\n configUrl && UE.ajax.request(configUrl, {\r\n 'method': 'GET',\r\n 'dataType': isJsonp ? 'jsonp' : '',\r\n 'onsuccess': function (r) {\r\n try {\r\n var config = isJsonp ? r : eval(\"(\" + r.responseText + \")\");\r\n utils.extend(me.options, config);\r\n me.fireEvent('serverConfigLoaded');\r\n me._serverConfigLoaded = true;\r\n } catch (e) {\r\n showErrorMsg(me.getLang('loadconfigFormatError'));\r\n }\r\n },\r\n 'onerror': function () {\r\n showErrorMsg(me.getLang('loadconfigHttpError'));\r\n }\r\n });\r\n } catch (e) {\r\n showErrorMsg(me.getLang('loadconfigError'));\r\n }\r\n });\r\n\r\n function showErrorMsg(msg) {\r\n console && console.error(msg);\r\n //me.fireEvent('showMessage', {\r\n // 'title': msg,\r\n // 'type': 'error'\r\n //});\r\n }\r\n };\r\n\r\n UE.Editor.prototype.isServerConfigLoaded = function () {\r\n var me = this;\r\n return me._serverConfigLoaded || false;\r\n };\r\n\r\n UE.Editor.prototype.afterConfigReady = function (handler) {\r\n if (!handler || !utils.isFunction(handler)) return;\r\n var me = this;\r\n var readyHandler = function () {\r\n handler.apply(me, arguments);\r\n me.removeListener('serverConfigLoaded', readyHandler);\r\n };\r\n\r\n if (me.isServerConfigLoaded()) {\r\n handler.call(me, 'serverConfigLoaded');\r\n } else {\r\n me.addListener('serverConfigLoaded', readyHandler);\r\n }\r\n };\r\n\r\n })();\r\n\r\n\r\n // core/ajax.js\r\n /**\r\n * @file\r\n * @module UE.ajax\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 提供对ajax请求的支持\r\n * @module UE.ajax\r\n */\r\n UE.ajax = function () {\r\n\r\n //创建一个ajaxRequest对象\r\n var fnStr = 'XMLHttpRequest()';\r\n try {\r\n new ActiveXObject(\"Msxml2.XMLHTTP\");\r\n fnStr = 'ActiveXObject(\\'Msxml2.XMLHTTP\\')';\r\n } catch (e) {\r\n try {\r\n new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n fnStr = 'ActiveXObject(\\'Microsoft.XMLHTTP\\')'\r\n } catch (e) {}\r\n }\r\n var creatAjaxRequest = new Function('return new ' + fnStr);\r\n\r\n\r\n /**\r\n * 将json参数转化成适合ajax提交的参数列表\r\n * @param json\r\n */\r\n function json2str(json) {\r\n var strArr = [];\r\n for (var i in json) {\r\n //忽略默认的几个参数\r\n if (i == \"method\" || i == \"timeout\" || i == \"async\" || i == \"dataType\" || i == \"callback\") continue;\r\n //忽略控制\r\n if (json[i] == undefined || json[i] == null) continue;\r\n //传递过来的对象和函数不在提交之列\r\n if (!((typeof json[i]).toLowerCase() == \"function\" || (typeof json[i]).toLowerCase() == \"object\")) {\r\n strArr.push(encodeURIComponent(i) + \"=\" + encodeURIComponent(json[i]));\r\n } else if (utils.isArray(json[i])) {\r\n //支持传数组内容\r\n for (var j = 0; j < json[i].length; j++) {\r\n strArr.push(encodeURIComponent(i) + \"[]=\" + encodeURIComponent(json[i][j]));\r\n }\r\n }\r\n }\r\n return strArr.join(\"&\");\r\n }\r\n\r\n function doAjax(url, ajaxOptions) {\r\n var xhr = creatAjaxRequest(),\r\n //是否超时\r\n timeIsOut = false,\r\n //默认参数\r\n defaultAjaxOptions = {\r\n method: \"POST\",\r\n timeout: 5000,\r\n async: true,\r\n data: {}, //需要传递对象的话只能覆盖\r\n onsuccess: function () {},\r\n onerror: function () {}\r\n };\r\n\r\n if (typeof url === \"object\") {\r\n ajaxOptions = url;\r\n url = ajaxOptions.url;\r\n }\r\n if (!xhr || !url) return;\r\n var ajaxOpts = ajaxOptions ? utils.extend(defaultAjaxOptions, ajaxOptions) : defaultAjaxOptions;\r\n\r\n var submitStr = json2str(ajaxOpts); // { name:\"Jim\",city:\"Beijing\" } --> \"name=Jim&city=Beijing\"\r\n //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串\r\n if (!utils.isEmptyObject(ajaxOpts.data)) {\r\n submitStr += (submitStr ? \"&\" : \"\") + json2str(ajaxOpts.data);\r\n }\r\n //超时检测\r\n var timerID = setTimeout(function () {\r\n if (xhr.readyState != 4) {\r\n timeIsOut = true;\r\n xhr.abort();\r\n clearTimeout(timerID);\r\n }\r\n }, ajaxOpts.timeout);\r\n\r\n var method = ajaxOpts.method.toUpperCase();\r\n var str = url + (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + (method == \"POST\" ? \"\" : submitStr + \"&noCache=\" + +new Date);\r\n xhr.open(method, str, ajaxOpts.async);\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == 4) {\r\n if (!timeIsOut && xhr.status == 200) {\r\n ajaxOpts.onsuccess(xhr);\r\n } else {\r\n ajaxOpts.onerror(xhr);\r\n }\r\n }\r\n };\r\n if (method == \"POST\") {\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\r\n xhr.send(submitStr);\r\n } else {\r\n xhr.send(null);\r\n }\r\n }\r\n\r\n function doJsonp(url, opts) {\r\n\r\n var successhandler = opts.onsuccess || function () {},\r\n scr = document.createElement('SCRIPT'),\r\n options = opts || {},\r\n charset = options['charset'],\r\n callbackField = options['jsonp'] || 'callback',\r\n callbackFnName,\r\n timeOut = options['timeOut'] || 0,\r\n timer,\r\n reg = new RegExp('(\\\\?|&)' + callbackField + '=([^&]*)'),\r\n matches;\r\n\r\n if (utils.isFunction(successhandler)) {\r\n callbackFnName = 'bd__editor__' + Math.floor(Math.random() * 2147483648).toString(36);\r\n window[callbackFnName] = getCallBack(0);\r\n } else if (utils.isString(successhandler)) {\r\n callbackFnName = successhandler;\r\n } else {\r\n if (matches = reg.exec(url)) {\r\n callbackFnName = matches[2];\r\n }\r\n }\r\n\r\n url = url.replace(reg, '\\x241' + callbackField + '=' + callbackFnName);\r\n\r\n if (url.search(reg) < 0) {\r\n url += (url.indexOf('?') < 0 ? '?' : '&') + callbackField + '=' + callbackFnName;\r\n }\r\n\r\n var queryStr = json2str(opts); // { name:\"Jim\",city:\"Beijing\" } --> \"name=Jim&city=Beijing\"\r\n //如果用户直接通过data参数传递json对象过来,则也要将此json对象转化为字符串\r\n if (!utils.isEmptyObject(opts.data)) {\r\n queryStr += (queryStr ? \"&\" : \"\") + json2str(opts.data);\r\n }\r\n if (queryStr) {\r\n url = url.replace(/\\?/, '?' + queryStr + '&');\r\n }\r\n\r\n scr.onerror = getCallBack(1);\r\n if (timeOut) {\r\n timer = setTimeout(getCallBack(1), timeOut);\r\n }\r\n createScriptTag(scr, url, charset);\r\n\r\n function createScriptTag(scr, url, charset) {\r\n scr.setAttribute('type', 'text/javascript');\r\n scr.setAttribute('defer', 'defer');\r\n charset && scr.setAttribute('charset', charset);\r\n scr.setAttribute('src', url);\r\n document.getElementsByTagName('head')[0].appendChild(scr);\r\n }\r\n\r\n function getCallBack(onTimeOut) {\r\n return function () {\r\n try {\r\n if (onTimeOut) {\r\n options.onerror && options.onerror();\r\n } else {\r\n try {\r\n clearTimeout(timer);\r\n successhandler.apply(window, arguments);\r\n } catch (e) {}\r\n }\r\n } catch (exception) {\r\n options.onerror && options.onerror.call(window, exception);\r\n } finally {\r\n options.oncomplete && options.oncomplete.apply(window, arguments);\r\n scr.parentNode && scr.parentNode.removeChild(scr);\r\n window[callbackFnName] = null;\r\n try {\r\n delete window[callbackFnName];\r\n } catch (e) {}\r\n }\r\n }\r\n }\r\n }\r\n\r\n return {\r\n /**\r\n * 根据给定的参数项,向指定的url发起一个ajax请求。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求\r\n * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调\r\n * @method request\r\n * @param { URLString } url ajax请求的url地址\r\n * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下:\r\n * @example\r\n * ```javascript\r\n * //向sayhello.php发起一个异步的Ajax GET请求, 请求超时时间为10s, 请求完成后执行相应的回调。\r\n * UE.ajax.requeset( 'sayhello.php', {\r\n *\r\n * //请求方法。可选值: 'GET', 'POST',默认值是'POST'\r\n * method: 'GET',\r\n *\r\n * //超时时间。 默认为5000, 单位是ms\r\n * timeout: 10000,\r\n *\r\n * //是否是异步请求。 true为异步请求, false为同步请求\r\n * async: true,\r\n *\r\n * //请求携带的数据。如果请求为GET请求, data会经过stringify后附加到请求url之后。\r\n * data: {\r\n * name: 'ueditor'\r\n * },\r\n *\r\n * //请求成功后的回调, 该回调接受当前的XMLHttpRequest对象作为参数。\r\n * onsuccess: function ( xhr ) {\r\n * console.log( xhr.responseText );\r\n * },\r\n *\r\n * //请求失败或者超时后的回调。\r\n * onerror: function ( xhr ) {\r\n * alert( 'Ajax请求失败' );\r\n * }\r\n *\r\n * } );\r\n * ```\r\n */\r\n\r\n /**\r\n * 根据给定的参数项发起一个ajax请求, 参数项里必须包含一个url地址。 ajax请求完成后,会根据请求结果调用相应回调: 如果请求\r\n * 成功, 则调用onsuccess回调, 失败则调用 onerror 回调。\r\n * @method request\r\n * @warning 如果在参数项里未提供一个key为“url”的地址值,则该请求将直接退出。\r\n * @param { Object } ajaxOptions ajax请求选项的键值对,支持的选项如下:\r\n * @example\r\n * ```javascript\r\n *\r\n * //向sayhello.php发起一个异步的Ajax POST请求, 请求超时时间为5s, 请求完成后不执行任何回调。\r\n * UE.ajax.requeset( 'sayhello.php', {\r\n *\r\n * //请求的地址, 该项是必须的。\r\n * url: 'sayhello.php'\r\n *\r\n * } );\r\n * ```\r\n */\r\n request: function (url, opts) {\r\n if (opts && opts.dataType == 'jsonp') {\r\n doJsonp(url, opts);\r\n } else {\r\n doAjax(url, opts);\r\n }\r\n },\r\n getJSONP: function (url, data, fn) {\r\n var opts = {\r\n 'data': data,\r\n 'oncomplete': fn\r\n };\r\n doJsonp(url, opts);\r\n }\r\n };\r\n\r\n\r\n }();\r\n\r\n\r\n // core/filterword.js\r\n /**\r\n * UE过滤word的静态方法\r\n * @file\r\n */\r\n\r\n /**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @module UE\r\n */\r\n\r\n\r\n /**\r\n * 根据传入html字符串过滤word\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method filterWord\r\n * @param { String } html html字符串\r\n * @return { String } 已过滤后的结果字符串\r\n * @example\r\n * ```javascript\r\n * UE.filterWord(html);\r\n * ```\r\n */\r\n var filterWord = UE.filterWord = function () {\r\n\r\n //是否是word过来的内容\r\n function isWordDocument(str) {\r\n return /(class=\"?Mso|style=\"[^\"]*\\bmso\\-|w:WordDocument|<(v|o):|lang=)/ig.test(str);\r\n }\r\n //去掉小数\r\n function transUnit(v) {\r\n v = v.replace(/[\\d.]+\\w+/g, function (m) {\r\n return utils.transUnitToPx(m);\r\n });\r\n return v;\r\n }\r\n\r\n function filterPasteWord(str) {\r\n return str.replace(/[\\t\\r\\n]+/g, ' ')\r\n .replace(//ig, \"\")\r\n //转换图片\r\n .replace(/]*>[\\s\\S]*?.<\\/v:shape>/gi, function (str) {\r\n //opera能自己解析出image所这里直接返回空\r\n if (browser.opera) {\r\n return '';\r\n }\r\n try {\r\n //有可能是bitmap占为图,无用,直接过滤掉,主要体现在粘贴excel表格中\r\n if (/Bitmap/i.test(str)) {\r\n return '';\r\n }\r\n var width = str.match(/width:([ \\d.]*p[tx])/i)[1],\r\n height = str.match(/height:([ \\d.]*p[tx])/i)[1],\r\n src = str.match(/src=\\s*\"([^\"]*)\"/i)[1];\r\n return '';\r\n } catch (e) {\r\n return '';\r\n }\r\n })\r\n //针对wps添加的多余标签处理\r\n .replace(/<\\/?div[^>]*>/g, '')\r\n //去掉多余的属性\r\n .replace(/v:\\w+=([\"']?)[^'\"]+\\1/g, '')\r\n .replace(/<(!|script[^>]*>.*?<\\/script(?=[>\\s])|\\/?(\\?xml(:\\w+)?|xml|meta|link|style|\\w+:\\w+)(?=[\\s\\/>]))[^>]*>/gi, \"\")\r\n .replace(/

]*class=\"?MsoHeading\"?[^>]*>(.*?)<\\/p>/gi, \"

$1

\")\r\n //去掉多余的属性\r\n .replace(/\\s+(class|lang|align)\\s*=\\s*(['\"]?)([\\w-]+)\\2/ig, function (str, name, marks, val) {\r\n //保留list的标示\r\n return name == 'class' && val == 'MsoListParagraph' ? str : ''\r\n })\r\n //清除多余的font/span不能匹配 有可能是空格\r\n .replace(/<(font|span)[^>]*>(\\s*)<\\/\\1>/gi, function (a, b, c) {\r\n return c.replace(/[\\t\\r\\n ]+/g, ' ')\r\n })\r\n //处理style的问题\r\n .replace(/(<[a-z][^>]*)\\sstyle=([\"'])([^\\2]*?)\\2/gi, function (str, tag, tmp, style) {\r\n var n = [],\r\n s = style.replace(/^\\s+|\\s+$/, '')\r\n .replace(/'/g, '\\'')\r\n .replace(/"/gi, \"'\")\r\n .replace(/[\\d.]+(cm|pt)/g, function (str) {\r\n return utils.transUnitToPx(str)\r\n })\r\n .split(/;\\s*/g);\r\n\r\n for (var i = 0, v; v = s[i]; i++) {\r\n\r\n var name, value,\r\n parts = v.split(\":\");\r\n\r\n if (parts.length == 2) {\r\n name = parts[0].toLowerCase();\r\n value = parts[1].toLowerCase();\r\n if (/^(background)\\w*/.test(name) && value.replace(/(initial|\\s)/g, '').length == 0 ||\r\n /^(margin)\\w*/.test(name) && /^0\\w+$/.test(value)\r\n ) {\r\n continue;\r\n }\r\n\r\n switch (name) {\r\n case \"mso-padding-alt\":\r\n case \"mso-padding-top-alt\":\r\n case \"mso-padding-right-alt\":\r\n case \"mso-padding-bottom-alt\":\r\n case \"mso-padding-left-alt\":\r\n case \"mso-margin-alt\":\r\n case \"mso-margin-top-alt\":\r\n case \"mso-margin-right-alt\":\r\n case \"mso-margin-bottom-alt\":\r\n case \"mso-margin-left-alt\":\r\n //ie下会出现挤到一起的情况\r\n //case \"mso-table-layout-alt\":\r\n case \"mso-height\":\r\n case \"mso-width\":\r\n case \"mso-vertical-align-alt\":\r\n //trace:1819 ff下会解析出padding在table上\r\n if (!/]/.test(html)) {\r\n return UE.htmlparser(html).children[0]\r\n } else {\r\n return new uNode({\r\n type: 'element',\r\n children: [],\r\n tagName: html\r\n })\r\n }\r\n };\r\n uNode.createText = function (data, noTrans) {\r\n return new UE.uNode({\r\n type: 'text',\r\n 'data': noTrans ? data : utils.unhtml(data || '')\r\n })\r\n };\r\n\r\n function nodeToHtml(node, arr, formatter, current) {\r\n switch (node.type) {\r\n case 'root':\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n //插入新行\r\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\r\n insertLine(arr, current, true);\r\n insertIndent(arr, current)\r\n }\r\n nodeToHtml(ci, arr, formatter, current)\r\n }\r\n break;\r\n case 'text':\r\n isText(node, arr);\r\n break;\r\n case 'element':\r\n isElement(node, arr, formatter, current);\r\n break;\r\n case 'comment':\r\n isComment(node, arr, formatter);\r\n }\r\n return arr;\r\n }\r\n\r\n function isText(node, arr) {\r\n if (node.parentNode.tagName == 'pre') {\r\n //源码模式下输入html标签,不能做转换处理,直接输出\r\n arr.push(node.data)\r\n } else {\r\n arr.push(notTransTagName[node.parentNode.tagName] ? utils.html(node.data) : node.data.replace(/[ ]{2}/g, '  '))\r\n }\r\n\r\n }\r\n\r\n function isElement(node, arr, formatter, current) {\r\n var attrhtml = '';\r\n if (node.attrs) {\r\n attrhtml = [];\r\n var attrs = node.attrs;\r\n for (var a in attrs) {\r\n //这里就针对\r\n //

'

\r\n //这里边的\\\"做转换,要不用innerHTML直接被截断了,属性src\r\n //有可能做的不够\r\n attrhtml.push(a + (attrs[a] !== undefined ? '=\"' + (notTransAttrs[a] ? utils.html(attrs[a]).replace(/[\"]/g, function (a) {\r\n return '"'\r\n }) : utils.unhtml(attrs[a])) + '\"' : ''))\r\n }\r\n attrhtml = attrhtml.join(' ');\r\n }\r\n arr.push('<' + node.tagName +\r\n (attrhtml ? ' ' + attrhtml : '') +\r\n (dtd.$empty[node.tagName] ? '\\/' : '') + '>'\r\n );\r\n //插入新行\r\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\r\n if (node.children && node.children.length) {\r\n current = insertLine(arr, current, true);\r\n insertIndent(arr, current)\r\n }\r\n\r\n }\r\n if (node.children && node.children.length) {\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n if (formatter && ci.type == 'element' && !dtd.$inlineWithA[ci.tagName] && i > 1) {\r\n insertLine(arr, current);\r\n insertIndent(arr, current)\r\n }\r\n nodeToHtml(ci, arr, formatter, current)\r\n }\r\n }\r\n if (!dtd.$empty[node.tagName]) {\r\n if (formatter && !dtd.$inlineWithA[node.tagName] && node.tagName != 'pre') {\r\n\r\n if (node.children && node.children.length) {\r\n current = insertLine(arr, current);\r\n insertIndent(arr, current)\r\n }\r\n }\r\n arr.push('<\\/' + node.tagName + '>');\r\n }\r\n\r\n }\r\n\r\n function isComment(node, arr) {\r\n arr.push('');\r\n }\r\n\r\n function getNodeById(root, id) {\r\n var node;\r\n if (root.type == 'element' && root.getAttr('id') == id) {\r\n return root;\r\n }\r\n if (root.children && root.children.length) {\r\n for (var i = 0, ci; ci = root.children[i++];) {\r\n if (node = getNodeById(ci, id)) {\r\n return node;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getNodesByTagName(node, tagName, arr) {\r\n if (node.type == 'element' && node.tagName == tagName) {\r\n arr.push(node);\r\n }\r\n if (node.children && node.children.length) {\r\n for (var i = 0, ci; ci = node.children[i++];) {\r\n getNodesByTagName(ci, tagName, arr)\r\n }\r\n }\r\n }\r\n\r\n function nodeTraversal(root, fn) {\r\n if (root.children && root.children.length) {\r\n for (var i = 0, ci; ci = root.children[i];) {\r\n nodeTraversal(ci, fn);\r\n //ci被替换的情况,这里就不再走 fn了\r\n if (ci.parentNode) {\r\n if (ci.children && ci.children.length) {\r\n fn(ci)\r\n }\r\n if (ci.parentNode) i++\r\n }\r\n }\r\n } else {\r\n fn(root)\r\n }\r\n\r\n }\r\n uNode.prototype = {\r\n\r\n /**\r\n * 当前节点对象,转换成html文本\r\n * @method toHtml\r\n * @return { String } 返回转换后的html字符串\r\n * @example\r\n * ```javascript\r\n * node.toHtml();\r\n * ```\r\n */\r\n\r\n /**\r\n * 当前节点对象,转换成html文本\r\n * @method toHtml\r\n * @param { Boolean } formatter 是否格式化返回值\r\n * @return { String } 返回转换后的html字符串\r\n * @example\r\n * ```javascript\r\n * node.toHtml( true );\r\n * ```\r\n */\r\n toHtml: function (formatter) {\r\n var arr = [];\r\n nodeToHtml(this, arr, formatter, 0);\r\n return arr.join('')\r\n },\r\n\r\n /**\r\n * 获取节点的html内容\r\n * @method innerHTML\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @return { String } 返回节点的html内容\r\n * @example\r\n * ```javascript\r\n * var htmlstr = node.innerHTML();\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置节点的html内容\r\n * @method innerHTML\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @param { String } htmlstr 传入要设置的html内容\r\n * @return { UE.uNode } 返回节点本身\r\n * @example\r\n * ```javascript\r\n * node.innerHTML('text');\r\n * ```\r\n */\r\n innerHTML: function (htmlstr) {\r\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n return this;\r\n }\r\n if (utils.isString(htmlstr)) {\r\n if (this.children) {\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n ci.parentNode = null;\r\n }\r\n }\r\n this.children = [];\r\n var tmpRoot = UE.htmlparser(htmlstr);\r\n for (var i = 0, ci; ci = tmpRoot.children[i++];) {\r\n this.children.push(ci);\r\n ci.parentNode = this;\r\n }\r\n return this;\r\n } else {\r\n var tmpRoot = new UE.uNode({\r\n type: 'root',\r\n children: this.children\r\n });\r\n return tmpRoot.toHtml();\r\n }\r\n },\r\n\r\n /**\r\n * 获取节点的纯文本内容\r\n * @method innerText\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @return { String } 返回节点的存文本内容\r\n * @example\r\n * ```javascript\r\n * var textStr = node.innerText();\r\n * ```\r\n */\r\n\r\n /**\r\n * 设置节点的纯文本内容\r\n * @method innerText\r\n * @warning 假如节点的type不是'element',或节点的标签名称不在dtd列表里,直接返回当前节点\r\n * @param { String } textStr 传入要设置的文本内容\r\n * @return { UE.uNode } 返回节点本身\r\n * @example\r\n * ```javascript\r\n * node.innerText('text');\r\n * ```\r\n */\r\n innerText: function (textStr, noTrans) {\r\n if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n return this;\r\n }\r\n if (textStr) {\r\n if (this.children) {\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n ci.parentNode = null;\r\n }\r\n }\r\n this.children = [];\r\n this.appendChild(uNode.createText(textStr, noTrans));\r\n return this;\r\n } else {\r\n return this.toHtml().replace(/<[^>]+>/g, '');\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前对象的data属性\r\n * @method getData\r\n * @return { Object } 若节点的type值是elemenet,返回空字符串,否则返回节点的data属性\r\n * @example\r\n * ```javascript\r\n * node.getData();\r\n * ```\r\n */\r\n getData: function () {\r\n if (this.type == 'element')\r\n return '';\r\n return this.data\r\n },\r\n\r\n /**\r\n * 获取当前节点下的第一个子节点\r\n * @method firstChild\r\n * @return { UE.uNode } 返回第一个子节点\r\n * @example\r\n * ```javascript\r\n * node.firstChild(); //返回第一个子节点\r\n * ```\r\n */\r\n firstChild: function () {\r\n // if (this.type != 'element' || dtd.$empty[this.tagName]) {\r\n // return this;\r\n // }\r\n return this.children ? this.children[0] : null;\r\n },\r\n\r\n /**\r\n * 获取当前节点下的最后一个子节点\r\n * @method lastChild\r\n * @return { UE.uNode } 返回最后一个子节点\r\n * @example\r\n * ```javascript\r\n * node.lastChild(); //返回最后一个子节点\r\n * ```\r\n */\r\n lastChild: function () {\r\n // if (this.type != 'element' || dtd.$empty[this.tagName] ) {\r\n // return this;\r\n // }\r\n return this.children ? this.children[this.children.length - 1] : null;\r\n },\r\n\r\n /**\r\n * 获取和当前节点有相同父亲节点的前一个节点\r\n * @method previousSibling\r\n * @return { UE.uNode } 返回前一个节点\r\n * @example\r\n * ```javascript\r\n * node.children[2].previousSibling(); //返回子节点node.children[1]\r\n * ```\r\n */\r\n previousSibling: function () {\r\n var parent = this.parentNode;\r\n for (var i = 0, ci; ci = parent.children[i]; i++) {\r\n if (ci === this) {\r\n return i == 0 ? null : parent.children[i - 1];\r\n }\r\n }\r\n\r\n },\r\n\r\n /**\r\n * 获取和当前节点有相同父亲节点的后一个节点\r\n * @method nextSibling\r\n * @return { UE.uNode } 返回后一个节点,找不到返回null\r\n * @example\r\n * ```javascript\r\n * node.children[2].nextSibling(); //如果有,返回子节点node.children[3]\r\n * ```\r\n */\r\n nextSibling: function () {\r\n var parent = this.parentNode;\r\n for (var i = 0, ci; ci = parent.children[i++];) {\r\n if (ci === this) {\r\n return parent.children[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 用新的节点替换当前节点\r\n * @method replaceChild\r\n * @param { UE.uNode } target 要替换成该节点参数\r\n * @param { UE.uNode } source 要被替换掉的节点\r\n * @return { UE.uNode } 返回替换之后的节点对象\r\n * @example\r\n * ```javascript\r\n * node.replaceChild(newNode, childNode); //用newNode替换childNode,childNode是node的子节点\r\n * ```\r\n */\r\n replaceChild: function (target, source) {\r\n if (this.children) {\r\n if (target.parentNode) {\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i, 1, target);\r\n source.parentNode = null;\r\n target.parentNode = this;\r\n return target;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 在节点的子节点列表最后位置插入一个节点\r\n * @method appendChild\r\n * @param { UE.uNode } node 要插入的节点\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.appendChild( newNode ); //在node内插入子节点newNode\r\n * ```\r\n */\r\n appendChild: function (node) {\r\n if (this.type == 'root' || (this.type == 'element' && !dtd.$empty[this.tagName])) {\r\n if (!this.children) {\r\n this.children = []\r\n }\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === node) {\r\n this.children.splice(i, 1);\r\n break;\r\n }\r\n }\r\n this.children.push(node);\r\n node.parentNode = this;\r\n return node;\r\n }\r\n\r\n\r\n },\r\n\r\n /**\r\n * 在传入节点的前面插入一个节点\r\n * @method insertBefore\r\n * @param { UE.uNode } target 要插入的节点\r\n * @param { UE.uNode } source 在该参数节点前面插入\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.parentNode.insertBefore(newNode, node); //在node节点后面插入newNode\r\n * ```\r\n */\r\n insertBefore: function (target, source) {\r\n if (this.children) {\r\n if (target.parentNode) {\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i, 0, target);\r\n target.parentNode = this;\r\n return target;\r\n }\r\n }\r\n\r\n }\r\n },\r\n\r\n /**\r\n * 在传入节点的后面插入一个节点\r\n * @method insertAfter\r\n * @param { UE.uNode } target 要插入的节点\r\n * @param { UE.uNode } source 在该参数节点后面插入\r\n * @return { UE.uNode } 返回刚插入的子节点\r\n * @example\r\n * ```javascript\r\n * node.parentNode.insertAfter(newNode, node); //在node节点后面插入newNode\r\n * ```\r\n */\r\n insertAfter: function (target, source) {\r\n if (this.children) {\r\n if (target.parentNode) {\r\n target.parentNode.removeChild(target);\r\n }\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === source) {\r\n this.children.splice(i + 1, 0, target);\r\n target.parentNode = this;\r\n return target;\r\n }\r\n\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 从当前节点的子节点列表中,移除节点\r\n * @method removeChild\r\n * @param { UE.uNode } node 要移除的节点引用\r\n * @param { Boolean } keepChildren 是否保留移除节点的子节点,若传入true,自动把移除节点的子节点插入到移除的位置\r\n * @return { * } 返回刚移除的子节点\r\n * @example\r\n * ```javascript\r\n * node.removeChild(childNode,true); //在node的子节点列表中移除child节点,并且吧child的子节点插入到移除的位置\r\n * ```\r\n */\r\n removeChild: function (node, keepChildren) {\r\n if (this.children) {\r\n for (var i = 0, ci; ci = this.children[i]; i++) {\r\n if (ci === node) {\r\n this.children.splice(i, 1);\r\n ci.parentNode = null;\r\n if (keepChildren && ci.children && ci.children.length) {\r\n for (var j = 0, cj; cj = ci.children[j]; j++) {\r\n this.children.splice(i + j, 0, cj);\r\n cj.parentNode = this;\r\n\r\n }\r\n }\r\n return ci;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前节点所代表的元素属性,即获取attrs对象下的属性值\r\n * @method getAttr\r\n * @param { String } attrName 要获取的属性名称\r\n * @return { * } 返回attrs对象下的属性值\r\n * @example\r\n * ```javascript\r\n * node.getAttr('title');\r\n * ```\r\n */\r\n getAttr: function (attrName) {\r\n return this.attrs && this.attrs[attrName.toLowerCase()]\r\n },\r\n\r\n /**\r\n * 设置当前节点所代表的元素属性,即设置attrs对象下的属性值\r\n * @method setAttr\r\n * @param { String } attrName 要设置的属性名称\r\n * @param { * } attrVal 要设置的属性值,类型视设置的属性而定\r\n * @return { * } 返回attrs对象下的属性值\r\n * @example\r\n * ```javascript\r\n * node.setAttr('title','标题');\r\n * ```\r\n */\r\n setAttr: function (attrName, attrVal) {\r\n if (!attrName) {\r\n delete this.attrs;\r\n return;\r\n }\r\n if (!this.attrs) {\r\n this.attrs = {};\r\n }\r\n if (utils.isObject(attrName)) {\r\n for (var a in attrName) {\r\n if (!attrName[a]) {\r\n delete this.attrs[a]\r\n } else {\r\n this.attrs[a.toLowerCase()] = attrName[a];\r\n }\r\n }\r\n } else {\r\n if (!attrVal) {\r\n delete this.attrs[attrName]\r\n } else {\r\n this.attrs[attrName.toLowerCase()] = attrVal;\r\n }\r\n\r\n }\r\n },\r\n\r\n /**\r\n * 获取当前节点在父节点下的位置索引\r\n * @method getIndex\r\n * @return { Number } 返回索引数值,如果没有父节点,返回-1\r\n * @example\r\n * ```javascript\r\n * node.getIndex();\r\n * ```\r\n */\r\n getIndex: function () {\r\n var parent = this.parentNode;\r\n for (var i = 0, ci; ci = parent.children[i]; i++) {\r\n if (ci === this) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n /**\r\n * 在当前节点下,根据id查找节点\r\n * @method getNodeById\r\n * @param { String } id 要查找的id\r\n * @return { UE.uNode } 返回找到的节点\r\n * @example\r\n * ```javascript\r\n * node.getNodeById('textId');\r\n * ```\r\n */\r\n getNodeById: function (id) {\r\n var node;\r\n if (this.children && this.children.length) {\r\n for (var i = 0, ci; ci = this.children[i++];) {\r\n if (node = getNodeById(ci, id)) {\r\n return node;\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 在当前节点下,根据元素名称查找节点列表\r\n * @method getNodesByTagName\r\n * @param { String } tagNames 要查找的元素名称\r\n * @return { Array } 返回找到的节点列表\r\n * @example\r\n * ```javascript\r\n * node.getNodesByTagName('span');\r\n * ```\r\n */\r\n getNodesByTagName: function (tagNames) {\r\n tagNames = utils.trim(tagNames).replace(/[ ]{2,}/g, ' ').split(' ');\r\n var arr = [],\r\n me = this;\r\n utils.each(tagNames, function (tagName) {\r\n if (me.children && me.children.length) {\r\n for (var i = 0, ci; ci = me.children[i++];) {\r\n getNodesByTagName(ci, tagName, arr)\r\n }\r\n }\r\n });\r\n return arr;\r\n },\r\n\r\n /**\r\n * 根据样式名称,获取节点的样式值\r\n * @method getStyle\r\n * @param { String } name 要获取的样式名称\r\n * @return { String } 返回样式值\r\n * @example\r\n * ```javascript\r\n * node.getStyle('font-size');\r\n * ```\r\n */\r\n getStyle: function (name) {\r\n var cssStyle = this.getAttr('style');\r\n if (!cssStyle) {\r\n return ''\r\n }\r\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+)', 'i');\r\n var match = cssStyle.match(reg);\r\n if (match && match[0]) {\r\n return match[2]\r\n }\r\n return '';\r\n },\r\n\r\n /**\r\n * 给节点设置样式\r\n * @method setStyle\r\n * @param { String } name 要设置的的样式名称\r\n * @param { String } val 要设置的的样值\r\n * @example\r\n * ```javascript\r\n * node.setStyle('font-size', '12px');\r\n * ```\r\n */\r\n setStyle: function (name, val) {\r\n function exec(name, val) {\r\n var reg = new RegExp('(^|;)\\\\s*' + name + ':([^;]+;?)', 'gi');\r\n cssStyle = cssStyle.replace(reg, '$1');\r\n if (val) {\r\n cssStyle = name + ':' + utils.unhtml(val) + ';' + cssStyle\r\n }\r\n\r\n }\r\n\r\n var cssStyle = this.getAttr('style');\r\n if (!cssStyle) {\r\n cssStyle = '';\r\n }\r\n if (utils.isObject(name)) {\r\n for (var a in name) {\r\n exec(a, name[a])\r\n }\r\n } else {\r\n exec(name, val)\r\n }\r\n this.setAttr('style', utils.trim(cssStyle))\r\n },\r\n\r\n /**\r\n * 传入一个函数,递归遍历当前节点下的所有节点\r\n * @method traversal\r\n * @param { Function } fn 遍历到节点的时,传入节点作为参数,运行此函数\r\n * @example\r\n * ```javascript\r\n * traversal(node, function(){\r\n * console.log(node.type);\r\n * });\r\n * ```\r\n */\r\n traversal: function (fn) {\r\n if (this.children && this.children.length) {\r\n nodeTraversal(this, fn);\r\n }\r\n return this;\r\n }\r\n }\r\n })();\r\n\r\n\r\n // core/htmlparser.js\r\n /**\r\n * html字符串转换成uNode节点\r\n * @file\r\n * @module UE\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @unfile\r\n * @module UE\r\n */\r\n\r\n /**\r\n * html字符串转换成uNode节点的静态方法\r\n * @method htmlparser\r\n * @param { String } htmlstr 要转换的html代码\r\n * @param { Boolean } ignoreBlank 若设置为true,转换的时候忽略\\n\\r\\t等空白字符\r\n * @return { uNode } 给定的html片段转换形成的uNode对象\r\n * @example\r\n * ```javascript\r\n * var root = UE.htmlparser('

htmlparser

', true);\r\n * ```\r\n */\r\n\r\n var htmlparser = UE.htmlparser = function (htmlstr, ignoreBlank) {\r\n //todo 原来的方式 [^\"'<>\\/] 有\\/就不能配对上 ')\r\n }\r\n html.push('')\r\n }\r\n //禁止指定table-width\r\n return '
这样的标签了\r\n //先去掉了,加上的原因忘了,这里先记录\r\n var re_tag = /<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s\\/<>]+)\\s*((?:(?:\"[^\"]*\")|(?:'[^']*')|[^\"'<>])*)\\/?>))/g,\r\n re_attr = /([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g;\r\n\r\n //ie下取得的html可能会有\\n存在,要去掉,在处理replace(/[\\t\\r\\n]*/g,'');代码高量的\\n不能去除\r\n var allowEmptyTags = {\r\n b: 1,\r\n code: 1,\r\n i: 1,\r\n u: 1,\r\n strike: 1,\r\n s: 1,\r\n tt: 1,\r\n strong: 1,\r\n q: 1,\r\n samp: 1,\r\n em: 1,\r\n span: 1,\r\n sub: 1,\r\n img: 1,\r\n sup: 1,\r\n font: 1,\r\n big: 1,\r\n small: 1,\r\n iframe: 1,\r\n a: 1,\r\n br: 1,\r\n pre: 1\r\n };\r\n htmlstr = htmlstr.replace(new RegExp(domUtils.fillChar, 'g'), '');\r\n if (!ignoreBlank) {\r\n htmlstr = htmlstr.replace(new RegExp('[\\\\r\\\\t\\\\n' + (ignoreBlank ? '' : ' ') + ']*<\\/?(\\\\w+)\\\\s*(?:[^>]*)>[\\\\r\\\\t\\\\n' + (ignoreBlank ? '' : ' ') + ']*', 'g'), function (a, b) {\r\n //br暂时单独处理\r\n if (b && allowEmptyTags[b.toLowerCase()]) {\r\n return a.replace(/(^[\\n\\r]+)|([\\n\\r]+$)/g, '');\r\n }\r\n return a.replace(new RegExp('^[\\\\r\\\\n' + (ignoreBlank ? '' : ' ') + ']+'), '').replace(new RegExp('[\\\\r\\\\n' + (ignoreBlank ? '' : ' ') + ']+$'), '');\r\n });\r\n }\r\n\r\n var notTransAttrs = {\r\n 'href': 1,\r\n 'src': 1\r\n };\r\n\r\n var uNode = UE.uNode,\r\n needParentNode = {\r\n 'td': 'tr',\r\n 'tr': ['tbody', 'thead', 'tfoot'],\r\n 'tbody': 'table',\r\n 'th': 'tr',\r\n 'thead': 'table',\r\n 'tfoot': 'table',\r\n 'caption': 'table',\r\n 'li': ['ul', 'ol'],\r\n 'dt': 'dl',\r\n 'dd': 'dl',\r\n 'option': 'select'\r\n },\r\n needChild = {\r\n 'ol': 'li',\r\n 'ul': 'li'\r\n };\r\n\r\n function text(parent, data) {\r\n\r\n if (needChild[parent.tagName]) {\r\n var tmpNode = uNode.createElement(needChild[parent.tagName]);\r\n parent.appendChild(tmpNode);\r\n tmpNode.appendChild(uNode.createText(data));\r\n parent = tmpNode;\r\n } else {\r\n\r\n parent.appendChild(uNode.createText(data));\r\n }\r\n }\r\n\r\n function element(parent, tagName, htmlattr) {\r\n var needParentTag;\r\n if (needParentTag = needParentNode[tagName]) {\r\n var tmpParent = parent,\r\n hasParent;\r\n while (tmpParent.type != 'root') {\r\n if (utils.isArray(needParentTag) ? utils.indexOf(needParentTag, tmpParent.tagName) != -1 : needParentTag == tmpParent.tagName) {\r\n parent = tmpParent;\r\n hasParent = true;\r\n break;\r\n }\r\n tmpParent = tmpParent.parentNode;\r\n }\r\n if (!hasParent) {\r\n parent = element(parent, utils.isArray(needParentTag) ? needParentTag[0] : needParentTag)\r\n }\r\n }\r\n //按dtd处理嵌套\r\n // if(parent.type != 'root' && !dtd[parent.tagName][tagName])\r\n // parent = parent.parentNode;\r\n var elm = new uNode({\r\n parentNode: parent,\r\n type: 'element',\r\n tagName: tagName.toLowerCase(),\r\n //是自闭合的处理一下\r\n children: dtd.$empty[tagName] ? null : []\r\n });\r\n //如果属性存在,处理属性\r\n if (htmlattr) {\r\n var attrs = {},\r\n match;\r\n while (match = re_attr.exec(htmlattr)) {\r\n attrs[match[1].toLowerCase()] = notTransAttrs[match[1].toLowerCase()] ? (match[2] || match[3] || match[4]) : utils.unhtml(match[2] || match[3] || match[4])\r\n }\r\n elm.attrs = attrs;\r\n }\r\n //trace:3970\r\n // //如果parent下不能放elm\r\n // if(dtd.$inline[parent.tagName] && dtd.$block[elm.tagName] && !dtd[parent.tagName][elm.tagName]){\r\n // parent = parent.parentNode;\r\n // elm.parentNode = parent;\r\n // }\r\n parent.children.push(elm);\r\n //如果是自闭合节点返回父亲节点\r\n return dtd.$empty[tagName] ? parent : elm\r\n }\r\n\r\n function comment(parent, data) {\r\n parent.children.push(new uNode({\r\n type: 'comment',\r\n data: data,\r\n parentNode: parent\r\n }));\r\n }\r\n\r\n var match, currentIndex = 0,\r\n nextIndex = 0;\r\n //设置根节点\r\n var root = new uNode({\r\n type: 'root',\r\n children: []\r\n });\r\n var currentParent = root;\r\n\r\n while (match = re_tag.exec(htmlstr)) {\r\n currentIndex = match.index;\r\n try {\r\n if (currentIndex > nextIndex) {\r\n //text node\r\n text(currentParent, htmlstr.slice(nextIndex, currentIndex));\r\n }\r\n if (match[3]) {\r\n\r\n if (dtd.$cdata[currentParent.tagName]) {\r\n text(currentParent, match[0]);\r\n } else {\r\n //start tag\r\n currentParent = element(currentParent, match[3].toLowerCase(), match[4]);\r\n }\r\n\r\n\r\n } else if (match[1]) {\r\n if (currentParent.type != 'root') {\r\n if (dtd.$cdata[currentParent.tagName] && !dtd.$cdata[match[1]]) {\r\n text(currentParent, match[0]);\r\n } else {\r\n var tmpParent = currentParent;\r\n while (currentParent.type == 'element' && currentParent.tagName != match[1].toLowerCase()) {\r\n currentParent = currentParent.parentNode;\r\n if (currentParent.type == 'root') {\r\n currentParent = tmpParent;\r\n throw 'break'\r\n }\r\n }\r\n //end tag\r\n currentParent = currentParent.parentNode;\r\n }\r\n\r\n }\r\n\r\n } else if (match[2]) {\r\n //comment\r\n comment(currentParent, match[2])\r\n }\r\n } catch (e) {}\r\n\r\n nextIndex = re_tag.lastIndex;\r\n\r\n }\r\n //如果结束是文本,就有可能丢掉,所以这里手动判断一下\r\n //例如
  • sdfsdfsdf
  • sdfsdfsdfsdf\r\n if (nextIndex < htmlstr.length) {\r\n text(currentParent, htmlstr.slice(nextIndex));\r\n }\r\n return root;\r\n };\r\n\r\n\r\n // core/filternode.js\r\n /**\r\n * UE过滤节点的静态方法\r\n * @file\r\n */\r\n\r\n /**\r\n * UEditor公用空间,UEditor所有的功能都挂载在该空间下\r\n * @module UE\r\n */\r\n\r\n\r\n /**\r\n * 根据传入节点和过滤规则过滤相应节点\r\n * @module UE\r\n * @since 1.2.6.1\r\n * @method filterNode\r\n * @param { Object } root 指定root节点\r\n * @param { Object } rules 过滤规则json对象\r\n * @example\r\n * ```javascript\r\n * UE.filterNode(root,editor.options.filterRules);\r\n * ```\r\n */\r\n var filterNode = UE.filterNode = function () {\r\n function filterNode(node, rules) {\r\n switch (node.type) {\r\n case 'text':\r\n break;\r\n case 'element':\r\n var val;\r\n if (val = rules[node.tagName]) {\r\n if (val === '-') {\r\n node.parentNode.removeChild(node)\r\n } else if (utils.isFunction(val)) {\r\n var parentNode = node.parentNode,\r\n index = node.getIndex();\r\n val(node);\r\n if (node.parentNode) {\r\n if (node.children) {\r\n for (var i = 0, ci; ci = node.children[i];) {\r\n filterNode(ci, rules);\r\n if (ci.parentNode) {\r\n i++;\r\n }\r\n }\r\n }\r\n } else {\r\n for (var i = index, ci; ci = parentNode.children[i];) {\r\n filterNode(ci, rules);\r\n if (ci.parentNode) {\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n\r\n } else {\r\n var attrs = val['$'];\r\n if (attrs && node.attrs) {\r\n var tmpAttrs = {},\r\n tmpVal;\r\n for (var a in attrs) {\r\n tmpVal = node.getAttr(a);\r\n //todo 只先对style单独处理\r\n if (a == 'style' && utils.isArray(attrs[a])) {\r\n var tmpCssStyle = [];\r\n utils.each(attrs[a], function (v) {\r\n var tmp;\r\n if (tmp = node.getStyle(v)) {\r\n tmpCssStyle.push(v + ':' + tmp);\r\n }\r\n });\r\n tmpVal = tmpCssStyle.join(';')\r\n }\r\n if (tmpVal) {\r\n tmpAttrs[a] = tmpVal;\r\n }\r\n\r\n }\r\n node.attrs = tmpAttrs;\r\n }\r\n if (node.children) {\r\n for (var i = 0, ci; ci = node.children[i];) {\r\n filterNode(ci, rules);\r\n if (ci.parentNode) {\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n //如果不在名单里扣出子节点并删除该节点,cdata除外\r\n if (dtd.$cdata[node.tagName]) {\r\n node.parentNode.removeChild(node)\r\n } else {\r\n var parentNode = node.parentNode,\r\n index = node.getIndex();\r\n node.parentNode.removeChild(node, true);\r\n for (var i = index, ci; ci = parentNode.children[i];) {\r\n filterNode(ci, rules);\r\n if (ci.parentNode) {\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case 'comment':\r\n node.parentNode.removeChild(node)\r\n }\r\n\r\n }\r\n return function (root, rules) {\r\n if (utils.isEmptyObject(rules)) {\r\n return root;\r\n }\r\n var val;\r\n if (val = rules['-']) {\r\n utils.each(val.split(' '), function (k) {\r\n rules[k] = '-'\r\n })\r\n }\r\n for (var i = 0, ci; ci = root.children[i];) {\r\n filterNode(ci, rules);\r\n if (ci.parentNode) {\r\n i++;\r\n }\r\n }\r\n return root;\r\n }\r\n }();\r\n\r\n // core/plugin.js\r\n /**\r\n * Created with JetBrains PhpStorm.\r\n * User: campaign\r\n * Date: 10/8/13\r\n * Time: 6:15 PM\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n UE.plugin = function () {\r\n var _plugins = {};\r\n return {\r\n register: function (pluginName, fn, oldOptionName, afterDisabled) {\r\n if (oldOptionName && utils.isFunction(oldOptionName)) {\r\n afterDisabled = oldOptionName;\r\n oldOptionName = null\r\n }\r\n _plugins[pluginName] = {\r\n optionName: oldOptionName || pluginName,\r\n execFn: fn,\r\n //当插件被禁用时执行\r\n afterDisabled: afterDisabled\r\n }\r\n },\r\n load: function (editor) {\r\n utils.each(_plugins, function (plugin) {\r\n var _export = plugin.execFn.call(editor);\r\n if (editor.options[plugin.optionName] !== false) {\r\n if (_export) {\r\n //后边需要再做扩展\r\n utils.each(_export, function (v, k) {\r\n switch (k.toLowerCase()) {\r\n case 'shortcutkey':\r\n editor.addshortcutkey(v);\r\n break;\r\n case 'bindevents':\r\n utils.each(v, function (fn, eventName) {\r\n editor.addListener(eventName, fn);\r\n });\r\n break;\r\n case 'bindmultievents':\r\n utils.each(utils.isArray(v) ? v : [v], function (event) {\r\n var types = utils.trim(event.type).split(/\\s+/);\r\n utils.each(types, function (eventName) {\r\n editor.addListener(eventName, event.handler);\r\n });\r\n });\r\n break;\r\n case 'commands':\r\n utils.each(v, function (execFn, execName) {\r\n editor.commands[execName] = execFn\r\n });\r\n break;\r\n case 'outputrule':\r\n editor.addOutputRule(v);\r\n break;\r\n case 'inputrule':\r\n editor.addInputRule(v);\r\n break;\r\n case 'defaultoptions':\r\n editor.setOpt(v)\r\n }\r\n })\r\n }\r\n\r\n } else if (plugin.afterDisabled) {\r\n plugin.afterDisabled.call(editor)\r\n }\r\n\r\n });\r\n //向下兼容\r\n utils.each(UE.plugins, function (plugin) {\r\n plugin.call(editor);\r\n });\r\n },\r\n run: function (pluginName, editor) {\r\n var plugin = _plugins[pluginName];\r\n if (plugin) {\r\n plugin.exeFn.call(editor)\r\n }\r\n }\r\n }\r\n }();\r\n\r\n // core/keymap.js\r\n var keymap = UE.keymap = {\r\n 'Backspace': 8,\r\n 'Tab': 9,\r\n 'Enter': 13,\r\n\r\n 'Shift': 16,\r\n 'Control': 17,\r\n 'Alt': 18,\r\n 'CapsLock': 20,\r\n\r\n 'Esc': 27,\r\n\r\n 'Spacebar': 32,\r\n\r\n 'PageUp': 33,\r\n 'PageDown': 34,\r\n 'End': 35,\r\n 'Home': 36,\r\n\r\n 'Left': 37,\r\n 'Up': 38,\r\n 'Right': 39,\r\n 'Down': 40,\r\n\r\n 'Insert': 45,\r\n\r\n 'Del': 46,\r\n\r\n 'NumLock': 144,\r\n\r\n 'Cmd': 91,\r\n\r\n '=': 187,\r\n '-': 189,\r\n\r\n \"b\": 66,\r\n 'i': 73,\r\n //回退\r\n 'z': 90,\r\n 'y': 89,\r\n //粘贴\r\n 'v': 86,\r\n 'x': 88,\r\n\r\n 's': 83,\r\n\r\n 'n': 78\r\n };\r\n\r\n // core/localstorage.js\r\n //存储媒介封装\r\n var LocalStorage = UE.LocalStorage = (function () {\r\n\r\n var storage = window.localStorage || getUserData() || null,\r\n LOCAL_FILE = 'localStorage';\r\n\r\n return {\r\n\r\n saveLocalData: function (key, data) {\r\n\r\n if (storage && data) {\r\n storage.setItem(key, data);\r\n return true;\r\n }\r\n\r\n return false;\r\n\r\n },\r\n\r\n getLocalData: function (key) {\r\n\r\n if (storage) {\r\n return storage.getItem(key);\r\n }\r\n\r\n return null;\r\n\r\n },\r\n\r\n removeItem: function (key) {\r\n\r\n storage && storage.removeItem(key);\r\n\r\n }\r\n\r\n };\r\n\r\n function getUserData() {\r\n\r\n var container = document.createElement(\"div\");\r\n container.style.display = \"none\";\r\n\r\n if (!container.addBehavior) {\r\n return null;\r\n }\r\n\r\n container.addBehavior(\"#default#userdata\");\r\n\r\n return {\r\n\r\n getItem: function (key) {\r\n\r\n var result = null;\r\n\r\n try {\r\n document.body.appendChild(container);\r\n container.load(LOCAL_FILE);\r\n result = container.getAttribute(key);\r\n document.body.removeChild(container);\r\n } catch (e) {}\r\n\r\n return result;\r\n\r\n },\r\n\r\n setItem: function (key, value) {\r\n\r\n document.body.appendChild(container);\r\n container.setAttribute(key, value);\r\n container.save(LOCAL_FILE);\r\n document.body.removeChild(container);\r\n\r\n },\r\n\r\n //// 暂时没有用到\r\n //clear: function () {\r\n //\r\n // var expiresTime = new Date();\r\n // expiresTime.setFullYear(expiresTime.getFullYear() - 1);\r\n // document.body.appendChild(container);\r\n // container.expires = expiresTime.toUTCString();\r\n // container.save(LOCAL_FILE);\r\n // document.body.removeChild(container);\r\n //\r\n //},\r\n\r\n removeItem: function (key) {\r\n\r\n document.body.appendChild(container);\r\n container.removeAttribute(key);\r\n container.save(LOCAL_FILE);\r\n document.body.removeChild(container);\r\n\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n })();\r\n\r\n (function () {\r\n\r\n var ROOTKEY = 'ueditor_preference';\r\n\r\n UE.Editor.prototype.setPreferences = function (key, value) {\r\n var obj = {};\r\n if (utils.isString(key)) {\r\n obj[key] = value;\r\n } else {\r\n obj = key;\r\n }\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n utils.extend(data, obj);\r\n } else {\r\n data = obj;\r\n }\r\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\r\n };\r\n\r\n UE.Editor.prototype.getPreferences = function (key) {\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n return key ? data[key] : data\r\n }\r\n return null;\r\n };\r\n\r\n UE.Editor.prototype.removePreferences = function (key) {\r\n var data = LocalStorage.getLocalData(ROOTKEY);\r\n if (data && (data = utils.str2json(data))) {\r\n data[key] = undefined;\r\n delete data[key]\r\n }\r\n data && LocalStorage.saveLocalData(ROOTKEY, utils.json2str(data));\r\n };\r\n\r\n })();\r\n\r\n\r\n // plugins/defaultfilter.js\r\n ///import core\r\n ///plugin 编辑器默认的过滤转换机制\r\n\r\n UE.plugins['defaultfilter'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'allowDivTransToP': true,\r\n 'disabledTableInTable': true\r\n });\r\n //默认的过滤处理\r\n //进入编辑器的内容处理\r\n me.addInputRule(function (root) {\r\n var allowDivTransToP = this.options.allowDivTransToP;\r\n var val;\r\n\r\n function tdParent(node) {\r\n while (node && node.type == 'element') {\r\n if (node.tagName == 'td') {\r\n return true;\r\n }\r\n node = node.parentNode;\r\n }\r\n return false;\r\n }\r\n //进行默认的处理\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n if (!dtd.$cdata[node.tagName] && me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'style':\r\n case 'script':\r\n node.setAttr({\r\n cdata_tag: node.tagName,\r\n cdata_data: (node.innerHTML() || ''),\r\n '_ue_custom_node_': 'true'\r\n });\r\n node.tagName = 'div';\r\n node.innerHTML('');\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('href')) {\r\n node.setAttr('_href', val)\r\n }\r\n break;\r\n case 'img':\r\n //todo base64暂时去掉,后边做远程图片上传后,干掉这个\r\n if (val = node.getAttr('src')) {\r\n if (/^data:/.test(val)) {\r\n node.parentNode.removeChild(node);\r\n break;\r\n }\r\n }\r\n node.setAttr('_src', node.getAttr('src'));\r\n break;\r\n case 'span':\r\n if (browser.webkit && (val = node.getStyle('white-space'))) {\r\n if (/nowrap|normal/.test(val)) {\r\n node.setStyle('white-space', '');\r\n if (me.options.autoClearEmptyNode && utils.isEmptyObject(node.attrs)) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n }\r\n }\r\n val = node.getAttr('id');\r\n if (val && /^_baidu_bookmark_/i.test(val)) {\r\n node.parentNode.removeChild(node)\r\n }\r\n break;\r\n case 'p':\r\n if (val = node.getAttr('align')) {\r\n node.setAttr('align');\r\n node.setStyle('text-align', val)\r\n }\r\n //trace:3431\r\n // var cssStyle = node.getAttr('style');\r\n // if (cssStyle) {\r\n // cssStyle = cssStyle.replace(/(margin|padding)[^;]+/g, '');\r\n // node.setAttr('style', cssStyle)\r\n //\r\n // }\r\n //p标签不允许嵌套\r\n utils.each(node.children, function (n) {\r\n if (n.type == 'element' && n.tagName == 'p') {\r\n var next = n.nextSibling();\r\n node.parentNode.insertAfter(n, node);\r\n var last = n;\r\n while (next) {\r\n var tmp = next.nextSibling();\r\n node.parentNode.insertAfter(next, last);\r\n last = next;\r\n next = tmp;\r\n }\r\n return false;\r\n }\r\n });\r\n if (!node.firstChild()) {\r\n node.innerHTML(browser.ie ? ' ' : '
    ')\r\n }\r\n break;\r\n case 'div':\r\n if (node.getAttr('cdata_tag')) {\r\n break;\r\n }\r\n //针对代码这里不处理插入代码的div\r\n val = node.getAttr('class');\r\n if (val && /^line number\\d+/.test(val)) {\r\n break;\r\n }\r\n if (!allowDivTransToP) {\r\n break;\r\n }\r\n var tmpNode, p = UE.uNode.createElement('p');\r\n while (tmpNode = node.firstChild()) {\r\n if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {\r\n p.appendChild(tmpNode);\r\n } else {\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n p = UE.uNode.createElement('p');\r\n } else {\r\n node.parentNode.insertBefore(tmpNode, node);\r\n }\r\n }\r\n }\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n }\r\n node.parentNode.removeChild(node);\r\n break;\r\n case 'dl':\r\n node.tagName = 'ul';\r\n break;\r\n case 'dt':\r\n case 'dd':\r\n node.tagName = 'li';\r\n break;\r\n case 'li':\r\n var className = node.getAttr('class');\r\n if (!className || !/list\\-/.test(className)) {\r\n node.setAttr()\r\n }\r\n var tmpNodes = node.getNodesByTagName('ol ul');\r\n UE.utils.each(tmpNodes, function (n) {\r\n node.parentNode.insertAfter(n, node);\r\n });\r\n break;\r\n case 'td':\r\n case 'th':\r\n case 'caption':\r\n if (!node.children || !node.children.length) {\r\n node.appendChild(browser.ie11below ? UE.uNode.createText(' ') : UE.uNode.createElement('br'))\r\n }\r\n break;\r\n case 'table':\r\n if (me.options.disabledTableInTable && tdParent(node)) {\r\n node.parentNode.insertBefore(UE.uNode.createText(node.innerText()), node);\r\n node.parentNode.removeChild(node)\r\n }\r\n }\r\n\r\n }\r\n // if(node.type == 'comment'){\r\n // node.parentNode.removeChild(node);\r\n // }\r\n })\r\n\r\n });\r\n\r\n //从编辑器出去的内容处理\r\n me.addOutputRule(function (root) {\r\n\r\n var val;\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n\r\n if (me.options.autoClearEmptyNode && dtd.$inline[node.tagName] && !dtd.$empty[node.tagName] && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n\r\n if (!node.firstChild()) node.parentNode.removeChild(node);\r\n else if (node.tagName == 'span' && (!node.attrs || utils.isEmptyObject(node.attrs))) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return;\r\n }\r\n switch (node.tagName) {\r\n case 'div':\r\n if (val = node.getAttr('cdata_tag')) {\r\n node.tagName = val;\r\n node.appendChild(UE.uNode.createText(node.getAttr('cdata_data')));\r\n node.setAttr({\r\n cdata_tag: '',\r\n cdata_data: '',\r\n '_ue_custom_node_': ''\r\n });\r\n }\r\n break;\r\n case 'a':\r\n if (val = node.getAttr('_href')) {\r\n node.setAttr({\r\n 'href': utils.html(val),\r\n '_href': ''\r\n })\r\n }\r\n break;\r\n break;\r\n case 'span':\r\n val = node.getAttr('id');\r\n if (val && /^_baidu_bookmark_/i.test(val)) {\r\n node.parentNode.removeChild(node)\r\n }\r\n break;\r\n case 'img':\r\n if (val = node.getAttr('_src')) {\r\n node.setAttr({\r\n 'src': node.getAttr('_src'),\r\n '_src': ''\r\n })\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n })\r\n\r\n\r\n });\r\n };\r\n\r\n\r\n // plugins/inserthtml.js\r\n /**\r\n * 插入html字符串插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 插入html代码\r\n * @command inserthtml\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } html 插入的html字符串\r\n * @remaind 插入的标签内容是在当前的选区位置上插入,如果当前是闭合状态,那直接插入内容, 如果当前是选中状态,将先清除当前选中内容后,再做插入\r\n * @warning 注意:该命令会对当前选区的位置,对插入的内容进行过滤转换处理。 过滤的规则遵循html语意化的原则。\r\n * @example\r\n * ```javascript\r\n * //xxx[BB]xxx 当前选区为非闭合选区,选中BB这两个文本\r\n * //执行命令,插入CC\r\n * //插入后的效果 xxxCCxxx\r\n * //

    xx|xxx

    当前选区为闭合状态\r\n * //插入

    CC

    \r\n * //结果

    xx

    CC

    xxx

    \r\n * //

    xxxx

    |

    xxx

    当前选区在两个p标签之间\r\n * //插入 xxxx\r\n * //结果

    xxxx

    xxxx

    xxx

    \r\n * ```\r\n */\r\n\r\n UE.commands['inserthtml'] = {\r\n execCommand: function (command, html, notNeedFilter) {\r\n var me = this,\r\n range,\r\n div;\r\n if (!html) {\r\n return;\r\n }\r\n if (me.fireEvent('beforeinserthtml', html) === true) {\r\n return;\r\n }\r\n range = me.selection.getRange();\r\n div = range.document.createElement('div');\r\n div.style.display = 'inline';\r\n\r\n if (!notNeedFilter) {\r\n var root = UE.htmlparser(html);\r\n //如果给了过滤规则就先进行过滤\r\n if (me.options.filterRules) {\r\n UE.filterNode(root, me.options.filterRules);\r\n }\r\n //执行默认的处理\r\n me.filterInputRule(root);\r\n html = root.toHtml()\r\n }\r\n div.innerHTML = utils.trim(html);\r\n\r\n if (!range.collapsed) {\r\n var tmpNode = range.startContainer;\r\n if (domUtils.isFillChar(tmpNode)) {\r\n range.setStartBefore(tmpNode)\r\n }\r\n tmpNode = range.endContainer;\r\n if (domUtils.isFillChar(tmpNode)) {\r\n range.setEndAfter(tmpNode)\r\n }\r\n range.txtToElmBoundary();\r\n //结束边界可能放到了br的前边,要把br包含进来\r\n // x[xxx]
    \r\n if (range.endContainer && range.endContainer.nodeType == 1) {\r\n tmpNode = range.endContainer.childNodes[range.endOffset];\r\n if (tmpNode && domUtils.isBr(tmpNode)) {\r\n range.setEndAfter(tmpNode);\r\n }\r\n }\r\n if (range.startOffset == 0) {\r\n tmpNode = range.startContainer;\r\n if (domUtils.isBoundaryNode(tmpNode, 'firstChild')) {\r\n tmpNode = range.endContainer;\r\n if (range.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode, 'lastChild')) {\r\n me.body.innerHTML = '

    ' + (browser.ie ? '' : '
    ') + '

    ';\r\n range.setStart(me.body.firstChild, 0).collapse(true)\r\n\r\n }\r\n }\r\n }!range.collapsed && range.deleteContents();\r\n if (range.startContainer.nodeType == 1) {\r\n var child = range.startContainer.childNodes[range.startOffset],\r\n pre;\r\n if (child && domUtils.isBlockElm(child) && (pre = child.previousSibling) && domUtils.isBlockElm(pre)) {\r\n range.setEnd(pre, pre.childNodes.length).collapse();\r\n while (child.firstChild) {\r\n pre.appendChild(child.firstChild);\r\n }\r\n domUtils.remove(child);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n var child, parent, pre, tmp, hadBreak = 0,\r\n nextNode;\r\n //如果当前位置选中了fillchar要干掉,要不会产生空行\r\n if (range.inFillChar()) {\r\n child = range.startContainer;\r\n if (domUtils.isFillChar(child)) {\r\n range.setStartBefore(child).collapse(true);\r\n domUtils.remove(child);\r\n } else if (domUtils.isFillChar(child, true)) {\r\n child.nodeValue = child.nodeValue.replace(fillCharReg, '');\r\n range.startOffset--;\r\n range.collapsed && range.collapse(true)\r\n }\r\n }\r\n //列表单独处理\r\n var li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if (li) {\r\n var next, last;\r\n while (child = div.firstChild) {\r\n //针对hr单独处理一下先\r\n while (child && (child.nodeType == 3 || !domUtils.isBlockElm(child) || child.tagName == 'HR')) {\r\n next = child.nextSibling;\r\n range.insertNode(child).collapse();\r\n last = child;\r\n child = next;\r\n\r\n }\r\n if (child) {\r\n if (/^(ol|ul)$/i.test(child.tagName)) {\r\n while (child.firstChild) {\r\n last = child.firstChild;\r\n domUtils.insertAfter(li, child.firstChild);\r\n li = li.nextSibling;\r\n }\r\n domUtils.remove(child)\r\n } else {\r\n var tmpLi;\r\n next = child.nextSibling;\r\n tmpLi = me.document.createElement('li');\r\n domUtils.insertAfter(li, tmpLi);\r\n tmpLi.appendChild(child);\r\n last = child;\r\n child = next;\r\n li = tmpLi;\r\n }\r\n }\r\n }\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if (domUtils.isEmptyBlock(li)) {\r\n domUtils.remove(li)\r\n }\r\n if (last) {\r\n\r\n range.setStartAfter(last).collapse(true).select(true)\r\n }\r\n } else {\r\n while (child = div.firstChild) {\r\n if (hadBreak) {\r\n var p = me.document.createElement('p');\r\n while (child && (child.nodeType == 3 || !dtd.$block[child.tagName])) {\r\n nextNode = child.nextSibling;\r\n p.appendChild(child);\r\n child = nextNode;\r\n }\r\n if (p.firstChild) {\r\n\r\n child = p\r\n }\r\n }\r\n range.insertNode(child);\r\n nextNode = child.nextSibling;\r\n if (!hadBreak && child.nodeType == domUtils.NODE_ELEMENT && domUtils.isBlockElm(child)) {\r\n\r\n parent = domUtils.findParent(child, function (node) {\r\n return domUtils.isBlockElm(node);\r\n });\r\n if (parent && parent.tagName.toLowerCase() != 'body' && !(dtd[parent.tagName][child.nodeName] && child.parentNode === parent)) {\r\n if (!dtd[parent.tagName][child.nodeName]) {\r\n pre = parent;\r\n } else {\r\n tmp = child.parentNode;\r\n while (tmp !== parent) {\r\n pre = tmp;\r\n tmp = tmp.parentNode;\r\n\r\n }\r\n }\r\n\r\n\r\n domUtils.breakParent(child, pre || tmp);\r\n //去掉break后前一个多余的节点

    |<[p> ==>

    |

    \r\n var pre = child.previousSibling;\r\n domUtils.trimWhiteTextNode(pre);\r\n if (!pre.childNodes.length) {\r\n domUtils.remove(pre);\r\n }\r\n //trace:2012,在非ie的情况,切开后剩下的节点有可能不能点入光标添加br占位\r\n\r\n if (!browser.ie &&\r\n (next = child.nextSibling) &&\r\n domUtils.isBlockElm(next) &&\r\n next.lastChild &&\r\n !domUtils.isBr(next.lastChild)) {\r\n next.appendChild(me.document.createElement('br'));\r\n }\r\n hadBreak = 1;\r\n }\r\n }\r\n var next = child.nextSibling;\r\n if (!div.firstChild && next && domUtils.isBlockElm(next)) {\r\n\r\n range.setStart(next, 0).collapse(true);\r\n break;\r\n }\r\n range.setEndAfter(child).collapse();\r\n\r\n }\r\n\r\n child = range.startContainer;\r\n\r\n if (nextNode && domUtils.isBr(nextNode)) {\r\n domUtils.remove(nextNode)\r\n }\r\n //用chrome可能有空白展位符\r\n if (domUtils.isBlockElm(child) && domUtils.isEmptyNode(child)) {\r\n if (nextNode = child.nextSibling) {\r\n domUtils.remove(child);\r\n if (nextNode.nodeType == 1 && dtd.$block[nextNode.tagName]) {\r\n\r\n range.setStart(nextNode, 0).collapse(true).shrinkBoundary()\r\n }\r\n } else {\r\n\r\n try {\r\n child.innerHTML = browser.ie ? domUtils.fillChar : '
    ';\r\n } catch (e) {\r\n range.setStartBefore(child);\r\n domUtils.remove(child)\r\n }\r\n\r\n }\r\n\r\n }\r\n //加上true因为在删除表情等时会删两次,第一次是删的fillData\r\n try {\r\n range.select(true);\r\n } catch (e) {}\r\n\r\n }\r\n\r\n\r\n\r\n setTimeout(function () {\r\n range = me.selection.getRange();\r\n range.scrollToView(me.autoHeightEnabled, me.autoHeightEnabled ? domUtils.getXY(me.iframe).y : 0);\r\n me.fireEvent('afterinserthtml', html);\r\n }, 200);\r\n }\r\n };\r\n\r\n\r\n // plugins/autotypeset.js\r\n /**\r\n * 自动排版\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 对当前编辑器的内容执行自动排版, 排版的行为根据config配置文件里的“autotypeset”选项进行控制。\r\n * @command autotypeset\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'autotypeset' );\r\n * ```\r\n */\r\n\r\n UE.plugins['autotypeset'] = function () {\r\n\r\n this.setOpt({\r\n 'autotypeset': {\r\n mergeEmptyline: true, //合并空行\r\n removeClass: true, //去掉冗余的class\r\n removeEmptyline: false, //去掉空行\r\n textAlign: \"left\", //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版\r\n imageBlockLine: 'center', //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版\r\n pasteFilter: false, //根据规则过滤没事粘贴进来的内容\r\n clearFontSize: false, //去掉所有的内嵌字号,使用编辑器默认的字号\r\n clearFontFamily: false, //去掉所有的内嵌字体,使用编辑器默认的字体\r\n removeEmptyNode: false, // 去掉空节点\r\n //可以去掉的标签\r\n removeTagNames: utils.extend({\r\n div: 1\r\n }, dtd.$removeEmpty),\r\n indent: false, // 行首缩进\r\n indentValue: '2em', //行首缩进的大小\r\n bdc2sb: false,\r\n tobdc: false\r\n }\r\n });\r\n\r\n var me = this,\r\n opt = me.options.autotypeset,\r\n remainClass = {\r\n 'selectTdClass': 1,\r\n 'pagebreak': 1,\r\n 'anchorclass': 1\r\n },\r\n remainTag = {\r\n 'li': 1\r\n },\r\n tags = {\r\n div: 1,\r\n p: 1,\r\n //trace:2183 这些也认为是行\r\n blockquote: 1,\r\n center: 1,\r\n h1: 1,\r\n h2: 1,\r\n h3: 1,\r\n h4: 1,\r\n h5: 1,\r\n h6: 1,\r\n span: 1\r\n },\r\n highlightCont;\r\n //升级了版本,但配置项目里没有autotypeset\r\n if (!opt) {\r\n return;\r\n }\r\n\r\n readLocalOpts();\r\n\r\n function isLine(node, notEmpty) {\r\n if (!node || node.nodeType == 3)\r\n return 0;\r\n if (domUtils.isBr(node))\r\n return 1;\r\n if (node && node.parentNode && tags[node.tagName.toLowerCase()]) {\r\n if (highlightCont && highlightCont.contains(node) ||\r\n node.getAttribute('pagebreak')\r\n ) {\r\n return 0;\r\n }\r\n\r\n return notEmpty ? !domUtils.isEmptyBlock(node) : domUtils.isEmptyBlock(node, new RegExp('[\\\\s' + domUtils.fillChar +\r\n ']', 'g'));\r\n }\r\n }\r\n\r\n function removeNotAttributeSpan(node) {\r\n if (!node.style.cssText) {\r\n domUtils.removeAttributes(node, ['style']);\r\n if (node.tagName.toLowerCase() == 'span' && domUtils.hasNoAttributes(node)) {\r\n domUtils.remove(node, true);\r\n }\r\n }\r\n }\r\n\r\n function autotype(type, html) {\r\n\r\n var me = this,\r\n cont;\r\n if (html) {\r\n if (!opt.pasteFilter) {\r\n return;\r\n }\r\n cont = me.document.createElement('div');\r\n cont.innerHTML = html.html;\r\n } else {\r\n cont = me.document.body;\r\n }\r\n var nodes = domUtils.getElementsByTagName(cont, '*');\r\n\r\n // 行首缩进,段落方向,段间距,段内间距\r\n for (var i = 0, ci; ci = nodes[i++];) {\r\n\r\n if (me.fireEvent('excludeNodeinautotype', ci) === true) {\r\n continue;\r\n }\r\n //font-size\r\n if (opt.clearFontSize && ci.style.fontSize) {\r\n domUtils.removeStyle(ci, 'font-size');\r\n\r\n removeNotAttributeSpan(ci);\r\n\r\n }\r\n //font-family\r\n if (opt.clearFontFamily && ci.style.fontFamily) {\r\n domUtils.removeStyle(ci, 'font-family');\r\n removeNotAttributeSpan(ci);\r\n }\r\n\r\n if (isLine(ci)) {\r\n //合并空行\r\n if (opt.mergeEmptyline) {\r\n var next = ci.nextSibling,\r\n tmpNode, isBr = domUtils.isBr(ci);\r\n while (isLine(next)) {\r\n tmpNode = next;\r\n next = tmpNode.nextSibling;\r\n if (isBr && (!next || next && !domUtils.isBr(next))) {\r\n break;\r\n }\r\n domUtils.remove(tmpNode);\r\n }\r\n\r\n }\r\n //去掉空行,保留占位的空行\r\n if (opt.removeEmptyline && domUtils.inDoc(ci, cont) && !remainTag[ci.parentNode.tagName.toLowerCase()]) {\r\n if (domUtils.isBr(ci)) {\r\n next = ci.nextSibling;\r\n if (next && !domUtils.isBr(next)) {\r\n continue;\r\n }\r\n }\r\n domUtils.remove(ci);\r\n continue;\r\n\r\n }\r\n\r\n }\r\n if (isLine(ci, true) && ci.tagName != 'SPAN') {\r\n if (opt.indent) {\r\n ci.style.textIndent = opt.indentValue;\r\n }\r\n if (opt.textAlign) {\r\n ci.style.textAlign = opt.textAlign;\r\n }\r\n // if(opt.lineHeight)\r\n // ci.style.lineHeight = opt.lineHeight + 'cm';\r\n\r\n }\r\n\r\n //去掉class,保留的class不去掉\r\n if (opt.removeClass && ci.className && !remainClass[ci.className.toLowerCase()]) {\r\n\r\n if (highlightCont && highlightCont.contains(ci)) {\r\n continue;\r\n }\r\n domUtils.removeAttributes(ci, ['class']);\r\n }\r\n\r\n //表情不处理\r\n if (opt.imageBlockLine && ci.tagName.toLowerCase() == 'img' && !ci.getAttribute('emotion')) {\r\n if (html) {\r\n var img = ci;\r\n switch (opt.imageBlockLine) {\r\n case 'left':\r\n case 'right':\r\n case 'none':\r\n var pN = img.parentNode,\r\n tmpNode, pre, next;\r\n while (dtd.$inline[pN.tagName] || pN.tagName == 'A') {\r\n pN = pN.parentNode;\r\n }\r\n tmpNode = pN;\r\n if (tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode, 'text-align') == 'center') {\r\n if (!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node)\r\n }) == 1) {\r\n pre = tmpNode.previousSibling;\r\n next = tmpNode.nextSibling;\r\n if (pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)) {\r\n pre.appendChild(tmpNode.firstChild);\r\n while (next.firstChild) {\r\n pre.appendChild(next.firstChild);\r\n }\r\n domUtils.remove(tmpNode);\r\n domUtils.remove(next);\r\n } else {\r\n domUtils.setStyle(tmpNode, 'text-align', '');\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n domUtils.setStyle(img, 'float', opt.imageBlockLine);\r\n break;\r\n case 'center':\r\n if (me.queryCommandValue('imagefloat') != 'center') {\r\n pN = img.parentNode;\r\n domUtils.setStyle(img, 'float', 'none');\r\n tmpNode = img;\r\n while (pN && domUtils.getChildCount(pN, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node)\r\n }) == 1 &&\r\n (dtd.$inline[pN.tagName] || pN.tagName == 'A')) {\r\n tmpNode = pN;\r\n pN = pN.parentNode;\r\n }\r\n var pNode = me.document.createElement('p');\r\n domUtils.setAttributes(pNode, {\r\n\r\n style: 'text-align:center'\r\n });\r\n tmpNode.parentNode.insertBefore(pNode, tmpNode);\r\n pNode.appendChild(tmpNode);\r\n domUtils.setStyle(tmpNode, 'float', '');\r\n\r\n }\r\n\r\n\r\n }\r\n } else {\r\n var range = me.selection.getRange();\r\n range.selectNode(ci).select();\r\n me.execCommand('imagefloat', opt.imageBlockLine);\r\n }\r\n\r\n }\r\n\r\n //去掉冗余的标签\r\n if (opt.removeEmptyNode) {\r\n if (opt.removeTagNames[ci.tagName.toLowerCase()] && domUtils.hasNoAttributes(ci) && domUtils.isEmptyBlock(ci)) {\r\n domUtils.remove(ci);\r\n }\r\n }\r\n }\r\n if (opt.tobdc) {\r\n var root = UE.htmlparser(cont.innerHTML);\r\n root.traversal(function (node) {\r\n if (node.type == 'text') {\r\n node.data = ToDBC(node.data)\r\n }\r\n });\r\n cont.innerHTML = root.toHtml()\r\n }\r\n if (opt.bdc2sb) {\r\n var root = UE.htmlparser(cont.innerHTML);\r\n root.traversal(function (node) {\r\n if (node.type == 'text') {\r\n node.data = DBC2SB(node.data)\r\n }\r\n });\r\n cont.innerHTML = root.toHtml()\r\n }\r\n if (html) {\r\n html.html = cont.innerHTML;\r\n }\r\n }\r\n if (opt.pasteFilter) {\r\n me.addListener('beforepaste', autotype);\r\n }\r\n\r\n function DBC2SB(str) {\r\n var result = '';\r\n for (var i = 0; i < str.length; i++) {\r\n var code = str.charCodeAt(i); //获取当前字符的unicode编码\r\n if (code >= 65281 && code <= 65373) //在这个unicode编码范围中的是所有的英文字母已经各种字符\r\n {\r\n result += String.fromCharCode(str.charCodeAt(i) - 65248); //把全角字符的unicode编码转换为对应半角字符的unicode码\r\n } else if (code == 12288) //空格\r\n {\r\n result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);\r\n } else {\r\n result += str.charAt(i);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function ToDBC(txtstring) {\r\n txtstring = utils.html(txtstring);\r\n var tmp = \"\";\r\n var mark = \"\"; /*用于判断,如果是html尖括里的标记,则不进行全角的转换*/\r\n for (var i = 0; i < txtstring.length; i++) {\r\n if (txtstring.charCodeAt(i) == 32) {\r\n tmp = tmp + String.fromCharCode(12288);\r\n } else if (txtstring.charCodeAt(i) < 127) {\r\n tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248);\r\n } else {\r\n tmp += txtstring.charAt(i);\r\n }\r\n }\r\n return tmp;\r\n }\r\n\r\n function readLocalOpts() {\r\n var cookieOpt = me.getPreferences('autotypeset');\r\n utils.extend(me.options.autotypeset, cookieOpt);\r\n }\r\n\r\n me.commands['autotypeset'] = {\r\n execCommand: function () {\r\n me.removeListener('beforepaste', autotype);\r\n if (opt.pasteFilter) {\r\n me.addListener('beforepaste', autotype);\r\n }\r\n autotype.call(me)\r\n }\r\n\r\n };\r\n\r\n };\r\n\r\n\r\n\r\n // plugins/autosubmit.js\r\n /**\r\n * 快捷键提交\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 提交表单\r\n * @command autosubmit\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'autosubmit' );\r\n * ```\r\n */\r\n\r\n UE.plugin.register('autosubmit', function () {\r\n return {\r\n shortcutkey: {\r\n \"autosubmit\": \"ctrl+13\" //手动提交\r\n },\r\n commands: {\r\n 'autosubmit': {\r\n execCommand: function () {\r\n var me = this,\r\n form = domUtils.findParentByTagName(me.iframe, \"form\", false);\r\n if (form) {\r\n if (me.fireEvent(\"beforesubmit\") === false) {\r\n return;\r\n }\r\n me.sync();\r\n form.submit();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/background.js\r\n /**\r\n * 背景插件,为UEditor提供设置背景功能\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n UE.plugin.register('background', function () {\r\n var me = this,\r\n cssRuleId = 'editor_background',\r\n isSetColored,\r\n reg = new RegExp('body[\\\\s]*\\\\{(.+)\\\\}', 'i');\r\n\r\n function stringToObj(str) {\r\n var obj = {},\r\n styles = str.split(';');\r\n utils.each(styles, function (v) {\r\n var index = v.indexOf(':'),\r\n key = utils.trim(v.substr(0, index)).toLowerCase();\r\n key && (obj[key] = utils.trim(v.substr(index + 1) || ''));\r\n });\r\n return obj;\r\n }\r\n\r\n function setBackground(obj) {\r\n if (obj) {\r\n var styles = [];\r\n for (var name in obj) {\r\n if (obj.hasOwnProperty(name)) {\r\n styles.push(name + \":\" + obj[name] + '; ');\r\n }\r\n }\r\n utils.cssRule(cssRuleId, styles.length ? ('body{' + styles.join(\"\") + '}') : '', me.document);\r\n } else {\r\n utils.cssRule(cssRuleId, '', me.document)\r\n }\r\n }\r\n //重写editor.hasContent方法\r\n\r\n var orgFn = me.hasContents;\r\n me.hasContents = function () {\r\n if (me.queryCommandValue('background')) {\r\n return true\r\n }\r\n return orgFn.apply(me, arguments);\r\n };\r\n return {\r\n bindEvents: {\r\n 'getAllHtml': function (type, headHtml) {\r\n var body = this.body,\r\n su = domUtils.getComputedStyle(body, \"background-image\"),\r\n url = \"\";\r\n if (su.indexOf(me.options.imagePath) > 0) {\r\n url = su.substring(su.indexOf(me.options.imagePath), su.length - 1).replace(/\"|\\(|\\)/ig, \"\");\r\n } else {\r\n url = su != \"none\" ? su.replace(/url\\(\"?|\"?\\)/ig, \"\") : \"\";\r\n }\r\n var html = ' ';\r\n headHtml.push(html);\r\n },\r\n 'aftersetcontent': function () {\r\n if (isSetColored == false) setBackground();\r\n }\r\n },\r\n inputRule: function (root) {\r\n isSetColored = false;\r\n utils.each(root.getNodesByTagName('p'), function (p) {\r\n var styles = p.getAttr('data-background');\r\n if (styles) {\r\n isSetColored = true;\r\n setBackground(stringToObj(styles));\r\n p.parentNode.removeChild(p);\r\n }\r\n })\r\n },\r\n outputRule: function (root) {\r\n var me = this,\r\n styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\\n\\r]+/g, '').match(reg);\r\n if (styles) {\r\n root.appendChild(UE.uNode.createElement('


    '));\r\n }\r\n },\r\n commands: {\r\n 'background': {\r\n execCommand: function (cmd, obj) {\r\n setBackground(obj);\r\n },\r\n queryCommandValue: function () {\r\n var me = this,\r\n styles = (utils.cssRule(cssRuleId, me.document) || '').replace(/[\\n\\r]+/g, '').match(reg);\r\n return styles ? stringToObj(styles[1]) : null;\r\n },\r\n notNeedUndo: true\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/image.js\r\n /**\r\n * 图片插入、排版插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 图片对齐方式\r\n * @command imagefloat\r\n * @method execCommand\r\n * @remind 值center为独占一行居中\r\n * @param { String } cmd 命令字符串\r\n * @param { String } align 对齐方式,可传left、right、none、center\r\n * @remaind center表示图片独占一行\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'imagefloat', 'center' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 如果选区所在位置是图片区域\r\n * @command imagefloat\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回图片对齐方式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'imagefloat' );\r\n * ```\r\n */\r\n\r\n UE.commands['imagefloat'] = {\r\n execCommand: function (cmd, align) {\r\n var me = this,\r\n range = me.selection.getRange();\r\n if (!range.collapsed) {\r\n var img = range.getClosedNode();\r\n if (img && img.tagName == 'IMG') {\r\n switch (align) {\r\n case 'left':\r\n case 'right':\r\n case 'none':\r\n var pN = img.parentNode,\r\n tmpNode, pre, next;\r\n while (dtd.$inline[pN.tagName] || pN.tagName == 'A') {\r\n pN = pN.parentNode;\r\n }\r\n tmpNode = pN;\r\n if (tmpNode.tagName == 'P' && domUtils.getStyle(tmpNode, 'text-align') == 'center') {\r\n if (!domUtils.isBody(tmpNode) && domUtils.getChildCount(tmpNode, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\r\n }) == 1) {\r\n pre = tmpNode.previousSibling;\r\n next = tmpNode.nextSibling;\r\n if (pre && next && pre.nodeType == 1 && next.nodeType == 1 && pre.tagName == next.tagName && domUtils.isBlockElm(pre)) {\r\n pre.appendChild(tmpNode.firstChild);\r\n while (next.firstChild) {\r\n pre.appendChild(next.firstChild);\r\n }\r\n domUtils.remove(tmpNode);\r\n domUtils.remove(next);\r\n } else {\r\n domUtils.setStyle(tmpNode, 'text-align', '');\r\n }\r\n\r\n\r\n }\r\n\r\n range.selectNode(img).select();\r\n }\r\n domUtils.setStyle(img, 'float', align == 'none' ? '' : align);\r\n if (align == 'none') {\r\n domUtils.removeAttributes(img, 'align');\r\n }\r\n\r\n break;\r\n case 'center':\r\n if (me.queryCommandValue('imagefloat') != 'center') {\r\n pN = img.parentNode;\r\n domUtils.setStyle(img, 'float', '');\r\n domUtils.removeAttributes(img, 'align');\r\n tmpNode = img;\r\n while (pN && domUtils.getChildCount(pN, function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\r\n }) == 1 &&\r\n (dtd.$inline[pN.tagName] || pN.tagName == 'A')) {\r\n tmpNode = pN;\r\n pN = pN.parentNode;\r\n }\r\n range.setStartBefore(tmpNode).setCursor(false);\r\n pN = me.document.createElement('div');\r\n pN.appendChild(tmpNode);\r\n domUtils.setStyle(tmpNode, 'float', '');\r\n\r\n me.execCommand('insertHtml', '

    ' + pN.innerHTML + '

    ');\r\n\r\n tmpNode = me.document.getElementById('_img_parent_tmp');\r\n tmpNode.removeAttribute('id');\r\n tmpNode = tmpNode.firstChild;\r\n range.selectNode(tmpNode).select();\r\n //去掉后边多余的元素\r\n next = tmpNode.parentNode.nextSibling;\r\n if (next && domUtils.isEmptyNode(next)) {\r\n domUtils.remove(next);\r\n }\r\n\r\n }\r\n\r\n break;\r\n }\r\n\r\n }\r\n }\r\n },\r\n queryCommandValue: function () {\r\n var range = this.selection.getRange(),\r\n startNode, floatStyle;\r\n if (range.collapsed) {\r\n return 'none';\r\n }\r\n startNode = range.getClosedNode();\r\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\r\n floatStyle = domUtils.getComputedStyle(startNode, 'float') || startNode.getAttribute('align');\r\n\r\n if (floatStyle == 'none') {\r\n floatStyle = domUtils.getComputedStyle(startNode.parentNode, 'text-align') == 'center' ? 'center' : floatStyle;\r\n }\r\n return {\r\n left: 1,\r\n right: 1,\r\n center: 1\r\n } [floatStyle] ? floatStyle: 'none';\r\n }\r\n return 'none';\r\n\r\n\r\n },\r\n queryCommandState: function () {\r\n var range = this.selection.getRange(),\r\n startNode;\r\n\r\n if (range.collapsed) return -1;\r\n\r\n startNode = range.getClosedNode();\r\n if (startNode && startNode.nodeType == 1 && startNode.tagName == 'IMG') {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n };\r\n\r\n\r\n /**\r\n * 插入图片\r\n * @command insertimage\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } opt 属性键值对,这些属性都将被复制到当前插入图片\r\n * @remind 该命令第二个参数可接受一个图片配置项对象的数组,可以插入多张图片,\r\n * 此时数组的每一个元素都是一个Object类型的图片属性集合。\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertimage', {\r\n * src:'a/b/c.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * } );\r\n * ```\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertimage', [{\r\n * src:'a/b/c.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * },{\r\n * src:'a/b/d.jpg',\r\n * width:'100',\r\n * height:'100'\r\n * }] );\r\n * ```\r\n */\r\n\r\n UE.commands['insertimage'] = {\r\n execCommand: function (cmd, opt) {\r\n\r\n opt = utils.isArray(opt) ? opt : [opt];\r\n if (!opt.length) {\r\n return;\r\n }\r\n var me = this,\r\n range = me.selection.getRange(),\r\n img = range.getClosedNode();\r\n\r\n if (me.fireEvent('beforeinsertimage', opt) === true) {\r\n return;\r\n }\r\n\r\n if (img && /img/i.test(img.tagName) && (img.className != \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\") != -1) && !img.getAttribute(\"word_img\")) {\r\n var first = opt.shift();\r\n var floatStyle = first['floatStyle'];\r\n delete first['floatStyle'];\r\n //// img.style.border = (first.border||0) +\"px solid #000\";\r\n //// img.style.margin = (first.margin||0) +\"px\";\r\n // img.style.cssText += ';margin:' + (first.margin||0) +\"px;\" + 'border:' + (first.border||0) +\"px solid #000\";\r\n domUtils.setAttributes(img, first);\r\n me.execCommand('imagefloat', floatStyle);\r\n if (opt.length > 0) {\r\n range.setStartAfter(img).setCursor(false, true);\r\n me.execCommand('insertimage', opt);\r\n }\r\n\r\n } else {\r\n var html = [],\r\n str = '',\r\n ci;\r\n ci = opt[0];\r\n if (opt.length == 1) {\r\n str = '\"'';\r\n if (ci['floatStyle'] == 'center') {\r\n str = '

    ' + str + '

    ';\r\n }\r\n html.push(str);\r\n\r\n } else {\r\n for (var i = 0; ci = opt[i++];) {\r\n str = '

    ';\r\n html.push(str);\r\n }\r\n }\r\n\r\n\r\n me.execCommand('insertHtml', html.join(''));\r\n }\r\n\r\n me.fireEvent('afterinsertimage', opt)\r\n }\r\n };\r\n\r\n // plugins/justify.js\r\n /**\r\n * 段落格式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 段落对齐方式\r\n * @command justify\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } align 对齐方式:left => 居左,right => 居右,center => 居中,justify => 两端对齐\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'justify', 'center' );\r\n * ```\r\n */\r\n /**\r\n * 如果选区所在位置是段落区域,返回当前段落对齐方式\r\n * @command justify\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回段落对齐方式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'justify' );\r\n * ```\r\n */\r\n\r\n UE.plugins['justify'] = function () {\r\n var me = this,\r\n block = domUtils.isBlockElm,\r\n defaultValue = {\r\n left: 1,\r\n right: 1,\r\n center: 1,\r\n justify: 1\r\n },\r\n doJustify = function (range, style) {\r\n var bookmark = range.createBookmark(),\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);\r\n };\r\n\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n if (current.nodeType == 3 || !block(current)) {\r\n tmpRange.setStartBefore(current);\r\n while (current && current !== bookmark2.end && !block(current)) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !block(node);\r\n });\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n var common = tmpRange.getCommonAncestor();\r\n if (!domUtils.isBody(common) && block(common)) {\r\n domUtils.setStyles(common, utils.isString(style) ? {\r\n 'text-align': style\r\n } : style);\r\n current = common;\r\n } else {\r\n var p = range.document.createElement('p');\r\n domUtils.setStyles(p, utils.isString(style) ? {\r\n 'text-align': style\r\n } : style);\r\n var frag = tmpRange.extractContents();\r\n p.appendChild(frag);\r\n tmpRange.insertNode(p);\r\n current = p;\r\n }\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);\r\n };\r\n\r\n UE.commands['justify'] = {\r\n execCommand: function (cmdName, align) {\r\n var range = this.selection.getRange(),\r\n txt;\r\n\r\n //闭合时单独处理\r\n if (range.collapsed) {\r\n txt = this.document.createTextNode('p');\r\n range.insertNode(txt);\r\n }\r\n doJustify(range, align);\r\n if (txt) {\r\n range.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n\r\n range.select();\r\n\r\n\r\n return true;\r\n },\r\n queryCommandValue: function () {\r\n var startNode = this.selection.getStart(),\r\n value = domUtils.getComputedStyle(startNode, 'text-align');\r\n return defaultValue[value] ? value : 'left';\r\n },\r\n queryCommandState: function () {\r\n var start = this.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\", \"caption\"], true);\r\n\r\n return cell ? -1 : 0;\r\n }\r\n\r\n };\r\n };\r\n\r\n\r\n // plugins/font.js\r\n /**\r\n * 字体颜色,背景色,字号,字体,下划线,删除线\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 字体颜色\r\n * @command forecolor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 色值(必须十六进制)\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'forecolor', '#000' );\r\n * ```\r\n */\r\n /**\r\n * 返回选区字体颜色\r\n * @command forecolor\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体颜色\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'forecolor' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体背景颜色\r\n * @command backcolor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 色值(必须十六进制)\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'backcolor', '#000' );\r\n * ```\r\n */\r\n /**\r\n * 返回选区字体颜色\r\n * @command backcolor\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体背景颜色\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'backcolor' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体大小\r\n * @command fontsize\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 字体大小\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontsize', '14px' );\r\n * ```\r\n */\r\n /**\r\n * 返回选区字体大小\r\n * @command fontsize\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体大小\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'fontsize' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体样式\r\n * @command fontfamily\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 字体样式\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontfamily', '微软雅黑' );\r\n * ```\r\n */\r\n /**\r\n * 返回选区字体样式\r\n * @command fontfamily\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回字体样式\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'fontfamily' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体下划线,与删除线互斥\r\n * @command underline\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'underline' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体删除线,与下划线互斥\r\n * @command strikethrough\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'strikethrough' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 字体边框\r\n * @command fontborder\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'fontborder' );\r\n * ```\r\n */\r\n\r\n UE.plugins['font'] = function () {\r\n var me = this,\r\n fonts = {\r\n 'forecolor': 'color',\r\n 'backcolor': 'background-color',\r\n 'fontsize': 'font-size',\r\n 'fontfamily': 'font-family',\r\n 'underline': 'text-decoration',\r\n 'strikethrough': 'text-decoration',\r\n 'fontborder': 'border'\r\n },\r\n needCmd = {\r\n 'underline': 1,\r\n 'strikethrough': 1,\r\n 'fontborder': 1\r\n },\r\n needSetChild = {\r\n 'forecolor': 'color',\r\n 'backcolor': 'background-color',\r\n 'fontsize': 'font-size',\r\n 'fontfamily': 'font-family'\r\n\r\n };\r\n me.setOpt({\r\n 'fontfamily': [{\r\n name: 'songti',\r\n val: '宋体,SimSun'\r\n },\r\n {\r\n name: 'yahei',\r\n val: '微软雅黑,Microsoft YaHei'\r\n },\r\n {\r\n name: 'kaiti',\r\n val: '楷体,楷体_GB2312, SimKai'\r\n },\r\n {\r\n name: 'heiti',\r\n val: '黑体, SimHei'\r\n },\r\n {\r\n name: 'lishu',\r\n val: '隶书, SimLi'\r\n },\r\n {\r\n name: 'andaleMono',\r\n val: 'andale mono'\r\n },\r\n {\r\n name: 'arial',\r\n val: 'arial, helvetica,sans-serif'\r\n },\r\n {\r\n name: 'arialBlack',\r\n val: 'arial black,avant garde'\r\n },\r\n {\r\n name: 'comicSansMs',\r\n val: 'comic sans ms'\r\n },\r\n {\r\n name: 'impact',\r\n val: 'impact,chicago'\r\n },\r\n {\r\n name: 'timesNewRoman',\r\n val: 'times new roman'\r\n }\r\n ],\r\n 'fontsize': [10, 11, 12, 14, 16, 18, 20, 24, 36]\r\n });\r\n\r\n function mergeWithParent(node) {\r\n var parent;\r\n while (parent = node.parentNode) {\r\n if (parent.tagName == 'SPAN' && domUtils.getChildCount(parent, function (child) {\r\n return !domUtils.isBookmarkNode(child) && !domUtils.isBr(child)\r\n }) == 1) {\r\n parent.style.cssText += node.style.cssText;\r\n domUtils.remove(node, true);\r\n node = parent;\r\n\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n function mergeChild(rng, cmdName, value) {\r\n if (needSetChild[cmdName]) {\r\n rng.adjustmentBoundary();\r\n if (!rng.collapsed && rng.startContainer.nodeType == 1) {\r\n var start = rng.startContainer.childNodes[rng.startOffset];\r\n if (start && domUtils.isTagNode(start, 'span')) {\r\n var bk = rng.createBookmark();\r\n utils.each(domUtils.getElementsByTagName(start, 'span'), function (span) {\r\n if (!span.parentNode || domUtils.isBookmarkNode(span)) return;\r\n if (cmdName == 'backcolor' && domUtils.getComputedStyle(span, 'background-color').toLowerCase() === value) {\r\n return;\r\n }\r\n domUtils.removeStyle(span, needSetChild[cmdName]);\r\n if (span.style.cssText.replace(/^\\s+$/, '').length == 0) {\r\n domUtils.remove(span, true)\r\n }\r\n });\r\n rng.moveToBookmark(bk)\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n function mergesibling(rng, cmdName, value) {\r\n var collapsed = rng.collapsed,\r\n bk = rng.createBookmark(),\r\n common;\r\n if (collapsed) {\r\n common = bk.start.parentNode;\r\n while (dtd.$inline[common.tagName]) {\r\n common = common.parentNode;\r\n }\r\n } else {\r\n common = domUtils.getCommonAncestor(bk.start, bk.end);\r\n }\r\n utils.each(domUtils.getElementsByTagName(common, 'span'), function (span) {\r\n if (!span.parentNode || domUtils.isBookmarkNode(span)) return;\r\n if (/\\s*border\\s*:\\s*none;?\\s*/i.test(span.style.cssText)) {\r\n if (/^\\s*border\\s*:\\s*none;?\\s*$/.test(span.style.cssText)) {\r\n domUtils.remove(span, true);\r\n } else {\r\n domUtils.removeStyle(span, 'border');\r\n }\r\n return\r\n }\r\n if (/border/i.test(span.style.cssText) && span.parentNode.tagName == 'SPAN' && /border/i.test(span.parentNode.style.cssText)) {\r\n span.style.cssText = span.style.cssText.replace(/border[^:]*:[^;]+;?/gi, '');\r\n }\r\n if (!(cmdName == 'fontborder' && value == 'none')) {\r\n var next = span.nextSibling;\r\n while (next && next.nodeType == 1 && next.tagName == 'SPAN') {\r\n if (domUtils.isBookmarkNode(next) && cmdName == 'fontborder') {\r\n span.appendChild(next);\r\n next = span.nextSibling;\r\n continue;\r\n }\r\n if (next.style.cssText == span.style.cssText) {\r\n domUtils.moveChild(next, span);\r\n domUtils.remove(next);\r\n }\r\n if (span.nextSibling === next)\r\n break;\r\n next = span.nextSibling;\r\n }\r\n }\r\n\r\n\r\n mergeWithParent(span);\r\n if (browser.ie && browser.version > 8) {\r\n //拷贝父亲们的特别的属性,这里只做背景颜色的处理\r\n var parent = domUtils.findParent(span, function (n) {\r\n return n.tagName == 'SPAN' && /background-color/.test(n.style.cssText)\r\n });\r\n if (parent && !/background-color/.test(span.style.cssText)) {\r\n span.style.backgroundColor = parent.style.backgroundColor;\r\n }\r\n }\r\n\r\n });\r\n rng.moveToBookmark(bk);\r\n mergeChild(rng, cmdName, value)\r\n }\r\n\r\n me.addInputRule(function (root) {\r\n utils.each(root.getNodesByTagName('u s del font strike'), function (node) {\r\n if (node.tagName == 'font') {\r\n var cssStyle = [];\r\n for (var p in node.attrs) {\r\n switch (p) {\r\n case 'size':\r\n cssStyle.push('font-size:' +\r\n ({\r\n '1': '10',\r\n '2': '12',\r\n '3': '16',\r\n '4': '18',\r\n '5': '24',\r\n '6': '32',\r\n '7': '48'\r\n } [node.attrs[p]] || node.attrs[p]) + 'px');\r\n break;\r\n case 'color':\r\n cssStyle.push('color:' + node.attrs[p]);\r\n break;\r\n case 'face':\r\n cssStyle.push('font-family:' + node.attrs[p]);\r\n break;\r\n case 'style':\r\n cssStyle.push(node.attrs[p]);\r\n }\r\n }\r\n node.attrs = {\r\n 'style': cssStyle.join(';')\r\n };\r\n } else {\r\n var val = node.tagName == 'u' ? 'underline' : 'line-through';\r\n node.attrs = {\r\n 'style': (node.getAttr('style') || '') + 'text-decoration:' + val + ';'\r\n }\r\n }\r\n node.tagName = 'span';\r\n });\r\n // utils.each(root.getNodesByTagName('span'), function (node) {\r\n // var val;\r\n // if(val = node.getAttr('class')){\r\n // if(/fontstrikethrough/.test(val)){\r\n // node.setStyle('text-decoration','line-through');\r\n // if(node.attrs['class']){\r\n // node.attrs['class'] = node.attrs['class'].replace(/fontstrikethrough/,'');\r\n // }else{\r\n // node.setAttr('class')\r\n // }\r\n // }\r\n // if(/fontborder/.test(val)){\r\n // node.setStyle('border','1px solid #000');\r\n // if(node.attrs['class']){\r\n // node.attrs['class'] = node.attrs['class'].replace(/fontborder/,'');\r\n // }else{\r\n // node.setAttr('class')\r\n // }\r\n // }\r\n // }\r\n // });\r\n });\r\n // me.addOutputRule(function(root){\r\n // utils.each(root.getNodesByTagName('span'), function (node) {\r\n // var val;\r\n // if(val = node.getStyle('text-decoration')){\r\n // if(/line-through/.test(val)){\r\n // if(node.attrs['class']){\r\n // node.attrs['class'] += ' fontstrikethrough';\r\n // }else{\r\n // node.setAttr('class','fontstrikethrough')\r\n // }\r\n // }\r\n //\r\n // node.setStyle('text-decoration')\r\n // }\r\n // if(val = node.getStyle('border')){\r\n // if(/1px/.test(val) && /solid/.test(val)){\r\n // if(node.attrs['class']){\r\n // node.attrs['class'] += ' fontborder';\r\n //\r\n // }else{\r\n // node.setAttr('class','fontborder')\r\n // }\r\n // }\r\n // node.setStyle('border')\r\n //\r\n // }\r\n // });\r\n // });\r\n for (var p in fonts) {\r\n (function (cmd, style) {\r\n UE.commands[cmd] = {\r\n execCommand: function (cmdName, value) {\r\n value = value || (this.queryCommandState(cmdName) ? 'none' : cmdName == 'underline' ? 'underline' :\r\n cmdName == 'fontborder' ? '1px solid #000' :\r\n 'line-through');\r\n var me = this,\r\n range = this.selection.getRange(),\r\n text;\r\n\r\n if (value == 'default') {\r\n\r\n if (range.collapsed) {\r\n text = me.document.createTextNode('font');\r\n range.insertNode(text).select();\r\n\r\n }\r\n me.execCommand('removeFormat', 'span,a', style);\r\n if (text) {\r\n range.setStartBefore(text).collapse(true);\r\n domUtils.remove(text);\r\n }\r\n mergesibling(range, cmdName, value);\r\n range.select()\r\n } else {\r\n if (!range.collapsed) {\r\n if (needCmd[cmd] && me.queryCommandValue(cmd)) {\r\n me.execCommand('removeFormat', 'span,a', style);\r\n }\r\n range = me.selection.getRange();\r\n\r\n range.applyInlineStyle('span', {\r\n 'style': style + ':' + value\r\n });\r\n mergesibling(range, cmdName, value);\r\n range.select();\r\n } else {\r\n\r\n var span = domUtils.findParentByTagName(range.startContainer, 'span', true);\r\n text = me.document.createTextNode('font');\r\n if (span && !span.children.length && !span[browser.ie ? 'innerText' : 'textContent'].replace(fillCharReg, '').length) {\r\n //for ie hack when enter\r\n range.insertNode(text);\r\n if (needCmd[cmd]) {\r\n range.selectNode(text).select();\r\n me.execCommand('removeFormat', 'span,a', style, null);\r\n\r\n span = domUtils.findParentByTagName(text, 'span', true);\r\n range.setStartBefore(text);\r\n\r\n }\r\n span && (span.style.cssText += ';' + style + ':' + value);\r\n range.collapse(true).select();\r\n\r\n\r\n } else {\r\n range.insertNode(text);\r\n range.selectNode(text).select();\r\n span = range.document.createElement('span');\r\n\r\n if (needCmd[cmd]) {\r\n //a标签内的不处理跳过\r\n if (domUtils.findParentByTagName(text, 'a', true)) {\r\n range.setStartBefore(text).setCursor();\r\n domUtils.remove(text);\r\n return;\r\n }\r\n me.execCommand('removeFormat', 'span,a', style);\r\n }\r\n\r\n span.style.cssText = style + ':' + value;\r\n\r\n\r\n text.parentNode.insertBefore(span, text);\r\n //修复,span套span 但样式不继承的问题\r\n if (!browser.ie || browser.ie && browser.version == 9) {\r\n var spanParent = span.parentNode;\r\n while (!domUtils.isBlockElm(spanParent)) {\r\n if (spanParent.tagName == 'SPAN') {\r\n //opera合并style不会加入\";\"\r\n span.style.cssText = spanParent.style.cssText + \";\" + span.style.cssText;\r\n }\r\n spanParent = spanParent.parentNode;\r\n }\r\n }\r\n\r\n\r\n if (opera) {\r\n setTimeout(function () {\r\n range.setStart(span, 0).collapse(true);\r\n mergesibling(range, cmdName, value);\r\n range.select();\r\n });\r\n } else {\r\n range.setStart(span, 0).collapse(true);\r\n mergesibling(range, cmdName, value);\r\n range.select();\r\n }\r\n\r\n //trace:981\r\n //domUtils.mergeToParent(span)\r\n }\r\n domUtils.remove(text);\r\n }\r\n\r\n\r\n }\r\n return true;\r\n },\r\n queryCommandValue: function (cmdName) {\r\n var startNode = this.selection.getStart();\r\n\r\n //trace:946\r\n if (cmdName == 'underline' || cmdName == 'strikethrough') {\r\n var tmpNode = startNode,\r\n value;\r\n while (tmpNode && !domUtils.isBlockElm(tmpNode) && !domUtils.isBody(tmpNode)) {\r\n if (tmpNode.nodeType == 1) {\r\n value = domUtils.getComputedStyle(tmpNode, style);\r\n if (value != 'none') {\r\n return value;\r\n }\r\n }\r\n\r\n tmpNode = tmpNode.parentNode;\r\n }\r\n return 'none';\r\n }\r\n if (cmdName == 'fontborder') {\r\n var tmp = startNode,\r\n val;\r\n while (tmp && dtd.$inline[tmp.tagName]) {\r\n if (val = domUtils.getComputedStyle(tmp, 'border')) {\r\n\r\n if (/1px/.test(val) && /solid/.test(val)) {\r\n return val;\r\n }\r\n }\r\n tmp = tmp.parentNode;\r\n }\r\n return ''\r\n }\r\n\r\n if (cmdName == 'FontSize') {\r\n var styleVal = domUtils.getComputedStyle(startNode, style),\r\n tmp = /^([\\d\\.]+)(\\w+)$/.exec(styleVal);\r\n\r\n if (tmp) {\r\n\r\n return Math.floor(tmp[1]) + tmp[2];\r\n\r\n }\r\n\r\n return styleVal;\r\n\r\n }\r\n\r\n return domUtils.getComputedStyle(startNode, style);\r\n },\r\n queryCommandState: function (cmdName) {\r\n if (!needCmd[cmdName])\r\n return 0;\r\n var val = this.queryCommandValue(cmdName);\r\n if (cmdName == 'fontborder') {\r\n return /1px/.test(val) && /solid/.test(val)\r\n } else {\r\n return cmdName == 'underline' ? /underline/.test(val) : /line\\-through/.test(val);\r\n\r\n }\r\n\r\n }\r\n };\r\n })(p, fonts[p]);\r\n }\r\n };\r\n\r\n // plugins/link.js\r\n /**\r\n * 超链接\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 插入超链接\r\n * @command link\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } options 设置自定义属性,例如:url、title、target\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'link', '{\r\n * url:'ueditor.baidu.com',\r\n * title:'ueditor',\r\n * target:'_blank'\r\n * }' );\r\n * ```\r\n */\r\n /**\r\n * 返回当前选中的第一个超链接节点\r\n * @command link\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { Element } 超链接节点\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'link' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 取消超链接\r\n * @command unlink\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'unlink');\r\n * ```\r\n */\r\n\r\n UE.plugins['link'] = function () {\r\n function optimize(range) {\r\n var start = range.startContainer,\r\n end = range.endContainer;\r\n\r\n if (start = domUtils.findParentByTagName(start, 'a', true)) {\r\n range.setStartBefore(start);\r\n }\r\n if (end = domUtils.findParentByTagName(end, 'a', true)) {\r\n range.setEndAfter(end);\r\n }\r\n }\r\n\r\n\r\n UE.commands['unlink'] = {\r\n execCommand: function () {\r\n var range = this.selection.getRange(),\r\n bookmark;\r\n if (range.collapsed && !domUtils.findParentByTagName(range.startContainer, 'a', true)) {\r\n return;\r\n }\r\n bookmark = range.createBookmark();\r\n optimize(range);\r\n range.removeInlineStyle('a').moveToBookmark(bookmark).select();\r\n },\r\n queryCommandState: function () {\r\n return !this.highlight && this.queryCommandValue('link') ? 0 : -1;\r\n }\r\n\r\n };\r\n\r\n function doLink(range, opt, me) {\r\n var rngClone = range.cloneRange(),\r\n link = me.queryCommandValue('link');\r\n optimize(range = range.adjustmentBoundary());\r\n var start = range.startContainer;\r\n if (start.nodeType == 1 && link) {\r\n start = start.childNodes[range.startOffset];\r\n if (start && start.nodeType == 1 && start.tagName == 'A' && /^(?:https?|ftp|file)\\s*:\\s*\\/\\//.test(start[browser.ie ? 'innerText' : 'textContent'])) {\r\n start[browser.ie ? 'innerText' : 'textContent'] = utils.html(opt.textValue || opt.href);\r\n\r\n }\r\n }\r\n if (!rngClone.collapsed || link) {\r\n range.removeInlineStyle('a');\r\n rngClone = range.cloneRange();\r\n }\r\n\r\n if (rngClone.collapsed) {\r\n var a = range.document.createElement('a'),\r\n text = '';\r\n if (opt.textValue) {\r\n\r\n text = utils.html(opt.textValue);\r\n delete opt.textValue;\r\n } else {\r\n text = utils.html(opt.href);\r\n\r\n }\r\n domUtils.setAttributes(a, opt);\r\n start = domUtils.findParentByTagName(rngClone.startContainer, 'a', true);\r\n if (start && domUtils.isInNodeEndBoundary(rngClone, start)) {\r\n range.setStartAfter(start).collapse(true);\r\n\r\n }\r\n a[browser.ie ? 'innerText' : 'textContent'] = text;\r\n range.insertNode(a).selectNode(a);\r\n } else {\r\n range.applyInlineStyle('a', opt);\r\n\r\n }\r\n }\r\n UE.commands['link'] = {\r\n execCommand: function (cmdName, opt) {\r\n var range;\r\n opt._href && (opt._href = utils.unhtml(opt._href, /[<\">]/g));\r\n opt.href && (opt.href = utils.unhtml(opt.href, /[<\">]/g));\r\n opt.textValue && (opt.textValue = utils.unhtml(opt.textValue, /[<\">]/g));\r\n doLink(range = this.selection.getRange(), opt, this);\r\n //闭合都不加占位符,如果加了会在a后边多个占位符节点,导致a是图片背景组成的列表,出现空白问题\r\n range.collapse().select(true);\r\n\r\n },\r\n queryCommandValue: function () {\r\n var range = this.selection.getRange(),\r\n node;\r\n if (range.collapsed) {\r\n // node = this.selection.getStart();\r\n //在ie下getstart()取值偏上了\r\n node = range.startContainer;\r\n node = node.nodeType == 1 ? node : node.parentNode;\r\n\r\n if (node && (node = domUtils.findParentByTagName(node, 'a', true)) && !domUtils.isInNodeEndBoundary(range, node)) {\r\n\r\n return node;\r\n }\r\n } else {\r\n //trace:1111 如果是

    xx

    startContainer是p就会找不到a\r\n range.shrinkBoundary();\r\n var start = range.startContainer.nodeType == 3 || !range.startContainer.childNodes[range.startOffset] ? range.startContainer : range.startContainer.childNodes[range.startOffset],\r\n end = range.endContainer.nodeType == 3 || range.endOffset == 0 ? range.endContainer : range.endContainer.childNodes[range.endOffset - 1],\r\n common = range.getCommonAncestor();\r\n node = domUtils.findParentByTagName(common, 'a', true);\r\n if (!node && common.nodeType == 1) {\r\n\r\n var as = common.getElementsByTagName('a'),\r\n ps, pe;\r\n\r\n for (var i = 0, ci; ci = as[i++];) {\r\n ps = domUtils.getPosition(ci, start), pe = domUtils.getPosition(ci, end);\r\n if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) &&\r\n (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS)\r\n ) {\r\n node = ci;\r\n break;\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n\r\n },\r\n queryCommandState: function () {\r\n //判断如果是视频的话连接不可用\r\n //fix 853\r\n var img = this.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\") != -1);\r\n return flag ? -1 : 0;\r\n }\r\n };\r\n };\r\n\r\n // plugins/iframe.js\r\n ///import core\r\n ///import plugins\\inserthtml.js\r\n ///commands 插入框架\r\n ///commandsName InsertFrame\r\n ///commandsTitle 插入Iframe\r\n ///commandsDialog dialogs\\insertframe\r\n\r\n UE.plugins['insertframe'] = function () {\r\n var me = this;\r\n\r\n function deleteIframe() {\r\n me._iframe && delete me._iframe;\r\n }\r\n\r\n me.addListener(\"selectionchange\", function () {\r\n deleteIframe();\r\n });\r\n\r\n };\r\n\r\n\r\n\r\n // plugins/scrawl.js\r\n ///import core\r\n ///commands 涂鸦\r\n ///commandsName Scrawl\r\n ///commandsTitle 涂鸦\r\n ///commandsDialog dialogs\\scrawl\r\n UE.commands['scrawl'] = {\r\n queryCommandState: function () {\r\n return (browser.ie && browser.version <= 8) ? -1 : 0;\r\n }\r\n };\r\n\r\n\r\n // plugins/removeformat.js\r\n /**\r\n * 清除格式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 清除文字样式\r\n * @command removeformat\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param {String} tags 以逗号隔开的标签。如:strong\r\n * @param {String} style 样式如:color\r\n * @param {String} attrs 属性如:width\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'removeformat', 'strong','color','width' );\r\n * ```\r\n */\r\n\r\n UE.plugins['removeformat'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'removeFormatTags': 'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var',\r\n 'removeFormatAttributes': 'class,style,lang,width,height,align,hspace,valign'\r\n });\r\n me.commands['removeformat'] = {\r\n execCommand: function (cmdName, tags, style, attrs, notIncludeA) {\r\n\r\n var tagReg = new RegExp('^(?:' + (tags || this.options.removeFormatTags).replace(/,/g, '|') + ')$', 'i'),\r\n removeFormatAttributes = style ? [] : (attrs || this.options.removeFormatAttributes).split(','),\r\n range = new dom.Range(this.document),\r\n bookmark, node, parent,\r\n filter = function (node) {\r\n return node.nodeType == 1;\r\n };\r\n\r\n function isRedundantSpan(node) {\r\n if (node.nodeType == 3 || node.tagName.toLowerCase() != 'span') {\r\n return 0;\r\n }\r\n if (browser.ie) {\r\n //ie 下判断实效,所以只能简单用style来判断\r\n //return node.style.cssText == '' ? 1 : 0;\r\n var attrs = node.attributes;\r\n if (attrs.length) {\r\n for (var i = 0, l = attrs.length; i < l; i++) {\r\n if (attrs[i].specified) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n }\r\n }\r\n return !node.attributes.length;\r\n }\r\n\r\n function doRemove(range) {\r\n\r\n var bookmark1 = range.createBookmark();\r\n if (range.collapsed) {\r\n range.enlarge(true);\r\n }\r\n\r\n //不能把a标签切了\r\n if (!notIncludeA) {\r\n var aNode = domUtils.findParentByTagName(range.startContainer, 'a', true);\r\n if (aNode) {\r\n range.setStartBefore(aNode);\r\n }\r\n\r\n aNode = domUtils.findParentByTagName(range.endContainer, 'a', true);\r\n if (aNode) {\r\n range.setEndAfter(aNode);\r\n }\r\n\r\n }\r\n\r\n\r\n bookmark = range.createBookmark();\r\n\r\n node = bookmark.start;\r\n\r\n //切开始\r\n while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) {\r\n domUtils.breakParent(node, parent);\r\n\r\n domUtils.clearEmptySibling(node);\r\n }\r\n if (bookmark.end) {\r\n //切结束\r\n node = bookmark.end;\r\n while ((parent = node.parentNode) && !domUtils.isBlockElm(parent)) {\r\n domUtils.breakParent(node, parent);\r\n domUtils.clearEmptySibling(node);\r\n }\r\n\r\n //开始去除样式\r\n var current = domUtils.getNextDomNode(bookmark.start, false, filter),\r\n next;\r\n while (current) {\r\n if (current == bookmark.end) {\r\n break;\r\n }\r\n\r\n next = domUtils.getNextDomNode(current, true, filter);\r\n\r\n if (!dtd.$empty[current.tagName.toLowerCase()] && !domUtils.isBookmarkNode(current)) {\r\n if (tagReg.test(current.tagName)) {\r\n if (style) {\r\n domUtils.removeStyle(current, style);\r\n if (isRedundantSpan(current) && style != 'text-decoration') {\r\n domUtils.remove(current, true);\r\n }\r\n } else {\r\n domUtils.remove(current, true);\r\n }\r\n } else {\r\n //trace:939 不能把list上的样式去掉\r\n if (!dtd.$tableContent[current.tagName] && !dtd.$list[current.tagName]) {\r\n domUtils.removeAttributes(current, removeFormatAttributes);\r\n if (isRedundantSpan(current)) {\r\n domUtils.remove(current, true);\r\n }\r\n }\r\n\r\n }\r\n }\r\n current = next;\r\n }\r\n }\r\n //trace:1035\r\n //trace:1096 不能把td上的样式去掉,比如边框\r\n var pN = bookmark.start.parentNode;\r\n if (domUtils.isBlockElm(pN) && !dtd.$tableContent[pN.tagName] && !dtd.$list[pN.tagName]) {\r\n domUtils.removeAttributes(pN, removeFormatAttributes);\r\n }\r\n pN = bookmark.end.parentNode;\r\n if (bookmark.end && domUtils.isBlockElm(pN) && !dtd.$tableContent[pN.tagName] && !dtd.$list[pN.tagName]) {\r\n domUtils.removeAttributes(pN, removeFormatAttributes);\r\n }\r\n range.moveToBookmark(bookmark).moveToBookmark(bookmark1);\r\n //清除冗余的代码 \r\n var node = range.startContainer,\r\n tmp,\r\n collapsed = range.collapsed;\r\n while (node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]) {\r\n tmp = node.parentNode;\r\n range.setStartBefore(node);\r\n //trace:937\r\n //更新结束边界\r\n if (range.startContainer === range.endContainer) {\r\n range.endOffset--;\r\n }\r\n domUtils.remove(node);\r\n node = tmp;\r\n }\r\n\r\n if (!collapsed) {\r\n node = range.endContainer;\r\n while (node.nodeType == 1 && domUtils.isEmptyNode(node) && dtd.$removeEmpty[node.tagName]) {\r\n tmp = node.parentNode;\r\n range.setEndBefore(node);\r\n domUtils.remove(node);\r\n\r\n node = tmp;\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n range = this.selection.getRange();\r\n doRemove(range);\r\n range.select();\r\n\r\n }\r\n\r\n };\r\n\r\n };\r\n\r\n\r\n // plugins/blockquote.js\r\n /**\r\n * 添加引用\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 添加引用\r\n * @command blockquote\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'blockquote' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 添加引用\r\n * @command blockquote\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } attrs 节点属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'blockquote',{\r\n * style: \"color: red;\"\r\n * } );\r\n * ```\r\n */\r\n\r\n\r\n UE.plugins['blockquote'] = function () {\r\n var me = this;\r\n\r\n function getObj(editor) {\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(), 'blockquote');\r\n }\r\n me.commands['blockquote'] = {\r\n execCommand: function (cmdName, attrs) {\r\n var range = this.selection.getRange(),\r\n obj = getObj(this),\r\n blockquote = dtd.blockquote,\r\n bookmark = range.createBookmark();\r\n\r\n if (obj) {\r\n\r\n var start = range.startContainer,\r\n startBlock = domUtils.isBlockElm(start) ? start : domUtils.findParent(start, function (node) {\r\n return domUtils.isBlockElm(node)\r\n }),\r\n\r\n end = range.endContainer,\r\n endBlock = domUtils.isBlockElm(end) ? end : domUtils.findParent(end, function (node) {\r\n return domUtils.isBlockElm(node)\r\n });\r\n\r\n //处理一下li\r\n startBlock = domUtils.findParentByTagName(startBlock, 'li', true) || startBlock;\r\n endBlock = domUtils.findParentByTagName(endBlock, 'li', true) || endBlock;\r\n\r\n\r\n if (startBlock.tagName == 'LI' || startBlock.tagName == 'TD' || startBlock === obj || domUtils.isBody(startBlock)) {\r\n domUtils.remove(obj, true);\r\n } else {\r\n domUtils.breakParent(startBlock, obj);\r\n }\r\n\r\n if (startBlock !== endBlock) {\r\n obj = domUtils.findParentByTagName(endBlock, 'blockquote');\r\n if (obj) {\r\n if (endBlock.tagName == 'LI' || endBlock.tagName == 'TD' || domUtils.isBody(endBlock)) {\r\n obj.parentNode && domUtils.remove(obj, true);\r\n } else {\r\n domUtils.breakParent(endBlock, obj);\r\n }\r\n\r\n }\r\n }\r\n\r\n var blockquotes = domUtils.getElementsByTagName(this.document, 'blockquote');\r\n for (var i = 0, bi; bi = blockquotes[i++];) {\r\n if (!bi.childNodes.length) {\r\n domUtils.remove(bi);\r\n } else if (domUtils.getPosition(bi, startBlock) & domUtils.POSITION_FOLLOWING && domUtils.getPosition(bi, endBlock) & domUtils.POSITION_PRECEDING) {\r\n domUtils.remove(bi, true);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n } else {\r\n\r\n var tmpRange = range.cloneRange(),\r\n node = tmpRange.startContainer.nodeType == 1 ? tmpRange.startContainer : tmpRange.startContainer.parentNode,\r\n preNode = node,\r\n doEnd = 1;\r\n\r\n //调整开始\r\n while (1) {\r\n if (domUtils.isBody(node)) {\r\n if (preNode !== node) {\r\n if (range.collapsed) {\r\n tmpRange.selectNode(preNode);\r\n doEnd = 0;\r\n } else {\r\n tmpRange.setStartBefore(preNode);\r\n }\r\n } else {\r\n tmpRange.setStart(node, 0);\r\n }\r\n\r\n break;\r\n }\r\n if (!blockquote[node.tagName]) {\r\n if (range.collapsed) {\r\n tmpRange.selectNode(preNode);\r\n } else {\r\n tmpRange.setStartBefore(preNode);\r\n }\r\n break;\r\n }\r\n\r\n preNode = node;\r\n node = node.parentNode;\r\n }\r\n\r\n //调整结束\r\n if (doEnd) {\r\n preNode = node = node = tmpRange.endContainer.nodeType == 1 ? tmpRange.endContainer : tmpRange.endContainer.parentNode;\r\n while (1) {\r\n\r\n if (domUtils.isBody(node)) {\r\n if (preNode !== node) {\r\n\r\n tmpRange.setEndAfter(preNode);\r\n\r\n } else {\r\n tmpRange.setEnd(node, node.childNodes.length);\r\n }\r\n\r\n break;\r\n }\r\n if (!blockquote[node.tagName]) {\r\n tmpRange.setEndAfter(preNode);\r\n break;\r\n }\r\n\r\n preNode = node;\r\n node = node.parentNode;\r\n }\r\n\r\n }\r\n\r\n\r\n node = range.document.createElement('blockquote');\r\n domUtils.setAttributes(node, attrs);\r\n node.appendChild(tmpRange.extractContents());\r\n tmpRange.insertNode(node);\r\n //去除重复的\r\n var childs = domUtils.getElementsByTagName(node, 'blockquote');\r\n for (var i = 0, ci; ci = childs[i++];) {\r\n if (ci.parentNode) {\r\n domUtils.remove(ci, true);\r\n }\r\n }\r\n\r\n }\r\n range.moveToBookmark(bookmark).select();\r\n },\r\n queryCommandState: function () {\r\n return getObj(this) ? 1 : 0;\r\n }\r\n };\r\n };\r\n\r\n\r\n\r\n // plugins/convertcase.js\r\n /**\r\n * 大小写转换\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 把选区内文本变大写,与“tolowercase”命令互斥\r\n * @command touppercase\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'touppercase' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 把选区内文本变小写,与“touppercase”命令互斥\r\n * @command tolowercase\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'tolowercase' );\r\n * ```\r\n */\r\n UE.commands['touppercase'] =\r\n UE.commands['tolowercase'] = {\r\n execCommand: function (cmd) {\r\n var me = this;\r\n var rng = me.selection.getRange();\r\n if (rng.collapsed) {\r\n return rng;\r\n }\r\n var bk = rng.createBookmark(),\r\n bkEnd = bk.end,\r\n filterFn = function (node) {\r\n return !domUtils.isBr(node) && !domUtils.isWhitespace(node);\r\n },\r\n curNode = domUtils.getNextDomNode(bk.start, false, filterFn);\r\n while (curNode && (domUtils.getPosition(curNode, bkEnd) & domUtils.POSITION_PRECEDING)) {\r\n\r\n if (curNode.nodeType == 3) {\r\n curNode.nodeValue = curNode.nodeValue[cmd == 'touppercase' ? 'toUpperCase' : 'toLowerCase']();\r\n }\r\n curNode = domUtils.getNextDomNode(curNode, true, filterFn);\r\n if (curNode === bkEnd) {\r\n break;\r\n }\r\n\r\n }\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n\r\n\r\n\r\n // plugins/indent.js\r\n /**\r\n * 首行缩进\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 缩进\r\n * @command indent\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'indent' );\r\n * ```\r\n */\r\n UE.commands['indent'] = {\r\n execCommand: function () {\r\n var me = this,\r\n value = me.queryCommandState(\"indent\") ? \"0em\" : (me.options.indentValue || '2em');\r\n me.execCommand('Paragraph', 'p', {\r\n style: 'text-indent:' + value\r\n });\r\n },\r\n queryCommandState: function () {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), 'p h1 h2 h3 h4 h5 h6');\r\n return pN && pN.style.textIndent && parseInt(pN.style.textIndent) ? 1 : 0;\r\n }\r\n\r\n };\r\n\r\n\r\n // plugins/print.js\r\n /**\r\n * 打印\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 打印\r\n * @command print\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'print' );\r\n * ```\r\n */\r\n UE.commands['print'] = {\r\n execCommand: function () {\r\n this.window.print();\r\n },\r\n notNeedUndo: 1\r\n };\r\n\r\n\r\n\r\n // plugins/preview.js\r\n /**\r\n * 预览\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 预览\r\n * @command preview\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'preview' );\r\n * ```\r\n */\r\n UE.commands['preview'] = {\r\n execCommand: function () {\r\n var w = window.open('', '_blank', ''),\r\n d = w.document;\r\n d.open();\r\n d.write('
    ' + this.getContent(null, null, true) + '
    ');\r\n d.close();\r\n },\r\n notNeedUndo: 1\r\n };\r\n\r\n\r\n // plugins/selectall.js\r\n /**\r\n * 全选\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 选中所有内容\r\n * @command selectall\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'selectall' );\r\n * ```\r\n */\r\n UE.plugins['selectall'] = function () {\r\n var me = this;\r\n me.commands['selectall'] = {\r\n execCommand: function () {\r\n //去掉了原生的selectAll,因为会出现报错和当内容为空时,不能出现闭合状态的光标\r\n var me = this,\r\n body = me.body,\r\n range = me.selection.getRange();\r\n range.selectNodeContents(body);\r\n if (domUtils.isEmptyBlock(body)) {\r\n //opera不能自动合并到元素的里边,要手动处理一下\r\n if (browser.opera && body.firstChild && body.firstChild.nodeType == 1) {\r\n range.setStartAtFirst(body.firstChild);\r\n }\r\n range.collapse(true);\r\n }\r\n range.select(true);\r\n },\r\n notNeedUndo: 1\r\n };\r\n\r\n\r\n //快捷键\r\n me.addshortcutkey({\r\n \"selectAll\": \"ctrl+65\"\r\n });\r\n };\r\n\r\n\r\n // plugins/paragraph.js\r\n /**\r\n * 段落样式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 段落格式\r\n * @command paragraph\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param {String} style 标签值为:'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'\r\n * @param {Object} attrs 标签的属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'Paragraph','h1','{\r\n * class:'test'\r\n * }' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 返回选区内节点标签名\r\n * @command paragraph\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 节点标签名\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'Paragraph' );\r\n * ```\r\n */\r\n\r\n UE.plugins['paragraph'] = function () {\r\n var me = this,\r\n block = domUtils.isBlockElm,\r\n notExchange = ['TD', 'LI', 'PRE'],\r\n\r\n doParagraph = function (range, style, attrs, sourceCmdName) {\r\n var bookmark = range.createBookmark(),\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' && !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);\r\n },\r\n para;\r\n\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n if (current.nodeType == 3 || !block(current)) {\r\n tmpRange.setStartBefore(current);\r\n while (current && current !== bookmark2.end && !block(current)) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !block(node);\r\n });\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n\r\n para = range.document.createElement(style);\r\n if (attrs) {\r\n domUtils.setAttributes(para, attrs);\r\n if (sourceCmdName && sourceCmdName == 'customstyle' && attrs.style) {\r\n para.style.cssText = attrs.style;\r\n }\r\n }\r\n para.appendChild(tmpRange.extractContents());\r\n //需要内容占位\r\n if (domUtils.isEmptyNode(para)) {\r\n domUtils.fillChar(range.document, para);\r\n\r\n }\r\n\r\n tmpRange.insertNode(para);\r\n\r\n var parent = para.parentNode;\r\n //如果para上一级是一个block元素且不是body,td就删除它\r\n if (block(parent) && !domUtils.isBody(para.parentNode) && utils.indexOf(notExchange, parent.tagName) == -1) {\r\n //存储dir,style\r\n if (!(sourceCmdName && sourceCmdName == 'customstyle')) {\r\n parent.getAttribute('dir') && para.setAttribute('dir', parent.getAttribute('dir'));\r\n //trace:1070\r\n parent.style.cssText && (para.style.cssText = parent.style.cssText + ';' + para.style.cssText);\r\n //trace:1030\r\n parent.style.textAlign && !para.style.textAlign && (para.style.textAlign = parent.style.textAlign);\r\n parent.style.textIndent && !para.style.textIndent && (para.style.textIndent = parent.style.textIndent);\r\n parent.style.padding && !para.style.padding && (para.style.padding = parent.style.padding);\r\n }\r\n\r\n //trace:1706 选择的就是h1-6要删除\r\n if (attrs && /h\\d/i.test(parent.tagName) && !/h\\d/i.test(para.tagName)) {\r\n domUtils.setAttributes(parent, attrs);\r\n if (sourceCmdName && sourceCmdName == 'customstyle' && attrs.style) {\r\n parent.style.cssText = attrs.style;\r\n }\r\n domUtils.remove(para, true);\r\n para = parent;\r\n } else {\r\n domUtils.remove(para.parentNode, true);\r\n }\r\n\r\n }\r\n if (utils.indexOf(notExchange, parent.tagName) != -1) {\r\n current = parent;\r\n } else {\r\n current = para;\r\n }\r\n\r\n\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);\r\n };\r\n me.setOpt('paragraph', {\r\n 'p': '',\r\n 'h1': '',\r\n 'h2': '',\r\n 'h3': '',\r\n 'h4': '',\r\n 'h5': '',\r\n 'h6': ''\r\n });\r\n me.commands['paragraph'] = {\r\n execCommand: function (cmdName, style, attrs, sourceCmdName) {\r\n var range = this.selection.getRange();\r\n //闭合时单独处理\r\n if (range.collapsed) {\r\n var txt = this.document.createTextNode('p');\r\n range.insertNode(txt);\r\n //去掉冗余的fillchar\r\n if (browser.ie) {\r\n var node = txt.previousSibling;\r\n if (node && domUtils.isWhitespace(node)) {\r\n domUtils.remove(node);\r\n }\r\n node = txt.nextSibling;\r\n if (node && domUtils.isWhitespace(node)) {\r\n domUtils.remove(node);\r\n }\r\n }\r\n\r\n }\r\n range = doParagraph(range, style, attrs, sourceCmdName);\r\n if (txt) {\r\n range.setStartBefore(txt).collapse(true);\r\n pN = txt.parentNode;\r\n\r\n domUtils.remove(txt);\r\n\r\n if (domUtils.isBlockElm(pN) && domUtils.isEmptyNode(pN)) {\r\n domUtils.fillNode(this.document, pN);\r\n }\r\n\r\n }\r\n\r\n if (browser.gecko && range.collapsed && range.startContainer.nodeType == 1) {\r\n var child = range.startContainer.childNodes[range.startOffset];\r\n if (child && child.nodeType == 1 && child.tagName.toLowerCase() == style) {\r\n range.setStart(child, 0).collapse(true);\r\n }\r\n }\r\n //trace:1097 原来有true,原因忘了,但去了就不能清除多余的占位符了\r\n range.select();\r\n\r\n\r\n return true;\r\n },\r\n queryCommandValue: function () {\r\n var node = domUtils.filterNodeList(this.selection.getStartElementPath(), 'p h1 h2 h3 h4 h5 h6');\r\n return node ? node.tagName.toLowerCase() : '';\r\n }\r\n };\r\n };\r\n\r\n\r\n // plugins/directionality.js\r\n /**\r\n * 设置文字输入的方向的插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n (function () {\r\n var block = domUtils.isBlockElm,\r\n getObj = function (editor) {\r\n // var startNode = editor.selection.getStart(),\r\n // parents;\r\n // if ( startNode ) {\r\n // //查找所有的是block的父亲节点\r\n // parents = domUtils.findParents( startNode, true, block, true );\r\n // for ( var i = 0,ci; ci = parents[i++]; ) {\r\n // if ( ci.getAttribute( 'dir' ) ) {\r\n // return ci;\r\n // }\r\n // }\r\n // }\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(), function (n) {\r\n return n && n.nodeType == 1 && n.getAttribute('dir')\r\n });\r\n\r\n },\r\n doDirectionality = function (range, editor, forward) {\r\n\r\n var bookmark,\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? !domUtils.isBookmarkNode(node) : !domUtils.isWhitespace(node);\r\n },\r\n\r\n obj = getObj(editor);\r\n\r\n if (obj && range.collapsed) {\r\n obj.setAttribute('dir', forward);\r\n return range;\r\n }\r\n bookmark = range.createBookmark();\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode;\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n if (current.nodeType == 3 || !block(current)) {\r\n tmpRange.setStartBefore(current);\r\n while (current && current !== bookmark2.end && !block(current)) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !block(node);\r\n });\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n var common = tmpRange.getCommonAncestor();\r\n if (!domUtils.isBody(common) && block(common)) {\r\n //遍历到了block节点\r\n common.setAttribute('dir', forward);\r\n current = common;\r\n } else {\r\n //没有遍历到,添加一个block节点\r\n var p = range.document.createElement('p');\r\n p.setAttribute('dir', forward);\r\n var frag = tmpRange.extractContents();\r\n p.appendChild(frag);\r\n tmpRange.insertNode(p);\r\n current = p;\r\n }\r\n\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n return range.moveToBookmark(bookmark2).moveToBookmark(bookmark);\r\n };\r\n\r\n /**\r\n * 文字输入方向\r\n * @command directionality\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @param { String } forward 传入'ltr'表示从左向右输入,传入'rtl'表示从右向左输入\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'directionality', 'ltr');\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前选区的文字输入方向\r\n * @command directionality\r\n * @method queryCommandValue\r\n * @param { String } cmdName 命令字符串\r\n * @return { String } 返回'ltr'表示从左向右输入,返回'rtl'表示从右向左输入\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'directionality');\r\n * ```\r\n */\r\n UE.commands['directionality'] = {\r\n execCommand: function (cmdName, forward) {\r\n var range = this.selection.getRange();\r\n //闭合时单独处理\r\n if (range.collapsed) {\r\n var txt = this.document.createTextNode('d');\r\n range.insertNode(txt);\r\n }\r\n doDirectionality(range, this, forward);\r\n if (txt) {\r\n range.setStartBefore(txt).collapse(true);\r\n domUtils.remove(txt);\r\n }\r\n\r\n range.select();\r\n return true;\r\n },\r\n queryCommandValue: function () {\r\n var node = getObj(this);\r\n return node ? node.getAttribute('dir') : 'ltr';\r\n }\r\n };\r\n })();\r\n\r\n\r\n\r\n // plugins/horizontal.js\r\n /**\r\n * 插入分割线插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 插入分割线\r\n * @command horizontal\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'horizontal' );\r\n * ```\r\n */\r\n UE.plugins['horizontal'] = function () {\r\n var me = this;\r\n me.commands['horizontal'] = {\r\n execCommand: function (cmdName) {\r\n var me = this;\r\n if (me.queryCommandState(cmdName) !== -1) {\r\n me.execCommand('insertHtml', '
    ');\r\n var range = me.selection.getRange(),\r\n start = range.startContainer;\r\n if (start.nodeType == 1 && !start.childNodes[range.startOffset]) {\r\n\r\n var tmp;\r\n if (tmp = start.childNodes[range.startOffset - 1]) {\r\n if (tmp.nodeType == 1 && tmp.tagName == 'HR') {\r\n if (me.options.enterTag == 'p') {\r\n tmp = me.document.createElement('p');\r\n range.insertNode(tmp);\r\n range.setStart(tmp, 0).setCursor();\r\n\r\n } else {\r\n tmp = me.document.createElement('br');\r\n range.insertNode(tmp);\r\n range.setStartBefore(tmp).setCursor();\r\n }\r\n }\r\n }\r\n\r\n }\r\n return true;\r\n }\r\n\r\n },\r\n //边界在table里不能加分隔线\r\n queryCommandState: function () {\r\n return domUtils.filterNodeList(this.selection.getStartElementPath(), 'table') ? -1 : 0;\r\n }\r\n };\r\n // me.addListener('delkeyup',function(){\r\n // var rng = this.selection.getRange();\r\n // if(browser.ie && browser.version > 8){\r\n // rng.txtToElmBoundary(true);\r\n // if(domUtils.isStartInblock(rng)){\r\n // var tmpNode = rng.startContainer;\r\n // var pre = tmpNode.previousSibling;\r\n // if(pre && domUtils.isTagNode(pre,'hr')){\r\n // domUtils.remove(pre);\r\n // rng.select();\r\n // return;\r\n // }\r\n // }\r\n // }\r\n // if(domUtils.isBody(rng.startContainer)){\r\n // var hr = rng.startContainer.childNodes[rng.startOffset -1];\r\n // if(hr && hr.nodeName == 'HR'){\r\n // var next = hr.nextSibling;\r\n // if(next){\r\n // rng.setStart(next,0)\r\n // }else if(hr.previousSibling){\r\n // rng.setStartAtLast(hr.previousSibling)\r\n // }else{\r\n // var p = this.document.createElement('p');\r\n // hr.parentNode.insertBefore(p,hr);\r\n // domUtils.fillNode(this.document,p);\r\n // rng.setStart(p,0);\r\n // }\r\n // domUtils.remove(hr);\r\n // rng.setCursor(false,true);\r\n // }\r\n // }\r\n // })\r\n me.addListener('delkeydown', function (name, evt) {\r\n var rng = this.selection.getRange();\r\n rng.txtToElmBoundary(true);\r\n if (domUtils.isStartInblock(rng)) {\r\n var tmpNode = rng.startContainer;\r\n var pre = tmpNode.previousSibling;\r\n if (pre && domUtils.isTagNode(pre, 'hr')) {\r\n domUtils.remove(pre);\r\n rng.select();\r\n domUtils.preventDefault(evt);\r\n return true;\r\n\r\n }\r\n }\r\n\r\n })\r\n };\r\n\r\n\r\n\r\n // plugins/time.js\r\n /**\r\n * 插入时间和日期\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 插入时间,默认格式:12:59:59\r\n * @command time\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'time');\r\n * ```\r\n */\r\n\r\n /**\r\n * 插入日期,默认格式:2013-08-30\r\n * @command date\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'date');\r\n * ```\r\n */\r\n UE.commands['time'] = UE.commands[\"date\"] = {\r\n execCommand: function (cmd, format) {\r\n var date = new Date;\r\n\r\n function formatTime(date, format) {\r\n var hh = ('0' + date.getHours()).slice(-2),\r\n ii = ('0' + date.getMinutes()).slice(-2),\r\n ss = ('0' + date.getSeconds()).slice(-2);\r\n format = format || 'hh:ii:ss';\r\n return format.replace(/hh/ig, hh).replace(/ii/ig, ii).replace(/ss/ig, ss);\r\n }\r\n\r\n function formatDate(date, format) {\r\n var yyyy = ('000' + date.getFullYear()).slice(-4),\r\n yy = yyyy.slice(-2),\r\n mm = ('0' + (date.getMonth() + 1)).slice(-2),\r\n dd = ('0' + date.getDate()).slice(-2);\r\n format = format || 'yyyy-mm-dd';\r\n return format.replace(/yyyy/ig, yyyy).replace(/yy/ig, yy).replace(/mm/ig, mm).replace(/dd/ig, dd);\r\n }\r\n\r\n this.execCommand('insertHtml', cmd == \"time\" ? formatTime(date, format) : formatDate(date, format));\r\n }\r\n };\r\n\r\n\r\n // plugins/rowspacing.js\r\n /**\r\n * 段前段后间距插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 设置段间距\r\n * @command rowspacing\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } value 段间距的值,以px为单位\r\n * @param { String } dir 间距位置,top或bottom,分别表示段前和段后\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'rowspacing', '10', 'top' );\r\n * ```\r\n */\r\n\r\n UE.plugins['rowspacing'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'rowspacingtop': ['5', '10', '15', '20', '25'],\r\n 'rowspacingbottom': ['5', '10', '15', '20', '25']\r\n\r\n });\r\n me.commands['rowspacing'] = {\r\n execCommand: function (cmdName, value, dir) {\r\n this.execCommand('paragraph', 'p', {\r\n style: 'margin-' + dir + ':' + value + 'px'\r\n });\r\n return true;\r\n },\r\n queryCommandValue: function (cmdName, dir) {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), function (node) {\r\n return domUtils.isBlockElm(node)\r\n }),\r\n value;\r\n //trace:1026\r\n if (pN) {\r\n value = domUtils.getComputedStyle(pN, 'margin-' + dir).replace(/[^\\d]/g, '');\r\n return !value ? 0 : value;\r\n }\r\n return 0;\r\n\r\n }\r\n };\r\n };\r\n\r\n\r\n\r\n\r\n // plugins/lineheight.js\r\n /**\r\n * 设置行内间距\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n UE.plugins['lineheight'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'lineheight': ['1', '1.5', '1.75', '2', '3', '4', '5']\r\n });\r\n\r\n /**\r\n * 行距\r\n * @command lineheight\r\n * @method execCommand\r\n * @param { String } cmdName 命令字符串\r\n * @param { String } value 传入的行高值, 该值是当前字体的倍数, 例如: 1.5, 1.75\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'lineheight', 1.5);\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容的行高大小\r\n * @command lineheight\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回当前行高大小\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'lineheight' );\r\n * ```\r\n */\r\n\r\n me.commands['lineheight'] = {\r\n execCommand: function (cmdName, value) {\r\n this.execCommand('paragraph', 'p', {\r\n style: 'line-height:' + (value == \"1\" ? \"normal\" : value + 'em')\r\n });\r\n return true;\r\n },\r\n queryCommandValue: function () {\r\n var pN = domUtils.filterNodeList(this.selection.getStartElementPath(), function (node) {\r\n return domUtils.isBlockElm(node)\r\n });\r\n if (pN) {\r\n var value = domUtils.getComputedStyle(pN, 'line-height');\r\n return value == 'normal' ? 1 : value.replace(/[^\\d.]*/ig, \"\");\r\n }\r\n }\r\n };\r\n };\r\n\r\n\r\n\r\n\r\n // plugins/insertcode.js\r\n /**\r\n * 插入代码插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n UE.plugins['insertcode'] = function () {\r\n var me = this;\r\n me.ready(function () {\r\n utils.cssRule('pre', 'pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}',\r\n me.document)\r\n });\r\n me.setOpt('insertcode', {\r\n 'as3': 'ActionScript3',\r\n 'bash': 'Bash/Shell',\r\n 'cpp': 'C/C++',\r\n 'css': 'Css',\r\n 'cf': 'CodeFunction',\r\n 'c#': 'C#',\r\n 'delphi': 'Delphi',\r\n 'diff': 'Diff',\r\n 'erlang': 'Erlang',\r\n 'groovy': 'Groovy',\r\n 'html': 'Html',\r\n 'java': 'Java',\r\n 'jfx': 'JavaFx',\r\n 'js': 'Javascript',\r\n 'pl': 'Perl',\r\n 'php': 'Php',\r\n 'plain': 'Plain Text',\r\n 'ps': 'PowerShell',\r\n 'python': 'Python',\r\n 'ruby': 'Ruby',\r\n 'scala': 'Scala',\r\n 'sql': 'Sql',\r\n 'vb': 'Vb',\r\n 'xml': 'Xml'\r\n });\r\n\r\n /**\r\n * 插入代码\r\n * @command insertcode\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } lang 插入代码的语言\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertcode', 'javascript' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 如果选区所在位置是插入插入代码区域,返回代码的语言\r\n * @command insertcode\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回代码的语言\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertcode' );\r\n * ```\r\n */\r\n\r\n me.commands['insertcode'] = {\r\n execCommand: function (cmd, lang) {\r\n var me = this,\r\n rng = me.selection.getRange(),\r\n pre = domUtils.findParentByTagName(rng.startContainer, 'pre', true);\r\n if (pre) {\r\n pre.className = 'brush:' + lang + ';toolbar:false;';\r\n } else {\r\n var code = '';\r\n if (rng.collapsed) {\r\n code = browser.ie && browser.ie11below ? (browser.version <= 8 ? ' ' : '') : '
    ';\r\n } else {\r\n var frag = rng.extractContents();\r\n var div = me.document.createElement('div');\r\n div.appendChild(frag);\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(div.innerHTML.replace(/[\\r\\t]/g, '')), me.options.filterTxtRules).children, function (node) {\r\n if (browser.ie && browser.ie11below && browser.version > 8) {\r\n\r\n if (node.type == 'element') {\r\n if (node.tagName == 'br') {\r\n code += '\\n'\r\n } else if (!dtd.$empty[node.tagName]) {\r\n utils.each(node.children, function (cn) {\r\n if (cn.type == 'element') {\r\n if (cn.tagName == 'br') {\r\n code += '\\n'\r\n } else if (!dtd.$empty[node.tagName]) {\r\n code += cn.innerText();\r\n }\r\n } else {\r\n code += cn.data\r\n }\r\n })\r\n if (!/\\n$/.test(code)) {\r\n code += '\\n';\r\n }\r\n }\r\n } else {\r\n code += node.data + '\\n'\r\n }\r\n if (!node.nextSibling() && /\\n$/.test(code)) {\r\n code = code.replace(/\\n$/, '');\r\n }\r\n } else {\r\n if (browser.ie && browser.ie11below) {\r\n\r\n if (node.type == 'element') {\r\n if (node.tagName == 'br') {\r\n code += '
    '\r\n } else if (!dtd.$empty[node.tagName]) {\r\n utils.each(node.children, function (cn) {\r\n if (cn.type == 'element') {\r\n if (cn.tagName == 'br') {\r\n code += '
    '\r\n } else if (!dtd.$empty[node.tagName]) {\r\n code += cn.innerText();\r\n }\r\n } else {\r\n code += cn.data\r\n }\r\n });\r\n if (!/br>$/.test(code)) {\r\n code += '
    ';\r\n }\r\n }\r\n } else {\r\n code += node.data + '
    '\r\n }\r\n if (!node.nextSibling() && /
    $/.test(code)) {\r\n code = code.replace(/
    $/, '');\r\n }\r\n\r\n } else {\r\n code += (node.type == 'element' ? (dtd.$empty[node.tagName] ? '' : node.innerText()) : node.data);\r\n if (!/br\\/?\\s*>$/.test(code)) {\r\n if (!node.nextSibling())\r\n return;\r\n code += '
    '\r\n }\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n me.execCommand('inserthtml', '
    ' + code + '
    ', true);\r\n\r\n pre = me.document.getElementById('coder');\r\n domUtils.removeAttributes(pre, 'id');\r\n var tmpNode = pre.previousSibling;\r\n\r\n if (tmpNode && (tmpNode.nodeType == 3 && tmpNode.nodeValue.length == 1 && browser.ie && browser.version == 6 || domUtils.isEmptyBlock(tmpNode))) {\r\n\r\n domUtils.remove(tmpNode)\r\n }\r\n var rng = me.selection.getRange();\r\n if (domUtils.isEmptyBlock(pre)) {\r\n rng.setStart(pre, 0).setCursor(false, true)\r\n } else {\r\n rng.selectNodeContents(pre).select()\r\n }\r\n }\r\n\r\n\r\n\r\n },\r\n queryCommandValue: function () {\r\n var path = this.selection.getStartElementPath();\r\n var lang = '';\r\n utils.each(path, function (node) {\r\n if (node.nodeName == 'PRE') {\r\n var match = node.className.match(/brush:([^;]+)/);\r\n lang = match && match[1] ? match[1] : '';\r\n return false;\r\n }\r\n });\r\n return lang;\r\n }\r\n };\r\n\r\n me.addInputRule(function (root) {\r\n utils.each(root.getNodesByTagName('pre'), function (pre) {\r\n var brs = pre.getNodesByTagName('br');\r\n if (brs.length) {\r\n browser.ie && browser.ie11below && browser.version > 8 && utils.each(brs, function (br) {\r\n var txt = UE.uNode.createText('\\n');\r\n br.parentNode.insertBefore(txt, br);\r\n br.parentNode.removeChild(br);\r\n });\r\n return;\r\n }\r\n if (browser.ie && browser.ie11below && browser.version > 8)\r\n return;\r\n var code = pre.innerText().split(/\\n/);\r\n pre.innerHTML('');\r\n utils.each(code, function (c) {\r\n if (c.length) {\r\n pre.appendChild(UE.uNode.createText(c));\r\n }\r\n pre.appendChild(UE.uNode.createElement('br'))\r\n })\r\n })\r\n });\r\n me.addOutputRule(function (root) {\r\n utils.each(root.getNodesByTagName('pre'), function (pre) {\r\n var code = '';\r\n utils.each(pre.children, function (n) {\r\n if (n.type == 'text') {\r\n //在ie下文本内容有可能末尾带有\\n要去掉\r\n //trace:3396\r\n code += n.data.replace(/[ ]/g, ' ').replace(/\\n$/, '');\r\n } else {\r\n if (n.tagName == 'br') {\r\n code += '\\n'\r\n } else {\r\n code += (!dtd.$empty[n.tagName] ? '' : n.innerText());\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n pre.innerText(code.replace(/( |\\n)+$/, ''))\r\n })\r\n });\r\n //不需要判断highlight的command列表\r\n me.notNeedCodeQuery = {\r\n help: 1,\r\n undo: 1,\r\n redo: 1,\r\n source: 1,\r\n print: 1,\r\n searchreplace: 1,\r\n fullscreen: 1,\r\n preview: 1,\r\n insertparagraph: 1,\r\n elementpath: 1,\r\n insertcode: 1,\r\n inserthtml: 1,\r\n selectall: 1\r\n };\r\n //将queyCommamndState重置\r\n var orgQuery = me.queryCommandState;\r\n me.queryCommandState = function (cmd) {\r\n var me = this;\r\n\r\n if (!me.notNeedCodeQuery[cmd.toLowerCase()] && me.selection && me.queryCommandValue('insertcode')) {\r\n return -1;\r\n }\r\n return UE.Editor.prototype.queryCommandState.apply(this, arguments)\r\n };\r\n me.addListener('beforeenterkeydown', function () {\r\n var rng = me.selection.getRange();\r\n var pre = domUtils.findParentByTagName(rng.startContainer, 'pre', true);\r\n if (pre) {\r\n me.fireEvent('saveScene');\r\n if (!rng.collapsed) {\r\n rng.deleteContents();\r\n }\r\n if (!browser.ie || browser.ie9above) {\r\n var tmpNode = me.document.createElement('br'),\r\n pre;\r\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true);\r\n var next = tmpNode.nextSibling;\r\n if (!next && (!browser.ie || browser.version > 10)) {\r\n rng.insertNode(tmpNode.cloneNode(false));\r\n } else {\r\n rng.setStartAfter(tmpNode);\r\n }\r\n pre = tmpNode.previousSibling;\r\n var tmp;\r\n while (pre) {\r\n tmp = pre;\r\n pre = pre.previousSibling;\r\n if (!pre || pre.nodeName == 'BR') {\r\n pre = tmp;\r\n break;\r\n }\r\n }\r\n if (pre) {\r\n var str = '';\r\n while (pre && pre.nodeName != 'BR' && new RegExp('^[\\\\s' + domUtils.fillChar + ']*$').test(pre.nodeValue)) {\r\n str += pre.nodeValue;\r\n pre = pre.nextSibling;\r\n }\r\n if (pre.nodeName != 'BR') {\r\n var match = pre.nodeValue.match(new RegExp('^([\\\\s' + domUtils.fillChar + ']+)'));\r\n if (match && match[1]) {\r\n str += match[1]\r\n }\r\n\r\n }\r\n if (str) {\r\n str = me.document.createTextNode(str);\r\n rng.insertNode(str).setStartAfter(str);\r\n }\r\n }\r\n rng.collapse(true).select(true);\r\n } else {\r\n if (browser.version > 8) {\r\n\r\n var txt = me.document.createTextNode('\\n');\r\n var start = rng.startContainer;\r\n if (rng.startOffset == 0) {\r\n var preNode = start.previousSibling;\r\n if (preNode) {\r\n rng.insertNode(txt);\r\n var fillchar = me.document.createTextNode(' ');\r\n rng.setStartAfter(txt).insertNode(fillchar).setStart(fillchar, 0).collapse(true).select(true)\r\n }\r\n } else {\r\n rng.insertNode(txt).setStartAfter(txt);\r\n var fillchar = me.document.createTextNode(' ');\r\n start = rng.startContainer.childNodes[rng.startOffset];\r\n if (start && !/^\\n/.test(start.nodeValue)) {\r\n rng.setStartBefore(txt)\r\n }\r\n rng.insertNode(fillchar).setStart(fillchar, 0).collapse(true).select(true)\r\n }\r\n\r\n } else {\r\n var tmpNode = me.document.createElement('br');\r\n rng.insertNode(tmpNode);\r\n rng.insertNode(me.document.createTextNode(domUtils.fillChar));\r\n rng.setStartAfter(tmpNode);\r\n pre = tmpNode.previousSibling;\r\n var tmp;\r\n while (pre) {\r\n tmp = pre;\r\n pre = pre.previousSibling;\r\n if (!pre || pre.nodeName == 'BR') {\r\n pre = tmp;\r\n break;\r\n }\r\n }\r\n if (pre) {\r\n var str = '';\r\n while (pre && pre.nodeName != 'BR' && new RegExp('^[ ' + domUtils.fillChar + ']*$').test(pre.nodeValue)) {\r\n str += pre.nodeValue;\r\n pre = pre.nextSibling;\r\n }\r\n if (pre.nodeName != 'BR') {\r\n var match = pre.nodeValue.match(new RegExp('^([ ' + domUtils.fillChar + ']+)'));\r\n if (match && match[1]) {\r\n str += match[1]\r\n }\r\n\r\n }\r\n\r\n str = me.document.createTextNode(str);\r\n rng.insertNode(str).setStartAfter(str);\r\n }\r\n rng.collapse(true).select();\r\n }\r\n\r\n\r\n }\r\n me.fireEvent('saveScene');\r\n return true;\r\n }\r\n\r\n\r\n });\r\n\r\n me.addListener('tabkeydown', function (cmd, evt) {\r\n var rng = me.selection.getRange();\r\n var pre = domUtils.findParentByTagName(rng.startContainer, 'pre', true);\r\n if (pre) {\r\n me.fireEvent('saveScene');\r\n if (evt.shiftKey) {\r\n\r\n } else {\r\n if (!rng.collapsed) {\r\n var bk = rng.createBookmark();\r\n var start = bk.start.previousSibling;\r\n\r\n while (start) {\r\n if (pre.firstChild === start && !domUtils.isBr(start)) {\r\n pre.insertBefore(me.document.createTextNode(' '), start);\r\n\r\n break;\r\n }\r\n if (domUtils.isBr(start)) {\r\n pre.insertBefore(me.document.createTextNode(' '), start.nextSibling);\r\n\r\n break;\r\n }\r\n start = start.previousSibling;\r\n }\r\n var end = bk.end;\r\n start = bk.start.nextSibling;\r\n if (pre.firstChild === bk.start) {\r\n pre.insertBefore(me.document.createTextNode(' '), start.nextSibling)\r\n\r\n }\r\n while (start && start !== end) {\r\n if (domUtils.isBr(start) && start.nextSibling) {\r\n if (start.nextSibling === end) {\r\n break;\r\n }\r\n pre.insertBefore(me.document.createTextNode(' '), start.nextSibling)\r\n }\r\n\r\n start = start.nextSibling;\r\n }\r\n rng.moveToBookmark(bk).select();\r\n } else {\r\n var tmpNode = me.document.createTextNode(' ');\r\n rng.insertNode(tmpNode).setStartAfter(tmpNode).collapse(true).select(true);\r\n }\r\n }\r\n\r\n\r\n me.fireEvent('saveScene');\r\n return true;\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n me.addListener('beforeinserthtml', function (evtName, html) {\r\n var me = this,\r\n rng = me.selection.getRange(),\r\n pre = domUtils.findParentByTagName(rng.startContainer, 'pre', true);\r\n if (pre) {\r\n if (!rng.collapsed) {\r\n rng.deleteContents()\r\n }\r\n var htmlstr = '';\r\n if (browser.ie && browser.version > 8) {\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules).children, function (node) {\r\n if (node.type == 'element') {\r\n if (node.tagName == 'br') {\r\n htmlstr += '\\n'\r\n } else if (!dtd.$empty[node.tagName]) {\r\n utils.each(node.children, function (cn) {\r\n if (cn.type == 'element') {\r\n if (cn.tagName == 'br') {\r\n htmlstr += '\\n'\r\n } else if (!dtd.$empty[node.tagName]) {\r\n htmlstr += cn.innerText();\r\n }\r\n } else {\r\n htmlstr += cn.data\r\n }\r\n })\r\n if (!/\\n$/.test(htmlstr)) {\r\n htmlstr += '\\n';\r\n }\r\n }\r\n } else {\r\n htmlstr += node.data + '\\n'\r\n }\r\n if (!node.nextSibling() && /\\n$/.test(htmlstr)) {\r\n htmlstr = htmlstr.replace(/\\n$/, '');\r\n }\r\n });\r\n var tmpNode = me.document.createTextNode(utils.html(htmlstr.replace(/ /g, ' ')));\r\n rng.insertNode(tmpNode).selectNode(tmpNode).select();\r\n } else {\r\n var frag = me.document.createDocumentFragment();\r\n\r\n utils.each(UE.filterNode(UE.htmlparser(html), me.options.filterTxtRules).children, function (node) {\r\n if (node.type == 'element') {\r\n if (node.tagName == 'br') {\r\n frag.appendChild(me.document.createElement('br'))\r\n } else if (!dtd.$empty[node.tagName]) {\r\n utils.each(node.children, function (cn) {\r\n if (cn.type == 'element') {\r\n if (cn.tagName == 'br') {\r\n\r\n frag.appendChild(me.document.createElement('br'))\r\n } else if (!dtd.$empty[node.tagName]) {\r\n frag.appendChild(me.document.createTextNode(utils.html(cn.innerText().replace(/ /g, ' '))));\r\n\r\n }\r\n } else {\r\n frag.appendChild(me.document.createTextNode(utils.html(cn.data.replace(/ /g, ' '))));\r\n\r\n }\r\n })\r\n if (frag.lastChild.nodeName != 'BR') {\r\n frag.appendChild(me.document.createElement('br'))\r\n }\r\n }\r\n } else {\r\n frag.appendChild(me.document.createTextNode(utils.html(node.data.replace(/ /g, ' '))));\r\n }\r\n if (!node.nextSibling() && frag.lastChild.nodeName == 'BR') {\r\n frag.removeChild(frag.lastChild)\r\n }\r\n\r\n\r\n });\r\n rng.insertNode(frag).select();\r\n\r\n }\r\n\r\n return true;\r\n }\r\n });\r\n //方向键的处理\r\n me.addListener('keydown', function (cmd, evt) {\r\n var me = this,\r\n keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 40) {\r\n var rng = me.selection.getRange(),\r\n pre, start = rng.startContainer;\r\n if (rng.collapsed && (pre = domUtils.findParentByTagName(rng.startContainer, 'pre', true)) && !pre.nextSibling) {\r\n var last = pre.lastChild\r\n while (last && last.nodeName == 'BR') {\r\n last = last.previousSibling;\r\n }\r\n if (last === start || rng.startContainer === pre && rng.startOffset == pre.childNodes.length) {\r\n me.execCommand('insertparagraph');\r\n domUtils.preventDefault(evt)\r\n }\r\n\r\n }\r\n }\r\n });\r\n //trace:3395\r\n me.addListener('delkeydown', function (type, evt) {\r\n var rng = this.selection.getRange();\r\n rng.txtToElmBoundary(true);\r\n var start = rng.startContainer;\r\n if (domUtils.isTagNode(start, 'pre') && rng.collapsed && domUtils.isStartInblock(rng)) {\r\n var p = me.document.createElement('p');\r\n domUtils.fillNode(me.document, p);\r\n start.parentNode.insertBefore(p, start);\r\n domUtils.remove(start);\r\n rng.setStart(p, 0).setCursor(false, true);\r\n domUtils.preventDefault(evt);\r\n return true;\r\n }\r\n })\r\n };\r\n\r\n\r\n // plugins/cleardoc.js\r\n /**\r\n * 清空文档插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 清空文档\r\n * @command cleardoc\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor 是编辑器实例\r\n * editor.execCommand('cleardoc');\r\n * ```\r\n */\r\n\r\n UE.commands['cleardoc'] = {\r\n execCommand: function (cmdName) {\r\n var me = this,\r\n enterTag = me.options.enterTag,\r\n range = me.selection.getRange();\r\n if (enterTag == \"br\") {\r\n me.body.innerHTML = \"
    \";\r\n range.setStart(me.body, 0).setCursor();\r\n } else {\r\n me.body.innerHTML = \"

    \" + (ie ? \"\" : \"
    \") + \"

    \";\r\n range.setStart(me.body.firstChild, 0).setCursor(false, true);\r\n }\r\n setTimeout(function () {\r\n me.fireEvent(\"clearDoc\");\r\n }, 0);\r\n\r\n }\r\n };\r\n\r\n\r\n\r\n // plugins/anchor.js\r\n /**\r\n * 锚点插件,为UEditor提供插入锚点支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n UE.plugin.register('anchor', function () {\r\n\r\n return {\r\n bindEvents: {\r\n 'ready': function () {\r\n utils.cssRule('anchor',\r\n '.anchorclass{background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/anchor.gif\\') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}',\r\n this.document);\r\n }\r\n },\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (a) {\r\n var val;\r\n if (val = a.getAttr('anchorname')) {\r\n a.tagName = 'a';\r\n a.setAttr({\r\n anchorname: '',\r\n name: val,\r\n 'class': ''\r\n })\r\n }\r\n })\r\n },\r\n inputRule: function (root) {\r\n utils.each(root.getNodesByTagName('a'), function (a) {\r\n var val;\r\n if ((val = a.getAttr('name')) && !a.getAttr('href')) {\r\n a.tagName = 'img';\r\n a.setAttr({\r\n anchorname: a.getAttr('name'),\r\n 'class': 'anchorclass'\r\n });\r\n a.setAttr('name')\r\n\r\n }\r\n })\r\n\r\n },\r\n commands: {\r\n /**\r\n * 插入锚点\r\n * @command anchor\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } name 锚点名称字符串\r\n * @example\r\n * ```javascript\r\n * //editor 是编辑器实例\r\n * editor.execCommand('anchor', 'anchor1');\r\n * ```\r\n */\r\n 'anchor': {\r\n execCommand: function (cmd, name) {\r\n var range = this.selection.getRange(),\r\n img = range.getClosedNode();\r\n if (img && img.getAttribute('anchorname')) {\r\n if (name) {\r\n img.setAttribute('anchorname', name);\r\n } else {\r\n range.setStartBefore(img).setCursor();\r\n domUtils.remove(img);\r\n }\r\n } else {\r\n if (name) {\r\n //只在选区的开始插入\r\n var anchor = this.document.createElement('img');\r\n range.collapse(true);\r\n domUtils.setAttributes(anchor, {\r\n 'anchorname': name,\r\n 'class': 'anchorclass'\r\n });\r\n range.insertNode(anchor).setStartAfter(anchor).setCursor(false, true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n // plugins/wordcount.js\r\n ///import core\r\n ///commands 字数统计\r\n ///commandsName WordCount,wordCount\r\n ///commandsTitle 字数统计\r\n /*\r\n * Created by JetBrains WebStorm.\r\n * User: taoqili\r\n * Date: 11-9-7\r\n * Time: 下午8:18\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n\r\n UE.plugins['wordcount'] = function () {\r\n var me = this;\r\n me.setOpt('wordCount', true);\r\n me.addListener('contentchange', function () {\r\n me.fireEvent('wordcount');\r\n });\r\n var timer;\r\n me.addListener('ready', function () {\r\n var me = this;\r\n domUtils.on(me.body, \"keyup\", function (evt) {\r\n var code = evt.keyCode || evt.which,\r\n //忽略的按键,ctr,alt,shift,方向键\r\n ignores = {\r\n \"16\": 1,\r\n \"18\": 1,\r\n \"20\": 1,\r\n \"37\": 1,\r\n \"38\": 1,\r\n \"39\": 1,\r\n \"40\": 1\r\n };\r\n if (code in ignores) return;\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n me.fireEvent('wordcount');\r\n }, 200)\r\n })\r\n });\r\n };\r\n\r\n\r\n // plugins/pagebreak.js\r\n /**\r\n * 分页功能插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n UE.plugins['pagebreak'] = function () {\r\n var me = this,\r\n notBreakTags = ['td'];\r\n me.setOpt('pageBreakTag', '_ueditor_page_break_tag_');\r\n\r\n function fillNode(node) {\r\n if (domUtils.isEmptyBlock(node)) {\r\n var firstChild = node.firstChild,\r\n tmpNode;\r\n\r\n while (firstChild && firstChild.nodeType == 1 && domUtils.isEmptyBlock(firstChild)) {\r\n tmpNode = firstChild;\r\n firstChild = firstChild.firstChild;\r\n }!tmpNode && (tmpNode = node);\r\n domUtils.fillNode(me.document, tmpNode);\r\n }\r\n }\r\n //分页符样式添加\r\n\r\n me.ready(function () {\r\n utils.cssRule('pagebreak', '.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}', me.document);\r\n });\r\n\r\n function isHr(node) {\r\n return node && node.nodeType == 1 && node.tagName == 'HR' && node.className == 'pagebreak';\r\n }\r\n me.addInputRule(function (root) {\r\n root.traversal(function (node) {\r\n if (node.type == 'text' && node.data == me.options.pageBreakTag) {\r\n var hr = UE.uNode.createElement('
    ');\r\n node.parentNode.insertBefore(hr, node);\r\n node.parentNode.removeChild(node)\r\n }\r\n })\r\n });\r\n me.addOutputRule(function (node) {\r\n utils.each(node.getNodesByTagName('hr'), function (n) {\r\n if (n.getAttr('class') == 'pagebreak') {\r\n var txt = UE.uNode.createText(me.options.pageBreakTag);\r\n n.parentNode.insertBefore(txt, n);\r\n n.parentNode.removeChild(n);\r\n }\r\n })\r\n\r\n });\r\n\r\n /**\r\n * 插入分页符\r\n * @command pagebreak\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @remind 在表格中插入分页符会把表格切分成两部分\r\n * @remind 获取编辑器内的数据时, 编辑器会把分页符转换成“_ueditor_page_break_tag_”字符串,\r\n * 以便于提交数据到服务器端后处理分页。\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'pagebreak'); //插入一个hr标签,带有样式类名pagebreak\r\n * ```\r\n */\r\n\r\n me.commands['pagebreak'] = {\r\n execCommand: function () {\r\n var range = me.selection.getRange(),\r\n hr = me.document.createElement('hr');\r\n domUtils.setAttributes(hr, {\r\n 'class': 'pagebreak',\r\n noshade: \"noshade\",\r\n size: \"5\"\r\n });\r\n domUtils.unSelectable(hr);\r\n //table单独处理\r\n var node = domUtils.findParentByTagName(range.startContainer, notBreakTags, true),\r\n\r\n parents = [],\r\n pN;\r\n if (node) {\r\n switch (node.tagName) {\r\n case 'TD':\r\n pN = node.parentNode;\r\n if (!pN.previousSibling) {\r\n var table = domUtils.findParentByTagName(pN, 'table');\r\n // var tableWrapDiv = table.parentNode;\r\n // if(tableWrapDiv && tableWrapDiv.nodeType == 1\r\n // && tableWrapDiv.tagName == 'DIV'\r\n // && tableWrapDiv.getAttribute('dropdrag')\r\n // ){\r\n // domUtils.remove(tableWrapDiv,true);\r\n // }\r\n table.parentNode.insertBefore(hr, table);\r\n parents = domUtils.findParents(hr, true);\r\n\r\n } else {\r\n pN.parentNode.insertBefore(hr, pN);\r\n parents = domUtils.findParents(hr);\r\n\r\n }\r\n pN = parents[1];\r\n if (hr !== pN) {\r\n domUtils.breakParent(hr, pN);\r\n\r\n }\r\n //table要重写绑定一下拖拽\r\n me.fireEvent('afteradjusttable', me.document);\r\n }\r\n\r\n } else {\r\n\r\n if (!range.collapsed) {\r\n range.deleteContents();\r\n var start = range.startContainer;\r\n while (!domUtils.isBody(start) && domUtils.isBlockElm(start) && domUtils.isEmptyNode(start)) {\r\n range.setStartBefore(start).collapse(true);\r\n domUtils.remove(start);\r\n start = range.startContainer;\r\n }\r\n\r\n }\r\n range.insertNode(hr);\r\n\r\n var pN = hr.parentNode,\r\n nextNode;\r\n while (!domUtils.isBody(pN)) {\r\n domUtils.breakParent(hr, pN);\r\n nextNode = hr.nextSibling;\r\n if (nextNode && domUtils.isEmptyBlock(nextNode)) {\r\n domUtils.remove(nextNode);\r\n }\r\n pN = hr.parentNode;\r\n }\r\n nextNode = hr.nextSibling;\r\n var pre = hr.previousSibling;\r\n if (isHr(pre)) {\r\n domUtils.remove(pre);\r\n } else {\r\n pre && fillNode(pre);\r\n }\r\n\r\n if (!nextNode) {\r\n var p = me.document.createElement('p');\r\n\r\n hr.parentNode.appendChild(p);\r\n domUtils.fillNode(me.document, p);\r\n range.setStart(p, 0).collapse(true);\r\n } else {\r\n if (isHr(nextNode)) {\r\n domUtils.remove(nextNode);\r\n } else {\r\n fillNode(nextNode);\r\n }\r\n range.setEndAfter(hr).collapse(false);\r\n }\r\n\r\n range.select(true);\r\n\r\n }\r\n\r\n }\r\n };\r\n };\r\n\r\n // plugins/wordimage.js\r\n ///import core\r\n ///commands 本地图片引导上传\r\n ///commandsName WordImage\r\n ///commandsTitle 本地图片引导上传\r\n ///commandsDialog dialogs\\wordimage\r\n\r\n UE.plugin.register('wordimage', function () {\r\n var me = this,\r\n images = [];\r\n return {\r\n commands: {\r\n 'wordimage': {\r\n execCommand: function () {\r\n var images = domUtils.getElementsByTagName(me.body, \"img\");\r\n var urlList = [];\r\n for (var i = 0, ci; ci = images[i++];) {\r\n var url = ci.getAttribute(\"word_img\");\r\n url && urlList.push(url);\r\n }\r\n return urlList;\r\n },\r\n queryCommandState: function () {\r\n images = domUtils.getElementsByTagName(me.body, \"img\");\r\n for (var i = 0, ci; ci = images[i++];) {\r\n if (ci.getAttribute(\"word_img\")) {\r\n return 1;\r\n }\r\n }\r\n return -1;\r\n },\r\n notNeedUndo: true\r\n }\r\n },\r\n inputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (img) {\r\n var attrs = img.attrs,\r\n flag = parseInt(attrs.width) < 128 || parseInt(attrs.height) < 43,\r\n opt = me.options,\r\n src = opt.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif';\r\n if (attrs['src'] && /^(?:(file:\\/+))/.test(attrs['src'])) {\r\n img.setAttr({\r\n width: attrs.width,\r\n height: attrs.height,\r\n alt: attrs.alt,\r\n word_img: attrs.src,\r\n src: src,\r\n 'style': 'background:url(' + (flag ? opt.themePath + opt.theme + '/images/word.gif' : opt.langPath + opt.lang + '/images/localimage.png') + ') no-repeat center center;border:1px solid #ddd'\r\n })\r\n }\r\n })\r\n }\r\n }\r\n });\r\n\r\n // plugins/dragdrop.js\r\n UE.plugins['dragdrop'] = function () {\r\n\r\n var me = this;\r\n me.ready(function () {\r\n domUtils.on(this.body, 'dragend', function () {\r\n var rng = me.selection.getRange();\r\n var node = rng.getClosedNode() || me.selection.getStart();\r\n\r\n if (node && node.tagName == 'IMG') {\r\n\r\n var pre = node.previousSibling,\r\n next;\r\n while (next = node.nextSibling) {\r\n if (next.nodeType == 1 && next.tagName == 'SPAN' && !next.firstChild) {\r\n domUtils.remove(next)\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n\r\n if ((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre) || !pre) && (!next || next && !domUtils.isEmptyBlock(next))) {\r\n if (pre && pre.tagName == 'P' && !domUtils.isEmptyBlock(pre)) {\r\n pre.appendChild(node);\r\n domUtils.moveChild(next, pre);\r\n domUtils.remove(next);\r\n } else if (next && next.tagName == 'P' && !domUtils.isEmptyBlock(next)) {\r\n next.insertBefore(node, next.firstChild);\r\n }\r\n\r\n if (pre && pre.tagName == 'P' && domUtils.isEmptyBlock(pre)) {\r\n domUtils.remove(pre)\r\n }\r\n if (next && next.tagName == 'P' && domUtils.isEmptyBlock(next)) {\r\n domUtils.remove(next)\r\n }\r\n rng.selectNode(node).select();\r\n me.fireEvent('saveScene');\r\n\r\n }\r\n\r\n }\r\n\r\n })\r\n });\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) {\r\n var rng = me.selection.getRange(),\r\n node;\r\n if (node = domUtils.findParentByTagName(rng.startContainer, 'p', true)) {\r\n if (domUtils.getComputedStyle(node, 'text-align') == 'center') {\r\n domUtils.removeStyle(node, 'text-align')\r\n }\r\n }\r\n }\r\n })\r\n };\r\n\r\n\r\n // plugins/undo.js\r\n /**\r\n * undo redo\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 撤销上一次执行的命令\r\n * @command undo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'undo' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 重做上一次执行的命令\r\n * @command redo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'redo' );\r\n * ```\r\n */\r\n\r\n UE.plugins['undo'] = function () {\r\n var saveSceneTimer;\r\n var me = this,\r\n maxUndoCount = me.options.maxUndoCount || 20,\r\n maxInputCount = me.options.maxInputCount || 20,\r\n fillchar = new RegExp(domUtils.fillChar + '|<\\/hr>', 'gi'); // ie会产生多余的\r\n var noNeedFillCharTags = {\r\n ol: 1,\r\n ul: 1,\r\n table: 1,\r\n tbody: 1,\r\n tr: 1,\r\n body: 1\r\n };\r\n var orgState = me.options.autoClearEmptyNode;\r\n\r\n function compareAddr(indexA, indexB) {\r\n if (indexA.length != indexB.length)\r\n return 0;\r\n for (var i = 0, l = indexA.length; i < l; i++) {\r\n if (indexA[i] != indexB[i])\r\n return 0\r\n }\r\n return 1;\r\n }\r\n\r\n function compareRangeAddress(rngAddrA, rngAddrB) {\r\n if (rngAddrA.collapsed != rngAddrB.collapsed) {\r\n return 0;\r\n }\r\n if (!compareAddr(rngAddrA.startAddress, rngAddrB.startAddress) || !compareAddr(rngAddrA.endAddress, rngAddrB.endAddress)) {\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n\r\n function UndoManager() {\r\n this.list = [];\r\n this.index = 0;\r\n this.hasUndo = false;\r\n this.hasRedo = false;\r\n this.undo = function () {\r\n if (this.hasUndo) {\r\n if (!this.list[this.index - 1] && this.list.length == 1) {\r\n this.reset();\r\n return;\r\n }\r\n while (this.list[this.index].content == this.list[this.index - 1].content) {\r\n this.index--;\r\n if (this.index == 0) {\r\n return this.restore(0);\r\n }\r\n }\r\n this.restore(--this.index);\r\n }\r\n };\r\n this.redo = function () {\r\n if (this.hasRedo) {\r\n while (this.list[this.index].content == this.list[this.index + 1].content) {\r\n this.index++;\r\n if (this.index == this.list.length - 1) {\r\n return this.restore(this.index);\r\n }\r\n }\r\n this.restore(++this.index);\r\n }\r\n };\r\n\r\n this.restore = function () {\r\n var me = this.editor;\r\n var scene = this.list[this.index];\r\n var root = UE.htmlparser(scene.content.replace(fillchar, ''));\r\n me.options.autoClearEmptyNode = false;\r\n me.filterInputRule(root);\r\n me.options.autoClearEmptyNode = orgState;\r\n //trace:873\r\n //去掉展位符\r\n me.document.body.innerHTML = root.toHtml();\r\n me.fireEvent('afterscencerestore');\r\n //处理undo后空格不展位的问题\r\n if (browser.ie) {\r\n utils.each(domUtils.getElementsByTagName(me.document, 'td th caption p'), function (node) {\r\n if (domUtils.isEmptyNode(node)) {\r\n domUtils.fillNode(me.document, node);\r\n }\r\n })\r\n }\r\n\r\n try {\r\n var rng = new dom.Range(me.document).moveToAddress(scene.address);\r\n rng.select(noNeedFillCharTags[rng.startContainer.nodeName.toLowerCase()]);\r\n } catch (e) {}\r\n\r\n this.update();\r\n this.clearKey();\r\n //不能把自己reset了\r\n me.fireEvent('reset', true);\r\n };\r\n\r\n this.getScene = function () {\r\n var me = this.editor;\r\n var rng = me.selection.getRange(),\r\n rngAddress = rng.createAddress(false, true);\r\n me.fireEvent('beforegetscene');\r\n var root = UE.htmlparser(me.body.innerHTML);\r\n me.options.autoClearEmptyNode = false;\r\n me.filterOutputRule(root);\r\n me.options.autoClearEmptyNode = orgState;\r\n var cont = root.toHtml();\r\n //trace:3461\r\n //这个会引起回退时导致空格丢失的情况\r\n // browser.ie && (cont = cont.replace(/> <').replace(/\\s*\\s*/g, '>'));\r\n me.fireEvent('aftergetscene');\r\n\r\n return {\r\n address: rngAddress,\r\n content: cont\r\n }\r\n };\r\n this.save = function (notCompareRange, notSetCursor) {\r\n clearTimeout(saveSceneTimer);\r\n var currentScene = this.getScene(notSetCursor),\r\n lastScene = this.list[this.index];\r\n\r\n if (lastScene && lastScene.content != currentScene.content) {\r\n me.trigger('contentchange')\r\n }\r\n //内容相同位置相同不存\r\n if (lastScene && lastScene.content == currentScene.content &&\r\n (notCompareRange ? 1 : compareRangeAddress(lastScene.address, currentScene.address))\r\n ) {\r\n return;\r\n }\r\n this.list = this.list.slice(0, this.index + 1);\r\n this.list.push(currentScene);\r\n //如果大于最大数量了,就把最前的剔除\r\n if (this.list.length > maxUndoCount) {\r\n this.list.shift();\r\n }\r\n this.index = this.list.length - 1;\r\n this.clearKey();\r\n //跟新undo/redo状态\r\n this.update();\r\n\r\n };\r\n this.update = function () {\r\n this.hasRedo = !!this.list[this.index + 1];\r\n this.hasUndo = !!this.list[this.index - 1];\r\n };\r\n this.reset = function () {\r\n this.list = [];\r\n this.index = 0;\r\n this.hasUndo = false;\r\n this.hasRedo = false;\r\n this.clearKey();\r\n };\r\n this.clearKey = function () {\r\n keycont = 0;\r\n lastKeyCode = null;\r\n };\r\n }\r\n\r\n me.undoManger = new UndoManager();\r\n me.undoManger.editor = me;\r\n\r\n function saveScene() {\r\n this.undoManger.save();\r\n }\r\n\r\n me.addListener('saveScene', function () {\r\n var args = Array.prototype.splice.call(arguments, 1);\r\n this.undoManger.save.apply(this.undoManger, args);\r\n });\r\n\r\n // me.addListener('beforeexeccommand', saveScene);\r\n // me.addListener('afterexeccommand', saveScene);\r\n\r\n me.addListener('reset', function (type, exclude) {\r\n if (!exclude) {\r\n this.undoManger.reset();\r\n }\r\n });\r\n me.commands['redo'] = me.commands['undo'] = {\r\n execCommand: function (cmdName) {\r\n this.undoManger[cmdName]();\r\n },\r\n queryCommandState: function (cmdName) {\r\n return this.undoManger['has' + (cmdName.toLowerCase() == 'undo' ? 'Undo' : 'Redo')] ? 0 : -1;\r\n },\r\n notNeedUndo: 1\r\n };\r\n\r\n var keys = {\r\n // /*Backspace*/ 8:1, /*Delete*/ 46:1,\r\n /*Shift*/\r\n 16: 1,\r\n /*Ctrl*/\r\n 17: 1,\r\n /*Alt*/\r\n 18: 1,\r\n 37: 1,\r\n 38: 1,\r\n 39: 1,\r\n 40: 1\r\n\r\n },\r\n keycont = 0,\r\n lastKeyCode;\r\n //输入法状态下不计算字符数\r\n var inputType = false;\r\n me.addListener('ready', function () {\r\n domUtils.on(this.body, 'compositionstart', function () {\r\n inputType = true;\r\n });\r\n domUtils.on(this.body, 'compositionend', function () {\r\n inputType = false;\r\n })\r\n });\r\n //快捷键\r\n me.addshortcutkey({\r\n \"Undo\": \"ctrl+90\", //undo\r\n \"Redo\": \"ctrl+89\" //redo\r\n\r\n });\r\n var isCollapsed = true;\r\n me.addListener('keydown', function (type, evt) {\r\n\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n if (inputType)\r\n return;\r\n\r\n if (!me.selection.getRange().collapsed) {\r\n me.undoManger.save(false, true);\r\n isCollapsed = false;\r\n return;\r\n }\r\n if (me.undoManger.list.length == 0) {\r\n me.undoManger.save(true);\r\n }\r\n clearTimeout(saveSceneTimer);\r\n\r\n function save(cont) {\r\n cont.undoManger.save(false, true);\r\n cont.fireEvent('selectionchange');\r\n }\r\n saveSceneTimer = setTimeout(function () {\r\n if (inputType) {\r\n var interalTimer = setInterval(function () {\r\n if (!inputType) {\r\n save(me);\r\n clearInterval(interalTimer)\r\n }\r\n }, 300)\r\n return;\r\n }\r\n save(me);\r\n }, 200);\r\n\r\n lastKeyCode = keyCode;\r\n keycont++;\r\n if (keycont >= maxInputCount) {\r\n save(me)\r\n }\r\n }\r\n });\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (!keys[keyCode] && !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n if (inputType)\r\n return;\r\n if (!isCollapsed) {\r\n this.undoManger.save(false, true);\r\n isCollapsed = true;\r\n }\r\n }\r\n });\r\n //扩展实例,添加关闭和开启命令undo\r\n me.stopCmdUndo = function () {\r\n me.__hasEnterExecCommand = true;\r\n };\r\n me.startCmdUndo = function () {\r\n me.__hasEnterExecCommand = false;\r\n }\r\n };\r\n\r\n\r\n // plugins/copy.js\r\n UE.plugin.register('copy', function () {\r\n\r\n var me = this;\r\n\r\n function initZeroClipboard() {\r\n\r\n ZeroClipboard.config({\r\n debug: false,\r\n swfPath: me.options.UEDITOR_HOME_URL + 'third-party/zeroclipboard/ZeroClipboard.swf'\r\n });\r\n\r\n var client = me.zeroclipboard = new ZeroClipboard();\r\n\r\n // 复制内容\r\n client.on('copy', function (e) {\r\n var client = e.client,\r\n rng = me.selection.getRange(),\r\n div = document.createElement('div');\r\n\r\n div.appendChild(rng.cloneContents());\r\n client.setText(div.innerText || div.textContent);\r\n client.setHtml(div.innerHTML);\r\n rng.select();\r\n });\r\n // hover事件传递到target\r\n client.on('mouseover mouseout', function (e) {\r\n var target = e.target;\r\n if (e.type == 'mouseover') {\r\n domUtils.addClass(target, 'edui-state-hover');\r\n } else if (e.type == 'mouseout') {\r\n domUtils.removeClasses(target, 'edui-state-hover');\r\n }\r\n });\r\n // flash加载不成功\r\n client.on('wrongflash noflash', function () {\r\n ZeroClipboard.destroy();\r\n });\r\n }\r\n\r\n return {\r\n bindEvents: {\r\n 'ready': function () {\r\n if (!browser.ie) {\r\n if (window.ZeroClipboard) {\r\n initZeroClipboard();\r\n } else {\r\n utils.loadFile(document, {\r\n src: me.options.UEDITOR_HOME_URL + \"third-party/zeroclipboard/ZeroClipboard.js\",\r\n tag: \"script\",\r\n type: \"text/javascript\",\r\n defer: \"defer\"\r\n }, function () {\r\n initZeroClipboard();\r\n });\r\n }\r\n }\r\n }\r\n },\r\n commands: {\r\n 'copy': {\r\n execCommand: function (cmd) {\r\n if (!me.document.execCommand('copy')) {\r\n alert(me.getLang('copymsg'));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n // plugins/paste.js\r\n ///import core\r\n ///import plugins/inserthtml.js\r\n ///import plugins/undo.js\r\n ///import plugins/serialize.js\r\n ///commands 粘贴\r\n ///commandsName PastePlain\r\n ///commandsTitle 纯文本粘贴模式\r\n /**\r\n * @description 粘贴\r\n * @author zhanyi\r\n */\r\n UE.plugins['paste'] = function () {\r\n function getClipboardData(callback) {\r\n var doc = this.document;\r\n if (doc.getElementById('baidu_pastebin')) {\r\n return;\r\n }\r\n var range = this.selection.getRange(),\r\n bk = range.createBookmark(),\r\n //创建剪贴的容器div\r\n pastebin = doc.createElement('div');\r\n pastebin.id = 'baidu_pastebin';\r\n // Safari 要求div必须有内容,才能粘贴内容进来\r\n browser.webkit && pastebin.appendChild(doc.createTextNode(domUtils.fillChar + domUtils.fillChar));\r\n doc.body.appendChild(pastebin);\r\n //trace:717 隐藏的span不能得到top\r\n //bk.start.innerHTML = ' ';\r\n bk.start.style.display = '';\r\n pastebin.style.cssText = \"position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:\" +\r\n //要在现在光标平行的位置加入,否则会出现跳动的问题\r\n domUtils.getXY(bk.start).y + 'px';\r\n\r\n range.selectNodeContents(pastebin).select(true);\r\n\r\n setTimeout(function () {\r\n if (browser.webkit) {\r\n for (var i = 0, pastebins = doc.querySelectorAll('#baidu_pastebin'), pi; pi = pastebins[i++];) {\r\n if (domUtils.isEmptyNode(pi)) {\r\n domUtils.remove(pi);\r\n } else {\r\n pastebin = pi;\r\n break;\r\n }\r\n }\r\n }\r\n try {\r\n pastebin.parentNode.removeChild(pastebin);\r\n } catch (e) {}\r\n range.moveToBookmark(bk).select(true);\r\n callback(pastebin);\r\n }, 0);\r\n }\r\n\r\n var me = this;\r\n\r\n me.setOpt({\r\n retainOnlyLabelPasted: false\r\n });\r\n\r\n var txtContent, htmlContent, address;\r\n\r\n function getPureHtml(html) {\r\n return html.replace(/<(\\/?)([\\w\\-]+)([^>]*)>/gi, function (a, b, tagName, attrs) {\r\n tagName = tagName.toLowerCase();\r\n if ({\r\n img: 1\r\n } [tagName]) {\r\n return a;\r\n }\r\n attrs = attrs.replace(/([\\w\\-]*?)\\s*=\\s*((\"([^\"]*)\")|('([^']*)')|([^\\s>]+))/gi, function (str, atr, val) {\r\n if ({\r\n 'src': 1,\r\n 'href': 1,\r\n 'name': 1\r\n } [atr.toLowerCase()]) {\r\n return atr + '=' + val + ' '\r\n }\r\n return ''\r\n });\r\n if ({\r\n 'span': 1,\r\n 'div': 1\r\n } [tagName]) {\r\n return ''\r\n } else {\r\n\r\n return '<' + b + tagName + ' ' + utils.trim(attrs) + '>'\r\n }\r\n\r\n });\r\n }\r\n\r\n function filter(div) {\r\n var html;\r\n if (div.firstChild) {\r\n //去掉cut中添加的边界值\r\n var nodes = domUtils.getElementsByTagName(div, 'span');\r\n for (var i = 0, ni; ni = nodes[i++];) {\r\n if (ni.id == '_baidu_cut_start' || ni.id == '_baidu_cut_end') {\r\n domUtils.remove(ni);\r\n }\r\n }\r\n\r\n if (browser.webkit) {\r\n\r\n var brs = div.querySelectorAll('div br');\r\n for (var i = 0, bi; bi = brs[i++];) {\r\n var pN = bi.parentNode;\r\n if (pN.tagName == 'DIV' && pN.childNodes.length == 1) {\r\n pN.innerHTML = '


    ';\r\n domUtils.remove(pN);\r\n }\r\n }\r\n var divs = div.querySelectorAll('#baidu_pastebin');\r\n for (var i = 0, di; di = divs[i++];) {\r\n var tmpP = me.document.createElement('p');\r\n di.parentNode.insertBefore(tmpP, di);\r\n while (di.firstChild) {\r\n tmpP.appendChild(di.firstChild);\r\n }\r\n domUtils.remove(di);\r\n }\r\n\r\n var metas = div.querySelectorAll('meta');\r\n for (var i = 0, ci; ci = metas[i++];) {\r\n domUtils.remove(ci);\r\n }\r\n\r\n var brs = div.querySelectorAll('br');\r\n for (i = 0; ci = brs[i++];) {\r\n if (/^apple-/i.test(ci.className)) {\r\n domUtils.remove(ci);\r\n }\r\n }\r\n }\r\n if (browser.gecko) {\r\n var dirtyNodes = div.querySelectorAll('[_moz_dirty]');\r\n for (i = 0; ci = dirtyNodes[i++];) {\r\n ci.removeAttribute('_moz_dirty');\r\n }\r\n }\r\n if (!browser.ie) {\r\n var spans = div.querySelectorAll('span.Apple-style-span');\r\n for (var i = 0, ci; ci = spans[i++];) {\r\n domUtils.remove(ci, true);\r\n }\r\n }\r\n\r\n //ie下使用innerHTML会产生多余的\\r\\n字符,也会产生 这里过滤掉\r\n html = div.innerHTML; //.replace(/>(?:(\\s| )*?)<');\r\n\r\n //过滤word粘贴过来的冗余属性\r\n html = UE.filterWord(html);\r\n //取消了忽略空白的第二个参数,粘贴过来的有些是有空白的,会被套上相关的标签\r\n var root = UE.htmlparser(html);\r\n //如果给了过滤规则就先进行过滤\r\n if (me.options.filterRules) {\r\n UE.filterNode(root, me.options.filterRules);\r\n }\r\n //执行默认的处理\r\n me.filterInputRule(root);\r\n //针对chrome的处理\r\n if (browser.webkit) {\r\n var br = root.lastChild();\r\n if (br && br.type == 'element' && br.tagName == 'br') {\r\n root.removeChild(br)\r\n }\r\n utils.each(me.body.querySelectorAll('div'), function (node) {\r\n if (domUtils.isEmptyBlock(node)) {\r\n domUtils.remove(node, true)\r\n }\r\n })\r\n }\r\n html = {\r\n 'html': root.toHtml()\r\n };\r\n me.fireEvent('beforepaste', html, root);\r\n //抢了默认的粘贴,那后边的内容就不执行了,比如表格粘贴\r\n if (!html.html) {\r\n return;\r\n }\r\n root = UE.htmlparser(html.html, true);\r\n //如果开启了纯文本模式\r\n if (me.queryCommandState('pasteplain') === 1) {\r\n me.execCommand('insertHtml', UE.filterNode(root, me.options.filterTxtRules).toHtml(), true);\r\n } else {\r\n //文本模式\r\n UE.filterNode(root, me.options.filterTxtRules);\r\n txtContent = root.toHtml();\r\n //完全模式\r\n htmlContent = html.html;\r\n\r\n address = me.selection.getRange().createAddress(true);\r\n me.execCommand('insertHtml', me.getOpt('retainOnlyLabelPasted') === true ? getPureHtml(htmlContent) : htmlContent, true);\r\n }\r\n me.fireEvent(\"afterpaste\", html);\r\n }\r\n }\r\n\r\n me.addListener('pasteTransfer', function (cmd, plainType) {\r\n\r\n if (address && txtContent && htmlContent && txtContent != htmlContent) {\r\n var range = me.selection.getRange();\r\n range.moveToAddress(address, true);\r\n\r\n if (!range.collapsed) {\r\n\r\n while (!domUtils.isBody(range.startContainer)) {\r\n var start = range.startContainer;\r\n if (start.nodeType == 1) {\r\n start = start.childNodes[range.startOffset];\r\n if (!start) {\r\n range.setStartBefore(range.startContainer);\r\n continue;\r\n }\r\n var pre = start.previousSibling;\r\n\r\n if (pre && pre.nodeType == 3 && new RegExp('^[\\n\\r\\t ' + domUtils.fillChar + ']*$').test(pre.nodeValue)) {\r\n range.setStartBefore(pre)\r\n }\r\n }\r\n if (range.startOffset == 0) {\r\n range.setStartBefore(range.startContainer);\r\n } else {\r\n break;\r\n }\r\n\r\n }\r\n while (!domUtils.isBody(range.endContainer)) {\r\n var end = range.endContainer;\r\n if (end.nodeType == 1) {\r\n end = end.childNodes[range.endOffset];\r\n if (!end) {\r\n range.setEndAfter(range.endContainer);\r\n continue;\r\n }\r\n var next = end.nextSibling;\r\n if (next && next.nodeType == 3 && new RegExp('^[\\n\\r\\t' + domUtils.fillChar + ']*$').test(next.nodeValue)) {\r\n range.setEndAfter(next)\r\n }\r\n }\r\n if (range.endOffset == range.endContainer[range.endContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length) {\r\n range.setEndAfter(range.endContainer);\r\n } else {\r\n break;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n range.deleteContents();\r\n range.select(true);\r\n me.__hasEnterExecCommand = true;\r\n var html = htmlContent;\r\n if (plainType === 2) {\r\n html = getPureHtml(html);\r\n } else if (plainType) {\r\n html = txtContent;\r\n }\r\n me.execCommand('inserthtml', html, true);\r\n me.__hasEnterExecCommand = false;\r\n var rng = me.selection.getRange();\r\n while (!domUtils.isBody(rng.startContainer) && !rng.startOffset &&\r\n rng.startContainer[rng.startContainer.nodeType == 3 ? 'nodeValue' : 'childNodes'].length\r\n ) {\r\n rng.setStartBefore(rng.startContainer);\r\n }\r\n var tmpAddress = rng.createAddress(true);\r\n address.endAddress = tmpAddress.startAddress;\r\n }\r\n });\r\n\r\n me.addListener('ready', function () {\r\n domUtils.on(me.body, 'cut', function () {\r\n var range = me.selection.getRange();\r\n if (!range.collapsed && me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n });\r\n\r\n //ie下beforepaste在点击右键时也会触发,所以用监控键盘才处理\r\n domUtils.on(me.body, browser.ie || browser.opera ? 'keydown' : 'paste', function (e) {\r\n if ((browser.ie || browser.opera) && ((!e.ctrlKey && !e.metaKey) || e.keyCode != '86')) {\r\n return;\r\n }\r\n getClipboardData.call(me, function (div) {\r\n filter(div);\r\n });\r\n });\r\n\r\n });\r\n\r\n me.commands['paste'] = {\r\n execCommand: function (cmd) {\r\n if (browser.ie) {\r\n getClipboardData.call(me, function (div) {\r\n filter(div);\r\n });\r\n me.document.execCommand('paste');\r\n } else {\r\n alert(me.getLang('pastemsg'));\r\n }\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n // plugins/puretxtpaste.js\r\n /**\r\n * 纯文本粘贴插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n UE.plugins['pasteplain'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'pasteplain': false,\r\n 'filterTxtRules': function () {\r\n function transP(node) {\r\n node.tagName = 'p';\r\n node.setStyle();\r\n }\r\n\r\n function removeNode(node) {\r\n node.parentNode.removeChild(node, true)\r\n }\r\n return {\r\n //直接删除及其字节点内容\r\n '-': 'script style object iframe embed input select',\r\n 'p': {\r\n $: {}\r\n },\r\n 'br': {\r\n $: {}\r\n },\r\n div: function (node) {\r\n var tmpNode, p = UE.uNode.createElement('p');\r\n while (tmpNode = node.firstChild()) {\r\n if (tmpNode.type == 'text' || !UE.dom.dtd.$block[tmpNode.tagName]) {\r\n p.appendChild(tmpNode);\r\n } else {\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n p = UE.uNode.createElement('p');\r\n } else {\r\n node.parentNode.insertBefore(tmpNode, node);\r\n }\r\n }\r\n }\r\n if (p.firstChild()) {\r\n node.parentNode.insertBefore(p, node);\r\n }\r\n node.parentNode.removeChild(node);\r\n },\r\n ol: removeNode,\r\n ul: removeNode,\r\n dl: removeNode,\r\n dt: removeNode,\r\n dd: removeNode,\r\n 'li': removeNode,\r\n 'caption': transP,\r\n 'th': transP,\r\n 'tr': transP,\r\n 'h1': transP,\r\n 'h2': transP,\r\n 'h3': transP,\r\n 'h4': transP,\r\n 'h5': transP,\r\n 'h6': transP,\r\n 'td': function (node) {\r\n //没有内容的td直接删掉\r\n var txt = !!node.innerText();\r\n if (txt) {\r\n node.parentNode.insertAfter(UE.uNode.createText('    '), node);\r\n }\r\n node.parentNode.removeChild(node, node.innerText())\r\n }\r\n }\r\n }()\r\n });\r\n //暂时这里支持一下老版本的属性\r\n var pasteplain = me.options.pasteplain;\r\n\r\n /**\r\n * 启用或取消纯文本粘贴模式\r\n * @command pasteplain\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'pasteplain' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前是否处于纯文本粘贴模式\r\n * @command pasteplain\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果处于纯文本模式,返回1,否则,返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'pasteplain' );\r\n * ```\r\n */\r\n me.commands['pasteplain'] = {\r\n queryCommandState: function () {\r\n return pasteplain ? 1 : 0;\r\n },\r\n execCommand: function () {\r\n pasteplain = !pasteplain | 0;\r\n },\r\n notNeedUndo: 1\r\n };\r\n };\r\n\r\n // plugins/list.js\r\n /**\r\n * 有序列表,无序列表插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n UE.plugins['list'] = function () {\r\n var me = this,\r\n notExchange = {\r\n 'TD': 1,\r\n 'PRE': 1,\r\n 'BLOCKQUOTE': 1\r\n };\r\n var customStyle = {\r\n 'cn': 'cn-1-',\r\n 'cn1': 'cn-2-',\r\n 'cn2': 'cn-3-',\r\n 'num': 'num-1-',\r\n 'num1': 'num-2-',\r\n 'num2': 'num-3-',\r\n 'dash': 'dash',\r\n 'dot': 'dot'\r\n };\r\n\r\n me.setOpt({\r\n 'autoTransWordToList': false,\r\n 'insertorderedlist': {\r\n 'num': '',\r\n 'num1': '',\r\n 'num2': '',\r\n 'cn': '',\r\n 'cn1': '',\r\n 'cn2': '',\r\n 'decimal': '',\r\n 'lower-alpha': '',\r\n 'lower-roman': '',\r\n 'upper-alpha': '',\r\n 'upper-roman': ''\r\n },\r\n 'insertunorderedlist': {\r\n 'circle': '',\r\n 'disc': '',\r\n 'square': '',\r\n 'dash': '',\r\n 'dot': ''\r\n },\r\n listDefaultPaddingLeft: '30',\r\n listiconpath: 'http://bs.baidu.com/listicon/',\r\n maxListLevel: -1, //-1不限制\r\n disablePInList: false\r\n });\r\n\r\n function listToArray(list) {\r\n var arr = [];\r\n for (var p in list) {\r\n arr.push(p)\r\n }\r\n return arr;\r\n }\r\n var listStyle = {\r\n 'OL': listToArray(me.options.insertorderedlist),\r\n 'UL': listToArray(me.options.insertunorderedlist)\r\n };\r\n var liiconpath = me.options.listiconpath;\r\n\r\n //根据用户配置,调整customStyle\r\n for (var s in customStyle) {\r\n if (!me.options.insertorderedlist.hasOwnProperty(s) && !me.options.insertunorderedlist.hasOwnProperty(s)) {\r\n delete customStyle[s];\r\n }\r\n }\r\n\r\n me.ready(function () {\r\n var customCss = [];\r\n for (var p in customStyle) {\r\n if (p == 'dash' || p == 'dot') {\r\n customCss.push('li.list-' + customStyle[p] + '{background-image:url(' + liiconpath + customStyle[p] + '.gif)}');\r\n customCss.push('ul.custom_' + p + '{list-style:none;}ul.custom_' + p + ' li{background-position:0 3px;background-repeat:no-repeat}');\r\n } else {\r\n for (var i = 0; i < 99; i++) {\r\n customCss.push('li.list-' + customStyle[p] + i + '{background-image:url(' + liiconpath + 'list-' + customStyle[p] + i + '.gif)}')\r\n }\r\n customCss.push('ol.custom_' + p + '{list-style:none;}ol.custom_' + p + ' li{background-position:0 3px;background-repeat:no-repeat}');\r\n }\r\n switch (p) {\r\n case 'cn':\r\n customCss.push('li.list-' + p + '-paddingleft-1{padding-left:25px}');\r\n customCss.push('li.list-' + p + '-paddingleft-2{padding-left:40px}');\r\n customCss.push('li.list-' + p + '-paddingleft-3{padding-left:55px}');\r\n break;\r\n case 'cn1':\r\n customCss.push('li.list-' + p + '-paddingleft-1{padding-left:30px}');\r\n customCss.push('li.list-' + p + '-paddingleft-2{padding-left:40px}');\r\n customCss.push('li.list-' + p + '-paddingleft-3{padding-left:55px}');\r\n break;\r\n case 'cn2':\r\n customCss.push('li.list-' + p + '-paddingleft-1{padding-left:40px}');\r\n customCss.push('li.list-' + p + '-paddingleft-2{padding-left:55px}');\r\n customCss.push('li.list-' + p + '-paddingleft-3{padding-left:68px}');\r\n break;\r\n case 'num':\r\n case 'num1':\r\n customCss.push('li.list-' + p + '-paddingleft-1{padding-left:25px}');\r\n break;\r\n case 'num2':\r\n customCss.push('li.list-' + p + '-paddingleft-1{padding-left:35px}');\r\n customCss.push('li.list-' + p + '-paddingleft-2{padding-left:40px}');\r\n break;\r\n case 'dash':\r\n customCss.push('li.list-' + p + '-paddingleft{padding-left:35px}');\r\n break;\r\n case 'dot':\r\n customCss.push('li.list-' + p + '-paddingleft{padding-left:20px}');\r\n }\r\n }\r\n customCss.push('.list-paddingleft-1{padding-left:0}');\r\n customCss.push('.list-paddingleft-2{padding-left:' + me.options.listDefaultPaddingLeft + 'px}');\r\n customCss.push('.list-paddingleft-3{padding-left:' + me.options.listDefaultPaddingLeft * 2 + 'px}');\r\n //如果不给宽度会在自定应样式里出现滚动条\r\n utils.cssRule('list', 'ol,ul{margin:0;pading:0;' + (browser.ie ? '' : 'width:95%') + '}li{clear:both;}' + customCss.join('\\n'), me.document);\r\n });\r\n //单独处理剪切的问题\r\n me.ready(function () {\r\n domUtils.on(me.body, 'cut', function () {\r\n setTimeout(function () {\r\n var rng = me.selection.getRange(),\r\n li;\r\n //trace:3416\r\n if (!rng.collapsed) {\r\n if (li = domUtils.findParentByTagName(rng.startContainer, 'li', true)) {\r\n if (!li.nextSibling && domUtils.isEmptyBlock(li)) {\r\n var pn = li.parentNode,\r\n node;\r\n if (node = pn.previousSibling) {\r\n domUtils.remove(pn);\r\n rng.setStartAtLast(node).collapse(true);\r\n rng.select(true);\r\n } else if (node = pn.nextSibling) {\r\n domUtils.remove(pn);\r\n rng.setStartAtFirst(node).collapse(true);\r\n rng.select(true);\r\n } else {\r\n var tmpNode = me.document.createElement('p');\r\n domUtils.fillNode(me.document, tmpNode);\r\n pn.parentNode.insertBefore(tmpNode, pn);\r\n domUtils.remove(pn);\r\n rng.setStart(tmpNode, 0).collapse(true);\r\n rng.select(true);\r\n }\r\n }\r\n }\r\n }\r\n\r\n })\r\n })\r\n });\r\n\r\n function getStyle(node) {\r\n var cls = node.className;\r\n if (domUtils.hasClass(node, /custom_/)) {\r\n return cls.match(/custom_(\\w+)/)[1]\r\n }\r\n return domUtils.getStyle(node, 'list-style-type')\r\n\r\n }\r\n\r\n me.addListener('beforepaste', function (type, html) {\r\n var me = this,\r\n rng = me.selection.getRange(),\r\n li;\r\n var root = UE.htmlparser(html.html, true);\r\n if (li = domUtils.findParentByTagName(rng.startContainer, 'li', true)) {\r\n var list = li.parentNode,\r\n tagName = list.tagName == 'OL' ? 'ul' : 'ol';\r\n utils.each(root.getNodesByTagName(tagName), function (n) {\r\n n.tagName = list.tagName;\r\n n.setAttr();\r\n if (n.parentNode === root) {\r\n type = getStyle(list) || (list.tagName == 'OL' ? 'decimal' : 'disc')\r\n } else {\r\n var className = n.parentNode.getAttr('class');\r\n if (className && /custom_/.test(className)) {\r\n type = className.match(/custom_(\\w+)/)[1]\r\n } else {\r\n type = n.parentNode.getStyle('list-style-type');\r\n }\r\n if (!type) {\r\n type = list.tagName == 'OL' ? 'decimal' : 'disc';\r\n }\r\n }\r\n var index = utils.indexOf(listStyle[list.tagName], type);\r\n if (n.parentNode !== root)\r\n index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][index];\r\n if (customStyle[currentStyle]) {\r\n n.setAttr('class', 'custom_' + currentStyle)\r\n\r\n } else {\r\n n.setStyle('list-style-type', currentStyle)\r\n }\r\n })\r\n\r\n }\r\n\r\n html.html = root.toHtml();\r\n });\r\n //导出时,去掉p标签\r\n me.getOpt('disablePInList') === true && me.addOutputRule(function (root) {\r\n utils.each(root.getNodesByTagName('li'), function (li) {\r\n var newChildrens = [],\r\n index = 0;\r\n utils.each(li.children, function (n) {\r\n if (n.tagName == 'p') {\r\n var tmpNode;\r\n while (tmpNode = n.children.pop()) {\r\n newChildrens.splice(index, 0, tmpNode);\r\n tmpNode.parentNode = li;\r\n lastNode = tmpNode;\r\n }\r\n tmpNode = newChildrens[newChildrens.length - 1];\r\n if (!tmpNode || tmpNode.type != 'element' || tmpNode.tagName != 'br') {\r\n var br = UE.uNode.createElement('br');\r\n br.parentNode = li;\r\n newChildrens.push(br);\r\n }\r\n\r\n index = newChildrens.length;\r\n }\r\n });\r\n if (newChildrens.length) {\r\n li.children = newChildrens;\r\n }\r\n });\r\n });\r\n //进入编辑器的li要套p标签\r\n me.addInputRule(function (root) {\r\n utils.each(root.getNodesByTagName('li'), function (li) {\r\n var tmpP = UE.uNode.createElement('p');\r\n for (var i = 0, ci; ci = li.children[i];) {\r\n if (ci.type == 'text' || dtd.p[ci.tagName]) {\r\n tmpP.appendChild(ci);\r\n } else {\r\n if (tmpP.firstChild()) {\r\n li.insertBefore(tmpP, ci);\r\n tmpP = UE.uNode.createElement('p');\r\n i = i + 2;\r\n } else {\r\n i++;\r\n }\r\n\r\n }\r\n }\r\n if (tmpP.firstChild() && !tmpP.parentNode || !li.firstChild()) {\r\n li.appendChild(tmpP);\r\n }\r\n //trace:3357\r\n //p不能为空\r\n if (!tmpP.firstChild()) {\r\n tmpP.innerHTML(browser.ie ? ' ' : '
    ')\r\n }\r\n //去掉末尾的空白\r\n var p = li.firstChild();\r\n var lastChild = p.lastChild();\r\n if (lastChild && lastChild.type == 'text' && /^\\s*$/.test(lastChild.data)) {\r\n p.removeChild(lastChild)\r\n }\r\n });\r\n if (me.options.autoTransWordToList) {\r\n var orderlisttype = {\r\n 'num1': /^\\d+\\)/,\r\n 'decimal': /^\\d+\\./,\r\n 'lower-alpha': /^[a-z]+\\)/,\r\n 'upper-alpha': /^[A-Z]+\\./,\r\n 'cn': /^[\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+[\\u3001]/,\r\n 'cn2': /^\\([\\u4E00\\u4E8C\\u4E09\\u56DB\\u516d\\u4e94\\u4e03\\u516b\\u4e5d]+\\)/\r\n },\r\n unorderlisttype = {\r\n 'square': 'n'\r\n };\r\n\r\n function checkListType(content, container) {\r\n var span = container.firstChild();\r\n if (span && span.type == 'element' && span.tagName == 'span' && /Wingdings|Symbol/.test(span.getStyle('font-family'))) {\r\n for (var p in unorderlisttype) {\r\n if (unorderlisttype[p] == span.data) {\r\n return p\r\n }\r\n }\r\n return 'disc'\r\n }\r\n for (var p in orderlisttype) {\r\n if (orderlisttype[p].test(content)) {\r\n return p;\r\n }\r\n }\r\n\r\n }\r\n utils.each(root.getNodesByTagName('p'), function (node) {\r\n if (node.getAttr('class') != 'MsoListParagraph') {\r\n return\r\n }\r\n\r\n //word粘贴过来的会带有margin要去掉,但这样也可能会误命中一些央视\r\n node.setStyle('margin', '');\r\n node.setStyle('margin-left', '');\r\n node.setAttr('class', '');\r\n\r\n function appendLi(list, p, type) {\r\n if (list.tagName == 'ol') {\r\n if (browser.ie) {\r\n var first = p.firstChild();\r\n if (first.type == 'element' && first.tagName == 'span' && orderlisttype[type].test(first.innerText())) {\r\n p.removeChild(first);\r\n }\r\n } else {\r\n p.innerHTML(p.innerHTML().replace(orderlisttype[type], ''));\r\n }\r\n } else {\r\n p.removeChild(p.firstChild())\r\n }\r\n\r\n var li = UE.uNode.createElement('li');\r\n li.appendChild(p);\r\n list.appendChild(li);\r\n }\r\n var tmp = node,\r\n type, cacheNode = node;\r\n\r\n if (node.parentNode.tagName != 'li' && (type = checkListType(node.innerText(), node))) {\r\n\r\n var list = UE.uNode.createElement(me.options.insertorderedlist.hasOwnProperty(type) ? 'ol' : 'ul');\r\n if (customStyle[type]) {\r\n list.setAttr('class', 'custom_' + type)\r\n } else {\r\n list.setStyle('list-style-type', type)\r\n }\r\n while (node && node.parentNode.tagName != 'li' && checkListType(node.innerText(), node)) {\r\n tmp = node.nextSibling();\r\n if (!tmp) {\r\n node.parentNode.insertBefore(list, node)\r\n }\r\n appendLi(list, node, type);\r\n node = tmp;\r\n }\r\n if (!list.parentNode && node && node.parentNode) {\r\n node.parentNode.insertBefore(list, node)\r\n }\r\n }\r\n var span = cacheNode.firstChild();\r\n if (span && span.type == 'element' && span.tagName == 'span' && /^\\s*( )+\\s*$/.test(span.innerText())) {\r\n span.parentNode.removeChild(span)\r\n }\r\n })\r\n }\r\n\r\n });\r\n\r\n //调整索引标签\r\n me.addListener('contentchange', function () {\r\n adjustListStyle(me.document)\r\n });\r\n\r\n function adjustListStyle(doc, ignore) {\r\n utils.each(domUtils.getElementsByTagName(doc, 'ol ul'), function (node) {\r\n\r\n if (!domUtils.inDoc(node, doc))\r\n return;\r\n\r\n var parent = node.parentNode;\r\n if (parent.tagName == node.tagName) {\r\n var nodeStyleType = getStyle(node) || (node.tagName == 'OL' ? 'decimal' : 'disc'),\r\n parentStyleType = getStyle(parent) || (parent.tagName == 'OL' ? 'decimal' : 'disc');\r\n if (nodeStyleType == parentStyleType) {\r\n var styleIndex = utils.indexOf(listStyle[node.tagName], nodeStyleType);\r\n styleIndex = styleIndex + 1 == listStyle[node.tagName].length ? 0 : styleIndex + 1;\r\n setListStyle(node, listStyle[node.tagName][styleIndex])\r\n }\r\n\r\n }\r\n var index = 0,\r\n type = 2;\r\n if (domUtils.hasClass(node, /custom_/)) {\r\n if (!(/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent, /custom_/))) {\r\n type = 1;\r\n }\r\n } else {\r\n if (/[ou]l/i.test(parent.tagName) && domUtils.hasClass(parent, /custom_/)) {\r\n type = 3;\r\n }\r\n }\r\n\r\n var style = domUtils.getStyle(node, 'list-style-type');\r\n style && (node.style.cssText = 'list-style-type:' + style);\r\n node.className = utils.trim(node.className.replace(/list-paddingleft-\\w+/, '')) + ' list-paddingleft-' + type;\r\n utils.each(domUtils.getElementsByTagName(node, 'li'), function (li) {\r\n li.style.cssText && (li.style.cssText = '');\r\n if (!li.firstChild) {\r\n domUtils.remove(li);\r\n return;\r\n }\r\n if (li.parentNode !== node) {\r\n return;\r\n }\r\n index++;\r\n if (domUtils.hasClass(node, /custom_/)) {\r\n var paddingLeft = 1,\r\n currentStyle = getStyle(node);\r\n if (node.tagName == 'OL') {\r\n if (currentStyle) {\r\n switch (currentStyle) {\r\n case 'cn':\r\n case 'cn1':\r\n case 'cn2':\r\n if (index > 10 && (index % 10 == 0 || index > 10 && index < 20)) {\r\n paddingLeft = 2\r\n } else if (index > 20) {\r\n paddingLeft = 3\r\n }\r\n break;\r\n case 'num2':\r\n if (index > 9) {\r\n paddingLeft = 2\r\n }\r\n }\r\n }\r\n li.className = 'list-' + customStyle[currentStyle] + index + ' ' + 'list-' + currentStyle + '-paddingleft-' + paddingLeft;\r\n } else {\r\n li.className = 'list-' + customStyle[currentStyle] + ' ' + 'list-' + currentStyle + '-paddingleft';\r\n }\r\n } else {\r\n li.className = li.className.replace(/list-[\\w\\-]+/gi, '');\r\n }\r\n var className = li.getAttribute('class');\r\n if (className !== null && !className.replace(/\\s/g, '')) {\r\n domUtils.removeAttributes(li, 'class')\r\n }\r\n });\r\n !ignore && adjustList(node, node.tagName.toLowerCase(), getStyle(node) || domUtils.getStyle(node, 'list-style-type'), true);\r\n })\r\n }\r\n\r\n function adjustList(list, tag, style, ignoreEmpty) {\r\n var nextList = list.nextSibling;\r\n if (nextList && nextList.nodeType == 1 && nextList.tagName.toLowerCase() == tag && (getStyle(nextList) || domUtils.getStyle(nextList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) {\r\n domUtils.moveChild(nextList, list);\r\n if (nextList.childNodes.length == 0) {\r\n domUtils.remove(nextList);\r\n }\r\n }\r\n if (nextList && domUtils.isFillChar(nextList)) {\r\n domUtils.remove(nextList);\r\n }\r\n var preList = list.previousSibling;\r\n if (preList && preList.nodeType == 1 && preList.tagName.toLowerCase() == tag && (getStyle(preList) || domUtils.getStyle(preList, 'list-style-type') || (tag == 'ol' ? 'decimal' : 'disc')) == style) {\r\n domUtils.moveChild(list, preList);\r\n }\r\n if (preList && domUtils.isFillChar(preList)) {\r\n domUtils.remove(preList);\r\n }!ignoreEmpty && domUtils.isEmptyBlock(list) && domUtils.remove(list);\r\n if (getStyle(list)) {\r\n adjustListStyle(list.ownerDocument, true)\r\n }\r\n }\r\n\r\n function setListStyle(list, style) {\r\n if (customStyle[style]) {\r\n list.className = 'custom_' + style;\r\n }\r\n try {\r\n domUtils.setStyle(list, 'list-style-type', style);\r\n } catch (e) {}\r\n }\r\n\r\n function clearEmptySibling(node) {\r\n var tmpNode = node.previousSibling;\r\n if (tmpNode && domUtils.isEmptyBlock(tmpNode)) {\r\n domUtils.remove(tmpNode);\r\n }\r\n tmpNode = node.nextSibling;\r\n if (tmpNode && domUtils.isEmptyBlock(tmpNode)) {\r\n domUtils.remove(tmpNode);\r\n }\r\n }\r\n\r\n me.addListener('keydown', function (type, evt) {\r\n function preventAndSave() {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n me.fireEvent('contentchange');\r\n me.undoManger && me.undoManger.save();\r\n }\r\n\r\n function findList(node, filterFn) {\r\n while (node && !domUtils.isBody(node)) {\r\n if (filterFn(node)) {\r\n return null\r\n }\r\n if (node.nodeType == 1 && /[ou]l/i.test(node.tagName)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n }\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13 && !evt.shiftKey) { //回车\r\n var rng = me.selection.getRange(),\r\n parent = domUtils.findParent(rng.startContainer, function (node) {\r\n return domUtils.isBlockElm(node)\r\n }, true),\r\n li = domUtils.findParentByTagName(rng.startContainer, 'li', true);\r\n if (parent && parent.tagName != 'PRE' && !li) {\r\n var html = parent.innerHTML.replace(new RegExp(domUtils.fillChar, 'g'), '');\r\n if (/^\\s*1\\s*\\.[^\\d]/.test(html)) {\r\n parent.innerHTML = html.replace(/^\\s*1\\s*\\./, '');\r\n rng.setStartAtLast(parent).collapse(true).select();\r\n me.__hasEnterExecCommand = true;\r\n me.execCommand('insertorderedlist');\r\n me.__hasEnterExecCommand = false;\r\n }\r\n }\r\n var range = me.selection.getRange(),\r\n start = findList(range.startContainer, function (node) {\r\n return node.tagName == 'TABLE';\r\n }),\r\n end = range.collapsed ? start : findList(range.endContainer, function (node) {\r\n return node.tagName == 'TABLE';\r\n });\r\n\r\n if (start && end && start === end) {\r\n\r\n if (!range.collapsed) {\r\n start = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n end = domUtils.findParentByTagName(range.endContainer, 'li', true);\r\n if (start && end && start === end) {\r\n range.deleteContents();\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if (li && domUtils.isEmptyBlock(li)) {\r\n\r\n pre = li.previousSibling;\r\n next = li.nextSibling;\r\n p = me.document.createElement('p');\r\n\r\n domUtils.fillNode(me.document, p);\r\n parentList = li.parentNode;\r\n if (pre && next) {\r\n range.setStart(next, 0).collapse(true).select(true);\r\n domUtils.remove(li);\r\n\r\n } else {\r\n if (!pre && !next || !pre) {\r\n\r\n parentList.parentNode.insertBefore(p, parentList);\r\n\r\n\r\n } else {\r\n li.parentNode.parentNode.insertBefore(p, parentList.nextSibling);\r\n }\r\n domUtils.remove(li);\r\n if (!parentList.firstChild) {\r\n domUtils.remove(parentList);\r\n }\r\n range.setStart(p, 0).setCursor();\r\n\r\n\r\n }\r\n preventAndSave();\r\n return;\r\n\r\n }\r\n } else {\r\n var tmpRange = range.cloneRange(),\r\n bk = tmpRange.collapse(false).createBookmark();\r\n\r\n range.deleteContents();\r\n tmpRange.moveToBookmark(bk);\r\n var li = domUtils.findParentByTagName(tmpRange.startContainer, 'li', true);\r\n\r\n clearEmptySibling(li);\r\n tmpRange.select();\r\n preventAndSave();\r\n return;\r\n }\r\n }\r\n\r\n\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n\r\n if (li) {\r\n if (domUtils.isEmptyBlock(li)) {\r\n bk = range.createBookmark();\r\n var parentList = li.parentNode;\r\n if (li !== parentList.lastChild) {\r\n domUtils.breakParent(li, parentList);\r\n clearEmptySibling(li);\r\n } else {\r\n\r\n parentList.parentNode.insertBefore(li, parentList.nextSibling);\r\n if (domUtils.isEmptyNode(parentList)) {\r\n domUtils.remove(parentList);\r\n }\r\n }\r\n //嵌套不处理\r\n if (!dtd.$list[li.parentNode.tagName]) {\r\n\r\n if (!domUtils.isBlockElm(li.firstChild)) {\r\n p = me.document.createElement('p');\r\n li.parentNode.insertBefore(p, li);\r\n while (li.firstChild) {\r\n p.appendChild(li.firstChild);\r\n }\r\n domUtils.remove(li);\r\n } else {\r\n domUtils.remove(li, true);\r\n }\r\n }\r\n range.moveToBookmark(bk).select();\r\n\r\n\r\n } else {\r\n var first = li.firstChild;\r\n if (!first || !domUtils.isBlockElm(first)) {\r\n var p = me.document.createElement('p');\r\n\r\n !li.firstChild && domUtils.fillNode(me.document, p);\r\n while (li.firstChild) {\r\n\r\n p.appendChild(li.firstChild);\r\n }\r\n li.appendChild(p);\r\n first = p;\r\n }\r\n\r\n var span = me.document.createElement('span');\r\n\r\n range.insertNode(span);\r\n domUtils.breakParent(span, li);\r\n\r\n var nextLi = span.nextSibling;\r\n first = nextLi.firstChild;\r\n\r\n if (!first) {\r\n p = me.document.createElement('p');\r\n\r\n domUtils.fillNode(me.document, p);\r\n nextLi.appendChild(p);\r\n first = p;\r\n }\r\n if (domUtils.isEmptyNode(first)) {\r\n first.innerHTML = '';\r\n domUtils.fillNode(me.document, first);\r\n }\r\n\r\n range.setStart(first, 0).collapse(true).shrinkBoundary().select();\r\n domUtils.remove(span);\r\n var pre = nextLi.previousSibling;\r\n if (pre && domUtils.isEmptyBlock(pre)) {\r\n pre.innerHTML = '

    ';\r\n domUtils.fillNode(me.document, pre.firstChild);\r\n }\r\n\r\n }\r\n // }\r\n preventAndSave();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n if (keyCode == 8) {\r\n //修中ie中li下的问题\r\n range = me.selection.getRange();\r\n if (range.collapsed && domUtils.isStartInblock(range)) {\r\n tmpRange = range.cloneRange().trimBoundary();\r\n li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n //要在li的最左边,才能处理\r\n if (li && domUtils.isStartInblock(tmpRange)) {\r\n start = domUtils.findParentByTagName(range.startContainer, 'p', true);\r\n if (start && start !== li.firstChild) {\r\n var parentList = domUtils.findParentByTagName(start, ['ol', 'ul']);\r\n domUtils.breakParent(start, parentList);\r\n clearEmptySibling(start);\r\n me.fireEvent('contentchange');\r\n range.setStart(start, 0).setCursor(false, true);\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n\r\n if (li && (pre = li.previousSibling)) {\r\n if (keyCode == 46 && li.childNodes.length) {\r\n return;\r\n }\r\n //有可能上边的兄弟节点是个2级菜单,要追加到2级菜单的最后的li\r\n if (dtd.$list[pre.tagName]) {\r\n pre = pre.lastChild;\r\n }\r\n me.undoManger && me.undoManger.save();\r\n first = li.firstChild;\r\n if (domUtils.isBlockElm(first)) {\r\n if (domUtils.isEmptyNode(first)) {\r\n // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true);\r\n pre.appendChild(first);\r\n range.setStart(first, 0).setCursor(false, true);\r\n //first不是唯一的节点\r\n while (li.firstChild) {\r\n pre.appendChild(li.firstChild);\r\n }\r\n } else {\r\n\r\n span = me.document.createElement('span');\r\n range.insertNode(span);\r\n //判断pre是否是空的节点,如果是


    类型的空节点,干掉p标签防止它占位\r\n if (domUtils.isEmptyBlock(pre)) {\r\n pre.innerHTML = '';\r\n }\r\n domUtils.moveChild(li, pre);\r\n range.setStartBefore(span).collapse(true).select(true);\r\n\r\n domUtils.remove(span);\r\n\r\n }\r\n } else {\r\n if (domUtils.isEmptyNode(li)) {\r\n var p = me.document.createElement('p');\r\n pre.appendChild(p);\r\n range.setStart(p, 0).setCursor();\r\n // range.setEnd(pre, pre.childNodes.length).shrinkBoundary().collapse().select(true);\r\n } else {\r\n range.setEnd(pre, pre.childNodes.length).collapse().select(true);\r\n while (li.firstChild) {\r\n pre.appendChild(li.firstChild);\r\n }\r\n }\r\n }\r\n domUtils.remove(li);\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n\r\n }\r\n //trace:980\r\n\r\n if (li && !li.previousSibling) {\r\n var parentList = li.parentNode;\r\n var bk = range.createBookmark();\r\n if (domUtils.isTagNode(parentList.parentNode, 'ol ul')) {\r\n parentList.parentNode.insertBefore(li, parentList);\r\n if (domUtils.isEmptyNode(parentList)) {\r\n domUtils.remove(parentList)\r\n }\r\n } else {\r\n\r\n while (li.firstChild) {\r\n parentList.parentNode.insertBefore(li.firstChild, parentList);\r\n }\r\n\r\n domUtils.remove(li);\r\n if (domUtils.isEmptyNode(parentList)) {\r\n domUtils.remove(parentList)\r\n }\r\n\r\n }\r\n range.moveToBookmark(bk).setCursor(false, true);\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n });\r\n\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 8) {\r\n var rng = me.selection.getRange(),\r\n list;\r\n if (list = domUtils.findParentByTagName(rng.startContainer, ['ol', 'ul'], true)) {\r\n adjustList(list, list.tagName.toLowerCase(), getStyle(list) || domUtils.getComputedStyle(list, 'list-style-type'), true)\r\n }\r\n }\r\n });\r\n //处理tab键\r\n me.addListener('tabkeydown', function () {\r\n\r\n var range = me.selection.getRange();\r\n\r\n //控制级数\r\n function checkLevel(li) {\r\n if (me.options.maxListLevel != -1) {\r\n var level = li.parentNode,\r\n levelNum = 0;\r\n while (/[ou]l/i.test(level.tagName)) {\r\n levelNum++;\r\n level = level.parentNode;\r\n }\r\n if (levelNum >= me.options.maxListLevel) {\r\n return true;\r\n }\r\n }\r\n }\r\n //只以开始为准\r\n //todo 后续改进\r\n var li = domUtils.findParentByTagName(range.startContainer, 'li', true);\r\n if (li) {\r\n\r\n var bk;\r\n if (range.collapsed) {\r\n if (checkLevel(li))\r\n return true;\r\n var parentLi = li.parentNode,\r\n list = me.document.createElement(parentLi.tagName),\r\n index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi) || domUtils.getComputedStyle(parentLi, 'list-style-type'));\r\n index = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][index];\r\n setListStyle(list, currentStyle);\r\n if (domUtils.isStartInblock(range)) {\r\n me.fireEvent('saveScene');\r\n bk = range.createBookmark();\r\n parentLi.insertBefore(list, li);\r\n list.appendChild(li);\r\n adjustList(list, list.tagName.toLowerCase(), currentStyle);\r\n me.fireEvent('contentchange');\r\n range.moveToBookmark(bk).select(true);\r\n return true;\r\n }\r\n } else {\r\n me.fireEvent('saveScene');\r\n bk = range.createBookmark();\r\n for (var i = 0, closeList, parents = domUtils.findParents(li), ci; ci = parents[i++];) {\r\n if (domUtils.isTagNode(ci, 'ol ul')) {\r\n closeList = ci;\r\n break;\r\n }\r\n }\r\n var current = li;\r\n if (bk.end) {\r\n while (current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)) {\r\n if (checkLevel(current)) {\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return node !== closeList\r\n });\r\n continue;\r\n }\r\n var parentLi = current.parentNode,\r\n list = me.document.createElement(parentLi.tagName),\r\n index = utils.indexOf(listStyle[list.tagName], getStyle(parentLi) || domUtils.getComputedStyle(parentLi, 'list-style-type'));\r\n var currentIndex = index + 1 == listStyle[list.tagName].length ? 0 : index + 1;\r\n var currentStyle = listStyle[list.tagName][currentIndex];\r\n setListStyle(list, currentStyle);\r\n parentLi.insertBefore(list, current);\r\n while (current && !(domUtils.getPosition(current, bk.end) & domUtils.POSITION_FOLLOWING)) {\r\n li = current.nextSibling;\r\n list.appendChild(current);\r\n if (!li || domUtils.isTagNode(li, 'ol ul')) {\r\n if (li) {\r\n while (li = li.firstChild) {\r\n if (li.tagName == 'LI') {\r\n break;\r\n }\r\n }\r\n } else {\r\n li = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return node !== closeList\r\n });\r\n }\r\n break;\r\n }\r\n current = li;\r\n }\r\n adjustList(list, list.tagName.toLowerCase(), currentStyle);\r\n current = li;\r\n }\r\n }\r\n me.fireEvent('contentchange');\r\n range.moveToBookmark(bk).select();\r\n return true;\r\n }\r\n }\r\n\r\n });\r\n\r\n function getLi(start) {\r\n while (start && !domUtils.isBody(start)) {\r\n if (start.nodeName == 'TABLE') {\r\n return null;\r\n }\r\n if (start.nodeName == 'LI') {\r\n return start\r\n }\r\n start = start.parentNode;\r\n }\r\n }\r\n\r\n /**\r\n * 有序列表,与“insertunorderedlist”命令互斥\r\n * @command insertorderedlist\r\n * @method execCommand\r\n * @param { String } command 命令字符串\r\n * @param { String } style 插入的有序列表类型,值为:decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertorderedlist','decimal');\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertorderedlist\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果当前选区是有序列表返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'insertorderedlist' );\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertorderedlist\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @return { String } 返回当前有序列表的类型,值为null或decimal,lower-alpha,lower-roman,upper-alpha,upper-roman,cn,cn1,cn2,num,num1,num2\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertorderedlist' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 无序列表,与“insertorderedlist”命令互斥\r\n * @command insertunorderedlist\r\n * @method execCommand\r\n * @param { String } command 命令字符串\r\n * @param { String } style 插入的无序列表类型,值为:circle,disc,square,dash,dot\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'insertunorderedlist','circle');\r\n * ```\r\n */\r\n /**\r\n * 查询当前是否有word文档粘贴进来的图片\r\n * @command insertunorderedlist\r\n * @method insertunorderedlist\r\n * @param { String } command 命令字符串\r\n * @return { int } 如果当前选区是无序列表返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'insertunorderedlist' );\r\n * ```\r\n */\r\n /**\r\n * 查询当前选区内容是否有序列表\r\n * @command insertunorderedlist\r\n * @method queryCommandValue\r\n * @param { String } command 命令字符串\r\n * @return { String } 返回当前无序列表的类型,值为null或circle,disc,square,dash,dot\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'insertunorderedlist' );\r\n * ```\r\n */\r\n\r\n me.commands['insertorderedlist'] =\r\n me.commands['insertunorderedlist'] = {\r\n execCommand: function (command, style) {\r\n\r\n if (!style) {\r\n style = command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc';\r\n }\r\n var me = this,\r\n range = this.selection.getRange(),\r\n filterFn = function (node) {\r\n return node.nodeType == 1 ? node.tagName.toLowerCase() != 'br' : !domUtils.isWhitespace(node);\r\n },\r\n tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul',\r\n frag = me.document.createDocumentFragment();\r\n //去掉是因为会出现选到末尾,导致adjustmentBoundary缩到ol/ul的位置\r\n //range.shrinkBoundary();//.adjustmentBoundary();\r\n range.adjustmentBoundary().shrinkBoundary();\r\n var bko = range.createBookmark(true),\r\n start = getLi(me.document.getElementById(bko.start)),\r\n modifyStart = 0,\r\n end = getLi(me.document.getElementById(bko.end)),\r\n modifyEnd = 0,\r\n startParent, endParent,\r\n list, tmp;\r\n\r\n if (start || end) {\r\n start && (startParent = start.parentNode);\r\n if (!bko.end) {\r\n end = start;\r\n }\r\n end && (endParent = end.parentNode);\r\n\r\n if (startParent === endParent) {\r\n while (start !== end) {\r\n tmp = start;\r\n start = start.nextSibling;\r\n if (!domUtils.isBlockElm(tmp.firstChild)) {\r\n var p = me.document.createElement('p');\r\n while (tmp.firstChild) {\r\n p.appendChild(tmp.firstChild);\r\n }\r\n tmp.appendChild(p);\r\n }\r\n frag.appendChild(tmp);\r\n }\r\n tmp = me.document.createElement('span');\r\n startParent.insertBefore(tmp, end);\r\n if (!domUtils.isBlockElm(end.firstChild)) {\r\n p = me.document.createElement('p');\r\n while (end.firstChild) {\r\n p.appendChild(end.firstChild);\r\n }\r\n end.appendChild(p);\r\n }\r\n frag.appendChild(end);\r\n domUtils.breakParent(tmp, startParent);\r\n if (domUtils.isEmptyNode(tmp.previousSibling)) {\r\n domUtils.remove(tmp.previousSibling);\r\n }\r\n if (domUtils.isEmptyNode(tmp.nextSibling)) {\r\n domUtils.remove(tmp.nextSibling)\r\n }\r\n var nodeStyle = getStyle(startParent) || domUtils.getComputedStyle(startParent, 'list-style-type') || (command.toLowerCase() == 'insertorderedlist' ? 'decimal' : 'disc');\r\n if (startParent.tagName.toLowerCase() == tag && nodeStyle == style) {\r\n for (var i = 0, ci, tmpFrag = me.document.createDocumentFragment(); ci = frag.firstChild;) {\r\n if (domUtils.isTagNode(ci, 'ol ul')) {\r\n // 删除时,子列表不处理\r\n // utils.each(domUtils.getElementsByTagName(ci,'li'),function(li){\r\n // while(li.firstChild){\r\n // tmpFrag.appendChild(li.firstChild);\r\n // }\r\n //\r\n // });\r\n tmpFrag.appendChild(ci);\r\n } else {\r\n while (ci.firstChild) {\r\n\r\n tmpFrag.appendChild(ci.firstChild);\r\n domUtils.remove(ci);\r\n }\r\n }\r\n\r\n }\r\n tmp.parentNode.insertBefore(tmpFrag, tmp);\r\n } else {\r\n list = me.document.createElement(tag);\r\n setListStyle(list, style);\r\n list.appendChild(frag);\r\n tmp.parentNode.insertBefore(list, tmp);\r\n }\r\n\r\n domUtils.remove(tmp);\r\n list && adjustList(list, tag, style);\r\n range.moveToBookmark(bko).select();\r\n return;\r\n }\r\n //开始\r\n if (start) {\r\n while (start) {\r\n tmp = start.nextSibling;\r\n if (domUtils.isTagNode(start, 'ol ul')) {\r\n frag.appendChild(start);\r\n } else {\r\n var tmpfrag = me.document.createDocumentFragment(),\r\n hasBlock = 0;\r\n while (start.firstChild) {\r\n if (domUtils.isBlockElm(start.firstChild)) {\r\n hasBlock = 1;\r\n }\r\n tmpfrag.appendChild(start.firstChild);\r\n }\r\n if (!hasBlock) {\r\n var tmpP = me.document.createElement('p');\r\n tmpP.appendChild(tmpfrag);\r\n frag.appendChild(tmpP);\r\n } else {\r\n frag.appendChild(tmpfrag);\r\n }\r\n domUtils.remove(start);\r\n }\r\n\r\n start = tmp;\r\n }\r\n startParent.parentNode.insertBefore(frag, startParent.nextSibling);\r\n if (domUtils.isEmptyNode(startParent)) {\r\n range.setStartBefore(startParent);\r\n domUtils.remove(startParent);\r\n } else {\r\n range.setStartAfter(startParent);\r\n }\r\n modifyStart = 1;\r\n }\r\n\r\n if (end && domUtils.inDoc(endParent, me.document)) {\r\n //结束\r\n start = endParent.firstChild;\r\n while (start && start !== end) {\r\n tmp = start.nextSibling;\r\n if (domUtils.isTagNode(start, 'ol ul')) {\r\n frag.appendChild(start);\r\n } else {\r\n tmpfrag = me.document.createDocumentFragment();\r\n hasBlock = 0;\r\n while (start.firstChild) {\r\n if (domUtils.isBlockElm(start.firstChild)) {\r\n hasBlock = 1;\r\n }\r\n tmpfrag.appendChild(start.firstChild);\r\n }\r\n if (!hasBlock) {\r\n tmpP = me.document.createElement('p');\r\n tmpP.appendChild(tmpfrag);\r\n frag.appendChild(tmpP);\r\n } else {\r\n frag.appendChild(tmpfrag);\r\n }\r\n domUtils.remove(start);\r\n }\r\n start = tmp;\r\n }\r\n var tmpDiv = domUtils.createElement(me.document, 'div', {\r\n 'tmpDiv': 1\r\n });\r\n domUtils.moveChild(end, tmpDiv);\r\n\r\n frag.appendChild(tmpDiv);\r\n domUtils.remove(end);\r\n endParent.parentNode.insertBefore(frag, endParent);\r\n range.setEndBefore(endParent);\r\n if (domUtils.isEmptyNode(endParent)) {\r\n domUtils.remove(endParent);\r\n }\r\n\r\n modifyEnd = 1;\r\n }\r\n\r\n\r\n }\r\n\r\n if (!modifyStart) {\r\n range.setStartBefore(me.document.getElementById(bko.start));\r\n }\r\n if (bko.end && !modifyEnd) {\r\n range.setEndAfter(me.document.getElementById(bko.end));\r\n }\r\n range.enlarge(true, function (node) {\r\n return notExchange[node.tagName];\r\n });\r\n\r\n frag = me.document.createDocumentFragment();\r\n\r\n var bk = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bk.start, false, filterFn),\r\n tmpRange = range.cloneRange(),\r\n tmpNode,\r\n block = domUtils.isBlockElm;\r\n\r\n while (current && current !== bk.end && (domUtils.getPosition(current, bk.end) & domUtils.POSITION_PRECEDING)) {\r\n\r\n if (current.nodeType == 3 || dtd.li[current.tagName]) {\r\n if (current.nodeType == 1 && dtd.$list[current.tagName]) {\r\n while (current.firstChild) {\r\n frag.appendChild(current.firstChild);\r\n }\r\n tmpNode = domUtils.getNextDomNode(current, false, filterFn);\r\n domUtils.remove(current);\r\n current = tmpNode;\r\n continue;\r\n\r\n }\r\n tmpNode = current;\r\n tmpRange.setStartBefore(current);\r\n\r\n while (current && current !== bk.end && (!block(current) || domUtils.isBookmarkNode(current))) {\r\n tmpNode = current;\r\n current = domUtils.getNextDomNode(current, false, null, function (node) {\r\n return !notExchange[node.tagName];\r\n });\r\n }\r\n\r\n if (current && block(current)) {\r\n tmp = domUtils.getNextDomNode(tmpNode, false, filterFn);\r\n if (tmp && domUtils.isBookmarkNode(tmp)) {\r\n current = domUtils.getNextDomNode(tmp, false, filterFn);\r\n tmpNode = tmp;\r\n }\r\n }\r\n tmpRange.setEndAfter(tmpNode);\r\n\r\n current = domUtils.getNextDomNode(tmpNode, false, filterFn);\r\n\r\n var li = range.document.createElement('li');\r\n\r\n li.appendChild(tmpRange.extractContents());\r\n if (domUtils.isEmptyNode(li)) {\r\n var tmpNode = range.document.createElement('p');\r\n while (li.firstChild) {\r\n tmpNode.appendChild(li.firstChild)\r\n }\r\n li.appendChild(tmpNode);\r\n }\r\n frag.appendChild(li);\r\n } else {\r\n current = domUtils.getNextDomNode(current, true, filterFn);\r\n }\r\n }\r\n range.moveToBookmark(bk).collapse(true);\r\n list = me.document.createElement(tag);\r\n setListStyle(list, style);\r\n list.appendChild(frag);\r\n range.insertNode(list);\r\n //当前list上下看能否合并\r\n adjustList(list, tag, style);\r\n //去掉冗余的tmpDiv\r\n for (var i = 0, ci, tmpDivs = domUtils.getElementsByTagName(list, 'div'); ci = tmpDivs[i++];) {\r\n if (ci.getAttribute('tmpDiv')) {\r\n domUtils.remove(ci, true)\r\n }\r\n }\r\n range.moveToBookmark(bko).select();\r\n\r\n },\r\n queryCommandState: function (command) {\r\n var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul';\r\n var path = this.selection.getStartElementPath();\r\n for (var i = 0, ci; ci = path[i++];) {\r\n if (ci.nodeName == 'TABLE') {\r\n return 0\r\n }\r\n if (tag == ci.nodeName.toLowerCase()) {\r\n return 1\r\n };\r\n }\r\n return 0;\r\n\r\n },\r\n queryCommandValue: function (command) {\r\n var tag = command.toLowerCase() == 'insertorderedlist' ? 'ol' : 'ul';\r\n var path = this.selection.getStartElementPath(),\r\n node;\r\n for (var i = 0, ci; ci = path[i++];) {\r\n if (ci.nodeName == 'TABLE') {\r\n node = null;\r\n break;\r\n }\r\n if (tag == ci.nodeName.toLowerCase()) {\r\n node = ci;\r\n break;\r\n };\r\n }\r\n return node ? getStyle(node) || domUtils.getComputedStyle(node, 'list-style-type') : null;\r\n }\r\n };\r\n };\r\n\r\n\r\n\r\n // plugins/source.js\r\n /**\r\n * 源码编辑插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n (function () {\r\n var sourceEditors = {\r\n textarea: function (editor, holder) {\r\n var textarea = holder.ownerDocument.createElement('textarea');\r\n textarea.style.cssText = 'position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;';\r\n // todo: IE下只有onresize属性可用... 很纠结\r\n if (browser.ie && browser.version < 8) {\r\n textarea.style.width = holder.offsetWidth + 'px';\r\n textarea.style.height = holder.offsetHeight + 'px';\r\n holder.onresize = function () {\r\n textarea.style.width = holder.offsetWidth + 'px';\r\n textarea.style.height = holder.offsetHeight + 'px';\r\n };\r\n }\r\n holder.appendChild(textarea);\r\n return {\r\n setContent: function (content) {\r\n textarea.value = content;\r\n },\r\n getContent: function () {\r\n return textarea.value;\r\n },\r\n select: function () {\r\n var range;\r\n if (browser.ie) {\r\n range = textarea.createTextRange();\r\n range.collapse(true);\r\n range.select();\r\n } else {\r\n //todo: chrome下无法设置焦点\r\n textarea.setSelectionRange(0, 0);\r\n textarea.focus();\r\n }\r\n },\r\n dispose: function () {\r\n holder.removeChild(textarea);\r\n // todo\r\n holder.onresize = null;\r\n textarea = null;\r\n holder = null;\r\n }\r\n };\r\n },\r\n codemirror: function (editor, holder) {\r\n\r\n var codeEditor = window.CodeMirror(holder, {\r\n mode: \"text/html\",\r\n tabMode: \"indent\",\r\n lineNumbers: true,\r\n lineWrapping: true\r\n });\r\n var dom = codeEditor.getWrapperElement();\r\n dom.style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,\"Courier new\",monospace;font-size:13px;';\r\n codeEditor.getScrollerElement().style.cssText = 'position:absolute;left:0;top:0;width:100%;height:100%;';\r\n codeEditor.refresh();\r\n return {\r\n getCodeMirror: function () {\r\n return codeEditor;\r\n },\r\n setContent: function (content) {\r\n codeEditor.setValue(content);\r\n },\r\n getContent: function () {\r\n return codeEditor.getValue();\r\n },\r\n select: function () {\r\n codeEditor.focus();\r\n },\r\n dispose: function () {\r\n holder.removeChild(dom);\r\n dom = null;\r\n codeEditor = null;\r\n }\r\n };\r\n }\r\n };\r\n\r\n UE.plugins['source'] = function () {\r\n var me = this;\r\n var opt = this.options;\r\n var sourceMode = false;\r\n var sourceEditor;\r\n var orgSetContent;\r\n opt.sourceEditor = browser.ie ? 'textarea' : (opt.sourceEditor || 'codemirror');\r\n\r\n me.setOpt({\r\n sourceEditorFirst: false\r\n });\r\n\r\n function createSourceEditor(holder) {\r\n return sourceEditors[opt.sourceEditor == 'codemirror' && window.CodeMirror ? 'codemirror' : 'textarea'](me, holder);\r\n }\r\n\r\n var bakCssText;\r\n //解决在源码模式下getContent不能得到最新的内容问题\r\n var oldGetContent,\r\n bakAddress;\r\n\r\n /**\r\n * 切换源码模式和编辑模式\r\n * @command source\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'source');\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前编辑区域的状态是源码模式还是可视化模式\r\n * @command source\r\n * @method queryCommandState\r\n * @param { String } cmd 命令字符串\r\n * @return { int } 如果当前是源码编辑模式,返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandState( 'source' );\r\n * ```\r\n */\r\n\r\n me.commands['source'] = {\r\n execCommand: function () {\r\n\r\n sourceMode = !sourceMode;\r\n if (sourceMode) {\r\n bakAddress = me.selection.getRange().createAddress(false, true);\r\n me.undoManger && me.undoManger.save(true);\r\n if (browser.gecko) {\r\n me.body.contentEditable = false;\r\n }\r\n\r\n bakCssText = me.iframe.style.cssText;\r\n me.iframe.style.cssText += 'position:absolute;left:-32768px;top:-32768px;';\r\n\r\n\r\n me.fireEvent('beforegetcontent');\r\n var root = UE.htmlparser(me.body.innerHTML);\r\n me.filterOutputRule(root);\r\n root.traversal(function (node) {\r\n if (node.type == 'element') {\r\n switch (node.tagName) {\r\n case 'td':\r\n case 'th':\r\n case 'caption':\r\n if (node.children && node.children.length == 1) {\r\n if (node.firstChild().tagName == 'br') {\r\n node.removeChild(node.firstChild())\r\n }\r\n };\r\n break;\r\n case 'pre':\r\n node.innerText(node.innerText().replace(/ /g, ' '))\r\n\r\n }\r\n }\r\n });\r\n\r\n me.fireEvent('aftergetcontent');\r\n\r\n var content = root.toHtml(true);\r\n\r\n sourceEditor = createSourceEditor(me.iframe.parentNode);\r\n\r\n sourceEditor.setContent(content);\r\n\r\n orgSetContent = me.setContent;\r\n\r\n me.setContent = function (html) {\r\n //这里暂时不触发事件,防止报错\r\n var root = UE.htmlparser(html);\r\n me.filterInputRule(root);\r\n html = root.toHtml();\r\n sourceEditor.setContent(html);\r\n };\r\n\r\n setTimeout(function () {\r\n sourceEditor.select();\r\n me.addListener('fullscreenchanged', function () {\r\n try {\r\n sourceEditor.getCodeMirror().refresh()\r\n } catch (e) {}\r\n });\r\n });\r\n\r\n //重置getContent,源码模式下取值也能是最新的数据\r\n oldGetContent = me.getContent;\r\n me.getContent = function () {\r\n return sourceEditor.getContent() || '

    ' + (browser.ie ? '' : '
    ') + '

    ';\r\n };\r\n } else {\r\n me.iframe.style.cssText = bakCssText;\r\n var cont = sourceEditor.getContent() || '

    ' + (browser.ie ? '' : '
    ') + '

    ';\r\n //处理掉block节点前后的空格,有可能会误命中,暂时不考虑\r\n cont = cont.replace(new RegExp('[\\\\r\\\\t\\\\n ]*<\\/?(\\\\w+)\\\\s*(?:[^>]*)>', 'g'), function (a, b) {\r\n if (b && !dtd.$inlineWithA[b.toLowerCase()]) {\r\n return a.replace(/(^[\\n\\r\\t ]*)|([\\n\\r\\t ]*$)/g, '');\r\n }\r\n return a.replace(/(^[\\n\\r\\t]*)|([\\n\\r\\t]*$)/g, '')\r\n });\r\n\r\n me.setContent = orgSetContent;\r\n\r\n me.setContent(cont);\r\n sourceEditor.dispose();\r\n sourceEditor = null;\r\n //还原getContent方法\r\n me.getContent = oldGetContent;\r\n var first = me.body.firstChild;\r\n //trace:1106 都删除空了,下边会报错,所以补充一个p占位\r\n if (!first) {\r\n me.body.innerHTML = '

    ' + (browser.ie ? '' : '
    ') + '

    ';\r\n first = me.body.firstChild;\r\n }\r\n\r\n\r\n //要在ifm为显示时ff才能取到selection,否则报错\r\n //这里不能比较位置了\r\n me.undoManger && me.undoManger.save(true);\r\n\r\n if (browser.gecko) {\r\n\r\n var input = document.createElement('input');\r\n input.style.cssText = 'position:absolute;left:0;top:-32768px';\r\n\r\n document.body.appendChild(input);\r\n\r\n me.body.contentEditable = false;\r\n setTimeout(function () {\r\n domUtils.setViewportOffset(input, {\r\n left: -32768,\r\n top: 0\r\n });\r\n input.focus();\r\n setTimeout(function () {\r\n me.body.contentEditable = true;\r\n me.selection.getRange().moveToAddress(bakAddress).select(true);\r\n domUtils.remove(input);\r\n });\r\n\r\n });\r\n } else {\r\n //ie下有可能报错,比如在代码顶头的情况\r\n try {\r\n me.selection.getRange().moveToAddress(bakAddress).select(true);\r\n } catch (e) {}\r\n\r\n }\r\n }\r\n this.fireEvent('sourcemodechanged', sourceMode);\r\n },\r\n queryCommandState: function () {\r\n return sourceMode | 0;\r\n },\r\n notNeedUndo: 1\r\n };\r\n var oldQueryCommandState = me.queryCommandState;\r\n\r\n me.queryCommandState = function (cmdName) {\r\n cmdName = cmdName.toLowerCase();\r\n if (sourceMode) {\r\n //源码模式下可以开启的命令\r\n return cmdName in {\r\n 'source': 1,\r\n 'fullscreen': 1\r\n } ? 1 : -1\r\n }\r\n return oldQueryCommandState.apply(this, arguments);\r\n };\r\n\r\n if (opt.sourceEditor == \"codemirror\") {\r\n\r\n me.addListener(\"ready\", function () {\r\n utils.loadFile(document, {\r\n src: opt.codeMirrorJsUrl || opt.UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.js\",\r\n tag: \"script\",\r\n type: \"text/javascript\",\r\n defer: \"defer\"\r\n }, function () {\r\n if (opt.sourceEditorFirst) {\r\n setTimeout(function () {\r\n me.execCommand(\"source\");\r\n }, 0);\r\n }\r\n });\r\n utils.loadFile(document, {\r\n tag: \"link\",\r\n rel: \"stylesheet\",\r\n type: \"text/css\",\r\n href: opt.codeMirrorCssUrl || opt.UEDITOR_HOME_URL + \"third-party/codemirror/codemirror.css\"\r\n });\r\n\r\n });\r\n }\r\n\r\n };\r\n\r\n })();\r\n\r\n // plugins/enterkey.js\r\n ///import core\r\n ///import plugins/undo.js\r\n ///commands 设置回车标签p或br\r\n ///commandsName EnterKey\r\n ///commandsTitle 设置回车标签p或br\r\n /**\r\n * @description 处理回车\r\n * @author zhanyi\r\n */\r\n UE.plugins['enterkey'] = function () {\r\n var hTag,\r\n me = this,\r\n tag = me.options.enterTag;\r\n me.addListener('keyup', function (type, evt) {\r\n\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) {\r\n var range = me.selection.getRange(),\r\n start = range.startContainer,\r\n doSave;\r\n\r\n //修正在h1-h6里边回车后不能嵌套p的问题\r\n if (!browser.ie) {\r\n\r\n if (/h\\d/i.test(hTag)) {\r\n if (browser.gecko) {\r\n var h = domUtils.findParentByTagName(start, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'caption', 'table'], true);\r\n if (!h) {\r\n me.document.execCommand('formatBlock', false, '

    ');\r\n doSave = 1;\r\n }\r\n } else {\r\n //chrome remove div\r\n if (start.nodeType == 1) {\r\n var tmp = me.document.createTextNode(''),\r\n div;\r\n range.insertNode(tmp);\r\n div = domUtils.findParentByTagName(tmp, 'div', true);\r\n if (div) {\r\n var p = me.document.createElement('p');\r\n while (div.firstChild) {\r\n p.appendChild(div.firstChild);\r\n }\r\n div.parentNode.insertBefore(p, div);\r\n domUtils.remove(div);\r\n range.setStartBefore(tmp).setCursor();\r\n doSave = 1;\r\n }\r\n domUtils.remove(tmp);\r\n\r\n }\r\n }\r\n\r\n if (me.undoManger && doSave) {\r\n me.undoManger.save();\r\n }\r\n }\r\n //没有站位符,会出现多行的问题\r\n browser.opera && range.select();\r\n } else {\r\n me.fireEvent('saveScene', true, true)\r\n }\r\n }\r\n });\r\n\r\n me.addListener('keydown', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 13) { //回车\r\n if (me.fireEvent('beforeenterkeydown')) {\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n me.fireEvent('saveScene', true, true);\r\n hTag = '';\r\n\r\n\r\n var range = me.selection.getRange();\r\n\r\n if (!range.collapsed) {\r\n //跨td不能删\r\n var start = range.startContainer,\r\n end = range.endContainer,\r\n startTd = domUtils.findParentByTagName(start, 'td', true),\r\n endTd = domUtils.findParentByTagName(end, 'td', true);\r\n if (startTd && endTd && startTd !== endTd || !startTd && endTd || startTd && !endTd) {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n return;\r\n }\r\n }\r\n if (tag == 'p') {\r\n\r\n\r\n if (!browser.ie) {\r\n\r\n start = domUtils.findParentByTagName(range.startContainer, ['ol', 'ul', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'caption'], true);\r\n\r\n //opera下执行formatblock会在table的场景下有问题,回车在opera原生支持很好,所以暂时在opera去掉调用这个原生的command\r\n //trace:2431\r\n if (!start && !browser.opera) {\r\n\r\n me.document.execCommand('formatBlock', false, '

    ');\r\n\r\n if (browser.gecko) {\r\n range = me.selection.getRange();\r\n start = domUtils.findParentByTagName(range.startContainer, 'p', true);\r\n start && domUtils.removeDirtyAttr(start);\r\n }\r\n\r\n\r\n } else {\r\n hTag = start.tagName;\r\n start.tagName.toLowerCase() == 'p' && browser.gecko && domUtils.removeDirtyAttr(start);\r\n }\r\n\r\n }\r\n\r\n } else {\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n\r\n if (!range.collapsed) {\r\n range.deleteContents();\r\n start = range.startContainer;\r\n if (start.nodeType == 1 && (start = start.childNodes[range.startOffset])) {\r\n while (start.nodeType == 1) {\r\n if (dtd.$empty[start.tagName]) {\r\n range.setStartBefore(start).setCursor();\r\n if (me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n return false;\r\n }\r\n if (!start.firstChild) {\r\n var br = range.document.createElement('br');\r\n start.appendChild(br);\r\n range.setStart(start, 0).setCursor();\r\n if (me.undoManger) {\r\n me.undoManger.save();\r\n }\r\n return false;\r\n }\r\n start = start.firstChild;\r\n }\r\n if (start === range.startContainer.childNodes[range.startOffset]) {\r\n br = range.document.createElement('br');\r\n range.insertNode(br).setCursor();\r\n\r\n } else {\r\n range.setStart(start, 0).setCursor();\r\n }\r\n\r\n\r\n } else {\r\n br = range.document.createElement('br');\r\n range.insertNode(br).setStartAfter(br).setCursor();\r\n }\r\n\r\n\r\n } else {\r\n br = range.document.createElement('br');\r\n range.insertNode(br);\r\n var parent = br.parentNode;\r\n if (parent.lastChild === br) {\r\n br.parentNode.insertBefore(br.cloneNode(true), br);\r\n range.setStartBefore(br);\r\n } else {\r\n range.setStartAfter(br);\r\n }\r\n range.setCursor();\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n });\r\n };\r\n\r\n\r\n // plugins/keystrokes.js\r\n /* 处理特殊键的兼容性问题 */\r\n UE.plugins['keystrokes'] = function () {\r\n var me = this;\r\n var collapsed = true;\r\n me.addListener('keydown', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which,\r\n rng = me.selection.getRange();\r\n\r\n //处理全选的情况\r\n if (!rng.collapsed && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && (keyCode >= 65 && keyCode <= 90 ||\r\n keyCode >= 48 && keyCode <= 57 ||\r\n keyCode >= 96 && keyCode <= 111 || {\r\n 13: 1,\r\n 8: 1,\r\n 46: 1\r\n } [keyCode])) {\r\n\r\n var tmpNode = rng.startContainer;\r\n if (domUtils.isFillChar(tmpNode)) {\r\n rng.setStartBefore(tmpNode)\r\n }\r\n tmpNode = rng.endContainer;\r\n if (domUtils.isFillChar(tmpNode)) {\r\n rng.setEndAfter(tmpNode)\r\n }\r\n rng.txtToElmBoundary();\r\n //结束边界可能放到了br的前边,要把br包含进来\r\n // x[xxx]
    \r\n if (rng.endContainer && rng.endContainer.nodeType == 1) {\r\n tmpNode = rng.endContainer.childNodes[rng.endOffset];\r\n if (tmpNode && domUtils.isBr(tmpNode)) {\r\n rng.setEndAfter(tmpNode);\r\n }\r\n }\r\n if (rng.startOffset == 0) {\r\n tmpNode = rng.startContainer;\r\n if (domUtils.isBoundaryNode(tmpNode, 'firstChild')) {\r\n tmpNode = rng.endContainer;\r\n if (rng.endOffset == (tmpNode.nodeType == 3 ? tmpNode.nodeValue.length : tmpNode.childNodes.length) && domUtils.isBoundaryNode(tmpNode, 'lastChild')) {\r\n me.fireEvent('saveScene');\r\n me.body.innerHTML = '

    ' + (browser.ie ? '' : '
    ') + '

    ';\r\n rng.setStart(me.body.firstChild, 0).setCursor(false, true);\r\n me._selectionChange();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //处理backspace\r\n if (keyCode == keymap.Backspace) {\r\n rng = me.selection.getRange();\r\n collapsed = rng.collapsed;\r\n if (me.fireEvent('delkeydown', evt)) {\r\n return;\r\n }\r\n var start, end;\r\n //避免按两次删除才能生效的问题\r\n if (rng.collapsed && rng.inFillChar()) {\r\n start = rng.startContainer;\r\n\r\n if (domUtils.isFillChar(start)) {\r\n rng.setStartBefore(start).shrinkBoundary(true).collapse(true);\r\n domUtils.remove(start)\r\n } else {\r\n start.nodeValue = start.nodeValue.replace(new RegExp('^' + domUtils.fillChar), '');\r\n rng.startOffset--;\r\n rng.collapse(true).select(true)\r\n }\r\n }\r\n\r\n //解决选中control元素不能删除的问题\r\n if (start = rng.getClosedNode()) {\r\n me.fireEvent('saveScene');\r\n rng.setStartBefore(start);\r\n domUtils.remove(start);\r\n rng.setCursor();\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n //阻止在table上的删除\r\n if (!browser.ie) {\r\n start = domUtils.findParentByTagName(rng.startContainer, 'table', true);\r\n end = domUtils.findParentByTagName(rng.endContainer, 'table', true);\r\n if (start && !end || !start && end || start !== end) {\r\n evt.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n }\r\n //处理tab键的逻辑\r\n if (keyCode == keymap.Tab) {\r\n //不处理以下标签\r\n var excludeTagNameForTabKey = {\r\n 'ol': 1,\r\n 'ul': 1,\r\n 'table': 1\r\n };\r\n //处理组件里的tab按下事件\r\n if (me.fireEvent('tabkeydown', evt)) {\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n var range = me.selection.getRange();\r\n me.fireEvent('saveScene');\r\n for (var i = 0, txt = '', tabSize = me.options.tabSize || 4, tabNode = me.options.tabNode || ' '; i < tabSize; i++) {\r\n txt += tabNode;\r\n }\r\n var span = me.document.createElement('span');\r\n span.innerHTML = txt + domUtils.fillChar;\r\n if (range.collapsed) {\r\n range.insertNode(span.cloneNode(true).firstChild).setCursor(true);\r\n } else {\r\n var filterFn = function (node) {\r\n return domUtils.isBlockElm(node) && !excludeTagNameForTabKey[node.tagName.toLowerCase()]\r\n\r\n };\r\n //普通的情况\r\n start = domUtils.findParent(range.startContainer, filterFn, true);\r\n end = domUtils.findParent(range.endContainer, filterFn, true);\r\n if (start && end && start === end) {\r\n range.deleteContents();\r\n range.insertNode(span.cloneNode(true).firstChild).setCursor(true);\r\n } else {\r\n var bookmark = range.createBookmark();\r\n range.enlarge(true);\r\n var bookmark2 = range.createBookmark(),\r\n current = domUtils.getNextDomNode(bookmark2.start, false, filterFn);\r\n while (current && !(domUtils.getPosition(current, bookmark2.end) & domUtils.POSITION_FOLLOWING)) {\r\n current.insertBefore(span.cloneNode(true).firstChild, current.firstChild);\r\n current = domUtils.getNextDomNode(current, false, filterFn);\r\n }\r\n range.moveToBookmark(bookmark2).moveToBookmark(bookmark).select();\r\n }\r\n }\r\n domUtils.preventDefault(evt)\r\n }\r\n //trace:1634\r\n //ff的del键在容器空的时候,也会删除\r\n if (browser.gecko && keyCode == 46) {\r\n range = me.selection.getRange();\r\n if (range.collapsed) {\r\n start = range.startContainer;\r\n if (domUtils.isEmptyBlock(start)) {\r\n var parent = start.parentNode;\r\n while (domUtils.getChildCount(parent) == 1 && !domUtils.isBody(parent)) {\r\n start = parent;\r\n parent = parent.parentNode;\r\n }\r\n if (start === parent.lastChild)\r\n evt.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which,\r\n rng, me = this;\r\n if (keyCode == keymap.Backspace) {\r\n if (me.fireEvent('delkeyup')) {\r\n return;\r\n }\r\n rng = me.selection.getRange();\r\n if (rng.collapsed) {\r\n var tmpNode,\r\n autoClearTagName = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\r\n if (tmpNode = domUtils.findParentByTagName(rng.startContainer, autoClearTagName, true)) {\r\n if (domUtils.isEmptyBlock(tmpNode)) {\r\n var pre = tmpNode.previousSibling;\r\n if (pre && pre.nodeName != 'TABLE') {\r\n domUtils.remove(tmpNode);\r\n rng.setStartAtLast(pre).setCursor(false, true);\r\n return;\r\n } else {\r\n var next = tmpNode.nextSibling;\r\n if (next && next.nodeName != 'TABLE') {\r\n domUtils.remove(tmpNode);\r\n rng.setStartAtFirst(next).setCursor(false, true);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n //处理当删除到body时,要重新给p标签展位\r\n if (domUtils.isBody(rng.startContainer)) {\r\n var tmpNode = domUtils.createElement(me.document, 'p', {\r\n 'innerHTML': browser.ie ? domUtils.fillChar : '
    '\r\n });\r\n rng.insertNode(tmpNode).setStart(tmpNode, 0).setCursor(false, true);\r\n }\r\n }\r\n\r\n\r\n //chrome下如果删除了inline标签,浏览器会有记忆,在输入文字还是会套上刚才删除的标签,所以这里再选一次就不会了\r\n if (!collapsed && (rng.startContainer.nodeType == 3 || rng.startContainer.nodeType == 1 && domUtils.isEmptyBlock(rng.startContainer))) {\r\n if (browser.ie) {\r\n var span = rng.document.createElement('span');\r\n rng.insertNode(span).setStartBefore(span).collapse(true);\r\n rng.select();\r\n domUtils.remove(span)\r\n } else {\r\n rng.select()\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n })\r\n };\r\n\r\n // plugins/fiximgclick.js\r\n ///import core\r\n ///commands 修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n ///commandsName FixImgClick\r\n ///commandsTitle 修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n //修复chrome下图片不能点击的问题,出现八个角可改变大小\r\n\r\n UE.plugins['fiximgclick'] = (function () {\r\n\r\n var elementUpdated = false;\r\n\r\n function Scale() {\r\n this.editor = null;\r\n this.resizer = null;\r\n this.cover = null;\r\n this.doc = document;\r\n this.prePos = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.startPos = {\r\n x: 0,\r\n y: 0\r\n };\r\n }\r\n\r\n (function () {\r\n var rect = [\r\n //[left, top, width, height]\r\n [0, 0, -1, -1],\r\n [0, 0, 0, -1],\r\n [0, 0, 1, -1],\r\n [0, 0, -1, 0],\r\n [0, 0, 1, 0],\r\n [0, 0, -1, 1],\r\n [0, 0, 0, 1],\r\n [0, 0, 1, 1]\r\n ];\r\n\r\n Scale.prototype = {\r\n init: function (editor) {\r\n var me = this;\r\n me.editor = editor;\r\n me.startPos = this.prePos = {\r\n x: 0,\r\n y: 0\r\n };\r\n me.dragId = -1;\r\n\r\n var hands = [],\r\n cover = me.cover = document.createElement('div'),\r\n resizer = me.resizer = document.createElement('div');\r\n\r\n cover.id = me.editor.ui.id + '_imagescale_cover';\r\n cover.style.cssText = 'position:absolute;display:none;z-index:' + (me.editor.options.zIndex) + ';filter:alpha(opacity=0); opacity:0;background:#CCC;';\r\n domUtils.on(cover, 'mousedown click', function () {\r\n me.hide();\r\n });\r\n\r\n for (i = 0; i < 8; i++) {\r\n hands.push('');\r\n }\r\n resizer.id = me.editor.ui.id + '_imagescale';\r\n resizer.className = 'edui-editor-imagescale';\r\n resizer.innerHTML = hands.join('');\r\n resizer.style.cssText += ';display:none;border:1px solid #3b77ff;z-index:' + (me.editor.options.zIndex) + ';';\r\n\r\n me.editor.ui.getDom().appendChild(cover);\r\n me.editor.ui.getDom().appendChild(resizer);\r\n\r\n me.initStyle();\r\n me.initEvents();\r\n },\r\n initStyle: function () {\r\n utils.cssRule('imagescale', '.edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}' +\r\n '.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}' +\r\n '.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}');\r\n },\r\n initEvents: function () {\r\n var me = this;\r\n\r\n me.startPos.x = me.startPos.y = 0;\r\n me.isDraging = false;\r\n },\r\n _eventHandler: function (e) {\r\n var me = this;\r\n switch (e.type) {\r\n case 'mousedown':\r\n var hand = e.target || e.srcElement,\r\n hand;\r\n if (hand.className.indexOf('edui-editor-imagescale-hand') != -1 && me.dragId == -1) {\r\n me.dragId = hand.className.slice(-1);\r\n me.startPos.x = me.prePos.x = e.clientX;\r\n me.startPos.y = me.prePos.y = e.clientY;\r\n domUtils.on(me.doc, 'mousemove', me.proxy(me._eventHandler, me));\r\n }\r\n break;\r\n case 'mousemove':\r\n if (me.dragId != -1) {\r\n me.updateContainerStyle(me.dragId, {\r\n x: e.clientX - me.prePos.x,\r\n y: e.clientY - me.prePos.y\r\n });\r\n me.prePos.x = e.clientX;\r\n me.prePos.y = e.clientY;\r\n elementUpdated = true;\r\n me.updateTargetElement();\r\n\r\n }\r\n break;\r\n case 'mouseup':\r\n if (me.dragId != -1) {\r\n me.updateContainerStyle(me.dragId, {\r\n x: e.clientX - me.prePos.x,\r\n y: e.clientY - me.prePos.y\r\n });\r\n me.updateTargetElement();\r\n if (me.target.parentNode) me.attachTo(me.target);\r\n me.dragId = -1;\r\n }\r\n domUtils.un(me.doc, 'mousemove', me.proxy(me._eventHandler, me));\r\n //修复只是点击挪动点,但没有改变大小,不应该触发contentchange\r\n if (elementUpdated) {\r\n elementUpdated = false;\r\n me.editor.fireEvent('contentchange');\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n updateTargetElement: function () {\r\n var me = this;\r\n domUtils.setStyles(me.target, {\r\n 'width': me.resizer.style.width,\r\n 'height': me.resizer.style.height\r\n });\r\n me.target.width = parseInt(me.resizer.style.width);\r\n me.target.height = parseInt(me.resizer.style.height);\r\n me.attachTo(me.target);\r\n },\r\n updateContainerStyle: function (dir, offset) {\r\n var me = this,\r\n dom = me.resizer,\r\n tmp;\r\n\r\n if (rect[dir][0] != 0) {\r\n tmp = parseInt(dom.style.left) + offset.x;\r\n dom.style.left = me._validScaledProp('left', tmp) + 'px';\r\n }\r\n if (rect[dir][1] != 0) {\r\n tmp = parseInt(dom.style.top) + offset.y;\r\n dom.style.top = me._validScaledProp('top', tmp) + 'px';\r\n }\r\n if (rect[dir][2] != 0) {\r\n tmp = dom.clientWidth + rect[dir][2] * offset.x;\r\n dom.style.width = me._validScaledProp('width', tmp) + 'px';\r\n }\r\n if (rect[dir][3] != 0) {\r\n tmp = dom.clientHeight + rect[dir][3] * offset.y;\r\n dom.style.height = me._validScaledProp('height', tmp) + 'px';\r\n }\r\n },\r\n _validScaledProp: function (prop, value) {\r\n var ele = this.resizer,\r\n wrap = document;\r\n\r\n value = isNaN(value) ? 0 : value;\r\n switch (prop) {\r\n case 'left':\r\n return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value;\r\n case 'top':\r\n return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value;\r\n case 'width':\r\n return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value;\r\n case 'height':\r\n return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value;\r\n }\r\n },\r\n hideCover: function () {\r\n this.cover.style.display = 'none';\r\n },\r\n showCover: function () {\r\n var me = this,\r\n editorPos = domUtils.getXY(me.editor.ui.getDom()),\r\n iframePos = domUtils.getXY(me.editor.iframe);\r\n\r\n domUtils.setStyles(me.cover, {\r\n 'width': me.editor.iframe.offsetWidth + 'px',\r\n 'height': me.editor.iframe.offsetHeight + 'px',\r\n 'top': iframePos.y - editorPos.y + 'px',\r\n 'left': iframePos.x - editorPos.x + 'px',\r\n 'position': 'absolute',\r\n 'display': ''\r\n })\r\n },\r\n show: function (targetObj) {\r\n var me = this;\r\n me.resizer.style.display = 'block';\r\n if (targetObj) me.attachTo(targetObj);\r\n\r\n domUtils.on(this.resizer, 'mousedown', me.proxy(me._eventHandler, me));\r\n domUtils.on(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\r\n\r\n me.showCover();\r\n me.editor.fireEvent('afterscaleshow', me);\r\n me.editor.fireEvent('saveScene');\r\n },\r\n hide: function () {\r\n var me = this;\r\n me.hideCover();\r\n me.resizer.style.display = 'none';\r\n\r\n domUtils.un(me.resizer, 'mousedown', me.proxy(me._eventHandler, me));\r\n domUtils.un(me.doc, 'mouseup', me.proxy(me._eventHandler, me));\r\n me.editor.fireEvent('afterscalehide', me);\r\n },\r\n proxy: function (fn, context) {\r\n return function (e) {\r\n return fn.apply(context || this, arguments);\r\n };\r\n },\r\n attachTo: function (targetObj) {\r\n var me = this,\r\n target = me.target = targetObj,\r\n resizer = this.resizer,\r\n imgPos = domUtils.getXY(target),\r\n iframePos = domUtils.getXY(me.editor.iframe),\r\n editorPos = domUtils.getXY(resizer.parentNode);\r\n\r\n domUtils.setStyles(resizer, {\r\n 'width': target.width + 'px',\r\n 'height': target.height + 'px',\r\n 'left': iframePos.x + imgPos.x - me.editor.document.body.scrollLeft - editorPos.x - parseInt(resizer.style.borderLeftWidth) + 'px',\r\n 'top': iframePos.y + imgPos.y - me.editor.document.body.scrollTop - editorPos.y - parseInt(resizer.style.borderTopWidth) + 'px'\r\n });\r\n }\r\n }\r\n })();\r\n\r\n return function () {\r\n var me = this,\r\n imageScale;\r\n\r\n me.setOpt('imageScaleEnabled', true);\r\n\r\n if (!browser.ie && me.options.imageScaleEnabled) {\r\n me.addListener('click', function (type, e) {\r\n\r\n var range = me.selection.getRange(),\r\n img = range.getClosedNode();\r\n\r\n if (img && img.tagName == 'IMG' && me.body.contentEditable != \"false\") {\r\n\r\n if (img.className.indexOf(\"edui-faked-music\") != -1 ||\r\n img.getAttribute(\"anchorname\") ||\r\n domUtils.hasClass(img, 'loadingclass') ||\r\n domUtils.hasClass(img, 'loaderrorclass')) {\r\n return\r\n }\r\n\r\n if (!imageScale) {\r\n imageScale = new Scale();\r\n imageScale.init(me);\r\n me.ui.getDom().appendChild(imageScale.resizer);\r\n\r\n var _keyDownHandler = function (e) {\r\n imageScale.hide();\r\n if (imageScale.target) me.selection.getRange().selectNode(imageScale.target).select();\r\n },\r\n _mouseDownHandler = function (e) {\r\n var ele = e.target || e.srcElement;\r\n if (ele && (ele.className === undefined || ele.className.indexOf('edui-editor-imagescale') == -1)) {\r\n _keyDownHandler(e);\r\n }\r\n },\r\n timer;\r\n\r\n me.addListener('afterscaleshow', function (e) {\r\n me.addListener('beforekeydown', _keyDownHandler);\r\n me.addListener('beforemousedown', _mouseDownHandler);\r\n domUtils.on(document, 'keydown', _keyDownHandler);\r\n domUtils.on(document, 'mousedown', _mouseDownHandler);\r\n me.selection.getNative().removeAllRanges();\r\n });\r\n me.addListener('afterscalehide', function (e) {\r\n me.removeListener('beforekeydown', _keyDownHandler);\r\n me.removeListener('beforemousedown', _mouseDownHandler);\r\n domUtils.un(document, 'keydown', _keyDownHandler);\r\n domUtils.un(document, 'mousedown', _mouseDownHandler);\r\n var target = imageScale.target;\r\n if (target.parentNode) {\r\n me.selection.getRange().selectNode(target).select();\r\n }\r\n });\r\n //TODO 有iframe的情况,mousedown不能往下传。。\r\n domUtils.on(imageScale.resizer, 'mousedown', function (e) {\r\n me.selection.getNative().removeAllRanges();\r\n var ele = e.target || e.srcElement;\r\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\r\n timer = setTimeout(function () {\r\n imageScale.hide();\r\n if (imageScale.target) me.selection.getRange().selectNode(ele).select();\r\n }, 200);\r\n }\r\n });\r\n domUtils.on(imageScale.resizer, 'mouseup', function (e) {\r\n var ele = e.target || e.srcElement;\r\n if (ele && ele.className.indexOf('edui-editor-imagescale-hand') == -1) {\r\n clearTimeout(timer);\r\n }\r\n });\r\n }\r\n imageScale.show(img);\r\n } else {\r\n if (imageScale && imageScale.resizer.style.display != 'none') imageScale.hide();\r\n }\r\n });\r\n }\r\n\r\n if (browser.webkit) {\r\n me.addListener('click', function (type, e) {\r\n if (e.target.tagName == 'IMG' && me.body.contentEditable != \"false\") {\r\n var range = new dom.Range(me.document);\r\n range.selectNode(e.target).select();\r\n }\r\n });\r\n }\r\n }\r\n })();\r\n\r\n // plugins/autolink.js\r\n ///import core\r\n ///commands 为非ie浏览器自动添加a标签\r\n ///commandsName AutoLink\r\n ///commandsTitle 自动增加链接\r\n /**\r\n * @description 为非ie浏览器自动添加a标签\r\n * @author zhanyi\r\n */\r\n\r\n UE.plugin.register('autolink', function () {\r\n var cont = 0;\r\n\r\n return !browser.ie ? {\r\n\r\n bindEvents: {\r\n 'reset': function () {\r\n cont = 0;\r\n },\r\n 'keydown': function (type, evt) {\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 32 || keyCode == 13) {\r\n\r\n var sel = me.selection.getNative(),\r\n range = sel.getRangeAt(0).cloneRange(),\r\n offset,\r\n charCode;\r\n\r\n var start = range.startContainer;\r\n while (start.nodeType == 1 && range.startOffset > 0) {\r\n start = range.startContainer.childNodes[range.startOffset - 1];\r\n if (!start) {\r\n break;\r\n }\r\n range.setStart(start, start.nodeType == 1 ? start.childNodes.length : start.nodeValue.length);\r\n range.collapse(true);\r\n start = range.startContainer;\r\n }\r\n\r\n do {\r\n if (range.startOffset == 0) {\r\n start = range.startContainer.previousSibling;\r\n\r\n while (start && start.nodeType == 1) {\r\n start = start.lastChild;\r\n }\r\n if (!start || domUtils.isFillChar(start)) {\r\n break;\r\n }\r\n offset = start.nodeValue.length;\r\n } else {\r\n start = range.startContainer;\r\n offset = range.startOffset;\r\n }\r\n range.setStart(start, offset - 1);\r\n charCode = range.toString().charCodeAt(0);\r\n } while (charCode != 160 && charCode != 32);\r\n\r\n if (range.toString().replace(new RegExp(domUtils.fillChar, 'g'), '').match(/(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i)) {\r\n while (range.toString().length) {\r\n if (/^(?:https?:\\/\\/|ssh:\\/\\/|ftp:\\/\\/|file:\\/|www\\.)/i.test(range.toString())) {\r\n break;\r\n }\r\n try {\r\n range.setStart(range.startContainer, range.startOffset + 1);\r\n } catch (e) {\r\n //trace:2121\r\n var start = range.startContainer;\r\n while (!(next = start.nextSibling)) {\r\n if (domUtils.isBody(start)) {\r\n return;\r\n }\r\n start = start.parentNode;\r\n\r\n }\r\n range.setStart(next, 0);\r\n\r\n }\r\n\r\n }\r\n //range的开始边界已经在a标签里的不再处理\r\n if (domUtils.findParentByTagName(range.startContainer, 'a', true)) {\r\n return;\r\n }\r\n var a = me.document.createElement('a'),\r\n text = me.document.createTextNode(' '),\r\n href;\r\n\r\n me.undoManger && me.undoManger.save();\r\n a.appendChild(range.extractContents());\r\n a.href = a.innerHTML = a.innerHTML.replace(/<[^>]+>/g, '');\r\n href = a.getAttribute(\"href\").replace(new RegExp(domUtils.fillChar, 'g'), '');\r\n href = /^(?:https?:\\/\\/)/ig.test(href) ? href : \"http://\" + href;\r\n a.setAttribute('_src', utils.html(href));\r\n a.href = utils.html(href);\r\n\r\n range.insertNode(a);\r\n a.parentNode.insertBefore(text, a.nextSibling);\r\n range.setStart(text, 0);\r\n range.collapse(true);\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n me.undoManger && me.undoManger.save();\r\n }\r\n }\r\n }\r\n }\r\n } : {}\r\n }, function () {\r\n var keyCodes = {\r\n 37: 1,\r\n 38: 1,\r\n 39: 1,\r\n 40: 1,\r\n 13: 1,\r\n 32: 1\r\n };\r\n\r\n function checkIsCludeLink(node) {\r\n if (node.nodeType == 3) {\r\n return null\r\n }\r\n if (node.nodeName == 'A') {\r\n return node;\r\n }\r\n var lastChild = node.lastChild;\r\n\r\n while (lastChild) {\r\n if (lastChild.nodeName == 'A') {\r\n return lastChild;\r\n }\r\n if (lastChild.nodeType == 3) {\r\n if (domUtils.isWhitespace(lastChild)) {\r\n lastChild = lastChild.previousSibling;\r\n continue;\r\n }\r\n return null\r\n }\r\n lastChild = lastChild.lastChild;\r\n }\r\n }\r\n browser.ie && this.addListener('keyup', function (cmd, evt) {\r\n var me = this,\r\n keyCode = evt.keyCode;\r\n if (keyCodes[keyCode]) {\r\n var rng = me.selection.getRange();\r\n var start = rng.startContainer;\r\n\r\n if (keyCode == 13) {\r\n while (start && !domUtils.isBody(start) && !domUtils.isBlockElm(start)) {\r\n start = start.parentNode;\r\n }\r\n if (start && !domUtils.isBody(start) && start.nodeName == 'P') {\r\n var pre = start.previousSibling;\r\n if (pre && pre.nodeType == 1) {\r\n var pre = checkIsCludeLink(pre);\r\n if (pre && !pre.getAttribute('_href')) {\r\n domUtils.remove(pre, true);\r\n }\r\n }\r\n }\r\n } else if (keyCode == 32) {\r\n if (start.nodeType == 3 && /^\\s$/.test(start.nodeValue)) {\r\n start = start.previousSibling;\r\n if (start && start.nodeName == 'A' && !start.getAttribute('_href')) {\r\n domUtils.remove(start, true);\r\n }\r\n }\r\n } else {\r\n start = domUtils.findParentByTagName(start, 'a', true);\r\n if (start && !start.getAttribute('_href')) {\r\n var bk = rng.createBookmark();\r\n\r\n domUtils.remove(start, true);\r\n rng.moveToBookmark(bk).select(true)\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n });\r\n });\r\n\r\n // plugins/autoheight.js\r\n ///import core\r\n ///commands 当输入内容超过编辑器高度时,编辑器自动增高\r\n ///commandsName AutoHeight,autoHeightEnabled\r\n ///commandsTitle 自动增高\r\n /**\r\n * @description 自动伸展\r\n * @author zhanyi\r\n */\r\n UE.plugins['autoheight'] = function () {\r\n var me = this;\r\n //提供开关,就算加载也可以关闭\r\n me.autoHeightEnabled = me.options.autoHeightEnabled !== false;\r\n if (!me.autoHeightEnabled) {\r\n return;\r\n }\r\n\r\n var bakOverflow,\r\n lastHeight = 0,\r\n options = me.options,\r\n currentHeight,\r\n timer;\r\n\r\n function adjustHeight() {\r\n var me = this;\r\n clearTimeout(timer);\r\n if (isFullscreen) return;\r\n if (!me.queryCommandState || me.queryCommandState && me.queryCommandState('source') != 1) {\r\n timer = setTimeout(function () {\r\n\r\n var node = me.body.lastChild;\r\n while (node && node.nodeType != 1) {\r\n node = node.previousSibling;\r\n }\r\n if (node && node.nodeType == 1) {\r\n node.style.clear = 'both';\r\n currentHeight = Math.max(domUtils.getXY(node).y + node.offsetHeight + 25, Math.max(options.minFrameHeight, options.initialFrameHeight));\r\n if (currentHeight != lastHeight) {\r\n if (currentHeight !== parseInt(me.iframe.parentNode.style.height)) {\r\n me.iframe.parentNode.style.height = currentHeight + 'px';\r\n }\r\n me.body.style.height = currentHeight + 'px';\r\n lastHeight = currentHeight;\r\n }\r\n domUtils.removeStyle(node, 'clear');\r\n }\r\n\r\n\r\n }, 50)\r\n }\r\n }\r\n var isFullscreen;\r\n me.addListener('fullscreenchanged', function (cmd, f) {\r\n isFullscreen = f\r\n });\r\n me.addListener('destroy', function () {\r\n me.removeListener('contentchange afterinserthtml keyup mouseup', adjustHeight)\r\n });\r\n me.enableAutoHeight = function () {\r\n var me = this;\r\n if (!me.autoHeightEnabled) {\r\n return;\r\n }\r\n var doc = me.document;\r\n me.autoHeightEnabled = true;\r\n bakOverflow = doc.body.style.overflowY;\r\n doc.body.style.overflowY = 'hidden';\r\n me.addListener('contentchange afterinserthtml keyup mouseup', adjustHeight);\r\n //ff不给事件算得不对\r\n\r\n setTimeout(function () {\r\n adjustHeight.call(me);\r\n }, browser.gecko ? 100 : 0);\r\n me.fireEvent('autoheightchanged', me.autoHeightEnabled);\r\n };\r\n me.disableAutoHeight = function () {\r\n\r\n me.body.style.overflowY = bakOverflow || '';\r\n\r\n me.removeListener('contentchange', adjustHeight);\r\n me.removeListener('keyup', adjustHeight);\r\n me.removeListener('mouseup', adjustHeight);\r\n me.autoHeightEnabled = false;\r\n me.fireEvent('autoheightchanged', me.autoHeightEnabled);\r\n };\r\n\r\n me.on('setHeight', function () {\r\n me.disableAutoHeight()\r\n });\r\n me.addListener('ready', function () {\r\n me.enableAutoHeight();\r\n //trace:1764\r\n var timer;\r\n domUtils.on(browser.ie ? me.body : me.document, browser.webkit ? 'dragover' : 'drop', function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n //trace:3681\r\n adjustHeight.call(me);\r\n }, 100);\r\n\r\n });\r\n //修复内容过多时,回到顶部,顶部内容被工具栏遮挡问题\r\n var lastScrollY;\r\n window.onscroll = function () {\r\n if (lastScrollY === null) {\r\n lastScrollY = this.scrollY\r\n } else if (this.scrollY == 0 && lastScrollY != 0) {\r\n me.window.scrollTo(0, 0);\r\n lastScrollY = null;\r\n }\r\n }\r\n });\r\n\r\n\r\n };\r\n\r\n\r\n\r\n // plugins/autofloat.js\r\n ///import core\r\n ///commands 悬浮工具栏\r\n ///commandsName AutoFloat,autoFloatEnabled\r\n ///commandsTitle 悬浮工具栏\r\n /**\r\n * modified by chengchao01\r\n * 注意: 引入此功能后,在IE6下会将body的背景图片覆盖掉!\r\n */\r\n UE.plugins['autofloat'] = function () {\r\n var me = this,\r\n lang = me.getLang();\r\n me.setOpt({\r\n topOffset: 0\r\n });\r\n var optsAutoFloatEnabled = me.options.autoFloatEnabled !== false,\r\n topOffset = me.options.topOffset;\r\n\r\n\r\n //如果不固定toolbar的位置,则直接退出\r\n if (!optsAutoFloatEnabled) {\r\n return;\r\n }\r\n var uiUtils = UE.ui.uiUtils,\r\n LteIE6 = browser.ie && browser.version <= 6,\r\n quirks = browser.quirks;\r\n\r\n function checkHasUI() {\r\n if (!UE.ui) {\r\n alert(lang.autofloatMsg);\r\n return 0;\r\n }\r\n return 1;\r\n }\r\n\r\n function fixIE6FixedPos() {\r\n var docStyle = document.body.style;\r\n docStyle.backgroundImage = 'url(\"about:blank\")';\r\n docStyle.backgroundAttachment = 'fixed';\r\n }\r\n var bakCssText,\r\n placeHolder = document.createElement('div'),\r\n toolbarBox, orgTop,\r\n getPosition,\r\n flag = true; //ie7模式下需要偏移\r\n function setFloating() {\r\n var toobarBoxPos = domUtils.getXY(toolbarBox),\r\n origalFloat = domUtils.getComputedStyle(toolbarBox, 'position'),\r\n origalLeft = domUtils.getComputedStyle(toolbarBox, 'left');\r\n toolbarBox.style.width = toolbarBox.offsetWidth + 'px';\r\n toolbarBox.style.zIndex = me.options.zIndex * 1 + 1;\r\n toolbarBox.parentNode.insertBefore(placeHolder, toolbarBox);\r\n if (LteIE6 || (quirks && browser.ie)) {\r\n if (toolbarBox.style.position != 'absolute') {\r\n toolbarBox.style.position = 'absolute';\r\n }\r\n toolbarBox.style.top = (document.body.scrollTop || document.documentElement.scrollTop) - orgTop + topOffset + 'px';\r\n } else {\r\n if (browser.ie7Compat && flag) {\r\n flag = false;\r\n toolbarBox.style.left = domUtils.getXY(toolbarBox).x - document.documentElement.getBoundingClientRect().left + 2 + 'px';\r\n }\r\n if (toolbarBox.style.position != 'fixed') {\r\n toolbarBox.style.position = 'fixed';\r\n toolbarBox.style.top = topOffset + \"px\";\r\n ((origalFloat == 'absolute' || origalFloat == 'relative') && parseFloat(origalLeft)) && (toolbarBox.style.left = toobarBoxPos.x + 'px');\r\n }\r\n }\r\n }\r\n\r\n function unsetFloating() {\r\n flag = true;\r\n if (placeHolder.parentNode) {\r\n placeHolder.parentNode.removeChild(placeHolder);\r\n }\r\n\r\n toolbarBox.style.cssText = bakCssText;\r\n }\r\n\r\n function updateFloating() {\r\n var rect3 = getPosition(me.container);\r\n var offset = me.options.toolbarTopOffset || 0;\r\n if (rect3.top < 0 && rect3.bottom - toolbarBox.offsetHeight > offset) {\r\n setFloating();\r\n } else {\r\n unsetFloating();\r\n }\r\n }\r\n var defer_updateFloating = utils.defer(function () {\r\n updateFloating();\r\n }, browser.ie ? 200 : 100, true);\r\n\r\n me.addListener('destroy', function () {\r\n domUtils.un(window, ['scroll', 'resize'], updateFloating);\r\n me.removeListener('keydown', defer_updateFloating);\r\n });\r\n\r\n me.addListener('ready', function () {\r\n if (checkHasUI(me)) {\r\n //加载了ui组件,但在new时,没有加载ui,导致编辑器实例上没有ui类,所以这里做判断\r\n if (!me.ui) {\r\n return;\r\n }\r\n getPosition = uiUtils.getClientRect;\r\n toolbarBox = me.ui.getDom('toolbarbox');\r\n orgTop = getPosition(toolbarBox).top;\r\n bakCssText = toolbarBox.style.cssText;\r\n placeHolder.style.height = toolbarBox.offsetHeight + 'px';\r\n if (LteIE6) {\r\n fixIE6FixedPos();\r\n }\r\n domUtils.on(window, ['scroll', 'resize'], updateFloating);\r\n me.addListener('keydown', defer_updateFloating);\r\n\r\n me.addListener('beforefullscreenchange', function (t, enabled) {\r\n if (enabled) {\r\n unsetFloating();\r\n }\r\n });\r\n me.addListener('fullscreenchanged', function (t, enabled) {\r\n if (!enabled) {\r\n updateFloating();\r\n }\r\n });\r\n me.addListener('sourcemodechanged', function (t, enabled) {\r\n setTimeout(function () {\r\n updateFloating();\r\n }, 0);\r\n });\r\n me.addListener(\"clearDoc\", function () {\r\n setTimeout(function () {\r\n updateFloating();\r\n }, 0);\r\n\r\n })\r\n }\r\n });\r\n };\r\n\r\n\r\n // plugins/video.js\r\n /**\r\n * video插件, 为UEditor提供视频插入支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n UE.plugins['video'] = function () {\r\n var me = this;\r\n\r\n /**\r\n * 创建插入视频字符窜\r\n * @param url 视频地址\r\n * @param width 视频宽度\r\n * @param height 视频高度\r\n * @param align 视频对齐\r\n * @param toEmbed 是否以flash代替显示\r\n * @param addParagraph 是否需要添加P 标签\r\n */\r\n function creatInsertStr(url, width, height, id, align, classname, type) {\r\n var str;\r\n switch (type) {\r\n case 'image':\r\n str = ''\r\n break;\r\n case 'embed':\r\n str = '';\r\n break;\r\n case 'video':\r\n var ext = url.substr(url.lastIndexOf('.') + 1);\r\n if (ext == 'ogv') ext = 'ogg';\r\n str = '' +\r\n '';\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n function switchImgAndVideo(root, img2video) {\r\n utils.each(root.getNodesByTagName(img2video ? 'img' : 'embed video'), function (node) {\r\n var className = node.getAttr('class');\r\n if (className && className.indexOf('edui-faked-video') != -1) {\r\n var html = creatInsertStr(img2video ? node.getAttr('_url') : node.getAttr('src'), node.getAttr('width'), node.getAttr('height'), null, node.getStyle('float') || '', className, img2video ? 'embed' : 'image');\r\n node.parentNode.replaceChild(UE.uNode.createElement(html), node);\r\n }\r\n if (className && className.indexOf('edui-upload-video') != -1) {\r\n var html = creatInsertStr(img2video ? node.getAttr('_url') : node.getAttr('src'), node.getAttr('width'), node.getAttr('height'), null, node.getStyle('float') || '', className, img2video ? 'video' : 'image');\r\n node.parentNode.replaceChild(UE.uNode.createElement(html), node);\r\n }\r\n })\r\n }\r\n\r\n me.addOutputRule(function (root) {\r\n switchImgAndVideo(root, true)\r\n });\r\n me.addInputRule(function (root) {\r\n switchImgAndVideo(root)\r\n });\r\n\r\n /**\r\n * 插入视频\r\n * @command insertvideo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } videoAttr 键值对对象, 描述一个视频的所有属性\r\n * @example\r\n * ```javascript\r\n *\r\n * var videoAttr = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * };\r\n *\r\n * //editor 是编辑器实例\r\n * //向编辑器插入单个视频\r\n * editor.execCommand( 'insertvideo', videoAttr );\r\n * ```\r\n */\r\n\r\n /**\r\n * 插入视频\r\n * @command insertvideo\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Array } videoArr 需要插入的视频的数组, 其中的每一个元素都是一个键值对对象, 描述了一个视频的所有属性\r\n * @example\r\n * ```javascript\r\n *\r\n * var videoAttr1 = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * },\r\n * videoAttr2 = {\r\n * //视频地址\r\n * url: 'http://www.youku.com/xxx',\r\n * //视频宽高值, 单位px\r\n * width: 200,\r\n * height: 100\r\n * }\r\n *\r\n * //editor 是编辑器实例\r\n * //该方法将会向编辑器内插入两个视频\r\n * editor.execCommand( 'insertvideo', [ videoAttr1, videoAttr2 ] );\r\n * ```\r\n */\r\n\r\n /**\r\n * 查询当前光标所在处是否是一个视频\r\n * @command insertvideo\r\n * @method queryCommandState\r\n * @param { String } cmd 需要查询的命令字符串\r\n * @return { int } 如果当前光标所在处的元素是一个视频对象, 则返回1,否则返回0\r\n * @example\r\n * ```javascript\r\n *\r\n * //editor 是编辑器实例\r\n * editor.queryCommandState( 'insertvideo' );\r\n * ```\r\n */\r\n me.commands[\"insertvideo\"] = {\r\n execCommand: function (cmd, videoObjs, type) {\r\n videoObjs = utils.isArray(videoObjs) ? videoObjs : [videoObjs];\r\n var html = [],\r\n id = 'tmpVedio',\r\n cl;\r\n for (var i = 0, vi, len = videoObjs.length; i < len; i++) {\r\n vi = videoObjs[i];\r\n cl = (type == 'upload' ? 'edui-upload-video video-js vjs-default-skin' : 'edui-faked-video');\r\n html.push(creatInsertStr(vi.url, vi.width || 420, vi.height || 280, id + i, null, cl, 'image'));\r\n }\r\n me.execCommand(\"inserthtml\", html.join(\"\"), true);\r\n var rng = this.selection.getRange();\r\n for (var i = 0, len = videoObjs.length; i < len; i++) {\r\n var img = this.document.getElementById('tmpVedio' + i);\r\n domUtils.removeAttributes(img, 'id');\r\n rng.selectNode(img).select();\r\n me.execCommand('imagefloat', videoObjs[i].align)\r\n }\r\n },\r\n queryCommandState: function () {\r\n var img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-video\" || img.className.indexOf(\"edui-upload-video\") != -1);\r\n return flag ? 1 : 0;\r\n }\r\n };\r\n };\r\n\r\n // plugins/table.core.js\r\n /**\r\n * Created with JetBrains WebStorm.\r\n * User: taoqili\r\n * Date: 13-1-18\r\n * Time: 上午11:09\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n /**\r\n * UE表格操作类\r\n * @param table\r\n * @constructor\r\n */\r\n (function () {\r\n var UETable = UE.UETable = function (table) {\r\n this.table = table;\r\n this.indexTable = [];\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n this.update(table);\r\n };\r\n\r\n //===以下为静态工具方法===\r\n UETable.removeSelectedClass = function (cells) {\r\n utils.each(cells, function (cell) {\r\n domUtils.removeClasses(cell, \"selectTdClass\");\r\n })\r\n };\r\n UETable.addSelectedClass = function (cells) {\r\n utils.each(cells, function (cell) {\r\n domUtils.addClass(cell, \"selectTdClass\");\r\n })\r\n };\r\n UETable.isEmptyBlock = function (node) {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\\s*$/, '').replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var i in dtd.$isNotEmpty)\r\n if (dtd.$isNotEmpty.hasOwnProperty(i)) {\r\n if (node.getElementsByTagName(i).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n };\r\n UETable.getWidth = function (cell) {\r\n if (!cell) return 0;\r\n return parseInt(domUtils.getComputedStyle(cell, \"width\"), 10);\r\n };\r\n\r\n /**\r\n * 获取单元格或者单元格组的“对齐”状态。 如果当前的检测对象是一个单元格组, 只有在满足所有单元格的 水平和竖直 对齐属性都相同的\r\n * 条件时才会返回其状态值,否则将返回null; 如果当前只检测了一个单元格, 则直接返回当前单元格的对齐状态;\r\n * @param table cell or table cells , 支持单个单元格dom对象 或者 单元格dom对象数组\r\n * @return { align: 'left' || 'right' || 'center', valign: 'top' || 'middle' || 'bottom' } 或者 null\r\n */\r\n UETable.getTableCellAlignState = function (cells) {\r\n\r\n !utils.isArray(cells) && (cells = [cells]);\r\n\r\n var result = {},\r\n status = ['align', 'valign'],\r\n tempStatus = null,\r\n isSame = true; //状态是否相同\r\n\r\n utils.each(cells, function (cellNode) {\r\n\r\n utils.each(status, function (currentState) {\r\n\r\n tempStatus = cellNode.getAttribute(currentState);\r\n\r\n if (!result[currentState] && tempStatus) {\r\n result[currentState] = tempStatus;\r\n } else if (!result[currentState] || (tempStatus !== result[currentState])) {\r\n isSame = false;\r\n return false;\r\n }\r\n\r\n });\r\n\r\n return isSame;\r\n\r\n });\r\n\r\n return isSame ? result : null;\r\n\r\n };\r\n\r\n /**\r\n * 根据当前选区获取相关的table信息\r\n * @return {Object}\r\n */\r\n UETable.getTableItemsByRange = function (editor) {\r\n var start = editor.selection.getStart();\r\n\r\n //ff下会选中bookmark\r\n if (start && start.id && start.id.indexOf('_baidu_bookmark_start_') === 0 && start.nextSibling) {\r\n start = start.nextSibling;\r\n }\r\n\r\n //在table或者td边缘有可能存在选中tr的情况\r\n var cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\"], true),\r\n tr = cell && cell.parentNode,\r\n caption = start && domUtils.findParentByTagName(start, 'caption', true),\r\n table = caption ? caption.parentNode : tr && tr.parentNode.parentNode;\r\n\r\n return {\r\n cell: cell,\r\n tr: tr,\r\n table: table,\r\n caption: caption\r\n }\r\n };\r\n UETable.getUETableBySelected = function (editor) {\r\n var table = UETable.getTableItemsByRange(editor).table;\r\n if (table && table.ueTable && table.ueTable.selectedTds.length) {\r\n return table.ueTable;\r\n }\r\n return null;\r\n };\r\n\r\n UETable.getDefaultValue = function (editor, table) {\r\n var borderMap = {\r\n thin: '0px',\r\n medium: '1px',\r\n thick: '2px'\r\n },\r\n tableBorder, tdPadding, tdBorder, tmpValue;\r\n if (!table) {\r\n table = editor.document.createElement('table');\r\n table.insertRow(0).insertCell(0).innerHTML = 'xxx';\r\n editor.body.appendChild(table);\r\n var td = table.getElementsByTagName('td')[0];\r\n tmpValue = domUtils.getComputedStyle(table, 'border-left-width');\r\n tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'padding-left');\r\n tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'border-left-width');\r\n tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n domUtils.remove(table);\r\n return {\r\n tableBorder: tableBorder,\r\n tdPadding: tdPadding,\r\n tdBorder: tdBorder\r\n };\r\n } else {\r\n td = table.getElementsByTagName('td')[0];\r\n tmpValue = domUtils.getComputedStyle(table, 'border-left-width');\r\n tableBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'padding-left');\r\n tdPadding = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n tmpValue = domUtils.getComputedStyle(td, 'border-left-width');\r\n tdBorder = parseInt(borderMap[tmpValue] || tmpValue, 10);\r\n return {\r\n tableBorder: tableBorder,\r\n tdPadding: tdPadding,\r\n tdBorder: tdBorder\r\n };\r\n }\r\n };\r\n /**\r\n * 根据当前点击的td或者table获取索引对象\r\n * @param tdOrTable\r\n */\r\n UETable.getUETable = function (tdOrTable) {\r\n var tag = tdOrTable.tagName.toLowerCase();\r\n tdOrTable = (tag == \"td\" || tag == \"th\" || tag == 'caption') ? domUtils.findParentByTagName(tdOrTable, \"table\", true) : tdOrTable;\r\n if (!tdOrTable.ueTable) {\r\n tdOrTable.ueTable = new UETable(tdOrTable);\r\n }\r\n return tdOrTable.ueTable;\r\n };\r\n\r\n UETable.cloneCell = function (cell, ignoreMerge, keepPro) {\r\n if (!cell || utils.isString(cell)) {\r\n return this.table.ownerDocument.createElement(cell || 'td');\r\n }\r\n var flag = domUtils.hasClass(cell, \"selectTdClass\");\r\n flag && domUtils.removeClasses(cell, \"selectTdClass\");\r\n var tmpCell = cell.cloneNode(true);\r\n if (ignoreMerge) {\r\n tmpCell.rowSpan = tmpCell.colSpan = 1;\r\n }\r\n //去掉宽高\r\n !keepPro && domUtils.removeAttributes(tmpCell, 'width height');\r\n !keepPro && domUtils.removeAttributes(tmpCell, 'style');\r\n\r\n tmpCell.style.borderLeftStyle = \"\";\r\n tmpCell.style.borderTopStyle = \"\";\r\n tmpCell.style.borderLeftColor = cell.style.borderRightColor;\r\n tmpCell.style.borderLeftWidth = cell.style.borderRightWidth;\r\n tmpCell.style.borderTopColor = cell.style.borderBottomColor;\r\n tmpCell.style.borderTopWidth = cell.style.borderBottomWidth;\r\n flag && domUtils.addClass(cell, \"selectTdClass\");\r\n return tmpCell;\r\n }\r\n\r\n UETable.prototype = {\r\n getMaxRows: function () {\r\n var rows = this.table.rows,\r\n maxLen = 1;\r\n for (var i = 0, row; row = rows[i]; i++) {\r\n var currentMax = 1;\r\n for (var j = 0, cj; cj = row.cells[j++];) {\r\n currentMax = Math.max(cj.rowSpan || 1, currentMax);\r\n }\r\n maxLen = Math.max(currentMax + i, maxLen);\r\n }\r\n return maxLen;\r\n },\r\n /**\r\n * 获取当前表格的最大列数\r\n */\r\n getMaxCols: function () {\r\n var rows = this.table.rows,\r\n maxLen = 0,\r\n cellRows = {};\r\n for (var i = 0, row; row = rows[i]; i++) {\r\n var cellsNum = 0;\r\n for (var j = 0, cj; cj = row.cells[j++];) {\r\n cellsNum += (cj.colSpan || 1);\r\n if (cj.rowSpan && cj.rowSpan > 1) {\r\n for (var k = 1; k < cj.rowSpan; k++) {\r\n if (!cellRows['row_' + (i + k)]) {\r\n cellRows['row_' + (i + k)] = (cj.colSpan || 1);\r\n } else {\r\n cellRows['row_' + (i + k)]++\r\n }\r\n }\r\n\r\n }\r\n }\r\n cellsNum += cellRows['row_' + i] || 0;\r\n maxLen = Math.max(cellsNum, maxLen);\r\n }\r\n return maxLen;\r\n },\r\n getCellColIndex: function (cell) {\r\n\r\n },\r\n /**\r\n * 获取当前cell旁边的单元格,\r\n * @param cell\r\n * @param right\r\n */\r\n getHSideCell: function (cell, right) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n previewRowIndex, previewColIndex;\r\n var len = this.selectedTds.length,\r\n range = this.cellsRange;\r\n //首行或者首列没有前置单元格\r\n if ((!right && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (right && (!len ? (cellInfo.colIndex == (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null;\r\n\r\n previewRowIndex = !len ? cellInfo.rowIndex : range.beginRowIndex;\r\n previewColIndex = !right ? (!len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) :\r\n (!len ? cellInfo.colIndex + 1 : range.endColIndex + 1);\r\n return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n getTabNextCell: function (cell, preRowIndex) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rowIndex = preRowIndex || cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex + 1 + (cellInfo.colSpan - 1),\r\n nextCell;\r\n try {\r\n nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);\r\n } catch (e) {\r\n try {\r\n rowIndex = rowIndex * 1 + 1;\r\n colIndex = 0;\r\n nextCell = this.getCell(this.indexTable[rowIndex][colIndex].rowIndex, this.indexTable[rowIndex][colIndex].cellIndex);\r\n } catch (e) {}\r\n }\r\n return nextCell;\r\n\r\n },\r\n /**\r\n * 获取视觉上的后置单元格\r\n * @param cell\r\n * @param bottom\r\n */\r\n getVSideCell: function (cell, bottom, ignoreRange) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n nextRowIndex, nextColIndex;\r\n var len = this.selectedTds.length && !ignoreRange,\r\n range = this.cellsRange;\r\n //末行或者末列没有后置单元格\r\n if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null;\r\n\r\n nextRowIndex = !bottom ? (!len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) :\r\n (!len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1);\r\n nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex;\r\n return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 获取相同结束位置的单元格,xOrY指代了是获取x轴相同还是y轴相同\r\n */\r\n getSameEndPosCells: function (cell, xOrY) {\r\n try {\r\n var flag = (xOrY.toLowerCase() === \"x\"),\r\n end = domUtils.getXY(cell)[flag ? 'x' : 'y'] + cell[\"offset\" + (flag ? 'Width' : 'Height')],\r\n rows = this.table.rows,\r\n cells = null,\r\n returns = [];\r\n for (var i = 0; i < this.rowsNum; i++) {\r\n cells = rows[i].cells;\r\n for (var j = 0, tmpCell; tmpCell = cells[j++];) {\r\n var tmpEnd = domUtils.getXY(tmpCell)[flag ? 'x' : 'y'] + tmpCell[\"offset\" + (flag ? 'Width' : 'Height')];\r\n //对应行的td已经被上面行rowSpan了\r\n if (tmpEnd > end && flag) break;\r\n if (cell == tmpCell || end == tmpEnd) {\r\n //只获取单一的单元格\r\n //todo 仅获取单一单元格在特定情况下会造成returns为空,从而影响后续的拖拽实现,修正这个。需考虑性能\r\n if (tmpCell[flag ? \"colSpan\" : \"rowSpan\"] == 1) {\r\n returns.push(tmpCell);\r\n }\r\n if (flag) break;\r\n }\r\n }\r\n }\r\n return returns;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n setCellContent: function (cell, content) {\r\n cell.innerHTML = content || (browser.ie ? domUtils.fillChar : \"
    \");\r\n },\r\n cloneCell: UETable.cloneCell,\r\n /**\r\n * 获取跟当前单元格的右边竖线为左边的所有未合并单元格\r\n */\r\n getSameStartPosXCells: function (cell) {\r\n try {\r\n var start = domUtils.getXY(cell).x + cell.offsetWidth,\r\n rows = this.table.rows,\r\n cells, returns = [];\r\n for (var i = 0; i < this.rowsNum; i++) {\r\n cells = rows[i].cells;\r\n for (var j = 0, tmpCell; tmpCell = cells[j++];) {\r\n var tmpStart = domUtils.getXY(tmpCell).x;\r\n if (tmpStart > start) break;\r\n if (tmpStart == start && tmpCell.colSpan == 1) {\r\n returns.push(tmpCell);\r\n break;\r\n }\r\n }\r\n }\r\n return returns;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 更新table对应的索引表\r\n */\r\n update: function (table) {\r\n this.table = table || this.table;\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n this.indexTable = [];\r\n var rows = this.table.rows,\r\n rowsNum = this.getMaxRows(),\r\n dNum = rowsNum - rows.length,\r\n colsNum = this.getMaxCols();\r\n while (dNum--) {\r\n this.table.insertRow(rows.length);\r\n }\r\n this.rowsNum = rowsNum;\r\n this.colsNum = colsNum;\r\n for (var i = 0, len = rows.length; i < len; i++) {\r\n this.indexTable[i] = new Array(colsNum);\r\n }\r\n //填充索引表\r\n for (var rowIndex = 0, row; row = rows[rowIndex]; rowIndex++) {\r\n for (var cellIndex = 0, cell, cells = row.cells; cell = cells[cellIndex]; cellIndex++) {\r\n //修正整行被rowSpan时导致的行数计算错误\r\n if (cell.rowSpan > rowsNum) {\r\n cell.rowSpan = rowsNum;\r\n }\r\n var colIndex = cellIndex,\r\n rowSpan = cell.rowSpan || 1,\r\n colSpan = cell.colSpan || 1;\r\n //当已经被上一行rowSpan或者被前一列colSpan了,则跳到下一个单元格进行\r\n while (this.indexTable[rowIndex][colIndex]) colIndex++;\r\n for (var j = 0; j < rowSpan; j++) {\r\n for (var k = 0; k < colSpan; k++) {\r\n this.indexTable[rowIndex + j][colIndex + k] = {\r\n rowIndex: rowIndex,\r\n cellIndex: cellIndex,\r\n colIndex: colIndex,\r\n rowSpan: rowSpan,\r\n colSpan: colSpan\r\n }\r\n }\r\n }\r\n }\r\n }\r\n //修复残缺td\r\n for (j = 0; j < rowsNum; j++) {\r\n for (k = 0; k < colsNum; k++) {\r\n if (this.indexTable[j][k] === undefined) {\r\n row = rows[j];\r\n cell = row.cells[row.cells.length - 1];\r\n cell = cell ? cell.cloneNode(true) : this.table.ownerDocument.createElement(\"td\");\r\n this.setCellContent(cell);\r\n if (cell.colSpan !== 1) cell.colSpan = 1;\r\n if (cell.rowSpan !== 1) cell.rowSpan = 1;\r\n row.appendChild(cell);\r\n this.indexTable[j][k] = {\r\n rowIndex: j,\r\n cellIndex: cell.cellIndex,\r\n colIndex: k,\r\n rowSpan: 1,\r\n colSpan: 1\r\n }\r\n }\r\n }\r\n }\r\n //当框选后删除行或者列后撤销,需要重建选区。\r\n var tds = domUtils.getElementsByTagName(this.table, \"td\"),\r\n selectTds = [];\r\n utils.each(tds, function (td) {\r\n if (domUtils.hasClass(td, \"selectTdClass\")) {\r\n selectTds.push(td);\r\n }\r\n });\r\n if (selectTds.length) {\r\n var start = selectTds[0],\r\n end = selectTds[selectTds.length - 1],\r\n startInfo = this.getCellInfo(start),\r\n endInfo = this.getCellInfo(end);\r\n this.selectedTds = selectTds;\r\n this.cellsRange = {\r\n beginRowIndex: startInfo.rowIndex,\r\n beginColIndex: startInfo.colIndex,\r\n endRowIndex: endInfo.rowIndex + endInfo.rowSpan - 1,\r\n endColIndex: endInfo.colIndex + endInfo.colSpan - 1\r\n };\r\n }\r\n //给第一行设置firstRow的样式名称,在排序图标的样式上使用到\r\n if (!domUtils.hasClass(this.table.rows[0], \"firstRow\")) {\r\n domUtils.addClass(this.table.rows[0], \"firstRow\");\r\n for (var i = 1; i < this.table.rows.length; i++) {\r\n domUtils.removeClasses(this.table.rows[i], \"firstRow\");\r\n }\r\n }\r\n },\r\n /**\r\n * 获取单元格的索引信息\r\n */\r\n getCellInfo: function (cell) {\r\n if (!cell) return;\r\n var cellIndex = cell.cellIndex,\r\n rowIndex = cell.parentNode.rowIndex,\r\n rowInfo = this.indexTable[rowIndex],\r\n numCols = this.colsNum;\r\n for (var colIndex = cellIndex; colIndex < numCols; colIndex++) {\r\n var cellInfo = rowInfo[colIndex];\r\n if (cellInfo.rowIndex === rowIndex && cellInfo.cellIndex === cellIndex) {\r\n return cellInfo;\r\n }\r\n }\r\n },\r\n /**\r\n * 根据行列号获取单元格\r\n */\r\n getCell: function (rowIndex, cellIndex) {\r\n return rowIndex < this.rowsNum && this.table.rows[rowIndex].cells[cellIndex] || null;\r\n },\r\n /**\r\n * 删除单元格\r\n */\r\n deleteCell: function (cell, rowIndex) {\r\n rowIndex = typeof rowIndex == 'number' ? rowIndex : cell.parentNode.rowIndex;\r\n var row = this.table.rows[rowIndex];\r\n row.deleteCell(cell.cellIndex);\r\n },\r\n /**\r\n * 根据始末两个单元格获取被框选的所有单元格范围\r\n */\r\n getCellsRange: function (cellA, cellB) {\r\n function checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex) {\r\n var tmpBeginRowIndex = beginRowIndex,\r\n tmpBeginColIndex = beginColIndex,\r\n tmpEndRowIndex = endRowIndex,\r\n tmpEndColIndex = endColIndex,\r\n cellInfo, colIndex, rowIndex;\r\n // 通过indexTable检查是否存在超出TableRange上边界的情况\r\n if (beginRowIndex > 0) {\r\n for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) {\r\n cellInfo = me.indexTable[beginRowIndex][colIndex];\r\n rowIndex = cellInfo.rowIndex;\r\n if (rowIndex < beginRowIndex) {\r\n tmpBeginRowIndex = Math.min(rowIndex, tmpBeginRowIndex);\r\n }\r\n }\r\n }\r\n // 通过indexTable检查是否存在超出TableRange右边界的情况\r\n if (endColIndex < me.colsNum) {\r\n for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) {\r\n cellInfo = me.indexTable[rowIndex][endColIndex];\r\n colIndex = cellInfo.colIndex + cellInfo.colSpan - 1;\r\n if (colIndex > endColIndex) {\r\n tmpEndColIndex = Math.max(colIndex, tmpEndColIndex);\r\n }\r\n }\r\n }\r\n // 检查是否有超出TableRange下边界的情况\r\n if (endRowIndex < me.rowsNum) {\r\n for (colIndex = beginColIndex; colIndex < endColIndex; colIndex++) {\r\n cellInfo = me.indexTable[endRowIndex][colIndex];\r\n rowIndex = cellInfo.rowIndex + cellInfo.rowSpan - 1;\r\n if (rowIndex > endRowIndex) {\r\n tmpEndRowIndex = Math.max(rowIndex, tmpEndRowIndex);\r\n }\r\n }\r\n }\r\n // 检查是否有超出TableRange左边界的情况\r\n if (beginColIndex > 0) {\r\n for (rowIndex = beginRowIndex; rowIndex < endRowIndex; rowIndex++) {\r\n cellInfo = me.indexTable[rowIndex][beginColIndex];\r\n colIndex = cellInfo.colIndex;\r\n if (colIndex < beginColIndex) {\r\n tmpBeginColIndex = Math.min(cellInfo.colIndex, tmpBeginColIndex);\r\n }\r\n }\r\n }\r\n //递归调用直至所有完成所有框选单元格的扩展\r\n if (tmpBeginRowIndex != beginRowIndex || tmpBeginColIndex != beginColIndex || tmpEndRowIndex != endRowIndex || tmpEndColIndex != endColIndex) {\r\n return checkRange(tmpBeginRowIndex, tmpBeginColIndex, tmpEndRowIndex, tmpEndColIndex);\r\n } else {\r\n // 不需要扩展TableRange的情况\r\n return {\r\n beginRowIndex: beginRowIndex,\r\n beginColIndex: beginColIndex,\r\n endRowIndex: endRowIndex,\r\n endColIndex: endColIndex\r\n };\r\n }\r\n }\r\n\r\n try {\r\n var me = this,\r\n cellAInfo = me.getCellInfo(cellA);\r\n if (cellA === cellB) {\r\n return {\r\n beginRowIndex: cellAInfo.rowIndex,\r\n beginColIndex: cellAInfo.colIndex,\r\n endRowIndex: cellAInfo.rowIndex + cellAInfo.rowSpan - 1,\r\n endColIndex: cellAInfo.colIndex + cellAInfo.colSpan - 1\r\n };\r\n }\r\n var cellBInfo = me.getCellInfo(cellB);\r\n // 计算TableRange的四个边\r\n var beginRowIndex = Math.min(cellAInfo.rowIndex, cellBInfo.rowIndex),\r\n beginColIndex = Math.min(cellAInfo.colIndex, cellBInfo.colIndex),\r\n endRowIndex = Math.max(cellAInfo.rowIndex + cellAInfo.rowSpan - 1, cellBInfo.rowIndex + cellBInfo.rowSpan - 1),\r\n endColIndex = Math.max(cellAInfo.colIndex + cellAInfo.colSpan - 1, cellBInfo.colIndex + cellBInfo.colSpan - 1);\r\n\r\n return checkRange(beginRowIndex, beginColIndex, endRowIndex, endColIndex);\r\n } catch (e) {\r\n //throw e;\r\n }\r\n },\r\n /**\r\n * 依据cellsRange获取对应的单元格集合\r\n */\r\n getCells: function (range) {\r\n //每次获取cells之前必须先清除上次的选择,否则会对后续获取操作造成影响\r\n this.clearSelected();\r\n var beginRowIndex = range.beginRowIndex,\r\n beginColIndex = range.beginColIndex,\r\n endRowIndex = range.endRowIndex,\r\n endColIndex = range.endColIndex,\r\n cellInfo, rowIndex, colIndex, tdHash = {},\r\n returnTds = [];\r\n for (var i = beginRowIndex; i <= endRowIndex; i++) {\r\n for (var j = beginColIndex; j <= endColIndex; j++) {\r\n cellInfo = this.indexTable[i][j];\r\n rowIndex = cellInfo.rowIndex;\r\n colIndex = cellInfo.colIndex;\r\n // 如果Cells里已经包含了此Cell则跳过\r\n var key = rowIndex + '|' + colIndex;\r\n if (tdHash[key]) continue;\r\n tdHash[key] = 1;\r\n if (rowIndex < i || colIndex < j || rowIndex + cellInfo.rowSpan - 1 > endRowIndex || colIndex + cellInfo.colSpan - 1 > endColIndex) {\r\n return null;\r\n }\r\n returnTds.push(this.getCell(rowIndex, cellInfo.cellIndex));\r\n }\r\n }\r\n return returnTds;\r\n },\r\n /**\r\n * 清理已经选中的单元格\r\n */\r\n clearSelected: function () {\r\n UETable.removeSelectedClass(this.selectedTds);\r\n this.selectedTds = [];\r\n this.cellsRange = {};\r\n },\r\n /**\r\n * 根据range设置已经选中的单元格\r\n */\r\n setSelected: function (range) {\r\n var cells = this.getCells(range);\r\n UETable.addSelectedClass(cells);\r\n this.selectedTds = cells;\r\n this.cellsRange = range;\r\n },\r\n isFullRow: function () {\r\n var range = this.cellsRange;\r\n return (range.endColIndex - range.beginColIndex + 1) == this.colsNum;\r\n },\r\n isFullCol: function () {\r\n var range = this.cellsRange,\r\n table = this.table,\r\n ths = table.getElementsByTagName(\"th\"),\r\n rows = range.endRowIndex - range.beginRowIndex + 1;\r\n return !ths.length ? rows == this.rowsNum : rows == this.rowsNum || (rows == this.rowsNum - 1);\r\n\r\n },\r\n /**\r\n * 获取视觉上的前置单元格,默认是左边,top传入时\r\n * @param cell\r\n * @param top\r\n */\r\n getNextCell: function (cell, bottom, ignoreRange) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n nextRowIndex, nextColIndex;\r\n var len = this.selectedTds.length && !ignoreRange,\r\n range = this.cellsRange;\r\n //末行或者末列没有后置单元格\r\n if ((!bottom && (cellInfo.rowIndex == 0)) || (bottom && (!len ? (cellInfo.rowIndex + cellInfo.rowSpan > this.rowsNum - 1) : (range.endRowIndex == this.rowsNum - 1)))) return null;\r\n\r\n nextRowIndex = !bottom ? (!len ? cellInfo.rowIndex - 1 : range.beginRowIndex - 1) :\r\n (!len ? (cellInfo.rowIndex + cellInfo.rowSpan) : range.endRowIndex + 1);\r\n nextColIndex = !len ? cellInfo.colIndex : range.beginColIndex;\r\n return this.getCell(this.indexTable[nextRowIndex][nextColIndex].rowIndex, this.indexTable[nextRowIndex][nextColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n getPreviewCell: function (cell, top) {\r\n try {\r\n var cellInfo = this.getCellInfo(cell),\r\n previewRowIndex, previewColIndex;\r\n var len = this.selectedTds.length,\r\n range = this.cellsRange;\r\n //首行或者首列没有前置单元格\r\n if ((!top && (!len ? !cellInfo.colIndex : !range.beginColIndex)) || (top && (!len ? (cellInfo.rowIndex > (this.colsNum - 1)) : (range.endColIndex == this.colsNum - 1)))) return null;\r\n\r\n previewRowIndex = !top ? (!len ? cellInfo.rowIndex : range.beginRowIndex) :\r\n (!len ? (cellInfo.rowIndex < 1 ? 0 : (cellInfo.rowIndex - 1)) : range.beginRowIndex);\r\n previewColIndex = !top ? (!len ? (cellInfo.colIndex < 1 ? 0 : (cellInfo.colIndex - 1)) : range.beginColIndex - 1) :\r\n (!len ? cellInfo.colIndex : range.endColIndex + 1);\r\n return this.getCell(this.indexTable[previewRowIndex][previewColIndex].rowIndex, this.indexTable[previewRowIndex][previewColIndex].cellIndex);\r\n } catch (e) {\r\n showError(e);\r\n }\r\n },\r\n /**\r\n * 移动单元格中的内容\r\n */\r\n moveContent: function (cellTo, cellFrom) {\r\n if (UETable.isEmptyBlock(cellFrom)) return;\r\n if (UETable.isEmptyBlock(cellTo)) {\r\n cellTo.innerHTML = cellFrom.innerHTML;\r\n return;\r\n }\r\n var child = cellTo.lastChild;\r\n if (child.nodeType == 3 || !dtd.$block[child.tagName]) {\r\n cellTo.appendChild(cellTo.ownerDocument.createElement('br'))\r\n }\r\n while (child = cellFrom.firstChild) {\r\n cellTo.appendChild(child);\r\n }\r\n },\r\n /**\r\n * 向右合并单元格\r\n */\r\n mergeRight: function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rightColIndex = cellInfo.colIndex + cellInfo.colSpan,\r\n rightCellInfo = this.indexTable[cellInfo.rowIndex][rightColIndex],\r\n rightCell = this.getCell(rightCellInfo.rowIndex, rightCellInfo.cellIndex);\r\n //合并\r\n cell.colSpan = cellInfo.colSpan + rightCellInfo.colSpan;\r\n //被合并的单元格不应存在宽度属性\r\n cell.removeAttribute(\"width\");\r\n //移动内容\r\n this.moveContent(cell, rightCell);\r\n //删掉被合并的Cell\r\n this.deleteCell(rightCell, rightCellInfo.rowIndex);\r\n this.update();\r\n },\r\n /**\r\n * 向下合并单元格\r\n */\r\n mergeDown: function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan,\r\n downCellInfo = this.indexTable[downRowIndex][cellInfo.colIndex],\r\n downCell = this.getCell(downCellInfo.rowIndex, downCellInfo.cellIndex);\r\n cell.rowSpan = cellInfo.rowSpan + downCellInfo.rowSpan;\r\n cell.removeAttribute(\"height\");\r\n this.moveContent(cell, downCell);\r\n this.deleteCell(downCell, downCellInfo.rowIndex);\r\n this.update();\r\n },\r\n /**\r\n * 合并整个range中的内容\r\n */\r\n mergeRange: function () {\r\n //由于合并操作可以在任意时刻进行,所以无法通过鼠标位置等信息实时生成range,只能通过缓存实例中的cellsRange对象来访问\r\n var range = this.cellsRange,\r\n leftTopCell = this.getCell(range.beginRowIndex, this.indexTable[range.beginRowIndex][range.beginColIndex].cellIndex);\r\n\r\n if (leftTopCell.tagName == \"TH\" && range.endRowIndex !== range.beginRowIndex) {\r\n var index = this.indexTable,\r\n info = this.getCellInfo(leftTopCell);\r\n leftTopCell = this.getCell(1, index[1][info.colIndex].cellIndex);\r\n range = this.getCellsRange(leftTopCell, this.getCell(index[this.rowsNum - 1][info.colIndex].rowIndex, index[this.rowsNum - 1][info.colIndex].cellIndex));\r\n }\r\n\r\n // 删除剩余的Cells\r\n var cells = this.getCells(range);\r\n for (var i = 0, ci; ci = cells[i++];) {\r\n if (ci !== leftTopCell) {\r\n this.moveContent(leftTopCell, ci);\r\n this.deleteCell(ci);\r\n }\r\n }\r\n // 修改左上角Cell的rowSpan和colSpan,并调整宽度属性设置\r\n leftTopCell.rowSpan = range.endRowIndex - range.beginRowIndex + 1;\r\n leftTopCell.rowSpan > 1 && leftTopCell.removeAttribute(\"height\");\r\n leftTopCell.colSpan = range.endColIndex - range.beginColIndex + 1;\r\n leftTopCell.colSpan > 1 && leftTopCell.removeAttribute(\"width\");\r\n if (leftTopCell.rowSpan == this.rowsNum && leftTopCell.colSpan != 1) {\r\n leftTopCell.colSpan = 1;\r\n }\r\n\r\n if (leftTopCell.colSpan == this.colsNum && leftTopCell.rowSpan != 1) {\r\n var rowIndex = leftTopCell.parentNode.rowIndex;\r\n //解决IE下的表格操作问题\r\n if (this.table.deleteRow) {\r\n for (var i = rowIndex + 1, curIndex = rowIndex + 1, len = leftTopCell.rowSpan; i < len; i++) {\r\n this.table.deleteRow(curIndex);\r\n }\r\n } else {\r\n for (var i = 0, len = leftTopCell.rowSpan - 1; i < len; i++) {\r\n var row = this.table.rows[rowIndex + 1];\r\n row.parentNode.removeChild(row);\r\n }\r\n }\r\n leftTopCell.rowSpan = 1;\r\n }\r\n this.update();\r\n },\r\n /**\r\n * 插入一行单元格\r\n */\r\n insertRow: function (rowIndex, sourceCell) {\r\n var numCols = this.colsNum,\r\n table = this.table,\r\n row = table.insertRow(rowIndex),\r\n cell,\r\n isInsertTitle = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH';\r\n\r\n function replaceTdToTh(colIndex, cell, tableRow) {\r\n if (colIndex == 0) {\r\n var tr = tableRow.nextSibling || tableRow.previousSibling,\r\n th = tr.cells[colIndex];\r\n if (th.tagName == 'TH') {\r\n th = cell.ownerDocument.createElement(\"th\");\r\n th.appendChild(cell.firstChild);\r\n tableRow.insertBefore(th, cell);\r\n domUtils.remove(cell)\r\n }\r\n } else {\r\n if (cell.tagName == 'TH') {\r\n var td = cell.ownerDocument.createElement(\"td\");\r\n td.appendChild(cell.firstChild);\r\n tableRow.insertBefore(td, cell);\r\n domUtils.remove(cell)\r\n }\r\n }\r\n }\r\n\r\n //首行直接插入,无需考虑部分单元格被rowspan的情况\r\n if (rowIndex == 0 || rowIndex == this.rowsNum) {\r\n for (var colIndex = 0; colIndex < numCols; colIndex++) {\r\n cell = this.cloneCell(sourceCell, true);\r\n this.setCellContent(cell);\r\n cell.getAttribute('vAlign') && cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n row.appendChild(cell);\r\n if (!isInsertTitle) replaceTdToTh(colIndex, cell, row);\r\n }\r\n } else {\r\n var infoRow = this.indexTable[rowIndex],\r\n cellIndex = 0;\r\n for (colIndex = 0; colIndex < numCols; colIndex++) {\r\n var cellInfo = infoRow[colIndex];\r\n //如果存在某个单元格的rowspan穿过待插入行的位置,则修改该单元格的rowspan即可,无需插入单元格\r\n if (cellInfo.rowIndex < rowIndex) {\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n cell.rowSpan = cellInfo.rowSpan + 1;\r\n } else {\r\n cell = this.cloneCell(sourceCell, true);\r\n this.setCellContent(cell);\r\n row.appendChild(cell);\r\n }\r\n if (!isInsertTitle) replaceTdToTh(colIndex, cell, row);\r\n }\r\n }\r\n //框选时插入不触发contentchange,需要手动更新索引。\r\n this.update();\r\n return row;\r\n },\r\n /**\r\n * 删除一行单元格\r\n * @param rowIndex\r\n */\r\n deleteRow: function (rowIndex) {\r\n var row = this.table.rows[rowIndex],\r\n infoRow = this.indexTable[rowIndex],\r\n colsNum = this.colsNum,\r\n count = 0; //处理计数\r\n for (var colIndex = 0; colIndex < colsNum;) {\r\n var cellInfo = infoRow[colIndex],\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n if (cell.rowSpan > 1) {\r\n if (cellInfo.rowIndex == rowIndex) {\r\n var clone = cell.cloneNode(true);\r\n clone.rowSpan = cell.rowSpan - 1;\r\n clone.innerHTML = \"\";\r\n cell.rowSpan = 1;\r\n var nextRowIndex = rowIndex + 1,\r\n nextRow = this.table.rows[nextRowIndex],\r\n insertCellIndex,\r\n preMerged = this.getPreviewMergedCellsNum(nextRowIndex, colIndex) - count;\r\n if (preMerged < colIndex) {\r\n insertCellIndex = colIndex - preMerged - 1;\r\n //nextRow.insertCell(insertCellIndex);\r\n domUtils.insertAfter(nextRow.cells[insertCellIndex], clone);\r\n } else {\r\n if (nextRow.cells.length) nextRow.insertBefore(clone, nextRow.cells[0])\r\n }\r\n count += 1;\r\n //cell.parentNode.removeChild(cell);\r\n }\r\n }\r\n colIndex += cell.colSpan || 1;\r\n }\r\n var deleteTds = [],\r\n cacheMap = {};\r\n for (colIndex = 0; colIndex < colsNum; colIndex++) {\r\n var tmpRowIndex = infoRow[colIndex].rowIndex,\r\n tmpCellIndex = infoRow[colIndex].cellIndex,\r\n key = tmpRowIndex + \"_\" + tmpCellIndex;\r\n if (cacheMap[key]) continue;\r\n cacheMap[key] = 1;\r\n cell = this.getCell(tmpRowIndex, tmpCellIndex);\r\n deleteTds.push(cell);\r\n }\r\n var mergeTds = [];\r\n utils.each(deleteTds, function (td) {\r\n if (td.rowSpan == 1) {\r\n td.parentNode.removeChild(td);\r\n } else {\r\n mergeTds.push(td);\r\n }\r\n });\r\n utils.each(mergeTds, function (td) {\r\n td.rowSpan--;\r\n });\r\n row.parentNode.removeChild(row);\r\n //浏览器方法本身存在bug,采用自定义方法删除\r\n //this.table.deleteRow(rowIndex);\r\n this.update();\r\n },\r\n insertCol: function (colIndex, sourceCell, defaultValue) {\r\n var rowsNum = this.rowsNum,\r\n rowIndex = 0,\r\n tableRow, cell,\r\n backWidth = parseInt((this.table.offsetWidth - (this.colsNum + 1) * 20 - (this.colsNum + 1)) / (this.colsNum + 1), 10),\r\n isInsertTitleCol = typeof sourceCell == 'string' && sourceCell.toUpperCase() == 'TH';\r\n\r\n function replaceTdToTh(rowIndex, cell, tableRow) {\r\n if (rowIndex == 0) {\r\n var th = cell.nextSibling || cell.previousSibling;\r\n if (th.tagName == 'TH') {\r\n th = cell.ownerDocument.createElement(\"th\");\r\n th.appendChild(cell.firstChild);\r\n tableRow.insertBefore(th, cell);\r\n domUtils.remove(cell)\r\n }\r\n } else {\r\n if (cell.tagName == 'TH') {\r\n var td = cell.ownerDocument.createElement(\"td\");\r\n td.appendChild(cell.firstChild);\r\n tableRow.insertBefore(td, cell);\r\n domUtils.remove(cell)\r\n }\r\n }\r\n }\r\n\r\n var preCell;\r\n if (colIndex == 0 || colIndex == this.colsNum) {\r\n for (; rowIndex < rowsNum; rowIndex++) {\r\n tableRow = this.table.rows[rowIndex];\r\n preCell = tableRow.cells[colIndex == 0 ? colIndex : tableRow.cells.length];\r\n cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(colIndex == 0 ? colIndex : tableRow.cells.length);\r\n this.setCellContent(cell);\r\n cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n preCell && cell.setAttribute('width', preCell.getAttribute('width'));\r\n if (!colIndex) {\r\n tableRow.insertBefore(cell, tableRow.cells[0]);\r\n } else {\r\n domUtils.insertAfter(tableRow.cells[tableRow.cells.length - 1], cell);\r\n }\r\n if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow)\r\n }\r\n } else {\r\n for (; rowIndex < rowsNum; rowIndex++) {\r\n var cellInfo = this.indexTable[rowIndex][colIndex];\r\n if (cellInfo.colIndex < colIndex) {\r\n cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n cell.colSpan = cellInfo.colSpan + 1;\r\n } else {\r\n tableRow = this.table.rows[rowIndex];\r\n preCell = tableRow.cells[cellInfo.cellIndex];\r\n\r\n cell = this.cloneCell(sourceCell, true); //tableRow.insertCell(cellInfo.cellIndex);\r\n this.setCellContent(cell);\r\n cell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n preCell && cell.setAttribute('width', preCell.getAttribute('width'));\r\n //防止IE下报错\r\n preCell ? tableRow.insertBefore(cell, preCell) : tableRow.appendChild(cell);\r\n }\r\n if (!isInsertTitleCol) replaceTdToTh(rowIndex, cell, tableRow);\r\n }\r\n }\r\n //框选时插入不触发contentchange,需要手动更新索引\r\n this.update();\r\n this.updateWidth(backWidth, defaultValue || {\r\n tdPadding: 10,\r\n tdBorder: 1\r\n });\r\n },\r\n updateWidth: function (width, defaultValue) {\r\n var table = this.table,\r\n tmpWidth = UETable.getWidth(table) - defaultValue.tdPadding * 2 - defaultValue.tdBorder + width;\r\n if (tmpWidth < table.ownerDocument.body.offsetWidth) {\r\n table.setAttribute(\"width\", tmpWidth);\r\n return;\r\n }\r\n var tds = domUtils.getElementsByTagName(this.table, \"td th\");\r\n utils.each(tds, function (td) {\r\n td.setAttribute(\"width\", width);\r\n })\r\n },\r\n deleteCol: function (colIndex) {\r\n var indexTable = this.indexTable,\r\n tableRows = this.table.rows,\r\n backTableWidth = this.table.getAttribute(\"width\"),\r\n backTdWidth = 0,\r\n rowsNum = this.rowsNum,\r\n cacheMap = {};\r\n for (var rowIndex = 0; rowIndex < rowsNum;) {\r\n var infoRow = indexTable[rowIndex],\r\n cellInfo = infoRow[colIndex],\r\n key = cellInfo.rowIndex + '_' + cellInfo.colIndex;\r\n // 跳过已经处理过的Cell\r\n if (cacheMap[key]) continue;\r\n cacheMap[key] = 1;\r\n var cell = this.getCell(cellInfo.rowIndex, cellInfo.cellIndex);\r\n if (!backTdWidth) backTdWidth = cell && parseInt(cell.offsetWidth / cell.colSpan, 10).toFixed(0);\r\n // 如果Cell的colSpan大于1, 就修改colSpan, 否则就删掉这个Cell\r\n if (cell.colSpan > 1) {\r\n cell.colSpan--;\r\n } else {\r\n tableRows[rowIndex].deleteCell(cellInfo.cellIndex);\r\n }\r\n rowIndex += cellInfo.rowSpan || 1;\r\n }\r\n this.table.setAttribute(\"width\", backTableWidth - backTdWidth);\r\n this.update();\r\n },\r\n splitToCells: function (cell) {\r\n var me = this,\r\n cells = this.splitToRows(cell);\r\n utils.each(cells, function (cell) {\r\n me.splitToCols(cell);\r\n })\r\n },\r\n splitToRows: function (cell) {\r\n var cellInfo = this.getCellInfo(cell),\r\n rowIndex = cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex,\r\n results = [];\r\n // 修改Cell的rowSpan\r\n cell.rowSpan = 1;\r\n results.push(cell);\r\n // 补齐单元格\r\n for (var i = rowIndex, endRow = rowIndex + cellInfo.rowSpan; i < endRow; i++) {\r\n if (i == rowIndex) continue;\r\n var tableRow = this.table.rows[i],\r\n tmpCell = tableRow.insertCell(colIndex - this.getPreviewMergedCellsNum(i, colIndex));\r\n tmpCell.colSpan = cellInfo.colSpan;\r\n this.setCellContent(tmpCell);\r\n tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n tmpCell.setAttribute('align', cell.getAttribute('align'));\r\n if (cell.style.cssText) {\r\n tmpCell.style.cssText = cell.style.cssText;\r\n }\r\n results.push(tmpCell);\r\n }\r\n this.update();\r\n return results;\r\n },\r\n getPreviewMergedCellsNum: function (rowIndex, colIndex) {\r\n var indexRow = this.indexTable[rowIndex],\r\n num = 0;\r\n for (var i = 0; i < colIndex;) {\r\n var colSpan = indexRow[i].colSpan,\r\n tmpRowIndex = indexRow[i].rowIndex;\r\n num += (colSpan - (tmpRowIndex == rowIndex ? 1 : 0));\r\n i += colSpan;\r\n }\r\n return num;\r\n },\r\n splitToCols: function (cell) {\r\n var backWidth = (cell.offsetWidth / cell.colSpan - 22).toFixed(0),\r\n\r\n cellInfo = this.getCellInfo(cell),\r\n rowIndex = cellInfo.rowIndex,\r\n colIndex = cellInfo.colIndex,\r\n results = [];\r\n // 修改Cell的rowSpan\r\n cell.colSpan = 1;\r\n cell.setAttribute(\"width\", backWidth);\r\n results.push(cell);\r\n // 补齐单元格\r\n for (var j = colIndex, endCol = colIndex + cellInfo.colSpan; j < endCol; j++) {\r\n if (j == colIndex) continue;\r\n var tableRow = this.table.rows[rowIndex],\r\n tmpCell = tableRow.insertCell(this.indexTable[rowIndex][j].cellIndex + 1);\r\n tmpCell.rowSpan = cellInfo.rowSpan;\r\n this.setCellContent(tmpCell);\r\n tmpCell.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n tmpCell.setAttribute('align', cell.getAttribute('align'));\r\n tmpCell.setAttribute('width', backWidth);\r\n if (cell.style.cssText) {\r\n tmpCell.style.cssText = cell.style.cssText;\r\n }\r\n //处理th的情况\r\n if (cell.tagName == 'TH') {\r\n var th = cell.ownerDocument.createElement('th');\r\n th.appendChild(tmpCell.firstChild);\r\n th.setAttribute('vAlign', cell.getAttribute('vAlign'));\r\n th.rowSpan = tmpCell.rowSpan;\r\n tableRow.insertBefore(th, tmpCell);\r\n domUtils.remove(tmpCell);\r\n }\r\n results.push(tmpCell);\r\n }\r\n this.update();\r\n return results;\r\n },\r\n isLastCell: function (cell, rowsNum, colsNum) {\r\n rowsNum = rowsNum || this.rowsNum;\r\n colsNum = colsNum || this.colsNum;\r\n var cellInfo = this.getCellInfo(cell);\r\n return ((cellInfo.rowIndex + cellInfo.rowSpan) == rowsNum) &&\r\n ((cellInfo.colIndex + cellInfo.colSpan) == colsNum);\r\n },\r\n getLastCell: function (cells) {\r\n cells = cells || this.table.getElementsByTagName(\"td\");\r\n var firstInfo = this.getCellInfo(cells[0]);\r\n var me = this,\r\n last = cells[0],\r\n tr = last.parentNode,\r\n cellsNum = 0,\r\n cols = 0,\r\n rows;\r\n utils.each(cells, function (cell) {\r\n if (cell.parentNode == tr) cols += cell.colSpan || 1;\r\n cellsNum += cell.rowSpan * cell.colSpan || 1;\r\n });\r\n rows = cellsNum / cols;\r\n utils.each(cells, function (cell) {\r\n if (me.isLastCell(cell, rows, cols)) {\r\n last = cell;\r\n return false;\r\n }\r\n });\r\n return last;\r\n\r\n },\r\n selectRow: function (rowIndex) {\r\n var indexRow = this.indexTable[rowIndex],\r\n start = this.getCell(indexRow[0].rowIndex, indexRow[0].cellIndex),\r\n end = this.getCell(indexRow[this.colsNum - 1].rowIndex, indexRow[this.colsNum - 1].cellIndex),\r\n range = this.getCellsRange(start, end);\r\n this.setSelected(range);\r\n },\r\n selectTable: function () {\r\n var tds = this.table.getElementsByTagName(\"td\"),\r\n range = this.getCellsRange(tds[0], tds[tds.length - 1]);\r\n this.setSelected(range);\r\n },\r\n setBackground: function (cells, value) {\r\n if (typeof value === \"string\") {\r\n utils.each(cells, function (cell) {\r\n cell.style.backgroundColor = value;\r\n })\r\n } else if (typeof value === \"object\") {\r\n value = utils.extend({\r\n repeat: true,\r\n colorList: [\"#ddd\", \"#fff\"]\r\n }, value);\r\n var rowIndex = this.getCellInfo(cells[0]).rowIndex,\r\n count = 0,\r\n colors = value.colorList,\r\n getColor = function (list, index, repeat) {\r\n return list[index] ? list[index] : repeat ? list[index % list.length] : \"\";\r\n };\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n var cellInfo = this.getCellInfo(cell);\r\n cell.style.backgroundColor = getColor(colors, ((rowIndex + count) == cellInfo.rowIndex) ? count : ++count, value.repeat);\r\n }\r\n }\r\n },\r\n removeBackground: function (cells) {\r\n utils.each(cells, function (cell) {\r\n cell.style.backgroundColor = \"\";\r\n })\r\n }\r\n\r\n\r\n };\r\n\r\n function showError(e) {}\r\n })();\r\n\r\n // plugins/table.cmds.js\r\n /**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 13-2-20\r\n * Time: 下午6:25\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n ;\r\n (function () {\r\n var UT = UE.UETable,\r\n getTableItemsByRange = function (editor) {\r\n return UT.getTableItemsByRange(editor);\r\n },\r\n getUETableBySelected = function (editor) {\r\n return UT.getUETableBySelected(editor)\r\n },\r\n getDefaultValue = function (editor, table) {\r\n return UT.getDefaultValue(editor, table);\r\n },\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n };\r\n\r\n\r\n UE.commands['inserttable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? -1 : 0;\r\n },\r\n execCommand: function (cmd, opt) {\r\n function createTable(opt, tdWidth) {\r\n var html = [],\r\n rowsNum = opt.numRows,\r\n colsNum = opt.numCols;\r\n for (var r = 0; r < rowsNum; r++) {\r\n html.push('');\r\n for (var c = 0; c < colsNum; c++) {\r\n html.push('
  • ' + (browser.ie && browser.version < 11 ? domUtils.fillChar : '
    ') + '
    ' + html.join('') + '
    '\r\n }\r\n\r\n if (!opt) {\r\n opt = utils.extend({}, {\r\n numCols: this.options.defaultCols,\r\n numRows: this.options.defaultRows,\r\n tdvalign: this.options.tdvalign\r\n })\r\n }\r\n var me = this;\r\n var range = this.selection.getRange(),\r\n start = range.startContainer,\r\n firstParentBlock = domUtils.findParent(start, function (node) {\r\n return domUtils.isBlockElm(node);\r\n }, true) || me.body;\r\n\r\n var defaultValue = getDefaultValue(me),\r\n tableWidth = firstParentBlock.offsetWidth,\r\n tdWidth = Math.floor(tableWidth / opt.numCols - defaultValue.tdPadding * 2 - defaultValue.tdBorder);\r\n\r\n //todo其他属性\r\n !opt.tdvalign && (opt.tdvalign = me.options.tdvalign);\r\n me.execCommand(\"inserthtml\", createTable(opt, tdWidth));\r\n }\r\n };\r\n\r\n UE.commands['insertparagraphbeforetable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var p = this.document.createElement(\"p\");\r\n p.innerHTML = browser.ie ? ' ' : '
    ';\r\n table.parentNode.insertBefore(p, table);\r\n this.selection.getRange().setStart(p, 0).setCursor();\r\n }\r\n }\r\n };\r\n\r\n UE.commands['deletetable'] = {\r\n queryCommandState: function () {\r\n var rng = this.selection.getRange();\r\n return domUtils.findParentByTagName(rng.startContainer, 'table', true) ? 0 : -1;\r\n },\r\n execCommand: function (cmd, table) {\r\n var rng = this.selection.getRange();\r\n table = table || domUtils.findParentByTagName(rng.startContainer, 'table', true);\r\n if (table) {\r\n var next = table.nextSibling;\r\n if (!next) {\r\n next = domUtils.createElement(this.document, 'p', {\r\n 'innerHTML': browser.ie ? domUtils.fillChar : '
    '\r\n });\r\n table.parentNode.insertBefore(next, table);\r\n }\r\n domUtils.remove(table);\r\n rng = this.selection.getRange();\r\n if (next.nodeType == 3) {\r\n rng.setStartBefore(next)\r\n } else {\r\n rng.setStart(next, 0)\r\n }\r\n rng.setCursor(false, true)\r\n this.fireEvent(\"tablehasdeleted\")\r\n\r\n }\r\n\r\n }\r\n };\r\n UE.commands['cellalign'] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length ? 0 : -1\r\n },\r\n execCommand: function (cmd, align) {\r\n var selectedTds = getSelectedArr(this);\r\n if (selectedTds.length) {\r\n for (var i = 0, ci; ci = selectedTds[i++];) {\r\n ci.setAttribute('align', align);\r\n }\r\n }\r\n }\r\n };\r\n UE.commands['cellvalign'] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length ? 0 : -1;\r\n },\r\n execCommand: function (cmd, valign) {\r\n var selectedTds = getSelectedArr(this);\r\n if (selectedTds.length) {\r\n for (var i = 0, ci; ci = selectedTds[i++];) {\r\n ci.setAttribute('vAlign', valign);\r\n }\r\n }\r\n }\r\n };\r\n UE.commands['insertcaption'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n return table.getElementsByTagName('caption').length == 0 ? 1 : -1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var caption = this.document.createElement('caption');\r\n caption.innerHTML = browser.ie ? domUtils.fillChar : '
    ';\r\n table.insertBefore(caption, table.firstChild);\r\n var range = this.selection.getRange();\r\n range.setStart(caption, 0).setCursor();\r\n }\r\n\r\n }\r\n };\r\n UE.commands['deletecaption'] = {\r\n queryCommandState: function () {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n return table.getElementsByTagName('caption').length == 0 ? -1 : 1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n domUtils.remove(table.getElementsByTagName('caption')[0]);\r\n var range = this.selection.getRange();\r\n range.setStart(table.rows[0].cells[0], 0).setCursor();\r\n }\r\n\r\n }\r\n };\r\n UE.commands['inserttitle'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var firstRow = table.rows[0];\r\n return firstRow.cells[firstRow.cells.length - 1].tagName.toLowerCase() != 'th' ? 0 : -1\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n getUETable(table).insertRow(0, 'th');\r\n }\r\n var th = table.getElementsByTagName('th')[0];\r\n this.selection.getRange().setStart(th, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['deletetitle'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var firstRow = table.rows[0];\r\n return firstRow.cells[firstRow.cells.length - 1].tagName.toLowerCase() == 'th' ? 0 : -1\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n domUtils.remove(table.rows[0])\r\n }\r\n var td = table.getElementsByTagName('td')[0];\r\n this.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['inserttitlecol'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var lastRow = table.rows[table.rows.length - 1];\r\n return lastRow.getElementsByTagName('th').length ? -1 : 0;\r\n }\r\n return -1;\r\n },\r\n execCommand: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n getUETable(table).insertCol(0, 'th');\r\n }\r\n resetTdWidth(table, this);\r\n var th = table.getElementsByTagName('th')[0];\r\n this.selection.getRange().setStart(th, 0).setCursor(false, true);\r\n }\r\n };\r\n UE.commands['deletetitlecol'] = {\r\n queryCommandState: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n var lastRow = table.rows[table.rows.length - 1];\r\n return lastRow.getElementsByTagName('th').length ? 0 : -1;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n if (table) {\r\n for (var i = 0; i < table.rows.length; i++) {\r\n domUtils.remove(table.rows[i].children[0])\r\n }\r\n }\r\n resetTdWidth(table, this);\r\n var td = table.getElementsByTagName('td')[0];\r\n this.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }\r\n };\r\n\r\n UE.commands[\"mergeright\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table,\r\n cell = tableItems.cell;\r\n\r\n if (!table || !cell) return -1;\r\n var ut = getUETable(table);\r\n if (ut.selectedTds.length) return -1;\r\n\r\n var cellInfo = ut.getCellInfo(cell),\r\n rightColIndex = cellInfo.colIndex + cellInfo.colSpan;\r\n if (rightColIndex >= ut.colsNum) return -1; // 如果处于最右边则不能向右合并\r\n\r\n var rightCellInfo = ut.indexTable[cellInfo.rowIndex][rightColIndex],\r\n rightCell = table.rows[rightCellInfo.rowIndex].cells[rightCellInfo.cellIndex];\r\n if (!rightCell || cell.tagName != rightCell.tagName) return -1; // TH和TD不能相互合并\r\n\r\n // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并\r\n return (rightCellInfo.rowIndex == cellInfo.rowIndex && rightCellInfo.rowSpan == cellInfo.rowSpan) ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.mergeRight(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"mergedown\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table,\r\n cell = tableItems.cell;\r\n\r\n if (!table || !cell) return -1;\r\n var ut = getUETable(table);\r\n if (ut.selectedTds.length) return -1;\r\n\r\n var cellInfo = ut.getCellInfo(cell),\r\n downRowIndex = cellInfo.rowIndex + cellInfo.rowSpan;\r\n if (downRowIndex >= ut.rowsNum) return -1; // 如果处于最下边则不能向下合并\r\n\r\n var downCellInfo = ut.indexTable[downRowIndex][cellInfo.colIndex],\r\n downCell = table.rows[downCellInfo.rowIndex].cells[downCellInfo.cellIndex];\r\n if (!downCell || cell.tagName != downCell.tagName) return -1; // TH和TD不能相互合并\r\n\r\n // 当且仅当两个Cell的开始列号和结束列号一致时能进行合并\r\n return (downCellInfo.colIndex == cellInfo.colIndex && downCellInfo.colSpan == cellInfo.colSpan) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.mergeDown(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"mergecells\"] = {\r\n queryCommandState: function () {\r\n return getUETableBySelected(this) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var ut = getUETableBySelected(this);\r\n if (ut && ut.selectedTds.length) {\r\n var cell = ut.selectedTds[0];\r\n ut.mergeRange();\r\n var rng = this.selection.getRange();\r\n if (domUtils.isEmptyBlock(cell)) {\r\n rng.setStart(cell, 0).collapse(true)\r\n } else {\r\n rng.selectNodeContents(cell)\r\n }\r\n rng.select();\r\n }\r\n\r\n\r\n }\r\n };\r\n UE.commands[\"insertrow\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\" || (cell.tagName == 'TH' && tableItems.tr !== tableItems.table.rows[0])) &&\r\n getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell,\r\n table = tableItems.table,\r\n ut = getUETable(table),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertRow(!ut.selectedTds.length ? cellInfo.rowIndex:ut.cellsRange.beginRowIndex,'');\r\n if (!ut.selectedTds.length) {\r\n ut.insertRow(cellInfo.rowIndex, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) {\r\n ut.insertRow(range.beginRowIndex, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n if (table.getAttribute(\"interlaced\") === \"enabled\") this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n //后插入行\r\n UE.commands[\"insertrownext\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\") && getUETable(tableItems.table).rowsNum < this.options.maxRowNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell,\r\n table = tableItems.table,\r\n ut = getUETable(table),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertRow(!ut.selectedTds.length? cellInfo.rowIndex + cellInfo.rowSpan : ut.cellsRange.endRowIndex + 1,'');\r\n if (!ut.selectedTds.length) {\r\n ut.insertRow(cellInfo.rowIndex + cellInfo.rowSpan, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endRowIndex - range.beginRowIndex + 1; i < len; i++) {\r\n ut.insertRow(range.endRowIndex + 1, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n if (table.getAttribute(\"interlaced\") === \"enabled\") this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n UE.commands[\"deleterow\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this);\r\n return tableItems.cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellsRange = ut.cellsRange,\r\n cellInfo = ut.getCellInfo(cell),\r\n preCell = ut.getVSideCell(cell),\r\n nextCell = ut.getVSideCell(cell, true),\r\n rng = this.selection.getRange();\r\n if (utils.isEmptyObject(cellsRange)) {\r\n ut.deleteRow(cellInfo.rowIndex);\r\n } else {\r\n for (var i = cellsRange.beginRowIndex; i < cellsRange.endRowIndex + 1; i++) {\r\n ut.deleteRow(cellsRange.beginRowIndex);\r\n }\r\n }\r\n var table = ut.table;\r\n if (!table.getElementsByTagName('td').length) {\r\n var nextSibling = table.nextSibling;\r\n domUtils.remove(table);\r\n if (nextSibling) {\r\n rng.setStart(nextSibling, 0).setCursor(false, true);\r\n }\r\n } else {\r\n if (cellInfo.rowSpan == 1 || cellInfo.rowSpan == cellsRange.endRowIndex - cellsRange.beginRowIndex + 1) {\r\n if (nextCell || preCell) rng.selectNodeContents(nextCell || preCell).setCursor(false, true);\r\n } else {\r\n var newCell = ut.getCell(cellInfo.rowIndex, ut.indexTable[cellInfo.rowIndex][cellInfo.colIndex].cellIndex);\r\n if (newCell) rng.selectNodeContents(newCell).setCursor(false, true);\r\n }\r\n }\r\n if (table.getAttribute(\"interlaced\") === \"enabled\") this.fireEvent(\"interlacetable\", table);\r\n }\r\n };\r\n UE.commands[\"insertcol\"] = {\r\n queryCommandState: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && (cell.tagName == \"TD\" || (cell.tagName == 'TH' && cell !== tableItems.tr.cells[0])) &&\r\n getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n if (this.queryCommandState(cmd) == -1) return;\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellInfo = ut.getCellInfo(cell);\r\n\r\n //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex:ut.cellsRange.beginColIndex);\r\n if (!ut.selectedTds.length) {\r\n ut.insertCol(cellInfo.colIndex, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) {\r\n ut.insertCol(range.beginColIndex, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select(true);\r\n }\r\n };\r\n UE.commands[\"insertcolnext\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n return cell && getUETable(tableItems.table).colsNum < this.options.maxColNum ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n cellInfo = ut.getCellInfo(cell);\r\n //ut.insertCol(!ut.selectedTds.length ? cellInfo.colIndex + cellInfo.colSpan:ut.cellsRange.endColIndex +1);\r\n if (!ut.selectedTds.length) {\r\n ut.insertCol(cellInfo.colIndex + cellInfo.colSpan, cell);\r\n } else {\r\n var range = ut.cellsRange;\r\n for (var i = 0, len = range.endColIndex - range.beginColIndex + 1; i < len; i++) {\r\n ut.insertCol(range.endColIndex + 1, cell);\r\n }\r\n }\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n\r\n UE.commands[\"deletecol\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this);\r\n return tableItems.cell ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell),\r\n range = ut.cellsRange,\r\n cellInfo = ut.getCellInfo(cell),\r\n preCell = ut.getHSideCell(cell),\r\n nextCell = ut.getHSideCell(cell, true);\r\n if (utils.isEmptyObject(range)) {\r\n ut.deleteCol(cellInfo.colIndex);\r\n } else {\r\n for (var i = range.beginColIndex; i < range.endColIndex + 1; i++) {\r\n ut.deleteCol(range.beginColIndex);\r\n }\r\n }\r\n var table = ut.table,\r\n rng = this.selection.getRange();\r\n\r\n if (!table.getElementsByTagName('td').length) {\r\n var nextSibling = table.nextSibling;\r\n domUtils.remove(table);\r\n if (nextSibling) {\r\n rng.setStart(nextSibling, 0).setCursor(false, true);\r\n }\r\n } else {\r\n if (domUtils.inDoc(cell, this.document)) {\r\n rng.setStart(cell, 0).setCursor(false, true);\r\n } else {\r\n if (nextCell && domUtils.inDoc(nextCell, this.document)) {\r\n rng.selectNodeContents(nextCell).setCursor(false, true);\r\n } else {\r\n if (preCell && domUtils.inDoc(preCell, this.document)) {\r\n rng.selectNodeContents(preCell).setCursor(true, true);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n UE.commands[\"splittocells\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && (cell.colSpan > 1 || cell.rowSpan > 1) ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToCells(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"splittorows\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && cell.rowSpan > 1 ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToRows(cell);\r\n rng.moveToBookmark(bk).select();\r\n }\r\n };\r\n UE.commands[\"splittocols\"] = {\r\n queryCommandState: function () {\r\n var tableItems = getTableItemsByRange(this),\r\n cell = tableItems.cell;\r\n if (!cell) return -1;\r\n var ut = getUETable(tableItems.table);\r\n if (ut.selectedTds.length > 0) return -1;\r\n return cell && cell.colSpan > 1 ? 0 : -1;\r\n },\r\n execCommand: function () {\r\n var rng = this.selection.getRange(),\r\n bk = rng.createBookmark(true);\r\n var cell = getTableItemsByRange(this).cell,\r\n ut = getUETable(cell);\r\n ut.splitToCols(cell);\r\n rng.moveToBookmark(bk).select();\r\n\r\n }\r\n };\r\n\r\n UE.commands[\"adaptbytext\"] =\r\n UE.commands[\"adaptbywindow\"] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd) {\r\n var tableItems = getTableItemsByRange(this),\r\n table = tableItems.table;\r\n if (table) {\r\n if (cmd == 'adaptbywindow') {\r\n resetTdWidth(table, this);\r\n } else {\r\n var cells = domUtils.getElementsByTagName(table, \"td th\");\r\n utils.each(cells, function (cell) {\r\n cell.removeAttribute(\"width\");\r\n });\r\n table.removeAttribute(\"width\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n //平均分配各列\r\n UE.commands['averagedistributecol'] = {\r\n queryCommandState: function () {\r\n var ut = getUETableBySelected(this);\r\n if (!ut) return -1;\r\n return ut.isFullRow() || ut.isFullCol() ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n function getAverageWidth() {\r\n var tb = ut.table,\r\n averageWidth, sumWidth = 0,\r\n colsNum = 0,\r\n tbAttr = getDefaultValue(me, tb);\r\n\r\n if (ut.isFullRow()) {\r\n sumWidth = tb.offsetWidth;\r\n colsNum = ut.colsNum;\r\n } else {\r\n var begin = ut.cellsRange.beginColIndex,\r\n end = ut.cellsRange.endColIndex,\r\n node;\r\n for (var i = begin; i <= end;) {\r\n node = ut.selectedTds[i];\r\n sumWidth += node.offsetWidth;\r\n i += node.colSpan;\r\n colsNum += 1;\r\n }\r\n }\r\n averageWidth = Math.ceil(sumWidth / colsNum) - tbAttr.tdBorder * 2 - tbAttr.tdPadding * 2;\r\n return averageWidth;\r\n }\r\n\r\n function setAverageWidth(averageWidth) {\r\n utils.each(domUtils.getElementsByTagName(ut.table, \"th\"), function (node) {\r\n node.setAttribute(\"width\", \"\");\r\n });\r\n var cells = ut.isFullRow() ? domUtils.getElementsByTagName(ut.table, \"td\") : ut.selectedTds;\r\n\r\n utils.each(cells, function (node) {\r\n if (node.colSpan == 1) {\r\n node.setAttribute(\"width\", averageWidth);\r\n }\r\n });\r\n }\r\n\r\n if (ut && ut.selectedTds.length) {\r\n setAverageWidth(getAverageWidth());\r\n }\r\n }\r\n };\r\n //平均分配各行\r\n UE.commands['averagedistributerow'] = {\r\n queryCommandState: function () {\r\n var ut = getUETableBySelected(this);\r\n if (!ut) return -1;\r\n if (ut.selectedTds && /th/ig.test(ut.selectedTds[0].tagName)) return -1;\r\n return ut.isFullRow() || ut.isFullCol() ? 0 : -1;\r\n },\r\n execCommand: function (cmd) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n function getAverageHeight() {\r\n var averageHeight, rowNum, sumHeight = 0,\r\n tb = ut.table,\r\n tbAttr = getDefaultValue(me, tb),\r\n tdpadding = parseInt(domUtils.getComputedStyle(tb.getElementsByTagName('td')[0], \"padding-top\"));\r\n\r\n if (ut.isFullCol()) {\r\n var captionArr = domUtils.getElementsByTagName(tb, \"caption\"),\r\n thArr = domUtils.getElementsByTagName(tb, \"th\"),\r\n captionHeight, thHeight;\r\n\r\n if (captionArr.length > 0) {\r\n captionHeight = captionArr[0].offsetHeight;\r\n }\r\n if (thArr.length > 0) {\r\n thHeight = thArr[0].offsetHeight;\r\n }\r\n\r\n sumHeight = tb.offsetHeight - (captionHeight || 0) - (thHeight || 0);\r\n rowNum = thArr.length == 0 ? ut.rowsNum : (ut.rowsNum - 1);\r\n } else {\r\n var begin = ut.cellsRange.beginRowIndex,\r\n end = ut.cellsRange.endRowIndex,\r\n count = 0,\r\n trs = domUtils.getElementsByTagName(tb, \"tr\");\r\n for (var i = begin; i <= end; i++) {\r\n sumHeight += trs[i].offsetHeight;\r\n count += 1;\r\n }\r\n rowNum = count;\r\n }\r\n //ie8下是混杂模式\r\n if (browser.ie && browser.version < 9) {\r\n averageHeight = Math.ceil(sumHeight / rowNum);\r\n } else {\r\n averageHeight = Math.ceil(sumHeight / rowNum) - tbAttr.tdBorder * 2 - tdpadding * 2;\r\n }\r\n return averageHeight;\r\n }\r\n\r\n function setAverageHeight(averageHeight) {\r\n var cells = ut.isFullCol() ? domUtils.getElementsByTagName(ut.table, \"td\") : ut.selectedTds;\r\n utils.each(cells, function (node) {\r\n if (node.rowSpan == 1) {\r\n node.setAttribute(\"height\", averageHeight);\r\n }\r\n });\r\n }\r\n\r\n if (ut && ut.selectedTds.length) {\r\n setAverageHeight(getAverageHeight());\r\n }\r\n }\r\n };\r\n\r\n //单元格对齐方式\r\n UE.commands['cellalignment'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, data) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n if (!ut) {\r\n var start = me.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\", \"caption\"], true);\r\n if (!/caption/ig.test(cell.tagName)) {\r\n domUtils.setAttributes(cell, data);\r\n } else {\r\n cell.style.textAlign = data.align;\r\n cell.style.verticalAlign = data.vAlign;\r\n }\r\n me.selection.getRange().setCursor(true);\r\n } else {\r\n utils.each(ut.selectedTds, function (cell) {\r\n domUtils.setAttributes(cell, data);\r\n });\r\n }\r\n },\r\n /**\r\n * 查询当前点击的单元格的对齐状态, 如果当前已经选择了多个单元格, 则会返回所有单元格经过统一协调过后的状态\r\n * @see UE.UETable.getTableCellAlignState\r\n */\r\n queryCommandValue: function (cmd) {\r\n\r\n var activeMenuCell = getTableItemsByRange(this).cell;\r\n\r\n if (!activeMenuCell) {\r\n activeMenuCell = getSelectedArr(this)[0];\r\n }\r\n\r\n if (!activeMenuCell) {\r\n\r\n return null;\r\n\r\n } else {\r\n\r\n //获取同时选中的其他单元格\r\n var cells = UE.UETable.getUETable(activeMenuCell).selectedTds;\r\n\r\n !cells.length && (cells = activeMenuCell);\r\n\r\n return UE.UETable.getTableCellAlignState(cells);\r\n\r\n }\r\n\r\n }\r\n };\r\n //表格对齐方式\r\n UE.commands['tablealignment'] = {\r\n queryCommandState: function () {\r\n if (browser.ie && browser.version < 8) {\r\n return -1;\r\n }\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, value) {\r\n var me = this,\r\n start = me.selection.getStart(),\r\n table = start && domUtils.findParentByTagName(start, [\"table\"], true);\r\n\r\n if (table) {\r\n table.setAttribute(\"align\", value);\r\n }\r\n }\r\n };\r\n\r\n //表格属性\r\n UE.commands['edittable'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, color) {\r\n var rng = this.selection.getRange(),\r\n table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n var arr = domUtils.getElementsByTagName(table, \"td\").concat(\r\n domUtils.getElementsByTagName(table, \"th\"),\r\n domUtils.getElementsByTagName(table, \"caption\")\r\n );\r\n utils.each(arr, function (node) {\r\n node.style.borderColor = color;\r\n });\r\n }\r\n }\r\n };\r\n //单元格属性\r\n UE.commands['edittd'] = {\r\n queryCommandState: function () {\r\n return getTableItemsByRange(this).table ? 0 : -1\r\n },\r\n execCommand: function (cmd, bkColor) {\r\n var me = this,\r\n ut = getUETableBySelected(me);\r\n\r\n if (!ut) {\r\n var start = me.selection.getStart(),\r\n cell = start && domUtils.findParentByTagName(start, [\"td\", \"th\", \"caption\"], true);\r\n if (cell) {\r\n cell.style.backgroundColor = bkColor;\r\n }\r\n } else {\r\n utils.each(ut.selectedTds, function (cell) {\r\n cell.style.backgroundColor = bkColor;\r\n });\r\n }\r\n }\r\n };\r\n\r\n UE.commands[\"settablebackground\"] = {\r\n queryCommandState: function () {\r\n return getSelectedArr(this).length > 1 ? 0 : -1;\r\n },\r\n execCommand: function (cmd, value) {\r\n var cells, ut;\r\n cells = getSelectedArr(this);\r\n ut = getUETable(cells[0]);\r\n ut.setBackground(cells, value);\r\n }\r\n };\r\n\r\n UE.commands[\"cleartablebackground\"] = {\r\n queryCommandState: function () {\r\n var cells = getSelectedArr(this);\r\n if (!cells.length) return -1;\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n if (cell.style.backgroundColor !== \"\") return 0;\r\n }\r\n return -1;\r\n },\r\n execCommand: function () {\r\n var cells = getSelectedArr(this),\r\n ut = getUETable(cells[0]);\r\n ut.removeBackground(cells);\r\n }\r\n };\r\n\r\n UE.commands[\"interlacetable\"] = UE.commands[\"uninterlacetable\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (!table) return -1;\r\n var interlaced = table.getAttribute(\"interlaced\");\r\n if (cmd == \"interlacetable\") {\r\n //TODO 待定\r\n //是否需要待定,如果设置,则命令只能单次执行成功,但反射具备toggle效果;否则可以覆盖前次命令,但反射将不存在toggle效果\r\n return (interlaced === \"enabled\") ? -1 : 0;\r\n } else {\r\n return (!interlaced || interlaced === \"disabled\") ? -1 : 0;\r\n }\r\n },\r\n execCommand: function (cmd, classList) {\r\n var table = getTableItemsByRange(this).table;\r\n if (cmd == \"interlacetable\") {\r\n table.setAttribute(\"interlaced\", \"enabled\");\r\n this.fireEvent(\"interlacetable\", table, classList);\r\n } else {\r\n table.setAttribute(\"interlaced\", \"disabled\");\r\n this.fireEvent(\"uninterlacetable\", table);\r\n }\r\n }\r\n };\r\n UE.commands[\"setbordervisible\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (!table) return -1;\r\n return 0;\r\n },\r\n execCommand: function () {\r\n var table = getTableItemsByRange(this).table;\r\n utils.each(domUtils.getElementsByTagName(table, 'td'), function (td) {\r\n td.style.borderWidth = '1px';\r\n td.style.borderStyle = 'solid';\r\n })\r\n }\r\n };\r\n\r\n function resetTdWidth(table, editor) {\r\n var tds = domUtils.getElementsByTagName(table, 'td th');\r\n utils.each(tds, function (td) {\r\n td.removeAttribute(\"width\");\r\n });\r\n table.setAttribute('width', getTableWidth(editor, true, getDefaultValue(editor, table)));\r\n var tdsWidths = [];\r\n setTimeout(function () {\r\n utils.each(tds, function (td) {\r\n (td.colSpan == 1) && tdsWidths.push(td.offsetWidth)\r\n })\r\n utils.each(tds, function (td, i) {\r\n (td.colSpan == 1) && td.setAttribute(\"width\", tdsWidths[i] + \"\");\r\n })\r\n }, 0);\r\n }\r\n\r\n function getTableWidth(editor, needIEHack, defaultValue) {\r\n var body = editor.body;\r\n return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0);\r\n }\r\n\r\n function getSelectedArr(editor) {\r\n var cell = getTableItemsByRange(editor).cell;\r\n if (cell) {\r\n var ut = getUETable(cell);\r\n return ut.selectedTds.length ? ut.selectedTds : [cell];\r\n } else {\r\n return [];\r\n }\r\n }\r\n })();\r\n\r\n\r\n // plugins/table.action.js\r\n /**\r\n * Created with JetBrains PhpStorm.\r\n * User: taoqili\r\n * Date: 12-10-12\r\n * Time: 上午10:05\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n UE.plugins['table'] = function () {\r\n var me = this,\r\n tabTimer = null,\r\n //拖动计时器\r\n tableDragTimer = null,\r\n //双击计时器\r\n tableResizeTimer = null,\r\n //单元格最小宽度\r\n cellMinWidth = 5,\r\n isInResizeBuffer = false,\r\n //单元格边框大小\r\n cellBorderWidth = 5,\r\n //鼠标偏移距离\r\n offsetOfTableCell = 10,\r\n //记录在有限时间内的点击状态, 共有3个取值, 0, 1, 2。 0代表未初始化, 1代表单击了1次,2代表2次\r\n singleClickState = 0,\r\n userActionStatus = null,\r\n //双击允许的时间范围\r\n dblclickTime = 360,\r\n UT = UE.UETable,\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n },\r\n getUETableBySelected = function (editor) {\r\n return UT.getUETableBySelected(editor);\r\n },\r\n getDefaultValue = function (editor, table) {\r\n return UT.getDefaultValue(editor, table);\r\n },\r\n removeSelectedClass = function (cells) {\r\n return UT.removeSelectedClass(cells);\r\n };\r\n\r\n function showError(e) {\r\n // throw e;\r\n }\r\n me.ready(function () {\r\n var me = this;\r\n var orgGetText = me.selection.getText;\r\n me.selection.getText = function () {\r\n var table = getUETableBySelected(me);\r\n if (table) {\r\n var str = '';\r\n utils.each(table.selectedTds, function (td) {\r\n str += td[browser.ie ? 'innerText' : 'textContent'];\r\n })\r\n return str;\r\n } else {\r\n return orgGetText.call(me.selection)\r\n }\r\n\r\n }\r\n })\r\n\r\n //处理拖动及框选相关方法\r\n var startTd = null, //鼠标按下时的锚点td\r\n currentTd = null, //当前鼠标经过时的td\r\n onDrag = \"\", //指示当前拖动状态,其值可为\"\",\"h\",\"v\" ,分别表示未拖动状态,横向拖动状态,纵向拖动状态,用于鼠标移动过程中的判断\r\n onBorder = false, //检测鼠标按下时是否处在单元格边缘位置\r\n dragButton = null,\r\n dragOver = false,\r\n dragLine = null, //模拟的拖动线\r\n dragTd = null; //发生拖动的目标td\r\n\r\n var mousedown = false,\r\n //todo 判断混乱模式\r\n needIEHack = true;\r\n\r\n me.setOpt({\r\n 'maxColNum': 20,\r\n 'maxRowNum': 100,\r\n 'defaultCols': 5,\r\n 'defaultRows': 5,\r\n 'tdvalign': 'top',\r\n 'cursorpath': me.options.UEDITOR_HOME_URL + \"themes/default/images/cursor_\",\r\n 'tableDragable': false,\r\n 'classList': [\"ue-table-interlace-color-single\", \"ue-table-interlace-color-double\"]\r\n });\r\n me.getUETable = getUETable;\r\n var commands = {\r\n 'deletetable': 1,\r\n 'inserttable': 1,\r\n 'cellvalign': 1,\r\n 'insertcaption': 1,\r\n 'deletecaption': 1,\r\n 'inserttitle': 1,\r\n 'deletetitle': 1,\r\n \"mergeright\": 1,\r\n \"mergedown\": 1,\r\n \"mergecells\": 1,\r\n \"insertrow\": 1,\r\n \"insertrownext\": 1,\r\n \"deleterow\": 1,\r\n \"insertcol\": 1,\r\n \"insertcolnext\": 1,\r\n \"deletecol\": 1,\r\n \"splittocells\": 1,\r\n \"splittorows\": 1,\r\n \"splittocols\": 1,\r\n \"adaptbytext\": 1,\r\n \"adaptbywindow\": 1,\r\n \"adaptbycustomer\": 1,\r\n \"insertparagraph\": 1,\r\n \"insertparagraphbeforetable\": 1,\r\n \"averagedistributecol\": 1,\r\n \"averagedistributerow\": 1\r\n };\r\n me.ready(function () {\r\n utils.cssRule('table',\r\n //选中的td上的样式\r\n '.selectTdClass{background-color:#edf5fa !important}' +\r\n 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' +\r\n //插入的表格的默认样式\r\n 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' +\r\n 'td,th{padding: 5px 10px;border: 1px solid #DDD;}' +\r\n 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' +\r\n 'th{border-top:1px solid #BBB;background-color:#F7F7F7;}' +\r\n 'table tr.firstRow th{border-top-width:2px;}' +\r\n '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' +\r\n 'td p{margin:0;padding:0;}', me.document);\r\n\r\n var tableCopyList, isFullCol, isFullRow;\r\n //注册del/backspace事件\r\n me.addListener('keydown', function (cmd, evt) {\r\n var me = this;\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 8) {\r\n\r\n var ut = getUETableBySelected(me);\r\n if (ut && ut.selectedTds.length) {\r\n\r\n if (ut.isFullCol()) {\r\n me.execCommand('deletecol')\r\n } else if (ut.isFullRow()) {\r\n me.execCommand('deleterow')\r\n } else {\r\n me.fireEvent('delcells');\r\n }\r\n domUtils.preventDefault(evt);\r\n }\r\n\r\n var caption = domUtils.findParentByTagName(me.selection.getStart(), 'caption', true),\r\n range = me.selection.getRange();\r\n if (range.collapsed && caption && isEmptyBlock(caption)) {\r\n me.fireEvent('saveScene');\r\n var table = caption.parentNode;\r\n domUtils.remove(caption);\r\n if (table) {\r\n range.setStart(table.rows[0].cells[0], 0).setCursor(false, true);\r\n }\r\n me.fireEvent('saveScene');\r\n }\r\n\r\n }\r\n\r\n if (keyCode == 46) {\r\n\r\n ut = getUETableBySelected(me);\r\n if (ut) {\r\n me.fireEvent('saveScene');\r\n for (var i = 0, ci; ci = ut.selectedTds[i++];) {\r\n domUtils.fillNode(me.document, ci)\r\n }\r\n me.fireEvent('saveScene');\r\n domUtils.preventDefault(evt);\r\n\r\n }\r\n\r\n }\r\n if (keyCode == 13) {\r\n\r\n var rng = me.selection.getRange(),\r\n caption = domUtils.findParentByTagName(rng.startContainer, 'caption', true);\r\n if (caption) {\r\n var table = domUtils.findParentByTagName(caption, 'table');\r\n if (!rng.collapsed) {\r\n\r\n rng.deleteContents();\r\n me.fireEvent('saveScene');\r\n } else {\r\n if (caption) {\r\n rng.setStart(table.rows[0].cells[0], 0).setCursor(false, true);\r\n }\r\n }\r\n domUtils.preventDefault(evt);\r\n return;\r\n }\r\n if (rng.collapsed) {\r\n var table = domUtils.findParentByTagName(rng.startContainer, 'table');\r\n if (table) {\r\n var cell = table.rows[0].cells[0],\r\n start = domUtils.findParentByTagName(me.selection.getStart(), ['td', 'th'], true),\r\n preNode = table.previousSibling;\r\n if (cell === start && (!preNode || preNode.nodeType == 1 && preNode.tagName == 'TABLE') && domUtils.isStartInblock(rng)) {\r\n var first = domUtils.findParent(me.selection.getStart(), function (n) {\r\n return domUtils.isBlockElm(n)\r\n }, true);\r\n if (first && (/t(h|d)/i.test(first.tagName) || first === start.firstChild)) {\r\n me.execCommand('insertparagraphbeforetable');\r\n domUtils.preventDefault(evt);\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == '67') {\r\n tableCopyList = null;\r\n var ut = getUETableBySelected(me);\r\n if (ut) {\r\n var tds = ut.selectedTds;\r\n isFullCol = ut.isFullCol();\r\n isFullRow = ut.isFullRow();\r\n tableCopyList = [\r\n [ut.cloneCell(tds[0], null, true)]\r\n ];\r\n for (var i = 1, ci; ci = tds[i]; i++) {\r\n if (ci.parentNode !== tds[i - 1].parentNode) {\r\n tableCopyList.push([ut.cloneCell(ci, null, true)]);\r\n } else {\r\n tableCopyList[tableCopyList.length - 1].push(ut.cloneCell(ci, null, true));\r\n }\r\n\r\n }\r\n }\r\n }\r\n });\r\n me.addListener(\"tablehasdeleted\", function () {\r\n toggleDraggableState(this, false, \"\", null);\r\n if (dragButton) domUtils.remove(dragButton);\r\n });\r\n\r\n me.addListener('beforepaste', function (cmd, html) {\r\n var me = this;\r\n var rng = me.selection.getRange();\r\n if (domUtils.findParentByTagName(rng.startContainer, 'caption', true)) {\r\n var div = me.document.createElement(\"div\");\r\n div.innerHTML = html.html;\r\n //trace:3729\r\n html.html = div[browser.ie9below ? 'innerText' : 'textContent'];\r\n return;\r\n }\r\n var table = getUETableBySelected(me);\r\n if (tableCopyList) {\r\n me.fireEvent('saveScene');\r\n var rng = me.selection.getRange();\r\n var td = domUtils.findParentByTagName(rng.startContainer, ['td', 'th'], true),\r\n tmpNode, preNode;\r\n if (td) {\r\n var ut = getUETable(td);\r\n if (isFullRow) {\r\n var rowIndex = ut.getCellInfo(td).rowIndex;\r\n if (td.tagName == 'TH') {\r\n rowIndex++;\r\n }\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n var tr = ut.insertRow(rowIndex++, \"td\");\r\n for (var j = 0, cj; cj = ci[j]; j++) {\r\n var cell = tr.cells[j];\r\n if (!cell) {\r\n cell = tr.insertCell(j)\r\n }\r\n cell.innerHTML = cj.innerHTML;\r\n cj.getAttribute('width') && cell.setAttribute('width', cj.getAttribute('width'));\r\n cj.getAttribute('vAlign') && cell.setAttribute('vAlign', cj.getAttribute('vAlign'));\r\n cj.getAttribute('align') && cell.setAttribute('align', cj.getAttribute('align'));\r\n cj.style.cssText && (cell.style.cssText = cj.style.cssText)\r\n }\r\n for (var j = 0, cj; cj = tr.cells[j]; j++) {\r\n if (!ci[j])\r\n break;\r\n cj.innerHTML = ci[j].innerHTML;\r\n ci[j].getAttribute('width') && cj.setAttribute('width', ci[j].getAttribute('width'));\r\n ci[j].getAttribute('vAlign') && cj.setAttribute('vAlign', ci[j].getAttribute('vAlign'));\r\n ci[j].getAttribute('align') && cj.setAttribute('align', ci[j].getAttribute('align'));\r\n ci[j].style.cssText && (cj.style.cssText = ci[j].style.cssText)\r\n }\r\n }\r\n } else {\r\n if (isFullCol) {\r\n cellInfo = ut.getCellInfo(td);\r\n var maxColNum = 0;\r\n for (var j = 0, ci = tableCopyList[0], cj; cj = ci[j++];) {\r\n maxColNum += cj.colSpan || 1;\r\n }\r\n me.__hasEnterExecCommand = true;\r\n for (i = 0; i < maxColNum; i++) {\r\n me.execCommand('insertcol');\r\n }\r\n me.__hasEnterExecCommand = false;\r\n td = ut.table.rows[0].cells[cellInfo.cellIndex];\r\n if (td.tagName == 'TH') {\r\n td = ut.table.rows[1].cells[cellInfo.cellIndex];\r\n }\r\n }\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n tmpNode = td;\r\n for (var j = 0, cj; cj = ci[j++];) {\r\n if (td) {\r\n td.innerHTML = cj.innerHTML;\r\n //todo 定制处理\r\n cj.getAttribute('width') && td.setAttribute('width', cj.getAttribute('width'));\r\n cj.getAttribute('vAlign') && td.setAttribute('vAlign', cj.getAttribute('vAlign'));\r\n cj.getAttribute('align') && td.setAttribute('align', cj.getAttribute('align'));\r\n cj.style.cssText && (td.style.cssText = cj.style.cssText);\r\n preNode = td;\r\n td = td.nextSibling;\r\n } else {\r\n var cloneTd = cj.cloneNode(true);\r\n domUtils.removeAttributes(cloneTd, ['class', 'rowSpan', 'colSpan']);\r\n\r\n preNode.parentNode.appendChild(cloneTd)\r\n }\r\n }\r\n td = ut.getNextCell(tmpNode, true, true);\r\n if (!tableCopyList[i])\r\n break;\r\n if (!td) {\r\n var cellInfo = ut.getCellInfo(tmpNode);\r\n ut.table.insertRow(ut.table.rows.length);\r\n ut.update();\r\n td = ut.getVSideCell(tmpNode, true);\r\n }\r\n }\r\n }\r\n ut.update();\r\n } else {\r\n table = me.document.createElement('table');\r\n for (var i = 0, ci; ci = tableCopyList[i++];) {\r\n var tr = table.insertRow(table.rows.length);\r\n for (var j = 0, cj; cj = ci[j++];) {\r\n cloneTd = UT.cloneCell(cj, null, true);\r\n domUtils.removeAttributes(cloneTd, ['class']);\r\n tr.appendChild(cloneTd)\r\n }\r\n if (j == 2 && cloneTd.rowSpan > 1) {\r\n cloneTd.rowSpan = 1;\r\n }\r\n }\r\n\r\n var defaultValue = getDefaultValue(me),\r\n width = me.body.offsetWidth -\r\n (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0);\r\n me.execCommand('insertHTML', '' + table.innerHTML.replace(/>\\s*<').replace(/\\bth\\b/gi, \"td\") + '
    ')\r\n }\r\n me.fireEvent('contentchange');\r\n me.fireEvent('saveScene');\r\n html.html = '';\r\n return true;\r\n } else {\r\n var div = me.document.createElement(\"div\"),\r\n tables;\r\n div.innerHTML = html.html;\r\n tables = div.getElementsByTagName(\"table\");\r\n if (domUtils.findParentByTagName(me.selection.getStart(), 'table')) {\r\n utils.each(tables, function (t) {\r\n domUtils.remove(t)\r\n });\r\n if (domUtils.findParentByTagName(me.selection.getStart(), 'caption', true)) {\r\n div.innerHTML = div[browser.ie ? 'innerText' : 'textContent'];\r\n }\r\n } else {\r\n utils.each(tables, function (table) {\r\n removeStyleSize(table, true);\r\n domUtils.removeAttributes(table, ['style', 'border']);\r\n utils.each(domUtils.getElementsByTagName(table, \"td\"), function (td) {\r\n if (isEmptyBlock(td)) {\r\n domUtils.fillNode(me.document, td);\r\n }\r\n removeStyleSize(td, true);\r\n // domUtils.removeAttributes(td, ['style'])\r\n });\r\n });\r\n }\r\n html.html = div.innerHTML;\r\n }\r\n });\r\n\r\n me.addListener('afterpaste', function () {\r\n utils.each(domUtils.getElementsByTagName(me.body, \"table\"), function (table) {\r\n if (table.offsetWidth > me.body.offsetWidth) {\r\n var defaultValue = getDefaultValue(me, table);\r\n table.style.width = me.body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(me.body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (me.options.offsetWidth || 0) + 'px'\r\n }\r\n })\r\n });\r\n me.addListener('blur', function () {\r\n tableCopyList = null;\r\n });\r\n var timer;\r\n me.addListener('keydown', function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n var rng = me.selection.getRange(),\r\n cell = domUtils.findParentByTagName(rng.startContainer, ['th', 'td'], true);\r\n if (cell) {\r\n var table = cell.parentNode.parentNode.parentNode;\r\n if (table.offsetWidth > table.getAttribute(\"width\")) {\r\n cell.style.wordBreak = \"break-all\";\r\n }\r\n }\r\n\r\n }, 100);\r\n });\r\n me.addListener(\"selectionchange\", function () {\r\n toggleDraggableState(me, false, \"\", null);\r\n });\r\n\r\n\r\n //内容变化时触发索引更新\r\n //todo 可否考虑标记检测,如果不涉及表格的变化就不进行索引重建和更新\r\n me.addListener(\"contentchange\", function () {\r\n var me = this;\r\n //尽可能排除一些不需要更新的状况\r\n hideDragLine(me);\r\n if (getUETableBySelected(me)) return;\r\n var rng = me.selection.getRange();\r\n var start = rng.startContainer;\r\n start = domUtils.findParentByTagName(start, ['td', 'th'], true);\r\n utils.each(domUtils.getElementsByTagName(me.document, 'table'), function (table) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n table.ueTable = new UT(table);\r\n //trace:3742\r\n // utils.each(domUtils.getElementsByTagName(me.document, 'td'), function (td) {\r\n //\r\n // if (domUtils.isEmptyBlock(td) && td !== start) {\r\n // domUtils.fillNode(me.document, td);\r\n // if (browser.ie && browser.version == 6) {\r\n // td.innerHTML = ' '\r\n // }\r\n // }\r\n // });\r\n // utils.each(domUtils.getElementsByTagName(me.document, 'th'), function (th) {\r\n // if (domUtils.isEmptyBlock(th) && th !== start) {\r\n // domUtils.fillNode(me.document, th);\r\n // if (browser.ie && browser.version == 6) {\r\n // th.innerHTML = ' '\r\n // }\r\n // }\r\n // });\r\n table.onmouseover = function () {\r\n me.fireEvent('tablemouseover', table);\r\n };\r\n table.onmousemove = function () {\r\n me.fireEvent('tablemousemove', table);\r\n me.options.tableDragable && toggleDragButton(true, this, me);\r\n utils.defer(function () {\r\n me.fireEvent('contentchange', 50)\r\n }, true)\r\n };\r\n table.onmouseout = function () {\r\n me.fireEvent('tablemouseout', table);\r\n toggleDraggableState(me, false, \"\", null);\r\n hideDragLine(me);\r\n };\r\n table.onclick = function (evt) {\r\n evt = me.window.event || evt;\r\n var target = getParentTdOrTh(evt.target || evt.srcElement);\r\n if (!target) return;\r\n var ut = getUETable(target),\r\n table = ut.table,\r\n cellInfo = ut.getCellInfo(target),\r\n cellsRange,\r\n rng = me.selection.getRange();\r\n // if (\"topLeft\" == inPosition(table, mouseCoords(evt))) {\r\n // cellsRange = ut.getCellsRange(ut.table.rows[0].cells[0], ut.getLastCell());\r\n // ut.setSelected(cellsRange);\r\n // return;\r\n // }\r\n // if (\"bottomRight\" == inPosition(table, mouseCoords(evt))) {\r\n //\r\n // return;\r\n // }\r\n if (inTableSide(table, target, evt, true)) {\r\n var endTdCol = ut.getCell(ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].rowIndex, ut.indexTable[ut.rowsNum - 1][cellInfo.colIndex].cellIndex);\r\n if (evt.shiftKey && ut.selectedTds.length) {\r\n if (ut.selectedTds[0] !== endTdCol) {\r\n cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdCol);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdCol).select();\r\n }\r\n } else {\r\n if (target !== endTdCol) {\r\n cellsRange = ut.getCellsRange(target, endTdCol);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdCol).select();\r\n }\r\n }\r\n return;\r\n }\r\n if (inTableSide(table, target, evt)) {\r\n var endTdRow = ut.getCell(ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].rowIndex, ut.indexTable[cellInfo.rowIndex][ut.colsNum - 1].cellIndex);\r\n if (evt.shiftKey && ut.selectedTds.length) {\r\n if (ut.selectedTds[0] !== endTdRow) {\r\n cellsRange = ut.getCellsRange(ut.selectedTds[0], endTdRow);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdRow).select();\r\n }\r\n } else {\r\n if (target !== endTdRow) {\r\n cellsRange = ut.getCellsRange(target, endTdRow);\r\n ut.setSelected(cellsRange);\r\n } else {\r\n rng && rng.selectNodeContents(endTdRow).select();\r\n }\r\n }\r\n }\r\n };\r\n });\r\n\r\n switchBorderColor(me, true);\r\n });\r\n\r\n domUtils.on(me.document, \"mousemove\", mouseMoveEvent);\r\n\r\n domUtils.on(me.document, \"mouseout\", function (evt) {\r\n var target = evt.target || evt.srcElement;\r\n if (target.tagName == \"TABLE\") {\r\n toggleDraggableState(me, false, \"\", null);\r\n }\r\n });\r\n /**\r\n * 表格隔行变色\r\n */\r\n me.addListener(\"interlacetable\", function (type, table, classList) {\r\n if (!table) return;\r\n var me = this,\r\n rows = table.rows,\r\n len = rows.length,\r\n getClass = function (list, index, repeat) {\r\n return list[index] ? list[index] : repeat ? list[index % list.length] : \"\";\r\n };\r\n for (var i = 0; i < len; i++) {\r\n rows[i].className = getClass(classList || me.options.classList, i, true);\r\n }\r\n });\r\n me.addListener(\"uninterlacetable\", function (type, table) {\r\n if (!table) return;\r\n var me = this,\r\n rows = table.rows,\r\n classList = me.options.classList,\r\n len = rows.length;\r\n for (var i = 0; i < len; i++) {\r\n domUtils.removeClasses(rows[i], classList);\r\n }\r\n });\r\n\r\n me.addListener(\"mousedown\", mouseDownEvent);\r\n me.addListener(\"mouseup\", mouseUpEvent);\r\n //拖动的时候触发mouseup\r\n domUtils.on(me.body, 'dragstart', function (evt) {\r\n mouseUpEvent.call(me, 'dragstart', evt);\r\n });\r\n me.addOutputRule(function (root) {\r\n utils.each(root.getNodesByTagName('div'), function (n) {\r\n if (n.getAttr('id') == 'ue_tableDragLine') {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n });\r\n\r\n var currentRowIndex = 0;\r\n me.addListener(\"mousedown\", function () {\r\n currentRowIndex = 0;\r\n });\r\n me.addListener('tabkeydown', function () {\r\n var range = this.selection.getRange(),\r\n common = range.getCommonAncestor(true, true),\r\n table = domUtils.findParentByTagName(common, 'table');\r\n if (table) {\r\n if (domUtils.findParentByTagName(common, 'caption', true)) {\r\n var cell = domUtils.getElementsByTagName(table, 'th td');\r\n if (cell && cell.length) {\r\n range.setStart(cell[0], 0).setCursor(false, true)\r\n }\r\n } else {\r\n var cell = domUtils.findParentByTagName(common, ['td', 'th'], true),\r\n ua = getUETable(cell);\r\n currentRowIndex = cell.rowSpan > 1 ? currentRowIndex : ua.getCellInfo(cell).rowIndex;\r\n var nextCell = ua.getTabNextCell(cell, currentRowIndex);\r\n if (nextCell) {\r\n if (isEmptyBlock(nextCell)) {\r\n range.setStart(nextCell, 0).setCursor(false, true)\r\n } else {\r\n range.selectNodeContents(nextCell).select()\r\n }\r\n } else {\r\n me.fireEvent('saveScene');\r\n me.__hasEnterExecCommand = true;\r\n this.execCommand('insertrownext');\r\n me.__hasEnterExecCommand = false;\r\n range = this.selection.getRange();\r\n range.setStart(table.rows[table.rows.length - 1].cells[0], 0).setCursor();\r\n me.fireEvent('saveScene');\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n });\r\n browser.ie && me.addListener('selectionchange', function () {\r\n toggleDraggableState(this, false, \"\", null);\r\n });\r\n me.addListener(\"keydown\", function (type, evt) {\r\n var me = this;\r\n //处理在表格的最后一个输入tab产生新的表格\r\n var keyCode = evt.keyCode || evt.which;\r\n if (keyCode == 8 || keyCode == 46) {\r\n return;\r\n }\r\n var notCtrlKey = !evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey;\r\n notCtrlKey && removeSelectedClass(domUtils.getElementsByTagName(me.body, \"td\"));\r\n var ut = getUETableBySelected(me);\r\n if (!ut) return;\r\n notCtrlKey && ut.clearSelected();\r\n });\r\n\r\n me.addListener(\"beforegetcontent\", function () {\r\n switchBorderColor(this, false);\r\n browser.ie && utils.each(this.document.getElementsByTagName('caption'), function (ci) {\r\n if (domUtils.isEmptyNode(ci)) {\r\n ci.innerHTML = ' '\r\n }\r\n });\r\n });\r\n me.addListener(\"aftergetcontent\", function () {\r\n switchBorderColor(this, true);\r\n });\r\n me.addListener(\"getAllHtml\", function () {\r\n removeSelectedClass(me.document.getElementsByTagName(\"td\"));\r\n });\r\n //修正全屏状态下插入的表格宽度在非全屏状态下撑开编辑器的情况\r\n me.addListener(\"fullscreenchanged\", function (type, fullscreen) {\r\n if (!fullscreen) {\r\n var ratio = this.body.offsetWidth / document.body.offsetWidth,\r\n tables = domUtils.getElementsByTagName(this.body, \"table\");\r\n utils.each(tables, function (table) {\r\n if (table.offsetWidth < me.body.offsetWidth) return false;\r\n var tds = domUtils.getElementsByTagName(table, \"td\"),\r\n backWidths = [];\r\n utils.each(tds, function (td) {\r\n backWidths.push(td.offsetWidth);\r\n });\r\n for (var i = 0, td; td = tds[i]; i++) {\r\n td.setAttribute(\"width\", Math.floor(backWidths[i] * ratio));\r\n }\r\n table.setAttribute(\"width\", Math.floor(getTableWidth(me, needIEHack, getDefaultValue(me))))\r\n });\r\n }\r\n });\r\n\r\n //重写execCommand命令,用于处理框选时的处理\r\n var oldExecCommand = me.execCommand;\r\n me.execCommand = function (cmd, datatat) {\r\n\r\n var me = this,\r\n args = arguments;\r\n\r\n cmd = cmd.toLowerCase();\r\n var ut = getUETableBySelected(me),\r\n tds,\r\n range = new dom.Range(me.document),\r\n cmdFun = me.commands[cmd] || UE.commands[cmd],\r\n result;\r\n if (!cmdFun) return;\r\n if (ut && !commands[cmd] && !cmdFun.notNeedUndo && !me.__hasEnterExecCommand) {\r\n me.__hasEnterExecCommand = true;\r\n me.fireEvent(\"beforeexeccommand\", cmd);\r\n tds = ut.selectedTds;\r\n var lastState = -2,\r\n lastValue = -2,\r\n value, state;\r\n for (var i = 0, td; td = tds[i]; i++) {\r\n if (isEmptyBlock(td)) {\r\n range.setStart(td, 0).setCursor(false, true)\r\n } else {\r\n range.selectNode(td).select(true);\r\n }\r\n state = me.queryCommandState(cmd);\r\n value = me.queryCommandValue(cmd);\r\n if (state != -1) {\r\n if (lastState !== state || lastValue !== value) {\r\n me._ignoreContentChange = true;\r\n result = oldExecCommand.apply(me, arguments);\r\n me._ignoreContentChange = false;\r\n\r\n }\r\n lastState = me.queryCommandState(cmd);\r\n lastValue = me.queryCommandValue(cmd);\r\n if (domUtils.isEmptyBlock(td)) {\r\n domUtils.fillNode(me.document, td)\r\n }\r\n }\r\n }\r\n range.setStart(tds[0], 0).shrinkBoundary(true).setCursor(false, true);\r\n me.fireEvent('contentchange');\r\n me.fireEvent(\"afterexeccommand\", cmd);\r\n me.__hasEnterExecCommand = false;\r\n me._selectionChange();\r\n } else {\r\n result = oldExecCommand.apply(me, arguments);\r\n }\r\n return result;\r\n };\r\n\r\n\r\n });\r\n /**\r\n * 删除obj的宽高style,改成属性宽高\r\n * @param obj\r\n * @param replaceToProperty\r\n */\r\n function removeStyleSize(obj, replaceToProperty) {\r\n removeStyle(obj, \"width\", true);\r\n removeStyle(obj, \"height\", true);\r\n }\r\n\r\n function removeStyle(obj, styleName, replaceToProperty) {\r\n if (obj.style[styleName]) {\r\n replaceToProperty && obj.setAttribute(styleName, parseInt(obj.style[styleName], 10));\r\n obj.style[styleName] = \"\";\r\n }\r\n }\r\n\r\n function getParentTdOrTh(ele) {\r\n if (ele.tagName == \"TD\" || ele.tagName == \"TH\") return ele;\r\n var td;\r\n if (td = domUtils.findParentByTagName(ele, \"td\", true) || domUtils.findParentByTagName(ele, \"th\", true)) return td;\r\n return null;\r\n }\r\n\r\n function isEmptyBlock(node) {\r\n var reg = new RegExp(domUtils.fillChar, 'g');\r\n if (node[browser.ie ? 'innerText' : 'textContent'].replace(/^\\s*$/, '').replace(reg, '').length > 0) {\r\n return 0;\r\n }\r\n for (var n in dtd.$isNotEmpty) {\r\n if (node.getElementsByTagName(n).length) {\r\n return 0;\r\n }\r\n }\r\n return 1;\r\n }\r\n\r\n\r\n function mouseCoords(evt) {\r\n if (evt.pageX || evt.pageY) {\r\n return {\r\n x: evt.pageX,\r\n y: evt.pageY\r\n };\r\n }\r\n return {\r\n x: evt.clientX + me.document.body.scrollLeft - me.document.body.clientLeft,\r\n y: evt.clientY + me.document.body.scrollTop - me.document.body.clientTop\r\n };\r\n }\r\n\r\n function mouseMoveEvent(evt) {\r\n\r\n if (isEditorDisabled()) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n //普通状态下鼠标移动\r\n var target = getParentTdOrTh(evt.target || evt.srcElement),\r\n pos;\r\n\r\n //区分用户的行为是拖动还是双击\r\n if (isInResizeBuffer) {\r\n\r\n me.body.style.webkitUserSelect = 'none';\r\n\r\n if (Math.abs(userActionStatus.x - evt.clientX) > offsetOfTableCell || Math.abs(userActionStatus.y - evt.clientY) > offsetOfTableCell) {\r\n clearTableDragTimer();\r\n isInResizeBuffer = false;\r\n singleClickState = 0;\r\n //drag action\r\n tableBorderDrag(evt);\r\n }\r\n }\r\n\r\n //修改单元格大小时的鼠标移动\r\n if (onDrag && dragTd) {\r\n singleClickState = 0;\r\n me.body.style.webkitUserSelect = 'none';\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n pos = mouseCoords(evt);\r\n toggleDraggableState(me, true, onDrag, pos, target);\r\n if (onDrag == \"h\") {\r\n dragLine.style.left = getPermissionX(dragTd, evt) + \"px\";\r\n } else if (onDrag == \"v\") {\r\n dragLine.style.top = getPermissionY(dragTd, evt) + \"px\";\r\n }\r\n return;\r\n }\r\n //当鼠标处于table上时,修改移动过程中的光标状态\r\n if (target) {\r\n //针对使用table作为容器的组件不触发拖拽效果\r\n if (me.fireEvent('excludetable', target) === true)\r\n return;\r\n pos = mouseCoords(evt);\r\n var state = getRelation(target, pos),\r\n table = domUtils.findParentByTagName(target, \"table\", true);\r\n\r\n if (inTableSide(table, target, evt, true)) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n me.body.style.cursor = \"url(\" + me.options.cursorpath + \"h.png),pointer\";\r\n } else if (inTableSide(table, target, evt)) {\r\n if (me.fireEvent(\"excludetable\", table) === true) return;\r\n me.body.style.cursor = \"url(\" + me.options.cursorpath + \"v.png),pointer\";\r\n } else {\r\n me.body.style.cursor = \"text\";\r\n var curCell = target;\r\n if (/\\d/.test(state)) {\r\n state = state.replace(/\\d/, '');\r\n target = getUETable(target).getPreviewCell(target, state == \"v\");\r\n }\r\n //位于第一行的顶部或者第一列的左边时不可拖动\r\n toggleDraggableState(me, target ? !!state : false, target ? state : '', pos, target);\r\n\r\n }\r\n } else {\r\n toggleDragButton(false, table, me);\r\n }\r\n\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n var dragButtonTimer;\r\n\r\n function toggleDragButton(show, table, editor) {\r\n if (!show) {\r\n if (dragOver) return;\r\n dragButtonTimer = setTimeout(function () {\r\n !dragOver && dragButton && dragButton.parentNode && dragButton.parentNode.removeChild(dragButton);\r\n }, 2000);\r\n } else {\r\n createDragButton(table, editor);\r\n }\r\n }\r\n\r\n function createDragButton(table, editor) {\r\n var pos = domUtils.getXY(table),\r\n doc = table.ownerDocument;\r\n if (dragButton && dragButton.parentNode) return dragButton;\r\n dragButton = doc.createElement(\"div\");\r\n dragButton.contentEditable = false;\r\n dragButton.innerHTML = \"\";\r\n dragButton.style.cssText = \"width:15px;height:15px;background-image:url(\" + editor.options.UEDITOR_HOME_URL + \"dialogs/table/dragicon.png);position: absolute;cursor:move;top:\" + (pos.y - 15) + \"px;left:\" + (pos.x) + \"px;\";\r\n domUtils.unSelectable(dragButton);\r\n dragButton.onmouseover = function (evt) {\r\n dragOver = true;\r\n };\r\n dragButton.onmouseout = function (evt) {\r\n dragOver = false;\r\n };\r\n domUtils.on(dragButton, 'click', function (type, evt) {\r\n doClick(evt, this);\r\n });\r\n domUtils.on(dragButton, 'dblclick', function (type, evt) {\r\n doDblClick(evt);\r\n });\r\n domUtils.on(dragButton, 'dragstart', function (type, evt) {\r\n domUtils.preventDefault(evt);\r\n });\r\n var timer;\r\n\r\n function doClick(evt, button) {\r\n // 部分浏览器下需要清理\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n editor.fireEvent(\"tableClicked\", table, button);\r\n }, 300);\r\n }\r\n\r\n function doDblClick(evt) {\r\n clearTimeout(timer);\r\n var ut = getUETable(table),\r\n start = table.rows[0].cells[0],\r\n end = ut.getLastCell(),\r\n range = ut.getCellsRange(start, end);\r\n editor.selection.getRange().setStart(start, 0).setCursor(false, true);\r\n ut.setSelected(range);\r\n }\r\n\r\n doc.body.appendChild(dragButton);\r\n }\r\n\r\n\r\n // function inPosition(table, pos) {\r\n // var tablePos = domUtils.getXY(table),\r\n // width = table.offsetWidth,\r\n // height = table.offsetHeight;\r\n // if (pos.x - tablePos.x < 5 && pos.y - tablePos.y < 5) {\r\n // return \"topLeft\";\r\n // } else if (tablePos.x + width - pos.x < 5 && tablePos.y + height - pos.y < 5) {\r\n // return \"bottomRight\";\r\n // }\r\n // }\r\n\r\n function inTableSide(table, cell, evt, top) {\r\n var pos = mouseCoords(evt),\r\n state = getRelation(cell, pos);\r\n\r\n if (top) {\r\n var caption = table.getElementsByTagName(\"caption\")[0],\r\n capHeight = caption ? caption.offsetHeight : 0;\r\n return (state == \"v1\") && ((pos.y - domUtils.getXY(table).y - capHeight) < 8);\r\n } else {\r\n return (state == \"h1\") && ((pos.x - domUtils.getXY(table).x) < 8);\r\n }\r\n }\r\n\r\n /**\r\n * 获取拖动时允许的X轴坐标\r\n * @param dragTd\r\n * @param evt\r\n */\r\n function getPermissionX(dragTd, evt) {\r\n var ut = getUETable(dragTd);\r\n if (ut) {\r\n var preTd = ut.getSameEndPosCells(dragTd, \"x\")[0],\r\n nextTd = ut.getSameStartPosXCells(dragTd)[0],\r\n mouseX = mouseCoords(evt).x,\r\n left = (preTd ? domUtils.getXY(preTd).x : domUtils.getXY(ut.table).x) + 20,\r\n right = nextTd ? domUtils.getXY(nextTd).x + nextTd.offsetWidth - 20 : (me.body.offsetWidth + 5 || parseInt(domUtils.getComputedStyle(me.body, \"width\"), 10));\r\n\r\n left += cellMinWidth;\r\n right -= cellMinWidth;\r\n\r\n return mouseX < left ? left : mouseX > right ? right : mouseX;\r\n }\r\n }\r\n\r\n /**\r\n * 获取拖动时允许的Y轴坐标\r\n */\r\n function getPermissionY(dragTd, evt) {\r\n try {\r\n var top = domUtils.getXY(dragTd).y,\r\n mousePosY = mouseCoords(evt).y;\r\n return mousePosY < top ? top : mousePosY;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n /**\r\n * 移动状态切换\r\n */\r\n function toggleDraggableState(editor, draggable, dir, mousePos, cell) {\r\n try {\r\n editor.body.style.cursor = dir == \"h\" ? \"col-resize\" : dir == \"v\" ? \"row-resize\" : \"text\";\r\n if (browser.ie) {\r\n if (dir && !mousedown && !getUETableBySelected(editor)) {\r\n getDragLine(editor, editor.document);\r\n showDragLineAt(dir, cell);\r\n } else {\r\n hideDragLine(editor)\r\n }\r\n }\r\n onBorder = draggable;\r\n } catch (e) {\r\n showError(e);\r\n }\r\n }\r\n\r\n /**\r\n * 获取与UETable相关的resize line\r\n * @param uetable UETable对象\r\n */\r\n function getResizeLineByUETable() {\r\n\r\n var lineId = '_UETableResizeLine',\r\n line = this.document.getElementById(lineId);\r\n\r\n if (!line) {\r\n line = this.document.createElement(\"div\");\r\n line.id = lineId;\r\n line.contnetEditable = false;\r\n line.setAttribute(\"unselectable\", \"on\");\r\n\r\n var styles = {\r\n width: 2 * cellBorderWidth + 1 + 'px',\r\n position: 'absolute',\r\n 'z-index': 100000,\r\n cursor: 'col-resize',\r\n background: 'red',\r\n display: 'none'\r\n };\r\n\r\n //切换状态\r\n line.onmouseout = function () {\r\n this.style.display = 'none';\r\n };\r\n\r\n utils.extend(line.style, styles);\r\n\r\n this.document.body.appendChild(line);\r\n\r\n }\r\n\r\n return line;\r\n\r\n }\r\n\r\n /**\r\n * 更新resize-line\r\n */\r\n function updateResizeLine(cell, uetable) {\r\n\r\n var line = getResizeLineByUETable.call(this),\r\n table = uetable.table,\r\n styles = {\r\n top: domUtils.getXY(table).y + 'px',\r\n left: domUtils.getXY(cell).x + cell.offsetWidth - cellBorderWidth + 'px',\r\n display: 'block',\r\n height: table.offsetHeight + 'px'\r\n };\r\n\r\n utils.extend(line.style, styles);\r\n\r\n }\r\n\r\n /**\r\n * 显示resize-line\r\n */\r\n function showResizeLine(cell) {\r\n\r\n var uetable = getUETable(cell);\r\n\r\n updateResizeLine.call(this, cell, uetable);\r\n\r\n }\r\n\r\n /**\r\n * 获取鼠标与当前单元格的相对位置\r\n * @param ele\r\n * @param mousePos\r\n */\r\n function getRelation(ele, mousePos) {\r\n var elePos = domUtils.getXY(ele);\r\n\r\n if (!elePos) {\r\n return '';\r\n }\r\n\r\n if (elePos.x + ele.offsetWidth - mousePos.x < cellBorderWidth) {\r\n return \"h\";\r\n }\r\n if (mousePos.x - elePos.x < cellBorderWidth) {\r\n return 'h1'\r\n }\r\n if (elePos.y + ele.offsetHeight - mousePos.y < cellBorderWidth) {\r\n return \"v\";\r\n }\r\n if (mousePos.y - elePos.y < cellBorderWidth) {\r\n return 'v1'\r\n }\r\n return '';\r\n }\r\n\r\n function mouseDownEvent(type, evt) {\r\n\r\n if (isEditorDisabled()) {\r\n return;\r\n }\r\n\r\n userActionStatus = {\r\n x: evt.clientX,\r\n y: evt.clientY\r\n };\r\n\r\n //右键菜单单独处理\r\n if (evt.button == 2) {\r\n var ut = getUETableBySelected(me),\r\n flag = false;\r\n\r\n if (ut) {\r\n var td = getTargetTd(me, evt);\r\n utils.each(ut.selectedTds, function (ti) {\r\n if (ti === td) {\r\n flag = true;\r\n }\r\n });\r\n if (!flag) {\r\n removeSelectedClass(domUtils.getElementsByTagName(me.body, \"th td\"));\r\n ut.clearSelected()\r\n } else {\r\n td = ut.selectedTds[0];\r\n setTimeout(function () {\r\n me.selection.getRange().setStart(td, 0).setCursor(false, true);\r\n }, 0);\r\n\r\n }\r\n }\r\n } else {\r\n tableClickHander(evt);\r\n }\r\n\r\n }\r\n\r\n //清除表格的计时器\r\n function clearTableTimer() {\r\n tabTimer && clearTimeout(tabTimer);\r\n tabTimer = null;\r\n }\r\n\r\n //双击收缩\r\n function tableDbclickHandler(evt) {\r\n singleClickState = 0;\r\n evt = evt || me.window.event;\r\n var target = getParentTdOrTh(evt.target || evt.srcElement);\r\n if (target) {\r\n var h;\r\n if (h = getRelation(target, mouseCoords(evt))) {\r\n\r\n hideDragLine(me);\r\n\r\n if (h == 'h1') {\r\n h = 'h';\r\n if (inTableSide(domUtils.findParentByTagName(target, \"table\"), target, evt)) {\r\n me.execCommand('adaptbywindow');\r\n } else {\r\n target = getUETable(target).getPreviewCell(target);\r\n if (target) {\r\n var rng = me.selection.getRange();\r\n rng.selectNodeContents(target).setCursor(true, true)\r\n }\r\n }\r\n }\r\n if (h == 'h') {\r\n var ut = getUETable(target),\r\n table = ut.table,\r\n cells = getCellsByMoveBorder(target, table, true);\r\n\r\n cells = extractArray(cells, 'left');\r\n\r\n ut.width = ut.offsetWidth;\r\n\r\n var oldWidth = [],\r\n newWidth = [];\r\n\r\n utils.each(cells, function (cell) {\r\n\r\n oldWidth.push(cell.offsetWidth);\r\n\r\n });\r\n\r\n utils.each(cells, function (cell) {\r\n\r\n cell.removeAttribute(\"width\");\r\n\r\n });\r\n\r\n window.setTimeout(function () {\r\n\r\n //是否允许改变\r\n var changeable = true;\r\n\r\n utils.each(cells, function (cell, index) {\r\n\r\n var width = cell.offsetWidth;\r\n\r\n if (width > oldWidth[index]) {\r\n changeable = false;\r\n return false;\r\n }\r\n\r\n newWidth.push(width);\r\n\r\n });\r\n\r\n var change = changeable ? newWidth : oldWidth;\r\n\r\n utils.each(cells, function (cell, index) {\r\n\r\n cell.width = change[index] - getTabcellSpace();\r\n\r\n });\r\n\r\n\r\n }, 0);\r\n\r\n // minWidth -= cellMinWidth;\r\n //\r\n // table.removeAttribute(\"width\");\r\n // utils.each(cells, function (cell) {\r\n // cell.style.width = \"\";\r\n // cell.width -= minWidth;\r\n // });\r\n\r\n }\r\n }\r\n }\r\n }\r\n\r\n function tableClickHander(evt) {\r\n\r\n removeSelectedClass(domUtils.getElementsByTagName(me.body, \"td th\"));\r\n //trace:3113\r\n //选中单元格,点击table外部,不会清掉table上挂的ueTable,会引起getUETableBySelected方法返回值\r\n utils.each(me.document.getElementsByTagName('table'), function (t) {\r\n t.ueTable = null;\r\n });\r\n startTd = getTargetTd(me, evt);\r\n if (!startTd) return;\r\n var table = domUtils.findParentByTagName(startTd, \"table\", true);\r\n ut = getUETable(table);\r\n ut && ut.clearSelected();\r\n\r\n //判断当前鼠标状态\r\n if (!onBorder) {\r\n me.document.body.style.webkitUserSelect = '';\r\n mousedown = true;\r\n me.addListener('mouseover', mouseOverEvent);\r\n } else {\r\n //边框上的动作处理\r\n borderActionHandler(evt);\r\n }\r\n\r\n\r\n }\r\n\r\n //处理表格边框上的动作, 这里做延时处理,避免两种动作互相影响\r\n function borderActionHandler(evt) {\r\n\r\n if (browser.ie) {\r\n evt = reconstruct(evt);\r\n }\r\n\r\n clearTableDragTimer();\r\n\r\n //是否正在等待resize的缓冲中\r\n isInResizeBuffer = true;\r\n\r\n tableDragTimer = setTimeout(function () {\r\n tableBorderDrag(evt);\r\n }, dblclickTime);\r\n\r\n }\r\n\r\n function extractArray(originArr, key) {\r\n\r\n var result = [],\r\n tmp = null;\r\n\r\n for (var i = 0, len = originArr.length; i < len; i++) {\r\n\r\n tmp = originArr[i][key];\r\n\r\n if (tmp) {\r\n result.push(tmp);\r\n }\r\n\r\n }\r\n\r\n return result;\r\n\r\n }\r\n\r\n function clearTableDragTimer() {\r\n tableDragTimer && clearTimeout(tableDragTimer);\r\n tableDragTimer = null;\r\n }\r\n\r\n function reconstruct(obj) {\r\n\r\n var attrs = ['pageX', 'pageY', 'clientX', 'clientY', 'srcElement', 'target'],\r\n newObj = {};\r\n\r\n if (obj) {\r\n\r\n for (var i = 0, key, val; key = attrs[i]; i++) {\r\n val = obj[key];\r\n val && (newObj[key] = val);\r\n }\r\n\r\n }\r\n\r\n return newObj;\r\n\r\n }\r\n\r\n //边框拖动\r\n function tableBorderDrag(evt) {\r\n\r\n isInResizeBuffer = false;\r\n\r\n startTd = evt.target || evt.srcElement;\r\n if (!startTd) return;\r\n var state = getRelation(startTd, mouseCoords(evt));\r\n if (/\\d/.test(state)) {\r\n state = state.replace(/\\d/, '');\r\n startTd = getUETable(startTd).getPreviewCell(startTd, state == 'v');\r\n }\r\n hideDragLine(me);\r\n getDragLine(me, me.document);\r\n me.fireEvent('saveScene');\r\n showDragLineAt(state, startTd);\r\n mousedown = true;\r\n //拖动开始\r\n onDrag = state;\r\n dragTd = startTd;\r\n }\r\n\r\n function mouseUpEvent(type, evt) {\r\n\r\n if (isEditorDisabled()) {\r\n return;\r\n }\r\n\r\n clearTableDragTimer();\r\n\r\n isInResizeBuffer = false;\r\n\r\n if (onBorder) {\r\n singleClickState = ++singleClickState % 3;\r\n\r\n userActionStatus = {\r\n x: evt.clientX,\r\n y: evt.clientY\r\n };\r\n\r\n tableResizeTimer = setTimeout(function () {\r\n singleClickState > 0 && singleClickState--;\r\n }, dblclickTime);\r\n\r\n if (singleClickState === 2) {\r\n\r\n singleClickState = 0;\r\n tableDbclickHandler(evt);\r\n return;\r\n\r\n }\r\n\r\n }\r\n\r\n if (evt.button == 2) return;\r\n var me = this;\r\n //清除表格上原生跨选问题\r\n var range = me.selection.getRange(),\r\n start = domUtils.findParentByTagName(range.startContainer, 'table', true),\r\n end = domUtils.findParentByTagName(range.endContainer, 'table', true);\r\n\r\n if (start || end) {\r\n if (start === end) {\r\n start = domUtils.findParentByTagName(range.startContainer, ['td', 'th', 'caption'], true);\r\n end = domUtils.findParentByTagName(range.endContainer, ['td', 'th', 'caption'], true);\r\n if (start !== end) {\r\n me.selection.clearRange()\r\n }\r\n } else {\r\n me.selection.clearRange()\r\n }\r\n }\r\n mousedown = false;\r\n me.document.body.style.webkitUserSelect = '';\r\n //拖拽状态下的mouseUP\r\n if (onDrag && dragTd) {\r\n\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n\r\n singleClickState = 0;\r\n dragLine = me.document.getElementById('ue_tableDragLine');\r\n\r\n // trace 3973\r\n if (dragLine) {\r\n var dragTdPos = domUtils.getXY(dragTd),\r\n dragLinePos = domUtils.getXY(dragLine);\r\n\r\n switch (onDrag) {\r\n case \"h\":\r\n changeColWidth(dragTd, dragLinePos.x - dragTdPos.x);\r\n break;\r\n case \"v\":\r\n changeRowHeight(dragTd, dragLinePos.y - dragTdPos.y - dragTd.offsetHeight);\r\n break;\r\n default:\r\n }\r\n onDrag = \"\";\r\n dragTd = null;\r\n\r\n hideDragLine(me);\r\n me.fireEvent('saveScene');\r\n return;\r\n }\r\n }\r\n //正常状态下的mouseup\r\n if (!startTd) {\r\n var target = domUtils.findParentByTagName(evt.target || evt.srcElement, \"td\", true);\r\n if (!target) target = domUtils.findParentByTagName(evt.target || evt.srcElement, \"th\", true);\r\n if (target && (target.tagName == \"TD\" || target.tagName == \"TH\")) {\r\n if (me.fireEvent(\"excludetable\", target) === true) return;\r\n range = new dom.Range(me.document);\r\n range.setStart(target, 0).setCursor(false, true);\r\n }\r\n } else {\r\n var ut = getUETable(startTd),\r\n cell = ut ? ut.selectedTds[0] : null;\r\n if (cell) {\r\n range = new dom.Range(me.document);\r\n if (domUtils.isEmptyBlock(cell)) {\r\n range.setStart(cell, 0).setCursor(false, true);\r\n } else {\r\n range.selectNodeContents(cell).shrinkBoundary().setCursor(false, true);\r\n }\r\n } else {\r\n range = me.selection.getRange().shrinkBoundary();\r\n if (!range.collapsed) {\r\n var start = domUtils.findParentByTagName(range.startContainer, ['td', 'th'], true),\r\n end = domUtils.findParentByTagName(range.endContainer, ['td', 'th'], true);\r\n //在table里边的不能清除\r\n if (start && !end || !start && end || start && end && start !== end) {\r\n range.setCursor(false, true);\r\n }\r\n }\r\n }\r\n startTd = null;\r\n me.removeListener('mouseover', mouseOverEvent);\r\n }\r\n me._selectionChange(250, evt);\r\n }\r\n\r\n function mouseOverEvent(type, evt) {\r\n\r\n if (isEditorDisabled()) {\r\n return;\r\n }\r\n\r\n var me = this,\r\n tar = evt.target || evt.srcElement;\r\n currentTd = domUtils.findParentByTagName(tar, \"td\", true) || domUtils.findParentByTagName(tar, \"th\", true);\r\n //需要判断两个TD是否位于同一个表格内\r\n if (startTd && currentTd &&\r\n ((startTd.tagName == \"TD\" && currentTd.tagName == \"TD\") || (startTd.tagName == \"TH\" && currentTd.tagName == \"TH\")) &&\r\n domUtils.findParentByTagName(startTd, 'table') == domUtils.findParentByTagName(currentTd, 'table')) {\r\n var ut = getUETable(currentTd);\r\n if (startTd != currentTd) {\r\n me.document.body.style.webkitUserSelect = 'none';\r\n me.selection.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']();\r\n var range = ut.getCellsRange(startTd, currentTd);\r\n ut.setSelected(range);\r\n } else {\r\n me.document.body.style.webkitUserSelect = '';\r\n ut.clearSelected();\r\n }\r\n\r\n }\r\n evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);\r\n }\r\n\r\n function setCellHeight(cell, height, backHeight) {\r\n var lineHight = parseInt(domUtils.getComputedStyle(cell, \"line-height\"), 10),\r\n tmpHeight = backHeight + height;\r\n height = tmpHeight < lineHight ? lineHight : tmpHeight;\r\n if (cell.style.height) cell.style.height = \"\";\r\n cell.rowSpan == 1 ? cell.setAttribute(\"height\", height) : (cell.removeAttribute && cell.removeAttribute(\"height\"));\r\n }\r\n\r\n function getWidth(cell) {\r\n if (!cell) return 0;\r\n return parseInt(domUtils.getComputedStyle(cell, \"width\"), 10);\r\n }\r\n\r\n function changeColWidth(cell, changeValue) {\r\n\r\n var ut = getUETable(cell);\r\n if (ut) {\r\n\r\n //根据当前移动的边框获取相关的单元格\r\n var table = ut.table,\r\n cells = getCellsByMoveBorder(cell, table);\r\n\r\n table.style.width = \"\";\r\n table.removeAttribute(\"width\");\r\n\r\n //修正改变量\r\n changeValue = correctChangeValue(changeValue, cell, cells);\r\n\r\n if (cell.nextSibling) {\r\n\r\n var i = 0;\r\n\r\n utils.each(cells, function (cellGroup) {\r\n\r\n cellGroup.left.width = (+cellGroup.left.width) + changeValue;\r\n cellGroup.right && (cellGroup.right.width = (+cellGroup.right.width) - changeValue);\r\n\r\n });\r\n\r\n } else {\r\n\r\n utils.each(cells, function (cellGroup) {\r\n cellGroup.left.width -= -changeValue;\r\n });\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n function isEditorDisabled() {\r\n return me.body.contentEditable === \"false\";\r\n }\r\n\r\n function changeRowHeight(td, changeValue) {\r\n if (Math.abs(changeValue) < 10) return;\r\n var ut = getUETable(td);\r\n if (ut) {\r\n var cells = ut.getSameEndPosCells(td, \"y\"),\r\n //备份需要连带变化的td的原始高度,否则后期无法获取正确的值\r\n backHeight = cells[0] ? cells[0].offsetHeight : 0;\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n setCellHeight(cell, changeValue, backHeight);\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 获取调整单元格大小的相关单元格\r\n * @isContainMergeCell 返回的结果中是否包含发生合并后的单元格\r\n */\r\n function getCellsByMoveBorder(cell, table, isContainMergeCell) {\r\n\r\n if (!table) {\r\n table = domUtils.findParentByTagName(cell, 'table');\r\n }\r\n\r\n if (!table) {\r\n return null;\r\n }\r\n\r\n //获取到该单元格所在行的序列号\r\n var index = domUtils.getNodeIndex(cell),\r\n temp = cell,\r\n rows = table.rows,\r\n colIndex = 0;\r\n\r\n while (temp) {\r\n //获取到当前单元格在未发生单元格合并时的序列\r\n if (temp.nodeType === 1) {\r\n colIndex += (temp.colSpan || 1);\r\n }\r\n temp = temp.previousSibling;\r\n }\r\n\r\n temp = null;\r\n\r\n //记录想关的单元格\r\n var borderCells = [];\r\n\r\n utils.each(rows, function (tabRow) {\r\n\r\n var cells = tabRow.cells,\r\n currIndex = 0;\r\n\r\n utils.each(cells, function (tabCell) {\r\n\r\n currIndex += (tabCell.colSpan || 1);\r\n\r\n if (currIndex === colIndex) {\r\n\r\n borderCells.push({\r\n left: tabCell,\r\n right: tabCell.nextSibling || null\r\n });\r\n\r\n return false;\r\n\r\n } else if (currIndex > colIndex) {\r\n\r\n if (isContainMergeCell) {\r\n borderCells.push({\r\n left: tabCell\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n });\r\n\r\n });\r\n\r\n return borderCells;\r\n\r\n }\r\n\r\n\r\n /**\r\n * 通过给定的单元格集合获取最小的单元格width\r\n */\r\n function getMinWidthByTableCells(cells) {\r\n\r\n var minWidth = Number.MAX_VALUE;\r\n\r\n for (var i = 0, curCell; curCell = cells[i]; i++) {\r\n\r\n minWidth = Math.min(minWidth, curCell.width || getTableCellWidth(curCell));\r\n\r\n }\r\n\r\n return minWidth;\r\n\r\n }\r\n\r\n function correctChangeValue(changeValue, relatedCell, cells) {\r\n\r\n //为单元格的paading预留空间\r\n changeValue -= getTabcellSpace();\r\n\r\n if (changeValue < 0) {\r\n return 0;\r\n }\r\n\r\n changeValue -= getTableCellWidth(relatedCell);\r\n\r\n //确定方向\r\n var direction = changeValue < 0 ? 'left' : 'right';\r\n\r\n changeValue = Math.abs(changeValue);\r\n\r\n //只关心非最后一个单元格就可以\r\n utils.each(cells, function (cellGroup) {\r\n\r\n var curCell = cellGroup[direction];\r\n\r\n //为单元格保留最小空间\r\n if (curCell) {\r\n changeValue = Math.min(changeValue, getTableCellWidth(curCell) - cellMinWidth);\r\n }\r\n\r\n\r\n });\r\n\r\n\r\n //修正越界\r\n changeValue = changeValue < 0 ? 0 : changeValue;\r\n\r\n return direction === 'left' ? -changeValue : changeValue;\r\n\r\n }\r\n\r\n function getTableCellWidth(cell) {\r\n\r\n var width = 0,\r\n //偏移纠正量\r\n offset = 0,\r\n width = cell.offsetWidth - getTabcellSpace();\r\n\r\n //最后一个节点纠正一下\r\n if (!cell.nextSibling) {\r\n\r\n width -= getTableCellOffset(cell);\r\n\r\n }\r\n\r\n width = width < 0 ? 0 : width;\r\n\r\n try {\r\n cell.width = width;\r\n } catch (e) {}\r\n\r\n return width;\r\n\r\n }\r\n\r\n /**\r\n * 获取单元格所在表格的最末单元格的偏移量\r\n */\r\n function getTableCellOffset(cell) {\r\n\r\n tab = domUtils.findParentByTagName(cell, \"table\", false);\r\n\r\n if (tab.offsetVal === undefined) {\r\n\r\n var prev = cell.previousSibling;\r\n\r\n if (prev) {\r\n\r\n //最后一个单元格和前一个单元格的width diff结果 如果恰好为一个border width, 则条件成立\r\n tab.offsetVal = cell.offsetWidth - prev.offsetWidth === UT.borderWidth ? UT.borderWidth : 0;\r\n\r\n } else {\r\n tab.offsetVal = 0;\r\n }\r\n\r\n }\r\n\r\n return tab.offsetVal;\r\n\r\n }\r\n\r\n function getTabcellSpace() {\r\n\r\n if (UT.tabcellSpace === undefined) {\r\n\r\n var cell = null,\r\n tab = me.document.createElement(\"table\"),\r\n tbody = me.document.createElement(\"tbody\"),\r\n trow = me.document.createElement(\"tr\"),\r\n tabcell = me.document.createElement(\"td\"),\r\n mirror = null;\r\n\r\n tabcell.style.cssText = 'border: 0;';\r\n tabcell.width = 1;\r\n\r\n trow.appendChild(tabcell);\r\n trow.appendChild(mirror = tabcell.cloneNode(false));\r\n\r\n tbody.appendChild(trow);\r\n\r\n tab.appendChild(tbody);\r\n\r\n tab.style.cssText = \"visibility: hidden;\";\r\n\r\n me.body.appendChild(tab);\r\n\r\n UT.paddingSpace = tabcell.offsetWidth - 1;\r\n\r\n var tmpTabWidth = tab.offsetWidth;\r\n\r\n tabcell.style.cssText = '';\r\n mirror.style.cssText = '';\r\n\r\n UT.borderWidth = (tab.offsetWidth - tmpTabWidth) / 3;\r\n\r\n UT.tabcellSpace = UT.paddingSpace + UT.borderWidth;\r\n\r\n me.body.removeChild(tab);\r\n\r\n }\r\n\r\n getTabcellSpace = function () {\r\n return UT.tabcellSpace;\r\n };\r\n\r\n return UT.tabcellSpace;\r\n\r\n }\r\n\r\n function getDragLine(editor, doc) {\r\n if (mousedown) return;\r\n dragLine = editor.document.createElement(\"div\");\r\n domUtils.setAttributes(dragLine, {\r\n id: \"ue_tableDragLine\",\r\n unselectable: 'on',\r\n contenteditable: false,\r\n 'onresizestart': 'return false',\r\n 'ondragstart': 'return false',\r\n 'onselectstart': 'return false',\r\n style: \"background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)\"\r\n });\r\n editor.body.appendChild(dragLine);\r\n }\r\n\r\n function hideDragLine(editor) {\r\n if (mousedown) return;\r\n var line;\r\n while (line = editor.document.getElementById('ue_tableDragLine')) {\r\n domUtils.remove(line)\r\n }\r\n }\r\n\r\n /**\r\n * 依据state(v|h)在cell位置显示横线\r\n * @param state\r\n * @param cell\r\n */\r\n function showDragLineAt(state, cell) {\r\n if (!cell) return;\r\n var table = domUtils.findParentByTagName(cell, \"table\"),\r\n caption = table.getElementsByTagName('caption'),\r\n width = table.offsetWidth,\r\n height = table.offsetHeight - (caption.length > 0 ? caption[0].offsetHeight : 0),\r\n tablePos = domUtils.getXY(table),\r\n cellPos = domUtils.getXY(cell),\r\n css;\r\n switch (state) {\r\n case \"h\":\r\n css = 'height:' + height + 'px;top:' + (tablePos.y + (caption.length > 0 ? caption[0].offsetHeight : 0)) + 'px;left:' + (cellPos.x + cell.offsetWidth);\r\n dragLine.style.cssText = css + 'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)';\r\n break;\r\n case \"v\":\r\n css = 'width:' + width + 'px;left:' + tablePos.x + 'px;top:' + (cellPos.y + cell.offsetHeight);\r\n //必须加上border:0和color:blue,否则低版ie不支持背景色显示\r\n dragLine.style.cssText = css + 'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)';\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n /**\r\n * 当表格边框颜色为白色时设置为虚线,true为添加虚线\r\n * @param editor\r\n * @param flag\r\n */\r\n function switchBorderColor(editor, flag) {\r\n var tableArr = domUtils.getElementsByTagName(editor.body, \"table\"),\r\n color;\r\n for (var i = 0, node; node = tableArr[i++];) {\r\n var td = domUtils.getElementsByTagName(node, \"td\");\r\n if (td[0]) {\r\n if (flag) {\r\n color = (td[0].style.borderColor).replace(/\\s/g, \"\");\r\n if (/(#ffffff)|(rgb\\(255,255,255\\))/ig.test(color))\r\n domUtils.addClass(node, \"noBorderTable\")\r\n } else {\r\n domUtils.removeClasses(node, \"noBorderTable\")\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n function getTableWidth(editor, needIEHack, defaultValue) {\r\n var body = editor.body;\r\n return body.offsetWidth - (needIEHack ? parseInt(domUtils.getComputedStyle(body, 'margin-left'), 10) * 2 : 0) - defaultValue.tableBorder * 2 - (editor.options.offsetWidth || 0);\r\n }\r\n\r\n /**\r\n * 获取当前拖动的单元格\r\n */\r\n function getTargetTd(editor, evt) {\r\n\r\n var target = domUtils.findParentByTagName(evt.target || evt.srcElement, [\"td\", \"th\"], true),\r\n dir = null;\r\n\r\n if (!target) {\r\n return null;\r\n }\r\n\r\n dir = getRelation(target, mouseCoords(evt));\r\n\r\n //如果有前一个节点, 需要做一个修正, 否则可能会得到一个错误的td\r\n\r\n if (!target) {\r\n return null;\r\n }\r\n\r\n if (dir === 'h1' && target.previousSibling) {\r\n\r\n var position = domUtils.getXY(target),\r\n cellWidth = target.offsetWidth;\r\n\r\n if (Math.abs(position.x + cellWidth - evt.clientX) > cellWidth / 3) {\r\n target = target.previousSibling;\r\n }\r\n\r\n } else if (dir === 'v1' && target.parentNode.previousSibling) {\r\n\r\n var position = domUtils.getXY(target),\r\n cellHeight = target.offsetHeight;\r\n\r\n if (Math.abs(position.y + cellHeight - evt.clientY) > cellHeight / 3) {\r\n target = target.parentNode.previousSibling.firstChild;\r\n }\r\n\r\n }\r\n\r\n\r\n //排除了非td内部以及用于代码高亮部分的td\r\n return target && !(editor.fireEvent(\"excludetable\", target) === true) ? target : null;\r\n }\r\n\r\n };\r\n\r\n\r\n // plugins/table.sort.js\r\n /**\r\n * Created with JetBrains PhpStorm.\r\n * User: Jinqn\r\n * Date: 13-10-12\r\n * Time: 上午10:20\r\n * To change this template use File | Settings | File Templates.\r\n */\r\n\r\n UE.UETable.prototype.sortTable = function (sortByCellIndex, compareFn) {\r\n var table = this.table,\r\n rows = table.rows,\r\n trArray = [],\r\n flag = rows[0].cells[0].tagName === \"TH\",\r\n lastRowIndex = 0;\r\n if (this.selectedTds.length) {\r\n var range = this.cellsRange,\r\n len = range.endRowIndex + 1;\r\n for (var i = range.beginRowIndex; i < len; i++) {\r\n trArray[i] = rows[i];\r\n }\r\n trArray.splice(0, range.beginRowIndex);\r\n lastRowIndex = (range.endRowIndex + 1) === this.rowsNum ? 0 : range.endRowIndex + 1;\r\n } else {\r\n for (var i = 0, len = rows.length; i < len; i++) {\r\n trArray[i] = rows[i];\r\n }\r\n }\r\n\r\n var Fn = {\r\n 'reversecurrent': function (td1, td2) {\r\n return 1;\r\n },\r\n 'orderbyasc': function (td1, td2) {\r\n var value1 = td1.innerText || td1.textContent,\r\n value2 = td2.innerText || td2.textContent;\r\n return value1.localeCompare(value2);\r\n },\r\n 'reversebyasc': function (td1, td2) {\r\n var value1 = td1.innerHTML,\r\n value2 = td2.innerHTML;\r\n return value2.localeCompare(value1);\r\n },\r\n 'orderbynum': function (td1, td2) {\r\n var value1 = td1[browser.ie ? 'innerText' : 'textContent'].match(/\\d+/),\r\n value2 = td2[browser.ie ? 'innerText' : 'textContent'].match(/\\d+/);\r\n if (value1) value1 = +value1[0];\r\n if (value2) value2 = +value2[0];\r\n return (value1 || 0) - (value2 || 0);\r\n },\r\n 'reversebynum': function (td1, td2) {\r\n var value1 = td1[browser.ie ? 'innerText' : 'textContent'].match(/\\d+/),\r\n value2 = td2[browser.ie ? 'innerText' : 'textContent'].match(/\\d+/);\r\n if (value1) value1 = +value1[0];\r\n if (value2) value2 = +value2[0];\r\n return (value2 || 0) - (value1 || 0);\r\n }\r\n };\r\n\r\n //对表格设置排序的标记data-sort-type\r\n table.setAttribute('data-sort-type', compareFn && typeof compareFn === \"string\" && Fn[compareFn] ? compareFn : '');\r\n\r\n //th不参与排序\r\n flag && trArray.splice(0, 1);\r\n trArray = utils.sort(trArray, function (tr1, tr2) {\r\n var result;\r\n if (compareFn && typeof compareFn === \"function\") {\r\n result = compareFn.call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n } else if (compareFn && typeof compareFn === \"number\") {\r\n result = 1;\r\n } else if (compareFn && typeof compareFn === \"string\" && Fn[compareFn]) {\r\n result = Fn[compareFn].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n } else {\r\n result = Fn['orderbyasc'].call(this, tr1.cells[sortByCellIndex], tr2.cells[sortByCellIndex]);\r\n }\r\n return result;\r\n });\r\n var fragment = table.ownerDocument.createDocumentFragment();\r\n for (var j = 0, len = trArray.length; j < len; j++) {\r\n fragment.appendChild(trArray[j]);\r\n }\r\n var tbody = table.getElementsByTagName(\"tbody\")[0];\r\n if (!lastRowIndex) {\r\n tbody.appendChild(fragment);\r\n } else {\r\n tbody.insertBefore(fragment, rows[lastRowIndex - range.endRowIndex + range.beginRowIndex - 1])\r\n }\r\n };\r\n\r\n UE.plugins['tablesort'] = function () {\r\n var me = this,\r\n UT = UE.UETable,\r\n getUETable = function (tdOrTable) {\r\n return UT.getUETable(tdOrTable);\r\n },\r\n getTableItemsByRange = function (editor) {\r\n return UT.getTableItemsByRange(editor);\r\n };\r\n\r\n\r\n me.ready(function () {\r\n //添加表格可排序的样式\r\n utils.cssRule('tablesort',\r\n 'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;' +\r\n ' background-image:url(' + me.options.themePath + me.options.theme + '/images/sortable.png);}',\r\n me.document);\r\n\r\n //做单元格合并操作时,清除可排序标识\r\n me.addListener(\"afterexeccommand\", function (type, cmd) {\r\n if (cmd == 'mergeright' || cmd == 'mergedown' || cmd == 'mergecells') {\r\n this.execCommand('disablesort');\r\n }\r\n });\r\n });\r\n\r\n\r\n\r\n //表格排序\r\n UE.commands['sorttable'] = {\r\n queryCommandState: function () {\r\n var me = this,\r\n tableItems = getTableItemsByRange(me);\r\n if (!tableItems.cell) return -1;\r\n var table = tableItems.table,\r\n cells = table.getElementsByTagName(\"td\");\r\n for (var i = 0, cell; cell = cells[i++];) {\r\n if (cell.rowSpan != 1 || cell.colSpan != 1) return -1;\r\n }\r\n return 0;\r\n },\r\n execCommand: function (cmd, fn) {\r\n var me = this,\r\n range = me.selection.getRange(),\r\n bk = range.createBookmark(true),\r\n tableItems = getTableItemsByRange(me),\r\n cell = tableItems.cell,\r\n ut = getUETable(tableItems.table),\r\n cellInfo = ut.getCellInfo(cell);\r\n ut.sortTable(cellInfo.cellIndex, fn);\r\n range.moveToBookmark(bk);\r\n try {\r\n range.select();\r\n } catch (e) {}\r\n }\r\n };\r\n\r\n //设置表格可排序,清除表格可排序\r\n UE.commands[\"enablesort\"] = UE.commands[\"disablesort\"] = {\r\n queryCommandState: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n if (table && cmd == 'enablesort') {\r\n var cells = domUtils.getElementsByTagName(table, 'th td');\r\n for (var i = 0; i < cells.length; i++) {\r\n if (cells[i].getAttribute('colspan') > 1 || cells[i].getAttribute('rowspan') > 1) return -1;\r\n }\r\n }\r\n\r\n return !table ? -1 : cmd == 'enablesort' ^ table.getAttribute('data-sort') != 'sortEnabled' ? -1 : 0;\r\n },\r\n execCommand: function (cmd) {\r\n var table = getTableItemsByRange(this).table;\r\n table.setAttribute(\"data-sort\", cmd == \"enablesort\" ? \"sortEnabled\" : \"sortDisabled\");\r\n cmd == \"enablesort\" ? domUtils.addClass(table, \"sortEnabled\") : domUtils.removeClasses(table, \"sortEnabled\");\r\n }\r\n };\r\n };\r\n\r\n\r\n // plugins/contextmenu.js\r\n ///import core\r\n ///commands 右键菜单\r\n ///commandsName ContextMenu\r\n ///commandsTitle 右键菜单\r\n /**\r\n * 右键菜单\r\n * @function\r\n * @name baidu.editor.plugins.contextmenu\r\n * @author zhanyi\r\n */\r\n\r\n UE.plugins['contextmenu'] = function () {\r\n var me = this;\r\n me.setOpt('enableContextMenu', true);\r\n if (me.getOpt('enableContextMenu') === false) {\r\n return;\r\n }\r\n var lang = me.getLang(\"contextMenu\"),\r\n menu,\r\n items = me.options.contextMenu || [{\r\n label: lang['selectall'],\r\n cmdName: 'selectall'\r\n },\r\n {\r\n label: lang.cleardoc,\r\n cmdName: 'cleardoc',\r\n exec: function () {\r\n if (confirm(lang.confirmclear)) {\r\n this.execCommand('cleardoc');\r\n }\r\n }\r\n },\r\n '-',\r\n {\r\n label: lang.unlink,\r\n cmdName: 'unlink'\r\n },\r\n '-',\r\n {\r\n group: lang.paragraph,\r\n icon: 'justifyjustify',\r\n subMenu: [{\r\n label: lang.justifyleft,\r\n cmdName: 'justify',\r\n value: 'left'\r\n },\r\n {\r\n label: lang.justifyright,\r\n cmdName: 'justify',\r\n value: 'right'\r\n },\r\n {\r\n label: lang.justifycenter,\r\n cmdName: 'justify',\r\n value: 'center'\r\n },\r\n {\r\n label: lang.justifyjustify,\r\n cmdName: 'justify',\r\n value: 'justify'\r\n }\r\n ]\r\n },\r\n '-',\r\n {\r\n group: lang.table,\r\n icon: 'table',\r\n subMenu: [{\r\n label: lang.inserttable,\r\n cmdName: 'inserttable'\r\n },\r\n {\r\n label: lang.deletetable,\r\n cmdName: 'deletetable'\r\n },\r\n '-',\r\n {\r\n label: lang.deleterow,\r\n cmdName: 'deleterow'\r\n },\r\n {\r\n label: lang.deletecol,\r\n cmdName: 'deletecol'\r\n },\r\n {\r\n label: lang.insertcol,\r\n cmdName: 'insertcol'\r\n },\r\n {\r\n label: lang.insertcolnext,\r\n cmdName: 'insertcolnext'\r\n },\r\n {\r\n label: lang.insertrow,\r\n cmdName: 'insertrow'\r\n },\r\n {\r\n label: lang.insertrownext,\r\n cmdName: 'insertrownext'\r\n },\r\n '-',\r\n {\r\n label: lang.insertcaption,\r\n cmdName: 'insertcaption'\r\n },\r\n {\r\n label: lang.deletecaption,\r\n cmdName: 'deletecaption'\r\n },\r\n {\r\n label: lang.inserttitle,\r\n cmdName: 'inserttitle'\r\n },\r\n {\r\n label: lang.deletetitle,\r\n cmdName: 'deletetitle'\r\n },\r\n {\r\n label: lang.inserttitlecol,\r\n cmdName: 'inserttitlecol'\r\n },\r\n {\r\n label: lang.deletetitlecol,\r\n cmdName: 'deletetitlecol'\r\n },\r\n '-',\r\n {\r\n label: lang.mergecells,\r\n cmdName: 'mergecells'\r\n },\r\n {\r\n label: lang.mergeright,\r\n cmdName: 'mergeright'\r\n },\r\n {\r\n label: lang.mergedown,\r\n cmdName: 'mergedown'\r\n },\r\n '-',\r\n {\r\n label: lang.splittorows,\r\n cmdName: 'splittorows'\r\n },\r\n {\r\n label: lang.splittocols,\r\n cmdName: 'splittocols'\r\n },\r\n {\r\n label: lang.splittocells,\r\n cmdName: 'splittocells'\r\n },\r\n '-',\r\n {\r\n label: lang.averageDiseRow,\r\n cmdName: 'averagedistributerow'\r\n },\r\n {\r\n label: lang.averageDisCol,\r\n cmdName: 'averagedistributecol'\r\n },\r\n '-',\r\n {\r\n label: lang.edittd,\r\n cmdName: 'edittd',\r\n exec: function () {\r\n if (UE.ui['edittd']) {\r\n new UE.ui['edittd'](this);\r\n }\r\n this.getDialog('edittd').open();\r\n }\r\n },\r\n {\r\n label: lang.edittable,\r\n cmdName: 'edittable',\r\n exec: function () {\r\n if (UE.ui['edittable']) {\r\n new UE.ui['edittable'](this);\r\n }\r\n this.getDialog('edittable').open();\r\n }\r\n },\r\n {\r\n label: lang.setbordervisible,\r\n cmdName: 'setbordervisible'\r\n }\r\n ]\r\n },\r\n {\r\n group: lang.tablesort,\r\n icon: 'tablesort',\r\n subMenu: [{\r\n label: lang.enablesort,\r\n cmdName: 'enablesort'\r\n },\r\n {\r\n label: lang.disablesort,\r\n cmdName: 'disablesort'\r\n },\r\n '-',\r\n {\r\n label: lang.reversecurrent,\r\n cmdName: 'sorttable',\r\n value: 'reversecurrent'\r\n },\r\n {\r\n label: lang.orderbyasc,\r\n cmdName: 'sorttable',\r\n value: 'orderbyasc'\r\n },\r\n {\r\n label: lang.reversebyasc,\r\n cmdName: 'sorttable',\r\n value: 'reversebyasc'\r\n },\r\n {\r\n label: lang.orderbynum,\r\n cmdName: 'sorttable',\r\n value: 'orderbynum'\r\n },\r\n {\r\n label: lang.reversebynum,\r\n cmdName: 'sorttable',\r\n value: 'reversebynum'\r\n }\r\n ]\r\n },\r\n {\r\n group: lang.borderbk,\r\n icon: 'borderBack',\r\n subMenu: [{\r\n label: lang.setcolor,\r\n cmdName: \"interlacetable\",\r\n exec: function () {\r\n this.execCommand(\"interlacetable\");\r\n }\r\n },\r\n {\r\n label: lang.unsetcolor,\r\n cmdName: \"uninterlacetable\",\r\n exec: function () {\r\n this.execCommand(\"uninterlacetable\");\r\n }\r\n },\r\n {\r\n label: lang.setbackground,\r\n cmdName: \"settablebackground\",\r\n exec: function () {\r\n this.execCommand(\"settablebackground\", {\r\n repeat: true,\r\n colorList: [\"#bbb\", \"#ccc\"]\r\n });\r\n }\r\n },\r\n {\r\n label: lang.unsetbackground,\r\n cmdName: \"cleartablebackground\",\r\n exec: function () {\r\n this.execCommand(\"cleartablebackground\");\r\n }\r\n },\r\n {\r\n label: lang.redandblue,\r\n cmdName: \"settablebackground\",\r\n exec: function () {\r\n this.execCommand(\"settablebackground\", {\r\n repeat: true,\r\n colorList: [\"red\", \"blue\"]\r\n });\r\n }\r\n },\r\n {\r\n label: lang.threecolorgradient,\r\n cmdName: \"settablebackground\",\r\n exec: function () {\r\n this.execCommand(\"settablebackground\", {\r\n repeat: true,\r\n colorList: [\"#aaa\", \"#bbb\", \"#ccc\"]\r\n });\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n group: lang.aligntd,\r\n icon: 'aligntd',\r\n subMenu: [{\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'left',\r\n vAlign: 'top'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'center',\r\n vAlign: 'top'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'right',\r\n vAlign: 'top'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'left',\r\n vAlign: 'middle'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'center',\r\n vAlign: 'middle'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'right',\r\n vAlign: 'middle'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'left',\r\n vAlign: 'bottom'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'center',\r\n vAlign: 'bottom'\r\n }\r\n },\r\n {\r\n cmdName: 'cellalignment',\r\n value: {\r\n align: 'right',\r\n vAlign: 'bottom'\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n group: lang.aligntable,\r\n icon: 'aligntable',\r\n subMenu: [{\r\n cmdName: 'tablealignment',\r\n className: 'left',\r\n label: lang.tableleft,\r\n value: \"left\"\r\n },\r\n {\r\n cmdName: 'tablealignment',\r\n className: 'center',\r\n label: lang.tablecenter,\r\n value: \"center\"\r\n },\r\n {\r\n cmdName: 'tablealignment',\r\n className: 'right',\r\n label: lang.tableright,\r\n value: \"right\"\r\n }\r\n ]\r\n },\r\n '-',\r\n {\r\n label: lang.insertparagraphbefore,\r\n cmdName: 'insertparagraph',\r\n value: true\r\n },\r\n {\r\n label: lang.insertparagraphafter,\r\n cmdName: 'insertparagraph'\r\n },\r\n {\r\n label: lang['copy'],\r\n cmdName: 'copy'\r\n },\r\n {\r\n label: lang['paste'],\r\n cmdName: 'paste'\r\n }\r\n ];\r\n if (!items.length) {\r\n return;\r\n }\r\n var uiUtils = UE.ui.uiUtils;\r\n\r\n me.addListener('contextmenu', function (type, evt) {\r\n\r\n var offset = uiUtils.getViewportOffsetByEvent(evt);\r\n me.fireEvent('beforeselectionchange');\r\n if (menu) {\r\n menu.destroy();\r\n }\r\n for (var i = 0, ti, contextItems = []; ti = items[i]; i++) {\r\n var last;\r\n (function (item) {\r\n if (item == '-') {\r\n if ((last = contextItems[contextItems.length - 1]) && last !== '-') {\r\n contextItems.push('-');\r\n }\r\n } else if (item.hasOwnProperty(\"group\")) {\r\n for (var j = 0, cj, subMenu = []; cj = item.subMenu[j]; j++) {\r\n (function (subItem) {\r\n if (subItem == '-') {\r\n if ((last = subMenu[subMenu.length - 1]) && last !== '-') {\r\n subMenu.push('-');\r\n } else {\r\n subMenu.splice(subMenu.length - 1);\r\n }\r\n } else {\r\n if ((me.commands[subItem.cmdName] || UE.commands[subItem.cmdName] || subItem.query) &&\r\n (subItem.query ? subItem.query() : me.queryCommandState(subItem.cmdName)) > -1) {\r\n subMenu.push({\r\n 'label': subItem.label || me.getLang(\"contextMenu.\" + subItem.cmdName + (subItem.value || '')) || \"\",\r\n 'className': 'edui-for-' + subItem.cmdName + (subItem.className ? (' edui-for-' + subItem.cmdName + '-' + subItem.className) : ''),\r\n onclick: subItem.exec ? function () {\r\n subItem.exec.call(me);\r\n } : function () {\r\n me.execCommand(subItem.cmdName, subItem.value);\r\n }\r\n });\r\n }\r\n }\r\n })(cj);\r\n }\r\n if (subMenu.length) {\r\n function getLabel() {\r\n switch (item.icon) {\r\n case \"table\":\r\n return me.getLang(\"contextMenu.table\");\r\n case \"justifyjustify\":\r\n return me.getLang(\"contextMenu.paragraph\");\r\n case \"aligntd\":\r\n return me.getLang(\"contextMenu.aligntd\");\r\n case \"aligntable\":\r\n return me.getLang(\"contextMenu.aligntable\");\r\n case \"tablesort\":\r\n return lang.tablesort;\r\n case \"borderBack\":\r\n return lang.borderbk;\r\n default:\r\n return '';\r\n }\r\n }\r\n contextItems.push({\r\n //todo 修正成自动获取方式\r\n 'label': getLabel(),\r\n className: 'edui-for-' + item.icon,\r\n 'subMenu': {\r\n items: subMenu,\r\n editor: me\r\n }\r\n });\r\n }\r\n\r\n } else {\r\n //有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法\r\n if ((me.commands[item.cmdName] || UE.commands[item.cmdName] || item.query) &&\r\n (item.query ? item.query.call(me) : me.queryCommandState(item.cmdName)) > -1) {\r\n\r\n contextItems.push({\r\n 'label': item.label || me.getLang(\"contextMenu.\" + item.cmdName),\r\n className: 'edui-for-' + (item.icon ? item.icon : item.cmdName + (item.value || '')),\r\n onclick: item.exec ? function () {\r\n item.exec.call(me);\r\n } : function () {\r\n me.execCommand(item.cmdName, item.value);\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n })(ti);\r\n }\r\n if (contextItems[contextItems.length - 1] == '-') {\r\n contextItems.pop();\r\n }\r\n\r\n menu = new UE.ui.Menu({\r\n items: contextItems,\r\n className: \"edui-contextmenu\",\r\n editor: me\r\n });\r\n menu.render();\r\n menu.showAt(offset);\r\n\r\n me.fireEvent(\"aftershowcontextmenu\", menu);\r\n\r\n domUtils.preventDefault(evt);\r\n if (browser.ie) {\r\n var ieRange;\r\n try {\r\n ieRange = me.selection.getNative().createRange();\r\n } catch (e) {\r\n return;\r\n }\r\n if (ieRange.item) {\r\n var range = new dom.Range(me.document);\r\n range.selectNode(ieRange.item(0)).select(true, true);\r\n }\r\n }\r\n });\r\n\r\n // 添加复制的flash按钮\r\n me.addListener('aftershowcontextmenu', function (type, menu) {\r\n if (me.zeroclipboard) {\r\n var items = menu.items;\r\n for (var key in items) {\r\n if (items[key].className == 'edui-for-copy') {\r\n me.zeroclipboard.clip(items[key].getDom());\r\n }\r\n }\r\n }\r\n });\r\n\r\n };\r\n\r\n\r\n // plugins/shortcutmenu.js\r\n ///import core\r\n ///commands 弹出菜单\r\n // commandsName popupmenu\r\n ///commandsTitle 弹出菜单\r\n /**\r\n * 弹出菜单\r\n * @function\r\n * @name baidu.editor.plugins.popupmenu\r\n * @author xuheng\r\n */\r\n\r\n UE.plugins['shortcutmenu'] = function () {\r\n var me = this,\r\n menu,\r\n items = me.options.shortcutMenu || [];\r\n\r\n if (!items.length) {\r\n return;\r\n }\r\n\r\n me.addListener('contextmenu mouseup', function (type, e) {\r\n var me = this,\r\n customEvt = {\r\n type: type,\r\n target: e.target || e.srcElement,\r\n screenX: e.screenX,\r\n screenY: e.screenY,\r\n clientX: e.clientX,\r\n clientY: e.clientY\r\n };\r\n\r\n setTimeout(function () {\r\n var rng = me.selection.getRange();\r\n if (rng.collapsed === false || type == \"contextmenu\") {\r\n\r\n if (!menu) {\r\n menu = new baidu.editor.ui.ShortCutMenu({\r\n editor: me,\r\n items: items,\r\n theme: me.options.theme,\r\n className: 'edui-shortcutmenu'\r\n });\r\n\r\n menu.render();\r\n me.fireEvent(\"afterrendershortcutmenu\", menu);\r\n }\r\n\r\n menu.show(customEvt, !!UE.plugins['contextmenu']);\r\n }\r\n });\r\n\r\n if (type == 'contextmenu') {\r\n domUtils.preventDefault(e);\r\n if (browser.ie9below) {\r\n var ieRange;\r\n try {\r\n ieRange = me.selection.getNative().createRange();\r\n } catch (e) {\r\n return;\r\n }\r\n if (ieRange.item) {\r\n var range = new dom.Range(me.document);\r\n range.selectNode(ieRange.item(0)).select(true, true);\r\n\r\n }\r\n }\r\n }\r\n });\r\n\r\n me.addListener('keydown', function (type) {\r\n if (type == \"keydown\") {\r\n menu && !menu.isHidden && menu.hide();\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n\r\n\r\n\r\n // plugins/basestyle.js\r\n /**\r\n * B、I、sub、super命令支持\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n UE.plugins['basestyle'] = function () {\r\n\r\n /**\r\n * 字体加粗\r\n * @command bold\r\n * @param { String } cmd 命令字符串\r\n * @remind 对已加粗的文本内容执行该命令, 将取消加粗\r\n * @method execCommand\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行加粗操作\r\n * //第一次执行, 文本内容加粗\r\n * editor.execCommand( 'bold' );\r\n *\r\n * //第二次执行, 文本内容取消加粗\r\n * editor.execCommand( 'bold' );\r\n * ```\r\n */\r\n\r\n\r\n /**\r\n * 字体倾斜\r\n * @command italic\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @remind 对已倾斜的文本内容执行该命令, 将取消倾斜\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行斜体操作\r\n * //第一次操作, 文本内容将变成斜体\r\n * editor.execCommand( 'italic' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'italic' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 下标文本,与“superscript”命令互斥\r\n * @command subscript\r\n * @method execCommand\r\n * @remind 把选中的文本内容切换成下标文本, 如果当前选中的文本已经是下标, 则该操作会把文本内容还原成正常文本\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行下标操作\r\n * //第一次操作, 文本内容将变成下标文本\r\n * editor.execCommand( 'subscript' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'subscript' );\r\n * ```\r\n */\r\n\r\n /**\r\n * 上标文本,与“subscript”命令互斥\r\n * @command superscript\r\n * @method execCommand\r\n * @remind 把选中的文本内容切换成上标文本, 如果当前选中的文本已经是上标, 则该操作会把文本内容还原成正常文本\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //对当前选中的文本内容执行上标操作\r\n * //第一次操作, 文本内容将变成上标文本\r\n * editor.execCommand( 'superscript' );\r\n *\r\n * //再次对同一文本内容执行, 则文本内容将恢复正常\r\n * editor.execCommand( 'superscript' );\r\n * ```\r\n */\r\n var basestyles = {\r\n 'bold': ['strong', 'b'],\r\n 'italic': ['em', 'i'],\r\n 'subscript': ['sub'],\r\n 'superscript': ['sup']\r\n },\r\n getObj = function (editor, tagNames) {\r\n return domUtils.filterNodeList(editor.selection.getStartElementPath(), tagNames);\r\n },\r\n me = this;\r\n //添加快捷键\r\n me.addshortcutkey({\r\n \"Bold\": \"ctrl+66\", //^B\r\n \"Italic\": \"ctrl+73\", //^I\r\n \"Underline\": \"ctrl+85\" //^U\r\n });\r\n me.addInputRule(function (root) {\r\n utils.each(root.getNodesByTagName('b i'), function (node) {\r\n switch (node.tagName) {\r\n case 'b':\r\n node.tagName = 'strong';\r\n break;\r\n case 'i':\r\n node.tagName = 'em';\r\n }\r\n });\r\n });\r\n for (var style in basestyles) {\r\n (function (cmd, tagNames) {\r\n me.commands[cmd] = {\r\n execCommand: function (cmdName) {\r\n var range = me.selection.getRange(),\r\n obj = getObj(this, tagNames);\r\n if (range.collapsed) {\r\n if (obj) {\r\n var tmpText = me.document.createTextNode('');\r\n range.insertNode(tmpText).removeInlineStyle(tagNames);\r\n range.setStartBefore(tmpText);\r\n domUtils.remove(tmpText);\r\n } else {\r\n var tmpNode = range.document.createElement(tagNames[0]);\r\n if (cmdName == 'superscript' || cmdName == 'subscript') {\r\n tmpText = me.document.createTextNode('');\r\n range.insertNode(tmpText)\r\n .removeInlineStyle(['sub', 'sup'])\r\n .setStartBefore(tmpText)\r\n .collapse(true);\r\n }\r\n range.insertNode(tmpNode).setStart(tmpNode, 0);\r\n }\r\n range.collapse(true);\r\n } else {\r\n if (cmdName == 'superscript' || cmdName == 'subscript') {\r\n if (!obj || obj.tagName.toLowerCase() != cmdName) {\r\n range.removeInlineStyle(['sub', 'sup']);\r\n }\r\n }\r\n obj ? range.removeInlineStyle(tagNames) : range.applyInlineStyle(tagNames[0]);\r\n }\r\n range.select();\r\n },\r\n queryCommandState: function () {\r\n return getObj(this, tagNames) ? 1 : 0;\r\n }\r\n };\r\n })(style, basestyles[style]);\r\n }\r\n };\r\n\r\n\r\n\r\n // plugins/elementpath.js\r\n /**\r\n * 选取路径命令\r\n * @file\r\n */\r\n UE.plugins['elementpath'] = function () {\r\n var currentLevel,\r\n tagNames,\r\n me = this;\r\n me.setOpt('elementPathEnabled', true);\r\n if (!me.options.elementPathEnabled) {\r\n return;\r\n }\r\n me.commands['elementpath'] = {\r\n execCommand: function (cmdName, level) {\r\n var start = tagNames[level],\r\n range = me.selection.getRange();\r\n currentLevel = level * 1;\r\n range.selectNode(start).select();\r\n },\r\n queryCommandValue: function () {\r\n //产生一个副本,不能修改原来的startElementPath;\r\n var parents = [].concat(this.selection.getStartElementPath()).reverse(),\r\n names = [];\r\n tagNames = parents;\r\n for (var i = 0, ci; ci = parents[i]; i++) {\r\n if (ci.nodeType == 3) {\r\n continue;\r\n }\r\n var name = ci.tagName.toLowerCase();\r\n if (name == 'img' && ci.getAttribute('anchorname')) {\r\n name = 'anchor';\r\n }\r\n names[i] = name;\r\n if (currentLevel == i) {\r\n currentLevel = -1;\r\n break;\r\n }\r\n }\r\n return names;\r\n }\r\n };\r\n };\r\n\r\n\r\n\r\n // plugins/formatmatch.js\r\n /**\r\n * 格式刷,只格式inline的\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 格式刷\r\n * @command formatmatch\r\n * @method execCommand\r\n * @remind 该操作不能复制段落格式\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //获取格式刷\r\n * editor.execCommand( 'formatmatch' );\r\n * ```\r\n */\r\n UE.plugins['formatmatch'] = function () {\r\n\r\n var me = this,\r\n list = [],\r\n img,\r\n flag = 0;\r\n\r\n me.addListener('reset', function () {\r\n list = [];\r\n flag = 0;\r\n });\r\n\r\n function addList(type, evt) {\r\n\r\n if (browser.webkit) {\r\n var target = evt.target.tagName == 'IMG' ? evt.target : null;\r\n }\r\n\r\n function addFormat(range) {\r\n\r\n if (text) {\r\n range.selectNode(text);\r\n }\r\n return range.applyInlineStyle(list[list.length - 1].tagName, null, list);\r\n\r\n }\r\n\r\n me.undoManger && me.undoManger.save();\r\n\r\n var range = me.selection.getRange(),\r\n imgT = target || range.getClosedNode();\r\n if (img && imgT && imgT.tagName == 'IMG') {\r\n //trace:964\r\n\r\n imgT.style.cssText += ';float:' + (img.style.cssFloat || img.style.styleFloat || 'none') + ';display:' + (img.style.display || 'inline');\r\n\r\n img = null;\r\n } else {\r\n if (!img) {\r\n var collapsed = range.collapsed;\r\n if (collapsed) {\r\n var text = me.document.createTextNode('match');\r\n range.insertNode(text).select();\r\n\r\n\r\n }\r\n me.__hasEnterExecCommand = true;\r\n //不能把block上的属性干掉\r\n //trace:1553\r\n var removeFormatAttributes = me.options.removeFormatAttributes;\r\n me.options.removeFormatAttributes = '';\r\n me.execCommand('removeformat');\r\n me.options.removeFormatAttributes = removeFormatAttributes;\r\n me.__hasEnterExecCommand = false;\r\n //trace:969\r\n range = me.selection.getRange();\r\n if (list.length) {\r\n addFormat(range);\r\n }\r\n if (text) {\r\n range.setStartBefore(text).collapse(true);\r\n\r\n }\r\n range.select();\r\n text && domUtils.remove(text);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n me.undoManger && me.undoManger.save();\r\n me.removeListener('mouseup', addList);\r\n flag = 0;\r\n }\r\n\r\n me.commands['formatmatch'] = {\r\n execCommand: function (cmdName) {\r\n\r\n if (flag) {\r\n flag = 0;\r\n list = [];\r\n me.removeListener('mouseup', addList);\r\n return;\r\n }\r\n\r\n\r\n\r\n var range = me.selection.getRange();\r\n img = range.getClosedNode();\r\n if (!img || img.tagName != 'IMG') {\r\n range.collapse(true).shrinkBoundary();\r\n var start = range.startContainer;\r\n list = domUtils.findParents(start, true, function (node) {\r\n return !domUtils.isBlockElm(node) && node.nodeType == 1;\r\n });\r\n //a不能加入格式刷, 并且克隆节点\r\n for (var i = 0, ci; ci = list[i]; i++) {\r\n if (ci.tagName == 'A') {\r\n list.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n me.addListener('mouseup', addList);\r\n flag = 1;\r\n\r\n\r\n },\r\n queryCommandState: function () {\r\n return flag;\r\n },\r\n notNeedUndo: 1\r\n };\r\n };\r\n\r\n\r\n\r\n // plugins/searchreplace.js\r\n ///import core\r\n ///commands 查找替换\r\n ///commandsName SearchReplace\r\n ///commandsTitle 查询替换\r\n ///commandsDialog dialogs\\searchreplace\r\n /**\r\n * @description 查找替换\r\n * @author zhanyi\r\n */\r\n\r\n UE.plugin.register('searchreplace', function () {\r\n var me = this;\r\n\r\n var _blockElm = {\r\n 'table': 1,\r\n 'tbody': 1,\r\n 'tr': 1,\r\n 'ol': 1,\r\n 'ul': 1\r\n };\r\n\r\n function findTextInString(textContent, opt, currentIndex) {\r\n var str = opt.searchStr;\r\n if (opt.dir == -1) {\r\n textContent = textContent.split('').reverse().join('');\r\n str = str.split('').reverse().join('');\r\n currentIndex = textContent.length - currentIndex;\r\n\r\n }\r\n var reg = new RegExp(str, 'g' + (opt.casesensitive ? '' : 'i')),\r\n match;\r\n\r\n while (match = reg.exec(textContent)) {\r\n if (match.index >= currentIndex) {\r\n return opt.dir == -1 ? textContent.length - match.index - opt.searchStr.length : match.index;\r\n }\r\n }\r\n return -1\r\n }\r\n\r\n function findTextBlockElm(node, currentIndex, opt) {\r\n var textContent, index, methodName = opt.all || opt.dir == 1 ? 'getNextDomNode' : 'getPreDomNode';\r\n if (domUtils.isBody(node)) {\r\n node = node.firstChild;\r\n }\r\n var first = 1;\r\n while (node) {\r\n textContent = node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent'];\r\n index = findTextInString(textContent, opt, currentIndex);\r\n first = 0;\r\n if (index != -1) {\r\n return {\r\n 'node': node,\r\n 'index': index\r\n }\r\n }\r\n node = domUtils[methodName](node);\r\n while (node && _blockElm[node.nodeName.toLowerCase()]) {\r\n node = domUtils[methodName](node, true);\r\n }\r\n if (node) {\r\n currentIndex = opt.dir == -1 ? (node.nodeType == 3 ? node.nodeValue : node[browser.ie ? 'innerText' : 'textContent']).length : 0;\r\n }\r\n\r\n }\r\n }\r\n\r\n function findNTextInBlockElm(node, index, str) {\r\n var currentIndex = 0,\r\n currentNode = node.firstChild,\r\n currentNodeLength = 0,\r\n result;\r\n while (currentNode) {\r\n if (currentNode.nodeType == 3) {\r\n currentNodeLength = currentNode.nodeValue.replace(/(^[\\t\\r\\n]+)|([\\t\\r\\n]+$)/, '').length;\r\n currentIndex += currentNodeLength;\r\n if (currentIndex >= index) {\r\n return {\r\n 'node': currentNode,\r\n 'index': currentNodeLength - (currentIndex - index)\r\n }\r\n }\r\n } else if (!dtd.$empty[currentNode.tagName]) {\r\n currentNodeLength = currentNode[browser.ie ? 'innerText' : 'textContent'].replace(/(^[\\t\\r\\n]+)|([\\t\\r\\n]+$)/, '').length\r\n currentIndex += currentNodeLength;\r\n if (currentIndex >= index) {\r\n result = findNTextInBlockElm(currentNode, currentNodeLength - (currentIndex - index), str);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n currentNode = domUtils.getNextDomNode(currentNode);\r\n\r\n }\r\n }\r\n\r\n function searchReplace(me, opt) {\r\n\r\n var rng = me.selection.getRange(),\r\n startBlockNode,\r\n searchStr = opt.searchStr,\r\n span = me.document.createElement('span');\r\n span.innerHTML = '$$ueditor_searchreplace_key$$';\r\n\r\n rng.shrinkBoundary(true);\r\n\r\n //判断是不是第一次选中\r\n if (!rng.collapsed) {\r\n rng.select();\r\n var rngText = me.selection.getText();\r\n if (new RegExp('^' + opt.searchStr + '$', (opt.casesensitive ? '' : 'i')).test(rngText)) {\r\n if (opt.replaceStr != undefined) {\r\n replaceText(rng, opt.replaceStr);\r\n rng.select();\r\n return true;\r\n } else {\r\n rng.collapse(opt.dir == -1)\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n rng.insertNode(span);\r\n rng.enlargeToBlockElm(true);\r\n startBlockNode = rng.startContainer;\r\n var currentIndex = startBlockNode[browser.ie ? 'innerText' : 'textContent'].indexOf('$$ueditor_searchreplace_key$$');\r\n rng.setStartBefore(span);\r\n domUtils.remove(span);\r\n var result = findTextBlockElm(startBlockNode, currentIndex, opt);\r\n if (result) {\r\n var rngStart = findNTextInBlockElm(result.node, result.index, searchStr);\r\n var rngEnd = findNTextInBlockElm(result.node, result.index + searchStr.length, searchStr);\r\n rng.setStart(rngStart.node, rngStart.index).setEnd(rngEnd.node, rngEnd.index);\r\n\r\n if (opt.replaceStr !== undefined) {\r\n replaceText(rng, opt.replaceStr)\r\n }\r\n rng.select();\r\n return true;\r\n } else {\r\n rng.setCursor()\r\n }\r\n\r\n }\r\n\r\n function replaceText(rng, str) {\r\n\r\n str = me.document.createTextNode(str);\r\n rng.deleteContents().insertNode(str);\r\n\r\n }\r\n return {\r\n commands: {\r\n 'searchreplace': {\r\n execCommand: function (cmdName, opt) {\r\n utils.extend(opt, {\r\n all: false,\r\n casesensitive: false,\r\n dir: 1\r\n }, true);\r\n var num = 0;\r\n if (opt.all) {\r\n\r\n var rng = me.selection.getRange(),\r\n first = me.body.firstChild;\r\n if (first && first.nodeType == 1) {\r\n rng.setStart(first, 0);\r\n rng.shrinkBoundary(true);\r\n } else if (first.nodeType == 3) {\r\n rng.setStartBefore(first)\r\n }\r\n rng.collapse(true).select(true);\r\n if (opt.replaceStr !== undefined) {\r\n me.fireEvent('saveScene');\r\n }\r\n while (searchReplace(this, opt)) {\r\n num++;\r\n }\r\n if (num) {\r\n me.fireEvent('saveScene');\r\n }\r\n } else {\r\n if (opt.replaceStr !== undefined) {\r\n me.fireEvent('saveScene');\r\n }\r\n if (searchReplace(this, opt)) {\r\n num++\r\n }\r\n if (num) {\r\n me.fireEvent('saveScene');\r\n }\r\n\r\n }\r\n\r\n return num;\r\n },\r\n notNeedUndo: 1\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/customstyle.js\r\n /**\r\n * 自定义样式\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n /**\r\n * 根据config配置文件里“customstyle”选项的值对匹配的标签执行样式替换。\r\n * @command customstyle\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand( 'customstyle' );\r\n * ```\r\n */\r\n UE.plugins['customstyle'] = function () {\r\n var me = this;\r\n me.setOpt({\r\n 'customstyle': [{\r\n tag: 'h1',\r\n name: 'tc',\r\n style: 'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'\r\n },\r\n {\r\n tag: 'h1',\r\n name: 'tl',\r\n style: 'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'\r\n },\r\n {\r\n tag: 'span',\r\n name: 'im',\r\n style: 'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'\r\n },\r\n {\r\n tag: 'span',\r\n name: 'hi',\r\n style: 'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'\r\n }\r\n ]\r\n });\r\n me.commands['customstyle'] = {\r\n execCommand: function (cmdName, obj) {\r\n var me = this,\r\n tagName = obj.tag,\r\n node = domUtils.findParent(me.selection.getStart(), function (node) {\r\n return node.getAttribute('label');\r\n }, true),\r\n range, bk, tmpObj = {};\r\n for (var p in obj) {\r\n if (obj[p] !== undefined)\r\n tmpObj[p] = obj[p];\r\n }\r\n delete tmpObj.tag;\r\n if (node && node.getAttribute('label') == obj.label) {\r\n range = this.selection.getRange();\r\n bk = range.createBookmark();\r\n if (range.collapsed) {\r\n //trace:1732 删掉自定义标签,要有p来回填站位\r\n if (dtd.$block[node.tagName]) {\r\n var fillNode = me.document.createElement('p');\r\n domUtils.moveChild(node, fillNode);\r\n node.parentNode.insertBefore(fillNode, node);\r\n domUtils.remove(node);\r\n } else {\r\n domUtils.remove(node, true);\r\n }\r\n\r\n } else {\r\n\r\n var common = domUtils.getCommonAncestor(bk.start, bk.end),\r\n nodes = domUtils.getElementsByTagName(common, tagName);\r\n if (new RegExp(tagName, 'i').test(common.tagName)) {\r\n nodes.push(common);\r\n }\r\n for (var i = 0, ni; ni = nodes[i++];) {\r\n if (ni.getAttribute('label') == obj.label) {\r\n var ps = domUtils.getPosition(ni, bk.start),\r\n pe = domUtils.getPosition(ni, bk.end);\r\n if ((ps & domUtils.POSITION_FOLLOWING || ps & domUtils.POSITION_CONTAINS) &&\r\n (pe & domUtils.POSITION_PRECEDING || pe & domUtils.POSITION_CONTAINS)\r\n )\r\n if (dtd.$block[tagName]) {\r\n var fillNode = me.document.createElement('p');\r\n domUtils.moveChild(ni, fillNode);\r\n ni.parentNode.insertBefore(fillNode, ni);\r\n }\r\n domUtils.remove(ni, true);\r\n }\r\n }\r\n node = domUtils.findParent(common, function (node) {\r\n return node.getAttribute('label') == obj.label;\r\n }, true);\r\n if (node) {\r\n\r\n domUtils.remove(node, true);\r\n\r\n }\r\n\r\n }\r\n range.moveToBookmark(bk).select();\r\n } else {\r\n if (dtd.$block[tagName]) {\r\n this.execCommand('paragraph', tagName, tmpObj, 'customstyle');\r\n range = me.selection.getRange();\r\n if (!range.collapsed) {\r\n range.collapse();\r\n node = domUtils.findParent(me.selection.getStart(), function (node) {\r\n return node.getAttribute('label') == obj.label;\r\n }, true);\r\n var pNode = me.document.createElement('p');\r\n domUtils.insertAfter(node, pNode);\r\n domUtils.fillNode(me.document, pNode);\r\n range.setStart(pNode, 0).setCursor();\r\n }\r\n } else {\r\n\r\n range = me.selection.getRange();\r\n if (range.collapsed) {\r\n node = me.document.createElement(tagName);\r\n domUtils.setAttributes(node, tmpObj);\r\n range.insertNode(node).setStart(node, 0).setCursor();\r\n\r\n return;\r\n }\r\n\r\n bk = range.createBookmark();\r\n range.applyInlineStyle(tagName, tmpObj).moveToBookmark(bk).select();\r\n }\r\n }\r\n\r\n },\r\n queryCommandValue: function () {\r\n var parent = domUtils.filterNodeList(\r\n this.selection.getStartElementPath(),\r\n function (node) {\r\n return node.getAttribute('label')\r\n }\r\n );\r\n return parent ? parent.getAttribute('label') : '';\r\n }\r\n };\r\n //当去掉customstyle是,如果是块元素,用p代替\r\n me.addListener('keyup', function (type, evt) {\r\n var keyCode = evt.keyCode || evt.which;\r\n\r\n if (keyCode == 32 || keyCode == 13) {\r\n var range = me.selection.getRange();\r\n if (range.collapsed) {\r\n var node = domUtils.findParent(me.selection.getStart(), function (node) {\r\n return node.getAttribute('label');\r\n }, true);\r\n if (node && dtd.$block[node.tagName] && domUtils.isEmptyNode(node)) {\r\n var p = me.document.createElement('p');\r\n domUtils.insertAfter(node, p);\r\n domUtils.fillNode(me.document, p);\r\n domUtils.remove(node);\r\n range.setStart(p, 0).setCursor();\r\n\r\n\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n // plugins/catchremoteimage.js\r\n ///import core\r\n ///commands 远程图片抓取\r\n ///commandsName catchRemoteImage,catchremoteimageenable\r\n ///commandsTitle 远程图片抓取\r\n /**\r\n * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片\r\n */\r\n UE.plugins['catchremoteimage'] = function () {\r\n var me = this,\r\n ajax = UE.ajax;\r\n\r\n /* 设置默认值 */\r\n if (me.options.catchRemoteImageEnable === false) return;\r\n me.setOpt({\r\n catchRemoteImageEnable: false\r\n });\r\n\r\n me.addListener(\"afterpaste\", function () {\r\n me.fireEvent(\"catchRemoteImage\");\r\n });\r\n\r\n me.addListener(\"catchRemoteImage\", function () {\r\n\r\n var catcherLocalDomain = me.getOpt('catcherLocalDomain'),\r\n catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')),\r\n catcherUrlPrefix = me.getOpt('catcherUrlPrefix'),\r\n catcherFieldName = me.getOpt('catcherFieldName');\r\n\r\n var remoteImages = [],\r\n imgs = domUtils.getElementsByTagName(me.document, \"img\"),\r\n test = function (src, urls) {\r\n if (src.indexOf(location.host) != -1 || /(^\\.)|(^\\/)/.test(src)) {\r\n return true;\r\n }\r\n if (urls) {\r\n for (var j = 0, url; url = urls[j++];) {\r\n if (src.indexOf(url) !== -1) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n for (var i = 0, ci; ci = imgs[i++];) {\r\n if (ci.getAttribute(\"word_img\")) {\r\n continue;\r\n }\r\n var src = ci.getAttribute(\"_src\") || ci.src || \"\";\r\n if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) {\r\n remoteImages.push(src);\r\n }\r\n }\r\n\r\n const DFS = {\r\n nodes: [],\r\n do(root) {\r\n // this.nodes = [];\r\n for (let i = 0; i < root.childNodes.length; i++) {\r\n var node = root.childNodes[i];\r\n // 过滤 text 节点、script 节点\r\n if ((node.nodeType != 3) && (node.nodeName != 'SCRIPT') && (node.nodeName != 'STYLE') && (node.nodeName != 'LINK') && (node.nodeName != 'html') && (node.nodeName != 'HEAD') && (node.nodeName != 'IMG')) {\r\n // if ((node.nodeType == 'SECTION') || (node.nodeName == 'DIV')) {\r\n this.nodes.push(node);\r\n }\r\n if (node.hasChildNodes()) {\r\n this.do(node);\r\n }\r\n }\r\n return this.nodes;\r\n }\r\n }\r\n console.log(DFS.do(me.document));\r\n var hiddenContaioner = document.getElementById(\"hiddenContainer\");\r\n var sectionList = [];\r\n var sections = DFS.do(me.document);\r\n sections.forEach(section => {\r\n if (section.style.cssText.indexOf(\"background-image\") > -1 && section.style.backgroundImage.indexOf(\"url(\") > -1) {\r\n var url = section.style.backgroundImage.replace('url(\"', '').replace('\")', '');\r\n if (remoteImages.indexOf(url) == -1) {\r\n sectionList.push(section);\r\n var $img = document.createElement(\"img\");\r\n $img.src = url;\r\n $img.setAttribute(\"_src\", url);\r\n imgs.push($img);\r\n remoteImages.push(url);\r\n hiddenContaioner.appendChild($img);\r\n }\r\n }\r\n });\r\n //\r\n // return\r\n if (remoteImages.length) {\r\n window.onCatchStart()\r\n catchremoteimage(remoteImages, {\r\n //成功抓取\r\n success: function (r) {\r\n try {\r\n var info = r.state !== undefined ? r : eval(\"(\" + r.responseText + \")\");\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n /* 获取源路径和新路径 */\r\n var i, j, ci, cj, oldSrc, newSrc, list = info.list;\r\n\r\n for (i = 0; ci = imgs[i++];) {\r\n oldSrc = ci.getAttribute(\"_src\") || ci.src || \"\";\r\n for (j = 0; cj = list[j++];) {\r\n if (oldSrc == cj.source && cj.state == \"SUCCESS\") { //抓取失败时不做替换处理\r\n newSrc = catcherUrlPrefix + cj.url;\r\n domUtils.setAttributes(ci, {\r\n \"src\": newSrc,\r\n \"_src\": newSrc,\r\n \"_oldSrc\": oldSrc\r\n });\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n var hiddenImgs = domUtils.getElementsByTagName(hiddenContaioner, \"img\");\r\n hiddenImgs.forEach(hiddenImg => {\r\n sectionList.forEach(sectionItem => {\r\n var url = sectionItem.style.backgroundImage.replace('url(\"', '').replace('\")', '');\r\n if (hiddenImg.getAttribute(\"_oldSrc\") == url) {\r\n sectionItem.style.backgroundImage = 'url(\"' + hiddenImg.src + '\")'\r\n }\r\n })\r\n })\r\n\r\n window.onCatchComplete()\r\n me.fireEvent('catchremotesuccess')\r\n },\r\n //回调失败,本次请求超时\r\n error: function () {\r\n window.onCatchError('请求超时')\r\n me.fireEvent(\"catchremoteerror\");\r\n }\r\n });\r\n }\r\n\r\n function catchremoteimage(imgs, callbacks) {\r\n var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',\r\n url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?' : '&') + params),\r\n isJsonp = utils.isCrossDomainUrl(url),\r\n opt = {\r\n 'method': 'POST',\r\n 'dataType': isJsonp ? 'jsonp' : '',\r\n 'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值\r\n 'onsuccess': callbacks[\"success\"],\r\n 'onerror': callbacks[\"error\"]\r\n };\r\n opt[catcherFieldName] = imgs;\r\n ajax.request(url, opt);\r\n }\r\n\r\n });\r\n };\r\n\r\n // plugins/snapscreen.js\r\n /**\r\n * 截屏插件,为UEditor提供插入支持\r\n * @file\r\n * @since 1.4.2\r\n */\r\n UE.plugin.register('snapscreen', function () {\r\n\r\n var me = this;\r\n var snapplugin;\r\n\r\n function getLocation(url) {\r\n var search,\r\n a = document.createElement('a'),\r\n params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';\r\n\r\n a.href = url;\r\n if (browser.ie) {\r\n a.href = a.href;\r\n }\r\n\r\n\r\n search = a.search;\r\n if (params) {\r\n search = search + (search.indexOf('?') == -1 ? '?' : '&') + params;\r\n search = search.replace(/[&]+/ig, '&');\r\n }\r\n return {\r\n 'port': a.port,\r\n 'hostname': a.hostname,\r\n 'path': a.pathname + search || +a.hash\r\n }\r\n }\r\n\r\n return {\r\n commands: {\r\n /**\r\n * 字体背景颜色\r\n * @command snapscreen\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('snapscreen');\r\n * ```\r\n */\r\n 'snapscreen': {\r\n execCommand: function (cmd) {\r\n var url, local, res;\r\n var lang = me.getLang(\"snapScreen_plugin\");\r\n\r\n if (!snapplugin) {\r\n var container = me.container;\r\n var doc = me.container.ownerDocument || me.container.document;\r\n snapplugin = doc.createElement(\"object\");\r\n try {\r\n snapplugin.type = \"application/x-pluginbaidusnap\";\r\n } catch (e) {\r\n return;\r\n }\r\n snapplugin.style.cssText = \"position:absolute;left:-9999px;width:0;height:0;\";\r\n snapplugin.setAttribute(\"width\", \"0\");\r\n snapplugin.setAttribute(\"height\", \"0\");\r\n container.appendChild(snapplugin);\r\n }\r\n\r\n function onSuccess(rs) {\r\n try {\r\n rs = eval(\"(\" + rs + \")\");\r\n if (rs.state == 'SUCCESS') {\r\n var opt = me.options;\r\n me.execCommand('insertimage', {\r\n src: opt.snapscreenUrlPrefix + rs.url,\r\n _src: opt.snapscreenUrlPrefix + rs.url,\r\n alt: rs.title || '',\r\n floatStyle: opt.snapscreenImgAlign\r\n });\r\n } else {\r\n alert(rs.state);\r\n }\r\n } catch (e) {\r\n alert(lang.callBackErrorMsg);\r\n }\r\n }\r\n url = me.getActionUrl(me.getOpt('snapscreenActionName'));\r\n local = getLocation(url);\r\n setTimeout(function () {\r\n try {\r\n res = snapplugin.saveSnapshot(local.hostname, local.path, local.port);\r\n } catch (e) {\r\n me.ui._dialogs['snapscreenDialog'].open();\r\n return;\r\n }\r\n\r\n onSuccess(res);\r\n }, 50);\r\n },\r\n queryCommandState: function () {\r\n return (navigator.userAgent.indexOf(\"Windows\", 0) != -1) ? 0 : -1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n // plugins/insertparagraph.js\r\n /**\r\n * 插入段落\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n\r\n /**\r\n * 插入段落\r\n * @command insertparagraph\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * editor.execCommand( 'insertparagraph' );\r\n * ```\r\n */\r\n\r\n UE.commands['insertparagraph'] = {\r\n execCommand: function (cmdName, front) {\r\n var me = this,\r\n range = me.selection.getRange(),\r\n start = range.startContainer,\r\n tmpNode;\r\n while (start) {\r\n if (domUtils.isBody(start)) {\r\n break;\r\n }\r\n tmpNode = start;\r\n start = start.parentNode;\r\n }\r\n if (tmpNode) {\r\n var p = me.document.createElement('p');\r\n if (front) {\r\n tmpNode.parentNode.insertBefore(p, tmpNode)\r\n } else {\r\n tmpNode.parentNode.insertBefore(p, tmpNode.nextSibling)\r\n }\r\n domUtils.fillNode(me.document, p);\r\n range.setStart(p, 0).setCursor(false, true);\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n // plugins/webapp.js\r\n /**\r\n * 百度应用\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n\r\n\r\n /**\r\n * 插入百度应用\r\n * @command webapp\r\n * @method execCommand\r\n * @remind 需要百度APPKey\r\n * @remind 百度应用主页: http://app.baidu.com/\r\n * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,\r\n * height=>应用容器高度,logo=>应用logo,url=>应用地址\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'webapp' , {\r\n * title: '植物大战僵尸',\r\n * width: 560,\r\n * height: 465,\r\n * logo: '应用展示的图片',\r\n * url: '百度应用的地址'\r\n * } );\r\n * ```\r\n */\r\n\r\n //UE.plugins['webapp'] = function () {\r\n // var me = this;\r\n // function createInsertStr( obj, toIframe, addParagraph ) {\r\n // return !toIframe ?\r\n // (addParagraph ? '

    ' : '') + '' +\r\n // (addParagraph ? '

    ' : '')\r\n // :\r\n // '';\r\n // }\r\n //\r\n // function switchImgAndIframe( img2frame ) {\r\n // var tmpdiv,\r\n // nodes = domUtils.getElementsByTagName( me.document, !img2frame ? \"iframe\" : \"img\" );\r\n // for ( var i = 0, node; node = nodes[i++]; ) {\r\n // if ( node.className != \"edui-faked-webapp\" ){\r\n // continue;\r\n // }\r\n // tmpdiv = me.document.createElement( \"div\" );\r\n // tmpdiv.innerHTML = createInsertStr( img2frame ? {url:node.getAttribute( \"_url\" ), width:node.width, height:node.height,title:node.title,logo:node.style.backgroundImage.replace(\"url(\",\"\").replace(\")\",\"\")} : {url:node.getAttribute( \"src\", 2 ),title:node.title, width:node.width, height:node.height,logo:node.getAttribute(\"logo_url\")}, img2frame ? true : false,false );\r\n // node.parentNode.replaceChild( tmpdiv.firstChild, node );\r\n // }\r\n // }\r\n //\r\n // me.addListener( \"beforegetcontent\", function () {\r\n // switchImgAndIframe( true );\r\n // } );\r\n // me.addListener( 'aftersetcontent', function () {\r\n // switchImgAndIframe( false );\r\n // } );\r\n // me.addListener( 'aftergetcontent', function ( cmdName ) {\r\n // if ( cmdName == 'aftergetcontent' && me.queryCommandState( 'source' ) ){\r\n // return;\r\n // }\r\n // switchImgAndIframe( false );\r\n // } );\r\n //\r\n // me.commands['webapp'] = {\r\n // execCommand:function ( cmd, obj ) {\r\n // me.execCommand( \"inserthtml\", createInsertStr( obj, false,true ) );\r\n // }\r\n // };\r\n //};\r\n\r\n UE.plugin.register('webapp', function () {\r\n var me = this;\r\n\r\n function createInsertStr(obj, toEmbed) {\r\n return !toEmbed ?\r\n '' :\r\n ''\r\n\r\n }\r\n return {\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (node) {\r\n var html;\r\n if (node.getAttr('class') == 'edui-faked-webapp') {\r\n html = createInsertStr({\r\n title: node.getAttr('title'),\r\n 'width': node.getAttr('width'),\r\n 'height': node.getAttr('height'),\r\n 'align': node.getAttr('align'),\r\n 'cssfloat': node.getStyle('float'),\r\n 'url': node.getAttr(\"_url\"),\r\n 'logo': node.getAttr('_logo_url')\r\n }, true);\r\n var embed = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(embed, node);\r\n }\r\n })\r\n },\r\n inputRule: function (root) {\r\n utils.each(root.getNodesByTagName('iframe'), function (node) {\r\n if (node.getAttr('class') == 'edui-faked-webapp') {\r\n var img = UE.uNode.createElement(createInsertStr({\r\n title: node.getAttr('title'),\r\n 'width': node.getAttr('width'),\r\n 'height': node.getAttr('height'),\r\n 'align': node.getAttr('align'),\r\n 'cssfloat': node.getStyle('float'),\r\n 'url': node.getAttr(\"src\"),\r\n 'logo': node.getAttr('logo_url')\r\n }));\r\n node.parentNode.replaceChild(img, node);\r\n }\r\n })\r\n\r\n },\r\n commands: {\r\n /**\r\n * 插入百度应用\r\n * @command webapp\r\n * @method execCommand\r\n * @remind 需要百度APPKey\r\n * @remind 百度应用主页: http://app.baidu.com/\r\n * @param { Object } appOptions 应用所需的参数项, 支持的key有: title=>应用标题, width=>应用容器宽度,\r\n * height=>应用容器高度,logo=>应用logo,url=>应用地址\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'webapp' , {\r\n * title: '植物大战僵尸',\r\n * width: 560,\r\n * height: 465,\r\n * logo: '应用展示的图片',\r\n * url: '百度应用的地址'\r\n * } );\r\n * ```\r\n */\r\n 'webapp': {\r\n execCommand: function (cmd, obj) {\r\n\r\n var me = this,\r\n str = createInsertStr(utils.extend(obj, {\r\n align: 'none'\r\n }), false);\r\n me.execCommand(\"inserthtml\", str);\r\n },\r\n queryCommandState: function () {\r\n var me = this,\r\n img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-webapp\");\r\n return flag ? 1 : 0;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/template.js\r\n ///import core\r\n ///import plugins\\inserthtml.js\r\n ///import plugins\\cleardoc.js\r\n ///commands 模板\r\n ///commandsName template\r\n ///commandsTitle 模板\r\n ///commandsDialog dialogs\\template\r\n UE.plugins['template'] = function () {\r\n UE.commands['template'] = {\r\n execCommand: function (cmd, obj) {\r\n obj.html && this.execCommand(\"inserthtml\", obj.html);\r\n }\r\n };\r\n this.addListener(\"click\", function (type, evt) {\r\n var el = evt.target || evt.srcElement,\r\n range = this.selection.getRange();\r\n var tnode = domUtils.findParent(el, function (node) {\r\n if (node.className && domUtils.hasClass(node, \"ue_t\")) {\r\n return node;\r\n }\r\n }, true);\r\n tnode && range.selectNode(tnode).shrinkBoundary().select();\r\n });\r\n this.addListener(\"keydown\", function (type, evt) {\r\n var range = this.selection.getRange();\r\n if (!range.collapsed) {\r\n if (!evt.ctrlKey && !evt.metaKey && !evt.shiftKey && !evt.altKey) {\r\n var tnode = domUtils.findParent(range.startContainer, function (node) {\r\n if (node.className && domUtils.hasClass(node, \"ue_t\")) {\r\n return node;\r\n }\r\n }, true);\r\n if (tnode) {\r\n domUtils.removeClasses(tnode, [\"ue_t\"]);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n\r\n // plugins/music.js\r\n /**\r\n * 插入音乐命令\r\n * @file\r\n */\r\n UE.plugin.register('music', function () {\r\n var me = this;\r\n\r\n function creatInsertStr(url, width, height, align, cssfloat, toEmbed) {\r\n return !toEmbed ?\r\n '' :\r\n '';\r\n }\r\n return {\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (node) {\r\n var html;\r\n if (node.getAttr('class') == 'edui-faked-music') {\r\n var cssfloat = node.getStyle('float');\r\n var align = node.getAttr('align');\r\n html = creatInsertStr(node.getAttr(\"_url\"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, true);\r\n var embed = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(embed, node);\r\n }\r\n })\r\n },\r\n inputRule: function (root) {\r\n utils.each(root.getNodesByTagName('embed'), function (node) {\r\n if (node.getAttr('class') == 'edui-faked-music') {\r\n var cssfloat = node.getStyle('float');\r\n var align = node.getAttr('align');\r\n html = creatInsertStr(node.getAttr(\"src\"), node.getAttr('width'), node.getAttr('height'), align, cssfloat, false);\r\n var img = UE.uNode.createElement(html);\r\n node.parentNode.replaceChild(img, node);\r\n }\r\n })\r\n\r\n },\r\n commands: {\r\n /**\r\n * 插入音乐\r\n * @command music\r\n * @method execCommand\r\n * @param { Object } musicOptions 插入音乐的参数项, 支持的key有: url=>音乐地址;\r\n * width=>音乐容器宽度;height=>音乐容器高度;align=>音乐文件的对齐方式, 可选值有: left, center, right, none\r\n * @example\r\n * ```javascript\r\n * //editor是编辑器实例\r\n * //在编辑器里插入一个“植物大战僵尸”的APP\r\n * editor.execCommand( 'music' , {\r\n * width: 400,\r\n * height: 95,\r\n * align: \"center\",\r\n * url: \"音乐地址\"\r\n * } );\r\n * ```\r\n */\r\n 'music': {\r\n execCommand: function (cmd, musicObj) {\r\n var me = this,\r\n str = creatInsertStr(musicObj.url, musicObj.width || 400, musicObj.height || 95, \"none\", false);\r\n me.execCommand(\"inserthtml\", str);\r\n },\r\n queryCommandState: function () {\r\n var me = this,\r\n img = me.selection.getRange().getClosedNode(),\r\n flag = img && (img.className == \"edui-faked-music\");\r\n return flag ? 1 : 0;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/autoupload.js\r\n /**\r\n * @description\r\n * 1.拖放文件到编辑区域,自动上传并插入到选区\r\n * 2.插入粘贴板的图片,自动上传并插入到选区\r\n * @author Jinqn\r\n * @date 2013-10-14\r\n */\r\n UE.plugin.register('autoupload', function () {\r\n\r\n function sendAndInsertFile(file, editor) {\r\n var me = editor;\r\n //模拟数据\r\n var fieldName, urlPrefix, maxSize, allowFiles, actionUrl,\r\n loadingHtml, errorHandler, successHandler,\r\n filetype = /image\\/\\w+/i.test(file.type) ? 'image' : 'file',\r\n loadingId = 'loading_' + (+new Date()).toString(36);\r\n\r\n fieldName = me.getOpt(filetype + 'FieldName');\r\n urlPrefix = me.getOpt(filetype + 'UrlPrefix');\r\n maxSize = me.getOpt(filetype + 'MaxSize');\r\n allowFiles = me.getOpt(filetype + 'AllowFiles');\r\n actionUrl = me.getActionUrl(me.getOpt(filetype + 'ActionName'));\r\n errorHandler = function (title) {\r\n var loader = me.document.getElementById(loadingId);\r\n loader && domUtils.remove(loader);\r\n me.fireEvent('showmessage', {\r\n 'id': loadingId,\r\n 'content': title,\r\n 'type': 'error',\r\n 'timeout': 4000\r\n });\r\n };\r\n\r\n if (filetype == 'image') {\r\n loadingHtml = '';\r\n successHandler = function (data) {\r\n var link = urlPrefix + data.url,\r\n loader = me.document.getElementById(loadingId);\r\n if (loader) {\r\n loader.setAttribute('src', link);\r\n loader.setAttribute('_src', link);\r\n loader.setAttribute('title', data.title || '');\r\n loader.setAttribute('alt', data.original || '');\r\n loader.setAttribute('width', \"100%\");\r\n loader.removeAttribute('id');\r\n domUtils.removeClasses(loader, 'loadingclass');\r\n }\r\n };\r\n } else {\r\n loadingHtml = '

    ' +\r\n '' +\r\n '

    ';\r\n successHandler = function (data) {\r\n var link = urlPrefix + data.url,\r\n loader = me.document.getElementById(loadingId);\r\n\r\n var rng = me.selection.getRange(),\r\n bk = rng.createBookmark();\r\n rng.selectNode(loader).select();\r\n me.execCommand('insertfile', {\r\n 'url': link\r\n });\r\n rng.moveToBookmark(bk).select();\r\n };\r\n }\r\n\r\n /* 插入loading的占位符 */\r\n me.execCommand('inserthtml', loadingHtml);\r\n\r\n /* 判断后端配置是否没有加载成功 */\r\n if (!me.getOpt(filetype + 'ActionName')) {\r\n errorHandler(me.getLang('autoupload.errorLoadConfig'));\r\n return;\r\n }\r\n /* 判断文件大小是否超出限制 */\r\n if (file.size > maxSize) {\r\n errorHandler(me.getLang('autoupload.exceedSizeError'));\r\n return;\r\n }\r\n /* 判断文件格式是否超出允许 */\r\n var fileext = file.name ? file.name.substr(file.name.lastIndexOf('.')) : '';\r\n if ((fileext && filetype != 'image') || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\r\n errorHandler(me.getLang('autoupload.exceedTypeError'));\r\n return;\r\n }\r\n\r\n /* 创建Ajax并提交 */\r\n var xhr = new XMLHttpRequest(),\r\n fd = new FormData(),\r\n params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',\r\n url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?' : '&') + params);\r\n\r\n fd.append(fieldName, file, file.name || ('blob.' + file.type.substr('image/'.length)));\r\n fd.append('type', 'ajax');\r\n xhr.open(\"post\", url, true);\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n xhr.addEventListener('load', function (e) {\r\n try {\r\n var json = (new Function(\"return \" + utils.trim(e.target.response)))();\r\n if (json.state == 'SUCCESS' && json.url) {\r\n successHandler(json);\r\n } else {\r\n errorHandler(json.state);\r\n }\r\n } catch (er) {\r\n errorHandler(me.getLang('autoupload.loadError'));\r\n }\r\n });\r\n xhr.send(fd);\r\n }\r\n\r\n function getPasteImage(e) {\r\n return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null;\r\n }\r\n\r\n function getDropImage(e) {\r\n return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null;\r\n }\r\n\r\n return {\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (n) {\r\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n utils.each(root.getNodesByTagName('p'), function (n) {\r\n if (/\\bloadpara\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n },\r\n bindEvents: {\r\n //插入粘贴板的图片,拖放插入图片\r\n 'ready': function (e) {\r\n var me = this;\r\n if (window.FormData && window.FileReader) {\r\n domUtils.on(me.body, 'paste drop', function (e) {\r\n var hasImg = false,\r\n items;\r\n //获取粘贴板文件列表或者拖放文件列表\r\n items = e.type == 'paste' ? getPasteImage(e) : getDropImage(e);\r\n if (items) {\r\n var len = items.length,\r\n file;\r\n while (len--) {\r\n file = items[len];\r\n if (file.getAsFile) file = file.getAsFile();\r\n if (file && file.size > 0) {\r\n sendAndInsertFile(file, me);\r\n hasImg = true;\r\n }\r\n }\r\n hasImg && e.preventDefault();\r\n }\r\n\r\n });\r\n //取消拖放图片时出现的文字光标位置提示\r\n domUtils.on(me.body, 'dragover', function (e) {\r\n if (e.dataTransfer.types[0] == 'Files') {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n //设置loading的样式\r\n utils.cssRule('loading',\r\n '.loadingclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\\n' +\r\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\r\n '}',\r\n this.document);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/autosave.js\r\n UE.plugin.register('autosave', function () {\r\n return\r\n var me = this,\r\n //无限循环保护\r\n lastSaveTime = new Date(),\r\n //最小保存间隔时间\r\n MIN_TIME = 20,\r\n //auto save key\r\n saveKey = null;\r\n\r\n function save(editor) {\r\n\r\n var saveData;\r\n\r\n if (new Date() - lastSaveTime < MIN_TIME) {\r\n return;\r\n }\r\n\r\n if (!editor.hasContents()) {\r\n //这里不能调用命令来删除, 会造成事件死循环\r\n saveKey && me.removePreferences(saveKey);\r\n return;\r\n }\r\n\r\n lastSaveTime = new Date();\r\n\r\n editor._saveFlag = null;\r\n\r\n saveData = me.body.innerHTML;\r\n\r\n if (editor.fireEvent(\"beforeautosave\", {\r\n content: saveData\r\n }) === false) {\r\n return;\r\n }\r\n\r\n me.setPreferences(saveKey, saveData);\r\n\r\n editor.fireEvent(\"afterautosave\", {\r\n content: saveData\r\n });\r\n\r\n }\r\n\r\n return {\r\n defaultOptions: {\r\n //默认间隔时间\r\n saveInterval: 500\r\n },\r\n bindEvents: {\r\n 'ready': function () {\r\n\r\n var _suffix = \"-drafts-data\",\r\n key = null;\r\n\r\n if (me.key) {\r\n key = me.key + _suffix;\r\n } else {\r\n key = (me.container.parentNode.id || 'ue-common') + _suffix;\r\n }\r\n\r\n //页面地址+编辑器ID 保持唯一\r\n saveKey = (location.protocol + location.host + location.pathname).replace(/[.:\\/]/g, '_') + key;\r\n\r\n },\r\n\r\n 'contentchange': function () {\r\n\r\n if (!saveKey) {\r\n return;\r\n }\r\n\r\n if (me._saveFlag) {\r\n window.clearTimeout(me._saveFlag);\r\n }\r\n\r\n if (me.options.saveInterval > 0) {\r\n\r\n me._saveFlag = window.setTimeout(function () {\r\n\r\n save(me);\r\n\r\n }, me.options.saveInterval);\r\n\r\n } else {\r\n\r\n save(me);\r\n\r\n }\r\n\r\n\r\n }\r\n },\r\n commands: {\r\n 'clearlocaldata': {\r\n execCommand: function (cmd, name) {\r\n if (saveKey && me.getPreferences(saveKey)) {\r\n me.removePreferences(saveKey)\r\n }\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange: true\r\n },\r\n\r\n 'getlocaldata': {\r\n execCommand: function (cmd, name) {\r\n return saveKey ? me.getPreferences(saveKey) || '' : '';\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange: true\r\n },\r\n\r\n 'drafts': {\r\n execCommand: function (cmd, name) {\r\n if (saveKey) {\r\n me.body.innerHTML = me.getPreferences(saveKey) || '

    ' + domUtils.fillHtml + '

    ';\r\n me.focus(true);\r\n }\r\n },\r\n queryCommandState: function () {\r\n return saveKey ? (me.getPreferences(saveKey) === null ? -1 : 0) : -1;\r\n },\r\n notNeedUndo: true,\r\n ignoreContentChange: true\r\n }\r\n }\r\n }\r\n\r\n });\r\n\r\n // plugins/charts.js\r\n UE.plugin.register('charts', function () {\r\n\r\n var me = this;\r\n\r\n return {\r\n bindEvents: {\r\n 'chartserror': function () {}\r\n },\r\n commands: {\r\n 'charts': {\r\n execCommand: function (cmd, data) {\r\n\r\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true),\r\n flagText = [],\r\n config = {};\r\n\r\n if (!tableNode) {\r\n return false;\r\n }\r\n\r\n if (!validData(tableNode)) {\r\n me.fireEvent(\"chartserror\");\r\n return false;\r\n }\r\n\r\n config.title = data.title || '';\r\n config.subTitle = data.subTitle || '';\r\n config.xTitle = data.xTitle || '';\r\n config.yTitle = data.yTitle || '';\r\n config.suffix = data.suffix || '';\r\n config.tip = data.tip || '';\r\n //数据对齐方式\r\n config.dataFormat = data.tableDataFormat || '';\r\n //图表类型\r\n config.chartType = data.chartType || 0;\r\n\r\n for (var key in config) {\r\n\r\n if (!config.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n flagText.push(key + \":\" + config[key]);\r\n\r\n }\r\n\r\n tableNode.setAttribute(\"data-chart\", flagText.join(\";\"));\r\n domUtils.addClass(tableNode, \"edui-charts-table\");\r\n\r\n\r\n\r\n },\r\n queryCommandState: function (cmd, name) {\r\n\r\n var tableNode = domUtils.findParentByTagName(this.selection.getRange().startContainer, 'table', true);\r\n return tableNode && validData(tableNode) ? 0 : -1;\r\n\r\n }\r\n }\r\n },\r\n inputRule: function (root) {\r\n utils.each(root.getNodesByTagName('table'), function (tableNode) {\r\n\r\n if (tableNode.getAttr(\"data-chart\") !== undefined) {\r\n tableNode.setAttr(\"style\");\r\n }\r\n\r\n })\r\n\r\n },\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('table'), function (tableNode) {\r\n\r\n if (tableNode.getAttr(\"data-chart\") !== undefined) {\r\n tableNode.setAttr(\"style\", \"display: none;\");\r\n }\r\n\r\n })\r\n\r\n }\r\n }\r\n\r\n function validData(table) {\r\n\r\n var firstRows = null,\r\n cellCount = 0;\r\n\r\n //行数不够\r\n if (table.rows.length < 2) {\r\n return false;\r\n }\r\n\r\n //列数不够\r\n if (table.rows[0].cells.length < 2) {\r\n return false;\r\n }\r\n\r\n //第一行所有cell必须是th\r\n firstRows = table.rows[0].cells;\r\n cellCount = firstRows.length;\r\n\r\n for (var i = 0, cell; cell = firstRows[i]; i++) {\r\n\r\n if (cell.tagName.toLowerCase() !== 'th') {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n for (var i = 1, row; row = table.rows[i]; i++) {\r\n\r\n //每行单元格数不匹配, 返回false\r\n if (row.cells.length != cellCount) {\r\n return false;\r\n }\r\n\r\n //第一列不是th也返回false\r\n if (row.cells[0].tagName.toLowerCase() !== 'th') {\r\n return false;\r\n }\r\n\r\n for (var j = 1, cell; cell = row.cells[j]; j++) {\r\n\r\n var value = utils.trim((cell.innerText || cell.textContent || ''));\r\n\r\n value = value.replace(new RegExp(UE.dom.domUtils.fillChar, 'g'), '').replace(/^\\s+|\\s+$/g, '');\r\n\r\n //必须是数字\r\n if (!/^\\d*\\.?\\d+$/.test(value)) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n });\r\n\r\n // plugins/section.js\r\n /**\r\n * 目录大纲支持插件\r\n * @file\r\n * @since 1.3.0\r\n */\r\n UE.plugin.register('section', function () {\r\n /* 目录节点对象 */\r\n function Section(option) {\r\n this.tag = '';\r\n this.level = -1,\r\n this.dom = null;\r\n this.nextSection = null;\r\n this.previousSection = null;\r\n this.parentSection = null;\r\n this.startAddress = [];\r\n this.endAddress = [];\r\n this.children = [];\r\n }\r\n\r\n function getSection(option) {\r\n var section = new Section();\r\n return utils.extend(section, option);\r\n }\r\n\r\n function getNodeFromAddress(startAddress, root) {\r\n var current = root;\r\n for (var i = 0; i < startAddress.length; i++) {\r\n if (!current.childNodes) return null;\r\n current = current.childNodes[startAddress[i]];\r\n }\r\n return current;\r\n }\r\n\r\n var me = this;\r\n\r\n return {\r\n bindMultiEvents: {\r\n type: 'aftersetcontent afterscencerestore',\r\n handler: function () {\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n bindEvents: {\r\n /* 初始化、拖拽、粘贴、执行setcontent之后 */\r\n 'ready': function () {\r\n me.fireEvent('updateSections');\r\n domUtils.on(me.body, 'drop paste', function () {\r\n me.fireEvent('updateSections');\r\n });\r\n },\r\n /* 执行paragraph命令之后 */\r\n 'afterexeccommand': function (type, cmd) {\r\n if (cmd == 'paragraph') {\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n /* 部分键盘操作,触发updateSections事件 */\r\n 'keyup': function (type, e) {\r\n var me = this,\r\n range = me.selection.getRange();\r\n if (range.collapsed != true) {\r\n me.fireEvent('updateSections');\r\n } else {\r\n var keyCode = e.keyCode || e.which;\r\n if (keyCode == 13 || keyCode == 8 || keyCode == 46) {\r\n me.fireEvent('updateSections');\r\n }\r\n }\r\n }\r\n },\r\n commands: {\r\n 'getsections': {\r\n execCommand: function (cmd, levels) {\r\n var levelFn = levels || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\r\n\r\n for (var i = 0; i < levelFn.length; i++) {\r\n if (typeof levelFn[i] == 'string') {\r\n levelFn[i] = function (fn) {\r\n return function (node) {\r\n return node.tagName == fn.toUpperCase()\r\n };\r\n }(levelFn[i]);\r\n } else if (typeof levelFn[i] != 'function') {\r\n levelFn[i] = function (node) {\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n function getSectionLevel(node) {\r\n for (var i = 0; i < levelFn.length; i++) {\r\n if (levelFn[i](node)) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n var me = this,\r\n Directory = getSection({\r\n 'level': -1,\r\n 'title': 'root'\r\n }),\r\n previous = Directory;\r\n\r\n function traversal(node, Directory) {\r\n var level,\r\n tmpSection = null,\r\n parent,\r\n child,\r\n children = node.childNodes;\r\n for (var i = 0, len = children.length; i < len; i++) {\r\n child = children[i];\r\n level = getSectionLevel(child);\r\n if (level >= 0) {\r\n var address = me.selection.getRange().selectNode(child).createAddress(true).startAddress,\r\n current = getSection({\r\n 'tag': child.tagName,\r\n 'title': child.innerText || child.textContent || '',\r\n 'level': level,\r\n 'dom': child,\r\n 'startAddress': utils.clone(address, []),\r\n 'endAddress': utils.clone(address, []),\r\n 'children': []\r\n });\r\n previous.nextSection = current;\r\n current.previousSection = previous;\r\n parent = previous;\r\n while (level <= parent.level) {\r\n parent = parent.parentSection;\r\n }\r\n current.parentSection = parent;\r\n parent.children.push(current);\r\n tmpSection = previous = current;\r\n } else {\r\n child.nodeType === 1 && traversal(child, Directory);\r\n tmpSection && tmpSection.endAddress[tmpSection.endAddress.length - 1]++;\r\n }\r\n }\r\n }\r\n traversal(me.body, Directory);\r\n return Directory;\r\n },\r\n notNeedUndo: true\r\n },\r\n 'movesection': {\r\n execCommand: function (cmd, sourceSection, targetSection, isAfter) {\r\n\r\n var me = this,\r\n targetAddress,\r\n target;\r\n\r\n if (!sourceSection || !targetSection || targetSection.level == -1) return;\r\n\r\n targetAddress = isAfter ? targetSection.endAddress : targetSection.startAddress;\r\n target = getNodeFromAddress(targetAddress, me.body);\r\n\r\n /* 判断目标地址是否被源章节包含 */\r\n if (!targetAddress || !target || isContainsAddress(sourceSection.startAddress, sourceSection.endAddress, targetAddress)) return;\r\n\r\n var startNode = getNodeFromAddress(sourceSection.startAddress, me.body),\r\n endNode = getNodeFromAddress(sourceSection.endAddress, me.body),\r\n current,\r\n nextNode;\r\n\r\n if (isAfter) {\r\n current = endNode;\r\n while (current && !(domUtils.getPosition(startNode, current) & domUtils.POSITION_FOLLOWING)) {\r\n nextNode = current.previousSibling;\r\n domUtils.insertAfter(target, current);\r\n if (current == startNode) break;\r\n current = nextNode;\r\n }\r\n } else {\r\n current = startNode;\r\n while (current && !(domUtils.getPosition(current, endNode) & domUtils.POSITION_FOLLOWING)) {\r\n nextNode = current.nextSibling;\r\n target.parentNode.insertBefore(current, target);\r\n if (current == endNode) break;\r\n current = nextNode;\r\n }\r\n }\r\n\r\n me.fireEvent('updateSections');\r\n\r\n /* 获取地址的包含关系 */\r\n function isContainsAddress(startAddress, endAddress, addressTarget) {\r\n var isAfterStartAddress = false,\r\n isBeforeEndAddress = false;\r\n for (var i = 0; i < startAddress.length; i++) {\r\n if (i >= addressTarget.length) break;\r\n if (addressTarget[i] > startAddress[i]) {\r\n isAfterStartAddress = true;\r\n break;\r\n } else if (addressTarget[i] < startAddress[i]) {\r\n break;\r\n }\r\n }\r\n for (var i = 0; i < endAddress.length; i++) {\r\n if (i >= addressTarget.length) break;\r\n if (addressTarget[i] < startAddress[i]) {\r\n isBeforeEndAddress = true;\r\n break;\r\n } else if (addressTarget[i] > startAddress[i]) {\r\n break;\r\n }\r\n }\r\n return isAfterStartAddress && isBeforeEndAddress;\r\n }\r\n }\r\n },\r\n 'deletesection': {\r\n execCommand: function (cmd, section, keepChildren) {\r\n var me = this;\r\n\r\n if (!section) return;\r\n\r\n function getNodeFromAddress(startAddress) {\r\n var current = me.body;\r\n for (var i = 0; i < startAddress.length; i++) {\r\n if (!current.childNodes) return null;\r\n current = current.childNodes[startAddress[i]];\r\n }\r\n return current;\r\n }\r\n\r\n var startNode = getNodeFromAddress(section.startAddress),\r\n endNode = getNodeFromAddress(section.endAddress),\r\n current = startNode,\r\n nextNode;\r\n\r\n if (!keepChildren) {\r\n while (current && domUtils.inDoc(endNode, me.document) && !(domUtils.getPosition(current, endNode) & domUtils.POSITION_FOLLOWING)) {\r\n nextNode = current.nextSibling;\r\n domUtils.remove(current);\r\n current = nextNode;\r\n }\r\n } else {\r\n domUtils.remove(current);\r\n }\r\n\r\n me.fireEvent('updateSections');\r\n }\r\n },\r\n 'selectsection': {\r\n execCommand: function (cmd, section) {\r\n if (!section && !section.dom) return false;\r\n var me = this,\r\n range = me.selection.getRange(),\r\n address = {\r\n 'startAddress': utils.clone(section.startAddress, []),\r\n 'endAddress': utils.clone(section.endAddress, [])\r\n };\r\n address.endAddress[address.endAddress.length - 1]++;\r\n range.moveToAddress(address).select().scrollToView();\r\n return true;\r\n },\r\n notNeedUndo: true\r\n },\r\n 'scrolltosection': {\r\n execCommand: function (cmd, section) {\r\n if (!section && !section.dom) return false;\r\n var me = this,\r\n range = me.selection.getRange(),\r\n address = {\r\n 'startAddress': section.startAddress,\r\n 'endAddress': section.endAddress\r\n };\r\n address.endAddress[address.endAddress.length - 1]++;\r\n range.moveToAddress(address).scrollToView();\r\n return true;\r\n },\r\n notNeedUndo: true\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/simpleupload.js\r\n /**\r\n * @description\r\n * 简单上传:点击按钮,直接选择文件上传\r\n * @author Jinqn\r\n * @date 2014-03-31\r\n */\r\n UE.plugin.register('simpleupload', function () {\r\n var me = this,\r\n isLoaded = false,\r\n containerBtn;\r\n\r\n function initUploadBtn() {\r\n var w = containerBtn.offsetWidth || 20,\r\n h = containerBtn.offsetHeight || 20,\r\n btnIframe = document.createElement('iframe'),\r\n btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;';\r\n\r\n domUtils.on(btnIframe, 'load', function () {\r\n\r\n var timestrap = (+new Date()).toString(36),\r\n wrapper,\r\n btnIframeDoc,\r\n btnIframeBody;\r\n\r\n btnIframeDoc = (btnIframe.contentDocument || btnIframe.contentWindow.document);\r\n btnIframeBody = btnIframeDoc.body;\r\n wrapper = btnIframeDoc.createElement('div');\r\n // document.domain = location.hostname\r\n wrapper.innerHTML = '
    ' +\r\n '' +\r\n '
    ' +\r\n '';\r\n\r\n wrapper.className = 'edui-' + me.options.theme;\r\n wrapper.id = me.ui.id + '_iframeupload';\r\n btnIframeBody.style.cssText = btnStyle;\r\n btnIframeBody.style.width = w + 'px';\r\n btnIframeBody.style.height = h + 'px';\r\n btnIframeBody.appendChild(wrapper);\r\n\r\n if (btnIframeBody.parentNode) {\r\n btnIframeBody.parentNode.style.width = w + 'px';\r\n btnIframeBody.parentNode.style.height = w + 'px';\r\n }\r\n\r\n var form = btnIframeDoc.getElementById('edui_form_' + timestrap);\r\n var input = btnIframeDoc.getElementById('edui_input_' + timestrap);\r\n var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);\r\n\r\n domUtils.on(input, 'change', function () {\r\n\r\n if (!input.value) return;\r\n var loadingId = 'loading_' + (+new Date()).toString(36);\r\n var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '';\r\n\r\n var imageActionUrl = me.getActionUrl(me.getOpt('imageActionName'));\r\n var allowFiles = me.getOpt('imageAllowFiles');\r\n\r\n me.focus();\r\n me.execCommand('inserthtml', '');\r\n\r\n function callback(result) {\r\n try {\r\n var link, json, loader;\r\n json = (new Function(\"return \" + result))();\r\n link = me.options.imageUrlPrefix + json.url;\r\n if (json.state == 'SUCCESS' && json.url) {\r\n loader = me.document.getElementById(loadingId);\r\n loader.setAttribute('src', link);\r\n loader.setAttribute('_src', link);\r\n loader.setAttribute('title', json.title || '');\r\n loader.setAttribute('alt', json.original || '');\r\n loader.setAttribute('width', \"100%\");\r\n loader.removeAttribute('id');\r\n domUtils.removeClasses(loader, 'loadingclass');\r\n } else {\r\n showErrorLoader && showErrorLoader(json.state);\r\n }\r\n } catch (er) {\r\n showErrorLoader && showErrorLoader(me.getLang('simpleupload.loadError'));\r\n }\r\n form.reset();\r\n // domUtils.un(iframe, 'load', callback);\r\n }\r\n\r\n function showErrorLoader(title) {\r\n if (loadingId) {\r\n var loader = me.document.getElementById(loadingId);\r\n loader && domUtils.remove(loader);\r\n me.fireEvent('showmessage', {\r\n 'id': loadingId,\r\n 'content': title,\r\n 'type': 'error',\r\n 'timeout': 4000\r\n });\r\n }\r\n }\r\n\r\n /* 判断后端配置是否没有加载成功 */\r\n if (!me.getOpt('imageActionName')) {\r\n errorHandler(me.getLang('autoupload.errorLoadConfig'));\r\n return;\r\n }\r\n // 判断文件格式是否错误\r\n var filename = input.value,\r\n fileext = filename ? filename.substr(filename.lastIndexOf('.')) : '';\r\n if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {\r\n showErrorLoader(me.getLang('simpleupload.exceedTypeError'));\r\n return;\r\n }\r\n\r\n // domUtils.on(iframe, 'load', callback);\r\n // form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params);\r\n // form.submit();\r\n\r\n var url = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?' : '&') + params);\r\n var formData = new FormData();\r\n formData.append(me.options.imageFieldName, input.files[0]);\r\n\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\"POST\", url, true);\r\n xhr.withCredentials = true;\r\n // xhr.setRequestHeader(\"content-type\", \"multipart/form-data\");\r\n headers = {\r\n \"Accept\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n };\r\n for (headerName in headers) {\r\n var headerValue = headers[headerName];\r\n xhr.setRequestHeader(headerName, headerValue);\r\n }\r\n xhr.onload = function () {\r\n console.log(xhr.responseText, \"responseText\");\r\n callback(xhr.responseText)\r\n }\r\n xhr.onerror = function () {\r\n showErrorLoader(me.getLang('simpleupload.loadError'));\r\n }\r\n\r\n xhr.send(formData);\r\n\r\n // UE.ajax.request(, {\r\n // 'method': 'POST',\r\n // 'onsuccess': function (r) {\r\n // callback(r)\r\n // },\r\n // 'onerror': function () {\r\n\r\n // }\r\n // });\r\n });\r\n\r\n var stateTimer;\r\n me.addListener('selectionchange', function () {\r\n clearTimeout(stateTimer);\r\n stateTimer = setTimeout(function () {\r\n var state = me.queryCommandState('simpleupload');\r\n if (state == -1) {\r\n input.disabled = 'disabled';\r\n } else {\r\n input.disabled = false;\r\n }\r\n }, 400);\r\n });\r\n isLoaded = true;\r\n });\r\n\r\n btnIframe.style.cssText = btnStyle;\r\n containerBtn.appendChild(btnIframe);\r\n }\r\n\r\n return {\r\n bindEvents: {\r\n 'ready': function () {\r\n //设置loading的样式\r\n utils.cssRule('loading',\r\n '.loadingclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loading.gif\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\\n' +\r\n '.loaderrorclass{display:inline-block;cursor:default;background: url(\\'' +\r\n this.options.themePath +\r\n this.options.theme + '/images/loaderror.png\\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +\r\n '}',\r\n this.document);\r\n },\r\n /* 初始化简单上传按钮 */\r\n 'simpleuploadbtnready': function (type, container) {\r\n containerBtn = container;\r\n me.afterConfigReady(initUploadBtn);\r\n }\r\n },\r\n outputRule: function (root) {\r\n utils.each(root.getNodesByTagName('img'), function (n) {\r\n if (/\\b(loaderrorclass)|(bloaderrorclass)\\b/.test(n.getAttr('class'))) {\r\n n.parentNode.removeChild(n);\r\n }\r\n });\r\n },\r\n commands: {\r\n 'simpleupload': {\r\n queryCommandState: function () {\r\n return isLoaded ? 0 : -1;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // plugins/serverparam.js\r\n /**\r\n * 服务器提交的额外参数列表设置插件\r\n * @file\r\n * @since 1.2.6.1\r\n */\r\n UE.plugin.register('serverparam', function () {\r\n\r\n var me = this,\r\n serverParam = {};\r\n\r\n return {\r\n commands: {\r\n /**\r\n * 修改服务器提交的额外参数列表,清除所有项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam');\r\n * editor.queryCommandValue('serverparam'); //返回空\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,删除指定项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } key 要清除的属性\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', 'name'); //删除属性name\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,使用键值添加项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { String } key 要添加的属性\r\n * @param { String } value 要添加属性的值\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', 'name', 'hello');\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,传入键值对对象添加多项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Object } key 传入的键值对对象\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', {'name': 'hello'});\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'name': 'hello'}\r\n * ```\r\n */\r\n /**\r\n * 修改服务器提交的额外参数列表,使用自定义函数添加多项\r\n * @command serverparam\r\n * @method execCommand\r\n * @param { String } cmd 命令字符串\r\n * @param { Function } key 自定义获取参数的函数\r\n * @example\r\n * ```javascript\r\n * editor.execCommand('serverparam', function(editor){\r\n * return {'key': 'value'};\r\n * });\r\n * editor.queryCommandValue('serverparam'); //返回对象 {'key': 'value'}\r\n * ```\r\n */\r\n\r\n /**\r\n * 获取服务器提交的额外参数列表\r\n * @command serverparam\r\n * @method queryCommandValue\r\n * @param { String } cmd 命令字符串\r\n * @example\r\n * ```javascript\r\n * editor.queryCommandValue( 'serverparam' ); //返回对象 {'key': 'value'}\r\n * ```\r\n */\r\n 'serverparam': {\r\n execCommand: function (cmd, key, value) {\r\n if (key === undefined || key === null) { //不传参数,清空列表\r\n serverParam = {};\r\n } else if (utils.isString(key)) { //传入键值\r\n if (value === undefined || value === null) {\r\n delete serverParam[key];\r\n } else {\r\n serverParam[key] = value;\r\n }\r\n } else if (utils.isObject(key)) { //传入对象,覆盖列表项\r\n utils.extend(serverParam, key, true);\r\n } else if (utils.isFunction(key)) { //传入函数,添加列表项\r\n utils.extend(serverParam, key(), true);\r\n }\r\n },\r\n queryCommandValue: function () {\r\n return serverParam || {};\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n // plugins/insertfile.js\r\n /**\r\n * 插入附件\r\n */\r\n UE.plugin.register('insertfile', function () {\r\n\r\n var me = this;\r\n\r\n function getFileIcon(url) {\r\n var ext = url.substr(url.lastIndexOf('.') + 1).toLowerCase(),\r\n maps = {\r\n \"rar\": \"icon_rar.gif\",\r\n \"zip\": \"icon_rar.gif\",\r\n \"tar\": \"icon_rar.gif\",\r\n \"gz\": \"icon_rar.gif\",\r\n \"bz2\": \"icon_rar.gif\",\r\n \"doc\": \"icon_doc.gif\",\r\n \"docx\": \"icon_doc.gif\",\r\n \"pdf\": \"icon_pdf.gif\",\r\n \"mp3\": \"icon_mp3.gif\",\r\n \"xls\": \"icon_xls.gif\",\r\n \"chm\": \"icon_chm.gif\",\r\n \"ppt\": \"icon_ppt.gif\",\r\n \"pptx\": \"icon_ppt.gif\",\r\n \"avi\": \"icon_mv.gif\",\r\n \"rmvb\": \"icon_mv.gif\",\r\n \"wmv\": \"icon_mv.gif\",\r\n \"flv\": \"icon_mv.gif\",\r\n \"swf\": \"icon_mv.gif\",\r\n \"rm\": \"icon_mv.gif\",\r\n \"exe\": \"icon_exe.gif\",\r\n \"psd\": \"icon_psd.gif\",\r\n \"txt\": \"icon_txt.gif\",\r\n \"jpg\": \"icon_jpg.gif\",\r\n \"png\": \"icon_jpg.gif\",\r\n \"jpeg\": \"icon_jpg.gif\",\r\n \"gif\": \"icon_jpg.gif\",\r\n \"ico\": \"icon_jpg.gif\",\r\n \"bmp\": \"icon_jpg.gif\"\r\n };\r\n return maps[ext] ? maps[ext] : maps['txt'];\r\n }\r\n\r\n return {\r\n commands: {\r\n 'insertfile': {\r\n execCommand: function (command, filelist) {\r\n filelist = utils.isArray(filelist) ? filelist : [filelist];\r\n\r\n var i, item, icon, title,\r\n html = '',\r\n URL = me.getOpt('UEDITOR_HOME_URL'),\r\n iconDir = URL + (URL.substr(URL.length - 1) == '/' ? '' : '/') + 'dialogs/attachment/fileTypeImages/';\r\n for (i = 0; i < filelist.length; i++) {\r\n item = filelist[i];\r\n icon = iconDir + getFileIcon(item.url);\r\n title = item.title || item.url.substr(item.url.lastIndexOf('/') + 1);\r\n html += '

    ' +\r\n '' +\r\n '' + title + '' +\r\n '

    ';\r\n }\r\n me.execCommand('insertHtml', html);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n // ui/ui.js\r\n var baidu = baidu || {};\r\n baidu.editor = baidu.editor || {};\r\n UE.ui = baidu.editor.ui = {};\r\n\r\n // ui/uiutils.js\r\n (function () {\r\n var browser = baidu.editor.browser,\r\n domUtils = baidu.editor.dom.domUtils;\r\n\r\n var magic = '$EDITORUI';\r\n var root = window[magic] = {};\r\n var uidMagic = 'ID' + magic;\r\n var uidCount = 0;\r\n\r\n var uiUtils = baidu.editor.ui.uiUtils = {\r\n uid: function (obj) {\r\n return (obj ? obj[uidMagic] || (obj[uidMagic] = ++uidCount) : ++uidCount);\r\n },\r\n hook: function (fn, callback) {\r\n var dg;\r\n if (fn && fn._callbacks) {\r\n dg = fn;\r\n } else {\r\n dg = function () {\r\n var q;\r\n if (fn) {\r\n q = fn.apply(this, arguments);\r\n }\r\n var callbacks = dg._callbacks;\r\n var k = callbacks.length;\r\n while (k--) {\r\n var r = callbacks[k].apply(this, arguments);\r\n if (q === undefined) {\r\n q = r;\r\n }\r\n }\r\n return q;\r\n };\r\n dg._callbacks = [];\r\n }\r\n dg._callbacks.push(callback);\r\n return dg;\r\n },\r\n createElementByHtml: function (html) {\r\n var el = document.createElement('div');\r\n el.innerHTML = html;\r\n el = el.firstChild;\r\n el.parentNode.removeChild(el);\r\n return el;\r\n },\r\n getViewportElement: function () {\r\n return (browser.ie && browser.quirks) ?\r\n document.body : document.documentElement;\r\n },\r\n getClientRect: function (element) {\r\n var bcr;\r\n //trace IE6下在控制编辑器显隐时可能会报错,catch一下\r\n try {\r\n bcr = element.getBoundingClientRect();\r\n } catch (e) {\r\n bcr = {\r\n left: 0,\r\n top: 0,\r\n height: 0,\r\n width: 0\r\n }\r\n }\r\n var rect = {\r\n left: Math.round(bcr.left),\r\n top: Math.round(bcr.top),\r\n height: Math.round(bcr.bottom - bcr.top),\r\n width: Math.round(bcr.right - bcr.left)\r\n };\r\n var doc;\r\n while ((doc = element.ownerDocument) !== document &&\r\n (element = domUtils.getWindow(doc).frameElement)) {\r\n bcr = element.getBoundingClientRect();\r\n rect.left += bcr.left;\r\n rect.top += bcr.top;\r\n }\r\n rect.bottom = rect.top + rect.height;\r\n rect.right = rect.left + rect.width;\r\n return rect;\r\n },\r\n getViewportRect: function () {\r\n var viewportEl = uiUtils.getViewportElement();\r\n var width = (window.innerWidth || viewportEl.clientWidth) | 0;\r\n var height = (window.innerHeight || viewportEl.clientHeight) | 0;\r\n return {\r\n left: 0,\r\n top: 0,\r\n height: height,\r\n width: width,\r\n bottom: height,\r\n right: width\r\n };\r\n },\r\n setViewportOffset: function (element, offset) {\r\n var rect;\r\n var fixedLayer = uiUtils.getFixedLayer();\r\n if (element.parentNode === fixedLayer) {\r\n element.style.left = offset.left + 'px';\r\n element.style.top = offset.top + 'px';\r\n } else {\r\n domUtils.setViewportOffset(element, offset);\r\n }\r\n },\r\n getEventOffset: function (evt) {\r\n var el = evt.target || evt.srcElement;\r\n var rect = uiUtils.getClientRect(el);\r\n var offset = uiUtils.getViewportOffsetByEvent(evt);\r\n return {\r\n left: offset.left - rect.left,\r\n top: offset.top - rect.top\r\n };\r\n },\r\n getViewportOffsetByEvent: function (evt) {\r\n var el = evt.target || evt.srcElement;\r\n var frameEl = domUtils.getWindow(el).frameElement;\r\n var offset = {\r\n left: evt.clientX,\r\n top: evt.clientY\r\n };\r\n if (frameEl && el.ownerDocument !== document) {\r\n var rect = uiUtils.getClientRect(frameEl);\r\n offset.left += rect.left;\r\n offset.top += rect.top;\r\n }\r\n return offset;\r\n },\r\n setGlobal: function (id, obj) {\r\n root[id] = obj;\r\n return magic + '[\"' + id + '\"]';\r\n },\r\n unsetGlobal: function (id) {\r\n delete root[id];\r\n },\r\n copyAttributes: function (tgt, src) {\r\n var attributes = src.attributes;\r\n var k = attributes.length;\r\n while (k--) {\r\n var attrNode = attributes[k];\r\n if (attrNode.nodeName != 'style' && attrNode.nodeName != 'class' && (!browser.ie || attrNode.specified)) {\r\n tgt.setAttribute(attrNode.nodeName, attrNode.nodeValue);\r\n }\r\n }\r\n if (src.className) {\r\n domUtils.addClass(tgt, src.className);\r\n }\r\n if (src.style.cssText) {\r\n tgt.style.cssText += ';' + src.style.cssText;\r\n }\r\n },\r\n removeStyle: function (el, styleName) {\r\n if (el.style.removeProperty) {\r\n el.style.removeProperty(styleName);\r\n } else if (el.style.removeAttribute) {\r\n el.style.removeAttribute(styleName);\r\n } else throw '';\r\n },\r\n contains: function (elA, elB) {\r\n return elA && elB && (elA === elB ? false : (\r\n elA.contains ? elA.contains(elB) :\r\n elA.compareDocumentPosition(elB) & 16\r\n ));\r\n },\r\n startDrag: function (evt, callbacks, doc) {\r\n var doc = doc || document;\r\n var startX = evt.clientX;\r\n var startY = evt.clientY;\r\n\r\n function handleMouseMove(evt) {\r\n var x = evt.clientX - startX;\r\n var y = evt.clientY - startY;\r\n callbacks.ondragmove(x, y, evt);\r\n if (evt.stopPropagation) {\r\n evt.stopPropagation();\r\n } else {\r\n evt.cancelBubble = true;\r\n }\r\n }\r\n if (doc.addEventListener) {\r\n function handleMouseUp(evt) {\r\n doc.removeEventListener('mousemove', handleMouseMove, true);\r\n doc.removeEventListener('mouseup', handleMouseUp, true);\r\n window.removeEventListener('mouseup', handleMouseUp, true);\r\n callbacks.ondragstop();\r\n }\r\n doc.addEventListener('mousemove', handleMouseMove, true);\r\n doc.addEventListener('mouseup', handleMouseUp, true);\r\n window.addEventListener('mouseup', handleMouseUp, true);\r\n\r\n evt.preventDefault();\r\n } else {\r\n var elm = evt.srcElement;\r\n elm.setCapture();\r\n\r\n function releaseCaptrue() {\r\n elm.releaseCapture();\r\n elm.detachEvent('onmousemove', handleMouseMove);\r\n elm.detachEvent('onmouseup', releaseCaptrue);\r\n elm.detachEvent('onlosecaptrue', releaseCaptrue);\r\n callbacks.ondragstop();\r\n }\r\n elm.attachEvent('onmousemove', handleMouseMove);\r\n elm.attachEvent('onmouseup', releaseCaptrue);\r\n elm.attachEvent('onlosecaptrue', releaseCaptrue);\r\n evt.returnValue = false;\r\n }\r\n callbacks.ondragstart();\r\n },\r\n getFixedLayer: function () {\r\n var layer = document.getElementById('edui_fixedlayer');\r\n if (layer == null) {\r\n layer = document.createElement('div');\r\n layer.id = 'edui_fixedlayer';\r\n document.body.appendChild(layer);\r\n if (browser.ie && browser.version <= 8) {\r\n layer.style.position = 'absolute';\r\n bindFixedLayer();\r\n setTimeout(updateFixedOffset);\r\n } else {\r\n layer.style.position = 'fixed';\r\n }\r\n layer.style.left = '0';\r\n layer.style.top = '0';\r\n layer.style.width = '0';\r\n layer.style.height = '0';\r\n }\r\n return layer;\r\n },\r\n makeUnselectable: function (element) {\r\n if (browser.opera || (browser.ie && browser.version < 9)) {\r\n element.unselectable = 'on';\r\n if (element.hasChildNodes()) {\r\n for (var i = 0; i < element.childNodes.length; i++) {\r\n if (element.childNodes[i].nodeType == 1) {\r\n uiUtils.makeUnselectable(element.childNodes[i]);\r\n }\r\n }\r\n }\r\n } else {\r\n if (element.style.MozUserSelect !== undefined) {\r\n element.style.MozUserSelect = 'none';\r\n } else if (element.style.WebkitUserSelect !== undefined) {\r\n element.style.WebkitUserSelect = 'none';\r\n } else if (element.style.KhtmlUserSelect !== undefined) {\r\n element.style.KhtmlUserSelect = 'none';\r\n }\r\n }\r\n }\r\n };\r\n\r\n function updateFixedOffset() {\r\n var layer = document.getElementById('edui_fixedlayer');\r\n uiUtils.setViewportOffset(layer, {\r\n left: 0,\r\n top: 0\r\n });\r\n // layer.style.display = 'none';\r\n // layer.style.display = 'block';\r\n\r\n //#trace: 1354\r\n // setTimeout(updateFixedOffset);\r\n }\r\n\r\n function bindFixedLayer(adjOffset) {\r\n domUtils.on(window, 'scroll', updateFixedOffset);\r\n domUtils.on(window, 'resize', baidu.editor.utils.defer(updateFixedOffset, 0, true));\r\n }\r\n })();\r\n\r\n\r\n // ui/uibase.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n EventBase = baidu.editor.EventBase,\r\n UIBase = baidu.editor.ui.UIBase = function () {};\r\n\r\n UIBase.prototype = {\r\n className: '',\r\n uiName: '',\r\n initOptions: function (options) {\r\n var me = this;\r\n for (var k in options) {\r\n me[k] = options[k];\r\n }\r\n this.id = this.id || 'edui' + uiUtils.uid();\r\n },\r\n initUIBase: function () {\r\n this._globalKey = utils.unhtml(uiUtils.setGlobal(this.id, this));\r\n },\r\n render: function (holder) {\r\n var html = this.renderHtml();\r\n var el = uiUtils.createElementByHtml(html);\r\n\r\n //by xuheng 给每个node添加class\r\n var list = domUtils.getElementsByTagName(el, \"*\");\r\n var theme = \"edui-\" + (this.theme || this.editor.options.theme);\r\n var layer = document.getElementById('edui_fixedlayer');\r\n for (var i = 0, node; node = list[i++];) {\r\n domUtils.addClass(node, theme);\r\n }\r\n domUtils.addClass(el, theme);\r\n if (layer) {\r\n layer.className = \"\";\r\n domUtils.addClass(layer, theme);\r\n }\r\n\r\n var seatEl = this.getDom();\r\n if (seatEl != null) {\r\n seatEl.parentNode.replaceChild(el, seatEl);\r\n uiUtils.copyAttributes(el, seatEl);\r\n } else {\r\n if (typeof holder == 'string') {\r\n holder = document.getElementById(holder);\r\n }\r\n holder = holder || uiUtils.getFixedLayer();\r\n domUtils.addClass(holder, theme);\r\n holder.appendChild(el);\r\n }\r\n this.postRender();\r\n },\r\n getDom: function (name) {\r\n if (!name) {\r\n return document.getElementById(this.id);\r\n } else {\r\n return document.getElementById(this.id + '_' + name);\r\n }\r\n },\r\n postRender: function () {\r\n this.fireEvent('postrender');\r\n },\r\n getHtmlTpl: function () {\r\n return '';\r\n },\r\n formatHtml: function (tpl) {\r\n var prefix = 'edui-' + this.uiName;\r\n return (tpl\r\n .replace(/##/g, this.id)\r\n .replace(/%%-/g, this.uiName ? prefix + '-' : '')\r\n .replace(/%%/g, (this.uiName ? prefix : '') + ' ' + this.className)\r\n .replace(/\\$\\$/g, this._globalKey));\r\n },\r\n renderHtml: function () {\r\n return this.formatHtml(this.getHtmlTpl());\r\n },\r\n dispose: function () {\r\n var box = this.getDom();\r\n if (box) baidu.editor.dom.domUtils.remove(box);\r\n uiUtils.unsetGlobal(this.id);\r\n }\r\n };\r\n utils.inherits(UIBase, EventBase);\r\n })();\r\n\r\n\r\n // ui/separator.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Separator = baidu.editor.ui.Separator = function (options) {\r\n this.initOptions(options);\r\n this.initSeparator();\r\n };\r\n Separator.prototype = {\r\n uiName: 'separator',\r\n initSeparator: function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ';\r\n }\r\n };\r\n utils.inherits(Separator, UIBase);\r\n\r\n })();\r\n\r\n\r\n // ui/mask.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n uiUtils = baidu.editor.ui.uiUtils;\r\n\r\n var Mask = baidu.editor.ui.Mask = function (options) {\r\n this.initOptions(options);\r\n this.initUIBase();\r\n };\r\n Mask.prototype = {\r\n getHtmlTpl: function () {\r\n return '
    ';\r\n },\r\n postRender: function () {\r\n var me = this;\r\n domUtils.on(window, 'resize', function () {\r\n setTimeout(function () {\r\n if (!me.isHidden()) {\r\n me._fill();\r\n }\r\n });\r\n });\r\n },\r\n show: function (zIndex) {\r\n this._fill();\r\n this.getDom().style.display = '';\r\n this.getDom().style.zIndex = zIndex;\r\n },\r\n hide: function () {\r\n this.getDom().style.display = 'none';\r\n this.getDom().style.zIndex = '';\r\n },\r\n isHidden: function () {\r\n return this.getDom().style.display == 'none';\r\n },\r\n _onMouseDown: function () {\r\n return false;\r\n },\r\n _onClick: function (e, target) {\r\n this.fireEvent('click', e, target);\r\n },\r\n _fill: function () {\r\n var el = this.getDom();\r\n var vpRect = uiUtils.getViewportRect();\r\n el.style.width = vpRect.width + 'px';\r\n el.style.height = vpRect.height + 'px';\r\n }\r\n };\r\n utils.inherits(Mask, UIBase);\r\n })();\r\n\r\n\r\n // ui/popup.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Popup = baidu.editor.ui.Popup = function (options) {\r\n this.initOptions(options);\r\n this.initPopup();\r\n };\r\n\r\n var allPopups = [];\r\n\r\n function closeAllPopup(evt, el) {\r\n for (var i = 0; i < allPopups.length; i++) {\r\n var pop = allPopups[i];\r\n if (!pop.isHidden()) {\r\n if (pop.queryAutoHide(el) !== false) {\r\n if (evt && /scroll/ig.test(evt.type) && pop.className == \"edui-wordpastepop\") return;\r\n pop.hide();\r\n }\r\n }\r\n }\r\n\r\n if (allPopups.length)\r\n pop.editor.fireEvent(\"afterhidepop\");\r\n }\r\n\r\n Popup.postHide = closeAllPopup;\r\n\r\n var ANCHOR_CLASSES = ['edui-anchor-topleft', 'edui-anchor-topright',\r\n 'edui-anchor-bottomleft', 'edui-anchor-bottomright'\r\n ];\r\n Popup.prototype = {\r\n SHADOW_RADIUS: 5,\r\n content: null,\r\n _hidden: false,\r\n autoRender: true,\r\n canSideLeft: true,\r\n canSideUp: true,\r\n initPopup: function () {\r\n this.initUIBase();\r\n allPopups.push(this);\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n this.getContentHtmlTpl() +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n getContentHtmlTpl: function () {\r\n if (this.content) {\r\n if (typeof this.content == 'string') {\r\n return this.content;\r\n }\r\n return this.content.renderHtml();\r\n } else {\r\n return ''\r\n }\r\n\r\n },\r\n _UIBase_postRender: UIBase.prototype.postRender,\r\n postRender: function () {\r\n\r\n\r\n if (this.content instanceof UIBase) {\r\n this.content.postRender();\r\n }\r\n\r\n //捕获鼠标滚轮\r\n if (this.captureWheel && !this.captured) {\r\n\r\n this.captured = true;\r\n\r\n var winHeight = (document.documentElement.clientHeight || document.body.clientHeight) - 80,\r\n _height = this.getDom().offsetHeight,\r\n _top = uiUtils.getClientRect(this.combox.getDom()).top,\r\n content = this.getDom('content'),\r\n ifr = this.getDom('body').getElementsByTagName('iframe'),\r\n me = this;\r\n\r\n ifr.length && (ifr = ifr[0]);\r\n\r\n while (_top + _height > winHeight) {\r\n _height -= 30;\r\n }\r\n content.style.height = _height + 'px';\r\n //同步更改iframe高度\r\n ifr && (ifr.style.height = _height + 'px');\r\n\r\n //阻止在combox上的鼠标滚轮事件, 防止用户的正常操作被误解\r\n if (window.XMLHttpRequest) {\r\n\r\n domUtils.on(content, ('onmousewheel' in document.body) ? 'mousewheel' : 'DOMMouseScroll', function (e) {\r\n\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n }\r\n\r\n if (e.wheelDelta) {\r\n\r\n content.scrollTop -= (e.wheelDelta / 120) * 60;\r\n\r\n } else {\r\n\r\n content.scrollTop -= (e.detail / -3) * 60;\r\n\r\n }\r\n\r\n });\r\n\r\n } else {\r\n\r\n //ie6\r\n domUtils.on(this.getDom(), 'mousewheel', function (e) {\r\n\r\n e.returnValue = false;\r\n\r\n me.getDom('content').scrollTop -= (e.wheelDelta / 120) * 60;\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n this.fireEvent('postRenderAfter');\r\n this.hide(true);\r\n this._UIBase_postRender();\r\n },\r\n _doAutoRender: function () {\r\n if (!this.getDom() && this.autoRender) {\r\n this.render();\r\n }\r\n },\r\n mesureSize: function () {\r\n var box = this.getDom('content');\r\n return uiUtils.getClientRect(box);\r\n },\r\n fitSize: function () {\r\n if (this.captureWheel && this.sized) {\r\n return this.__size;\r\n }\r\n this.sized = true;\r\n var popBodyEl = this.getDom('body');\r\n popBodyEl.style.width = '';\r\n popBodyEl.style.height = '';\r\n var size = this.mesureSize();\r\n if (this.captureWheel) {\r\n popBodyEl.style.width = -(-20 - size.width) + 'px';\r\n var height = parseInt(this.getDom('content').style.height, 10);\r\n !window.isNaN(height) && (size.height = height);\r\n } else {\r\n popBodyEl.style.width = size.width + 'px';\r\n }\r\n popBodyEl.style.height = size.height + 'px';\r\n this.__size = size;\r\n this.captureWheel && (this.getDom('content').style.overflow = 'auto');\r\n return size;\r\n },\r\n showAnchor: function (element, hoz) {\r\n this.showAnchorRect(uiUtils.getClientRect(element), hoz);\r\n },\r\n showAnchorRect: function (rect, hoz, adj) {\r\n this._doAutoRender();\r\n var vpRect = uiUtils.getViewportRect();\r\n this.getDom().style.visibility = 'hidden';\r\n this._show();\r\n var popSize = this.fitSize();\r\n\r\n var sideLeft, sideUp, left, top;\r\n if (hoz) {\r\n sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width);\r\n sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height);\r\n left = (sideLeft ? rect.left - popSize.width : rect.right);\r\n top = (sideUp ? rect.bottom - popSize.height : rect.top);\r\n } else {\r\n sideLeft = this.canSideLeft && (rect.right + popSize.width > vpRect.right && rect.left > popSize.width);\r\n sideUp = this.canSideUp && (rect.top + popSize.height > vpRect.bottom && rect.bottom > popSize.height);\r\n left = (sideLeft ? rect.right - popSize.width : rect.left);\r\n top = (sideUp ? rect.top - popSize.height : rect.bottom);\r\n }\r\n\r\n var popEl = this.getDom();\r\n uiUtils.setViewportOffset(popEl, {\r\n left: left,\r\n top: top\r\n });\r\n domUtils.removeClasses(popEl, ANCHOR_CLASSES);\r\n popEl.className += ' ' + ANCHOR_CLASSES[(sideUp ? 1 : 0) * 2 + (sideLeft ? 1 : 0)];\r\n if (this.editor) {\r\n popEl.style.zIndex = this.editor.container.style.zIndex * 1 + 10;\r\n baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = popEl.style.zIndex - 1;\r\n }\r\n this.getDom().style.visibility = 'visible';\r\n\r\n },\r\n showAt: function (offset) {\r\n var left = offset.left;\r\n var top = offset.top;\r\n var rect = {\r\n left: left,\r\n top: top,\r\n right: left,\r\n bottom: top,\r\n height: 0,\r\n width: 0\r\n };\r\n this.showAnchorRect(rect, false, true);\r\n },\r\n _show: function () {\r\n if (this._hidden) {\r\n var box = this.getDom();\r\n box.style.display = '';\r\n this._hidden = false;\r\n // if (box.setActive) {\r\n // box.setActive();\r\n // }\r\n this.fireEvent('show');\r\n }\r\n },\r\n isHidden: function () {\r\n return this._hidden;\r\n },\r\n show: function () {\r\n this._doAutoRender();\r\n this._show();\r\n },\r\n hide: function (notNofity) {\r\n if (!this._hidden && this.getDom()) {\r\n this.getDom().style.display = 'none';\r\n this._hidden = true;\r\n if (!notNofity) {\r\n this.fireEvent('hide');\r\n }\r\n }\r\n },\r\n queryAutoHide: function (el) {\r\n return !el || !uiUtils.contains(this.getDom(), el);\r\n }\r\n };\r\n utils.inherits(Popup, UIBase);\r\n\r\n domUtils.on(document, 'mousedown', function (evt) {\r\n var el = evt.target || evt.srcElement;\r\n closeAllPopup(evt, el);\r\n });\r\n domUtils.on(window, 'scroll', function (evt, el) {\r\n closeAllPopup(evt, el);\r\n });\r\n\r\n })();\r\n\r\n\r\n // ui/colorpicker.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n ColorPicker = baidu.editor.ui.ColorPicker = function (options) {\r\n this.initOptions(options);\r\n this.noColorText = this.noColorText || this.editor.getLang(\"clearColor\");\r\n this.initUIBase();\r\n };\r\n\r\n ColorPicker.prototype = {\r\n getHtmlTpl: function () {\r\n return genColorPicker(this.noColorText, this.editor);\r\n },\r\n _onTableClick: function (evt) {\r\n var tgt = evt.target || evt.srcElement;\r\n var color = tgt.getAttribute('data-color');\r\n if (color) {\r\n this.fireEvent('pickcolor', color);\r\n }\r\n },\r\n _onTableOver: function (evt) {\r\n var tgt = evt.target || evt.srcElement;\r\n var color = tgt.getAttribute('data-color');\r\n if (color) {\r\n this.getDom('preview').style.backgroundColor = color;\r\n }\r\n },\r\n _onTableOut: function () {\r\n this.getDom('preview').style.backgroundColor = '';\r\n },\r\n _onPickNoColor: function () {\r\n this.fireEvent('picknocolor');\r\n }\r\n };\r\n utils.inherits(ColorPicker, UIBase);\r\n\r\n var COLORS = (\r\n 'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,' +\r\n 'f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,' +\r\n 'd8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,' +\r\n 'bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,' +\r\n 'a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,' +\r\n '7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,' +\r\n 'c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,').split(',');\r\n\r\n function genColorPicker(noColorText, editor) {\r\n var html = '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' + noColorText + '
    ' +\r\n '
    ' +\r\n '' +\r\n '' +\r\n '';\r\n for (var i = 0; i < COLORS.length; i++) {\r\n if (i && i % 10 === 0) {\r\n html += '' + (i == 60 ? '' : '') + '';\r\n }\r\n html += i < 70 ? '' : '';\r\n }\r\n html += '
    ' + editor.getLang(\"themeColor\") + '
    ' + editor.getLang(\"standardColor\") + '
    = 60 ? 'border-width:1px;' :\r\n i >= 10 && i < 20 ? 'border-width:1px 1px 0 1px;' :\r\n\r\n 'border-width:0 1px 0 1px;') +\r\n '\"' +\r\n '>
    ';\r\n return html;\r\n }\r\n })();\r\n\r\n\r\n // ui/tablepicker.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n var TablePicker = baidu.editor.ui.TablePicker = function (options) {\r\n this.initOptions(options);\r\n this.initTablePicker();\r\n };\r\n TablePicker.prototype = {\r\n defaultNumRows: 10,\r\n defaultNumCols: 10,\r\n maxNumRows: 20,\r\n maxNumCols: 20,\r\n numRows: 10,\r\n numCols: 10,\r\n lengthOfCellSide: 22,\r\n initTablePicker: function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function () {\r\n var me = this;\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n _UIBase_render: UIBase.prototype.render,\r\n render: function (holder) {\r\n this._UIBase_render(holder);\r\n this.getDom('label').innerHTML = '0' + this.editor.getLang(\"t_row\") + ' x 0' + this.editor.getLang(\"t_col\");\r\n },\r\n _track: function (numCols, numRows) {\r\n var style = this.getDom('overlay').style;\r\n var sideLen = this.lengthOfCellSide;\r\n style.width = numCols * sideLen + 'px';\r\n style.height = numRows * sideLen + 'px';\r\n var label = this.getDom('label');\r\n label.innerHTML = numCols + this.editor.getLang(\"t_col\") + ' x ' + numRows + this.editor.getLang(\"t_row\");\r\n this.numCols = numCols;\r\n this.numRows = numRows;\r\n },\r\n _onMouseOver: function (evt, el) {\r\n var rel = evt.relatedTarget || evt.fromElement;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.getDom('label').innerHTML = '0' + this.editor.getLang(\"t_col\") + ' x 0' + this.editor.getLang(\"t_row\");\r\n this.getDom('overlay').style.visibility = '';\r\n }\r\n },\r\n _onMouseOut: function (evt, el) {\r\n var rel = evt.relatedTarget || evt.toElement;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.getDom('label').innerHTML = '0' + this.editor.getLang(\"t_col\") + ' x 0' + this.editor.getLang(\"t_row\");\r\n this.getDom('overlay').style.visibility = 'hidden';\r\n }\r\n },\r\n _onMouseMove: function (evt, el) {\r\n var style = this.getDom('overlay').style;\r\n var offset = uiUtils.getEventOffset(evt);\r\n var sideLen = this.lengthOfCellSide;\r\n var numCols = Math.ceil(offset.left / sideLen);\r\n var numRows = Math.ceil(offset.top / sideLen);\r\n this._track(numCols, numRows);\r\n },\r\n _onClick: function () {\r\n this.fireEvent('picktable', this.numCols, this.numRows);\r\n }\r\n };\r\n utils.inherits(TablePicker, UIBase);\r\n })();\r\n\r\n\r\n // ui/stateful.js\r\n (function () {\r\n var browser = baidu.editor.browser,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils;\r\n\r\n var TPL_STATEFUL = 'onmousedown=\"$$.Stateful_onMouseDown(event, this);\"' +\r\n ' onmouseup=\"$$.Stateful_onMouseUp(event, this);\"' +\r\n (browser.ie ? (\r\n ' onmouseenter=\"$$.Stateful_onMouseEnter(event, this);\"' +\r\n ' onmouseleave=\"$$.Stateful_onMouseLeave(event, this);\"') :\r\n (\r\n ' onmouseover=\"$$.Stateful_onMouseOver(event, this);\"' +\r\n ' onmouseout=\"$$.Stateful_onMouseOut(event, this);\"'));\r\n\r\n baidu.editor.ui.Stateful = {\r\n alwalysHoverable: false,\r\n target: null, //目标元素和this指向dom不一样\r\n Stateful_init: function () {\r\n this._Stateful_dGetHtmlTpl = this.getHtmlTpl;\r\n this.getHtmlTpl = this.Stateful_getHtmlTpl;\r\n },\r\n Stateful_getHtmlTpl: function () {\r\n var tpl = this._Stateful_dGetHtmlTpl();\r\n // 使用function避免$转义\r\n return tpl.replace(/stateful/g, function () {\r\n return TPL_STATEFUL;\r\n });\r\n },\r\n Stateful_onMouseEnter: function (evt, el) {\r\n this.target = el;\r\n if (!this.isDisabled() || this.alwalysHoverable) {\r\n this.addState('hover');\r\n this.fireEvent('over');\r\n }\r\n },\r\n Stateful_onMouseLeave: function (evt, el) {\r\n if (!this.isDisabled() || this.alwalysHoverable) {\r\n this.removeState('hover');\r\n this.removeState('active');\r\n this.fireEvent('out');\r\n }\r\n },\r\n Stateful_onMouseOver: function (evt, el) {\r\n var rel = evt.relatedTarget;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.Stateful_onMouseEnter(evt, el);\r\n }\r\n },\r\n Stateful_onMouseOut: function (evt, el) {\r\n var rel = evt.relatedTarget;\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n this.Stateful_onMouseLeave(evt, el);\r\n }\r\n },\r\n Stateful_onMouseDown: function (evt, el) {\r\n if (!this.isDisabled()) {\r\n this.addState('active');\r\n }\r\n },\r\n Stateful_onMouseUp: function (evt, el) {\r\n if (!this.isDisabled()) {\r\n this.removeState('active');\r\n }\r\n },\r\n Stateful_postRender: function () {\r\n if (this.disabled && !this.hasState('disabled')) {\r\n this.addState('disabled');\r\n }\r\n },\r\n hasState: function (state) {\r\n return domUtils.hasClass(this.getStateDom(), 'edui-state-' + state);\r\n },\r\n addState: function (state) {\r\n if (!this.hasState(state)) {\r\n this.getStateDom().className += ' edui-state-' + state;\r\n }\r\n },\r\n removeState: function (state) {\r\n if (this.hasState(state)) {\r\n domUtils.removeClasses(this.getStateDom(), ['edui-state-' + state]);\r\n }\r\n },\r\n getStateDom: function () {\r\n return this.getDom('state');\r\n },\r\n isChecked: function () {\r\n return this.hasState('checked');\r\n },\r\n setChecked: function (checked) {\r\n if (!this.isDisabled() && checked) {\r\n this.addState('checked');\r\n } else {\r\n this.removeState('checked');\r\n }\r\n },\r\n isDisabled: function () {\r\n return this.hasState('disabled');\r\n },\r\n setDisabled: function (disabled) {\r\n if (disabled) {\r\n this.removeState('hover');\r\n this.removeState('checked');\r\n this.removeState('active');\r\n this.addState('disabled');\r\n } else {\r\n this.removeState('disabled');\r\n }\r\n }\r\n };\r\n })();\r\n\r\n\r\n // ui/button.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/stateful.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Stateful = baidu.editor.ui.Stateful,\r\n Button = baidu.editor.ui.Button = function (options) {\r\n if (options.name) {\r\n var btnName = options.name;\r\n var cssRules = options.cssRules;\r\n if (!options.className) {\r\n options.className = 'edui-for-' + btnName;\r\n }\r\n options.cssRules = '.edui-default .edui-for-' + btnName + ' .edui-icon {' + cssRules + '}'\r\n }\r\n this.initOptions(options);\r\n this.initButton();\r\n };\r\n Button.prototype = {\r\n uiName: 'button',\r\n label: '',\r\n title: '',\r\n showIcon: true,\r\n showText: true,\r\n cssRules: '',\r\n initButton: function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n if (this.cssRules) {\r\n utils.cssRule('edui-customize-' + this.name + '-style', this.cssRules);\r\n }\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n (this.showIcon ? '
    ' : '') +\r\n (this.showText ? '
    ' + this.label + '
    ' : '') +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n postRender: function () {\r\n this.Stateful_postRender();\r\n this.setDisabled(this.disabled)\r\n },\r\n _onMouseDown: function (e) {\r\n var target = e.target || e.srcElement,\r\n tagName = target && target.tagName && target.tagName.toLowerCase();\r\n if (tagName == 'input' || tagName == 'object' || tagName == 'object') {\r\n return false;\r\n }\r\n },\r\n _onClick: function () {\r\n if (!this.isDisabled()) {\r\n this.fireEvent('click');\r\n }\r\n },\r\n setTitle: function (text) {\r\n var label = this.getDom('label');\r\n label.innerHTML = text;\r\n }\r\n };\r\n utils.inherits(Button, UIBase);\r\n utils.extend(Button.prototype, Stateful);\r\n\r\n })();\r\n\r\n\r\n // ui/splitbutton.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/stateful.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Stateful = baidu.editor.ui.Stateful,\r\n SplitButton = baidu.editor.ui.SplitButton = function (options) {\r\n this.initOptions(options);\r\n this.initSplitButton();\r\n };\r\n SplitButton.prototype = {\r\n popup: null,\r\n uiName: 'splitbutton',\r\n title: '',\r\n initSplitButton: function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n var me = this;\r\n if (this.popup != null) {\r\n var popup = this.popup;\r\n this.popup = null;\r\n this.setPopup(popup);\r\n }\r\n },\r\n _UIBase_postRender: UIBase.prototype.postRender,\r\n postRender: function () {\r\n this.Stateful_postRender();\r\n this._UIBase_postRender();\r\n },\r\n setPopup: function (popup) {\r\n if (this.popup === popup) return;\r\n if (this.popup != null) {\r\n this.popup.dispose();\r\n }\r\n popup.addListener('show', utils.bind(this._onPopupShow, this));\r\n popup.addListener('hide', utils.bind(this._onPopupHide, this));\r\n popup.addListener('postrender', utils.bind(function () {\r\n popup.getDom('body').appendChild(\r\n uiUtils.createElementByHtml('
    ')\r\n );\r\n popup.getDom().className += ' ' + this.className;\r\n }, this));\r\n this.popup = popup;\r\n },\r\n _onPopupShow: function () {\r\n this.addState('opened');\r\n },\r\n _onPopupHide: function () {\r\n this.removeState('opened');\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n showPopup: function () {\r\n // 当popup往上弹出的时候,做特殊处理\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.top -= this.popup.SHADOW_RADIUS;\r\n rect.height += this.popup.SHADOW_RADIUS;\r\n this.popup.showAnchorRect(rect);\r\n },\r\n _onArrowClick: function (event, el) {\r\n if (!this.isDisabled()) {\r\n this.showPopup();\r\n }\r\n },\r\n _onButtonClick: function () {\r\n if (!this.isDisabled()) {\r\n this.fireEvent('buttonclick');\r\n }\r\n }\r\n };\r\n utils.inherits(SplitButton, UIBase);\r\n utils.extend(SplitButton.prototype, Stateful, true);\r\n\r\n })();\r\n\r\n\r\n // ui/colorbutton.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/colorpicker.js\r\n ///import ui/popup.js\r\n ///import ui/splitbutton.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n ColorPicker = baidu.editor.ui.ColorPicker,\r\n Popup = baidu.editor.ui.Popup,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n ColorButton = baidu.editor.ui.ColorButton = function (options) {\r\n this.initOptions(options);\r\n this.initColorButton();\r\n };\r\n ColorButton.prototype = {\r\n initColorButton: function () {\r\n var me = this;\r\n this.popup = new Popup({\r\n content: new ColorPicker({\r\n noColorText: me.editor.getLang(\"clearColor\"),\r\n editor: me.editor,\r\n onpickcolor: function (t, color) {\r\n me._onPickColor(color);\r\n },\r\n onpicknocolor: function (t, color) {\r\n me._onPickNoColor(color);\r\n }\r\n }),\r\n editor: me.editor\r\n });\r\n this.initSplitButton();\r\n },\r\n _SplitButton_postRender: SplitButton.prototype.postRender,\r\n postRender: function () {\r\n this._SplitButton_postRender();\r\n this.getDom('button_body').appendChild(\r\n uiUtils.createElementByHtml('
    ')\r\n );\r\n this.getDom().className += ' edui-colorbutton';\r\n },\r\n setColor: function (color) {\r\n this.getDom('colorlump').style.backgroundColor = color;\r\n this.color = color;\r\n },\r\n _onPickColor: function (color) {\r\n if (this.fireEvent('pickcolor', color) !== false) {\r\n this.setColor(color);\r\n this.popup.hide();\r\n }\r\n },\r\n _onPickNoColor: function (color) {\r\n if (this.fireEvent('picknocolor') !== false) {\r\n this.popup.hide();\r\n }\r\n }\r\n };\r\n utils.inherits(ColorButton, SplitButton);\r\n\r\n })();\r\n\r\n\r\n // ui/tablebutton.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/popup.js\r\n ///import ui/tablepicker.js\r\n ///import ui/splitbutton.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n TablePicker = baidu.editor.ui.TablePicker,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n TableButton = baidu.editor.ui.TableButton = function (options) {\r\n this.initOptions(options);\r\n this.initTableButton();\r\n };\r\n TableButton.prototype = {\r\n initTableButton: function () {\r\n var me = this;\r\n this.popup = new Popup({\r\n content: new TablePicker({\r\n editor: me.editor,\r\n onpicktable: function (t, numCols, numRows) {\r\n me._onPickTable(numCols, numRows);\r\n }\r\n }),\r\n 'editor': me.editor\r\n });\r\n this.initSplitButton();\r\n },\r\n _onPickTable: function (numCols, numRows) {\r\n if (this.fireEvent('picktable', numCols, numRows) !== false) {\r\n this.popup.hide();\r\n }\r\n }\r\n };\r\n utils.inherits(TableButton, SplitButton);\r\n\r\n })();\r\n\r\n\r\n // ui/autotypesetpicker.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n var AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker = function (options) {\r\n this.initOptions(options);\r\n this.initAutoTypeSetPicker();\r\n };\r\n AutoTypeSetPicker.prototype = {\r\n initAutoTypeSetPicker: function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function () {\r\n var me = this.editor,\r\n opt = me.options.autotypeset,\r\n lang = me.getLang(\"autoTypeSet\");\r\n\r\n var textAlignInputName = 'textAlignValue' + me.uid,\r\n imageBlockInputName = 'imageBlockLineValue' + me.uid,\r\n symbolConverInputName = 'symbolConverValue' + me.uid;\r\n\r\n return '
    ' +\r\n '
    ' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '' +\r\n '
    ' + lang.mergeLine + '' + lang.delLine + '
    ' + lang.removeFormat + '' + lang.indent + '
    ' + lang.alignment + '' +\r\n '' + me.getLang(\"justifyleft\") +\r\n '' + me.getLang(\"justifycenter\") +\r\n '' + me.getLang(\"justifyright\") +\r\n '
    ' + lang.imageFloat + '' +\r\n '' + me.getLang(\"default\") +\r\n '' + me.getLang(\"justifyleft\") +\r\n '' + me.getLang(\"justifycenter\") +\r\n '' + me.getLang(\"justifyright\") +\r\n '
    ' + lang.removeFontsize + '' + lang.removeFontFamily + '
    ' + lang.removeHtml + '
    ' + lang.pasteFilter + '
    ' + lang.symbol + '' +\r\n '' + lang.bdc2sb +\r\n '' + lang.tobdc + '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n\r\n\r\n },\r\n _UIBase_render: UIBase.prototype.render\r\n };\r\n utils.inherits(AutoTypeSetPicker, UIBase);\r\n })();\r\n\r\n\r\n // ui/autotypesetbutton.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/popup.js\r\n ///import ui/autotypesetpicker.js\r\n ///import ui/splitbutton.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n AutoTypeSetPicker = baidu.editor.ui.AutoTypeSetPicker,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n AutoTypeSetButton = baidu.editor.ui.AutoTypeSetButton = function (options) {\r\n this.initOptions(options);\r\n this.initAutoTypeSetButton();\r\n };\r\n\r\n function getPara(me) {\r\n\r\n var opt = {},\r\n cont = me.getDom(),\r\n editorId = me.editor.uid,\r\n inputType = null,\r\n attrName = null,\r\n ipts = domUtils.getElementsByTagName(cont, \"input\");\r\n for (var i = ipts.length - 1, ipt; ipt = ipts[i--];) {\r\n inputType = ipt.getAttribute(\"type\");\r\n if (inputType == \"checkbox\") {\r\n attrName = ipt.getAttribute(\"name\");\r\n opt[attrName] && delete opt[attrName];\r\n if (ipt.checked) {\r\n var attrValue = document.getElementById(attrName + \"Value\" + editorId);\r\n if (attrValue) {\r\n if (/input/ig.test(attrValue.tagName)) {\r\n opt[attrName] = attrValue.value;\r\n } else {\r\n var iptChilds = attrValue.getElementsByTagName(\"input\");\r\n for (var j = iptChilds.length - 1, iptchild; iptchild = iptChilds[j--];) {\r\n if (iptchild.checked) {\r\n opt[attrName] = iptchild.value;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n opt[attrName] = true;\r\n }\r\n } else {\r\n opt[attrName] = false;\r\n }\r\n } else {\r\n opt[ipt.getAttribute(\"value\")] = ipt.checked;\r\n }\r\n\r\n }\r\n\r\n var selects = domUtils.getElementsByTagName(cont, \"select\");\r\n for (var i = 0, si; si = selects[i++];) {\r\n var attr = si.getAttribute('name');\r\n opt[attr] = opt[attr] ? si.value : '';\r\n }\r\n\r\n utils.extend(me.editor.options.autotypeset, opt);\r\n\r\n me.editor.setPreferences('autotypeset', opt);\r\n }\r\n\r\n AutoTypeSetButton.prototype = {\r\n initAutoTypeSetButton: function () {\r\n\r\n var me = this;\r\n this.popup = new Popup({\r\n //传入配置参数\r\n content: new AutoTypeSetPicker({\r\n editor: me.editor\r\n }),\r\n 'editor': me.editor,\r\n hide: function () {\r\n if (!this._hidden && this.getDom()) {\r\n getPara(this);\r\n this.getDom().style.display = 'none';\r\n this._hidden = true;\r\n this.fireEvent('hide');\r\n }\r\n }\r\n });\r\n var flag = 0;\r\n this.popup.addListener('postRenderAfter', function () {\r\n var popupUI = this;\r\n if (flag) return;\r\n var cont = this.getDom(),\r\n btn = cont.getElementsByTagName('button')[0];\r\n\r\n btn.onclick = function () {\r\n getPara(popupUI);\r\n me.editor.execCommand('autotypeset');\r\n popupUI.hide()\r\n };\r\n\r\n domUtils.on(cont, 'click', function (e) {\r\n var target = e.target || e.srcElement,\r\n editorId = me.editor.uid;\r\n if (target && target.tagName == 'INPUT') {\r\n\r\n // 点击图片浮动的checkbox,去除对应的radio\r\n if (target.name == 'imageBlockLine' || target.name == 'textAlign' || target.name == 'symbolConver') {\r\n var checked = target.checked,\r\n radioTd = document.getElementById(target.name + 'Value' + editorId),\r\n radios = radioTd.getElementsByTagName('input'),\r\n defalutSelect = {\r\n 'imageBlockLine': 'none',\r\n 'textAlign': 'left',\r\n 'symbolConver': 'tobdc'\r\n };\r\n\r\n for (var i = 0; i < radios.length; i++) {\r\n if (checked) {\r\n if (radios[i].value == defalutSelect[target.name]) {\r\n radios[i].checked = 'checked';\r\n }\r\n } else {\r\n radios[i].checked = false;\r\n }\r\n }\r\n }\r\n // 点击radio,选中对应的checkbox\r\n if (target.name == ('imageBlockLineValue' + editorId) || target.name == ('textAlignValue' + editorId) || target.name == 'bdc') {\r\n var checkboxs = target.parentNode.previousSibling.getElementsByTagName('input');\r\n checkboxs && (checkboxs[0].checked = true);\r\n }\r\n\r\n getPara(popupUI);\r\n }\r\n });\r\n\r\n flag = 1;\r\n });\r\n this.initSplitButton();\r\n }\r\n };\r\n utils.inherits(AutoTypeSetButton, SplitButton);\r\n\r\n })();\r\n\r\n\r\n // ui/cellalignpicker.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n Stateful = baidu.editor.ui.Stateful,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n /**\r\n * 该参数将新增一个参数: selected, 参数类型为一个Object, 形如{ 'align': 'center', 'valign': 'top' }, 表示单元格的初始\r\n * 对齐状态为: 竖直居上,水平居中; 其中 align的取值为:'center', 'left', 'right'; valign的取值为: 'top', 'middle', 'bottom'\r\n * @update 2013/4/2 hancong03@baidu.com\r\n */\r\n var CellAlignPicker = baidu.editor.ui.CellAlignPicker = function (options) {\r\n this.initOptions(options);\r\n this.initSelected();\r\n this.initCellAlignPicker();\r\n };\r\n CellAlignPicker.prototype = {\r\n //初始化选中状态, 该方法将根据传递进来的参数获取到应该选中的对齐方式图标的索引\r\n initSelected: function () {\r\n\r\n var status = {\r\n\r\n valign: {\r\n top: 0,\r\n middle: 1,\r\n bottom: 2\r\n },\r\n align: {\r\n left: 0,\r\n center: 1,\r\n right: 2\r\n },\r\n count: 3\r\n\r\n },\r\n result = -1;\r\n\r\n if (this.selected) {\r\n this.selectedIndex = status.valign[this.selected.valign] * status.count + status.align[this.selected.align];\r\n }\r\n\r\n },\r\n initCellAlignPicker: function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n },\r\n getHtmlTpl: function () {\r\n\r\n var alignType = ['left', 'center', 'right'],\r\n COUNT = 9,\r\n tempClassName = null,\r\n tempIndex = -1,\r\n tmpl = [];\r\n\r\n\r\n for (var i = 0; i < COUNT; i++) {\r\n\r\n tempClassName = this.selectedIndex === i ? ' class=\"edui-cellalign-selected\" ' : '';\r\n tempIndex = i % 3;\r\n\r\n tempIndex === 0 && tmpl.push('');\r\n\r\n tmpl.push('
    ');\r\n\r\n tempIndex === 2 && tmpl.push('');\r\n\r\n }\r\n\r\n return '
    ' +\r\n '
    ' +\r\n '' +\r\n tmpl.join('') +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n getStateDom: function () {\r\n return this.target;\r\n },\r\n _onClick: function (evt) {\r\n var target = evt.target || evt.srcElement;\r\n if (/icon/.test(target.className)) {\r\n this.items[target.parentNode.getAttribute(\"index\")].onclick();\r\n Popup.postHide(evt);\r\n }\r\n },\r\n _UIBase_render: UIBase.prototype.render\r\n };\r\n utils.inherits(CellAlignPicker, UIBase);\r\n utils.extend(CellAlignPicker.prototype, Stateful, true);\r\n })();\r\n\r\n\r\n\r\n\r\n\r\n // ui/pastepicker.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Stateful = baidu.editor.ui.Stateful,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase;\r\n\r\n var PastePicker = baidu.editor.ui.PastePicker = function (options) {\r\n this.initOptions(options);\r\n this.initPastePicker();\r\n };\r\n PastePicker.prototype = {\r\n initPastePicker: function () {\r\n this.initUIBase();\r\n this.Stateful_init();\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' + this.editor.getLang(\"pasteOpt\") + '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n ''\r\n },\r\n getStateDom: function () {\r\n return this.target;\r\n },\r\n format: function (param) {\r\n this.editor.ui._isTransfer = true;\r\n this.editor.fireEvent('pasteTransfer', param);\r\n },\r\n _onClick: function (cur) {\r\n var node = domUtils.getNextDomNode(cur),\r\n screenHt = uiUtils.getViewportRect().height,\r\n subPop = uiUtils.getClientRect(node);\r\n\r\n if ((subPop.top + subPop.height) > screenHt)\r\n node.style.top = (-subPop.height - cur.offsetHeight) + \"px\";\r\n else\r\n node.style.top = \"\";\r\n\r\n if (/hidden/ig.test(domUtils.getComputedStyle(node, \"visibility\"))) {\r\n node.style.visibility = \"visible\";\r\n domUtils.addClass(cur, \"edui-state-opened\");\r\n } else {\r\n node.style.visibility = \"hidden\";\r\n domUtils.removeClasses(cur, \"edui-state-opened\")\r\n }\r\n },\r\n _UIBase_render: UIBase.prototype.render\r\n };\r\n utils.inherits(PastePicker, UIBase);\r\n utils.extend(PastePicker.prototype, Stateful, true);\r\n })();\r\n\r\n\r\n\r\n\r\n\r\n\r\n // ui/toolbar.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Toolbar = baidu.editor.ui.Toolbar = function (options) {\r\n this.initOptions(options);\r\n this.initToolbar();\r\n };\r\n Toolbar.prototype = {\r\n items: null,\r\n initToolbar: function () {\r\n this.items = this.items || [];\r\n this.initUIBase();\r\n },\r\n add: function (item, index) {\r\n if (index === undefined) {\r\n this.items.push(item);\r\n } else {\r\n this.items.splice(index, 0, item)\r\n }\r\n\r\n },\r\n getHtmlTpl: function () {\r\n var buff = [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n buff[i] = this.items[i].renderHtml();\r\n }\r\n return '
    ' +\r\n buff.join('') +\r\n '
    '\r\n },\r\n postRender: function () {\r\n var box = this.getDom();\r\n for (var i = 0; i < this.items.length; i++) {\r\n this.items[i].postRender();\r\n }\r\n uiUtils.makeUnselectable(box);\r\n },\r\n _onMouseDown: function (e) {\r\n var target = e.target || e.srcElement,\r\n tagName = target && target.tagName && target.tagName.toLowerCase();\r\n if (tagName == 'input' || tagName == 'object' || tagName == 'object') {\r\n return false;\r\n }\r\n }\r\n };\r\n utils.inherits(Toolbar, UIBase);\r\n\r\n })();\r\n\r\n\r\n // ui/menu.js\r\n ///import core\r\n ///import uicore\r\n ///import ui\\popup.js\r\n ///import ui\\stateful.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Popup = baidu.editor.ui.Popup,\r\n Stateful = baidu.editor.ui.Stateful,\r\n CellAlignPicker = baidu.editor.ui.CellAlignPicker,\r\n\r\n Menu = baidu.editor.ui.Menu = function (options) {\r\n this.initOptions(options);\r\n this.initMenu();\r\n };\r\n\r\n var menuSeparator = {\r\n renderHtml: function () {\r\n return '
    ';\r\n },\r\n postRender: function () {},\r\n queryAutoHide: function () {\r\n return true;\r\n }\r\n };\r\n Menu.prototype = {\r\n items: null,\r\n uiName: 'menu',\r\n initMenu: function () {\r\n this.items = this.items || [];\r\n this.initPopup();\r\n this.initItems();\r\n },\r\n initItems: function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item == '-') {\r\n this.items[i] = this.getSeparator();\r\n } else if (!(item instanceof MenuItem)) {\r\n item.editor = this.editor;\r\n item.theme = this.editor.options.theme;\r\n this.items[i] = this.createItem(item);\r\n }\r\n }\r\n },\r\n getSeparator: function () {\r\n return menuSeparator;\r\n },\r\n createItem: function (item) {\r\n //新增一个参数menu, 该参数存储了menuItem所对应的menu引用\r\n item.menu = this;\r\n return new MenuItem(item);\r\n },\r\n _Popup_getContentHtmlTpl: Popup.prototype.getContentHtmlTpl,\r\n getContentHtmlTpl: function () {\r\n if (this.items.length == 0) {\r\n return this._Popup_getContentHtmlTpl();\r\n }\r\n var buff = [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n buff[i] = item.renderHtml();\r\n }\r\n return ('
    ' + buff.join('') + '
    ');\r\n },\r\n _Popup_postRender: Popup.prototype.postRender,\r\n postRender: function () {\r\n var me = this;\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n item.ownerMenu = this;\r\n item.postRender();\r\n }\r\n domUtils.on(this.getDom(), 'mouseover', function (evt) {\r\n evt = evt || event;\r\n var rel = evt.relatedTarget || evt.fromElement;\r\n var el = me.getDom();\r\n if (!uiUtils.contains(el, rel) && el !== rel) {\r\n me.fireEvent('over');\r\n }\r\n });\r\n this._Popup_postRender();\r\n },\r\n queryAutoHide: function (el) {\r\n if (el) {\r\n if (uiUtils.contains(this.getDom(), el)) {\r\n return false;\r\n }\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n if (item.queryAutoHide(el) === false) {\r\n return false;\r\n }\r\n }\r\n }\r\n },\r\n clearItems: function () {\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n clearTimeout(item._showingTimer);\r\n clearTimeout(item._closingTimer);\r\n if (item.subMenu) {\r\n item.subMenu.destroy();\r\n }\r\n }\r\n this.items = [];\r\n },\r\n destroy: function () {\r\n if (this.getDom()) {\r\n domUtils.remove(this.getDom());\r\n }\r\n this.clearItems();\r\n },\r\n dispose: function () {\r\n this.destroy();\r\n }\r\n };\r\n utils.inherits(Menu, Popup);\r\n\r\n /**\r\n * @update 2013/04/03 hancong03 新增一个参数menu, 该参数存储了menuItem所对应的menu引用\r\n * @type {Function}\r\n */\r\n var MenuItem = baidu.editor.ui.MenuItem = function (options) {\r\n this.initOptions(options);\r\n this.initUIBase();\r\n this.Stateful_init();\r\n if (this.subMenu && !(this.subMenu instanceof Menu)) {\r\n if (options.className && options.className.indexOf(\"aligntd\") != -1) {\r\n var me = this;\r\n\r\n //获取单元格对齐初始状态\r\n this.subMenu.selected = this.editor.queryCommandValue('cellalignment');\r\n\r\n this.subMenu = new Popup({\r\n content: new CellAlignPicker(this.subMenu),\r\n parentMenu: me,\r\n editor: me.editor,\r\n destroy: function () {\r\n if (this.getDom()) {\r\n domUtils.remove(this.getDom());\r\n }\r\n }\r\n });\r\n this.subMenu.addListener(\"postRenderAfter\", function () {\r\n domUtils.on(this.getDom(), \"mouseover\", function () {\r\n me.addState('opened');\r\n });\r\n });\r\n } else {\r\n this.subMenu = new Menu(this.subMenu);\r\n }\r\n }\r\n };\r\n MenuItem.prototype = {\r\n label: '',\r\n subMenu: null,\r\n ownerMenu: null,\r\n uiName: 'menuitem',\r\n alwalysHoverable: true,\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n this.renderLabelHtml() +\r\n '
    ' +\r\n '
    ';\r\n },\r\n postRender: function () {\r\n var me = this;\r\n this.addListener('over', function () {\r\n me.ownerMenu.fireEvent('submenuover', me);\r\n if (me.subMenu) {\r\n me.delayShowSubMenu();\r\n }\r\n });\r\n if (this.subMenu) {\r\n this.getDom().className += ' edui-hassubmenu';\r\n this.subMenu.render();\r\n this.addListener('out', function () {\r\n me.delayHideSubMenu();\r\n });\r\n this.subMenu.addListener('over', function () {\r\n clearTimeout(me._closingTimer);\r\n me._closingTimer = null;\r\n me.addState('opened');\r\n });\r\n this.ownerMenu.addListener('hide', function () {\r\n me.hideSubMenu();\r\n });\r\n this.ownerMenu.addListener('submenuover', function (t, subMenu) {\r\n if (subMenu !== me) {\r\n me.delayHideSubMenu();\r\n }\r\n });\r\n this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide;\r\n this.subMenu.queryAutoHide = function (el) {\r\n if (el && uiUtils.contains(me.getDom(), el)) {\r\n return false;\r\n }\r\n return this._bakQueryAutoHide(el);\r\n };\r\n }\r\n this.getDom().style.tabIndex = '-1';\r\n uiUtils.makeUnselectable(this.getDom());\r\n this.Stateful_postRender();\r\n },\r\n delayShowSubMenu: function () {\r\n var me = this;\r\n if (!me.isDisabled()) {\r\n me.addState('opened');\r\n clearTimeout(me._showingTimer);\r\n clearTimeout(me._closingTimer);\r\n me._closingTimer = null;\r\n me._showingTimer = setTimeout(function () {\r\n me.showSubMenu();\r\n }, 250);\r\n }\r\n },\r\n delayHideSubMenu: function () {\r\n var me = this;\r\n if (!me.isDisabled()) {\r\n me.removeState('opened');\r\n clearTimeout(me._showingTimer);\r\n if (!me._closingTimer) {\r\n me._closingTimer = setTimeout(function () {\r\n if (!me.hasState('opened')) {\r\n me.hideSubMenu();\r\n }\r\n me._closingTimer = null;\r\n }, 400);\r\n }\r\n }\r\n },\r\n renderLabelHtml: function () {\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' + (this.label || '') + '
    ';\r\n },\r\n getStateDom: function () {\r\n return this.getDom();\r\n },\r\n queryAutoHide: function (el) {\r\n if (this.subMenu && this.hasState('opened')) {\r\n return this.subMenu.queryAutoHide(el);\r\n }\r\n },\r\n _onClick: function (event, this_) {\r\n if (this.hasState('disabled')) return;\r\n if (this.fireEvent('click', event, this_) !== false) {\r\n if (this.subMenu) {\r\n this.showSubMenu();\r\n } else {\r\n Popup.postHide(event);\r\n }\r\n }\r\n },\r\n showSubMenu: function () {\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.right -= 5;\r\n rect.left += 2;\r\n rect.width -= 7;\r\n rect.top -= 4;\r\n rect.bottom += 4;\r\n rect.height += 8;\r\n this.subMenu.showAnchorRect(rect, true, true);\r\n },\r\n hideSubMenu: function () {\r\n this.subMenu.hide();\r\n }\r\n };\r\n utils.inherits(MenuItem, UIBase);\r\n utils.extend(MenuItem.prototype, Stateful, true);\r\n })();\r\n\r\n\r\n // ui/combox.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/menu.js\r\n ///import ui/splitbutton.js\r\n (function () {\r\n // todo: menu和item提成通用list\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n Menu = baidu.editor.ui.Menu,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n Combox = baidu.editor.ui.Combox = function (options) {\r\n this.initOptions(options);\r\n this.initCombox();\r\n };\r\n Combox.prototype = {\r\n uiName: 'combox',\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n },\r\n initCombox: function () {\r\n var me = this;\r\n this.items = this.items || [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n var item = this.items[i];\r\n item.uiName = 'listitem';\r\n item.index = i;\r\n item.onclick = function () {\r\n me.selectByIndex(this.index);\r\n };\r\n }\r\n this.popup = new Menu({\r\n items: this.items,\r\n uiName: 'list',\r\n editor: this.editor,\r\n captureWheel: true,\r\n combox: this\r\n });\r\n\r\n this.initSplitButton();\r\n },\r\n _SplitButton_postRender: SplitButton.prototype.postRender,\r\n postRender: function () {\r\n this._SplitButton_postRender();\r\n this.setLabel(this.label || '');\r\n this.setValue(this.initValue || '');\r\n },\r\n showPopup: function () {\r\n var rect = uiUtils.getClientRect(this.getDom());\r\n rect.top += 1;\r\n rect.bottom -= 1;\r\n rect.height -= 2;\r\n this.popup.showAnchorRect(rect);\r\n },\r\n getValue: function () {\r\n return this.value;\r\n },\r\n setValue: function (value) {\r\n var index = this.indexByValue(value);\r\n if (index != -1) {\r\n this.selectedIndex = index;\r\n this.setLabel(this.items[index].label);\r\n this.value = this.items[index].value;\r\n } else {\r\n this.selectedIndex = -1;\r\n this.setLabel(this.getLabelForUnknowValue(value));\r\n this.value = value;\r\n }\r\n },\r\n setLabel: function (label) {\r\n this.getDom('button_body').innerHTML = label;\r\n this.label = label;\r\n },\r\n getLabelForUnknowValue: function (value) {\r\n return value;\r\n },\r\n indexByValue: function (value) {\r\n for (var i = 0; i < this.items.length; i++) {\r\n if (value == this.items[i].value) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n },\r\n getItem: function (index) {\r\n return this.items[index];\r\n },\r\n selectByIndex: function (index) {\r\n if (index < this.items.length && this.fireEvent('select', index) !== false) {\r\n this.selectedIndex = index;\r\n this.value = this.items[index].value;\r\n this.setLabel(this.items[index].label);\r\n }\r\n }\r\n };\r\n utils.inherits(Combox, SplitButton);\r\n })();\r\n\r\n\r\n // ui/dialog.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/mask.js\r\n ///import ui/button.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n Mask = baidu.editor.ui.Mask,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Button = baidu.editor.ui.Button,\r\n Dialog = baidu.editor.ui.Dialog = function (options) {\r\n if (options.name) {\r\n var name = options.name;\r\n var cssRules = options.cssRules;\r\n if (!options.className) {\r\n options.className = 'edui-for-' + name;\r\n }\r\n if (cssRules) {\r\n options.cssRules = '.edui-default .edui-for-' + name + ' .edui-dialog-content {' + cssRules + '}'\r\n }\r\n }\r\n this.initOptions(utils.extend({\r\n autoReset: true,\r\n draggable: true,\r\n onok: function () {},\r\n oncancel: function () {},\r\n onclose: function (t, ok) {\r\n return ok ? this.onok() : this.oncancel();\r\n },\r\n //是否控制dialog中的scroll事件, 默认为不阻止\r\n holdScroll: false\r\n }, options));\r\n this.initDialog();\r\n };\r\n var modalMask;\r\n var dragMask;\r\n var activeDialog;\r\n Dialog.prototype = {\r\n draggable: false,\r\n uiName: 'dialog',\r\n initDialog: function () {\r\n var me = this,\r\n theme = this.editor.options.theme;\r\n if (this.cssRules) {\r\n utils.cssRule('edui-customize-' + this.name + '-style', this.cssRules);\r\n }\r\n this.initUIBase();\r\n this.modalMask = (modalMask || (modalMask = new Mask({\r\n className: 'edui-dialog-modalmask',\r\n theme: theme,\r\n onclick: function () {\r\n activeDialog && activeDialog.close(false);\r\n }\r\n })));\r\n this.dragMask = (dragMask || (dragMask = new Mask({\r\n className: 'edui-dialog-dragmask',\r\n theme: theme\r\n })));\r\n this.closeButton = new Button({\r\n className: 'edui-dialog-closebutton',\r\n title: me.closeDialog,\r\n theme: theme,\r\n onclick: function () {\r\n me.close(false);\r\n }\r\n });\r\n\r\n this.fullscreen && this.initResizeEvent();\r\n\r\n if (this.buttons) {\r\n for (var i = 0; i < this.buttons.length; i++) {\r\n if (!(this.buttons[i] instanceof Button)) {\r\n this.buttons[i] = new Button(utils.extend(this.buttons[i], {\r\n editor: this.editor\r\n }, true));\r\n }\r\n }\r\n }\r\n },\r\n initResizeEvent: function () {\r\n\r\n var me = this;\r\n\r\n domUtils.on(window, \"resize\", function () {\r\n\r\n if (me._hidden || me._hidden === undefined) {\r\n return;\r\n }\r\n\r\n if (me.__resizeTimer) {\r\n window.clearTimeout(me.__resizeTimer);\r\n }\r\n\r\n me.__resizeTimer = window.setTimeout(function () {\r\n\r\n me.__resizeTimer = null;\r\n\r\n var dialogWrapNode = me.getDom(),\r\n contentNode = me.getDom('content'),\r\n wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode),\r\n contentRect = UE.ui.uiUtils.getClientRect(contentNode),\r\n vpRect = uiUtils.getViewportRect();\r\n\r\n contentNode.style.width = (vpRect.width - wrapRect.width + contentRect.width) + \"px\";\r\n contentNode.style.height = (vpRect.height - wrapRect.height + contentRect.height) + \"px\";\r\n\r\n dialogWrapNode.style.width = vpRect.width + \"px\";\r\n dialogWrapNode.style.height = vpRect.height + \"px\";\r\n\r\n me.fireEvent(\"resize\");\r\n\r\n }, 100);\r\n\r\n });\r\n\r\n },\r\n fitSize: function () {\r\n var popBodyEl = this.getDom('body');\r\n // if (!(baidu.editor.browser.ie && baidu.editor.browser.version == 7)) {\r\n // uiUtils.removeStyle(popBodyEl, 'width');\r\n // uiUtils.removeStyle(popBodyEl, 'height');\r\n // }\r\n var size = this.mesureSize();\r\n popBodyEl.style.width = size.width + 'px';\r\n popBodyEl.style.height = size.height + 'px';\r\n return size;\r\n },\r\n safeSetOffset: function (offset) {\r\n var me = this;\r\n var el = me.getDom();\r\n var vpRect = uiUtils.getViewportRect();\r\n var rect = uiUtils.getClientRect(el);\r\n var left = offset.left;\r\n if (left + rect.width > vpRect.right) {\r\n left = vpRect.right - rect.width;\r\n }\r\n var top = offset.top;\r\n if (top + rect.height > vpRect.bottom) {\r\n top = vpRect.bottom - rect.height;\r\n }\r\n el.style.left = Math.max(left, 0) + 'px';\r\n el.style.top = Math.max(top, 0) + 'px';\r\n },\r\n showAtCenter: function () {\r\n\r\n var vpRect = uiUtils.getViewportRect();\r\n\r\n if (!this.fullscreen) {\r\n this.getDom().style.display = '';\r\n var popSize = this.fitSize();\r\n var titleHeight = this.getDom('titlebar').offsetHeight | 0;\r\n var left = vpRect.width / 2 - popSize.width / 2;\r\n var top = vpRect.height / 2 - (popSize.height - titleHeight) / 2 - titleHeight;\r\n var popEl = this.getDom();\r\n this.safeSetOffset({\r\n left: Math.max(left | 0, 0),\r\n top: Math.max(top | 0, 0)\r\n });\r\n if (!domUtils.hasClass(popEl, 'edui-state-centered')) {\r\n popEl.className += ' edui-state-centered';\r\n }\r\n } else {\r\n var dialogWrapNode = this.getDom(),\r\n contentNode = this.getDom('content');\r\n\r\n dialogWrapNode.style.display = \"block\";\r\n\r\n var wrapRect = UE.ui.uiUtils.getClientRect(dialogWrapNode),\r\n contentRect = UE.ui.uiUtils.getClientRect(contentNode);\r\n dialogWrapNode.style.left = \"-100000px\";\r\n\r\n contentNode.style.width = (vpRect.width - wrapRect.width + contentRect.width) + \"px\";\r\n contentNode.style.height = (vpRect.height - wrapRect.height + contentRect.height) + \"px\";\r\n\r\n dialogWrapNode.style.width = vpRect.width + \"px\";\r\n dialogWrapNode.style.height = vpRect.height + \"px\";\r\n dialogWrapNode.style.left = 0;\r\n\r\n //保存环境的overflow值\r\n this._originalContext = {\r\n html: {\r\n overflowX: document.documentElement.style.overflowX,\r\n overflowY: document.documentElement.style.overflowY\r\n },\r\n body: {\r\n overflowX: document.body.style.overflowX,\r\n overflowY: document.body.style.overflowY\r\n }\r\n };\r\n\r\n document.documentElement.style.overflowX = 'hidden';\r\n document.documentElement.style.overflowY = 'hidden';\r\n document.body.style.overflowX = 'hidden';\r\n document.body.style.overflowY = 'hidden';\r\n\r\n }\r\n\r\n this._show();\r\n },\r\n getContentHtml: function () {\r\n var contentHtml = '';\r\n if (typeof this.content == 'string') {\r\n contentHtml = this.content;\r\n } else if (this.iframeUrl) {\r\n contentHtml = '';\r\n }\r\n return contentHtml;\r\n },\r\n getHtmlTpl: function () {\r\n var footHtml = '';\r\n\r\n if (this.buttons) {\r\n var buff = [];\r\n for (var i = 0; i < this.buttons.length; i++) {\r\n buff[i] = this.buttons[i].renderHtml();\r\n }\r\n footHtml = '
    ' +\r\n '
    ' + buff.join('') + '
    ' +\r\n '
    ';\r\n }\r\n\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '' + (this.title || '') + '' +\r\n '
    ' +\r\n this.closeButton.renderHtml() +\r\n '
    ' +\r\n '
    ' + (this.autoReset ? '' : this.getContentHtml()) + '
    ' +\r\n footHtml +\r\n '
    ';\r\n },\r\n postRender: function () {\r\n // todo: 保持居中/记住上次关闭位置选项\r\n if (!this.modalMask.getDom()) {\r\n this.modalMask.render();\r\n this.modalMask.hide();\r\n }\r\n if (!this.dragMask.getDom()) {\r\n this.dragMask.render();\r\n this.dragMask.hide();\r\n }\r\n var me = this;\r\n this.addListener('show', function () {\r\n me.modalMask.show(this.getDom().style.zIndex - 2);\r\n });\r\n this.addListener('hide', function () {\r\n me.modalMask.hide();\r\n });\r\n if (this.buttons) {\r\n for (var i = 0; i < this.buttons.length; i++) {\r\n this.buttons[i].postRender();\r\n }\r\n }\r\n domUtils.on(window, 'resize', function () {\r\n setTimeout(function () {\r\n if (!me.isHidden()) {\r\n me.safeSetOffset(uiUtils.getClientRect(me.getDom()));\r\n }\r\n });\r\n });\r\n\r\n //hold住scroll事件,防止dialog的滚动影响页面\r\n // if( this.holdScroll ) {\r\n //\r\n // if( !me.iframeUrl ) {\r\n // domUtils.on( document.getElementById( me.id + \"_iframe\"), !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n // domUtils.preventDefault(e);\r\n // } );\r\n // } else {\r\n // me.addListener('dialogafterreset', function(){\r\n // window.setTimeout(function(){\r\n // var iframeWindow = document.getElementById( me.id + \"_iframe\").contentWindow;\r\n //\r\n // if( browser.ie ) {\r\n //\r\n // var timer = window.setInterval(function(){\r\n //\r\n // if( iframeWindow.document && iframeWindow.document.body ) {\r\n // window.clearInterval( timer );\r\n // timer = null;\r\n // domUtils.on( iframeWindow.document.body, !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n // domUtils.preventDefault(e);\r\n // } );\r\n // }\r\n //\r\n // }, 100);\r\n //\r\n // } else {\r\n // domUtils.on( iframeWindow, !browser.gecko ? \"mousewheel\" : \"DOMMouseScroll\", function(e){\r\n // domUtils.preventDefault(e);\r\n // } );\r\n // }\r\n //\r\n // }, 1);\r\n // });\r\n // }\r\n //\r\n // }\r\n this._hide();\r\n },\r\n mesureSize: function () {\r\n var body = this.getDom('body');\r\n var width = uiUtils.getClientRect(this.getDom('content')).width;\r\n var dialogBodyStyle = body.style;\r\n dialogBodyStyle.width = width;\r\n return uiUtils.getClientRect(body);\r\n },\r\n _onTitlebarMouseDown: function (evt, el) {\r\n if (this.draggable) {\r\n var rect;\r\n var vpRect = uiUtils.getViewportRect();\r\n var me = this;\r\n uiUtils.startDrag(evt, {\r\n ondragstart: function () {\r\n rect = uiUtils.getClientRect(me.getDom());\r\n me.getDom('contmask').style.visibility = 'visible';\r\n me.dragMask.show(me.getDom().style.zIndex - 1);\r\n },\r\n ondragmove: function (x, y) {\r\n var left = rect.left + x;\r\n var top = rect.top + y;\r\n me.safeSetOffset({\r\n left: left,\r\n top: top\r\n });\r\n },\r\n ondragstop: function () {\r\n me.getDom('contmask').style.visibility = 'hidden';\r\n domUtils.removeClasses(me.getDom(), ['edui-state-centered']);\r\n me.dragMask.hide();\r\n }\r\n });\r\n }\r\n },\r\n reset: function () {\r\n this.getDom('content').innerHTML = this.getContentHtml();\r\n this.fireEvent('dialogafterreset');\r\n },\r\n _show: function () {\r\n if (this._hidden) {\r\n this.getDom().style.display = '';\r\n\r\n //要高过编辑器的zindxe\r\n this.editor.container.style.zIndex && (this.getDom().style.zIndex = this.editor.container.style.zIndex * 1 + 10);\r\n this._hidden = false;\r\n this.fireEvent('show');\r\n baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex = this.getDom().style.zIndex - 4;\r\n }\r\n },\r\n isHidden: function () {\r\n return this._hidden;\r\n },\r\n _hide: function () {\r\n if (!this._hidden) {\r\n var wrapNode = this.getDom();\r\n wrapNode.style.display = 'none';\r\n wrapNode.style.zIndex = '';\r\n wrapNode.style.width = '';\r\n wrapNode.style.height = '';\r\n this._hidden = true;\r\n this.fireEvent('hide');\r\n }\r\n },\r\n open: function () {\r\n if (this.autoReset) {\r\n //有可能还没有渲染\r\n try {\r\n this.reset();\r\n } catch (e) {\r\n this.render();\r\n this.open()\r\n }\r\n }\r\n this.showAtCenter();\r\n if (this.iframeUrl) {\r\n try {\r\n this.getDom('iframe').focus();\r\n } catch (ex) {}\r\n }\r\n activeDialog = this;\r\n },\r\n _onCloseButtonClick: function (evt, el) {\r\n this.close(false);\r\n },\r\n close: function (ok) {\r\n if (this.fireEvent('close', ok) !== false) {\r\n //还原环境\r\n if (this.fullscreen) {\r\n\r\n document.documentElement.style.overflowX = this._originalContext.html.overflowX;\r\n document.documentElement.style.overflowY = this._originalContext.html.overflowY;\r\n document.body.style.overflowX = this._originalContext.body.overflowX;\r\n document.body.style.overflowY = this._originalContext.body.overflowY;\r\n delete this._originalContext;\r\n\r\n }\r\n this._hide();\r\n\r\n //销毁content\r\n var content = this.getDom('content');\r\n var iframe = this.getDom('iframe');\r\n if (content && iframe) {\r\n var doc = iframe.contentDocument || iframe.contentWindow.document;\r\n doc && (doc.body.innerHTML = '');\r\n domUtils.remove(content);\r\n }\r\n }\r\n }\r\n };\r\n utils.inherits(Dialog, UIBase);\r\n })();\r\n\r\n\r\n // ui/menubutton.js\r\n ///import core\r\n ///import uicore\r\n ///import ui/menu.js\r\n ///import ui/splitbutton.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Menu = baidu.editor.ui.Menu,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n MenuButton = baidu.editor.ui.MenuButton = function (options) {\r\n this.initOptions(options);\r\n this.initMenuButton();\r\n };\r\n MenuButton.prototype = {\r\n initMenuButton: function () {\r\n var me = this;\r\n this.uiName = \"menubutton\";\r\n this.popup = new Menu({\r\n items: me.items,\r\n className: me.className,\r\n editor: me.editor\r\n });\r\n this.popup.addListener('show', function () {\r\n var list = this;\r\n for (var i = 0; i < list.items.length; i++) {\r\n list.items[i].removeState('checked');\r\n if (list.items[i].value == me._value) {\r\n list.items[i].addState('checked');\r\n this.value = me._value;\r\n }\r\n }\r\n });\r\n this.initSplitButton();\r\n },\r\n setValue: function (value) {\r\n this._value = value;\r\n }\r\n\r\n };\r\n utils.inherits(MenuButton, SplitButton);\r\n })();\r\n\r\n // ui/multiMenu.js\r\n ///import core\r\n ///import uicore\r\n ///commands 表情\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n Popup = baidu.editor.ui.Popup,\r\n SplitButton = baidu.editor.ui.SplitButton,\r\n MultiMenuPop = baidu.editor.ui.MultiMenuPop = function (options) {\r\n this.initOptions(options);\r\n this.initMultiMenu();\r\n };\r\n\r\n MultiMenuPop.prototype = {\r\n initMultiMenu: function () {\r\n var me = this;\r\n this.popup = new Popup({\r\n content: '',\r\n editor: me.editor,\r\n iframe_rendered: false,\r\n onshow: function () {\r\n if (!this.iframe_rendered) {\r\n this.iframe_rendered = true;\r\n this.getDom('content').innerHTML = '';\r\n me.editor.container.style.zIndex && (this.getDom().style.zIndex = me.editor.container.style.zIndex * 1 + 1);\r\n }\r\n }\r\n // canSideUp:false,\r\n // canSideLeft:false\r\n });\r\n this.onbuttonclick = function () {\r\n this.showPopup();\r\n };\r\n this.initSplitButton();\r\n }\r\n\r\n };\r\n\r\n utils.inherits(MultiMenuPop, SplitButton);\r\n })();\r\n\r\n\r\n // ui/shortcutmenu.js\r\n (function () {\r\n var UI = baidu.editor.ui,\r\n UIBase = UI.UIBase,\r\n uiUtils = UI.uiUtils,\r\n utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils;\r\n\r\n var allMenus = [], //存储所有快捷菜单\r\n timeID,\r\n isSubMenuShow = false; //是否有子pop显示\r\n\r\n var ShortCutMenu = UI.ShortCutMenu = function (options) {\r\n this.initOptions(options);\r\n this.initShortCutMenu();\r\n };\r\n\r\n ShortCutMenu.postHide = hideAllMenu;\r\n\r\n ShortCutMenu.prototype = {\r\n isHidden: true,\r\n SPACE: 5,\r\n initShortCutMenu: function () {\r\n this.items = this.items || [];\r\n this.initUIBase();\r\n this.initItems();\r\n this.initEvent();\r\n allMenus.push(this);\r\n },\r\n initEvent: function () {\r\n var me = this,\r\n doc = me.editor.document;\r\n\r\n domUtils.on(doc, \"mousemove\", function (e) {\r\n if (me.isHidden === false) {\r\n //有pop显示就不隐藏快捷菜单\r\n if (me.getSubMenuMark() || me.eventType == \"contextmenu\") return;\r\n\r\n\r\n var flag = true,\r\n el = me.getDom(),\r\n wt = el.offsetWidth,\r\n ht = el.offsetHeight,\r\n distanceX = wt / 2 + me.SPACE, //距离中心X标准\r\n distanceY = ht / 2, //距离中心Y标准\r\n x = Math.abs(e.screenX - me.left), //离中心距离横坐标\r\n y = Math.abs(e.screenY - me.top); //离中心距离纵坐标\r\n\r\n clearTimeout(timeID);\r\n timeID = setTimeout(function () {\r\n if (y > 0 && y < distanceY) {\r\n me.setOpacity(el, \"1\");\r\n } else if (y > distanceY && y < distanceY + 70) {\r\n me.setOpacity(el, \"0.5\");\r\n flag = false;\r\n } else if (y > distanceY + 70 && y < distanceY + 140) {\r\n me.hide();\r\n }\r\n\r\n if (flag && x > 0 && x < distanceX) {\r\n me.setOpacity(el, \"1\")\r\n } else if (x > distanceX && x < distanceX + 70) {\r\n me.setOpacity(el, \"0.5\")\r\n } else if (x > distanceX + 70 && x < distanceX + 140) {\r\n me.hide();\r\n }\r\n });\r\n }\r\n });\r\n\r\n //ie\\ff下 mouseout不准\r\n if (browser.chrome) {\r\n domUtils.on(doc, \"mouseout\", function (e) {\r\n var relatedTgt = e.relatedTarget || e.toElement;\r\n\r\n if (relatedTgt == null || relatedTgt.tagName == \"HTML\") {\r\n me.hide();\r\n }\r\n });\r\n }\r\n\r\n me.editor.addListener(\"afterhidepop\", function () {\r\n if (!me.isHidden) {\r\n isSubMenuShow = true;\r\n }\r\n });\r\n\r\n },\r\n initItems: function () {\r\n if (utils.isArray(this.items)) {\r\n for (var i = 0, len = this.items.length; i < len; i++) {\r\n var item = this.items[i].toLowerCase();\r\n\r\n if (UI[item]) {\r\n this.items[i] = new UI[item](this.editor);\r\n this.items[i].className += \" edui-shortcutsubmenu \";\r\n }\r\n }\r\n }\r\n },\r\n setOpacity: function (el, value) {\r\n if (browser.ie && browser.version < 9) {\r\n el.style.filter = \"alpha(opacity = \" + parseFloat(value) * 100 + \");\"\r\n } else {\r\n el.style.opacity = value;\r\n }\r\n },\r\n getSubMenuMark: function () {\r\n isSubMenuShow = false;\r\n var layerEle = uiUtils.getFixedLayer();\r\n var list = domUtils.getElementsByTagName(layerEle, \"div\", function (node) {\r\n return domUtils.hasClass(node, \"edui-shortcutsubmenu edui-popup\")\r\n });\r\n\r\n for (var i = 0, node; node = list[i++];) {\r\n if (node.style.display != \"none\") {\r\n isSubMenuShow = true;\r\n }\r\n }\r\n return isSubMenuShow;\r\n },\r\n show: function (e, hasContextmenu) {\r\n var me = this,\r\n offset = {},\r\n el = this.getDom(),\r\n fixedlayer = uiUtils.getFixedLayer();\r\n\r\n function setPos(offset) {\r\n if (offset.left < 0) {\r\n offset.left = 0;\r\n }\r\n if (offset.top < 0) {\r\n offset.top = 0;\r\n }\r\n el.style.cssText = \"position:absolute;left:\" + offset.left + \"px;top:\" + offset.top + \"px;\";\r\n }\r\n\r\n function setPosByCxtMenu(menu) {\r\n if (!menu.tagName) {\r\n menu = menu.getDom();\r\n }\r\n offset.left = parseInt(menu.style.left);\r\n offset.top = parseInt(menu.style.top);\r\n offset.top -= el.offsetHeight + 15;\r\n setPos(offset);\r\n }\r\n\r\n\r\n me.eventType = e.type;\r\n el.style.cssText = \"display:block;left:-9999px\";\r\n\r\n if (e.type == \"contextmenu\" && hasContextmenu) {\r\n var menu = domUtils.getElementsByTagName(fixedlayer, \"div\", \"edui-contextmenu\")[0];\r\n if (menu) {\r\n setPosByCxtMenu(menu)\r\n } else {\r\n me.editor.addListener(\"aftershowcontextmenu\", function (type, menu) {\r\n setPosByCxtMenu(menu);\r\n });\r\n }\r\n } else {\r\n offset = uiUtils.getViewportOffsetByEvent(e);\r\n offset.top -= el.offsetHeight + me.SPACE;\r\n offset.left += me.SPACE + 20;\r\n setPos(offset);\r\n me.setOpacity(el, 0.2);\r\n }\r\n\r\n\r\n me.isHidden = false;\r\n me.left = e.screenX + el.offsetWidth / 2 - me.SPACE;\r\n me.top = e.screenY - (el.offsetHeight / 2) - me.SPACE;\r\n\r\n if (me.editor) {\r\n el.style.zIndex = me.editor.container.style.zIndex * 1 + 10;\r\n fixedlayer.style.zIndex = el.style.zIndex - 1;\r\n }\r\n },\r\n hide: function () {\r\n if (this.getDom()) {\r\n this.getDom().style.display = \"none\";\r\n }\r\n this.isHidden = true;\r\n },\r\n postRender: function () {\r\n if (utils.isArray(this.items)) {\r\n for (var i = 0, item; item = this.items[i++];) {\r\n item.postRender();\r\n }\r\n }\r\n },\r\n getHtmlTpl: function () {\r\n var buff;\r\n if (utils.isArray(this.items)) {\r\n buff = [];\r\n for (var i = 0; i < this.items.length; i++) {\r\n buff[i] = this.items[i].renderHtml();\r\n }\r\n buff = buff.join(\"\");\r\n } else {\r\n buff = this.items;\r\n }\r\n\r\n return '
    ' +\r\n buff +\r\n '
    ';\r\n }\r\n };\r\n\r\n utils.inherits(ShortCutMenu, UIBase);\r\n\r\n function hideAllMenu(e) {\r\n var tgt = e.target || e.srcElement,\r\n cur = domUtils.findParent(tgt, function (node) {\r\n return domUtils.hasClass(node, \"edui-shortcutmenu\") || domUtils.hasClass(node, \"edui-popup\");\r\n }, true);\r\n\r\n if (!cur) {\r\n for (var i = 0, menu; menu = allMenus[i++];) {\r\n menu.hide()\r\n }\r\n }\r\n }\r\n\r\n domUtils.on(document, 'mousedown', function (e) {\r\n hideAllMenu(e);\r\n });\r\n\r\n domUtils.on(window, 'scroll', function (e) {\r\n hideAllMenu(e);\r\n });\r\n\r\n })();\r\n\r\n\r\n // ui/breakline.js\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Breakline = baidu.editor.ui.Breakline = function (options) {\r\n this.initOptions(options);\r\n this.initSeparator();\r\n };\r\n Breakline.prototype = {\r\n uiName: 'Breakline',\r\n initSeparator: function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ';\r\n }\r\n };\r\n utils.inherits(Breakline, UIBase);\r\n\r\n })();\r\n\r\n\r\n // ui/message.js\r\n ///import core\r\n ///import uicore\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n domUtils = baidu.editor.dom.domUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n Message = baidu.editor.ui.Message = function (options) {\r\n this.initOptions(options);\r\n this.initMessage();\r\n };\r\n\r\n Message.prototype = {\r\n initMessage: function () {\r\n this.initUIBase();\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ×
    ' +\r\n '
    ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n reset: function (opt) {\r\n var me = this;\r\n if (!opt.keepshow) {\r\n clearTimeout(this.timer);\r\n me.timer = setTimeout(function () {\r\n me.hide();\r\n }, opt.timeout || 4000);\r\n }\r\n\r\n opt.content !== undefined && me.setContent(opt.content);\r\n opt.type !== undefined && me.setType(opt.type);\r\n\r\n me.show();\r\n },\r\n postRender: function () {\r\n var me = this,\r\n closer = this.getDom('closer');\r\n closer && domUtils.on(closer, 'click', function () {\r\n me.hide();\r\n });\r\n },\r\n setContent: function (content) {\r\n this.getDom('content').innerHTML = content;\r\n },\r\n setType: function (type) {\r\n type = type || 'info';\r\n var body = this.getDom('body');\r\n body.className = body.className.replace(/edui-message-type-[\\w-]+/, 'edui-message-type-' + type);\r\n },\r\n getContent: function () {\r\n return this.getDom('content').innerHTML;\r\n },\r\n getType: function () {\r\n var arr = this.getDom('body').match(/edui-message-type-([\\w-]+)/);\r\n return arr ? arr[1] : '';\r\n },\r\n show: function () {\r\n this.getDom().style.display = 'block';\r\n },\r\n hide: function () {\r\n var dom = this.getDom();\r\n if (dom) {\r\n dom.style.display = 'none';\r\n dom.parentNode && dom.parentNode.removeChild(dom);\r\n }\r\n }\r\n };\r\n\r\n utils.inherits(Message, UIBase);\r\n\r\n })();\r\n\r\n\r\n // adapter/editorui.js\r\n //ui跟编辑器的适配層\r\n //那个按钮弹出是dialog,是下拉筐等都是在这个js中配置\r\n //自己写的ui也要在这里配置,放到baidu.editor.ui下边,当编辑器实例化的时候会根据ueditor.config中的toolbars找到相应的进行实例化\r\n (function () {\r\n var utils = baidu.editor.utils;\r\n var editorui = baidu.editor.ui;\r\n var _Dialog = editorui.Dialog;\r\n editorui.buttons = {};\r\n\r\n editorui.Dialog = function (options) {\r\n var dialog = new _Dialog(options);\r\n dialog.addListener('hide', function () {\r\n\r\n if (dialog.editor) {\r\n var editor = dialog.editor;\r\n try {\r\n if (browser.gecko) {\r\n var y = editor.window.scrollY,\r\n x = editor.window.scrollX;\r\n editor.body.focus();\r\n editor.window.scrollTo(x, y);\r\n } else {\r\n editor.focus();\r\n }\r\n\r\n\r\n } catch (ex) {}\r\n }\r\n });\r\n return dialog;\r\n };\r\n\r\n var iframeUrlMap = {\r\n 'anchor': '~/dialogs/anchor/anchor.html',\r\n 'insertimage': '~/dialogs/image/image.html',\r\n 'link': '~/dialogs/link/link.html',\r\n 'spechars': '~/dialogs/spechars/spechars.html',\r\n 'searchreplace': '~/dialogs/searchreplace/searchreplace.html',\r\n 'map': '~/dialogs/map/map.html',\r\n 'gmap': '~/dialogs/gmap/gmap.html',\r\n 'insertvideo': '~/dialogs/video/video.html',\r\n 'help': '~/dialogs/help/help.html',\r\n // 'preview': '~/dialogs/preview/preview.html',\r\n 'emotion': '~/dialogs/emotion/emotion.html',\r\n 'wordimage': '~/dialogs/wordimage/wordimage.html',\r\n 'attachment': '~/dialogs/attachment/attachment.html',\r\n 'insertframe': '~/dialogs/insertframe/insertframe.html',\r\n 'edittip': '~/dialogs/table/edittip.html',\r\n 'edittable': '~/dialogs/table/edittable.html',\r\n 'edittd': '~/dialogs/table/edittd.html',\r\n 'webapp': '~/dialogs/webapp/webapp.html',\r\n 'snapscreen': '~/dialogs/snapscreen/snapscreen.html',\r\n 'scrawl': '~/dialogs/scrawl/scrawl.html',\r\n 'music': '~/dialogs/music/music.html',\r\n 'template': '~/dialogs/template/template.html',\r\n 'background': '~/dialogs/background/background.html',\r\n 'charts': '~/dialogs/charts/charts.html'\r\n };\r\n //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起\r\n var btnCmds = ['undo', 'redo', 'formatmatch',\r\n 'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',\r\n 'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',\r\n 'blockquote', 'pasteplain', 'pagebreak',\r\n 'selectall', 'print', 'horizontal', 'removeformat', 'time', 'date', 'unlink',\r\n 'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',\r\n 'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts'\r\n ];\r\n\r\n for (var i = 0, ci; ci = btnCmds[i++];) {\r\n ci = ci.toLowerCase();\r\n editorui[ci] = function (cmd) {\r\n return function (editor) {\r\n var ui = new editorui.Button({\r\n className: 'edui-for-' + cmd,\r\n title: editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\r\n onclick: function () {\r\n editor.execCommand(cmd);\r\n },\r\n theme: editor.options.theme,\r\n showText: false\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n var state = editor.queryCommandState(cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n ui.setChecked(false);\r\n } else {\r\n if (!uiReady) {\r\n ui.setDisabled(false);\r\n ui.setChecked(state);\r\n }\r\n }\r\n });\r\n return ui;\r\n };\r\n }(ci);\r\n }\r\n\r\n //清除文档\r\n editorui.cleardoc = function (editor) {\r\n var ui = new editorui.Button({\r\n className: 'edui-for-cleardoc',\r\n title: editor.options.labelMap.cleardoc || editor.getLang(\"labelMap.cleardoc\") || '',\r\n theme: editor.options.theme,\r\n onclick: function () {\r\n if (confirm(editor.getLang(\"confirmClear\"))) {\r\n editor.execCommand('cleardoc');\r\n }\r\n }\r\n });\r\n editorui.buttons[\"cleardoc\"] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('cleardoc') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n //排版,图片排版,文字方向\r\n var typeset = {\r\n 'justify': ['left', 'right', 'center', 'justify'],\r\n 'imagefloat': ['none', 'left', 'center', 'right'],\r\n 'directionality': ['ltr', 'rtl']\r\n };\r\n\r\n for (var p in typeset) {\r\n\r\n (function (cmd, val) {\r\n for (var i = 0, ci; ci = val[i++];) {\r\n (function (cmd2) {\r\n editorui[cmd.replace('float', '') + cmd2] = function (editor) {\r\n var ui = new editorui.Button({\r\n className: 'edui-for-' + cmd.replace('float', '') + cmd2,\r\n title: editor.options.labelMap[cmd.replace('float', '') + cmd2] || editor.getLang(\"labelMap.\" + cmd.replace('float', '') + cmd2) || '',\r\n theme: editor.options.theme,\r\n onclick: function () {\r\n editor.execCommand(cmd, cmd2);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\r\n ui.setChecked(editor.queryCommandValue(cmd) == cmd2 && !uiReady);\r\n });\r\n return ui;\r\n };\r\n })(ci)\r\n }\r\n })(p, typeset[p])\r\n }\r\n\r\n //字体颜色和背景颜色\r\n for (var i = 0, ci; ci = ['backcolor', 'forecolor'][i++];) {\r\n editorui[ci] = function (cmd) {\r\n return function (editor) {\r\n var ui = new editorui.ColorButton({\r\n className: 'edui-for-' + cmd,\r\n color: 'default',\r\n title: editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '',\r\n editor: editor,\r\n onpickcolor: function (t, color) {\r\n editor.execCommand(cmd, color);\r\n },\r\n onpicknocolor: function () {\r\n editor.execCommand(cmd, 'default');\r\n this.setColor('transparent');\r\n this.color = 'default';\r\n },\r\n onbuttonclick: function () {\r\n editor.execCommand(cmd, this.color);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1);\r\n });\r\n return ui;\r\n };\r\n }(ci);\r\n }\r\n\r\n\r\n // preview\r\n var dialogBtns = {\r\n noOk: ['searchreplace', 'help', 'spechars', 'webapp'],\r\n ok: ['attachment', 'anchor', 'link', 'insertimage', 'map', 'gmap', 'insertframe', 'wordimage',\r\n 'insertvideo', 'insertframe', 'edittip', 'edittable', 'edittd', 'scrawl', 'template', 'music', 'background', 'charts'\r\n ]\r\n };\r\n\r\n for (var p in dialogBtns) {\r\n (function (type, vals) {\r\n for (var i = 0, ci; ci = vals[i++];) {\r\n //todo opera下存在问题\r\n if (browser.opera && ci === \"searchreplace\") {\r\n continue;\r\n }\r\n (function (cmd) {\r\n editorui[cmd] = function (editor, iframeUrl, title) {\r\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd];\r\n title = editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd) || '';\r\n\r\n var dialog;\r\n //没有iframeUrl不创建dialog\r\n if (iframeUrl) {\r\n dialog = new editorui.Dialog(utils.extend({\r\n iframeUrl: editor.ui.mapUrl(iframeUrl),\r\n editor: editor,\r\n className: 'edui-for-' + cmd,\r\n title: title,\r\n holdScroll: cmd === 'insertimage',\r\n fullscreen: /charts|preview/.test(cmd),\r\n closeDialog: editor.getLang(\"closeDialog\")\r\n }, type == 'ok' ? {\r\n buttons: [{\r\n className: 'edui-okbutton',\r\n label: editor.getLang(\"ok\"),\r\n editor: editor,\r\n onclick: function () {\r\n dialog.close(true);\r\n }\r\n },\r\n {\r\n className: 'edui-cancelbutton',\r\n label: editor.getLang(\"cancel\"),\r\n editor: editor,\r\n onclick: function () {\r\n dialog.close(false);\r\n }\r\n }\r\n ]\r\n } : {}));\r\n\r\n editor.ui._dialogs[cmd + \"Dialog\"] = dialog;\r\n }\r\n\r\n var ui = new editorui.Button({\r\n className: 'edui-for-' + cmd,\r\n title: title,\r\n onclick: function () {\r\n if (dialog) {\r\n switch (cmd) {\r\n case \"wordimage\":\r\n var images = editor.execCommand(\"wordimage\");\r\n if (images && images.length) {\r\n dialog.render();\r\n dialog.open();\r\n }\r\n break;\r\n case \"scrawl\":\r\n if (editor.queryCommandState(\"scrawl\") != -1) {\r\n dialog.render();\r\n dialog.open();\r\n }\r\n\r\n break;\r\n default:\r\n dialog.render();\r\n dialog.open();\r\n }\r\n }\r\n },\r\n theme: editor.options.theme,\r\n disabled: (cmd == 'scrawl' && editor.queryCommandState(\"scrawl\") == -1) || (cmd == 'charts')\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n //只存在于右键菜单而无工具栏按钮的ui不需要检测状态\r\n var unNeedCheckState = {\r\n 'edittable': 1\r\n };\r\n if (cmd in unNeedCheckState) return;\r\n\r\n var state = editor.queryCommandState(cmd);\r\n if (ui.getDom()) {\r\n ui.setDisabled(state == -1);\r\n ui.setChecked(state);\r\n }\r\n\r\n });\r\n\r\n return ui;\r\n };\r\n })(ci.toLowerCase())\r\n }\r\n })(p, dialogBtns[p]);\r\n }\r\n\r\n editorui.snapscreen = function (editor, iframeUrl, title) {\r\n title = editor.options.labelMap['snapscreen'] || editor.getLang(\"labelMap.snapscreen\") || '';\r\n var ui = new editorui.Button({\r\n className: 'edui-for-snapscreen',\r\n title: title,\r\n onclick: function () {\r\n editor.execCommand(\"snapscreen\");\r\n },\r\n theme: editor.options.theme\r\n\r\n });\r\n editorui.buttons['snapscreen'] = ui;\r\n iframeUrl = iframeUrl || (editor.options.iframeUrlMap || {})[\"snapscreen\"] || iframeUrlMap[\"snapscreen\"];\r\n if (iframeUrl) {\r\n var dialog = new editorui.Dialog({\r\n iframeUrl: editor.ui.mapUrl(iframeUrl),\r\n editor: editor,\r\n className: 'edui-for-snapscreen',\r\n title: title,\r\n buttons: [{\r\n className: 'edui-okbutton',\r\n label: editor.getLang(\"ok\"),\r\n editor: editor,\r\n onclick: function () {\r\n dialog.close(true);\r\n }\r\n },\r\n {\r\n className: 'edui-cancelbutton',\r\n label: editor.getLang(\"cancel\"),\r\n editor: editor,\r\n onclick: function () {\r\n dialog.close(false);\r\n }\r\n }\r\n ]\r\n\r\n });\r\n dialog.render();\r\n editor.ui._dialogs[\"snapscreenDialog\"] = dialog;\r\n }\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('snapscreen') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.insertcode = function (editor, list, title) {\r\n list = editor.options['insertcode'] || [];\r\n title = editor.options.labelMap['insertcode'] || editor.getLang(\"labelMap.insertcode\") || '';\r\n // if (!list.length) return;\r\n var items = [];\r\n utils.each(list, function (key, val) {\r\n items.push({\r\n label: key,\r\n value: val,\r\n theme: editor.options.theme,\r\n renderLabelHtml: function () {\r\n return '
    ' + (this.label || '') + '
    ';\r\n }\r\n });\r\n });\r\n\r\n var ui = new editorui.Combox({\r\n editor: editor,\r\n items: items,\r\n onselect: function (t, index) {\r\n editor.execCommand('insertcode', this.items[index].value);\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n },\r\n title: title,\r\n initValue: title,\r\n className: 'edui-for-insertcode',\r\n indexByValue: function (value) {\r\n if (value) {\r\n for (var i = 0, ci; ci = this.items[i]; i++) {\r\n if (ci.value.indexOf(value) != -1)\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['insertcode'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('insertcode');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('insertcode');\r\n if (!value) {\r\n ui.setValue(title);\r\n return;\r\n }\r\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\r\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\r\n ui.setValue(value);\r\n\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n editorui.fontfamily = function (editor, list, title) {\r\n\r\n list = editor.options['fontfamily'] || [];\r\n title = editor.options.labelMap['fontfamily'] || editor.getLang(\"labelMap.fontfamily\") || '';\r\n if (!list.length) return;\r\n for (var i = 0, ci, items = []; ci = list[i]; i++) {\r\n var langLabel = editor.getLang('fontfamily')[ci.name] || \"\";\r\n (function (key, val) {\r\n items.push({\r\n label: key,\r\n value: val,\r\n theme: editor.options.theme,\r\n renderLabelHtml: function () {\r\n return '
    ' + (this.label || '') + '
    ';\r\n }\r\n });\r\n })(ci.label || langLabel, ci.val)\r\n }\r\n var ui = new editorui.Combox({\r\n editor: editor,\r\n items: items,\r\n onselect: function (t, index) {\r\n editor.execCommand('FontFamily', this.items[index].value);\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n },\r\n title: title,\r\n initValue: title,\r\n className: 'edui-for-fontfamily',\r\n indexByValue: function (value) {\r\n if (value) {\r\n for (var i = 0, ci; ci = this.items[i]; i++) {\r\n if (ci.value.indexOf(value) != -1)\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['fontfamily'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('FontFamily');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('FontFamily');\r\n //trace:1871 ie下从源码模式切换回来时,字体会带单引号,而且会有逗号\r\n value && (value = value.replace(/['\"]/g, '').split(',')[0]);\r\n ui.setValue(value);\r\n\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.fontsize = function (editor, list, title) {\r\n title = editor.options.labelMap['fontsize'] || editor.getLang(\"labelMap.fontsize\") || '';\r\n list = list || editor.options['fontsize'] || [];\r\n if (!list.length) return;\r\n var items = [];\r\n for (var i = 0; i < list.length; i++) {\r\n var size = list[i] + 'px';\r\n items.push({\r\n label: size,\r\n value: size,\r\n theme: editor.options.theme,\r\n renderLabelHtml: function () {\r\n return '
    ' + (this.label || '') + '
    ';\r\n }\r\n });\r\n }\r\n var ui = new editorui.Combox({\r\n editor: editor,\r\n items: items,\r\n title: title,\r\n initValue: title,\r\n onselect: function (t, index) {\r\n editor.execCommand('FontSize', this.items[index].value);\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n },\r\n className: 'edui-for-fontsize'\r\n });\r\n editorui.buttons['fontsize'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('FontSize');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n ui.setValue(editor.queryCommandValue('FontSize'));\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.paragraph = function (editor, list, title) {\r\n title = editor.options.labelMap['paragraph'] || editor.getLang(\"labelMap.paragraph\") || '';\r\n list = editor.options['paragraph'] || [];\r\n if (utils.isEmptyObject(list)) return;\r\n var items = [];\r\n for (var i in list) {\r\n items.push({\r\n value: i,\r\n label: list[i] || editor.getLang(\"paragraph\")[i],\r\n theme: editor.options.theme,\r\n renderLabelHtml: function () {\r\n return '
    ' + (this.label || '') + '
    ';\r\n }\r\n })\r\n }\r\n var ui = new editorui.Combox({\r\n editor: editor,\r\n items: items,\r\n title: title,\r\n initValue: title,\r\n className: 'edui-for-paragraph',\r\n onselect: function (t, index) {\r\n editor.execCommand('Paragraph', this.items[index].value);\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n }\r\n });\r\n editorui.buttons['paragraph'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('Paragraph');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('Paragraph');\r\n var index = ui.indexByValue(value);\r\n if (index != -1) {\r\n ui.setValue(value);\r\n } else {\r\n ui.setValue(ui.initValue);\r\n }\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n\r\n\r\n //自定义标题\r\n editorui.customstyle = function (editor) {\r\n var list = editor.options['customstyle'] || [],\r\n title = editor.options.labelMap['customstyle'] || editor.getLang(\"labelMap.customstyle\") || '';\r\n if (!list.length) return;\r\n var langCs = editor.getLang('customstyle');\r\n for (var i = 0, items = [], t; t = list[i++];) {\r\n (function (t) {\r\n var ck = {};\r\n ck.label = t.label ? t.label : langCs[t.name];\r\n ck.style = t.style;\r\n ck.className = t.className;\r\n ck.tag = t.tag;\r\n items.push({\r\n label: ck.label,\r\n value: ck,\r\n theme: editor.options.theme,\r\n renderLabelHtml: function () {\r\n return '
    ' + '<' + ck.tag + ' ' + (ck.className ? ' class=\"' + ck.className + '\"' : \"\") +\r\n (ck.style ? ' style=\"' + ck.style + '\"' : \"\") + '>' + ck.label + \"<\\/\" + ck.tag + \">\" +\r\n '
    ';\r\n }\r\n });\r\n })(t);\r\n }\r\n\r\n var ui = new editorui.Combox({\r\n editor: editor,\r\n items: items,\r\n title: title,\r\n initValue: title,\r\n className: 'edui-for-customstyle',\r\n onselect: function (t, index) {\r\n editor.execCommand('customstyle', this.items[index].value);\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n },\r\n indexByValue: function (value) {\r\n for (var i = 0, ti; ti = this.items[i++];) {\r\n if (ti.label == value) {\r\n return i - 1\r\n }\r\n }\r\n return -1;\r\n }\r\n });\r\n editorui.buttons['customstyle'] = ui;\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n if (!uiReady) {\r\n var state = editor.queryCommandState('customstyle');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('customstyle');\r\n var index = ui.indexByValue(value);\r\n if (index != -1) {\r\n ui.setValue(value);\r\n } else {\r\n ui.setValue(ui.initValue);\r\n }\r\n }\r\n }\r\n\r\n });\r\n return ui;\r\n };\r\n editorui.inserttable = function (editor, iframeUrl, title) {\r\n title = editor.options.labelMap['inserttable'] || editor.getLang(\"labelMap.inserttable\") || '';\r\n var ui = new editorui.TableButton({\r\n editor: editor,\r\n title: title,\r\n className: 'edui-for-inserttable',\r\n onpicktable: function (t, numCols, numRows) {\r\n editor.execCommand('InsertTable', {\r\n numRows: numRows,\r\n numCols: numCols,\r\n border: 1\r\n });\r\n },\r\n onbuttonclick: function () {\r\n this.showPopup();\r\n }\r\n });\r\n editorui.buttons['inserttable'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('inserttable') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.lineheight = function (editor) {\r\n var val = editor.options.lineheight || [];\r\n if (!val.length) return;\r\n for (var i = 0, ci, items = []; ci = val[i++];) {\r\n items.push({\r\n //todo:写死了\r\n label: ci,\r\n value: ci,\r\n theme: editor.options.theme,\r\n onclick: function () {\r\n editor.execCommand(\"lineheight\", this.value);\r\n }\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor: editor,\r\n className: 'edui-for-lineheight',\r\n title: editor.options.labelMap['lineheight'] || editor.getLang(\"labelMap.lineheight\") || '',\r\n items: items,\r\n onbuttonclick: function () {\r\n var value = editor.queryCommandValue('LineHeight') || this.value;\r\n editor.execCommand(\"LineHeight\", value);\r\n }\r\n });\r\n editorui.buttons['lineheight'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('LineHeight');\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('LineHeight');\r\n value && ui.setValue((value + '').replace(/cm/, ''));\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n };\r\n\r\n var rowspacings = ['top', 'bottom'];\r\n for (var r = 0, ri; ri = rowspacings[r++];) {\r\n (function (cmd) {\r\n editorui['rowspacing' + cmd] = function (editor) {\r\n var val = editor.options['rowspacing' + cmd] || [];\r\n if (!val.length) return null;\r\n for (var i = 0, ci, items = []; ci = val[i++];) {\r\n items.push({\r\n label: ci,\r\n value: ci,\r\n theme: editor.options.theme,\r\n onclick: function () {\r\n editor.execCommand(\"rowspacing\", this.value, cmd);\r\n }\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor: editor,\r\n className: 'edui-for-rowspacing' + cmd,\r\n title: editor.options.labelMap['rowspacing' + cmd] || editor.getLang(\"labelMap.rowspacing\" + cmd) || '',\r\n items: items,\r\n onbuttonclick: function () {\r\n var value = editor.queryCommandValue('rowspacing', cmd) || this.value;\r\n editor.execCommand(\"rowspacing\", value, cmd);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('rowspacing', cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue('rowspacing', cmd);\r\n value && ui.setValue((value + '').replace(/%/, ''));\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n }\r\n })(ri)\r\n }\r\n //有序,无序列表\r\n var lists = ['insertorderedlist', 'insertunorderedlist'];\r\n for (var l = 0, cl; cl = lists[l++];) {\r\n (function (cmd) {\r\n editorui[cmd] = function (editor) {\r\n var vals = editor.options[cmd],\r\n _onMenuClick = function () {\r\n editor.execCommand(cmd, this.value);\r\n },\r\n items = [];\r\n for (var i in vals) {\r\n items.push({\r\n label: vals[i] || editor.getLang()[cmd][i] || \"\",\r\n value: i,\r\n theme: editor.options.theme,\r\n onclick: _onMenuClick\r\n })\r\n }\r\n var ui = new editorui.MenuButton({\r\n editor: editor,\r\n className: 'edui-for-' + cmd,\r\n title: editor.getLang(\"labelMap.\" + cmd) || '',\r\n 'items': items,\r\n onbuttonclick: function () {\r\n var value = editor.queryCommandValue(cmd) || this.value;\r\n editor.execCommand(cmd, value);\r\n }\r\n });\r\n editorui.buttons[cmd] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState(cmd);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n } else {\r\n ui.setDisabled(false);\r\n var value = editor.queryCommandValue(cmd);\r\n ui.setValue(value);\r\n ui.setChecked(state)\r\n }\r\n });\r\n return ui;\r\n };\r\n })(cl)\r\n }\r\n\r\n editorui.fullscreen = function (editor, title) {\r\n title = editor.options.labelMap['fullscreen'] || editor.getLang(\"labelMap.fullscreen\") || '';\r\n var ui = new editorui.Button({\r\n className: 'edui-for-fullscreen',\r\n title: title,\r\n theme: editor.options.theme,\r\n onclick: function () {\r\n if (editor.ui) {\r\n editor.ui.setFullScreen(!editor.ui.isFullScreen());\r\n }\r\n this.setChecked(editor.ui.isFullScreen());\r\n }\r\n });\r\n editorui.buttons['fullscreen'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n var state = editor.queryCommandState('fullscreen');\r\n ui.setDisabled(state == -1);\r\n ui.setChecked(editor.ui.isFullScreen());\r\n });\r\n return ui;\r\n };\r\n\r\n // 表情\r\n editorui[\"emotion\"] = function (editor, iframeUrl) {\r\n var cmd = \"emotion\";\r\n var ui = new editorui.MultiMenuPop({\r\n title: editor.options.labelMap[cmd] || editor.getLang(\"labelMap.\" + cmd + \"\") || '',\r\n editor: editor,\r\n className: 'edui-for-' + cmd,\r\n iframeUrl: editor.ui.mapUrl(iframeUrl || (editor.options.iframeUrlMap || {})[cmd] || iframeUrlMap[cmd])\r\n });\r\n editorui.buttons[cmd] = ui;\r\n\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState(cmd) == -1)\r\n });\r\n return ui;\r\n };\r\n\r\n editorui.autotypeset = function (editor) {\r\n var ui = new editorui.AutoTypeSetButton({\r\n editor: editor,\r\n title: editor.options.labelMap['autotypeset'] || editor.getLang(\"labelMap.autotypeset\") || '',\r\n className: 'edui-for-autotypeset',\r\n onbuttonclick: function () {\r\n editor.execCommand('autotypeset')\r\n }\r\n });\r\n editorui.buttons['autotypeset'] = ui;\r\n editor.addListener('selectionchange', function () {\r\n ui.setDisabled(editor.queryCommandState('autotypeset') == -1);\r\n });\r\n return ui;\r\n };\r\n\r\n /* 简单上传插件 */\r\n editorui[\"simpleupload\"] = function (editor) {\r\n var name = 'simpleupload',\r\n ui = new editorui.Button({\r\n className: 'edui-for-' + name,\r\n title: editor.options.labelMap[name] || editor.getLang(\"labelMap.\" + name) || '',\r\n onclick: function () {},\r\n theme: editor.options.theme,\r\n showText: false\r\n });\r\n editorui.buttons[name] = ui;\r\n editor.addListener('ready', function () {\r\n var b = ui.getDom('body'),\r\n iconSpan = b.children[0];\r\n editor.fireEvent('simpleuploadbtnready', iconSpan);\r\n });\r\n editor.addListener('selectionchange', function (type, causeByUi, uiReady) {\r\n var state = editor.queryCommandState(name);\r\n if (state == -1) {\r\n ui.setDisabled(true);\r\n ui.setChecked(false);\r\n } else {\r\n if (!uiReady) {\r\n ui.setDisabled(false);\r\n ui.setChecked(state);\r\n }\r\n }\r\n });\r\n return ui;\r\n };\r\n\r\n })();\r\n\r\n\r\n // adapter/editor.js\r\n ///import core\r\n ///commands 全屏\r\n ///commandsName FullScreen\r\n ///commandsTitle 全屏\r\n (function () {\r\n var utils = baidu.editor.utils,\r\n uiUtils = baidu.editor.ui.uiUtils,\r\n UIBase = baidu.editor.ui.UIBase,\r\n domUtils = baidu.editor.dom.domUtils;\r\n var nodeStack = [];\r\n\r\n function EditorUI(options) {\r\n this.initOptions(options);\r\n this.initEditorUI();\r\n }\r\n\r\n EditorUI.prototype = {\r\n uiName: 'editor',\r\n initEditorUI: function () {\r\n this.editor.ui = this;\r\n this._dialogs = {};\r\n this.initUIBase();\r\n this._initToolbars();\r\n var editor = this.editor,\r\n me = this;\r\n\r\n editor.addListener('ready', function () {\r\n //提供getDialog方法\r\n editor.getDialog = function (name) {\r\n return editor.ui._dialogs[name + \"Dialog\"];\r\n };\r\n domUtils.on(editor.window, 'scroll', function (evt) {\r\n baidu.editor.ui.Popup.postHide(evt);\r\n });\r\n //提供编辑器实时宽高(全屏时宽高不变化)\r\n editor.ui._actualFrameWidth = editor.options.initialFrameWidth;\r\n\r\n UE.browser.ie && UE.browser.version === 6 && editor.container.ownerDocument.execCommand(\"BackgroundImageCache\", false, true);\r\n\r\n //display bottom-bar label based on config\r\n if (editor.options.elementPathEnabled) {\r\n editor.ui.getDom('elementpath').innerHTML = '
    ' + editor.getLang(\"elementPathTip\") + ':
    ';\r\n }\r\n if (editor.options.wordCount) {\r\n function countFn() {\r\n setCount(editor, me);\r\n domUtils.un(editor.document, \"click\", arguments.callee);\r\n }\r\n domUtils.on(editor.document, \"click\", countFn);\r\n editor.ui.getDom('wordcount').innerHTML = editor.getLang(\"wordCountTip\");\r\n }\r\n editor.ui._scale();\r\n if (editor.options.scaleEnabled) {\r\n if (editor.autoHeightEnabled) {\r\n editor.disableAutoHeight();\r\n }\r\n me.enableScale();\r\n } else {\r\n me.disableScale();\r\n }\r\n if (!editor.options.elementPathEnabled && !editor.options.wordCount && !editor.options.scaleEnabled) {\r\n editor.ui.getDom('elementpath').style.display = \"none\";\r\n editor.ui.getDom('wordcount').style.display = \"none\";\r\n editor.ui.getDom('scale').style.display = \"none\";\r\n }\r\n\r\n if (!editor.selection.isFocus()) return;\r\n editor.fireEvent('selectionchange', false, true);\r\n\r\n\r\n });\r\n\r\n editor.addListener('mousedown', function (t, evt) {\r\n var el = evt.target || evt.srcElement;\r\n baidu.editor.ui.Popup.postHide(evt, el);\r\n baidu.editor.ui.ShortCutMenu.postHide(evt);\r\n\r\n });\r\n editor.addListener(\"delcells\", function () {\r\n if (UE.ui['edittip']) {\r\n new UE.ui['edittip'](editor);\r\n }\r\n editor.getDialog('edittip').open();\r\n });\r\n\r\n var pastePop, isPaste = false,\r\n timer;\r\n editor.addListener(\"afterpaste\", function () {\r\n if (editor.queryCommandState('pasteplain'))\r\n return;\r\n if (baidu.editor.ui.PastePicker) {\r\n pastePop = new baidu.editor.ui.Popup({\r\n content: new baidu.editor.ui.PastePicker({\r\n editor: editor\r\n }),\r\n editor: editor,\r\n className: 'edui-wordpastepop'\r\n });\r\n pastePop.render();\r\n }\r\n isPaste = true;\r\n });\r\n\r\n editor.addListener(\"afterinserthtml\", function () {\r\n clearTimeout(timer);\r\n timer = setTimeout(function () {\r\n if (pastePop && (isPaste || editor.ui._isTransfer)) {\r\n if (pastePop.isHidden()) {\r\n var span = domUtils.createElement(editor.document, 'span', {\r\n 'style': \"line-height:0px;\",\r\n 'innerHTML': '\\ufeff'\r\n }),\r\n range = editor.selection.getRange();\r\n range.insertNode(span);\r\n var tmp = getDomNode(span, 'firstChild', 'previousSibling');\r\n tmp && pastePop.showAnchor(tmp.nodeType == 3 ? tmp.parentNode : tmp);\r\n domUtils.remove(span);\r\n } else {\r\n pastePop.show();\r\n }\r\n delete editor.ui._isTransfer;\r\n isPaste = false;\r\n }\r\n }, 200)\r\n });\r\n editor.addListener('contextmenu', function (t, evt) {\r\n baidu.editor.ui.Popup.postHide(evt);\r\n });\r\n editor.addListener('keydown', function (t, evt) {\r\n if (pastePop) pastePop.dispose(evt);\r\n var keyCode = evt.keyCode || evt.which;\r\n if (evt.altKey && keyCode == 90) {\r\n UE.ui.buttons['fullscreen'].onclick();\r\n }\r\n });\r\n editor.addListener('wordcount', function (type) {\r\n setCount(this, me);\r\n });\r\n\r\n function setCount(editor, ui) {\r\n editor.setOpt({\r\n wordCount: true,\r\n maximumWords: 10000,\r\n wordCountMsg: editor.options.wordCountMsg || editor.getLang(\"wordCountMsg\"),\r\n wordOverFlowMsg: editor.options.wordOverFlowMsg || editor.getLang(\"wordOverFlowMsg\")\r\n });\r\n var opt = editor.options,\r\n max = opt.maximumWords,\r\n msg = opt.wordCountMsg,\r\n errMsg = opt.wordOverFlowMsg,\r\n countDom = ui.getDom('wordcount');\r\n if (!opt.wordCount) {\r\n return;\r\n }\r\n var count = editor.getContentLength(true);\r\n if (count > max) {\r\n countDom.innerHTML = errMsg;\r\n editor.fireEvent(\"wordcountoverflow\");\r\n } else {\r\n countDom.innerHTML = msg.replace(\"{#leave}\", max - count).replace(\"{#count}\", count);\r\n }\r\n }\r\n\r\n editor.addListener('selectionchange', function () {\r\n if (editor.options.elementPathEnabled) {\r\n me[(editor.queryCommandState('elementpath') == -1 ? 'dis' : 'en') + 'ableElementPath']()\r\n }\r\n if (editor.options.scaleEnabled) {\r\n me[(editor.queryCommandState('scale') == -1 ? 'dis' : 'en') + 'ableScale']();\r\n\r\n }\r\n });\r\n var popup = new baidu.editor.ui.Popup({\r\n editor: editor,\r\n content: '',\r\n className: 'edui-bubble',\r\n _onEditButtonClick: function () {\r\n this.hide();\r\n editor.ui._dialogs.linkDialog.open();\r\n },\r\n _onImgEditButtonClick: function (name) {\r\n this.hide();\r\n editor.ui._dialogs[name] && editor.ui._dialogs[name].open();\r\n\r\n },\r\n _onImgSetFloat: function (value) {\r\n this.hide();\r\n editor.execCommand(\"imagefloat\", value);\r\n\r\n },\r\n _setIframeAlign: function (value) {\r\n var frame = popup.anchorEl;\r\n var newFrame = frame.cloneNode(true);\r\n switch (value) {\r\n case -2:\r\n newFrame.setAttribute(\"align\", \"\");\r\n break;\r\n case -1:\r\n newFrame.setAttribute(\"align\", \"left\");\r\n break;\r\n case 1:\r\n newFrame.setAttribute(\"align\", \"right\");\r\n break;\r\n }\r\n frame.parentNode.insertBefore(newFrame, frame);\r\n domUtils.remove(frame);\r\n popup.anchorEl = newFrame;\r\n popup.showAnchor(popup.anchorEl);\r\n },\r\n _updateIframe: function () {\r\n var frame = editor._iframe = popup.anchorEl;\r\n if (domUtils.hasClass(frame, 'ueditor_baidumap')) {\r\n editor.selection.getRange().selectNode(frame).select();\r\n editor.ui._dialogs.mapDialog.open();\r\n popup.hide();\r\n } else {\r\n editor.ui._dialogs.insertframeDialog.open();\r\n popup.hide();\r\n }\r\n },\r\n _onRemoveButtonClick: function (cmdName) {\r\n editor.execCommand(cmdName);\r\n this.hide();\r\n },\r\n queryAutoHide: function (el) {\r\n if (el && el.ownerDocument == editor.document) {\r\n if (el.tagName.toLowerCase() == 'img' || domUtils.findParentByTagName(el, 'a', true)) {\r\n return el !== popup.anchorEl;\r\n }\r\n }\r\n return baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, el);\r\n }\r\n });\r\n popup.render();\r\n if (editor.options.imagePopup) {\r\n editor.addListener('mouseover', function (t, evt) {\r\n evt = evt || window.event;\r\n var el = evt.target || evt.srcElement;\r\n if (editor.ui._dialogs.insertframeDialog && /iframe/ig.test(el.tagName)) {\r\n var html = popup.formatHtml(\r\n '' + editor.getLang(\"property\") + ': ' + editor.getLang(\"default\") + '  ' + editor.getLang(\"justifyleft\") + '  ' + editor.getLang(\"justifyright\") + '  ' +\r\n ' ' + editor.getLang(\"modify\") + '');\r\n if (html) {\r\n popup.getDom('content').innerHTML = html;\r\n popup.anchorEl = el;\r\n popup.showAnchor(popup.anchorEl);\r\n } else {\r\n popup.hide();\r\n }\r\n }\r\n });\r\n editor.addListener('selectionchange', function (t, causeByUi) {\r\n if (!causeByUi) return;\r\n var html = '',\r\n str = \"\",\r\n img = editor.selection.getRange().getClosedNode(),\r\n dialogs = editor.ui._dialogs;\r\n if (img && img.tagName == 'IMG') {\r\n var dialogName = 'insertimageDialog';\r\n if (img.className.indexOf(\"edui-faked-video\") != -1 || img.className.indexOf(\"edui-upload-video\") != -1) {\r\n dialogName = \"insertvideoDialog\"\r\n }\r\n if (img.className.indexOf(\"edui-faked-webapp\") != -1) {\r\n dialogName = \"webappDialog\"\r\n }\r\n if (img.src.indexOf(\"http://api.map.baidu.com\") != -1) {\r\n dialogName = \"mapDialog\"\r\n }\r\n if (img.className.indexOf(\"edui-faked-music\") != -1) {\r\n dialogName = \"musicDialog\"\r\n }\r\n if (img.src.indexOf(\"http://maps.google.com/maps/api/staticmap\") != -1) {\r\n dialogName = \"gmapDialog\"\r\n }\r\n if (img.getAttribute(\"anchorname\")) {\r\n dialogName = \"anchorDialog\";\r\n html = popup.formatHtml(\r\n '' + editor.getLang(\"property\") + ': ' + editor.getLang(\"modify\") + '  ' +\r\n '' + editor.getLang(\"delete\") + '');\r\n }\r\n if (img.getAttribute(\"word_img\")) {\r\n //todo 放到dialog去做查询\r\n editor.word_img = [img.getAttribute(\"word_img\")];\r\n dialogName = \"wordimageDialog\"\r\n }\r\n if (domUtils.hasClass(img, 'loadingclass') || domUtils.hasClass(img, 'loaderrorclass')) {\r\n dialogName = \"\";\r\n }\r\n if (!dialogs[dialogName]) {\r\n return;\r\n }\r\n str = '' + editor.getLang(\"property\") + ': ' +\r\n '' + editor.getLang(\"default\") + '  ' +\r\n '' + editor.getLang(\"justifyleft\") + '  ' +\r\n '' + editor.getLang(\"justifyright\") + '  ' +\r\n '' + editor.getLang(\"justifycenter\") + '  ' +\r\n '' + editor.getLang(\"modify\") + '';\r\n\r\n !html && (html = popup.formatHtml(str))\r\n\r\n }\r\n if (editor.ui._dialogs.linkDialog) {\r\n var link = editor.queryCommandValue('link');\r\n var url;\r\n if (link && (url = (link.getAttribute('_href') || link.getAttribute('href', 2)))) {\r\n var txt = url;\r\n if (url.length > 30) {\r\n txt = url.substring(0, 20) + \"...\";\r\n }\r\n if (html) {\r\n html += '
    '\r\n }\r\n html += popup.formatHtml(\r\n '' + editor.getLang(\"anthorMsg\") + ': ' + txt + '' +\r\n ' ' + editor.getLang(\"modify\") + '' +\r\n ' ' + editor.getLang(\"clear\") + '');\r\n popup.showAnchor(link);\r\n }\r\n }\r\n\r\n if (html) {\r\n popup.getDom('content').innerHTML = html;\r\n popup.anchorEl = img || link;\r\n popup.showAnchor(popup.anchorEl);\r\n } else {\r\n popup.hide();\r\n }\r\n });\r\n }\r\n\r\n },\r\n _initToolbars: function () {\r\n var editor = this.editor;\r\n var toolbars = this.toolbars || [];\r\n var toolbarUis = [];\r\n for (var i = 0; i < toolbars.length; i++) {\r\n var toolbar = toolbars[i];\r\n var toolbarUi = new baidu.editor.ui.Toolbar({\r\n theme: editor.options.theme\r\n });\r\n for (var j = 0; j < toolbar.length; j++) {\r\n var toolbarItem = toolbar[j];\r\n var toolbarItemUi = null;\r\n if (typeof toolbarItem == 'string') {\r\n toolbarItem = toolbarItem.toLowerCase();\r\n if (toolbarItem == '|') {\r\n toolbarItem = 'Separator';\r\n }\r\n if (toolbarItem == '||') {\r\n toolbarItem = 'Breakline';\r\n }\r\n if (baidu.editor.ui[toolbarItem]) {\r\n toolbarItemUi = new baidu.editor.ui[toolbarItem](editor);\r\n }\r\n\r\n //fullscreen这里单独处理一下,放到首行去\r\n if (toolbarItem == 'fullscreen') {\r\n if (toolbarUis && toolbarUis[0]) {\r\n toolbarUis[0].items.splice(0, 0, toolbarItemUi);\r\n } else {\r\n toolbarItemUi && toolbarUi.items.splice(0, 0, toolbarItemUi);\r\n }\r\n\r\n continue;\r\n\r\n\r\n }\r\n } else {\r\n toolbarItemUi = toolbarItem;\r\n }\r\n if (toolbarItemUi && toolbarItemUi.id) {\r\n\r\n toolbarUi.add(toolbarItemUi);\r\n }\r\n }\r\n toolbarUis[i] = toolbarUi;\r\n }\r\n\r\n //接受外部定制的UI\r\n\r\n utils.each(UE._customizeUI, function (obj, key) {\r\n var itemUI, index;\r\n if (obj.id && obj.id != editor.key) {\r\n return false;\r\n }\r\n itemUI = obj.execFn.call(editor, editor, key);\r\n if (itemUI) {\r\n index = obj.index;\r\n if (index === undefined) {\r\n index = toolbarUi.items.length;\r\n }\r\n toolbarUi.add(itemUI, index)\r\n }\r\n });\r\n\r\n this.toolbars = toolbarUis;\r\n },\r\n getHtmlTpl: function () {\r\n return '
    ' +\r\n '
    ' +\r\n (this.toolbars.length ?\r\n '
    ' +\r\n this.renderToolbarBoxHtml() +\r\n '
    ' : '') +\r\n '
    ' +\r\n '
    ' + this.editor.getLang(\"clickToUpload\") + '
    ' +\r\n '
    x
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n //modify wdcount by matao\r\n '
    ' +\r\n '' +\r\n '' +\r\n '' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n showWordImageDialog: function () {\r\n this._dialogs['wordimageDialog'].open();\r\n },\r\n renderToolbarBoxHtml: function () {\r\n var buff = [];\r\n for (var i = 0; i < this.toolbars.length; i++) {\r\n buff.push(this.toolbars[i].renderHtml());\r\n }\r\n return buff.join('');\r\n },\r\n setFullScreen: function (fullscreen) {\r\n\r\n var editor = this.editor,\r\n container = editor.container.parentNode.parentNode;\r\n if (this._fullscreen != fullscreen) {\r\n this._fullscreen = fullscreen;\r\n this.editor.fireEvent('beforefullscreenchange', fullscreen);\r\n if (baidu.editor.browser.gecko) {\r\n var bk = editor.selection.getRange().createBookmark();\r\n }\r\n if (fullscreen) {\r\n while (container.tagName != \"BODY\") {\r\n var position = baidu.editor.dom.domUtils.getComputedStyle(container, \"position\");\r\n nodeStack.push(position);\r\n container.style.position = \"static\";\r\n container = container.parentNode;\r\n }\r\n this._bakHtmlOverflow = document.documentElement.style.overflow;\r\n this._bakBodyOverflow = document.body.style.overflow;\r\n this._bakAutoHeight = this.editor.autoHeightEnabled;\r\n this._bakScrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);\r\n\r\n this._bakEditorContaninerWidth = editor.iframe.parentNode.offsetWidth;\r\n if (this._bakAutoHeight) {\r\n //当全屏时不能执行自动长高\r\n editor.autoHeightEnabled = false;\r\n this.editor.disableAutoHeight();\r\n }\r\n\r\n document.documentElement.style.overflow = 'hidden';\r\n //修复,滚动条不收起的问题\r\n\r\n window.scrollTo(0, window.scrollY);\r\n this._bakCssText = this.getDom().style.cssText;\r\n this._bakCssText1 = this.getDom('iframeholder').style.cssText;\r\n editor.iframe.parentNode.style.width = '';\r\n this._updateFullScreen();\r\n } else {\r\n while (container.tagName != \"BODY\") {\r\n container.style.position = nodeStack.shift();\r\n container = container.parentNode;\r\n }\r\n this.getDom().style.cssText = this._bakCssText;\r\n this.getDom('iframeholder').style.cssText = this._bakCssText1;\r\n if (this._bakAutoHeight) {\r\n editor.autoHeightEnabled = true;\r\n this.editor.enableAutoHeight();\r\n }\r\n\r\n document.documentElement.style.overflow = this._bakHtmlOverflow;\r\n document.body.style.overflow = this._bakBodyOverflow;\r\n editor.iframe.parentNode.style.width = this._bakEditorContaninerWidth + 'px';\r\n window.scrollTo(0, this._bakScrollTop);\r\n }\r\n if (browser.gecko && editor.body.contentEditable === 'true') {\r\n var input = document.createElement('input');\r\n document.body.appendChild(input);\r\n editor.body.contentEditable = false;\r\n setTimeout(function () {\r\n input.focus();\r\n setTimeout(function () {\r\n editor.body.contentEditable = true;\r\n editor.fireEvent('fullscreenchanged', fullscreen);\r\n editor.selection.getRange().moveToBookmark(bk).select(true);\r\n baidu.editor.dom.domUtils.remove(input);\r\n fullscreen && window.scroll(0, 0);\r\n }, 0)\r\n }, 0)\r\n }\r\n\r\n if (editor.body.contentEditable === 'true') {\r\n this.editor.fireEvent('fullscreenchanged', fullscreen);\r\n this.triggerLayout();\r\n }\r\n\r\n }\r\n },\r\n _updateFullScreen: function () {\r\n if (this._fullscreen) {\r\n var vpRect = uiUtils.getViewportRect();\r\n this.getDom().style.cssText = 'border:0;position:absolute;left:0;top:' + (this.editor.options.topOffset || 0) + 'px;width:' + vpRect.width + 'px;height:' + vpRect.height + 'px;z-index:' + (this.getDom().style.zIndex * 1 + 100);\r\n uiUtils.setViewportOffset(this.getDom(), {\r\n left: 0,\r\n top: this.editor.options.topOffset || 0\r\n });\r\n this.editor.setHeight(vpRect.height - this.getDom('toolbarbox').offsetHeight - this.getDom('bottombar').offsetHeight - (this.editor.options.topOffset || 0), true);\r\n //不手动调一下,会导致全屏失效\r\n if (browser.gecko) {\r\n try {\r\n window.onresize();\r\n } catch (e) {\r\n\r\n }\r\n\r\n }\r\n }\r\n },\r\n _updateElementPath: function () {\r\n var bottom = this.getDom('elementpath'),\r\n list;\r\n if (this.elementPathEnabled && (list = this.editor.queryCommandValue('elementpath'))) {\r\n\r\n var buff = [];\r\n for (var i = 0, ci; ci = list[i]; i++) {\r\n buff[i] = this.formatHtml('' + ci + '');\r\n }\r\n bottom.innerHTML = '
    ' + this.editor.getLang(\"elementPathTip\") + ': ' + buff.join(' > ') + '
    ';\r\n\r\n } else {\r\n bottom.style.display = 'none'\r\n }\r\n },\r\n disableElementPath: function () {\r\n var bottom = this.getDom('elementpath');\r\n bottom.innerHTML = '';\r\n bottom.style.display = 'none';\r\n this.elementPathEnabled = false;\r\n\r\n },\r\n enableElementPath: function () {\r\n var bottom = this.getDom('elementpath');\r\n bottom.style.display = '';\r\n this.elementPathEnabled = true;\r\n this._updateElementPath();\r\n },\r\n _scale: function () {\r\n var doc = document,\r\n editor = this.editor,\r\n editorHolder = editor.container,\r\n editorDocument = editor.document,\r\n toolbarBox = this.getDom(\"toolbarbox\"),\r\n bottombar = this.getDom(\"bottombar\"),\r\n scale = this.getDom(\"scale\"),\r\n scalelayer = this.getDom(\"scalelayer\");\r\n\r\n var isMouseMove = false,\r\n position = null,\r\n minEditorHeight = 0,\r\n minEditorWidth = editor.options.minFrameWidth,\r\n pageX = 0,\r\n pageY = 0,\r\n scaleWidth = 0,\r\n scaleHeight = 0;\r\n\r\n function down() {\r\n position = domUtils.getXY(editorHolder);\r\n\r\n if (!minEditorHeight) {\r\n minEditorHeight = editor.options.minFrameHeight + toolbarBox.offsetHeight + bottombar.offsetHeight;\r\n }\r\n\r\n scalelayer.style.cssText = \"position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:\" + editorHolder.offsetWidth + \"px;height:\" +\r\n editorHolder.offsetHeight + \"px;z-index:\" + (editor.options.zIndex + 1);\r\n\r\n domUtils.on(doc, \"mousemove\", move);\r\n domUtils.on(editorDocument, \"mouseup\", up);\r\n domUtils.on(doc, \"mouseup\", up);\r\n }\r\n\r\n var me = this;\r\n //by xuheng 全屏时关掉缩放\r\n this.editor.addListener('fullscreenchanged', function (e, fullScreen) {\r\n if (fullScreen) {\r\n me.disableScale();\r\n\r\n } else {\r\n if (me.editor.options.scaleEnabled) {\r\n me.enableScale();\r\n var tmpNode = me.editor.document.createElement('span');\r\n me.editor.body.appendChild(tmpNode);\r\n me.editor.body.style.height = Math.max(domUtils.getXY(tmpNode).y, me.editor.iframe.offsetHeight - 20) + 'px';\r\n domUtils.remove(tmpNode)\r\n }\r\n }\r\n });\r\n\r\n function move(event) {\r\n clearSelection();\r\n var e = event || window.event;\r\n pageX = e.pageX || (doc.documentElement.scrollLeft + e.clientX);\r\n pageY = e.pageY || (doc.documentElement.scrollTop + e.clientY);\r\n scaleWidth = pageX - position.x;\r\n scaleHeight = pageY - position.y;\r\n\r\n if (scaleWidth >= minEditorWidth) {\r\n isMouseMove = true;\r\n scalelayer.style.width = scaleWidth + 'px';\r\n }\r\n if (scaleHeight >= minEditorHeight) {\r\n isMouseMove = true;\r\n scalelayer.style.height = scaleHeight + \"px\";\r\n }\r\n }\r\n\r\n function up() {\r\n if (isMouseMove) {\r\n isMouseMove = false;\r\n editor.ui._actualFrameWidth = scalelayer.offsetWidth - 2;\r\n editorHolder.style.width = editor.ui._actualFrameWidth + 'px';\r\n\r\n editor.setHeight(scalelayer.offsetHeight - bottombar.offsetHeight - toolbarBox.offsetHeight - 2, true);\r\n }\r\n if (scalelayer) {\r\n scalelayer.style.display = \"none\";\r\n }\r\n clearSelection();\r\n domUtils.un(doc, \"mousemove\", move);\r\n domUtils.un(editorDocument, \"mouseup\", up);\r\n domUtils.un(doc, \"mouseup\", up);\r\n }\r\n\r\n function clearSelection() {\r\n if (browser.ie)\r\n doc.selection.clear();\r\n else\r\n window.getSelection().removeAllRanges();\r\n }\r\n\r\n this.enableScale = function () {\r\n //trace:2868\r\n if (editor.queryCommandState(\"source\") == 1) return;\r\n scale.style.display = \"\";\r\n this.scaleEnabled = true;\r\n domUtils.on(scale, \"mousedown\", down);\r\n };\r\n this.disableScale = function () {\r\n scale.style.display = \"none\";\r\n this.scaleEnabled = false;\r\n domUtils.un(scale, \"mousedown\", down);\r\n };\r\n },\r\n isFullScreen: function () {\r\n return this._fullscreen;\r\n },\r\n postRender: function () {\r\n UIBase.prototype.postRender.call(this);\r\n for (var i = 0; i < this.toolbars.length; i++) {\r\n this.toolbars[i].postRender();\r\n }\r\n var me = this;\r\n var timerId,\r\n domUtils = baidu.editor.dom.domUtils,\r\n updateFullScreenTime = function () {\r\n clearTimeout(timerId);\r\n timerId = setTimeout(function () {\r\n me._updateFullScreen();\r\n });\r\n };\r\n domUtils.on(window, 'resize', updateFullScreenTime);\r\n\r\n me.addListener('destroy', function () {\r\n domUtils.un(window, 'resize', updateFullScreenTime);\r\n clearTimeout(timerId);\r\n })\r\n },\r\n showToolbarMsg: function (msg, flag) {\r\n this.getDom('toolbarmsg_label').innerHTML = msg;\r\n this.getDom('toolbarmsg').style.display = '';\r\n //\r\n if (!flag) {\r\n var w = this.getDom('upload_dialog');\r\n w.style.display = 'none';\r\n }\r\n },\r\n hideToolbarMsg: function () {\r\n this.getDom('toolbarmsg').style.display = 'none';\r\n },\r\n mapUrl: function (url) {\r\n return url ? url.replace('~/', this.editor.options.UEDITOR_HOME_URL || '') : ''\r\n },\r\n triggerLayout: function () {\r\n var dom = this.getDom();\r\n if (dom.style.zoom == '1') {\r\n dom.style.zoom = '100%';\r\n } else {\r\n dom.style.zoom = '1';\r\n }\r\n }\r\n };\r\n utils.inherits(EditorUI, baidu.editor.ui.UIBase);\r\n\r\n\r\n var instances = {};\r\n\r\n\r\n UE.ui.Editor = function (options) {\r\n var editor = new UE.Editor(options);\r\n editor.options.editor = editor;\r\n utils.loadFile(document, {\r\n href: editor.options.themePath + editor.options.theme + \"/css/ueditor.css\",\r\n tag: \"link\",\r\n type: \"text/css\",\r\n rel: \"stylesheet\"\r\n });\r\n\r\n var oldRender = editor.render;\r\n editor.render = function (holder) {\r\n if (holder.constructor === String) {\r\n editor.key = holder;\r\n instances[holder] = editor;\r\n }\r\n utils.domReady(function () {\r\n editor.langIsReady ? renderUI() : editor.addListener(\"langReady\", renderUI);\r\n\r\n function renderUI() {\r\n editor.setOpt({\r\n labelMap: editor.options.labelMap || editor.getLang('labelMap')\r\n });\r\n new EditorUI(editor.options);\r\n if (holder) {\r\n if (holder.constructor === String) {\r\n holder = document.getElementById(holder);\r\n }\r\n holder && holder.getAttribute('name') && (editor.options.textarea = holder.getAttribute('name'));\r\n if (holder && /script|textarea/ig.test(holder.tagName)) {\r\n var newDiv = document.createElement('div');\r\n holder.parentNode.insertBefore(newDiv, holder);\r\n var cont = holder.value || holder.innerHTML;\r\n editor.options.initialContent = /^[\\t\\r\\n ]*$/.test(cont) ? editor.options.initialContent :\r\n cont.replace(/>[\\n\\r\\t]+([ ]{4})+/g, '>')\r\n .replace(/[\\n\\r\\t]+([ ]{4})+[\\n\\r\\t]+<');\r\n holder.className && (newDiv.className = holder.className);\r\n holder.style.cssText && (newDiv.style.cssText = holder.style.cssText);\r\n if (/textarea/i.test(holder.tagName)) {\r\n editor.textarea = holder;\r\n editor.textarea.style.display = 'none';\r\n\r\n\r\n } else {\r\n holder.parentNode.removeChild(holder);\r\n\r\n\r\n }\r\n if (holder.id) {\r\n newDiv.id = holder.id;\r\n domUtils.removeAttributes(holder, 'id');\r\n }\r\n holder = newDiv;\r\n holder.innerHTML = '';\r\n }\r\n\r\n }\r\n domUtils.addClass(holder, \"edui-\" + editor.options.theme);\r\n editor.ui.render(holder);\r\n var opt = editor.options;\r\n //给实例添加一个编辑器的容器引用\r\n editor.container = editor.ui.getDom();\r\n var parents = domUtils.findParents(holder, true);\r\n var displays = [];\r\n for (var i = 0, ci; ci = parents[i]; i++) {\r\n displays[i] = ci.style.display;\r\n ci.style.display = 'block'\r\n }\r\n if (opt.initialFrameWidth) {\r\n opt.minFrameWidth = opt.initialFrameWidth;\r\n } else {\r\n opt.minFrameWidth = opt.initialFrameWidth = holder.offsetWidth;\r\n var styleWidth = holder.style.width;\r\n if (/%$/.test(styleWidth)) {\r\n opt.initialFrameWidth = styleWidth;\r\n }\r\n }\r\n if (opt.initialFrameHeight) {\r\n opt.minFrameHeight = opt.initialFrameHeight;\r\n } else {\r\n opt.initialFrameHeight = opt.minFrameHeight = holder.offsetHeight;\r\n }\r\n for (var i = 0, ci; ci = parents[i]; i++) {\r\n ci.style.display = displays[i]\r\n }\r\n //编辑器最外容器设置了高度,会导致,编辑器不占位\r\n //todo 先去掉,没有找到原因\r\n if (holder.style.height) {\r\n holder.style.height = ''\r\n }\r\n editor.container.style.width = opt.initialFrameWidth + (/%$/.test(opt.initialFrameWidth) ? '' : 'px');\r\n editor.container.style.zIndex = opt.zIndex;\r\n oldRender.call(editor, editor.ui.getDom('iframeholder'));\r\n editor.fireEvent(\"afteruiready\");\r\n }\r\n })\r\n };\r\n return editor;\r\n };\r\n\r\n\r\n /**\r\n * @file\r\n * @name UE\r\n * @short UE\r\n * @desc UEditor的顶部命名空间\r\n */\r\n /**\r\n * @name getEditor\r\n * @since 1.2.4+\r\n * @grammar UE.getEditor(id,[opt]) => Editor实例\r\n * @desc 提供一个全局的方法得到编辑器实例\r\n *\r\n * * ''id'' 放置编辑器的容器id, 如果容器下的编辑器已经存在,就直接返回\r\n * * ''opt'' 编辑器的可选参数\r\n * @example\r\n * UE.getEditor('containerId',{onready:function(){//创建一个编辑器实例\r\n * this.setContent('hello')\r\n * }});\r\n * UE.getEditor('containerId'); //返回刚创建的实例\r\n *\r\n */\r\n UE.getEditor = function (id, opt) {\r\n var editor = instances[id];\r\n if (!editor) {\r\n editor = instances[id] = new UE.ui.Editor(opt);\r\n editor.render(id);\r\n }\r\n return editor;\r\n };\r\n\r\n\r\n UE.delEditor = function (id) {\r\n var editor;\r\n if (editor = instances[id]) {\r\n editor.key && editor.destroy();\r\n delete instances[id]\r\n }\r\n };\r\n\r\n UE.registerUI = function (uiName, fn, index, editorId) {\r\n utils.each(uiName.split(/\\s+/), function (name) {\r\n UE._customizeUI[name] = {\r\n id: editorId,\r\n execFn: fn,\r\n index: index\r\n };\r\n })\r\n\r\n }\r\n\r\n })();\r\n\r\n // adapter/message.js\r\n UE.registerUI('message', function (editor) {\r\n\r\n var editorui = baidu.editor.ui;\r\n var Message = editorui.Message;\r\n var holder;\r\n var _messageItems = [];\r\n var me = editor;\r\n\r\n me.addListener('ready', function () {\r\n holder = document.getElementById(me.ui.id + '_message_holder');\r\n updateHolderPos();\r\n setTimeout(function () {\r\n updateHolderPos();\r\n }, 500);\r\n });\r\n\r\n me.addListener('showmessage', function (type, opt) {\r\n opt = utils.isString(opt) ? {\r\n 'content': opt\r\n } : opt;\r\n var message = new Message({\r\n 'timeout': opt.timeout,\r\n 'type': opt.type,\r\n 'content': opt.content,\r\n 'keepshow': opt.keepshow,\r\n 'editor': me\r\n }),\r\n mid = opt.id || ('msg_' + (+new Date()).toString(36));\r\n message.render(holder);\r\n _messageItems[mid] = message;\r\n message.reset(opt);\r\n updateHolderPos();\r\n return mid;\r\n });\r\n\r\n me.addListener('updatemessage', function (type, id, opt) {\r\n opt = utils.isString(opt) ? {\r\n 'content': opt\r\n } : opt;\r\n var message = _messageItems[id];\r\n message.render(holder);\r\n message && message.reset(opt);\r\n });\r\n\r\n me.addListener('hidemessage', function (type, id) {\r\n var message = _messageItems[id];\r\n message && message.hide();\r\n });\r\n\r\n function updateHolderPos() {\r\n var toolbarbox = me.ui.getDom('toolbarbox');\r\n if (toolbarbox) {\r\n holder.style.top = toolbarbox.offsetHeight + 3 + 'px';\r\n }\r\n holder.style.zIndex = Math.max(me.options.zIndex, me.iframe.style.zIndex) + 1;\r\n }\r\n\r\n });\r\n\r\n\r\n // adapter/autosave.js\r\n UE.registerUI('autosave', function (editor) {\r\n var timer = null,\r\n uid = null;\r\n editor.on('afterautosave', function () {\r\n clearTimeout(timer);\r\n\r\n timer = setTimeout(function () {\r\n if (uid) {\r\n editor.trigger('hidemessage', uid);\r\n }\r\n uid = editor.trigger('showmessage', {\r\n content: editor.getLang('autosave.success'),\r\n timeout: 2000\r\n });\r\n\r\n }, 2000)\r\n })\r\n\r\n });\r\n\r\n\r\n\r\n})();\r\n","var map = {\n\t\"./account.js\": \"a1e3\",\n\t\"./activity.js\": \"631c\",\n\t\"./activityApply.js\": \"51ed\",\n\t\"./client.js\": \"3063\",\n\t\"./comment.js\": \"c1b8\",\n\t\"./dataDictionaries.js\": \"c055\",\n\t\"./downloadTemplate.js\": \"cbec\",\n\t\"./inComeStatistics.js\": \"0b60\",\n\t\"./ou.js\": \"fb49\",\n\t\"./paymentCategory.js\": \"9b94\",\n\t\"./payrollAssign.js\": \"d9bb\",\n\t\"./payrollOfPartner.js\": \"a8a9\",\n\t\"./payrollOfSelf.js\": \"b2b3\",\n\t\"./payrollRequisition.js\": \"1c52\",\n\t\"./question.js\": \"0d3a\",\n\t\"./questionTopic.js\": \"015b\",\n\t\"./reimbursement.js\": \"b2b9\",\n\t\"./socialSecurityAssign.js\": \"9ae5\",\n\t\"./tenant.js\": \"2b5d\",\n\t\"./userPointLog.js\": \"62d3\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"f3b5\";","import request from '../../utils/request'\r\n\r\nexport default {\r\n get: data => request({\r\n url: '/api/services/app/OrganizationUnit/GetOrganizationUnit',\r\n method: 'get',\r\n params: data\r\n }),\r\n getOrganizationUnits: data => request({\r\n url: '/api/services/app/OrganizationUnit/GetOrganizationUnits',\r\n method: 'get',\r\n params: data\r\n }),\r\n getApplyList: data => request({\r\n url: '/api/services/app/OrganizationUnit/GetApplyList',\r\n method: 'get',\r\n params: data\r\n }),\r\n getOrganizationUnitUsers: data => request({\r\n url: '/api/services/app/OrganizationUnit/GetOrganizationUnitUsers',\r\n method: 'get',\r\n params: data\r\n }),\r\n updateOrganizationUnit: data => request({\r\n url: '/api/services/app/OrganizationUnit/UpdateOrganizationUnit',\r\n method: 'put',\r\n data: data\r\n }),\r\n createOrganizationUnit: data => request({\r\n url: '/api/services/app/OrganizationUnit/CreateOrganizationUnit',\r\n method: 'post',\r\n data: data\r\n }),\r\n addUsersToOrganizationUnit: data => request({\r\n url: '/api/services/app/OrganizationUnit/AddUsersToOrganizationUnit',\r\n method: 'post',\r\n data: {\r\n userIds: data.userIds,\r\n organizationUnitId: data.organizationUnitId\r\n }\r\n }),\r\n delete: data => {\r\n return request({\r\n url: '/api/services/app/OrganizationUnit/DeleteOrganizationUnit',\r\n method: 'delete',\r\n params: data\r\n })\r\n },\r\n removeUsersFromOU: data => {\r\n return request({\r\n url: '/api/services/app/OrganizationUnit/RemoveUsersFromOrganizationUnit',\r\n method: 'post',\r\n data: data\r\n })\r\n },\r\n // TODO -- START 机构申请 同意/拒绝等待接口\r\n approve: data => {\r\n return request({\r\n url: '/api/services/app/OrganizationUnit/ApproveApply',\r\n method: 'post',\r\n data: data\r\n })\r\n },\r\n refuse: data => {\r\n return request({\r\n url: '/api/services/app/OrganizationUnit/RefuseApply',\r\n method: 'post',\r\n data: data\r\n })\r\n },\r\n // TODO --- END\r\n //\r\n getOrganizationUnitCommentList: data => request({\r\n url: '/api/services/app/OrgComment/GetAll',\r\n method: 'get',\r\n params: data\r\n }),\r\n hideComment: data => request({\r\n url: '/api/services/app/OrgComment/HideComment',\r\n method: 'post',\r\n data: data\r\n }),\r\n showComment: data => request({\r\n url: '/api/services/app/OrgComment/ShowComment',\r\n method: 'post',\r\n data: data\r\n }),\r\n deleteComment: data => {\r\n return request({\r\n url: '/api/services/app/OrgComment/Delete',\r\n method: 'delete',\r\n params: data\r\n })\r\n },\r\n}\r\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=703043ea&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=703043ea&lang=scss&scoped=true&\""],"sourceRoot":""}