@dhccmobile/vue3-lo-form 2.0.5 → 2.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://vue3-lo-form/webpack/universalModuleDefinition","webpack://vue3-lo-form/webpack/bootstrap","webpack://vue3-lo-form/external \"vue-property-decorator\"","webpack://vue3-lo-form/./src/constants/enum/dynamic-option-type.enum.ts","webpack://vue3-lo-form/external \"core-js/modules/es.array.push.js\"","webpack://vue3-lo-form/./src/constants/enum/validate-status.enum.ts","webpack://vue3-lo-form/external \"dayjs/locale/zh-cn\"","webpack://vue3-lo-form/./src/components/form/DvForm.vue?b22c","webpack://vue3-lo-form/external \"ant-design-vue\"","webpack://vue3-lo-form/./src/constants/enum/option-type.enum.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?c258","webpack://vue3-lo-form/./node_modules/vue-loader-v16/dist/exportHelper.js","webpack://vue3-lo-form/external \"dayjs\"","webpack://vue3-lo-form/external \"vue\"","webpack://vue3-lo-form/external \"@ant-design/icons-vue\"","webpack://vue3-lo-form/./src/constants/enum/cache-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-class.enum.ts","webpack://vue3-lo-form/external \"mathjs\"","webpack://vue3-lo-form/external \"ant-design-vue/es/date-picker/locale/zh_CN\"","webpack://vue3-lo-form/external \"localforage\"","webpack://vue3-lo-form/external \"moment\"","webpack://vue3-lo-form/./src/constants/enum/switch.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/builtIn-label.enum.ts","webpack://vue3-lo-form/./src/constants/enum/control-format-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-bus-attr.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/lateral-arrangement.enum.ts","webpack://vue3-lo-form/./src/constants/enum/money-unit.enum.ts","webpack://vue3-lo-form/./src/constants/enum/submitted-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/support-upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/validate-rules.enum.ts","webpack://vue3-lo-form/./src/constants/enum/vertical-arrangement.enum.ts","webpack://vue3-lo-form/external \"tslib\"","webpack://vue3-lo-form/external \"core-js/modules/es.error.cause.js\"","webpack://vue3-lo-form/./src/components/form/StretchText.vue?7438","webpack://vue3-lo-form/./src/services/validate-generator.service.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://vue3-lo-form/./src/components/form/DvForm.vue?8f42","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?b8ec","webpack://vue3-lo-form/./src/constants/config/form-template.config.ts","webpack://vue3-lo-form/./src/constants/encode-assets/svg.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-template-columns.filter.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-column-end.filter.ts","webpack://vue3-lo-form/./src/services/api.service.ts","webpack://vue3-lo-form/./src/constants/config/storage.config.ts","webpack://vue3-lo-form/./src/services/clean-local-forage.service.ts","webpack://vue3-lo-form/./src/services/dict-local-forage.service.ts","webpack://vue3-lo-form/./src/services/form-bean-utils.service.ts","webpack://vue3-lo-form/./src/services/form-local-forage.service.ts","webpack://vue3-lo-form/./src/domain/DesForm.ts","webpack://vue3-lo-form/./src/domain/DesFormLayout.ts","webpack://vue3-lo-form/./src/services/form-tree-node-convert.service.ts","webpack://vue3-lo-form/./src/store/form.store.ts","webpack://vue3-lo-form/./src/store/dict.store.ts","webpack://vue3-lo-form/./src/constants/config/form.config.ts","webpack://vue3-lo-form/./src/services/router.service.ts","webpack://vue3-lo-form/./src/services/form-validate.service.ts","webpack://vue3-lo-form/./src/services/form-tools.service.ts","webpack://vue3-lo-form/./src/filtres/amount-capitalization.filter.ts","webpack://vue3-lo-form/./src/domain/DesFormControl.ts","webpack://vue3-lo-form/./src/domain/AbstractControl.ts","webpack://vue3-lo-form/./src/domain/FormControl.ts","webpack://vue3-lo-form/./src/domain/FormGroup.ts","webpack://vue3-lo-form/./src/filtres/extract-options.filter.ts","webpack://vue3-lo-form/./src/filtres/zoom-multiple.filter.ts","webpack://vue3-lo-form/./src/filtres/switch-enum-convert.filter.ts","webpack://vue3-lo-form/./src/components/form/StretchText.vue?2f7e","webpack://vue3-lo-form/./src/components/form/StretchText.vue","webpack://vue3-lo-form/./src/components/form/StretchText.vue?c6be","webpack://vue3-lo-form/./public/js/pinyin.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?f9e6","webpack://vue3-lo-form/./src/services/date-format.service.ts","webpack://vue3-lo-form/./src/core/FormApi.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue","webpack://vue3-lo-form/./src/components/form/DvForm.vue?7a07","webpack://vue3-lo-form/./src/index.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://vue3-lo-form/./src/constants/enum/zoom-type.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","DynamicOptionType","GeneralDictionary","code","TreeDictionary","ValidateStatus","Success","Warning","Error","Validating","OptionType","Fixed","Dynamic","default","sfc","props","target","__vccOpts","val","CacheType","FORM","TABLE","DICT","FormFieldClass","Layout","icon","Base","Senior","Switch","Disable","Enable","FormFieldType","Input","type","Textarea","InputNumber","Select","Radio","Checkbox","TimePicker","DatePicker","Slider","Rate","Upload","Editor","Cascader","TreeSelect","Custom","Empty","Grid","BuiltLabel","ORDERED_LIST","ControlFormatType","GENERAL","AMOUNT_OF_MONEY","BANK_CARD_NUMBER","CELL_PHONE_NUMBER","LANDLINE_NUMBER","FormBusAttr","SUBMITTED_TYPE","IS_SUPPLEMENT","IS_KEY_ELEMENTS","IS_TRACK","FormType","Pc","Mobile","LateralArrangement","AlignLeft","RightAlignment","Center","BothSidesAreEquallySpaced","AlignBothEnds","MoneyUnit","Yuan","TenThousandYuan","HundredMillionYuan","SubmittedType","EAST","CITIC","TOTAL_ELEMENTS","PBC_CAPITAL_DECLARATION","ENTERPRISE_CREDIT_REFERENCE","OTOHAF_SUBMISSION","EAST_F","PERSONAL_CREDIT","BS_09","BS_10","BS_11","BS_12","BS_13","BS_14","BS_15","BS_16","BS_17","BS_18","BS_19","BS_20","BS_21","BS_22","BS_23","BS_24","BS_25","BS_26","BS_27","BS_28","BS_29","BS_30","SupportUploadType","Arbitrarily","UploadType","Jpeg","Png","Gif","Bmp","Doc","html","Mp3","Mp4","Pdf","Ppt","Xls","Xml","Zip","Wps","ValidateRules","SameValue","hasContent","hasDescribe","MailBox","RegEx","MinTextLength","MaxTextLength","MinValue","MaxValue","SpecifiedValue","SpecifiedDigitsNumber","DateNotEarlierThan","DateNoLaterThan","SpecifiedRangeNumber","PhoneNumber","Required","LineUnique","LetterSpace","AlphanumericUnderline","Alphanumeric","JsMethodVerification","BackEndVerification","LandlineNumber","VerticalArrangement","AlignRight","textAlign","AlignTop","ValidateGeneratorService","fillCheckRule","formControl","controlAttr","verificationRules","length","validates","forEach","item","validate","getBuiltInValidationRules","push","addValidate","ruleType","genSameValue","genMailBox","genRegEx","genMinTextLength","genMaxTextLength","genMinValue","genMaxValue","genSpecifiedValue","genSpecifiedDigitsNumber","genDateNotEarlierThan","genDateNoLaterThan","genSpecifiedRangeNumber","genPhoneNumber","genRequired","controlType","genLineUnique","genLetterSpace","genAlphanumericUnderline","genAlphanumeric","genJsMethodVerification","genBackEndVerification","genLandlineNumber","validateFunc","ruleContent","validateStatus","errorMsg","emreg","test","eval","describe","String","Number","undefined","countDecimals","Math","floor","toString","split","roundNumber","number","decimals","newString","round","numString","lastIndexOf","cutoff","d1","substring","d2","isNaN","roundedNum","decs","toDate","moment","e","indexOf","arr","reg","trim","Array","isArray","msg","func","Function","validateGeneratorService","window","currentScript","document","src","match","render","_ctx","_cache","$props","$setup","$data","$options","_ctx$desForm","_component_dv_form_layout","_resolveComponent","desForm","controls","_openBlock","_createElementBlock","ref","class","_normalizeClass","edit","styleMode","loFormTheme","_Fragment","_renderList","_createBlock","control","customFormats","linkList","onLinkClick","linkClick","index","onChange","$event","onFocus","onBlur","onClick","onAddonBefore","onAddonBeforeHandler","onAddonAfter","onAddonAfterHandler","onAddItem","selectAddItem","_createSlots","_","keys","$slots","propName","fn","_withCtx","slotProps","_renderSlot","content","_createCommentVNode","_typeof","obj","iterator","constructor","_toPrimitive","input","hint","prim","toPrimitive","res","TypeError","_toPropertyKey","arg","_defineProperty","toPropertyKey","configurable","writable","_withScopeId","_pushScopeId","_popScopeId","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_component_a_tooltip","_component_question_circle_outlined","_component_clock_circle_outlined","_component_a_timeline_item","_component_a_timeline","_component_a_popconfirm","_component_search_outlined","_component_a_textarea","_component_a_input_number","_component_a_menu_item","_component_a_menu","_component_down_outlined","_component_a_button","_component_a_dropdown","_component_a_popover","_component_v_nodes","_component_a_divider","_component_plus_outlined","_component_a_select_option","_component_a_select","_component_a_radio","_component_a_radio_group","_component_a_checkbox","_component_a_col","_component_a_row","_component_a_checkbox_group","_component_a_switch","_component_a_time_picker","_component_a_month_picker","_component_a_date_picker","_component_a_slider","_component_a_cascader","_component_a_tree_select","_component_a_rate","_component_upload_outlined","_component_a_upload","_component_stretch_text","_component_a_form_item","_component_a_form","formFieldClass","isHideControl","formFieldType","layoutName","layout","style","_normalizeStyle","emptyLayoutContainerStyle","subControls","parentControl","onFixFormLayout","onHideControl","scopedPropName","generalLayoutContainerStyle","width","divWidthCompatibleToIe","_createVNode","labelCol","labelSpanWidth","wrapperCol","controlSpanMaxWidth","controlSpanWidth","colon","labelAlign","required","validateResult","help","provideInjectData","boundProperty","isMobileBrowser","label","isHideTitle","isBoldTitle","color","titleColor","_toDisplayString","formFieldDescribe","submittedType","placement","title","submittedTypeStr","overlayClassName","submittedSvg","tips","history","dot","time","before","_createTextVNode","after","author","historySvg","_resolveDynamicComponent","inputShape","bindingPrefix","builtInFrontLabel","bindingSuffix","builtInPostLabel","placeholder","disabled","isNotEdit","autoCompleteOptions","onInput","rows","textareaRows","showCount","maxCharacterCount","maxlength","zoomType","automatic","moneyUnits","moneyUnitsIndentScale","tabindex","trigger","getPopupContainer","triggerNode","parentNode","body","step","min","minValue","max","maxValue","formatter","numberFormatter","parser","numberParser","precision","decimalPlaces","onInputNumberFocus","onInputNumberBlur","unit","overlay","handleMoneyUnitMenuClick","defaultMoneyUnit","numberPopoverVisible","amountCapitalization","zoomMultiple","isMultipleChoice","dropdownClassName","hiddenDropdown","showArrow","filterOption","dropdownRender","menuNode","menu","vnodes","canAddEntry","onMousedown","preventDefault","options","checkboxStyle","checked","onOpeningText","whenClosedText","locale","is12Hours","useMonthPicker","format","dateFormat","isShowHoliday","showTime","showPickerTime","dateRender","current","date","isRest","isWeekday","isRadingDay","renderExtraFooter","changeOnSelect","cascaderFilter","cascaderOptions","treeNodeFilterProp","maxHeight","overflow","treeSelectOptions","treeDefaultExpandAll","isTreeOpen","accept","uploadType","multiple","onRemove","handleRemove","beforeUpload","handleUploadChange","customFieldName","formatData","textFold","fieldKey","href","formTemplate","formId","appId","domainClassId","objectId","formType","formName","formAlias","formDescribe","useState","desDomainClass","desFormLayouts","layoutId","parentLayoutId","layoutType","gridSpace","gridColumnConfig","gridLateralArrangement","gridVerticalArrangement","layoutOrder","labelSpan","controlSpan","subDesFormLayout","desFormControls","desBusObject","SUBMITTED_SVG_XML","HISTORY_SVG_XML","FORM_ERROR_MODAL_SVG_XML","DROP_DOWN_LIST_SVG_XML","transform","configs","sort","a","b","order","join","generateGridTemplateColumns","generateGridColumnEnd","ApiService","createBasicHeaders","Accept","createAuthHeaders","accessToken","jti","Authorization","fetch","path","query","method","header","urlQueryConvert","headers","then","response","status","statusText","url","json","error","message","connectiveSymbol","idx","apiService","NAME","STORE_NAME","DICT_STORE_NAME","CleanLocalForageService","$app","config","globalProperties","$qlForm","init","formConfig","driver","sourceLocalForage","version","storeName","description","localForage","setItem","getItem","dropInstance","cleanLocalForageService","DictLocalForageService","dictLocalForageService","FormBeanUtilsService","copy","JSON","parse","stringify","str","formBeanUtilsService","FormLocalForageService","formLocalForageService","DesForm","formGroup","DesFormLayout","FormTreeNodeConvertService","arrayConvertToTreeNode","data","nodeContrast","parentId","nds","filter","children","id","treeNodeConvertToNzTreeNode","nzNodeContrast","isDisabledLeaf","nodes","node","isLeaf","selected","selectable","disableCheckbox","expanded","arrayConvertToNzTreeNode","treeNode","treeNodeConvertToCascaderOption","nzCascaderOptionContrast","loading","parent","nzTreeNodeConvertToMap","mapNodeOptions","arrayConvertToCascaderOption","treeNodeConvertToArray","childName","formTreeNodeConvertService","FormStore","setForms","FORMS","getForms","setVersion","VERSION","getVersion","formStore","DictStore","setDicts","nzTreeNodeOptions","DICTS","getDicts","setTreeDicts","TREE_DICTS","getTreeDicts","setMapDicts","MAP_DICTS","getMapDicts","setMapTreeDicts","MAP_TREE_DICTS","getMapTreeDicts","dictStore","DEFAULT_FORM_FILE_NAME","DEFAULT_DICT_FILE_NAME","DEFAULT_DICT_URL","RouterService","subapp","pushState","getPathFromUrl","getParamsFromUrl","parameter","urlParameterToParams","params","array","kv","decodeURIComponent","getParameterOfUrl","mark","routerService","FormValidateService","validateTips","formApis","scrollView","actualFormApis","allError","errMessage","formApi","errors","validateReport","concat","err","console","log","Modal","confirm","h","innerHTML","onOk","showErrorModal","okText","cancelText","_formApis$","_allError$","errorEl","getControlEl","getElementById","scrollTo","top","offsetTop","behavior","running","event","scrollTop","documentElement","calculationError","removeEventListener","showErrInput","addEventListener","el","count","interval","setInterval","opacity","clearInterval","formValidateService","FormToolsService","setSupHoliday","bool","supHoliday","setFormDisabledColor","setProperty","checkFirstLoadAndInitDesign","IS_FIRST_LOADED","Promise","resolve","all","initDesign","initDict","selectHolidays","designRes","dictRes","contextPath","localStorage","traddayList","weekdayList","workdayList","LOAD_SUCCESS","forms","formVersion","loadMode","desForms","loadDesign","cacheType","desCacheVersion","cacheVersionNumber","formUrl","storageAddress","resEx","LOAD_FAIL","urls","mergeUrlByType","mergeUrlByCacheId","downloadUrl","appIds","resp","_resp$data","_query$appIds","address","cacheVersionMap","_item$desCacheVersion","_query$appIds2","_resp$data2","_query$appIds3","_item$desCacheVersion2","cacheVersionId","mergeFetchDesign","newDesForms","newDesForm","formatDesForm","onlySimpleLoadConfig","createFileDownloadAuthorizationHeader","fetches","dicts","treeDicts","mapDicts","mapTreeDicts","dictVersion","dictUrl","sysDictDetailOptions","sysDictTreeDetailOptions","mapSysDictDetailOptions","mapSysDictTreeDetailOptions","loadDict","url1","dictRestLoadOnlyBody","dictRestLoadMode","toLocaleUpperCase","dictRestLoadBody","dictRestLoadHeaders","distUrl","mergeFetchDict","sysDictInfos","dictionaryFormatCollection","inidDictOptions","fetchDicts","dictInfos","newDictInfos","empObj","filterDist","dictId","sysDictInfo","dictCd","dictNm","dictTp","comDictKeyValues","it","dictDetailsContrast","nzDictDetailsContrastContrast","treeDictKeyValues","suprDicPk","dictTreeDetailsContrast","nzDictTreeDetailsContrastContrast","mapTreeNodeOptions","sourceDesForm","recursionFormatForm","sortControls","formFieldId","desFormControl","values","find","active","isPasswordBox","enableAutoComplete","isFixedRowHeight","thousandthPercentileFormat","isShowCapitalization","isLineFeedDisplay","optionConfig","generalDictionaryOptions","treeShapeOptions","isSupportMultiple","customUploadType","isSearchable","isClearButton","desFormLayout","layoutControl","controlA","controlB","x","y","tableFieldOrder","loadResource","simple","responseType","formToolsService","currencyDigits","MAXIMUM_NUMBER","CN_ZERO","CN_ONE","CN_TWO","CN_THREE","CN_FOUR","CN_FIVE","CN_SIX","CN_SEVEN","CN_EIGHT","CN_NINE","CN_TEN","CN_HUNDRED","CN_THOUSAND","CN_TEN_THOUSAND","CN_HUNDRED_MILLION","CN_SYMBOL","CN_DOLLAR","DROP","CN_TEN_CENT","CN_CENT","CN_INTEGER","integral","decimal","outputCharacters","zeroCount","quotient","modulus","parts","digits","radices","bigRadices","prefix","substr","replace","divisor","num","DesFormControl","extendBoundPropertyOne","extendBoundPropertyTwo","fieldDefaultValue","titleWidth","controlWidth","initRowHeight","formatType","moneyUnit","defineOptionalUnits","defineOptionalUnitsDefault","isOptionType","dynamicOptionType","generalDictionary","treeShape","disableNonLeafNodes","timeFormat","maxUploadNumber","limitSize","supportUploadType","extendUploadType","attachmentExtendProperties","onOpeningValue","whenClosedValue","busAttr","itemWidth","AbstractControl","FormControl","formState","super","setValue","findIndex","removeValidate","splice","getValidate","result","text","textNoticeCallback","FormGroup","addControl","removeControl","transformReverse","extractOptions","args","storageOptions","encode","_getCurrentInstance","proxy","getCurrentInstance","mathjs","$mathjs","ZoomType","enlarge","evaluate","notation","narrow","switchEnumFiled","attribute","defaultVal","switchEnum","switchEnumConvert","unfold","ifOver","StretchText","Vue","mounted","onContentHandle","$emit","spanBox","offsetHeight","textBox","__decorate","Prop","Ref","Watch","Options","__exports__","char_dict","full_dict","polyphone","checkPolyphone","charcase","pinYin","getFullChars","RegExp","len","ch","unicode","charCodeAt","_getFullChar","toLocaleLowerCase","getCamelChars","chars","charAt","_getChar","_getResult","_capitalize","first","toUpperCase","spare","strlen","j","swap1","slice","swap2","k","DvFormLayout","onDefaultMoneyUnitHandler","newVal","onValidationFeedbackHandle","onFormValidateStateResetMarkHandle","$nextTick","initFormControlData","_this$control","_this$parentControl","verificationRule","controlFormatType","replaceUnit","parentControlAttr","toLowerCase","items","cascaderRecursion","treeSelectRecursion","hasFeedback","metaRefresh","context","countDecimalPlaces","option","dayjs","cascaderContextRecursion","treeSelectContextRecursion","customFormat","display","repeat","hasDot","includes","intPart","decimalPart","pureNumStr","parseFloat","factor","pow","rounded","toFixed","roundedDecimal","inputValue","some","currentIndex","cascaderOption","currentText","subText","subTitle","widthCompatibleMode","ActiveXObject","isIe","configIndex","proportion","total","ratio","_this$control2","gridTemplateColumns","_this$parentControl2","_this$control3","gridColumnEnd","mobileRegex","tabletRegex","userAgent","navigator","isMobile","isTablet","Date","attrSubmittedType","map","submittedTypeCheckedNode","clearNoNum","validateNumBeyondLimit","pureNumber","file","newFileList","fileList","_event$formControl","calDate","DateTime","$d","year","getFullYear","month","getMonth","strDate","getDate","Inject","immediate","filters","components","PlusOutlined","Form","FormItem","AutoComplete","Option","displayName","OptGroup","RadioGroup","CheckboxGroup","Tooltip","InputPassword","Popover","Popconfirm","Timeline","TimelineItem","Dropdown","Menu","Item","Button","Divider","MonthPicker","Row","Col","VNodes","attrs","QuestionCircleOutlined","ClockCircleOutlined","DownOutlined","UploadOutlined","SearchOutlined","DateFormatService","formatDateTime","dayMap","day","getDay","week","hours","getHours","minutes","getMinutes","seconds","getSeconds","dateSizeCompare","startTime","endTime","getTime","Attribute","FormApi","getUuid","dvForm","DvForm","apiMetaRefresh","generateData","oldVal","contrast","jsonToFormData","setFormData","srcData","isDefault","setFormDataInner","setTimeout","getControl","showError","subControl","getValue","decodeData","setControlValue","resetValue","getText","getOptions","setOptions","setControlOptions","getAttribute","setAttribute","setControlAttribute","validateName","removeAllValidates","getValidates","setRequiredValidate","setValidate","isCover","setValidateInner","validateReports","refreshFeedback","refreshCheckFeedbackFlag","refreshValidate","resetFormValidateState","formValidateStateResetMark","setFormatDisplayAndOutput","refreshAndUpdateData","onRefreshArgumentsHandler","els","getElementsByClassName","checkHasUploadControl","abstractControl","judge","formData","FormData","File","append","setFieldChangeHistory","fieldChangeHistory","propertyName","aTime","bTime","hideLayout","nowDateStr","FieldDefaultValue","IsOptionType","OptionConfig","isFinal","output","hexDigits","random","uuid","objectA","objectB","fieldInfoArr","changeLog","handlerFlag","getChangedInfo","oldValue","newValue","fieldInfo","field_cd","field_nm","field_key","newDict","translateDictionaries","field_value","is_change","field_old_key","oldDict","field_old_value","oldName","newName","flag","getFormSubmittedType","form","strArr","list","subControlsList","submittedTypeList","IsHideControl","handleSubmittedData","codeArr","submittedData","getSubmittedType","DyForm","onPropFormValidateStateResetHandler","_provided","onPropHandler","win","themes","formTheme","$loFormTheme","_this$formLimits","formLimitObj","formLimits","created","initDesForm","onFormIdChanged","onSrcDesFormChanged","isReset","model","analysisBindingObjects","_this$formApi","generateFormGroup","initControlForm","generateFormApi","fixFormLayout","formView","$refs","cons","offsetLeft","clientWidth","con1","con2","models","objectExtraction","objectMerge","findDictOptions","propertys","lastMd","md","defaultValue","securityValue","subTtems","subValue","modelX","modelY","group","subFormGroup","_control$controlAttr","findFormControlByProperty","formLimit","loFormLimit","_controlAttr$verifica","isHide","requiredIndex","isMustFill","currentFormGroup","formObject","Boolean","Provide","install","app","installed","component","dictUrls","$formToolsService","mathjsDependencies","formatDependencies","subtractDependencies","multiplyDependencies","evaluateDependencies","addDependencies","divideDependencies","VueLoForm"],"mappings":"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AS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MA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","file":"vue3-lo-form.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue3-lo-form\"] = factory();\n\telse\n\t\troot[\"vue3-lo-form\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","module.exports = require(\"vue-property-decorator\");","// 动态字典类型\r\nconst DynamicOptionType = {\r\n GeneralDictionary: { code: \"1\", name: \"常规\" },\r\n TreeDictionary: { code: \"2\", name: \"树形\" },\r\n};\r\nexport { DynamicOptionType };\r\n","module.exports = require(\"core-js/modules/es.array.push.js\");","// 校验状态\r\nconst ValidateStatus: any = {\r\n Success: { code: \"success\", name: \"通过\" },\r\n Warning: { code: \"warning\", name: \"警告\" },\r\n Error: { code: \"error\", name: \"未通过\" },\r\n Validating: { code: \"validating\", name: \"校验中\" },\r\n};\r\nexport { ValidateStatus };\r\n","module.exports = require(\"dayjs/locale/zh-cn\");","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvForm.vue?vue&type=style&index=0&id=572952fa&lang=scss&scoped=true\"","module.exports = require(\"ant-design-vue\");","const OptionType = {\r\n Fixed: { code: \"1\", name: \"固定\" },\r\n Dynamic: { code: \"2\", name: \"动态\" },\r\n};\r\nexport { OptionType };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvFormLayout.vue?vue&type=style&index=0&id=2f021ee3&lang=scss&scoped=true\"","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = require(\"dayjs\");","module.exports = require(\"vue\");","module.exports = require(\"@ant-design/icons-vue\");","// 数据缓存类型\r\nconst CacheType = {\r\n FORM: { code: \"1\", name: \"表格\" },\r\n TABLE: { code: \"2\", name: \"表单\" },\r\n DICT: { code: \"3\", name: \"字典\" },\r\n};\r\nexport { CacheType };\r\n","// 字段分类\r\nconst FormFieldClass = {\r\n Layout: { code: \"1\", name: \"布局\", icon: \"profile\" },\r\n Base: { code: \"2\", name: \"基础字段\", icon: \"profile\" },\r\n Senior: { code: \"3\", name: \"高级字段\", icon: \"profile\" },\r\n};\r\nexport { FormFieldClass };\r\n","module.exports = require(\"mathjs\");","module.exports = require(\"ant-design-vue/es/date-picker/locale/zh_CN\");","module.exports = require(\"localforage\");","module.exports = require(\"moment\");","const Switch = {\r\n Disable: { code: \"0\", name: \"禁用\" },\r\n Enable: { code: \"1\", name: \"启用\" },\r\n};\r\nexport { Switch };\r\n","import { FormFieldClass } from \"./form-field-class.enum\";\r\n// 控件类型\r\nconst FormFieldType = {\r\n Input: { code: \"1\", name: \"输入框\", icon: \"icondanhangwenben\", type: FormFieldClass.Base.code },\r\n Textarea: { code: \"2\", name: \"多行文本\", icon: \"iconduohangwenben\", type: FormFieldClass.Base.code },\r\n InputNumber: { code: \"3\", name: \"数字输入框\", icon: \"iconjishuqi\", type: FormFieldClass.Base.code },\r\n Select: { code: \"4\", name: \"选择器\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Base.code },\r\n Radio: { code: \"5\", name: \"单选框\", icon: \"icondanxuankuangzu\", type: FormFieldClass.Base.code },\r\n Checkbox: { code: \"6\", name: \"多选框\", icon: \"iconduoxuankuangzu\", type: FormFieldClass.Base.code },\r\n Switch: { code: \"7\", name: \"开关\", icon: \"iconkaiguan\", type: FormFieldClass.Base.code },\r\n TimePicker: { code: \"8\", name: \"时间选择框\", icon: \"iconshijianxuanzeqi\", type: FormFieldClass.Base.code },\r\n DatePicker: { code: \"9\", name: \"日期选择框\", icon: \"iconriqixuanzeqi\", type: FormFieldClass.Base.code },\r\n Slider: { code: \"10\", name: \"滑动输入条\", icon: \"iconhuakuai\", type: FormFieldClass.Base.code },\r\n Rate: { code: \"11\", name: \"评分\", icon: \"iconpingfen\", type: FormFieldClass.Base.code },\r\n\r\n Upload: { code: \"50\", name: \"上传\", icon: \"iconwenjian\", type: FormFieldClass.Senior.code },\r\n Editor: { code: \"51\", name: \"编辑器\", icon: \"iconbianjiqi\", type: FormFieldClass.Senior.code },\r\n Cascader: { code: \"52\", name: \"级联选择\", icon: \"iconjilianxuanzeqi\", type: FormFieldClass.Senior.code },\r\n TreeSelect: { code: \"53\", name: \"树选择\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Senior.code },\r\n Custom: { code: \"54\", name: \"自定义组件\", icon: \"iconzidingyizujian\", type: FormFieldClass.Senior.code },\r\n\r\n Empty: { code: \"101\", name: \"根布局\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n Grid: { code: \"102\", name: \"栅格\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n};\r\nexport { FormFieldType };\r\n","// 内置前/后置标签\r\nconst BuiltLabel = {\r\n ORDERED_LIST: { code: \"1\", name: \"ordered-list\" },\r\n};\r\nexport { BuiltLabel };\r\n","// 控件格式化类型\r\nconst ControlFormatType = {\r\n GENERAL: { code: \"1\", name: \"常规数字\" },\r\n AMOUNT_OF_MONEY: { code: \"2\", name: \"金额\" },\r\n BANK_CARD_NUMBER: { code: \"3\", name: \"银行卡号\" },\r\n CELL_PHONE_NUMBER: { code: \"4\", name: \"手机号\" },\r\n LANDLINE_NUMBER: { code: \"5\", name: \"座机号\" },\r\n};\r\nexport { ControlFormatType };\r\n","// 动态字典类型\r\nconst FormBusAttr = {\r\n SUBMITTED_TYPE: { code: \"submittedType\", name: \"报送类型\" },\r\n IS_SUPPLEMENT: { code: \"isSupplement\", name: \"是否补录\" },\r\n IS_KEY_ELEMENTS: { code: \"isKeyElements\", name: \"是否关键要素\" },\r\n IS_TRACK: { code: \"isTrack\", name: \"是否追踪\" },\r\n};\r\nexport { FormBusAttr };\r\n","const FormType = {\r\n Pc: { code: \"1\", name: \"PC端\" },\r\n Mobile: { code: \"2\", name: \"移动端\" },\r\n};\r\nexport { FormType };\r\n","// 横向排列\r\nconst LateralArrangement = {\r\n AlignLeft: { code: \"1\", name: \"左对齐\" },\r\n RightAlignment: { code: \"2\", name: \"右对齐\" },\r\n Center: { code: \"3\", name: \"居中\" },\r\n BothSidesAreEquallySpaced: { code: \"4\", name: \"两侧间隔相等\" },\r\n AlignBothEnds: { code: \"5\", name: \"两端对齐\" },\r\n};\r\nexport { LateralArrangement };\r\n","const MoneyUnit = {\r\n Yuan: { code: \"1\", name: \"元\" },\r\n TenThousandYuan: { code: \"2\", name: \"万元\" },\r\n HundredMillionYuan: { code: \"3\", name: \"亿元\" },\r\n};\r\nexport { MoneyUnit };\r\n","// 报送信息类型\r\nconst SubmittedType = {\r\n EAST: { code: \"1\", name: \"EAST\" },\r\n CITIC: { code: \"2\", name: \"中信登\" },\r\n TOTAL_ELEMENTS: { code: \"3\", name: \"全要素\" },\r\n PBC_CAPITAL_DECLARATION: { code: \"4\", name: \"人行资金申报\" },\r\n ENTERPRISE_CREDIT_REFERENCE: { code: \"5\", name: \"企业征信\" },\r\n OTOHAF_SUBMISSION: { code: \"6\", name: \"1104报送\" },\r\n EAST_F: { code: \"7\", name: \"EAST4.0\" },\r\n PERSONAL_CREDIT: { code: \"8\", name: \"个人征信\" },\r\n BS_09: { code: \"9\", name: \"非现场监管报表\" },\r\n BS_10: { code: \"10\", name: \"银监其他\" },\r\n BS_11: { code: \"11\", name: \"人行资管产品统计逐产品采集\" },\r\n BS_12: { code: \"12\", name: \"人行其他\" },\r\n BS_13: { code: \"13\", name: \"其他报表\" },\r\n BS_14: { code: \"14\", name: \"反洗钱\" },\r\n BS_15: { code: \"15\", name: \"关联交易\" },\r\n BS_16: { code: \"16\", name: \"事前报告\" },\r\n BS_17: { code: \"17\", name: \"银监风险项目要素表\" },\r\n BS_18: { code: \"18\", name: \"金控重点监测项目数据报送\" },\r\n BS_19: { code: \"19\", name: \"中央企业金融风险事项统计表\" },\r\n BS_20: { code: \"20\", name: \"主动管理项目清单\" },\r\n BS_21: { code: \"21\", name: \"风险项目要素表(重大预警及关注不良)\" },\r\n BS_22: { code: \"22\", name: \"人行金融基础数据报送\" },\r\n BS_23: { code: \"23\", name: \"人行利率报备\" },\r\n BS_24: { code: \"24\", name: \"EAST5.0\" },\r\n BS_25: { code: \"25\", name: \"新中信登\" },\r\n BS_26: { code: \"26\", name: \"集团司库资金系统投融资数据报送\" },\r\n BS_27: { code: \"27\", name: \"金控客户协同\" },\r\n BS_28: { code: \"28\", name: \"金控大额交易\" },\r\n BS_29: { code: \"29\", name: \"五篇大文章\" },\r\n BS_30: { code: \"30\", name: \"金控重大风险预警及关注与不良项目情况表\" },\r\n};\r\nexport { SubmittedType };\r\n","const SupportUploadType = {\r\n Arbitrarily: { code: \"1\", name: \"任意类型\" },\r\n Custom: { code: \"2\", name: \"自定义类型\" },\r\n};\r\nexport { SupportUploadType };\r\n","const UploadType = {\r\n Jpeg: { code: \"image/jpeg\", name: \"jpeg/jpg/jpe\" },\r\n Png: { code: \"image/png\", name: \"png\" },\r\n Gif: { code: \"image/gif\", name: \"gif\" },\r\n Bmp: { code: \"image/bmp\", name: \"bmp\" },\r\n Doc: { code: \"application/msword\", name: \"doc\" },\r\n html: { code: \"text/html\", name: \"html\" },\r\n Mp3: { code: \"audio/mpeg\", name: \"mp3\" },\r\n Mp4: { code: \"audio/mp4\", name: \"mp4\" },\r\n Pdf: { code: \"application/pdf\", name: \"pdf\" },\r\n Ppt: { code: \"application/vnd.ms-powerpoint\", name: \"ppt\" },\r\n Xls: { code: \"application/vnd.ms-excel\", name: \"xls\" },\r\n Xml: { code: \"application/xml\", name: \"xml\" },\r\n Zip: { code: \"aplication/zip\", name: \"zip\" },\r\n Wps: { code: \"application/vnd.ms-works\", name: \"wps\" },\r\n};\r\nexport { UploadType };\r\n","// 校验规则\r\nconst ValidateRules: any = {\r\n SameValue: { code: \"1\", name: \"相同的值\", hasContent: true, hasDescribe: false },\r\n MailBox: { code: \"2\", name: \"电子邮箱\", hasContent: false, hasDescribe: false },\r\n RegEx: { code: \"3\", name: \"正则表达式\", hasContent: true, hasDescribe: true },\r\n MinTextLength: { code: \"4\", name: \"最小文本长度\", hasContent: true, hasDescribe: false },\r\n MaxTextLength: { code: \"5\", name: \"最大文本长度\", hasContent: true, hasDescribe: false },\r\n MinValue: { code: \"6\", name: \"最小数值\", hasContent: true, hasDescribe: false },\r\n MaxValue: { code: \"7\", name: \"最大数值\", hasContent: true, hasDescribe: false },\r\n SpecifiedValue: { code: \"8\", name: \"指定的值\", hasContent: true, hasDescribe: false },\r\n SpecifiedDigitsNumber: { code: \"9\", name: \"指定位数的数字\", hasContent: true, hasDescribe: false },\r\n DateNotEarlierThan: { code: \"10\", name: \"日期不早于\", hasContent: true, hasDescribe: false },\r\n DateNoLaterThan: { code: \"11\", name: \"日期不晚于\", hasContent: true, hasDescribe: false },\r\n SpecifiedRangeNumber: { code: \"12\", name: \"指定范围的数字(包含最小/大值)\", hasContent: true, hasDescribe: false },\r\n PhoneNumber: { code: \"13\", name: \"手机号码\", hasContent: false, hasDescribe: false },\r\n Required: { code: \"14\", name: \"必填\", hasContent: false, hasDescribe: false },\r\n LineUnique: { code: \"15\", name: \"行唯一\", hasContent: false, hasDescribe: false },\r\n LetterSpace: { code: \"16\", name: \"字母空格\", hasContent: false, hasDescribe: false },\r\n AlphanumericUnderline: { code: \"17\", name: \"字母数字横线下划线\", hasContent: false, hasDescribe: false },\r\n Alphanumeric: { code: \"18\", name: \"字母数字\", hasContent: false, hasDescribe: false },\r\n JsMethodVerification: { code: \"19\", name: \"JS方法校验\", hasContent: true, hasDescribe: true },\r\n BackEndVerification: { code: \"20\", name: \"后端校验\", hasContent: false, hasDescribe: false },\r\n LandlineNumber: { code: \"21\", name: \"座机校验\", hasContent: false, hasDescribe: false },\r\n};\r\nexport { ValidateRules };\r\n","// 标签对齐方式\r\nconst VerticalArrangement = {\r\n AlignRight: { code: \"1\", name: \"右对齐\", value: \"horizontal\", textAlign: \"right\" },\r\n AlignTop: { code: \"2\", name: \"顶部对齐\", value: \"vertical\", textAlign: \"left\" },\r\n AlignLeft: { code: \"3\", name: \"左对齐\", value: \"horizontal\", textAlign: \"left\" },\r\n};\r\nexport { VerticalArrangement };\r\n","module.exports = require(\"tslib\");","module.exports = require(\"core-js/modules/es.error.cause.js\");","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"","import { DesFormControl, FormControl, Validate } from \"../domain\";\r\nimport { FormFieldType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\nimport moment from \"moment\";\r\n\r\ninterface Rule {\r\n ruleType?: any;\r\n ruleContent?: any;\r\n describe?: any;\r\n}\r\n\r\nclass ValidateGeneratorService {\r\n /**\r\n * @description: 填充校验规则\r\n * @author ChenRui\r\n * @date 2021/1/27 15:07\r\n */\r\n fillCheckRule(formControl: FormControl, controlAttr: DesFormControl): void {\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const validates: Validate[] = [];\r\n controlAttr.verificationRules.forEach((item: Rule) => {\r\n const validate: Validate | undefined = this.getBuiltInValidationRules(item, controlAttr);\r\n if (validate) {\r\n validates.push(validate);\r\n }\r\n });\r\n formControl.addValidate(validates);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验规则\r\n * @author ChenRui\r\n * @date 2021/7/19 17:55\r\n */\r\n getBuiltInValidationRules(item: Rule, controlAttr: DesFormControl): Validate | undefined {\r\n let validate: Validate | undefined;\r\n switch (item.ruleType) {\r\n case ValidateRules.SameValue.code:\r\n validate = this.genSameValue(item);\r\n break;\r\n case ValidateRules.MailBox.code:\r\n validate = this.genMailBox(item);\r\n break;\r\n case ValidateRules.RegEx.code:\r\n validate = this.genRegEx(item);\r\n break;\r\n case ValidateRules.MinTextLength.code:\r\n validate = this.genMinTextLength(item);\r\n break;\r\n case ValidateRules.MaxTextLength.code:\r\n validate = this.genMaxTextLength(item);\r\n break;\r\n case ValidateRules.MinValue.code:\r\n validate = this.genMinValue(item);\r\n break;\r\n case ValidateRules.MaxValue.code:\r\n validate = this.genMaxValue(item);\r\n break;\r\n case ValidateRules.SpecifiedValue.code:\r\n validate = this.genSpecifiedValue(item);\r\n break;\r\n case ValidateRules.SpecifiedDigitsNumber.code:\r\n validate = this.genSpecifiedDigitsNumber(item);\r\n break;\r\n case ValidateRules.DateNotEarlierThan.code:\r\n validate = this.genDateNotEarlierThan(item);\r\n break;\r\n case ValidateRules.DateNoLaterThan.code:\r\n validate = this.genDateNoLaterThan(item);\r\n break;\r\n case ValidateRules.SpecifiedRangeNumber.code:\r\n validate = this.genSpecifiedRangeNumber(item);\r\n break;\r\n case ValidateRules.PhoneNumber.code:\r\n validate = this.genPhoneNumber(item);\r\n break;\r\n case ValidateRules.Required.code:\r\n validate = this.genRequired(item, controlAttr.controlType);\r\n break;\r\n case ValidateRules.LineUnique.code:\r\n validate = this.genLineUnique(item);\r\n break;\r\n case ValidateRules.LetterSpace.code:\r\n validate = this.genLetterSpace(item);\r\n break;\r\n case ValidateRules.AlphanumericUnderline.code:\r\n validate = this.genAlphanumericUnderline(item);\r\n break;\r\n case ValidateRules.Alphanumeric.code:\r\n validate = this.genAlphanumeric(item);\r\n break;\r\n case ValidateRules.JsMethodVerification.code:\r\n validate = this.genJsMethodVerification(item);\r\n break;\r\n case ValidateRules.BackEndVerification.code:\r\n validate = this.genBackEndVerification(item);\r\n break;\r\n case ValidateRules.LandlineNumber.code:\r\n validate = this.genLandlineNumber(item);\r\n break;\r\n }\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 相同的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:12\r\n */\r\n genSameValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 电子邮箱\r\n * @author ChenRui\r\n * @date 2021/1/27 15:15\r\n */\r\n genMailBox(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const emreg = /^\\w{3,}(\\.\\w+)*@[A-z0-9]+(\\.[A-z]{2,5}){1,2}$/;\r\n if (!emreg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"电子邮件格式不正确\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 正则匹配\r\n * @author ChenRui\r\n * @date 2021/1/27 15:17\r\n */\r\n genRegEx(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && !eval(item.ruleContent).test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'不满足正则校验'${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:18\r\n */\r\n genMinTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不少于${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:21\r\n */\r\n genMaxTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不超过${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:24\r\n */\r\n genMinValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能小于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:25\r\n */\r\n genMaxValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能大于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:27\r\n */\r\n genSpecifiedValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定位数数字\r\n * @author ChenRui\r\n * @date 2021/1/27 15:31\r\n */\r\n genSpecifiedDigitsNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n let countDecimals = 0;\r\n if (Math.floor(val).toString() !== val.toString()) {\r\n countDecimals = val.toString().split(\".\")[1].length || 0;\r\n }\r\n if (countDecimals != Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.ruleContent === \"0\" || item.ruleContent === 0 ? `请输入整数` : `请保留${item.ruleContent}位小数`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 自动补位\r\n * @author ChenRui\r\n * @date 2021/1/27 15:59\r\n */\r\n roundNumber(number: any, decimals: any): any {\r\n let newString; // The new rounded number\r\n decimals = Number(decimals);\r\n if (decimals < 1) {\r\n newString = Math.round(number).toString();\r\n } else {\r\n let numString = number.toString();\r\n if (numString.lastIndexOf(\".\") == -1) {\r\n // If there is no decimal point\r\n numString += \".\"; // give it one at the end\r\n }\r\n let cutoff = numString.lastIndexOf(\".\") + decimals; // The point at which to truncate the number\r\n let d1: any = Number(numString.substring(cutoff, cutoff + 1)); // The value of the last decimal place that we'll end up with\r\n const d2 = Number(numString.substring(cutoff + 1, cutoff + 2)); // The next decimal, after the last one we want\r\n if (d2 >= 5) {\r\n // Do we need to round up at all? If not, the string will just be truncated\r\n if (d1 == 9 && cutoff > 0) {\r\n // If the last digit is 9, find a new cutoff point\r\n while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {\r\n if (d1 != \".\") {\r\n cutoff -= 1;\r\n d1 = Number(numString.substring(cutoff, cutoff + 1));\r\n } else {\r\n cutoff -= 1;\r\n }\r\n }\r\n }\r\n d1 += 1;\r\n }\r\n if (d1 == 10) {\r\n numString = numString.substring(0, numString.lastIndexOf(\".\"));\r\n const roundedNum = Number(numString) + 1;\r\n newString = roundedNum.toString() + \".\";\r\n } else {\r\n newString = numString.substring(0, cutoff) + d1.toString();\r\n }\r\n }\r\n if (newString.lastIndexOf(\".\") == -1) {\r\n // Do this again, to the new string\r\n newString += \".\";\r\n }\r\n const decs = newString.substring(newString.lastIndexOf(\".\") + 1).length;\r\n for (let i = 0; i < decimals - decs; i++) newString += \"0\";\r\n return newString;\r\n }\r\n\r\n /**\r\n * @description: 日期不早于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:06\r\n */\r\n genDateNotEarlierThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() > moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不早于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最大值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 日期不晚于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:08\r\n */\r\n genDateNoLaterThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() < moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不晚于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最小值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定范围的数字\r\n * @author ChenRui\r\n * @date 2021/1/27 16:35\r\n */\r\n genSpecifiedRangeNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent != null && val && item.ruleContent.indexOf(\"/\") > -1) {\r\n const arr: any[] = item.ruleContent.split(\"/\");\r\n if (arr && arr.length > 1) {\r\n if (val < Number(arr[0]) || val > Number(arr[1])) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值大小应在${arr[0]}~${arr[1]}之间`,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 手机号\r\n * @author ChenRui\r\n * @date 2021/1/27 16:55\r\n */\r\n genPhoneNumber(item: Rule): Validate {\r\n const reg = /^0?1[3|4|5|6|7|8|9][0-9]\\d{8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"手机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 必填\r\n * @author ChenRui\r\n * @date 2021/1/27 15:28\r\n */\r\n genRequired(item: Rule, controlType: string): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val == null || (typeof val == \"string\" && val.trim() === \"\") || (Array.isArray(val) && val.length === 0)) {\r\n let msg = \"为必输项\";\r\n if (controlType === FormFieldType.Select.code || controlType === FormFieldType.Radio.code || controlType === FormFieldType.Checkbox.code) {\r\n msg += \",请选择\";\r\n } else {\r\n msg += \",请输入\";\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: msg,\r\n };\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 唯一行\r\n * @author ChenRui\r\n * @date 2021/1/27 17:16\r\n */\r\n genLineUnique(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 仅包含字母空格\r\n * @author ChenRui\r\n * @date 2021/1/27 17:21\r\n */\r\n genLetterSpace(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^(?!_)([A-Za-z ]+)$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含字母空格\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 数字字母下划线\r\n * @author ChenRui\r\n * @date 2021/1/27 17:28\r\n */\r\n genAlphanumericUnderline(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[a-zA-Z0-9_]{1,}$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母下划线\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 字母数字\r\n * @author ChenRui\r\n * @date 2021/1/27 17:32\r\n */\r\n genAlphanumeric(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[0-9a-zA-Z]*$/g;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: JS方法校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:42\r\n */\r\n genJsMethodVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && item.ruleContent) {\r\n try {\r\n const func = new Function(item.ruleContent);\r\n return func(val);\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'JS校验函数不合法`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 后端校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:43\r\n */\r\n genBackEndVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 座机号校验\r\n * @author ChenRui\r\n * @date 2021/4/14 11:40\r\n */\r\n genLandlineNumber(item: Rule): Validate {\r\n const reg = /^0\\d{2,3}-?\\d{7,8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"座机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n}\r\nconst validateGeneratorService = new ValidateGeneratorService();\r\nexport { Rule, validateGeneratorService };\r\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, resolveComponent as _resolveComponent, withCtx as _withCtx, createSlots as _createSlots, createBlock as _createBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\")!\n\n return (_ctx.desForm?.controls?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"formView\",\n class: _normalizeClass('lo-form-container ' + ('lo-' + (_ctx.edit ? 'enable' : 'disable') + '-edit') + ' lo-class-style-' + _ctx.styleMode + ' lo-form-theme-' + _ctx.loFormTheme)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.desForm.controls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n control: item,\n customFormats: _ctx.customFormats,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n index: i,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onChange($event))),\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.onBlur($event))),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onClick($event))),\n onAddonBefore: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[6] || (_cache[6] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(this.$slots), (propName) => {\n return {\n name: propName,\n fn: _withCtx((slotProps) => [\n _renderSlot(_ctx.$slots, propName, {\n content: slotProps.content,\n control: slotProps.control,\n onChange: slotProps.onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"control\", \"customFormats\", \"linkList\", \"onLinkClick\", \"index\"]))\n }), 128))\n ], 2))\n : _createCommentVNode(\"\", true)\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, createSlots as _createSlots, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2f021ee3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"lo-control-box\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"lo-history-popconfirm-title\" }, \"历史修改\", -1))\nconst _hoisted_5 = { class: \"lo-history-context\" }\nconst _hoisted_6 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_7 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_8 = { class: \"lo-important lo-ml-10\" }\nconst _hoisted_9 = [\"src\"]\nconst _hoisted_10 = { class: \"number-format-show\" }\nconst _hoisted_11 = { class: \"addon-inner\" }\nconst _hoisted_12 = { class: \"ant-picker-cell-inner calendar-control-style\" }\nconst _hoisted_13 = { class: \"date-control-style\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"eest-day-style\" }, null, -1))\nconst _hoisted_15 = { class: \"date-style\" }\nconst _hoisted_16 = { class: \"eest-day-style\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"holidays-style\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"weekday-style\"\n}\nconst _hoisted_19 = { class: \"date-type-style\" }\nconst _hoisted_20 = {\n key: 0,\n class: \"trading-day-style\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"legend\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain-style\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"trading-day-icon\" }),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain\" }, \"交易日\")\n ])\n], -1))\nconst _hoisted_22 = {\n key: 14,\n class: \"custom-border\"\n}\nconst _hoisted_23 = { class: \"lo-input-content\" }\nconst _hoisted_24 = [\"title\"]\nconst _hoisted_25 = { key: 1 }\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"flex-grow-1\" }, null, -1))\nconst _hoisted_27 = {\n key: 0,\n class: \"addon-readonly\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_a_tooltip = _resolveComponent(\"a-tooltip\")!\n const _component_question_circle_outlined = _resolveComponent(\"question-circle-outlined\")!\n const _component_clock_circle_outlined = _resolveComponent(\"clock-circle-outlined\")!\n const _component_a_timeline_item = _resolveComponent(\"a-timeline-item\")!\n const _component_a_timeline = _resolveComponent(\"a-timeline\")!\n const _component_a_popconfirm = _resolveComponent(\"a-popconfirm\")!\n const _component_search_outlined = _resolveComponent(\"search-outlined\")!\n const _component_a_textarea = _resolveComponent(\"a-textarea\")!\n const _component_a_input_number = _resolveComponent(\"a-input-number\")!\n const _component_a_menu_item = _resolveComponent(\"a-menu-item\")!\n const _component_a_menu = _resolveComponent(\"a-menu\")!\n const _component_down_outlined = _resolveComponent(\"down-outlined\")!\n const _component_a_button = _resolveComponent(\"a-button\")!\n const _component_a_dropdown = _resolveComponent(\"a-dropdown\")!\n const _component_a_popover = _resolveComponent(\"a-popover\")!\n const _component_v_nodes = _resolveComponent(\"v-nodes\")!\n const _component_a_divider = _resolveComponent(\"a-divider\")!\n const _component_plus_outlined = _resolveComponent(\"plus-outlined\")!\n const _component_a_select_option = _resolveComponent(\"a-select-option\")!\n const _component_a_select = _resolveComponent(\"a-select\")!\n const _component_a_radio = _resolveComponent(\"a-radio\")!\n const _component_a_radio_group = _resolveComponent(\"a-radio-group\")!\n const _component_a_checkbox = _resolveComponent(\"a-checkbox\")!\n const _component_a_col = _resolveComponent(\"a-col\")!\n const _component_a_row = _resolveComponent(\"a-row\")!\n const _component_a_checkbox_group = _resolveComponent(\"a-checkbox-group\")!\n const _component_a_switch = _resolveComponent(\"a-switch\")!\n const _component_a_time_picker = _resolveComponent(\"a-time-picker\")!\n const _component_a_month_picker = _resolveComponent(\"a-month-picker\")!\n const _component_a_date_picker = _resolveComponent(\"a-date-picker\")!\n const _component_a_slider = _resolveComponent(\"a-slider\")!\n const _component_a_cascader = _resolveComponent(\"a-cascader\")!\n const _component_a_tree_select = _resolveComponent(\"a-tree-select\")!\n const _component_a_rate = _resolveComponent(\"a-rate\")!\n const _component_upload_outlined = _resolveComponent(\"upload-outlined\")!\n const _component_a_upload = _resolveComponent(\"a-upload\")!\n const _component_stretch_text = _resolveComponent(\"stretch-text\")!\n const _component_a_form_item = _resolveComponent(\"a-form-item\")!\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\", true)!\n const _component_a_form = _resolveComponent(\"a-form\")!\n\n return ((_ctx.control.type === _ctx.formFieldClass.Base.code || _ctx.control.type === _ctx.formFieldClass.Senior.code) && !_ctx.controlAttr.isHideControl)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-control-container\",\n style: _normalizeStyle({ width: _ctx.divWidthCompatibleToIe })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_a_form_item, {\n labelCol: {\r\n style: 'min-width: ' + _ctx.labelSpanWidth + ';width:' + _ctx.labelSpanWidth,\r\n },\n wrapperCol: {\r\n style: 'max-width: ' + _ctx.controlSpanMaxWidth + ';width: ' + _ctx.controlSpanWidth,\r\n },\n colon: _ctx.colon,\n labelAlign: _ctx.labelAlign,\n required: _ctx.required,\n \"validate-status\": _ctx.validateResult.validateStatus,\n help: _ctx.provideInjectData.edit ? _ctx.validateResult.errorMsg : null,\n class: _normalizeClass({\r\n ['form-model-item-' + _ctx.controlAttr.boundProperty]: true,\r\n ['form-model-item-' + _ctx.control.code]: true,\r\n 'lo-form-model-item-textarea-box lo-theme-textarea-box': _ctx.control.code === _ctx.formFieldType.Textarea.code,\r\n 'lo-form-item-mobile': _ctx.isMobileBrowser(),\r\n })\n }, {\n label: _withCtx(() => [\n (!_ctx.controlAttr.isHideTitle)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ 'lo-fw': _ctx.controlAttr.isBoldTitle }),\n style: _normalizeStyle({ color: _ctx.controlAttr.titleColor })\n }, _toDisplayString(_ctx.controlAttr.formFieldDescribe), 7),\n (_ctx.submittedType.length > 0)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 0,\n class: \"lo-label-sub-type-icon\",\n placement: \"right\",\n title: _ctx.submittedTypeStr,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"img\", { src: _ctx.submittedSvg }, null, 8, _hoisted_3)\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.tips)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 1,\n class: \"lo-label-tips-icon\",\n placement: \"right\",\n title: _ctx.controlAttr.tips,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_question_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.formControl.history && _ctx.formControl.history.length)\n ? (_openBlock(), _createBlock(_component_a_popconfirm, {\n key: 2,\n overlayClassName: \"lo-label-history-popconfirm\",\n placement: \"right\",\n \"ok-text\": \"确定\"\n }, {\n title: _withCtx(() => [\n _hoisted_4,\n _createElementVNode(\"div\", null, [\n _createVNode(_component_a_timeline, { class: \"lo-history-timeline\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formControl.history, (item, index) => {\n return (_openBlock(), _createBlock(_component_a_timeline_item, { key: index }, {\n dot: _withCtx(() => [\n _createVNode(_component_clock_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", null, _toDisplayString(item.time), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item.before), 1),\n _createTextVNode(\" 改为 \"),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(item.after), 1),\n _createTextVNode(\" 修改人 \"),\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(item.author), 1)\n ])\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"img\", {\n class: \"lo-label-history-icon\",\n src: _ctx.historySvg\n }, null, 8, _hoisted_9)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.control.code === _ctx.formFieldType.Input.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.inputShape), {\n key: 0,\n class: _normalizeClass({\r\n 'addon-before': _ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel,\r\n 'addon-after': _ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel,\r\n }),\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n \"data-source\": _ctx.controlAttr.autoCompleteOptions,\n onFocus: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.$slots['input:prefix:' + _ctx.formControl.key])\n ? {\n name: \"prefix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:prefix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"0\"\n }\n : undefined,\n (_ctx.$slots['input:suffix:' + _ctx.formControl.key])\n ? {\n name: \"suffix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:suffix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"1\"\n }\n : undefined,\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel)\n ? {\n name: \"addonBefore\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onAddonBeforeHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonBefore:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingPrefix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingPrefix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInFrontLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"2\"\n }\n : undefined,\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onAddonAfterHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonAfter:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingSuffix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInPostLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"3\"\n }\n : undefined\n ]), 1064, [\"class\", \"value\", \"placeholder\", \"disabled\", \"data-source\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_ctx.control.code === _ctx.formFieldType.Textarea.code)\n ? (_openBlock(), _createBlock(_component_a_textarea, {\n key: 1,\n value: _ctx.control.formControl.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.control.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n rows: _ctx.controlAttr.textareaRows || 3,\n showCount: !!_ctx.maxCharacterCount,\n maxlength: _ctx.maxCharacterCount,\n onInput: _cache[8] || (_cache[8] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onFocus: _cache[9] || (_cache[9] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[10] || (_cache[10] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"placeholder\", \"disabled\", \"rows\", \"showCount\", \"maxlength\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.InputNumber.code)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n class: _normalizeClass([\"lo-input-number-box\", {\r\n 'lo-with-unit': _ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0,\r\n ['lo-unit-' + _ctx.moneyUnitsIndentScale]: true,\r\n }]),\n tabindex: \"1\"\n }, [\n _createVNode(_component_a_popover, {\n placement: \"topLeft\",\n trigger: \"focus\",\n getPopupContainer: \r\n (triggerNode) => {\r\n return triggerNode.parentNode || _ctx.document.body;\r\n }\r\n \n }, _createSlots({\n default: _withCtx(() => [\n _createVNode(_component_a_input_number, {\n step: _ctx.controlAttr.step || 1,\n min: _ctx.controlAttr.minValue != null ? _ctx.controlAttr.minValue : undefined,\n max: _ctx.controlAttr.maxValue != null ? _ctx.controlAttr.maxValue : undefined,\n formatter: _ctx.numberFormatter,\n parser: _ctx.numberParser,\n precision: _ctx.controlAttr.decimalPlaces,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[13] || (_cache[13] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.onClick(_ctx.control))),\n onFocus: _cache[15] || (_cache[15] = ($event: any) => (_ctx.onInputNumberFocus(_ctx.control))),\n onBlur: _cache[16] || (_cache[16] = ($event: any) => (_ctx.onInputNumberBlur(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.controlAttr.unit)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.controlAttr.unit), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"step\", \"min\", \"max\", \"formatter\", \"parser\", \"precision\", \"placeholder\", \"disabled\", \"value\"]),\n (_ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0)\n ? (_openBlock(), _createBlock(_component_a_dropdown, { key: 0 }, {\n overlay: _withCtx(() => [\n _createVNode(_component_a_menu, { onClick: _ctx.handleMoneyUnitMenuClick }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.moneyUnits, (unit) => {\n return (_openBlock(), _createBlock(_component_a_menu_item, {\n key: unit.code\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(unit.name), 1)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.defaultMoneyUnit.name) + \" \", 1),\n (_ctx.moneyUnits.length > 1)\n ? (_openBlock(), _createBlock(_component_down_outlined, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (_ctx.numberPopoverVisible)\n ? {\n name: \"content\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.amountCapitalization(_ctx.zoomMultiple(_ctx.formControl.value, _ctx.formControl))), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"getPopupContainer\"])\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Select.code)\n ? (_openBlock(), _createBlock(_component_a_select, {\n key: 3,\n class: _normalizeClass([\"lo-select\", {\r\n 'lo-select-multiple-suffix-icon': _ctx.controlAttr.isMultipleChoice && (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix),\r\n }]),\n dropdownClassName: _ctx.controlAttr.hiddenDropdown ? 'lo-select-hide-drop-down-content' : '',\n showArrow: \"\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"allow-clear\": true,\n \"show-search\": \"\",\n mode: _ctx.controlAttr.isMultipleChoice ? 'multiple' : '',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n onChange: _cache[20] || (_cache[20] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"get-popup-container\": _ctx.getPopupContainer,\n \"filter-option\": _ctx.filterOption\n }, _createSlots({\n dropdownRender: _withCtx(({ menuNode: menu }) => [\n _createVNode(_component_v_nodes, { vnodes: menu }, null, 8, [\"vnodes\"]),\n (_ctx.controlAttr.canAddEntry)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_a_divider, { style: {\"margin\":\"4px 0\"} }),\n _createElementVNode(\"div\", {\n style: {\"padding\":\"4px 8px 6px 8px\",\"cursor\":\"pointer\"},\n onMousedown: _cache[17] || (_cache[17] = (e) => e.preventDefault()),\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.selectAddItem(_ctx.control)))\n }, [\n _createVNode(_component_plus_outlined),\n _createTextVNode(\"新增\")\n ], 32)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_select_option, {\n value: item.value,\n key: item.value,\n title: item.title,\n disabled: item.disabled ? item.disabled : false\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 2\n }, [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix)\n ? {\n name: \"suffixIcon\",\n fn: _withCtx(() => [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'select:suffixIcon:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"dropdownClassName\", \"class\", \"value\", \"mode\", \"disabled\", \"placeholder\", \"get-popup-container\", \"filter-option\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Radio.code)\n ? (_openBlock(), _createBlock(_component_a_radio_group, {\n key: 4,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[22] || (_cache[22] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[23] || (_cache[23] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[24] || (_cache[24] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_radio, {\n key: item.value,\n value: item.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Checkbox.code)\n ? (_openBlock(), _createBlock(_component_a_checkbox_group, {\n key: 5,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[25] || (_cache[25] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[26] || (_cache[26] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[27] || (_cache[27] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_a_col, null, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_checkbox, {\n key: item.value,\n value: item.value,\n class: \"ml-0 mr-5\",\n style: _normalizeStyle({ width: _ctx.controlAttr.checkboxStyle ? 'auto' : '10rem' })\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_tooltip, null, {\n title: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(item.title), 1)\n ]),\n default: _withCtx(() => [\n _createTextVNode(\" \" + _toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1032, [\"value\", \"style\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Switch.code)\n ? (_openBlock(), _createBlock(_component_a_switch, {\n key: 6,\n checked: _ctx.formControl.value,\n \"onUpdate:checked\": _cache[28] || (_cache[28] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"checked-children\": _ctx.controlAttr.onOpeningText,\n \"un-checked-children\": _ctx.controlAttr.whenClosedText,\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[29] || (_cache[29] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[30] || (_cache[30] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"checked\", \"checked-children\", \"un-checked-children\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TimePicker.code)\n ? (_openBlock(), _createBlock(_component_a_time_picker, {\n key: 7,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n \"use12-hours\": _ctx.is12Hours,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[31] || (_cache[31] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[32] || (_cache[32] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[33] || (_cache[33] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"use12-hours\", \"placeholder\", \"disabled\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.DatePicker.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 8 }, [\n (_ctx.useMonthPicker)\n ? (_openBlock(), _createBlock(_component_a_month_picker, {\n key: 0,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[34] || (_cache[34] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[35] || (_cache[35] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[36] || (_cache[36] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_ctx.controlAttr.isShowHoliday)\n ? (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 1,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[37] || (_cache[37] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[38] || (_cache[38] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[39] || (_cache[39] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n dateRender: _withCtx(({ current }) => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(current.date()), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n (_ctx.isRest(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, \"休\"))\n : (_ctx.isWeekday(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, \"班\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n (_ctx.isRadingDay(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n renderExtraFooter: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 2,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[40] || (_cache[40] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[41] || (_cache[41] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[42] || (_cache[42] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Slider.code)\n ? (_openBlock(), _createBlock(_component_a_slider, {\n key: 9,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[43] || (_cache[43] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[44] || (_cache[44] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[45] || (_cache[45] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Cascader.code)\n ? (_openBlock(), _createBlock(_component_a_cascader, {\n key: 10,\n \"get-popup-container\": _ctx.getPopupContainer,\n changeOnSelect: _ctx.controlAttr.changeOnSelect,\n placeholder: _ctx.controlAttr.placeholder,\n \"show-search\": { cascaderFilter: _ctx.cascaderFilter },\n disabled: _ctx.controlAttr.isNotEdit,\n options: _ctx.cascaderOptions,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[46] || (_cache[46] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[47] || (_cache[47] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[48] || (_cache[48] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"changeOnSelect\", \"placeholder\", \"show-search\", \"disabled\", \"options\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TreeSelect.code)\n ? (_openBlock(), _createBlock(_component_a_tree_select, {\n key: 11,\n \"get-popup-container\": _ctx.getPopupContainer,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[49] || (_cache[49] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"show-search\": true,\n treeNodeFilterProp: 'title',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n \"dropdown-style\": { maxHeight: '250px', overflow: 'auto' },\n \"tree-data\": _ctx.treeSelectOptions,\n onChange: _cache[50] || (_cache[50] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[51] || (_cache[51] = ($event: any) => (_ctx.onClick(_ctx.control))),\n treeDefaultExpandAll: _ctx.controlAttr.isTreeOpen\n }, null, 8, [\"get-popup-container\", \"value\", \"disabled\", \"placeholder\", \"tree-data\", \"treeDefaultExpandAll\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Rate.code)\n ? (_openBlock(), _createBlock(_component_a_rate, {\n key: 12,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[52] || (_cache[52] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[53] || (_cache[53] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[54] || (_cache[54] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"allow-half\": \"\"\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Upload.code)\n ? (_openBlock(), _createBlock(_component_a_upload, {\n key: 13,\n \"file-list\": _ctx.formControl.value,\n accept: _ctx.uploadType,\n multiple: _ctx.controlAttr.isMultipleChoice,\n onRemove: _ctx.handleRemove,\n \"before-upload\": _ctx.beforeUpload,\n onChange: _ctx.handleUploadChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createVNode(_component_upload_outlined),\n _createTextVNode(\" 选择文件 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"file-list\", \"accept\", \"multiple\", \"onRemove\", \"before-upload\", \"onChange\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Custom.code && _ctx.controlAttr.customFieldName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _renderSlot(_ctx.$slots, _ctx.controlAttr.customFieldName, {\n control: _ctx.control,\n onChange: _ctx.onChange\n }, undefined, true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_23, [\n _renderSlot(_ctx.$slots, 'read:' + _ctx.control.formControl.key, { content: _ctx.formatData }, () => [\n (_ctx.controlAttr.textFold)\n ? (_openBlock(), _createBlock(_component_stretch_text, {\n key: 0,\n content: _ctx.formatData,\n linkList: _ctx.linkList,\n fieldKey: _ctx.control.formControl.key,\n onLinkClick: _cache[55] || (_cache[55] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, null, 8, [\"content\", \"linkList\", \"fieldKey\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"lo-control-text\",\n title: _ctx.formatData\n }, [\n (_ctx.linkList.indexOf(_ctx.control.formControl.key) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[56] || (_cache[56] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, _toDisplayString(_ctx.formatData), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_25, _toDisplayString(_ctx.formatData), 1))\n ], 8, _hoisted_24))\n ], true)\n ]),\n _hoisted_26,\n (_ctx.controlAttr.unit)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_27, _toDisplayString(_ctx.controlAttr.unit), 1))\n : _createCommentVNode(\"\", true)\n ], 64))\n ]),\n _: 3\n }, 8, [\"labelCol\", \"wrapperCol\", \"colon\", \"labelAlign\", \"required\", \"validate-status\", \"help\", \"class\"])\n ])\n ], 4))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code === _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 1,\n class: _normalizeClass('w-100 lo-empty-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.emptyLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n onChange: _cache[57] || (_cache[57] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[58] || (_cache[58] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[59] || (_cache[59] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[60] || (_cache[60] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[61] || (_cache[61] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[62] || (_cache[62] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[63] || (_cache[63] = ($event: any) => (_ctx.selectAddItem($event))),\n onFixFormLayout: _ctx.onHideControl\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"linkList\", \"onLinkClick\", \"onFixFormLayout\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code !== _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 2,\n class: _normalizeClass('w-100 lo-general-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.generalLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n class: _normalizeClass(_ctx.controlAttr.layoutName ? 'lo-form-layout-' + _ctx.controlAttr.layoutName : ''),\n onChange: _cache[64] || (_cache[64] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[65] || (_cache[65] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[66] || (_cache[66] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[67] || (_cache[67] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[68] || (_cache[68] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[69] || (_cache[69] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[70] || (_cache[70] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"class\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : _createCommentVNode(\"\", true)\n}","const formTemplate = {\r\n formId: \"1\",\r\n appId: \"1\",\r\n domainClassId: \"\",\r\n objectId: \"1\",\r\n formType: \"1\",\r\n formName: \"test\",\r\n formAlias: \"test\",\r\n formDescribe: \"\",\r\n useState: \"1\",\r\n desDomainClass: null,\r\n desFormLayouts: [\r\n {\r\n layoutId: \"1\",\r\n formId: \"1\",\r\n parentLayoutId: \"\",\r\n layoutName: \"\",\r\n layoutType: \"101\",\r\n gridSpace: 1,\r\n gridColumnConfig: '[{\"value\":12,\"order\":1},{\"value\":12,\"order\":2}]',\r\n gridLateralArrangement: \"1\",\r\n gridVerticalArrangement: \"1\",\r\n layoutOrder: 1,\r\n labelSpan: \"\",\r\n controlSpan: \"\",\r\n subDesFormLayout: null,\r\n desFormControls: [],\r\n },\r\n ],\r\n desBusObject: null,\r\n};\r\nexport { formTemplate };\r\n","const SUBMITTED_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjEyMTY2MTU4NzYxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjkxMjY3IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ij4NCiAgICAgIDxkZWZzPjwvZGVmcz4NCiAgICAgIDxwYXRoDQogICAgICAgIGQ9Ik01MTEuNSA5NjBDMjY0LjIgOTYwIDYzIDc1OC44IDYzIDUxMS41UzI2NC4yIDYzIDUxMS41IDYzIDk2MCAyNjQuMiA5NjAgNTExLjUgNzU4LjggOTYwIDUxMS41IDk2MHogbTAtODU5LjIzMmMtMjI2LjQ3OCAwLTQxMC43MzIgMTg0LjI1NC00MTAuNzMyIDQxMC43MzJTMjg1LjAyMiA5MjIuMjMyIDUxMS41IDkyMi4yMzIgOTIyLjIzMiA3MzcuOTc4IDkyMi4yMzIgNTExLjUgNzM3Ljk3OCAxMDAuNzY4IDUxMS41IDEwMC43Njh6IG0tOTQuOTA2IDI4NS45ODhsMi40MTgtMS44MTNjOC45NzMtNi43MzQgMTMuNTIyLTE0LjE3NSAxMy41MjQtMjIuMTEycy00LjU0OS0xNS4zOC0xMy41MjQtMjIuMTE3bC0yLjQxOC0xLjgxNGgtNjMuMzQxVjIyNmwtMS44MTQtMi40MTljLTYuNzM2LTguOTc1LTE0LjE3OC0xMy41MjQtMjIuMTE1LTEzLjUyNHMtMTUuMzc5IDQuNTQ5LTIyLjExNSAxMy41MjRMMzA1LjM5NCAyMjZ2MTEyLjloLTczLjk4MWwtMi42NTQgMi42NTNjLTkuNjc5IDkuNjc5LTEzLjcxMyAxOC40OTQtMTIuMzMgMjYuOTQ5IDEuMTgyIDcuMjIzIDYuMTI5IDEzLjA0OCAxNC43IDE3LjMwOGwxLjkwNiAwLjk0Nmg3Mi4zNTV2MTU0LjEyOWMtMjEuOSAxMi4wNTgtNDkuODY5IDI0LjMtODMuMjM2IDM2LjQzNWwtMi4zODggMC44Ny0xLjU4OCAxLjk4MmMtOS4wMzMgMTEuMjc3LTExLjg3OSAyMC44LTguNyAyOS4xMDcgMy4wNCA3Ljk0NSAxMS4xODIgMTMuMDY5IDI0LjIgMTUuMjNsMi4yMTggMC4zNjkgMi4xMzMtMC43MWE0NzEuOTg5IDQ3MS45ODkgMCAwIDAgNjcuMzYyLTI4LjA1djE0My4zNDRjMCA3LjkyOS0yLjc4IDkuNy0zLjY5NCAxMC4yODQtMy42NSAyLjMyLTE2LjU4MSA1LjY2MS01Ny43NDctMTMuNTQybC0yLjY5MS0xLjI1NS0yLjkxMSAwLjU3OGMtMTAuNzI4IDIuMTQtMTcuOCA2Ljg5NC0yMS4wMDYgMTQuMTM5LTMuNTQxIDcuOTkxLTEuODczIDE3LjUyNiA1LjA5NCAyOS4xNDdsMS41NDkgMi41ODUgMi43OTEgMS4xNDNjMjguNDEgMTEuNjIxIDUxLjggMTcuNDE1IDcwLjU3NSAxNy40MTUgMTIuODI2IDAgMjMuNS0yLjcgMzIuMTQ4LTguMSAxNC4yNTctOC44OTIgMjIuMjQxLTI0LjY1IDIzLjczLTQ2LjgzNWwwLjAyMS0xNzMuNzE0YzI4LjI1OS0xNi4xMjcgNTIuMzUzLTM0LjA3NCA3MS42OC01My40bDEuNTE3LTEuNTE4IDAuNjc2LTIuMDM1YzQuNDc0LTEzLjQ3MiAzLjg0NS0yMy4zLTEuOTIzLTMwLjA0NC01LjU1MS02LjUtMTQuOTY2LTguNjkzLTI3Ljk4My02LjUyOWwtMy41OSAwLjU5My0yLjE3OSAyLjkxNGMtNy4zOTQgOS44NzYtMjAuMjEyIDIxLjA1MS0zOC4yIDMzLjMxNVYzODYuNzU2aDYzLjM0MXogbTM5MS4yODggMzY3Ljg2MmwtMS42NzgtMi43OTQtMy4wNzMtMS4wODVjLTUxLjY4Ni0xOC4yMzktOTYuNzMzLTQzLjk1My0xMzQuMDM3LTc2LjUgNDYuOTM4LTU1LjA1NSA3Ny4zLTExNC4wNzcgOTAuMy0xNzUuNTc0IDUuMTE4LTIwLjYgMi45NC0zNy4xNi02LjQ3MS00OS4yMTRDNzQxLjcgNDM1LjA4NiA3MjEuNDc5IDQyOC4xIDY5MS4wOSA0MjguMUg0OTIuMDEzVjMwOC4zMThjMC0yMS40MzggOS4xNDUtMzAuNTg1IDMwLjU4NC0zMC41ODVoMTM4Ljc1OWM0NC43MjkgMCA0NS40MzkgMjEuNTIxIDQ1LjQ0OSAzMC4xNzZsLTQuOTE3IDU0LjEtMC4wMzkgMC44MmMwIDQuOTI3LTEuODU1IDcuMDI3LTMuNDcgOC4zMDUtNS4xNTEgNC4wNzktMjEuMDQzIDkuMjA2LTY5LjYzMi0yLjI1OWwtMi43OS0wLjY1OC0yLjY2IDEuMDY3Yy0xMS4wNCA0LjQyMy0xNy40NjEgMTAuNjkzLTE5LjA4NSAxOC42NDQtMS42NzQgOC4xODUgMi4wNjIgMTYuOSAxMS4xIDI1LjkybDEuODggMS44NzIgMi41OTIgMC41NjZjNTQuODYgMTEuOTM0IDkxLjQ2NSAxMC40NTYgMTExLjkwNy00LjUzMSAxMC42MjYtNy43ODggMTYuNjc2LTE4Ljk3IDE4LTMzLjQ5M2w0Ljk0Mi03OS4xMDVjMS42MjYtMTkuNTc2LTIuOTY3LTM1LjM5LTEzLjY1My00Ny0xMy44LTE0Ljk5My0zNi42LTIyLjI4LTY5LjcxMi0yMi4yOEg1MTIuNjg0Yy00NC44MzMgMC02OC41MyAyMy43LTY4LjUzIDY4LjUyOVY3OTdsMS44MTUgMi40MTljNi43MzcgOC45NzUgMTQuMTc4IDEzLjUyNCAyMi4xMTYgMTMuNTI0czE1LjM3Ny00LjU0OSAyMi4xMTMtMTMuNTI0bDEuODE1LTIuNDE5di0wLjk4M2M1LjUxOSAyLjgyMSAxMi45MzUgMy40NzkgMjIuMTU3IDEuOTQybDEuNDg4LTAuMjQ2IDEuMzI2LTAuNzE2YzQxLjI5MS0yMi4yNjIgODEuNTYxLTUwLjg4MyAxMTkuOC04NS4xNDJhNDg5LjYgNDg5LjYgMCAwIDAgMTUwLjQgODUuNzExbDIuMzU3IDAuODMzIDIuNDUtMC41YzEwLjcyNy0yLjE2NCAxNy43ODgtNi45NCAyMC45ODgtMTQuMiAzLjUyOS03Ljk5IDEuODYtMTcuNDk5LTUuMDk3LTI5LjA4MXogbS05NS40NzMtMjY2LjNsLTAuMzI5IDAuODIxLTAuMTYzIDAuODdjLTkuMTE4IDQ4LjY0OS0zNi4xODkgOTkuNjIyLTgwLjUwOSAxNTEuNjI0LTQ1LjA4Ni00OS43NzQtNzcuNTM2LTEwNS40MTktOTYuNjItMTY1LjY3M2gxNDYuMzljMjYuMDU4IDAgMzEuMDQ2IDUuNDE1IDMxLjc4MiA2LjUgMC45MjkgMS4zNyAwLjIxMiAzLjk0LTAuNTUxIDUuODU3eiBtLTIyMC40IDUuMTE1YzI1LjQ1OCA3My4yMTkgNjEuNDI2IDEzNS43NDYgMTA3LjE1MyAxODYuMjM5LTMwLjEzNSAyOC44LTY2LjEyNyA1My45NDgtMTA3LjE1MyA3NC44NDhWNDkzLjQzMnoiDQogICAgICAgIGZpbGw9IiMwMDlERTUiDQogICAgICAgIHAtaWQ9IjkxMjY4Ig0KICAgICAgPjwvcGF0aD4NCiAgICA8L3N2Zz4=\";\r\n// const HISTORY_SVG_XML =\r\n// \"data:image/svg+xml;base64,PHN2ZyBpZD0i5Zu+5bGCXzEiIGRhdGEtbmFtZT0i5Zu+5bGCIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmMTcxNzt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPuWbvuaghzExPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNS40MSw1aDBsMC0uMDlBOCw4LDAsMSwwLC42NCwxMS4xMmE3Ljg2LDcuODYsMCwwLDAsMS42MiwyLjQ1QTgsOCwwLDAsMCwxNS40MSw1Wm0tMi4yNSw4LjE3QTcuMyw3LjMsMCwwLDEsOCwxNS4yOUg4QTcuMzEsNy4zMSwwLDAsMSwuNzEsOCw3LjI5LDcuMjksMCwwLDEsOCwuNzFIOGE3LjI5LDcuMjksMCwwLDEsNS4xNiwxMi40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02LjY0LDEwYy0uOTMuNTItMS44NCwxLTIuNzIsMS40MVY3Ljc4SDUuNzl2LjU5aC44NVYzLjU0SDIuODZWNC4zSDUuNzlWN0gzLjA3djQuMTZhMS4yNywxLjI3LDAsMCwxLS4zOCwxbC41OC43NWE1LjkzLDUuOTMsMCwwLDEsLjY0LS41MWMxLS41NiwyLTEuMDcsMi45LTEuNTVBOC41NSw4LjU1LDAsMCwxLDYuNjQsMTBaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAuMjksMTAuNTdhMTAsMTAsMCwwLDAsMS41OC01LjIzaDEuMjh2LS44SDguNzVjLjIxLS41NC40Mi0xLjEuNjItMS42OGwtLjg2LS4yNUEyMy41MiwyMy41MiwwLDAsMSw2LjY2LDcuMTlhNy4yMyw3LjIzLDAsMCwxLC41NS42OWMuMTktLjM1LjM3LS43MS41Ni0xLjA5YTguODEsOC44MSwwLDAsMCwxLjM4LDMuNzUsMTAuMywxMC4zLDAsMCwxLTMuMzksMi4wNyw1LjMxLDUuMzEsMCwwLDEsLjY0Ljc4LDExLjMzLDExLjMzLDAsMCwwLDMuMzMtMi4xNiw5LjQyLDkuNDIsMCwwLDAsMi45LDIsNS41Nyw1LjU3LDAsMCwxLC42OS0uODVBNy4yMiw3LjIyLDAsMCwxLDEwLjI5LDEwLjU3Wm0tLjU3LS43MmExMCwxMCwwLDAsMS0xLjQtNC4yN2wuMS0uMjRIMTFBOS42OCw5LjY4LDAsMCwxLDkuNzIsOS44NVoiLz48L3N2Zz4=\";\r\nconst HISTORY_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0idHJhbnNmb3JtOiBzY2FsZSgwLjkpOyBtYXJnaW4tYm90dG9tOiAtMi41cHgiIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE1cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC03MzYgLTIyNyApIj4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICBkPSJNIDE0LjQgNy4xOTI5ODI0NTA2NTc4OSAgQyAxNC40IDcuNjczNjg0MjEwNTI2MzIgIDE0LjM1MDkzMzMzMzMzMzMgOC4xNDMxNTc4OTQ3MzY4NCAgMTQuMjU3Nzc3NzgzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBMIDEyLjc5ODU3Nzc4MzMzMzMgOC41OTY0OTEyMzM1NTI2MyAgQyAxMi45MTgzMzI3ODU5NTUyIDguMTM4Mzk0ODc0Mjk4NjEgIDEyLjk3ODkzMDcxNzExODMgNy42NjcxOTc0MTQyNTIwMyAgMTIuOTc4OTMwNzE3MTE4MyA3LjE5NDEwMjY5MTg5MzEyICBDIDEyLjk3ODkzMDcxNzExODMgNC4wOTM1NTY3MzA5NTg2NCAgMTAuNDMxOTI4NDA3NTMxOSAxLjU4MDA2NzYwOTY1NjI4ICA3LjI5MDA0MTgzMzc4NDk3IDEuNTgwMDY3NjA5NjU2MjggIEMgNC4xNDgxNTUyNjAwMzgwNCAxLjU4MDA2NzYwOTY1NjI4ICAxLjYwMTE1Mjk1MDQ1MTY0IDQuMDkzNTU2NzMwOTU4NjQgIDEuNjAxMTUyOTUwNDUxNjQgNy4xOTQxMDI2OTE4OTMxMiAgQyAxLjYwMTE1Mjk1MDQ1MTY0IDEwLjI5NDY0ODY1MjgyNzYgIDQuMTQ4MTU1MjYwMDM4MDQgMTIuODA4MTM3Nzc0MTMgIDcuMjkwMDQxODMzNzg0OTcgMTIuODA4MTM3Nzc0MTMgIEMgNy44MDE3MTU4NDYxMjU2OCAxMi44MDgxMzc3NzQxMyAgOC4zMTEwNTEwNTk5ODkxMyAxMi43NDAwMTU0NzY1MDk1ICA4LjgwNDI2NjY2NjY2NjY3IDEyLjYwNTYxNDAyOTYwNTMgIEMgOC44ODY3NTU1NSAxMi44MTk2NDkxMTE4NDIxICA5LjAyMTE1NTU1IDEzLjAwOTEyMjc5NjA1MjYgIDkuMTkyNTMzMzMzMzMzMzMgMTMuMTU3ODk0NzM2ODQyMSAgQyA4LjkyMzU4OTU2OTY3MTU0IDEzLjM5MTU1NDE5MjUzODIgIDguNzU0MTUwMzc0NjM0NzggMTMuNzE2OTQ4ODM3NTM4MyAgOC43MTgyMjIyMTY2NjY2NyAxNC4wNjg3NzE5MjQzNDIxICBDIDguMjU2IDE0LjE2MTQwMzUwMzI4OTUgIDcuNzc4MTMzMzMzMzMzMzMgMTQuMjEwNTI2MzE1Nzg5NSAgNy4yODg4ODg4ODMzMzMzMyAxNC4yMTA1MjYzMTU3ODk1ICBDIDMuMzYxNDIyMjE2NjY2NjcgMTQuMjEwNTI2MzE1Nzg5NSAgMC4xNzc3Nzc3NjY2NjY2NjcgMTEuMDY4NzcxOTI0MzQyMSAgMC4xNzc3Nzc3ODMzMzMzMzQgNy4xOTI5ODI0NTA2NTc4OSAgQyAwLjE3Nzc3NzggMy4zMTcxOTI5NzY5NzM2OCAgMy4zNjE0MjIyMTY2NjY2NyAwLjE3NTQzODYwMTk3MzY4NCAgNy4yODg4ODg4ODMzMzMzMyAwLjE3NTQzODYwMTk3MzY4NCAgQyAxMS4yMTYzNTU1NSAwLjE3NTQzODYwMTk3MzY4NCAgMTQuNCAzLjMxNzE5Mjk5MzQyMTA1ICAxNC40IDcuMTkyOTgyNDUwNjU3ODkgIFogTSA3LjY0NDQ0NDQ1IDMuNjg0MjEwNTI2MzE1NzkgIEwgNy42NDQ0NDQ0NSA3LjE5Mjk4MjQ1MDY1Nzg5ICBMIDkuNzc3Nzc3NzgzMzMzMzMgNy4xOTI5ODI0NTA2NTc4OSAgQyAxMC4xNzA1MTM2MDg1MDM1IDcuMTkyOTgyNDUwNjU3ODkgIDEwLjQ4ODg4ODkgNy41MDcxNjg1OTM1ODIwOSAgMTAuNDg4ODg4OSA3Ljg5NDczNjg0MjEwNTI2ICBDIDEwLjQ4ODg4ODkgOC4yODIzMDUwOTA2Mjg0MyAgMTAuMTcwNTEzNjA4NTAzNSA4LjU5NjQ5MTIzMzU1MjYzICA5Ljc3Nzc3Nzc4MzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEwgNi45MzMzMzMzMzMzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBDIDYuNDU5MjU5MjU1NTU1NTUgOC41OTY0OTEyMzM1NTI2MyAgNy40MDc0MDc0MTExMTExMSA4LjU5NjQ5MTIzMzU1MjYzICA2LjkzMzMzMzMzMzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEMgNi41NDA1OTc1MDgxNjMxOSA4LjU5NjQ5MTIzMzU1MjYzICA2LjIyMjIyMjIxNjY2NjY3IDguMjgyMzA1MDkwNjI4NDMgIDYuMjIyMjIyMjE2NjY2NjcgNy44OTQ3MzY4NDIxMDUyNiAgTCA2LjIyMjIyMjIxNjY2NjY3IDMuNjg0MjEwNTI2MzE1NzkgIEMgNi4yMjIyMjIyMTY2NjY2NyAzLjI5NjY0MjI3Nzc5MjYyICA2LjU0MDU5NzUwODE2MzE5IDIuOTgyNDU2MTM0ODY4NDIgIDYuOTMzMzMzMzMzMzMzMzMgMi45ODI0NTYxMzQ4Njg0MiAgQyA3LjMyNjA2OTE1ODUwMzQ4IDIuOTgyNDU2MTM0ODY4NDIgIDcuNjQ0NDQ0NDUgMy4yOTY2NDIyNzc3OTI2MiAgNy42NDQ0NDQ0NSAzLjY4NDIxMDUyNjMxNTc5ICBaIE0gMTAuODQ0NDQ0NDUgOS4yOTgyNDU2MDg1NTI2MyAgTCAxNS4xMTExMTExMTY2NjY3IDkuMjk4MjQ1NjA4NTUyNjMgIEMgMTUuNTAzODQ2OTQxODM2OCA5LjI5ODI0NTYwODU1MjYzICAxNS44MjIyMjIyMzMzMzMzIDkuNjEyNDMxNzUxNDc2ODMgIDE1LjgyMjIyMjIzMzMzMzMgMTAgIEMgMTUuODIyMjIyMjMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxNS41MDM4NDY5NDE4MzY4IDEwLjcwMTc1NDM5MTQ0NzQgIDE1LjExMTExMTExNjY2NjcgMTAuNzAxNzU0MzkxNDQ3NCAgTCAxMC44NDQ0NDQ0NSAxMC43MDE3NTQzOTE0NDc0ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTAuNzAxNzU0MzkxNDQ3NCAgMTAuMTMzMzMzMzMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxMC4xMzMzMzMzMzMzMzMzIDEwICBDIDEwLjEzMzMzMzMzMzMzMzMgOS42MTI0MzE3NTE0NzY4MyAgMTAuNDUxNzA4NjI0ODI5OSA5LjI5ODI0NTYwODU1MjYzICAxMC44NDQ0NDQ0NSA5LjI5ODI0NTYwODU1MjYzICBaIE0gMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgTCAxNS4xMTExMTExMTY2NjY3IDExLjQwMzUwODc2NjQ0NzQgIEMgMTUuNTAzODQ2OTQxODM2OCAxMS40MDM1MDg3NjY0NDc0ICAxNS44MjIyMjIyMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDE1LjgyMjIyMjIzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxNS44MjIyMjIyMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDE1LjUwMzg0Njk0MTgzNjggMTIuODA3MDE3NTQ5MzQyMSAgMTUuMTExMTExMTE2NjY2NyAxMi44MDcwMTc1NDkzNDIxICBMIDEwLjg0NDQ0NDQ1IDEyLjgwNzAxNzU0OTM0MjEgIEMgMTAuNDUxNzA4NjI0ODI5OSAxMi44MDcwMTc1NDkzNDIxICAxMC4xMzMzMzMzMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDEwLjEzMzMzMzMzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxMC4xMzMzMzMzMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDEwLjQ1MTcwODYyNDgyOTkgMTEuNDAzNTA4NzY2NDQ3NCAgMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgWiBNIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIEwgMTUuMTExMTExMTE2NjY2NyAxMy41MDg3NzE5MjQzNDIxICBDIDE1LjUwMzg0Njk0MTgzNjggMTMuNTA4NzcxOTI0MzQyMSAgMTUuODIyMjIyMjMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxNS44MjIyMjIyMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTUuODIyMjIyMjMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxNS41MDM4NDY5NDE4MzY4IDE0LjkxMjI4MDcwNzIzNjggIDE1LjExMTExMTExNjY2NjcgMTQuOTEyMjgwNzA3MjM2OCAgTCAxMC44NDQ0NDQ0NSAxNC45MTIyODA3MDcyMzY4ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTQuOTEyMjgwNzA3MjM2OCAgMTAuMTMzMzMzMzMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxMC4xMzMzMzMzMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTAuMTMzMzMzMzMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxMC40NTE3MDg2MjQ4Mjk5IDEzLjUwODc3MTkyNDM0MjEgIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIFogIg0KICAgICAgICAgIGZpbGwtcnVsZT0ibm9uemVybyINCiAgICAgICAgICBmaWxsPSIjZmZhMTE2Ig0KICAgICAgICAgIHN0cm9rZT0ibm9uZSINCiAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDczNiAyMjcgKSINCiAgICAgICAgLz4NCiAgICAgIDwvZz4NCiAgICA8L3N2Zz4=\";\r\nconst FORM_ERROR_MODAL_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjI5Mjg0MTUzNjk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxODIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAwQzIzMC40IDAgMCAyMjcuMiAwIDUxMmMwIDI4MS42IDIzMC40IDUxMiA1MTIgNTEyIDI4NC44IDAgNTEyLTIyNy4yIDUxMi01MTJTNzk2LjggMCA1MTIgMHogbTAgODE5LjJjLTI4LjggMC01MS4yLTIyLjQtNTEuMi01MS4yczIyLjQtNTEuMiA1MS4yLTUxLjJjMjguOCAwIDUxLjIgMjIuNCA1MS4yIDUxLjIgMy4yIDI4LjgtMjIuNCA1MS4yLTUxLjIgNTEuMnogbTU0LjQtMjIwLjhjMCAyOC44LTIyLjQgNTEuMi01MS4yIDUxLjItMjguOCAwLTUxLjItMjIuNC01MS4yLTUxLjJWMjU2YzAtMjguOCAyMi40LTUxLjIgNTEuMi01MS4yIDI4LjggMCA1MS4yIDIyLjQgNTEuMiA1MS4ydjM0Mi40eiIgcC1pZD0iMjE4MyIgZmlsbD0iI0YxQjkxNiI+PC9wYXRoPjwvc3ZnPg==\";\r\nconst DROP_DOWN_LIST_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxMXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC01MTYgLTQ2ICkiPg0KICAgIDxwYXRoIGQ9Ik0gMCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMS41NTU1NDk0NzkxNjY2NCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDAgOC43NSAgTCAwIDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDguNzUgIEwgMCA4Ljc1ICBaIE0gMCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAwIDIuMjUgIEwgMS41NTU1NDk0NzkxNjY2NCAyLjI1ICBMIDEuNTU1NTQ5NDc5MTY2NjQgMC43NTAwMDU4NTkzNzQ5OTQgIEwgMCAwLjc1MDAwNTg1OTM3NDk5NCAgWiBNIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgTCAzLjExMTExNzE4NzQ5OTk5IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMTQgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxNCA0Ljc0OTk5NDE0MDYyNTAxICBMIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDMuMTExMTE3MTg3NDk5OTkgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDEwLjI0OTk5NDE0MDYyNSAgTCAxNCAxMC4yNDk5OTQxNDA2MjUgIEwgMTQgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDguNzUgIFogTSAxNCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAzLjExMTExNzE4NzQ5OTk5IDAuNzUwMDA1ODU5Mzc0OTk0ICBMIDMuMTExMTE3MTg3NDk5OTkgMi4yNSAgTCAxNCAyLjI1ICBMIDE0IDAuNzUwMDA1ODU5Mzc0OTk0ICBaICIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjYmZiY2NjIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgNTE2IDQ2ICkiIC8+DQogIDwvZz4NCjwvc3ZnPg==\";\r\nexport { SUBMITTED_SVG_XML, HISTORY_SVG_XML, FORM_ERROR_MODAL_SVG_XML, DROP_DOWN_LIST_SVG_XML };\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n const arr: string[] = [];\r\n configs.sort((a: Config, b: Config) => a.order - b.order).forEach((item) => arr.push(item.value + \"fr\"));\r\n return arr.join(\" \");\r\n } else {\r\n return `1fr`;\r\n }\r\n}\r\n/**\r\n * @description: 网格布局比例分配\r\n * @author ChenRui\r\n * @date 2020/12/1 19:32\r\n */\r\nconst generateGridTemplateColumns = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridTemplateColumns;\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n return configs.length + 1;\r\n } else {\r\n return 2;\r\n }\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst generateGridColumnEnd = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridColumnEnd;\r\n","class ApiService {\r\n createBasicHeaders() {\r\n return {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n createAuthHeaders(accessToken: string, jti: string) {\r\n return {\r\n Authorization: \"bearer \" + accessToken,\r\n \"user-identity\": jti,\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n fetch(path: string, query: { [key: string]: any }, body: any, method: string, header: any) {\r\n path = query != null ? this.urlQueryConvert(path, query) : path;\r\n return fetch(path, {\r\n method: method ? method : \"GET\",\r\n headers: header,\r\n body: body,\r\n }).then(\r\n function (response) {\r\n response.status; //=> number 100–599\r\n response.statusText; //=> String\r\n response.headers; //=> Headers\r\n response.url; //=> String\r\n\r\n return response.json();\r\n },\r\n function (error) {\r\n error.message; //=> String\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @description: url请求参数组装\r\n * @author ChenRui\r\n * @date 2020/8/28 15:21\r\n */\r\n urlQueryConvert(url: string, query: { [key: string]: any }) {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (query) {\r\n Object.keys(query).forEach((key, idx) => {\r\n const val = query[key];\r\n if (idx === 0) {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += connectiveSymbol + key + \"=\" + val;\r\n } else {\r\n url += connectiveSymbol + key + \"=\";\r\n }\r\n } else {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += \"&\" + key + \"=\" + val;\r\n } else {\r\n url += \"&\" + key + \"=\";\r\n }\r\n }\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst apiService = new ApiService();\r\nexport { apiService };\r\n","const NAME = \"vue-lo\";\r\nconst STORE_NAME = \"form:\";\r\nconst DICT_STORE_NAME = \"dict:\";\r\nexport { NAME, STORE_NAME, DICT_STORE_NAME };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME } from \"../constants/config/storage.config\";\r\nclass CleanLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: \"clean:\" + appId, // Should be alphanumeric, with underscores.\r\n description: \"用于清理实例的缓存对象\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst cleanLocalForageService: CleanLocalForageService = new CleanLocalForageService();\r\nexport { CleanLocalForageService, cleanLocalForageService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { DICT_STORE_NAME, NAME } from \"../constants/config/storage.config\";\r\nclass DictLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: DICT_STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst dictLocalForageService: DictLocalForageService = new DictLocalForageService();\r\nexport { DictLocalForageService, dictLocalForageService };\r\n","class FormBeanUtilsService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 对象拷贝\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n copy(obj: any): any {\r\n if (obj != null) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 字符串转对象\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n parse(str: string | null): any {\r\n if (str != null && str !== \"\") {\r\n return JSON.parse(str);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 对象转字符串\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n stringify(obj: any): string {\r\n if (obj != null) {\r\n return JSON.stringify(obj);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst formBeanUtilsService = new FormBeanUtilsService();\r\nexport { formBeanUtilsService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME, STORE_NAME } from \"../constants/config/storage.config\";\r\n\r\nclass FormLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst formLocalForageService: FormLocalForageService = new FormLocalForageService();\r\nexport { FormLocalForageService, formLocalForageService };\r\n","import { DesFormLayout } from \"./DesFormLayout\";\r\nimport { Control } from \"./Control\";\r\nimport { FormGroup } from \"./FormGroup\";\r\n\r\nexport class DesForm {\r\n formId: string;\r\n appId: string;\r\n domainClassId: string;\r\n objectId: string;\r\n formType: string;\r\n formName: string;\r\n formAlias: string;\r\n formDescribe: string;\r\n useState: string;\r\n desFormLayouts: DesFormLayout[];\r\n controls: Control[];\r\n formGroup: FormGroup | undefined;\r\n [key: string]: any;\r\n constructor(\r\n options: {\r\n formId?: string;\r\n appId?: string;\r\n domainClassId?: string;\r\n objectId?: string;\r\n formType?: string;\r\n formName?: string;\r\n formAlias?: string;\r\n formDescribe?: string;\r\n useState?: string;\r\n controls?: Control[];\r\n formGroup?: FormGroup;\r\n desFormLayouts?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.formId = options.formId || \"\";\r\n this.appId = options.appId || \"\";\r\n this.domainClassId = options.domainClassId || \"\";\r\n this.objectId = options.objectId || \"\";\r\n this.formType = options.formType || \"\";\r\n this.formName = options.formName || \"\";\r\n this.formAlias = options.formAlias || \"\";\r\n this.formDescribe = options.formDescribe || \"\";\r\n this.useState = options.useState || \"\";\r\n this.controls = options.controls || [];\r\n this.formGroup = options.formGroup;\r\n this.desFormLayouts = options.desFormLayouts || [];\r\n }\r\n}\r\n","import { DesFormControl } from \"./DesFormControl\";\r\n\r\nexport class DesFormLayout {\r\n layoutId: string;\r\n formId: string;\r\n parentLayoutId: string;\r\n layoutName: string;\r\n layoutType: string;\r\n gridSpace: number | undefined;\r\n gridColumnConfig: any;\r\n gridLateralArrangement: string;\r\n gridVerticalArrangement: string;\r\n layoutOrder: number | undefined;\r\n labelSpan: string;\r\n controlSpan: string;\r\n desFormControls: DesFormControl[];\r\n subDesFormLayout: DesFormLayout[];\r\n constructor(\r\n options: {\r\n layoutId?: string;\r\n formId?: string;\r\n parentLayoutId?: string;\r\n layoutName?: string;\r\n layoutType?: string;\r\n gridSpace?: number;\r\n gridColumnConfig?: any;\r\n gridLateralArrangement?: string;\r\n gridVerticalArrangement?: string;\r\n layoutOrder?: number;\r\n labelSpan?: string;\r\n controlSpan?: string;\r\n desFormControls?: DesFormControl[];\r\n subDesFormLayout?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.layoutId = options.layoutId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.parentLayoutId = options.parentLayoutId || \"\";\r\n this.layoutName = options.layoutName || \"\";\r\n this.layoutType = options.layoutType || \"\";\r\n this.gridSpace = options.gridSpace;\r\n this.gridColumnConfig = options.gridColumnConfig;\r\n this.gridLateralArrangement = options.gridLateralArrangement || \"\";\r\n this.gridVerticalArrangement = options.gridVerticalArrangement || \"\";\r\n this.layoutOrder = options.layoutOrder;\r\n this.labelSpan = options.labelSpan || \"\";\r\n this.controlSpan = options.controlSpan || \"\";\r\n this.desFormControls = options.desFormControls || [];\r\n this.subDesFormLayout = options.subDesFormLayout || [];\r\n }\r\n}\r\n","import { formBeanUtilsService } from \"./form-bean-utils.service\";\r\n\r\ninterface NodeContrast {\r\n id: string;\r\n parentId: string;\r\n children: string;\r\n}\r\n\r\ninterface NzNodeContrast {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: string;\r\n checked?: string;\r\n selected?: string;\r\n selectable?: string;\r\n disabled?: string;\r\n disableCheckbox?: string;\r\n expanded?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzCascaderOptionContrast {\r\n value: string;\r\n label: string;\r\n title?: string;\r\n disabled?: string;\r\n loading?: string;\r\n isLeaf?: string;\r\n parent?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzTreeNodeOptions {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: boolean;\r\n checked?: boolean;\r\n selected?: boolean;\r\n selectable?: boolean;\r\n disabled?: boolean;\r\n disableCheckbox?: boolean;\r\n expanded?: boolean;\r\n children?: NzTreeNodeOptions[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface MapNodeItem {\r\n key?: string;\r\n title?: string;\r\n value?: string;\r\n children?: MapNodeOptions;\r\n}\r\n\r\ninterface MapNodeOptions {\r\n [key: string]: MapNodeItem;\r\n}\r\n\r\nclass FormTreeNodeConvertService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 数组转换为树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:18\r\n */\r\n arrayConvertToTreeNode(data: any[], nodeContrast: NodeContrast, parentId?: string): any[] {\r\n if (data != null && data.length > 0) {\r\n let nds: any[] = data.filter((item) => (item[nodeContrast.parentId] || \"\") === (parentId || \"\"));\r\n if (nds != null && nds.length > 0) {\r\n nds = formBeanUtilsService.copy(nds);\r\n nds.forEach((item) => {\r\n const children = this.arrayConvertToTreeNode(data, nodeContrast, item[nodeContrast.id]);\r\n if (children != null && children.length > 0) {\r\n item[nodeContrast.children] = [...children];\r\n }\r\n });\r\n return nds;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToNzTreeNode(data: any[], nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n title: \"\",\r\n key: \"\",\r\n icon: \"\",\r\n isLeaf: true,\r\n checked: false,\r\n selected: false,\r\n selectable: true,\r\n disabled: isDisabledLeaf,\r\n disableCheckbox: false,\r\n expanded: true,\r\n children: [],\r\n };\r\n for (const propName of Object.keys(nzNodeContrast)) {\r\n if (nzNodeContrast[propName] != null && nzNodeContrast[propName] !== \"\") {\r\n node[propName] = item[nzNodeContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzNodeContrast.children] != null && item[nzNodeContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToNzTreeNode(item[nzNodeContrast.children], nzNodeContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToNzTreeNode(data: any[], nodeContrast: NodeContrast, nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToNzTreeNode(treeNode, nzNodeContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToCascaderOption(data: any[], nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n value: \"\",\r\n label: \"\",\r\n title: \"\",\r\n disabled: isDisabledLeaf,\r\n loading: \"\",\r\n isLeaf: true,\r\n parent: \"\",\r\n children: \"\",\r\n };\r\n for (const propName of Object.keys(nzCascaderOptionContrast)) {\r\n if (nzCascaderOptionContrast[propName] != null && nzCascaderOptionContrast[propName] !== \"\") {\r\n node[propName] = item[nzCascaderOptionContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzCascaderOptionContrast.children] != null && item[nzCascaderOptionContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToCascaderOption(item[nzCascaderOptionContrast.children], nzCascaderOptionContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 插件树结构转map\r\n * @author ChenRui\r\n * @date 2022/1/18 19:19\r\n */\r\n nzTreeNodeConvertToMap(data: NzTreeNodeOptions[]): MapNodeOptions | undefined {\r\n if (data != null && data.length > 0) {\r\n const mapNodeOptions: MapNodeOptions = {};\r\n data.forEach((item) => {\r\n if (item.value) {\r\n mapNodeOptions[item.value] = {\r\n key: item.key,\r\n title: item.title,\r\n value: item.value,\r\n };\r\n if (item.children && item.children.length > 0) {\r\n mapNodeOptions[item.value].children = this.nzTreeNodeConvertToMap(item.children) || undefined;\r\n }\r\n }\r\n });\r\n return mapNodeOptions;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToCascaderOption(data: any[], nodeContrast: NodeContrast, nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToCascaderOption(treeNode, nzCascaderOptionContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @Description: 树形数据转为数组\r\n * @author LiuBo\r\n * @date 2021/11/5\r\n * @time 16:59\r\n * @param treeNode 树形数据\r\n * @param data 数组 传入空数组即可[]\r\n * @param childName 子节点名称\r\n */\r\n treeNodeConvertToArray(treeNode: any[], data: any[], childName: string): any[] {\r\n data = data || [];\r\n treeNode = JSON.parse(JSON.stringify(treeNode));\r\n treeNode.forEach((val: any) => {\r\n data.push(val);\r\n if (val[childName] && val[childName].length) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(val[childName], data, childName);\r\n }\r\n });\r\n data.forEach((val: any) => {\r\n delete val[childName];\r\n });\r\n return data;\r\n }\r\n}\r\nconst formTreeNodeConvertService: FormTreeNodeConvertService = new FormTreeNodeConvertService();\r\nexport { NodeContrast, NzNodeContrast, NzCascaderOptionContrast, NzTreeNodeOptions, MapNodeItem, MapNodeOptions, formTreeNodeConvertService };\r\n","import { DesForm } from \"../domain/DesForm\";\r\nimport { formLocalForageService } from \"../services/form-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单存储服务\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass FormStore {\r\n private static readonly FORMS = \"forms_data\";\r\n private static readonly VERSION = \"forms_version\";\r\n\r\n constructor() {}\r\n\r\n public setForms(desForm: DesForm[]) {\r\n formLocalForageService.setItem(FormStore.FORMS, desForm);\r\n }\r\n\r\n public getForms(): Promise<DesForm[]> {\r\n return formLocalForageService.getItem(FormStore.FORMS);\r\n }\r\n\r\n public setVersion(value: string) {\r\n formLocalForageService.setItem(FormStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return formLocalForageService.getItem(FormStore.VERSION);\r\n }\r\n}\r\nconst formStore = new FormStore();\r\nexport { formStore };\r\n","import { dictLocalForageService } from \"../services/dict-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单版本管理\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass DictStore {\r\n private static readonly DICTS = \"dicts_data\";\r\n private static readonly TREE_DICTS = \"treeDicts_data\";\r\n private static readonly MAP_DICTS = \"map_dicts_data\";\r\n private static readonly MAP_TREE_DICTS = \"map_treeDicts_data\";\r\n private static readonly VERSION = \"dict_version\";\r\n\r\n constructor() {}\r\n\r\n /**常规字典存储*/\r\n public setDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.DICTS);\r\n }\r\n\r\n /**树形字典存储*/\r\n public setTreeDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getTreeDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.TREE_DICTS);\r\n }\r\n\r\n /**map型常规字典存储*/\r\n public setMapDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_DICTS);\r\n }\r\n\r\n /**map型树形字典存储*/\r\n public setMapTreeDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapTreeDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_TREE_DICTS);\r\n }\r\n\r\n /*字典版本存储*/\r\n public setVersion(value: string) {\r\n dictLocalForageService.setItem(DictStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.VERSION);\r\n }\r\n}\r\nconst dictStore = new DictStore();\r\nexport { dictStore };\r\n","const DEFAULT_FORM_FILE_NAME = \"form-design.json\";\r\nconst DEFAULT_DICT_FILE_NAME = \"dict.json\";\r\nconst DEFAULT_DICT_URL = \"./resources/json/\" + DEFAULT_DICT_FILE_NAME;\r\nexport { DEFAULT_FORM_FILE_NAME, DEFAULT_DICT_FILE_NAME, DEFAULT_DICT_URL };\r\n","interface Params {\r\n [key: string]: any;\r\n}\r\nexport class RouterService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 跨应用跳转\r\n * @author ChenRui\r\n * @date 2020/9/28 14:23\r\n */\r\n push(subapp: string): void {\r\n history.pushState(null, subapp, subapp);\r\n }\r\n\r\n /**\r\n * @description: 获取纯路劲\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getPathFromUrl(url: string): string {\r\n let path = url;\r\n if (url.indexOf(\"?\") !== -1) {\r\n path = url.split(\"?\")[0];\r\n }\r\n return path;\r\n }\r\n\r\n /**\r\n * @description: 获取请求参数\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getParamsFromUrl(url: string): Params | undefined {\r\n let parameter: Params | undefined;\r\n if (url.indexOf(\"?\") !== -1) {\r\n parameter = this.urlParameterToParams(url.split(\"?\")[1]);\r\n }\r\n return parameter;\r\n }\r\n\r\n /**\r\n * @description: url地址参数转换成路由参数对象\r\n * @author ChenRui\r\n * @date 2020/10/12 21:07\r\n */\r\n urlParameterToParams(parameter: string): Params | undefined {\r\n const params: Params = {};\r\n const arr: string[] = parameter.split(\"&\");\r\n arr.forEach((val, idx, array) => {\r\n const kv: string[] = val.split(\"=\");\r\n if (kv.length > 1) {\r\n params[kv[0]] = decodeURIComponent(kv[1]);\r\n } else {\r\n params[kv[0]] = \"\";\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * @description: 地址参数拼接\r\n * @author ChenRui\r\n * @date 2021/2/19 11:40\r\n */\r\n getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (parameter && Object.keys(parameter).length > 0) {\r\n let mark = 0;\r\n Object.keys(parameter).forEach((item) => {\r\n if (mark === 0) {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += connectiveSymbol + item + \"=\" + parameter[item];\r\n } else {\r\n url += connectiveSymbol + item + \"=\";\r\n }\r\n } else {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += \"&\" + item + \"=\" + parameter[item];\r\n } else {\r\n url += \"&\" + item + \"=\";\r\n }\r\n }\r\n mark++;\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst routerService: RouterService = new RouterService();\r\nexport { routerService, Params };\r\n","import { FormApi } from \"../core/FormApi\";\r\nimport { ValidateReport } from \"../domain/FormControl\";\r\nimport { Modal } from \"ant-design-vue\";\r\nimport { FORM_ERROR_MODAL_SVG_XML } from \"../constants/encode-assets/svg\";\r\nimport { h, createVNode } from \"vue\";\r\n/**\r\n * @description: 表单校验窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\nclass FormValidateService {\r\n /**\r\n * @description: 校验并进行窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n if (formApis != null) {\r\n if (!Array.isArray(formApis)) {\r\n formApis = [formApis];\r\n }\r\n const actualFormApis: FormApi[] = [];\r\n let allError: ValidateReport[] = [];\r\n let errMessage = \"\";\r\n formApis.forEach((formApi) => {\r\n const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告\r\n if (errors && errors.length > 0) {\r\n actualFormApis.push(formApi);\r\n allError = allError.concat(errors);\r\n }\r\n });\r\n if (allError && allError.length > 0) {\r\n // 显示错误的输入框\r\n allError.forEach((err) => {\r\n console.log(err);\r\n errMessage += `<div class=\"lo-error-item d-flex\"><div class=\"lo-error-describe\">${err.name}</div>&nbsp;${err.errorMsg};</div>`;\r\n });\r\n\r\n Modal.confirm({\r\n width: 380,\r\n title: h(\"div\", { class: \"d-flex\", innerHTML: `<img src=\"${FORM_ERROR_MODAL_SVG_XML}\" /><div style=\"font-size: 18px\">校验提示</div>` }),\r\n content: h(\"div\", { innerHTML: errMessage }),\r\n onOk: () => {\r\n this.showErrorModal(actualFormApis as any, allError, scrollView);\r\n },\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n class: \"lo-form-error-modal\",\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @Description: 滚动到错误位置-闪烁提示\r\n * @author LiuBo\r\n * @date 2021/2/25\r\n * @time 21:35\r\n */\r\n public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {\r\n const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);\r\n if (errorEl != null) {\r\n if (scrollView && typeof scrollView === \"string\") {\r\n scrollView = document.getElementById(scrollView);\r\n }\r\n if (scrollView) {\r\n scrollView.scrollTo({ top: errorEl.offsetTop, behavior: \"smooth\" });\r\n const running = (event: any) => {\r\n const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;\r\n const calculationError = errorEl.offsetTop - scrollTop;\r\n if (calculationError > -20 && calculationError < 20) {\r\n scrollView.removeEventListener(\"scroll\", running);\r\n this.showErrInput(errorEl);\r\n }\r\n };\r\n scrollView.addEventListener(\"scroll\", running, false);\r\n } else {\r\n this.showErrInput(errorEl);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description: 闪烁显示校验不通过的输入框\r\n * @author LiuBo\r\n * @date 2019/6/3\r\n * @time 22:01\r\n * @param el 出错的输入框html对象\r\n */\r\n private showErrInput(el: any) {\r\n let count = 0;\r\n const interval = setInterval(() => {\r\n el.style.opacity = count++ % 2 === 0 ? \".3\" : \"1\";\r\n if (count > 5) {\r\n clearInterval(interval);\r\n }\r\n }, 400);\r\n }\r\n}\r\nconst formValidateService = new FormValidateService();\r\nexport { formValidateService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport { FormRestfulResponse } from \"../domain/FormRestfulResponse\";\r\nimport { DesForm } from \"../domain/DesForm\";\r\nimport { DesFormControl } from \"../domain/DesFormControl\";\r\nimport { DesFormLayout } from \"../domain/DesFormLayout\";\r\nimport { FormFieldClass } from \"../constants/enum/form-field-class.enum\";\r\nimport { Control } from \"../domain/Control\";\r\nimport { FormFieldType } from \"../constants/enum/form-field-type.enum\";\r\nimport { Switch } from \"../constants/enum/switch.enum\";\r\nimport { formTreeNodeConvertService, MapNodeOptions, NodeContrast, NzNodeContrast, NzTreeNodeOptions } from \"./form-tree-node-convert.service\";\r\nimport { formBeanUtilsService } from \"./form-bean-utils.service\";\r\nimport { apiService } from \"./api.service\";\r\nimport { formStore } from \"../store/form.store\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\nimport { dictStore } from \"../store\";\r\nimport { SysDictInfo } from \"../domain/SysDictInfo\";\r\nimport { DEFAULT_DICT_URL, DEFAULT_FORM_FILE_NAME } from \"../constants/config/form.config\";\r\nimport { CacheType } from \"../constants/enum/cache-type.enum\";\r\nimport { routerService } from \"./router.service\";\r\nimport { FormApi } from \"../core/FormApi\";\r\nimport { formValidateService } from \"./form-validate.service\";\r\n\r\ninterface DictionaryFormatCollection {\r\n sysDictDetailOptions?: NzTreeNodeOptions[];\r\n sysDictTreeDetailOptions?: NzTreeNodeOptions[];\r\n mapSysDictDetailOptions?: MapNodeOptions;\r\n mapSysDictTreeDetailOptions?: MapNodeOptions;\r\n}\r\n\r\nclass FormToolsService {\r\n private static readonly LOAD_SUCCESS = { code: 1, msg: \"加载成功\" }; // 操作成功提示\r\n private static readonly LOAD_FAIL = { code: 1, msg: \"加载失败\" }; // 操作失败提示\r\n private static IS_FIRST_LOADED = false; // 是否经过首次初始化\r\n private nodeContrast: NodeContrast = { id: \"layoutId\", parentId: \"parentLayoutId\", children: \"subDesFormLayout\" };\r\n private dictDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private dictTreeDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictTreeDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private desForms: DesForm[] = []; // 表单配置缓存\r\n\r\n sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n mapSysDictDetailOptions: MapNodeOptions | undefined;\r\n mapSysDictTreeDetailOptions: MapNodeOptions | undefined;\r\n\r\n supHoliday?: boolean = false; // 节假日支持\r\n\r\n constructor() {}\r\n\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm != null) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n setSupHoliday(bool: boolean) {\r\n this.supHoliday = bool;\r\n }\r\n\r\n setFormDisabledColor(color = \"#f0f0f0\") {\r\n document.body.style.setProperty(\"--lo-form-disabled\", color);\r\n }\r\n\r\n /**\r\n * @description: 检查是否经过首次初始化并初始化\r\n * @author ChenRui\r\n * @date 2021/1/5 23:04\r\n */\r\n checkFirstLoadAndInitDesign(): Promise<FormRestfulResponse> {\r\n if (FormToolsService.IS_FIRST_LOADED) {\r\n return Promise.resolve({\r\n code: 1,\r\n msg: \"检查到已经过首次加载,不在执行加载逻辑\",\r\n });\r\n } else {\r\n return this.init().then((res: FormRestfulResponse) => {\r\n FormToolsService.IS_FIRST_LOADED = true;\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化\r\n * @author ChenRui\r\n * @date 2021/3/12 11:02\r\n */\r\n init(): Promise<FormRestfulResponse> {\r\n return Promise.all([this.initDesign(), this.initDict(), this.selectHolidays()]).then(([designRes, dictRes]: any) => {\r\n const code = designRes.code === 1 && dictRes.code === 1 ? 1 : 0;\r\n return { code, msg: designRes.msg + \"; \" + dictRes.msg };\r\n });\r\n }\r\n\r\n /**\r\n * @Description 初始化节假日数据\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 04:11\r\n */\r\n selectHolidays(): Promise<FormRestfulResponse> {\r\n if (this.formConfig.url && this.supHoliday) {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/basic-form-weekday/query-all-by-year\";\r\n return this.fetch(url, {}, undefined, \"POST\").then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n localStorage.setItem(\"traddayList\", JSON.stringify(res.data.traddayList)); // 交易日集合\r\n localStorage.setItem(\"weekdayList\", JSON.stringify(res.data.weekdayList)); // 节假日集合\r\n localStorage.setItem(\"workdayList\", JSON.stringify(res.data.workdayList)); // 工作日集合\r\n }\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n\r\n /**\r\n * @description: 初始化表单设计\r\n * @author ChenRui\r\n * @date 2020/11/20 10:55\r\n */\r\n initDesign(): Promise<FormRestfulResponse> {\r\n return Promise.all([formStore.getForms(), formStore.getVersion()]).then(([forms, formVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return this.loadDesign([this.formConfig.url || DEFAULT_FORM_FILE_NAME]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId != null && this.formConfig.appId !== \"\") {\r\n const query = {\r\n appId: this.formConfig.appId,\r\n cacheType: CacheType.FORM.code,\r\n };\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n return this.fetch(url!, query).then((res: FormRestfulResponse) => {\r\n if (res != null && res.code === 1) {\r\n if (res.data != null && res.data.desCacheVersion != null) {\r\n if (String(formVersion) !== String(res.data.desCacheVersion.cacheVersionNumber)) {\r\n const formUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + res.data.desCacheVersion.storageAddress;\r\n return this.loadDesign([formUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n formStore.setVersion(res.data.desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n }\r\n console.log(this.desForms);\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n } else {\r\n return Promise.resolve({ code: 1, msg: \"暂无版本数据\" });\r\n }\r\n } else {\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n }\r\n });\r\n } else {\r\n return Promise.resolve({\r\n code: 0,\r\n msg: \"动态加载需指定当前系统编号(appId)\",\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n if (this.formConfig.urls) {\r\n return new Promise((resolve) => {\r\n this.loadDesign(this.formConfig.urls || []).then(() => {\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n } else {\r\n return this.mergeUrlByType(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n });\r\n }\r\n\r\n /**\r\n * @description: 获取表单或字典数据地址\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByType(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.storageAddress && query.appIds && query.appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.storageAddress);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n /**\r\n * @description: 获取表单或字典数据地址-按照缓存版本号查询字典/表单\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByCacheId(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/downloadById?cacheVersionId=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n const appIds: string[] = query.appIds?.split(\",\") || [];\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.cacheVersionId && query.appIds && appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.cacheVersionId + \"&appId=\" + item.appId + \"&cacheType=\" + type);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程表单配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDesign(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDesign(urls).then((desForms: DesForm[]) => {\r\n const newDesForms: DesForm[] = [];\r\n if (desForms != null && desForms.length > 0) {\r\n desForms\r\n .filter((item) => item.desFormLayouts != null && item.desFormLayouts.length > 0)\r\n .forEach((item) => {\r\n const newDesForm: DesForm | undefined = this.formatDesForm(item);\r\n if (newDesForm != null) {\r\n newDesForms.push(newDesForm);\r\n }\r\n });\r\n }\r\n this.desForms = newDesForms;\r\n formStore.setForms(this.desForms);\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用表单\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDesign(urls: string[]) {\r\n const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n const headers = this.createFileDownloadAuthorizationHeader();\r\n const fetches: any = [];\r\n urls.forEach((url: string) => {\r\n fetches.push(this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetches).then((desForms: DesForm[]) => {\r\n let newDesForms: DesForm[] = [];\r\n desForms?.forEach((desForm: any) => {\r\n newDesForms = newDesForms.concat(desForm);\r\n });\r\n return newDesForms;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/11 14:32\r\n */\r\n initDict(): Promise<FormRestfulResponse> {\r\n return Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), dictStore.getVersion()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, dictVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n const url = this.formConfig.dictUrl ? this.formConfig.dictUrl : DEFAULT_DICT_URL;\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return this.loadDict([url]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId) {\r\n const url1 = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n const url: string = this.formConfig.dictUrl ? this.formConfig.dictUrl : url1 || \"\";\r\n const path: string = routerService.getPathFromUrl(url);\r\n let query: any = routerService.getParamsFromUrl(url) || {};\r\n query.appId = query.appId ? query.appId : this.formConfig.appId;\r\n query.cacheType = query.cacheType ? query.cacheType : CacheType.DICT.code;\r\n query = this.formConfig.dictRestLoadOnlyBody ? {} : query;\r\n const body: any = (this.formConfig.dictRestLoadMode || \"GET\").toLocaleUpperCase() === \"GET\" ? undefined : this.formConfig.dictRestLoadBody;\r\n let headers: any = this.formConfig.dictRestLoadHeaders;\r\n if (headers != null && typeof headers === \"function\") {\r\n headers = (headers as any)();\r\n }\r\n return this.fetch(path, query, body, this.formConfig.dictRestLoadMode, headers).then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n let desCacheVersion: any = res.data.desCacheVersion;\r\n if (res.data && res.data instanceof Array && res.data.length > 0) {\r\n desCacheVersion = res.data[0].desCacheVersion;\r\n }\r\n const distUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + desCacheVersion.storageAddress;\r\n if (String(dictVersion) !== String(desCacheVersion.cacheVersionNumber)) {\r\n return this.loadDict([distUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n dictStore.setVersion(desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n }\r\n } else {\r\n return { code: 1, msg: \"暂无版本数据\" };\r\n }\r\n } else {\r\n return FormToolsService.LOAD_FAIL;\r\n }\r\n });\r\n } else {\r\n return { code: 0, msg: \"动态加载需指定当前系统编号(appId)\" };\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n return this.mergeUrlByType(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return FormToolsService.LOAD_FAIL;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程字典配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDict(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDict(urls).then((sysDictInfos: any) => {\r\n if (sysDictInfos != null) {\r\n // 数据格式化\r\n const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // 字典本地存储\r\n if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n }\r\n if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n }\r\n dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n // const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n // let sysDictInfos: SysDictInfo[] = [];\r\n // if (loadMode === \"dynamic\") {\r\n // const headers = this.createFileDownloadAuthorizationHeader();\r\n // url = this.formConfig.url + \"/ms-loong/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + url;\r\n // return this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig).then((res: any) => {\r\n // sysDictInfos = res;\r\n // if (sysDictInfos != null && sysDictInfos.length > 0) {\r\n // // 数据格式化\r\n // const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n // this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n // this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n // this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n // this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // // 字典本地存储\r\n // if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n // dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n // }\r\n // if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n // dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n // }\r\n // dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n // dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n // }\r\n // return FormToolsService.LOAD_SUCCESS;\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用字典\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDict(dictUrl: string[]) {\r\n const fetchDicts: any = [];\r\n dictUrl.forEach((url: string) => {\r\n fetchDicts.push(this.fetch(url, {}, undefined, \"GET\", undefined, !!this.formConfig.onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetchDicts).then((dictInfos: SysDictInfo[]) => {\r\n let newDictInfos: SysDictInfo[] = [];\r\n const empObj: any = {};\r\n const filterDist: SysDictInfo[] = [];\r\n dictInfos?.forEach((desForm: any) => {\r\n newDictInfos = newDictInfos.concat(desForm);\r\n });\r\n // 去除重复字典\r\n newDictInfos.forEach((item: SysDictInfo) => {\r\n if (!empObj[item.dictId]) {\r\n filterDist.push(item);\r\n empObj[item.dictId] = true;\r\n }\r\n });\r\n return filterDist;\r\n });\r\n }\r\n /**\r\n * @description: 初始化字典可选项\r\n * @author ChenRui\r\n * @date 2020/11/10 20:38\r\n */\r\n public inidDictOptions(sysDictInfos: SysDictInfo[]): DictionaryFormatCollection {\r\n const sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n const sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictInfos.forEach((sysDictInfo) => {\r\n const node: NzTreeNodeOptions = {\r\n key: sysDictInfo.dictId,\r\n value: sysDictInfo.dictCd,\r\n title: sysDictInfo.dictNm,\r\n isLeaf: true,\r\n expanded: false,\r\n children: [],\r\n };\r\n if (sysDictInfo.dictTp === DynamicOptionType.GeneralDictionary.code) {\r\n node.isLeaf = false;\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.comDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictDetailsContrast,\r\n this.nzDictDetailsContrastContrast,\r\n true\r\n );\r\n sysDictDetailOptions.push(node);\r\n } else if (sysDictInfo.dictTp === DynamicOptionType.TreeDictionary.code) {\r\n if (sysDictInfo.treeDictKeyValues != null && sysDictInfo.treeDictKeyValues.length > 0) {\r\n node.isLeaf = false;\r\n sysDictInfo.treeDictKeyValues.forEach((item) => {\r\n if (item.suprDicPk === \"0\") {\r\n item.suprDicPk = \"\";\r\n }\r\n });\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.treeDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictTreeDetailsContrast,\r\n this.nzDictTreeDetailsContrastContrast,\r\n true\r\n );\r\n }\r\n sysDictTreeDetailOptions.push(node);\r\n }\r\n });\r\n const mapNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictDetailOptions);\r\n const mapTreeNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictTreeDetailOptions);\r\n return {\r\n sysDictDetailOptions: sysDictDetailOptions,\r\n sysDictTreeDetailOptions: sysDictTreeDetailOptions,\r\n mapSysDictDetailOptions: mapNodeOptions,\r\n mapSysDictTreeDetailOptions: mapTreeNodeOptions,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 15:48\r\n */\r\n formatDesForm(sourceDesForm: DesForm): DesForm | undefined {\r\n if (sourceDesForm != null) {\r\n const newDesForm: DesForm = new DesForm(sourceDesForm);\r\n const desFormLayouts: DesFormLayout[] = formTreeNodeConvertService.arrayConvertToTreeNode(sourceDesForm.desFormLayouts, this.nodeContrast);\r\n const controls = this.recursionFormatForm([], desFormLayouts);\r\n this.sortControls(controls);\r\n newDesForm.desFormLayouts = [];\r\n newDesForm.controls = controls;\r\n return newDesForm;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 递归格式化\r\n * @author ChenRui\r\n * @date 2020/11/17 10:16\r\n */\r\n private recursionFormatForm(desFormControls: DesFormControl[], desFormLayouts: DesFormLayout[]): Control[] {\r\n const controls: Control[] = [];\r\n if (desFormControls != null && desFormControls.length > 0) {\r\n desFormControls\r\n .filter((item) => !!item.formFieldId)\r\n .forEach((desFormControl) => {\r\n const control: Control = {\r\n code: desFormControl.controlType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormControl.controlType) || {}).name || \"\",\r\n type: Number(desFormControl.controlType) < 50 ? FormFieldClass.Base.code : FormFieldClass.Senior.code,\r\n active: false,\r\n subControls: undefined,\r\n controlAttr: desFormControl,\r\n };\r\n const controlAttr = control.controlAttr as DesFormControl;\r\n controlAttr.isBoldTitle = desFormControl.isBoldTitle === Switch.Enable.code;\r\n controlAttr.isHideTitle = desFormControl.isHideTitle === Switch.Enable.code;\r\n controlAttr.isNotEdit = desFormControl.isNotEdit === Switch.Enable.code;\r\n controlAttr.isShowHoliday = desFormControl.isShowHoliday === Switch.Enable.code;\r\n controlAttr.isHideControl = desFormControl.isHideControl === Switch.Enable.code;\r\n controlAttr.isPasswordBox = desFormControl.isPasswordBox === Switch.Enable.code;\r\n controlAttr.enableAutoComplete = desFormControl.enableAutoComplete === Switch.Enable.code;\r\n controlAttr.isFixedRowHeight = desFormControl.isFixedRowHeight === Switch.Enable.code;\r\n controlAttr.thousandthPercentileFormat = desFormControl.thousandthPercentileFormat === Switch.Enable.code;\r\n controlAttr.isShowCapitalization = desFormControl.isShowCapitalization === Switch.Enable.code;\r\n controlAttr.isLineFeedDisplay = desFormControl.isLineFeedDisplay === Switch.Enable.code;\r\n controlAttr.optionConfig = formBeanUtilsService.parse(desFormControl.optionConfig);\r\n controlAttr.generalDictionaryOptions = formBeanUtilsService.parse(desFormControl.generalDictionaryOptions);\r\n controlAttr.treeShapeOptions = formBeanUtilsService.parse(desFormControl.treeShapeOptions);\r\n controlAttr.isSupportMultiple = desFormControl.isSupportMultiple === Switch.Enable.code;\r\n if (Array.isArray(desFormControl.customUploadType) && desFormControl.customUploadType.length > 0) {\r\n controlAttr.customUploadType = desFormControl.customUploadType.join(\",\");\r\n }\r\n controlAttr.isMultipleChoice = desFormControl.isMultipleChoice === Switch.Enable.code;\r\n controlAttr.isSearchable = desFormControl.isSearchable === Switch.Enable.code;\r\n controlAttr.canAddEntry = desFormControl.canAddEntry === Switch.Enable.code;\r\n controlAttr.isClearButton = desFormControl.isClearButton === Switch.Enable.code;\r\n controlAttr.hiddenDropdown = desFormControl.hiddenDropdown === Switch.Enable.code;\r\n controlAttr.textFold = desFormControl.textFold === Switch.Enable.code;\r\n controlAttr.verificationRules = formBeanUtilsService.parse(desFormControl.verificationRules);\r\n controls.push(control);\r\n });\r\n }\r\n if (desFormLayouts != null && desFormLayouts.length > 0) {\r\n desFormLayouts\r\n .filter((item) => !!item.layoutId)\r\n .forEach((desFormLayout) => {\r\n const layoutControl: Control = {\r\n code: desFormLayout.layoutType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormLayout.layoutType) || {}).name || \"\",\r\n type: FormFieldClass.Layout.code,\r\n active: false,\r\n subControls: [],\r\n controlAttr: new DesFormLayout(desFormLayout),\r\n };\r\n const controlAttr = layoutControl.controlAttr as DesFormLayout;\r\n controlAttr.gridColumnConfig = formBeanUtilsService.parse(desFormLayout.gridColumnConfig);\r\n controlAttr.desFormControls = [];\r\n controlAttr.subDesFormLayout = [];\r\n if ((desFormLayout.subDesFormLayout != null && desFormLayout.subDesFormLayout.length > 0) || (desFormLayout.desFormControls != null && desFormLayout.desFormControls.length > 0)) {\r\n layoutControl.subControls = this.recursionFormatForm(desFormLayout.desFormControls, desFormLayout.subDesFormLayout);\r\n }\r\n controls.push(layoutControl);\r\n });\r\n }\r\n return controls;\r\n }\r\n\r\n /**\r\n * @description: 控件排序\r\n * @author ChenRui\r\n * @date 2020/11/17 11:59\r\n */\r\n private sortControls(controls: Control[]): void {\r\n controls.sort((controlA, controlB) => {\r\n let x = 0;\r\n let y = 0;\r\n if (controlA.type === FormFieldClass.Layout.code) {\r\n x = Number((controlA.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n x = Number((controlA.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n if (controlB.type === FormFieldClass.Layout.code) {\r\n y = Number((controlB.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n y = Number((controlB.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n return x - y;\r\n });\r\n controls.forEach((item) => {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n this.sortControls(item.subControls);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载资源\r\n * @author ChenRui\r\n * @date 2020/11/23 11:00\r\n */\r\n loadResource(formId: string): DesForm {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n return new DesForm({ formId: formId });\r\n }\r\n }\r\n\r\n /**\r\n * @description: rest客户端\r\n * @author ChenRui\r\n * @date 2020/11/19 21:02\r\n */\r\n private fetch(path: string, params: { [key: string]: any }, body?: any, method = \"GET\", headers?: any, simple = false): Promise<any> {\r\n headers = headers ? headers : apiService.createBasicHeaders();\r\n return simple ? fetch(path).then((response) => response.json()) : apiService.fetch(path, params, body, method, headers);\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:14\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n return formValidateService.validateTips(formApis, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 创建认证下载消息头\r\n * @author ChenRui\r\n * @date 2020/8/28 15:18\r\n */\r\n createFileDownloadAuthorizationHeader() {\r\n return {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n responseType: \"blob\",\r\n };\r\n }\r\n}\r\nconst formToolsService: FormToolsService = new FormToolsService();\r\nexport { formToolsService, FormToolsService, DictionaryFormatCollection };\r\n","function transform(currencyDigits: any): any {\r\n // Constants:\r\n const MAXIMUM_NUMBER = 999999999999.99;\r\n // Predefine the radix characters and currency symbols for output:\r\n const CN_ZERO = \"零\";\r\n const CN_ONE = \"壹\";\r\n const CN_TWO = \"贰\";\r\n const CN_THREE = \"叁\";\r\n const CN_FOUR = \"肆\";\r\n const CN_FIVE = \"伍\";\r\n const CN_SIX = \"陆\";\r\n const CN_SEVEN = \"柒\";\r\n const CN_EIGHT = \"捌\";\r\n const CN_NINE = \"玖\";\r\n const CN_TEN = \"拾\";\r\n const CN_HUNDRED = \"佰\";\r\n const CN_THOUSAND = \"仟\";\r\n const CN_TEN_THOUSAND = \"万\";\r\n const CN_HUNDRED_MILLION = \"亿\";\r\n // 满足数字大写转换需求\r\n const CN_SYMBOL = \"\"; // 不带前缀【金额:】\r\n const CN_DOLLAR = \"\"; // 元\r\n const DROP = \"点\"; // 点 2023年8月31日10:51:25\r\n const CN_TEN_CENT = \"\"; // 角\r\n const CN_CENT = \"\"; // 分\r\n const CN_INTEGER = \"\"; // 整\r\n\r\n // constiables:\r\n let integral; // Represent integral part of digit number.\r\n let decimal; // Represent decimal part of digit number.\r\n let outputCharacters; // The output result.\r\n let parts = [];\r\n let digits = [],\r\n radices = [],\r\n bigRadices = [],\r\n decimals = [];\r\n let zeroCount;\r\n let i, p, d;\r\n let quotient, modulus;\r\n\r\n // Validate input string:\r\n currencyDigits = currencyDigits != undefined ? currencyDigits.toString() : \"\";\r\n\r\n let prefix = \"\";\r\n if (currencyDigits != null && currencyDigits.indexOf(\"-\") === 0) {\r\n prefix = \"负\";\r\n currencyDigits = currencyDigits.substr(1);\r\n }\r\n if (currencyDigits === \"\") {\r\n return \"空\"; // 默认提示\r\n }\r\n if (currencyDigits.match(/[^,.\\d]/) != null) {\r\n return \"您的输入含有无效字符\";\r\n }\r\n if (currencyDigits.match(/^((\\d{1,3}(,\\d{3})*(.((\\d{3},)*\\d{1,3}))?)|(\\d+(.\\d+)?))$/) == null) {\r\n return \"您的输入的数字格式不正确\";\r\n }\r\n\r\n // Normalize the format of input digits:\r\n currencyDigits = currencyDigits.replace(/,/g, \"\"); // Remove comma delimiters.\r\n currencyDigits = currencyDigits.replace(/^0+/, \"\"); // Trim zeros at the beginning.\r\n // Assert the number is not greater than the maximum number.\r\n if (Number(currencyDigits) > MAXIMUM_NUMBER) {\r\n let divisor = 1000000000000;\r\n if (currencyDigits.indexOf(\".\") > -1) {\r\n const num = currencyDigits.split(\".\")[1].length;\r\n for (let i = 0; i < num; i++) {\r\n divisor = divisor * 10;\r\n }\r\n currencyDigits = currencyDigits.replace(\".\", \"\");\r\n }\r\n return Number(currencyDigits) / Number(divisor) + \"万亿元\";\r\n }\r\n\r\n // Process the coversion from currency digits to characters:\r\n // Separate integral and decimal parts before processing coversion:\r\n parts = currencyDigits.split(\".\");\r\n if (parts.length > 1) {\r\n integral = parts[0];\r\n decimal = parts[1];\r\n // Cut down redundant decimal digits that are after the second.\r\n decimal = decimal.substr(0, 2);\r\n } else {\r\n integral = parts[0];\r\n decimal = \"\";\r\n }\r\n // Prepare the characters corresponding to the digits:\r\n digits = [CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE];\r\n radices = [\"\", CN_TEN, CN_HUNDRED, CN_THOUSAND];\r\n bigRadices = [\"\", CN_TEN_THOUSAND, CN_HUNDRED_MILLION];\r\n decimals = [CN_TEN_CENT, CN_CENT];\r\n // Start processing:\r\n outputCharacters = \"\";\r\n // Process integral part if it is larger than 0:\r\n if (Number(integral) > 0) {\r\n zeroCount = 0;\r\n for (i = 0; i < integral.length; i++) {\r\n p = integral.length - i - 1;\r\n d = integral.substr(i, 1);\r\n quotient = p / 4;\r\n modulus = p % 4;\r\n if (d === \"0\") {\r\n zeroCount++;\r\n } else {\r\n if (zeroCount > 0) {\r\n outputCharacters += digits[0];\r\n }\r\n zeroCount = 0;\r\n outputCharacters += digits[Number(d)] + radices[modulus];\r\n }\r\n if (modulus === 0 && zeroCount < 4) {\r\n outputCharacters += bigRadices[quotient];\r\n zeroCount = 0;\r\n }\r\n }\r\n // outputCharacters += CN_DOLLAR; // 原来的【元】\r\n } else {\r\n //整数位为'零'\r\n outputCharacters = digits[Number(integral)];\r\n }\r\n // Process decimal part if there is:\r\n //校验小数位是否有值\r\n if (decimal !== \"\" && decimal !== \"0\" && decimal !== \"00\") {\r\n outputCharacters += DROP; // new 2023年8月31日10:52:54\r\n for (i = 0; i < decimal.length; i++) {\r\n d = decimal.substr(i, 1);\r\n if (d !== \"0\") {\r\n outputCharacters += digits[Number(d)] + decimals[i];\r\n } else if (i === 0) {\r\n //处理金额十分位数值为0时的大写转换\r\n outputCharacters += digits[Number(d)];\r\n }\r\n }\r\n }\r\n // Confirm and return the final output string:\r\n if (outputCharacters === \"\") {\r\n outputCharacters = CN_ZERO + CN_DOLLAR;\r\n }\r\n if (decimal === \"\") {\r\n outputCharacters += CN_INTEGER;\r\n }\r\n outputCharacters = CN_SYMBOL + prefix + outputCharacters;\r\n return outputCharacters;\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst amountCapitalization = (data: any) => {\r\n return transform(data);\r\n};\r\n\r\nexport default amountCapitalization;\r\n","export class DesFormControl {\r\n formFieldId: string;\r\n formId: string;\r\n layoutId: string;\r\n boundProperty: string;\r\n extendBoundPropertyOne: string;\r\n extendBoundPropertyTwo: string;\r\n formFieldDescribe: string;\r\n controlType: string;\r\n tableFieldOrder: number | undefined;\r\n fieldDefaultValue: any;\r\n titleWidth: string;\r\n isBoldTitle: string | boolean;\r\n isHideTitle: string | boolean;\r\n titleColor: string;\r\n placeholder: string;\r\n tips: string;\r\n isNotEdit: string | boolean;\r\n bindingPrefix: string;\r\n bindingSuffix: string;\r\n builtInFrontLabel: string;\r\n builtInPostLabel: string;\r\n isHideControl: string | boolean;\r\n isShowHoliday: string | boolean;\r\n controlWidth: string;\r\n isPasswordBox: string | boolean;\r\n initRowHeight: number | undefined;\r\n isFixedRowHeight: string | boolean;\r\n formatType: string;\r\n minValue: number | undefined;\r\n maxValue: number | undefined;\r\n step: number | undefined;\r\n decimalPlaces: number | undefined;\r\n thousandthPercentileFormat: string | boolean;\r\n unit: string;\r\n moneyUnit: string;\r\n defineOptionalUnits: string;\r\n defineOptionalUnitsDefault: string;\r\n zoomType: string;\r\n zoomMultiple: number | undefined;\r\n isShowCapitalization: string | boolean;\r\n isLineFeedDisplay: string | boolean;\r\n isOptionType: string | boolean;\r\n optionConfig: any;\r\n dynamicOptionType: string;\r\n generalDictionary: string;\r\n generalDictionaryOptions: any;\r\n treeShape: string;\r\n treeShapeOptions: any;\r\n disableNonLeafNodes: string | boolean;\r\n dateFormat: string;\r\n timeFormat: string;\r\n isSupportMultiple: string | boolean;\r\n maxUploadNumber: number | undefined;\r\n limitSize: number | undefined;\r\n supportUploadType: string;\r\n customUploadType: any;\r\n extendUploadType: string;\r\n attachmentExtendProperties: string;\r\n isMultipleChoice: string | boolean;\r\n isSearchable: string | boolean;\r\n canAddEntry: string | boolean;\r\n isClearButton: string | boolean;\r\n hiddenDropdown: string | boolean; // new by 2021-11-9\r\n onOpeningValue: string;\r\n whenClosedValue: string;\r\n onOpeningText: string;\r\n whenClosedText: string;\r\n customFieldName: string; // new by 2021-11-9\r\n textFold: string | boolean;\r\n enableAutoComplete: string | boolean; // new by 2022-05-07\r\n autoCompleteOptions: any[]; // new by 2022-05-07\r\n verificationRules: any;\r\n busAttr: any;\r\n checkboxStyle: string | boolean; // 多选框选项标签样式\r\n itemWidth: string | boolean; // 多选框选项标签样式\r\n isTreeOpen: string | boolean; // 树形选择框是否展开\r\n changeOnSelect: string | boolean; // 是否允许级联选择框只选中父级选项\r\n textareaRows: number | undefined; // 设置textarea组件默认展示行数\r\n constructor(\r\n options: {\r\n formFieldId?: string;\r\n formId?: string;\r\n layoutId?: string;\r\n boundProperty?: string;\r\n extendBoundPropertyOne?: string;\r\n extendBoundPropertyTwo?: string;\r\n formFieldDescribe?: string;\r\n controlType?: string;\r\n tableFieldOrder?: number;\r\n fieldDefaultValue?: any;\r\n titleWidth?: string;\r\n isBoldTitle?: string;\r\n isHideTitle?: string;\r\n titleColor?: string;\r\n placeholder?: string;\r\n tips?: string;\r\n isNotEdit?: string;\r\n bindingPrefix?: string;\r\n bindingSuffix?: string;\r\n builtInFrontLabel?: string;\r\n builtInPostLabel?: string;\r\n isHideControl?: string;\r\n isShowHoliday?: string;\r\n controlWidth?: string;\r\n isPasswordBox?: string;\r\n initRowHeight?: number;\r\n isFixedRowHeight?: string;\r\n formatType?: string;\r\n minValue?: number;\r\n maxValue?: number;\r\n step?: number;\r\n decimalPlaces?: number;\r\n thousandthPercentileFormat?: string;\r\n unit?: string;\r\n moneyUnit?: string;\r\n defineOptionalUnits?: string;\r\n defineOptionalUnitsDefault?: string;\r\n zoomType?: string;\r\n zoomMultiple?: number;\r\n isShowCapitalization?: string;\r\n isLineFeedDisplay?: string;\r\n isOptionType?: string;\r\n optionConfig?: any;\r\n dynamicOptionType?: string;\r\n generalDictionary?: string;\r\n generalDictionaryOptions?: any;\r\n treeShape?: string;\r\n treeShapeOptions?: any;\r\n disableNonLeafNodes?: string | boolean;\r\n dateFormat?: string;\r\n timeFormat?: string;\r\n isSupportMultiple?: string;\r\n maxUploadNumber?: number;\r\n limitSize?: number;\r\n supportUploadType?: string;\r\n customUploadType?: any;\r\n extendUploadType?: string;\r\n attachmentExtendProperties?: string;\r\n isMultipleChoice?: string;\r\n isSearchable?: string;\r\n canAddEntry?: string;\r\n isClearButton?: string;\r\n hiddenDropdown?: string;\r\n onOpeningValue?: string;\r\n whenClosedValue?: string;\r\n onOpeningText?: string;\r\n whenClosedText?: string;\r\n customFieldName?: string;\r\n textFold?: string;\r\n enableAutoComplete?: string;\r\n autoCompleteOptions?: any[];\r\n verificationRules?: any;\r\n busAttr?: any;\r\n checkboxStyle?: string | boolean;\r\n isTreeOpen?: string | boolean;\r\n itemWidth?: string | boolean;\r\n changeOnSelect?: string | boolean;\r\n textareaRows?: number | undefined;\r\n } = {}\r\n ) {\r\n this.formFieldId = options.formFieldId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.layoutId = options.layoutId || \"\";\r\n this.boundProperty = options.boundProperty || \"\";\r\n this.extendBoundPropertyOne = options.extendBoundPropertyOne || \"\";\r\n this.extendBoundPropertyTwo = options.extendBoundPropertyTwo || \"\";\r\n this.formFieldDescribe = options.formFieldDescribe || \"\";\r\n this.controlType = options.controlType || \"\";\r\n this.tableFieldOrder = options.tableFieldOrder || undefined;\r\n this.fieldDefaultValue = options.fieldDefaultValue || \"\";\r\n this.titleWidth = options.titleWidth || \"\";\r\n this.isBoldTitle = options.isBoldTitle || \"\";\r\n this.isHideTitle = options.isHideTitle || \"\";\r\n this.titleColor = options.titleColor || \"\";\r\n this.placeholder = options.placeholder || \"\";\r\n this.tips = options.tips || \"\";\r\n this.isNotEdit = options.isNotEdit || \"\";\r\n this.bindingPrefix = options.bindingPrefix || \"\";\r\n this.bindingSuffix = options.bindingSuffix || \"\";\r\n this.builtInFrontLabel = options.builtInFrontLabel || \"\";\r\n this.builtInPostLabel = options.builtInPostLabel || \"\";\r\n this.isHideControl = options.isHideControl || \"\";\r\n this.isShowHoliday = options.isShowHoliday || \"\";\r\n this.controlWidth = options.controlWidth || \"\";\r\n this.isPasswordBox = options.isPasswordBox || \"\";\r\n this.initRowHeight = options.initRowHeight || undefined;\r\n this.isFixedRowHeight = options.isFixedRowHeight || \"\";\r\n this.formatType = options.formatType || \"\";\r\n this.minValue = options.minValue || undefined;\r\n this.maxValue = options.maxValue || undefined;\r\n this.step = options.step || undefined;\r\n this.decimalPlaces = options.decimalPlaces || undefined;\r\n this.thousandthPercentileFormat = options.thousandthPercentileFormat || \"\";\r\n this.unit = options.unit || \"\";\r\n this.moneyUnit = options.moneyUnit || \"\";\r\n this.defineOptionalUnits = options.defineOptionalUnits || \"\";\r\n this.defineOptionalUnitsDefault = options.defineOptionalUnitsDefault || \"\";\r\n this.zoomType = options.zoomType || \"\";\r\n this.zoomMultiple = options.zoomMultiple || undefined;\r\n this.isShowCapitalization = options.isShowCapitalization || \"\";\r\n this.isLineFeedDisplay = options.isLineFeedDisplay || \"\";\r\n this.isOptionType = options.isOptionType || \"\";\r\n this.optionConfig = options.optionConfig || \"\";\r\n this.dynamicOptionType = options.dynamicOptionType || \"\";\r\n this.generalDictionary = options.generalDictionary || \"\";\r\n this.generalDictionaryOptions = options.generalDictionaryOptions || \"\";\r\n this.treeShape = options.treeShape || \"\";\r\n this.treeShapeOptions = options.treeShapeOptions || \"\";\r\n this.disableNonLeafNodes = options.disableNonLeafNodes || \"\";\r\n this.dateFormat = options.dateFormat || \"\";\r\n this.timeFormat = options.timeFormat || \"\";\r\n this.isSupportMultiple = options.isSupportMultiple || \"\";\r\n this.maxUploadNumber = options.maxUploadNumber || undefined;\r\n this.limitSize = options.limitSize || undefined;\r\n this.supportUploadType = options.supportUploadType || \"\";\r\n this.customUploadType = options.customUploadType;\r\n this.extendUploadType = options.extendUploadType || \"\";\r\n this.attachmentExtendProperties = options.attachmentExtendProperties || \"\";\r\n this.isMultipleChoice = options.isMultipleChoice || \"\";\r\n this.isSearchable = options.isSearchable || \"\";\r\n this.canAddEntry = options.canAddEntry || \"\";\r\n this.isClearButton = options.isClearButton || \"\";\r\n this.hiddenDropdown = options.hiddenDropdown || \"\";\r\n this.onOpeningValue = options.onOpeningValue || \"\";\r\n this.whenClosedValue = options.whenClosedValue || \"\";\r\n this.onOpeningText = options.onOpeningText || \"\";\r\n this.whenClosedText = options.whenClosedText || \"\";\r\n this.customFieldName = options.customFieldName || \"\";\r\n this.textFold = options.textFold || \"\";\r\n this.enableAutoComplete = options.enableAutoComplete || \"\";\r\n this.autoCompleteOptions = options.autoCompleteOptions || [];\r\n this.verificationRules = options.verificationRules;\r\n this.busAttr = options.busAttr;\r\n this.checkboxStyle = options.checkboxStyle || \"\";\r\n this.isTreeOpen = options.isTreeOpen || \"\";\r\n this.itemWidth = options.itemWidth || \"\";\r\n this.changeOnSelect = options.changeOnSelect || \"\";\r\n this.textareaRows = options.textareaRows || 3;\r\n }\r\n}\r\n","export abstract class AbstractControl {\r\n value: any;\r\n [key: string]: any;\r\n\r\n abstract get(path: Array<string | number> | string): AbstractControl | null;\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\nimport { ValidateStatus } from \"../constants/enum/validate-status.enum\";\r\n\r\nexport interface ValidateResult {\r\n validateStatus?: string;\r\n errorMsg?: any;\r\n}\r\nexport interface ValidateReport {\r\n key: string;\r\n name: string;\r\n errorMsg: any;\r\n controlType: string;\r\n}\r\nexport type ValidateFunc = (val: any) => ValidateResult;\r\nexport interface Validate {\r\n name: string;\r\n validateFunc: ValidateFunc;\r\n}\r\nexport type TextNoticeCallback = (val?: any) => string;\r\n\r\n/**\r\n * @description: 控件对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormControl extends AbstractControl {\r\n history: any[] = []; // 字段历史\r\n validates: Validate[] = []; // 校验规则\r\n textNoticeCallback: TextNoticeCallback | undefined; // 获取文本内容回调\r\n\r\n constructor(formState?: any) {\r\n super();\r\n this.setValue(formState);\r\n }\r\n\r\n setValue(value: any) {\r\n this.value = value || undefined;\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n return this;\r\n }\r\n\r\n /**\r\n * @description: 添加校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:05\r\n */\r\n addValidate(validate: Validate | Validate[]): void {\r\n let validates: Validate[] = [];\r\n if (!(validate instanceof Array)) {\r\n validates.push(validate);\r\n } else {\r\n validates = validate;\r\n }\r\n if (validates && validates.length > 0) {\r\n for (let i = 0; i < validates.length; i++) {\r\n if (validates[i].name) {\r\n const index = this.validates.findIndex((item) => item.name === validates[i].name);\r\n if (index > -1) {\r\n this.validates[index].validateFunc = validates[i].validateFunc;\r\n } else {\r\n this.validates.push(validates[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:06\r\n */\r\n removeValidate(name: string): void {\r\n if (name) {\r\n const index = this.validates.findIndex((item) => item.name === name);\r\n if (index > -1) {\r\n this.validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:47\r\n */\r\n getValidate(name: string): Validate | any {\r\n if (name) {\r\n return this.validates.find((item) => item.name === name);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:08\r\n */\r\n validate(val: any = this.value): ValidateResult {\r\n for (let i = 0; i < this.validates.length; i++) {\r\n const result: ValidateResult = this.validates[i].validateFunc(val);\r\n if (result && result.validateStatus !== ValidateStatus.Success.code) {\r\n return result;\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n errorMsg: null,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:56\r\n */\r\n text(): string {\r\n if (this.textNoticeCallback) {\r\n return this.textNoticeCallback();\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\n\r\n/**\r\n * @description: 表单对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormGroup extends AbstractControl {\r\n controls: { [key: string]: AbstractControl };\r\n\r\n constructor(controls: { [key: string]: AbstractControl } = {}) {\r\n super();\r\n this.controls = controls;\r\n }\r\n\r\n /**\r\n * @description: 添加控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n addControl(name: string, control: AbstractControl): void {\r\n this.controls[name] = control;\r\n }\r\n\r\n /**\r\n * @description: 移除控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n removeControl(name: string): void {\r\n if (this.controls[name] != null) {\r\n delete this.controls[name];\r\n }\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n if (typeof path === \"string\") {\r\n return this.controls[path];\r\n }\r\n return null;\r\n }\r\n}\r\n","import { OptionType } from \"../constants/enum/option-type.enum\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\n\r\nfunction transformReverse(controlAttr: any, data: any[]): void {\r\n if (data == null) {\r\n data = [];\r\n }\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n controlAttr.optionConfig = data;\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n controlAttr.generalDictionaryOptions = data;\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n controlAttr.treeShapeOptions = data;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction transform(controlAttr: any): any[] {\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n return controlAttr.optionConfig || [];\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n return controlAttr.generalDictionaryOptions || [];\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n return controlAttr.treeShapeOptions || [];\r\n }\r\n }\r\n }\r\n return [];\r\n}\r\n\r\n/**\r\n * @description: 根据字典类型获取可选项\r\n * @author ChenRui\r\n * @date 2020/12/30 11:18\r\n */\r\nconst extractOptions = (controlAttr: any, ...args: any[]): any[] => {\r\n return transform(controlAttr);\r\n};\r\n\r\n/**\r\n * @description: 保存可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:17\r\n */\r\nconst storageOptions = (controlAttr: any, data: any[]): void => {\r\n return transformReverse(controlAttr, data);\r\n};\r\nexport { storageOptions, extractOptions };\r\n","import { ZoomType } from \"@/constants/enum/zoom-type\";\r\nimport { FormControl } from \"@/domain/FormControl\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { getCurrentInstance } from \"vue\";\r\n\r\n/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(data: any, formControl: FormControl) {\r\n const proxy: any = getCurrentInstance()?.proxy;\r\n const mathjs: MathJsStatic = proxy?.$mathjs as MathJsStatic;\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (String(formControl.value) === \"0\") {\r\n data = 0;\r\n }\r\n return data;\r\n}\r\nconst zoomMultiple = (code: any, formControl: FormControl) => {\r\n return encode(code, formControl);\r\n};\r\n\r\nexport default zoomMultiple;\r\n","/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) {\r\n if (switchEnumFiled != null && Object.values(switchEnumFiled).length > 0) {\r\n for (const switchEnum of Object.values(switchEnumFiled) as any) {\r\n return switchEnum[attribute || \"name\"] || defaultVal;\r\n }\r\n }\r\n return defaultVal || \"\";\r\n}\r\nconst switchEnumConvert = (code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) => {\r\n return encode(code, switchEnumFiled, attribute, defaultVal);\r\n};\r\n\r\nexport default switchEnumConvert;\r\n","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-12085cfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"lo-text-container\", [{ 'lo-text-column': !_ctx.unfold }, { 'lo-text-row': _ctx.unfold }]])\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['lo-text-box', { 'lo-over': !_ctx.ifOver }, { 'lo-over-hidden': !_ctx.unfold }, { 'lo-unfold': _ctx.ifOver && !_ctx.unfold }]),\n ref: \"textBox\"\n }, [\n _createElementVNode(\"span\", {\n class: \"lo-text\",\n ref: \"spanBox\",\n title: _ctx.content\n }, [\n (_ctx.linkList.indexOf(_ctx.fieldKey) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.linkClick(_ctx.content)))\n }, _toDisplayString(_ctx.content), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.content), 1))\n ], 8, _hoisted_1)\n ], 2),\n (_ctx.ifOver)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.unfold = !_ctx.unfold))\n }, _toDisplayString(_ctx.unfold ? \"收起\" : \"展开\"), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { Prop, Ref, Watch } from \"vue-property-decorator\";\r\nimport { Options, Vue } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n name: \"StretchText\",\r\n})\r\nexport default class StretchText extends Vue {\r\n ifOver = false; // 文本是否超出三行,默认否\r\n unfold = false; // 文本是否是展开状态 默认为收起\r\n @Prop({ default: false }) enableStretchText!: boolean;\r\n @Prop({ default: \"\" }) content!: string;\r\n @Prop({ default: \"\" }) fieldKey!: string; // 元素码值key\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Ref() readonly spanBox: any;\r\n @Ref() readonly textBox: any;\r\n\r\n mounted(): void {\r\n this.onContentHandle();\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:string 元素值value)\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:24\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"content\")\r\n onContentHandle(): void {\r\n // 判断是否显示展开收起按钮\r\n this.ifOver = this.spanBox.offsetHeight > this.textBox.offsetHeight;\r\n }\r\n}\r\n","import { render } from \"./StretchText.vue?vue&type=template&id=12085cfe&scoped=true&ts=true\"\nimport script from \"./StretchText.vue?vue&type=script&lang=ts\"\nexport * from \"./StretchText.vue?vue&type=script&lang=ts\"\n\nimport \"./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12085cfe\"]])\n\nexport default __exports__","/*eslint-disable*/\r\nconst char_dict: any = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\"\r\nconst full_dict: any = { \"a\": \"\\u554a\\u963f\\u9515\", \"ai\": \"\\u57c3\\u6328\\u54ce\\u5509\\u54c0\\u7691\\u764c\\u853c\\u77ee\\u827e\\u788d\\u7231\\u9698\\u8bf6\\u6371\\u55f3\\u55cc\\u5ad2\\u7477\\u66a7\\u7839\\u953f\\u972d\", \"an\": \"\\u978d\\u6c28\\u5b89\\u4ffa\\u6309\\u6697\\u5cb8\\u80fa\\u6848\\u8c19\\u57ef\\u63de\\u72b4\\u5eb5\\u6849\\u94f5\\u9e4c\\u9878\\u9eef\", \"ang\": \"\\u80ae\\u6602\\u76ce\", \"ao\": \"\\u51f9\\u6556\\u71ac\\u7ff1\\u8884\\u50b2\\u5965\\u61ca\\u6fb3\\u5773\\u62d7\\u55f7\\u5662\\u5c99\\u5ed2\\u9068\\u5aaa\\u9a9c\\u8071\\u87af\\u93ca\\u9ccc\\u93d6\", \"ba\": \"\\u82ad\\u634c\\u6252\\u53ed\\u5427\\u7b06\\u516b\\u75a4\\u5df4\\u62d4\\u8dcb\\u9776\\u628a\\u8019\\u575d\\u9738\\u7f62\\u7238\\u8307\\u83dd\\u8406\\u636d\\u5c9c\\u705e\\u6777\\u94af\\u7c91\\u9c85\\u9b43\", \"bai\": \"\\u767d\\u67cf\\u767e\\u6446\\u4f70\\u8d25\\u62dc\\u7a17\\u859c\\u63b0\\u97b4\", \"ban\": \"\\u6591\\u73ed\\u642c\\u6273\\u822c\\u9881\\u677f\\u7248\\u626e\\u62cc\\u4f34\\u74e3\\u534a\\u529e\\u7eca\\u962a\\u5742\\u8c73\\u94a3\\u7622\\u764d\\u8228\", \"bang\": \"\\u90a6\\u5e2e\\u6886\\u699c\\u8180\\u7ed1\\u68d2\\u78c5\\u868c\\u9551\\u508d\\u8c24\\u84a1\\u8783\", \"bao\": \"\\u82de\\u80de\\u5305\\u8912\\u96f9\\u4fdd\\u5821\\u9971\\u5b9d\\u62b1\\u62a5\\u66b4\\u8c79\\u9c8d\\u7206\\u52f9\\u8446\\u5b80\\u5b62\\u7172\\u9e28\\u8913\\u8db5\\u9f85\", \"bo\": \"\\u5265\\u8584\\u73bb\\u83e0\\u64ad\\u62e8\\u94b5\\u6ce2\\u535a\\u52c3\\u640f\\u94c2\\u7b94\\u4f2f\\u5e1b\\u8236\\u8116\\u818a\\u6e24\\u6cca\\u9a73\\u4eb3\\u8543\\u5575\\u997d\\u6a97\\u64d8\\u7934\\u94b9\\u9e41\\u7c38\\u8ddb\", \"bei\": \"\\u676f\\u7891\\u60b2\\u5351\\u5317\\u8f88\\u80cc\\u8d1d\\u94a1\\u500d\\u72c8\\u5907\\u60eb\\u7119\\u88ab\\u5b5b\\u9642\\u90b6\\u57e4\\u84d3\\u5457\\u602b\\u6096\\u789a\\u9e4e\\u8919\\u943e\", \"ben\": \"\\u5954\\u82ef\\u672c\\u7b28\\u755a\\u574c\\u951b\", \"beng\": \"\\u5d29\\u7ef7\\u752d\\u6cf5\\u8e66\\u8ff8\\u552a\\u5623\\u750f\", \"bi\": \"\\u903c\\u9f3b\\u6bd4\\u9119\\u7b14\\u5f7c\\u78a7\\u84d6\\u853d\\u6bd5\\u6bd9\\u6bd6\\u5e01\\u5e87\\u75f9\\u95ed\\u655d\\u5f0a\\u5fc5\\u8f9f\\u58c1\\u81c2\\u907f\\u965b\\u5315\\u4ef3\\u4ffe\\u8298\\u835c\\u8378\\u5421\\u54d4\\u72f4\\u5eb3\\u610e\\u6ed7\\u6fde\\u5f3c\\u59a3\\u5a62\\u5b16\\u74a7\\u8d32\\u7540\\u94cb\\u79d5\\u88e8\\u7b5a\\u7b85\\u7be6\\u822d\\u895e\\u8df8\\u9ac0\", \"bian\": \"\\u97ad\\u8fb9\\u7f16\\u8d2c\\u6241\\u4fbf\\u53d8\\u535e\\u8fa8\\u8fa9\\u8fab\\u904d\\u533e\\u5f01\\u82c4\\u5fed\\u6c74\\u7f0f\\u7178\\u782d\\u78a5\\u7a39\\u7a86\\u8759\\u7b3e\\u9cca\", \"biao\": \"\\u6807\\u5f6a\\u8198\\u8868\\u5a4a\\u9aa0\\u98d1\\u98d9\\u98da\\u706c\\u9556\\u9573\\u762d\\u88f1\\u9cd4\", \"bie\": \"\\u9cd6\\u618b\\u522b\\u762a\\u8e69\\u9cd8\", \"bin\": \"\\u5f6c\\u658c\\u6fd2\\u6ee8\\u5bbe\\u6448\\u50a7\\u6d5c\\u7f24\\u73a2\\u6ba1\\u8191\\u9554\\u9acc\\u9b13\", \"bing\": \"\\u5175\\u51b0\\u67c4\\u4e19\\u79c9\\u997c\\u70b3\\u75c5\\u5e76\\u7980\\u90b4\\u6452\\u7ee0\\u678b\\u69df\\u71f9\", \"bu\": \"\\u6355\\u535c\\u54fa\\u8865\\u57e0\\u4e0d\\u5e03\\u6b65\\u7c3f\\u90e8\\u6016\\u62ca\\u535f\\u900b\\u74ff\\u6661\\u949a\\u91ad\", \"ca\": \"\\u64e6\\u5693\\u7924\", \"cai\": \"\\u731c\\u88c1\\u6750\\u624d\\u8d22\\u776c\\u8e29\\u91c7\\u5f69\\u83dc\\u8521\", \"can\": \"\\u9910\\u53c2\\u8695\\u6b8b\\u60ed\\u60e8\\u707f\\u9a96\\u74a8\\u7cb2\\u9eea\", \"cang\": \"\\u82cd\\u8231\\u4ed3\\u6ca7\\u85cf\\u4f27\", \"cao\": \"\\u64cd\\u7cd9\\u69fd\\u66f9\\u8349\\u8279\\u5608\\u6f15\\u87ac\\u825a\", \"ce\": \"\\u5395\\u7b56\\u4fa7\\u518c\\u6d4b\\u5202\\u5e3b\\u607b\", \"ceng\": \"\\u5c42\\u8e6d\\u564c\", \"cha\": \"\\u63d2\\u53c9\\u832c\\u8336\\u67e5\\u78b4\\u643d\\u5bdf\\u5c94\\u5dee\\u8be7\\u7339\\u9987\\u6c4a\\u59f9\\u6748\\u6942\\u69ce\\u6aab\\u9497\\u9538\\u9572\\u8869\", \"chai\": \"\\u62c6\\u67f4\\u8c7a\\u4faa\\u8308\\u7625\\u867f\\u9f87\", \"chan\": \"\\u6400\\u63ba\\u8749\\u998b\\u8c17\\u7f20\\u94f2\\u4ea7\\u9610\\u98a4\\u5181\\u8c04\\u8c36\\u8487\\u5edb\\u5fcf\\u6f7a\\u6fb6\\u5b71\\u7fbc\\u5a75\\u5b17\\u9aa3\\u89c7\\u7985\\u9561\\u88e3\\u87fe\\u8e94\", \"chang\": \"\\u660c\\u7316\\u573a\\u5c1d\\u5e38\\u957f\\u507f\\u80a0\\u5382\\u655e\\u7545\\u5531\\u5021\\u4f25\\u9b2f\\u82cc\\u83d6\\u5f9c\\u6005\\u60dd\\u960a\\u5a3c\\u5ae6\\u6636\\u6c05\\u9cb3\", \"chao\": \"\\u8d85\\u6284\\u949e\\u671d\\u5632\\u6f6e\\u5de2\\u5435\\u7092\\u600a\\u7ec9\\u6641\\u8016\", \"che\": \"\\u8f66\\u626f\\u64a4\\u63a3\\u5f7b\\u6f88\\u577c\\u5c6e\\u7817\", \"chen\": \"\\u90f4\\u81e3\\u8fb0\\u5c18\\u6668\\u5ff1\\u6c89\\u9648\\u8d81\\u886c\\u79f0\\u8c0c\\u62bb\\u55d4\\u5bb8\\u741b\\u6987\\u809c\\u80c2\\u789c\\u9f80\", \"cheng\": \"\\u6491\\u57ce\\u6a59\\u6210\\u5448\\u4e58\\u7a0b\\u60e9\\u6f84\\u8bda\\u627f\\u901e\\u9a8b\\u79e4\\u57d5\\u5d4a\\u5fb5\\u6d48\\u67a8\\u67fd\\u6a18\\u665f\\u584d\\u77a0\\u94d6\\u88ce\\u86cf\\u9172\", \"chi\": \"\\u5403\\u75f4\\u6301\\u5319\\u6c60\\u8fdf\\u5f1b\\u9a70\\u803b\\u9f7f\\u4f88\\u5c3a\\u8d64\\u7fc5\\u65a5\\u70bd\\u50ba\\u5880\\u82aa\\u830c\\u640b\\u53f1\\u54e7\\u557b\\u55e4\\u5f73\\u996c\\u6cb2\\u5ab8\\u6555\\u80dd\\u7719\\u7735\\u9e31\\u761b\\u892b\\u86a9\\u87ad\\u7b1e\\u7bea\\u8c49\\u8e05\\u8e1f\\u9b51\", \"chong\": \"\\u5145\\u51b2\\u866b\\u5d07\\u5ba0\\u833a\\u5fe1\\u61a7\\u94f3\\u825f\", \"chou\": \"\\u62bd\\u916c\\u7574\\u8e0c\\u7a20\\u6101\\u7b79\\u4ec7\\u7ef8\\u7785\\u4e11\\u4fe6\\u5733\\u5e31\\u60c6\\u6eb4\\u59af\\u7633\\u96e0\\u9c8b\", \"chu\": \"\\u81ed\\u521d\\u51fa\\u6a71\\u53a8\\u8e87\\u9504\\u96cf\\u6ec1\\u9664\\u695a\\u7840\\u50a8\\u77d7\\u6410\\u89e6\\u5904\\u4e8d\\u520d\\u61b7\\u7ecc\\u6775\\u696e\\u6a17\\u870d\\u8e70\\u9edc\", \"chuan\": \"\\u63e3\\u5ddd\\u7a7f\\u693d\\u4f20\\u8239\\u5598\\u4e32\\u63be\\u821b\\u60f4\\u9044\\u5ddb\\u6c1a\\u948f\\u9569\\u8221\", \"chuang\": \"\\u75ae\\u7a97\\u5e62\\u5e8a\\u95ef\\u521b\\u6006\", \"chui\": \"\\u5439\\u708a\\u6376\\u9524\\u5782\\u9672\\u68f0\\u69cc\", \"chun\": \"\\u6625\\u693f\\u9187\\u5507\\u6df3\\u7eaf\\u8822\\u4fc3\\u83bc\\u6c8c\\u80ab\\u6710\\u9e51\\u877d\", \"chuo\": \"\\u6233\\u7ef0\\u851f\\u8fb6\\u8f8d\\u955e\\u8e14\\u9f8a\", \"ci\": \"\\u75b5\\u8328\\u78c1\\u96cc\\u8f9e\\u6148\\u74f7\\u8bcd\\u6b64\\u523a\\u8d50\\u6b21\\u8360\\u5472\\u5d6f\\u9e5a\\u8785\\u7ccd\\u8d91\", \"cong\": \"\\u806a\\u8471\\u56f1\\u5306\\u4ece\\u4e1b\\u506c\\u82c1\\u6dd9\\u9aa2\\u742e\\u7481\\u679e\", \"cu\": \"\\u51d1\\u7c97\\u918b\\u7c07\\u731d\\u6b82\\u8e59\", \"cuan\": \"\\u8e7f\\u7be1\\u7a9c\\u6c46\\u64ba\\u6615\\u7228\", \"cui\": \"\\u6467\\u5d14\\u50ac\\u8106\\u7601\\u7cb9\\u6dec\\u7fe0\\u8403\\u60b4\\u7480\\u69b1\\u96b9\", \"cun\": \"\\u6751\\u5b58\\u5bf8\\u78cb\\u5fd6\\u76b4\", \"cuo\": \"\\u64ae\\u6413\\u63aa\\u632b\\u9519\\u539d\\u811e\\u9509\\u77ec\\u75e4\\u9e7e\\u8e49\\u8e9c\", \"da\": \"\\u642d\\u8fbe\\u7b54\\u7629\\u6253\\u5927\\u8037\\u54d2\\u55d2\\u601b\\u59b2\\u75b8\\u8921\\u7b2a\\u977c\\u9791\", \"dai\": \"\\u5446\\u6b79\\u50a3\\u6234\\u5e26\\u6b86\\u4ee3\\u8d37\\u888b\\u5f85\\u902e\\u6020\\u57ed\\u7519\\u5454\\u5cb1\\u8fe8\\u902f\\u9a80\\u7ed0\\u73b3\\u9edb\", \"dan\": \"\\u803d\\u62c5\\u4e39\\u5355\\u90f8\\u63b8\\u80c6\\u65e6\\u6c2e\\u4f46\\u60ee\\u6de1\\u8bde\\u5f39\\u86cb\\u4ebb\\u510b\\u5369\\u840f\\u5556\\u6fb9\\u6a90\\u6b9a\\u8d55\\u7708\\u7605\\u8043\\u7baa\", \"dang\": \"\\u5f53\\u6321\\u515a\\u8361\\u6863\\u8c20\\u51fc\\u83ea\\u5b95\\u7800\\u94db\\u88c6\", \"dao\": \"\\u5200\\u6363\\u8e48\\u5012\\u5c9b\\u7977\\u5bfc\\u5230\\u7a3b\\u60bc\\u9053\\u76d7\\u53e8\\u5541\\u5fc9\\u6d2e\\u6c18\\u7118\\u5fd1\\u7e9b\", \"de\": \"\\u5fb7\\u5f97\\u7684\\u951d\", \"deng\": \"\\u8e6c\\u706f\\u767b\\u7b49\\u77aa\\u51f3\\u9093\\u5654\\u5d9d\\u6225\\u78f4\\u956b\\u7c26\", \"di\": \"\\u5824\\u4f4e\\u6ef4\\u8fea\\u654c\\u7b1b\\u72c4\\u6da4\\u7fdf\\u5ae1\\u62b5\\u5e95\\u5730\\u8482\\u7b2c\\u5e1d\\u5f1f\\u9012\\u7f14\\u6c10\\u7c74\\u8bcb\\u8c1b\\u90b8\\u577b\\u839c\\u837b\\u5600\\u5a23\\u67e2\\u68e3\\u89cc\\u7825\\u78b2\\u7747\\u955d\\u7f9d\\u9ab6\", \"dian\": \"\\u98a0\\u6382\\u6ec7\\u7898\\u70b9\\u5178\\u975b\\u57ab\\u7535\\u4f43\\u7538\\u5e97\\u60e6\\u5960\\u6dc0\\u6bbf\\u4e36\\u963d\\u576b\\u57dd\\u5dc5\\u73b7\\u765c\\u766b\\u7c1f\\u8e2e\", \"diao\": \"\\u7889\\u53fc\\u96d5\\u51cb\\u5201\\u6389\\u540a\\u9493\\u8c03\\u8f7a\\u94de\\u8729\\u7c9c\\u8c82\", \"die\": \"\\u8dcc\\u7239\\u789f\\u8776\\u8fed\\u8c0d\\u53e0\\u4f5a\\u57a4\\u581e\\u63f2\\u558b\\u6e2b\\u8f76\\u7252\\u74de\\u8936\\u800b\\u8e40\\u9cbd\\u9cce\", \"ding\": \"\\u4e01\\u76ef\\u53ee\\u9489\\u9876\\u9f0e\\u952d\\u5b9a\\u8ba2\\u4e22\\u4ec3\\u5576\\u738e\\u815a\\u7887\\u753a\\u94e4\\u7594\\u8035\\u914a\", \"dong\": \"\\u4e1c\\u51ac\\u8463\\u61c2\\u52a8\\u680b\\u4f97\\u606b\\u51bb\\u6d1e\\u578c\\u549a\\u5cbd\\u5cd2\\u5902\\u6c21\\u80e8\\u80f4\\u7850\\u9e2b\", \"dou\": \"\\u515c\\u6296\\u6597\\u9661\\u8c46\\u9017\\u75d8\\u8538\\u94ad\\u7aa6\\u7aac\\u86aa\\u7bfc\\u9161\", \"du\": \"\\u90fd\\u7763\\u6bd2\\u728a\\u72ec\\u8bfb\\u5835\\u7779\\u8d4c\\u675c\\u9540\\u809a\\u5ea6\\u6e21\\u5992\\u828f\\u561f\\u6e0e\\u691f\\u6a50\\u724d\\u8839\\u7b03\\u9ad1\\u9ee9\", \"duan\": \"\\u7aef\\u77ed\\u953b\\u6bb5\\u65ad\\u7f0e\\u5f56\\u6934\\u7145\\u7c16\", \"dui\": \"\\u5806\\u5151\\u961f\\u5bf9\\u603c\\u619d\\u7893\", \"dun\": \"\\u58a9\\u5428\\u8e72\\u6566\\u987f\\u56e4\\u949d\\u76fe\\u9041\\u7096\\u7818\\u7905\\u76f9\\u9566\\u8db8\", \"duo\": \"\\u6387\\u54c6\\u591a\\u593a\\u579b\\u8eb2\\u6735\\u8dfa\\u8235\\u5241\\u60f0\\u5815\\u5484\\u54da\\u7f0d\\u67c1\\u94ce\\u88f0\\u8e31\", \"e\": \"\\u86fe\\u5ce8\\u9e45\\u4fc4\\u989d\\u8bb9\\u5a25\\u6076\\u5384\\u627c\\u904f\\u9102\\u997f\\u5669\\u8c14\\u57a9\\u57ad\\u82ca\\u83aa\\u843c\\u5443\\u6115\\u5c59\\u5a40\\u8f6d\\u66f7\\u816d\\u786a\\u9507\\u9537\\u9e57\\u989a\\u9cc4\", \"en\": \"\\u6069\\u84bd\\u6441\\u5514\\u55ef\", \"er\": \"\\u800c\\u513f\\u8033\\u5c14\\u9975\\u6d31\\u4e8c\\u8d30\\u8fe9\\u73e5\\u94d2\\u9e38\\u9c95\", \"fa\": \"\\u53d1\\u7f5a\\u7b4f\\u4f10\\u4e4f\\u9600\\u6cd5\\u73d0\\u57a1\\u781d\", \"fan\": \"\\u85e9\\u5e06\\u756a\\u7ffb\\u6a0a\\u77fe\\u9492\\u7e41\\u51e1\\u70e6\\u53cd\\u8fd4\\u8303\\u8d29\\u72af\\u996d\\u6cdb\\u8629\\u5e61\\u72ad\\u68b5\\u6535\\u71d4\\u7548\\u8e6f\", \"fang\": \"\\u574a\\u82b3\\u65b9\\u80aa\\u623f\\u9632\\u59a8\\u4eff\\u8bbf\\u7eba\\u653e\\u531a\\u90a1\\u5f77\\u94ab\\u822b\\u9c82\", \"fei\": \"\\u83f2\\u975e\\u5561\\u98de\\u80a5\\u532a\\u8bfd\\u5420\\u80ba\\u5e9f\\u6cb8\\u8d39\\u82be\\u72d2\\u60b1\\u6ddd\\u5983\\u7ecb\\u7eef\\u69a7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75f1\\u871a\\u7bda\\u7fe1\\u970f\\u9cb1\", \"fen\": \"\\u82ac\\u915a\\u5429\\u6c1b\\u5206\\u7eb7\\u575f\\u711a\\u6c7e\\u7c89\\u594b\\u4efd\\u5fff\\u6124\\u7caa\\u507e\\u7035\\u68fc\\u610d\\u9cbc\\u9f22\", \"feng\": \"\\u4e30\\u5c01\\u67ab\\u8702\\u5cf0\\u950b\\u98ce\\u75af\\u70fd\\u9022\\u51af\\u7f1d\\u8bbd\\u5949\\u51e4\\u4ff8\\u9146\\u8451\\u6ca3\\u781c\", \"fu\": \"\\u4f5b\\u5426\\u592b\\u6577\\u80a4\\u5b75\\u6276\\u62c2\\u8f90\\u5e45\\u6c1f\\u7b26\\u4f0f\\u4fd8\\u670d\\u6d6e\\u6daa\\u798f\\u88b1\\u5f17\\u752b\\u629a\\u8f85\\u4fef\\u91dc\\u65a7\\u812f\\u8151\\u5e9c\\u8150\\u8d74\\u526f\\u8986\\u8d4b\\u590d\\u5085\\u4ed8\\u961c\\u7236\\u8179\\u8d1f\\u5bcc\\u8ba3\\u9644\\u5987\\u7f1a\\u5490\\u5310\\u51eb\\u90db\\u8299\\u82fb\\u832f\\u83a9\\u83d4\\u544b\\u5e5e\\u6ecf\\u8274\\u5b5a\\u9a78\\u7ec2\\u6874\\u8d59\\u9efb\\u9efc\\u7f58\\u7a03\\u99a5\\u864d\\u86a8\\u8709\\u8760\\u876e\\u9eb8\\u8dba\\u8dd7\\u9cc6\", \"ga\": \"\\u5676\\u560e\\u86e4\\u5c2c\\u5477\\u5c15\\u5c1c\\u65ee\\u9486\", \"gai\": \"\\u8be5\\u6539\\u6982\\u9499\\u76d6\\u6e89\\u4e10\\u9654\\u5793\\u6224\\u8d45\\u80f2\", \"gan\": \"\\u5e72\\u7518\\u6746\\u67d1\\u7aff\\u809d\\u8d76\\u611f\\u79c6\\u6562\\u8d63\\u5769\\u82f7\\u5c34\\u64c0\\u6cd4\\u6de6\\u6f89\\u7ec0\\u6a44\\u65f0\\u77f8\\u75b3\\u9150\", \"gang\": \"\\u5188\\u521a\\u94a2\\u7f38\\u809b\\u7eb2\\u5c97\\u6e2f\\u6206\\u7f61\\u9883\\u7b7b\", \"gong\": \"\\u6760\\u5de5\\u653b\\u529f\\u606d\\u9f9a\\u4f9b\\u8eac\\u516c\\u5bab\\u5f13\\u5de9\\u6c5e\\u62f1\\u8d21\\u5171\\u857b\\u5efe\\u54a3\\u73d9\\u80b1\\u86a3\\u86e9\\u89e5\", \"gao\": \"\\u7bd9\\u768b\\u9ad8\\u818f\\u7f94\\u7cd5\\u641e\\u9550\\u7a3f\\u544a\\u777e\\u8bf0\\u90dc\\u84bf\\u85c1\\u7f1f\\u69d4\\u69c1\\u6772\\u9506\", \"ge\": \"\\u54e5\\u6b4c\\u6401\\u6208\\u9e3d\\u80f3\\u7599\\u5272\\u9769\\u845b\\u683c\\u9601\\u9694\\u94ec\\u4e2a\\u5404\\u9b32\\u4ee1\\u54ff\\u5865\\u55dd\\u7ea5\\u643f\\u8188\\u784c\\u94ea\\u9549\\u88bc\\u988c\\u867c\\u8238\\u9abc\\u9ac2\", \"gei\": \"\\u7ed9\", \"gen\": \"\\u6839\\u8ddf\\u4e98\\u831b\\u54cf\\u826e\", \"geng\": \"\\u8015\\u66f4\\u5e9a\\u7fb9\\u57c2\\u803f\\u6897\\u54fd\\u8d53\\u9ca0\", \"gou\": \"\\u94a9\\u52fe\\u6c9f\\u82df\\u72d7\\u57a2\\u6784\\u8d2d\\u591f\\u4f5d\\u8bdf\\u5ca3\\u9058\\u5abe\\u7f11\\u89cf\\u5f40\\u9e32\\u7b31\\u7bdd\\u97b2\", \"gu\": \"\\u8f9c\\u83c7\\u5495\\u7b8d\\u4f30\\u6cbd\\u5b64\\u59d1\\u9f13\\u53e4\\u86ca\\u9aa8\\u8c37\\u80a1\\u6545\\u987e\\u56fa\\u96c7\\u560f\\u8bc2\\u83f0\\u54cc\\u5d2e\\u6c69\\u688f\\u8f71\\u726f\\u727f\\u80cd\\u81cc\\u6bc2\\u77bd\\u7f5f\\u94b4\\u9522\\u74e0\\u9e2a\\u9e44\\u75fc\\u86c4\\u9164\\u89da\\u9cb4\\u9ab0\\u9e58\", \"gua\": \"\\u522e\\u74dc\\u5250\\u5be1\\u6302\\u8902\\u5366\\u8bd6\\u5471\\u681d\\u9e39\", \"guai\": \"\\u4e56\\u62d0\\u602a\\u54d9\", \"guan\": \"\\u68fa\\u5173\\u5b98\\u51a0\\u89c2\\u7ba1\\u9986\\u7f50\\u60ef\\u704c\\u8d2f\\u500c\\u839e\\u63bc\\u6dab\\u76e5\\u9e73\\u9ccf\", \"guang\": \"\\u5149\\u5e7f\\u901b\\u72b7\\u6844\\u80f1\\u7592\", \"gui\": \"\\u7470\\u89c4\\u572d\\u7845\\u5f52\\u9f9f\\u95fa\\u8f68\\u9b3c\\u8be1\\u7678\\u6842\\u67dc\\u8dea\\u8d35\\u523d\\u5326\\u523f\\u5e8b\\u5b84\\u59ab\\u6867\\u7085\\u6677\\u7688\\u7c0b\\u9c91\\u9cdc\", \"gun\": \"\\u8f8a\\u6eda\\u68cd\\u4e28\\u886e\\u7ef2\\u78d9\\u9ca7\", \"guo\": \"\\u9505\\u90ed\\u56fd\\u679c\\u88f9\\u8fc7\\u9998\\u8803\\u57da\\u63b4\\u5459\\u56d7\\u5e3c\\u5d1e\\u7313\\u6901\\u8662\\u951e\\u8052\\u872e\\u873e\\u8748\", \"ha\": \"\\u54c8\", \"hai\": \"\\u9ab8\\u5b69\\u6d77\\u6c26\\u4ea5\\u5bb3\\u9a87\\u54b4\\u55e8\\u988f\\u91a2\", \"han\": \"\\u9163\\u61a8\\u90af\\u97e9\\u542b\\u6db5\\u5bd2\\u51fd\\u558a\\u7f55\\u7ff0\\u64bc\\u634d\\u65f1\\u61be\\u608d\\u710a\\u6c57\\u6c49\\u9097\\u83e1\\u6496\\u961a\\u701a\\u6657\\u7113\\u9894\\u86b6\\u9f3e\", \"hen\": \"\\u592f\\u75d5\\u5f88\\u72e0\\u6068\", \"hang\": \"\\u676d\\u822a\\u6c86\\u7ed7\\u73e9\\u6841\", \"hao\": \"\\u58d5\\u568e\\u8c6a\\u6beb\\u90dd\\u597d\\u8017\\u53f7\\u6d69\\u8585\\u55e5\\u5686\\u6fe0\\u704f\\u660a\\u7693\\u98a2\\u869d\", \"he\": \"\\u5475\\u559d\\u8377\\u83cf\\u6838\\u79be\\u548c\\u4f55\\u5408\\u76d2\\u8c89\\u9602\\u6cb3\\u6db8\\u8d6b\\u8910\\u9e64\\u8d3a\\u8bc3\\u52be\\u58d1\\u85ff\\u55d1\\u55ec\\u9616\\u76cd\\u86b5\\u7fee\", \"hei\": \"\\u563f\\u9ed1\", \"heng\": \"\\u54fc\\u4ea8\\u6a2a\\u8861\\u6052\\u8a07\\u8605\", \"hong\": \"\\u8f70\\u54c4\\u70d8\\u8679\\u9e3f\\u6d2a\\u5b8f\\u5f18\\u7ea2\\u9ec9\\u8ba7\\u836d\\u85a8\\u95f3\\u6cd3\", \"hou\": \"\\u5589\\u4faf\\u7334\\u543c\\u539a\\u5019\\u540e\\u5820\\u5f8c\\u9005\\u760a\\u7bcc\\u7cc7\\u9c8e\\u9aba\", \"hu\": \"\\u547c\\u4e4e\\u5ffd\\u745a\\u58f6\\u846b\\u80e1\\u8774\\u72d0\\u7cca\\u6e56\\u5f27\\u864e\\u552c\\u62a4\\u4e92\\u6caa\\u6237\\u51b1\\u553f\\u56eb\\u5cb5\\u7322\\u6019\\u60da\\u6d52\\u6ef9\\u7425\\u69f2\\u8f77\\u89f3\\u70c0\\u7173\\u623d\\u6248\\u795c\\u9e55\\u9e71\\u7b0f\\u9190\\u659b\", \"hua\": \"\\u82b1\\u54d7\\u534e\\u733e\\u6ed1\\u753b\\u5212\\u5316\\u8bdd\\u5290\\u6d4d\\u9a85\\u6866\\u94e7\\u7a1e\", \"huai\": \"\\u69d0\\u5f8a\\u6000\\u6dee\\u574f\\u8fd8\\u8e1d\", \"huan\": \"\\u6b22\\u73af\\u6853\\u7f13\\u6362\\u60a3\\u5524\\u75ea\\u8c62\\u7115\\u6da3\\u5ba6\\u5e7b\\u90c7\\u5942\\u57b8\\u64d0\\u571c\\u6d39\\u6d63\\u6f36\\u5bf0\\u902d\\u7f33\\u953e\\u9ca9\\u9b1f\", \"huang\": \"\\u8352\\u614c\\u9ec4\\u78fa\\u8757\\u7c27\\u7687\\u51f0\\u60f6\\u714c\\u6643\\u5e4c\\u604d\\u8c0e\\u968d\\u5fa8\\u6e5f\\u6f62\\u9051\\u749c\\u8093\\u7640\\u87e5\\u7bc1\\u9cc7\", \"hui\": \"\\u7070\\u6325\\u8f89\\u5fbd\\u6062\\u86d4\\u56de\\u6bc1\\u6094\\u6167\\u5349\\u60e0\\u6666\\u8d3f\\u79fd\\u4f1a\\u70e9\\u6c47\\u8bb3\\u8bf2\\u7ed8\\u8bd9\\u8334\\u835f\\u8559\\u54d5\\u5599\\u96b3\\u6d04\\u5f57\\u7f0b\\u73f2\\u6656\\u605a\\u867a\\u87ea\\u9ebe\", \"hun\": \"\\u8364\\u660f\\u5a5a\\u9b42\\u6d51\\u6df7\\u8be8\\u9984\\u960d\\u6eb7\\u7f17\", \"huo\": \"\\u8c41\\u6d3b\\u4f19\\u706b\\u83b7\\u6216\\u60d1\\u970d\\u8d27\\u7978\\u6509\\u56af\\u5925\\u94ac\\u952a\\u956c\\u8020\\u8816\", \"ji\": \"\\u51fb\\u573e\\u57fa\\u673a\\u7578\\u7a3d\\u79ef\\u7b95\\u808c\\u9965\\u8ff9\\u6fc0\\u8ba5\\u9e21\\u59ec\\u7ee9\\u7f09\\u5409\\u6781\\u68d8\\u8f91\\u7c4d\\u96c6\\u53ca\\u6025\\u75be\\u6c72\\u5373\\u5ac9\\u7ea7\\u6324\\u51e0\\u810a\\u5df1\\u84df\\u6280\\u5180\\u5b63\\u4f0e\\u796d\\u5242\\u60b8\\u6d4e\\u5bc4\\u5bc2\\u8ba1\\u8bb0\\u65e2\\u5fcc\\u9645\\u5993\\u7ee7\\u7eaa\\u5c45\\u4e0c\\u4e69\\u525e\\u4f76\\u4f74\\u8114\\u58bc\\u82a8\\u82b0\\u8401\\u84ba\\u857a\\u638e\\u53fd\\u54ad\\u54dc\\u5527\\u5c8c\\u5d74\\u6d0e\\u5f50\\u5c50\\u9aa5\\u757f\\u7391\\u696b\\u6b9b\\u621f\\u6222\\u8d4d\\u89ca\\u7284\\u9f51\\u77f6\\u7f81\\u5d47\\u7a37\\u7620\\u7635\\u866e\\u7b08\\u7b04\\u66a8\\u8dfb\\u8dfd\\u9701\\u9c9a\\u9cab\\u9afb\\u9e82\", \"jia\": \"\\u5609\\u67b7\\u5939\\u4f73\\u5bb6\\u52a0\\u835a\\u988a\\u8d3e\\u7532\\u94be\\u5047\\u7a3c\\u4ef7\\u67b6\\u9a7e\\u5ac1\\u4f3d\\u90cf\\u62ee\\u5cac\\u6d43\\u8fe6\\u73c8\\u621b\\u80db\\u605d\\u94d7\\u9553\\u75c2\\u86f1\\u7b33\\u8888\\u8dcf\", \"jian\": \"\\u6b7c\\u76d1\\u575a\\u5c16\\u7b3a\\u95f4\\u714e\\u517c\\u80a9\\u8270\\u5978\\u7f04\\u8327\\u68c0\\u67ec\\u78b1\\u7877\\u62e3\\u6361\\u7b80\\u4fed\\u526a\\u51cf\\u8350\\u69db\\u9274\\u8df5\\u8d31\\u89c1\\u952e\\u7bad\\u4ef6\\u5065\\u8230\\u5251\\u996f\\u6e10\\u6e85\\u6da7\\u5efa\\u50ed\\u8c0f\\u8c2b\\u83c5\\u84b9\\u641b\\u56dd\\u6e54\\u8e47\\u8b07\\u7f23\\u67a7\\u67d9\\u6957\\u620b\\u622c\\u726e\\u728d\\u6bfd\\u8171\\u7751\\u950f\\u9e63\\u88e5\\u7b15\\u7bb4\\u7fe6\\u8dbc\\u8e3a\\u9ca3\\u97af\", \"jiang\": \"\\u50f5\\u59dc\\u5c06\\u6d46\\u6c5f\\u7586\\u848b\\u6868\\u5956\\u8bb2\\u5320\\u9171\\u964d\\u8333\\u6d1a\\u7edb\\u7f30\\u729f\\u7913\\u8029\\u7ce8\\u8c47\", \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80f6\\u4ea4\\u90ca\\u6d47\\u9a84\\u5a07\\u56bc\\u6405\\u94f0\\u77eb\\u4fa5\\u811a\\u72e1\\u89d2\\u997a\\u7f34\\u7ede\\u527f\\u6559\\u9175\\u8f7f\\u8f83\\u53eb\\u4f7c\\u50ec\\u832d\\u6322\\u564d\\u5ce4\\u5fbc\\u59e3\\u7e9f\\u656b\\u768e\\u9e6a\\u86df\\u91ae\\u8de4\\u9c9b\", \"jie\": \"\\u7a96\\u63ed\\u63a5\\u7686\\u79f8\\u8857\\u9636\\u622a\\u52ab\\u8282\\u6854\\u6770\\u6377\\u776b\\u7aed\\u6d01\\u7ed3\\u89e3\\u59d0\\u6212\\u85c9\\u82a5\\u754c\\u501f\\u4ecb\\u75a5\\u8beb\\u5c4a\\u5048\\u8ba6\\u8bd8\\u5588\\u55df\\u736c\\u5a55\\u5b51\\u6840\\u7352\\u78a3\\u9534\\u7596\\u88b7\\u9889\\u86a7\\u7faf\\u9c92\\u9ab1\\u9aeb\", \"jin\": \"\\u5dfe\\u7b4b\\u65a4\\u91d1\\u4eca\\u6d25\\u895f\\u7d27\\u9526\\u4ec5\\u8c28\\u8fdb\\u9773\\u664b\\u7981\\u8fd1\\u70ec\\u6d78\\u5c3d\\u537a\\u8369\\u5807\\u5664\\u9991\\u5ed1\\u5997\\u7f19\\u747e\\u69ff\\u8d46\\u89d0\\u9485\\u9513\\u887f\\u77dc\", \"jing\": \"\\u52b2\\u8346\\u5162\\u830e\\u775b\\u6676\\u9cb8\\u4eac\\u60ca\\u7cbe\\u7cb3\\u7ecf\\u4e95\\u8b66\\u666f\\u9888\\u9759\\u5883\\u656c\\u955c\\u5f84\\u75c9\\u9756\\u7adf\\u7ade\\u51c0\\u522d\\u5106\\u9631\\u83c1\\u734d\\u61ac\\u6cfe\\u8ff3\\u5f2a\\u5a67\\u80bc\\u80eb\\u8148\\u65cc\", \"jiong\": \"\\u70af\\u7a98\\u5182\\u8fe5\\u6243\", \"jiu\": \"\\u63ea\\u7a76\\u7ea0\\u7396\\u97ed\\u4e45\\u7078\\u4e5d\\u9152\\u53a9\\u6551\\u65e7\\u81fc\\u8205\\u548e\\u5c31\\u759a\\u50e6\\u557e\\u9604\\u67e9\\u6855\\u9e6b\\u8d73\\u9b0f\", \"ju\": \"\\u97a0\\u62d8\\u72d9\\u75bd\\u9a79\\u83ca\\u5c40\\u5480\\u77e9\\u4e3e\\u6cae\\u805a\\u62d2\\u636e\\u5de8\\u5177\\u8ddd\\u8e1e\\u952f\\u4ff1\\u53e5\\u60e7\\u70ac\\u5267\\u5028\\u8bb5\\u82e3\\u82f4\\u8392\\u63ac\\u907d\\u5c66\\u741a\\u67b8\\u6910\\u6998\\u6989\\u6a58\\u728b\\u98d3\\u949c\\u9514\\u7aad\\u88fe\\u8d84\\u91b5\\u8e3d\\u9f83\\u96ce\\u97ab\", \"juan\": \"\\u6350\\u9e43\\u5a1f\\u5026\\u7737\\u5377\\u7ee2\\u9104\\u72f7\\u6d93\\u684a\\u8832\\u9529\\u954c\\u96bd\", \"jue\": \"\\u6485\\u652b\\u6289\\u6398\\u5014\\u7235\\u89c9\\u51b3\\u8bc0\\u7edd\\u53a5\\u5282\\u8c32\\u77cd\\u8568\\u5658\\u5d1b\\u7357\\u5b53\\u73cf\\u6877\\u6a5b\\u721d\\u9562\\u8e76\\u89d6\", \"jun\": \"\\u5747\\u83cc\\u94a7\\u519b\\u541b\\u5cfb\\u4fca\\u7ae3\\u6d5a\\u90e1\\u9a8f\\u6343\\u72fb\\u76b2\\u7b60\\u9e87\", \"ka\": \"\\u5580\\u5496\\u5361\\u4f67\\u5494\\u80e9\", \"ke\": \"\\u54af\\u5777\\u82db\\u67ef\\u68f5\\u78d5\\u9897\\u79d1\\u58f3\\u54b3\\u53ef\\u6e34\\u514b\\u523b\\u5ba2\\u8bfe\\u5ca2\\u606a\\u6e98\\u9a92\\u7f02\\u73c2\\u8f72\\u6c2a\\u778c\\u94b6\\u75b4\\u7aa0\\u874c\\u9ac1\", \"kai\": \"\\u5f00\\u63e9\\u6977\\u51ef\\u6168\\u5240\\u57b2\\u8488\\u5ffe\\u607a\\u94e0\\u950e\", \"kan\": \"\\u520a\\u582a\\u52d8\\u574e\\u780d\\u770b\\u4f83\\u51f5\\u83b0\\u83b6\\u6221\\u9f9b\\u77b0\", \"kang\": \"\\u5eb7\\u6177\\u7ce0\\u625b\\u6297\\u4ea2\\u7095\\u5751\\u4f09\\u95f6\\u94aa\", \"kao\": \"\\u8003\\u62f7\\u70e4\\u9760\\u5c3b\\u6832\\u7292\\u94d0\", \"ken\": \"\\u80af\\u5543\\u57a6\\u6073\\u57a0\\u88c9\\u9880\", \"keng\": \"\\u542d\\u5fd0\\u94ff\", \"kong\": \"\\u7a7a\\u6050\\u5b54\\u63a7\\u5025\\u5d06\\u7b9c\", \"kou\": \"\\u62a0\\u53e3\\u6263\\u5bc7\\u82a4\\u853b\\u53e9\\u770d\\u7b58\", \"ku\": \"\\u67af\\u54ed\\u7a9f\\u82e6\\u9177\\u5e93\\u88e4\\u5233\\u5800\\u55be\\u7ed4\\u9ab7\", \"kua\": \"\\u5938\\u57ae\\u630e\\u8de8\\u80ef\\u4f89\", \"kuai\": \"\\u5757\\u7b77\\u4fa9\\u5feb\\u84af\\u90d0\\u8489\\u72ef\\u810d\", \"kuan\": \"\\u5bbd\\u6b3e\\u9acb\", \"kuang\": \"\\u5321\\u7b50\\u72c2\\u6846\\u77ff\\u7736\\u65f7\\u51b5\\u8bd3\\u8bf3\\u909d\\u5739\\u593c\\u54d0\\u7ea9\\u8d36\", \"kui\": \"\\u4e8f\\u76d4\\u5cbf\\u7aa5\\u8475\\u594e\\u9b41\\u5080\\u9988\\u6127\\u6e83\\u9997\\u532e\\u5914\\u9697\\u63c6\\u55b9\\u559f\\u609d\\u6126\\u9615\\u9035\\u668c\\u777d\\u8069\\u8770\\u7bd1\\u81fe\\u8dec\", \"kun\": \"\\u5764\\u6606\\u6346\\u56f0\\u6083\\u9603\\u7428\\u951f\\u918c\\u9cb2\\u9ae1\", \"kuo\": \"\\u62ec\\u6269\\u5ed3\\u9614\\u86de\", \"la\": \"\\u5783\\u62c9\\u5587\\u8721\\u814a\\u8fa3\\u5566\\u524c\\u647a\\u908b\\u65ef\\u782c\\u760c\", \"lai\": \"\\u83b1\\u6765\\u8d56\\u5d03\\u5f95\\u6d9e\\u6fd1\\u8d49\\u7750\\u94fc\\u765e\\u7c41\", \"lan\": \"\\u84dd\\u5a6a\\u680f\\u62e6\\u7bee\\u9611\\u5170\\u6f9c\\u8c30\\u63fd\\u89c8\\u61d2\\u7f06\\u70c2\\u6ee5\\u5549\\u5c9a\\u61d4\\u6f24\\u6984\\u6593\\u7f71\\u9567\\u8934\", \"lang\": \"\\u7405\\u6994\\u72fc\\u5eca\\u90ce\\u6717\\u6d6a\\u83a8\\u8497\\u5577\\u9606\\u9512\\u7a02\\u8782\", \"lao\": \"\\u635e\\u52b3\\u7262\\u8001\\u4f6c\\u59e5\\u916a\\u70d9\\u6d9d\\u5520\\u5d02\\u6833\\u94d1\\u94f9\\u75e8\\u91aa\", \"le\": \"\\u52d2\\u4e50\\u808b\\u4ec2\\u53fb\\u561e\\u6cd0\\u9cd3\", \"lei\": \"\\u96f7\\u956d\\u857e\\u78ca\\u7d2f\\u5121\\u5792\\u64c2\\u7c7b\\u6cea\\u7fb8\\u8bd4\\u837d\\u54a7\\u6f2f\\u5ad8\\u7f27\\u6a91\\u8012\\u9179\", \"ling\": \"\\u68f1\\u51b7\\u62ce\\u73b2\\u83f1\\u96f6\\u9f84\\u94c3\\u4f36\\u7f9a\\u51cc\\u7075\\u9675\\u5cad\\u9886\\u53e6\\u4ee4\\u9143\\u5844\\u82d3\\u5464\\u56f9\\u6ce0\\u7eeb\\u67c3\\u68c2\\u74f4\\u8046\\u86c9\\u7fce\\u9cae\", \"leng\": \"\\u695e\\u6123\", \"li\": \"\\u5398\\u68a8\\u7281\\u9ece\\u7bf1\\u72f8\\u79bb\\u6f13\\u7406\\u674e\\u91cc\\u9ca4\\u793c\\u8389\\u8354\\u540f\\u6817\\u4e3d\\u5389\\u52b1\\u783e\\u5386\\u5229\\u5088\\u4f8b\\u4fd0\\u75e2\\u7acb\\u7c92\\u6ca5\\u96b6\\u529b\\u7483\\u54e9\\u4fea\\u4fda\\u90e6\\u575c\\u82c8\\u8385\\u84e0\\u85dc\\u6369\\u5456\\u5533\\u55b1\\u7301\\u6ea7\\u6fa7\\u9026\\u5a0c\\u5ae0\\u9a8a\\u7f21\\u73de\\u67a5\\u680e\\u8f79\\u623e\\u783a\\u8a48\\u7f79\\u9502\\u9e42\\u75a0\\u75ac\\u86ce\\u870a\\u8821\\u7b20\\u7be5\\u7c9d\\u91b4\\u8dde\\u96f3\\u9ca1\\u9ce2\\u9ee7\", \"lian\": \"\\u4fe9\\u8054\\u83b2\\u8fde\\u9570\\u5ec9\\u601c\\u6d9f\\u5e18\\u655b\\u8138\\u94fe\\u604b\\u70bc\\u7ec3\\u631b\\u8539\\u5941\\u6f4b\\u6fc2\\u5a08\\u740f\\u695d\\u6b93\\u81c1\\u81a6\\u88e2\\u880a\\u9ca2\", \"liang\": \"\\u7cae\\u51c9\\u6881\\u7cb1\\u826f\\u4e24\\u8f86\\u91cf\\u667e\\u4eae\\u8c05\\u589a\\u690b\\u8e09\\u9753\\u9b49\", \"liao\": \"\\u64a9\\u804a\\u50da\\u7597\\u71ce\\u5be5\\u8fbd\\u6f66\\u4e86\\u6482\\u9563\\u5ed6\\u6599\\u84fc\\u5c25\\u5639\\u7360\\u5bee\\u7f2d\\u948c\\u9e69\\u8022\", \"lie\": \"\\u5217\\u88c2\\u70c8\\u52a3\\u730e\\u51bd\\u57d2\\u6d0c\\u8d94\\u8e90\\u9b23\", \"lin\": \"\\u7433\\u6797\\u78f7\\u9716\\u4e34\\u90bb\\u9cde\\u6dcb\\u51db\\u8d41\\u541d\\u853a\\u5d99\\u5eea\\u9074\\u6aa9\\u8f9a\\u77b5\\u7cbc\\u8e8f\\u9e9f\", \"liu\": \"\\u6e9c\\u7409\\u69b4\\u786b\\u998f\\u7559\\u5218\\u7624\\u6d41\\u67f3\\u516d\\u62a1\\u507b\\u848c\\u6cd6\\u6d4f\\u905b\\u9a9d\\u7efa\\u65d2\\u7198\\u950d\\u954f\\u9e68\\u938f\", \"long\": \"\\u9f99\\u804b\\u5499\\u7b3c\\u7abf\\u9686\\u5784\\u62e2\\u9647\\u5f04\\u5785\\u830f\\u6cf7\\u73d1\\u680a\\u80e7\\u783b\\u7643\", \"lou\": \"\\u697c\\u5a04\\u6402\\u7bd3\\u6f0f\\u964b\\u55bd\\u5d5d\\u9542\\u7618\\u8027\\u877c\\u9ac5\", \"lu\": \"\\u82a6\\u5362\\u9885\\u5e90\\u7089\\u63b3\\u5364\\u864f\\u9c81\\u9e93\\u788c\\u9732\\u8def\\u8d42\\u9e7f\\u6f5e\\u7984\\u5f55\\u9646\\u622e\\u5786\\u6445\\u64b8\\u565c\\u6cf8\\u6e0c\\u6f09\\u7490\\u680c\\u6a79\\u8f73\\u8f82\\u8f98\\u6c07\\u80ea\\u9565\\u9e2c\\u9e6d\\u7c0f\\u823b\\u9c88\", \"lv\": \"\\u9a74\\u5415\\u94dd\\u4fa3\\u65c5\\u5c65\\u5c61\\u7f15\\u8651\\u6c2f\\u5f8b\\u7387\\u6ee4\\u7eff\\u634b\\u95fe\\u6988\\u8182\\u7a06\\u891b\", \"luan\": \"\\u5ce6\\u5b6a\\u6ee6\\u5375\\u4e71\\u683e\\u9e3e\\u92ae\", \"lue\": \"\\u63a0\\u7565\\u950a\", \"lun\": \"\\u8f6e\\u4f26\\u4ed1\\u6ca6\\u7eb6\\u8bba\\u56f5\", \"luo\": \"\\u841d\\u87ba\\u7f57\\u903b\\u9523\\u7ba9\\u9aa1\\u88f8\\u843d\\u6d1b\\u9a86\\u7edc\\u502e\\u8366\\u645e\\u7321\\u6cfa\\u6924\\u8136\\u9559\\u7630\\u96d2\", \"ma\": \"\\u5988\\u9ebb\\u739b\\u7801\\u8682\\u9a6c\\u9a82\\u561b\\u5417\\u551b\\u72b8\\u5b37\\u6769\\u9ebd\", \"mai\": \"\\u57cb\\u4e70\\u9ea6\\u5356\\u8fc8\\u8109\\u52a2\\u836c\\u54aa\\u973e\", \"man\": \"\\u7792\\u9992\\u86ee\\u6ee1\\u8513\\u66fc\\u6162\\u6f2b\\u8c29\\u5881\\u5e54\\u7f26\\u71b3\\u9558\\u989f\\u87a8\\u9cd7\\u9794\", \"mang\": \"\\u8292\\u832b\\u76f2\\u5fd9\\u83bd\\u9099\\u6f2d\\u6726\\u786d\\u87d2\", \"meng\": \"\\u6c13\\u840c\\u8499\\u6aac\\u76df\\u9530\\u731b\\u68a6\\u5b5f\\u52d0\\u750d\\u77a2\\u61f5\\u791e\\u867b\\u8722\\u8813\\u824b\\u8268\\u9efe\", \"miao\": \"\\u732b\\u82d7\\u63cf\\u7784\\u85d0\\u79d2\\u6e3a\\u5e99\\u5999\\u55b5\\u9088\\u7f08\\u7f2a\\u676a\\u6dfc\\u7707\\u9e4b\\u8731\", \"mao\": \"\\u8305\\u951a\\u6bdb\\u77db\\u94c6\\u536f\\u8302\\u5192\\u5e3d\\u8c8c\\u8d38\\u4f94\\u88a4\\u52d6\\u8306\\u5cc1\\u7441\\u6634\\u7266\\u8004\\u65c4\\u61cb\\u7780\\u86d1\\u8765\\u87ca\\u9ae6\", \"me\": \"\\u4e48\", \"mei\": \"\\u73ab\\u679a\\u6885\\u9176\\u9709\\u7164\\u6ca1\\u7709\\u5a92\\u9541\\u6bcf\\u7f8e\\u6627\\u5bd0\\u59b9\\u5a9a\\u5776\\u8393\\u5d4b\\u7338\\u6d7c\\u6e44\\u6963\\u9545\\u9e5b\\u8882\\u9b45\", \"men\": \"\\u95e8\\u95f7\\u4eec\\u626a\\u739f\\u7116\\u61d1\\u9494\", \"mi\": \"\\u772f\\u919a\\u9761\\u7cdc\\u8ff7\\u8c1c\\u5f25\\u7c73\\u79d8\\u89c5\\u6ccc\\u871c\\u5bc6\\u5e42\\u8288\\u5196\\u8c27\\u863c\\u5627\\u7315\\u736f\\u6c68\\u5b93\\u5f2d\\u8112\\u6549\\u7cf8\\u7e3b\\u9e8b\", \"mian\": \"\\u68c9\\u7720\\u7ef5\\u5195\\u514d\\u52c9\\u5a29\\u7f05\\u9762\\u6c94\\u6e4e\\u817c\\u7704\", \"mie\": \"\\u8511\\u706d\\u54a9\\u881b\\u7bfe\", \"min\": \"\\u6c11\\u62bf\\u76bf\\u654f\\u60af\\u95fd\\u82e0\\u5cb7\\u95f5\\u6cef\\u73c9\", \"ming\": \"\\u660e\\u879f\\u9e23\\u94ed\\u540d\\u547d\\u51a5\\u8317\\u6e9f\\u669d\\u7791\\u9169\", \"miu\": \"\\u8c2c\", \"mo\": \"\\u6478\\u6479\\u8611\\u6a21\\u819c\\u78e8\\u6469\\u9b54\\u62b9\\u672b\\u83ab\\u58a8\\u9ed8\\u6cab\\u6f20\\u5bde\\u964c\\u8c1f\\u8309\\u84e6\\u998d\\u5aeb\\u9546\\u79e3\\u763c\\u8031\\u87c6\\u8c8a\\u8c98\", \"mou\": \"\\u8c0b\\u725f\\u67d0\\u53b6\\u54de\\u5a7a\\u7738\\u936a\", \"mu\": \"\\u62c7\\u7261\\u4ea9\\u59c6\\u6bcd\\u5893\\u66ae\\u5e55\\u52df\\u6155\\u6728\\u76ee\\u7766\\u7267\\u7a46\\u4eeb\\u82dc\\u5452\\u6c90\\u6bea\\u94bc\", \"na\": \"\\u62ff\\u54ea\\u5450\\u94a0\\u90a3\\u5a1c\\u7eb3\\u5185\\u637a\\u80ad\\u954e\\u8872\\u7bac\", \"nai\": \"\\u6c16\\u4e43\\u5976\\u8010\\u5948\\u9f10\\u827f\\u8418\\u67f0\", \"nan\": \"\\u5357\\u7537\\u96be\\u56ca\\u5583\\u56e1\\u6960\\u8169\\u877b\\u8d67\", \"nao\": \"\\u6320\\u8111\\u607c\\u95f9\\u5b6c\\u57b4\\u7331\\u7459\\u7847\\u94d9\\u86f2\", \"ne\": \"\\u6dd6\\u5462\\u8bb7\", \"nei\": \"\\u9981\", \"nen\": \"\\u5ae9\\u80fd\\u6798\\u6041\", \"ni\": \"\\u59ae\\u9713\\u502a\\u6ce5\\u5c3c\\u62df\\u4f60\\u533f\\u817b\\u9006\\u6eba\\u4f32\\u576d\\u730a\\u6029\\u6ee0\\u6635\\u65ce\\u7962\\u615d\\u7768\\u94cc\\u9cb5\", \"nian\": \"\\u852b\\u62c8\\u5e74\\u78be\\u64b5\\u637b\\u5ff5\\u5eff\\u8f87\\u9ecf\\u9c87\\u9cb6\", \"niang\": \"\\u5a18\\u917f\", \"niao\": \"\\u9e1f\\u5c3f\\u8311\\u5b32\\u8132\\u8885\", \"nie\": \"\\u634f\\u8042\\u5b7d\\u556e\\u954a\\u954d\\u6d85\\u4e5c\\u9667\\u8616\\u55eb\\u8080\\u989e\\u81ec\\u8e51\", \"nin\": \"\\u60a8\\u67e0\", \"ning\": \"\\u72de\\u51dd\\u5b81\\u62e7\\u6cde\\u4f5e\\u84e5\\u549b\\u752f\\u804d\", \"niu\": \"\\u725b\\u626d\\u94ae\\u7ebd\\u72c3\\u5ff8\\u599e\\u86b4\", \"nong\": \"\\u8113\\u6d53\\u519c\\u4fac\", \"nu\": \"\\u5974\\u52aa\\u6012\\u5476\\u5e11\\u5f29\\u80ec\\u5b65\\u9a7d\", \"nv\": \"\\u5973\\u6067\\u9495\\u8844\", \"nuan\": \"\\u6696\", \"nuenue\": \"\\u8650\", \"nue\": \"\\u759f\\u8c11\", \"nuo\": \"\\u632a\\u61e6\\u7cef\\u8bfa\\u50a9\\u6426\\u558f\\u9518\", \"ou\": \"\\u54e6\\u6b27\\u9e25\\u6bb4\\u85d5\\u5455\\u5076\\u6ca4\\u6004\\u74ef\\u8026\", \"pa\": \"\\u556a\\u8db4\\u722c\\u5e15\\u6015\\u7436\\u8469\\u7b62\", \"pai\": \"\\u62cd\\u6392\\u724c\\u5f98\\u6e43\\u6d3e\\u4ff3\\u848e\", \"pan\": \"\\u6500\\u6f58\\u76d8\\u78d0\\u76fc\\u7554\\u5224\\u53db\\u723f\\u6cee\\u88a2\\u897b\\u87e0\\u8e52\", \"pang\": \"\\u4e53\\u5e9e\\u65c1\\u802a\\u80d6\\u6ec2\\u9004\", \"pao\": \"\\u629b\\u5486\\u5228\\u70ae\\u888d\\u8dd1\\u6ce1\\u530f\\u72cd\\u5e96\\u812c\\u75b1\", \"pei\": \"\\u5478\\u80da\\u57f9\\u88f4\\u8d54\\u966a\\u914d\\u4f69\\u6c9b\\u638a\\u8f94\\u5e14\\u6de0\\u65c6\\u952b\\u9185\\u9708\", \"pen\": \"\\u55b7\\u76c6\\u6e53\", \"peng\": \"\\u7830\\u62a8\\u70f9\\u6f8e\\u5f6d\\u84ec\\u68da\\u787c\\u7bf7\\u81a8\\u670b\\u9e4f\\u6367\\u78b0\\u576f\\u580b\\u562d\\u6026\\u87db\", \"pi\": \"\\u7812\\u9739\\u6279\\u62ab\\u5288\\u7435\\u6bd7\\u5564\\u813e\\u75b2\\u76ae\\u5339\\u75de\\u50fb\\u5c41\\u8b6c\\u4e15\\u9674\\u90b3\\u90eb\\u572e\\u9f19\\u64d7\\u567c\\u5e80\\u5ab2\\u7eb0\\u6787\\u7513\\u7765\\u7f74\\u94cd\\u75e6\\u7656\\u758b\\u868d\\u8c94\", \"pian\": \"\\u7bc7\\u504f\\u7247\\u9a97\\u8c1d\\u9a88\\u728f\\u80fc\\u890a\\u7fe9\\u8e41\", \"piao\": \"\\u98d8\\u6f02\\u74e2\\u7968\\u527d\\u560c\\u5ad6\\u7f25\\u6b8d\\u779f\\u87b5\", \"pie\": \"\\u6487\\u77a5\\u4e3f\\u82e4\\u6c15\", \"pin\": \"\\u62fc\\u9891\\u8d2b\\u54c1\\u8058\\u62da\\u59d8\\u5ad4\\u6980\\u725d\\u98a6\", \"ping\": \"\\u4e52\\u576a\\u82f9\\u840d\\u5e73\\u51ed\\u74f6\\u8bc4\\u5c4f\\u4fdc\\u5a09\\u67b0\\u9c86\", \"po\": \"\\u5761\\u6cfc\\u9887\\u5a46\\u7834\\u9b44\\u8feb\\u7c95\\u53f5\\u9131\\u6ea5\\u73c0\\u948b\\u94b7\\u76a4\\u7b38\", \"pou\": \"\\u5256\\u88d2\\u8e23\", \"pu\": \"\\u6251\\u94fa\\u4ec6\\u8386\\u8461\\u83e9\\u84b2\\u57d4\\u6734\\u5703\\u666e\\u6d66\\u8c31\\u66dd\\u7011\\u530d\\u5657\\u6fee\\u749e\\u6c06\\u9564\\u9568\\u8e7c\", \"qi\": \"\\u671f\\u6b3a\\u6816\\u621a\\u59bb\\u4e03\\u51c4\\u6f06\\u67d2\\u6c8f\\u5176\\u68cb\\u5947\\u6b67\\u7566\\u5d0e\\u8110\\u9f50\\u65d7\\u7948\\u7941\\u9a91\\u8d77\\u5c82\\u4e5e\\u4f01\\u542f\\u5951\\u780c\\u5668\\u6c14\\u8fc4\\u5f03\\u6c7d\\u6ce3\\u8bab\\u4e9f\\u4e93\\u573b\\u8291\\u840b\\u847a\\u5601\\u5c7a\\u5c90\\u6c54\\u6dc7\\u9a90\\u7eee\\u742a\\u7426\\u675e\\u6864\\u69ed\\u6b39\\u797a\\u61a9\\u789b\\u86f4\\u871e\\u7da6\\u7dae\\u8dbf\\u8e4a\\u9ccd\\u9e92\", \"qia\": \"\\u6390\\u6070\\u6d3d\\u845c\", \"qian\": \"\\u7275\\u6266\\u948e\\u94c5\\u5343\\u8fc1\\u7b7e\\u4edf\\u8c26\\u4e7e\\u9ed4\\u94b1\\u94b3\\u524d\\u6f5c\\u9063\\u6d45\\u8c34\\u5811\\u5d4c\\u6b20\\u6b49\\u4f65\\u9621\\u828a\\u82a1\\u8368\\u63ae\\u5c8d\\u60ad\\u614a\\u9a9e\\u6434\\u8930\\u7f31\\u6920\\u80b7\\u6106\\u94a4\\u8654\\u7b9d\", \"qiang\": \"\\u67aa\\u545b\\u8154\\u7f8c\\u5899\\u8537\\u5f3a\\u62a2\\u5af1\\u6a2f\\u6217\\u709d\\u9516\\u9535\\u956a\\u8941\\u8723\\u7f9f\\u8deb\\u8dc4\", \"qiao\": \"\\u6a47\\u9539\\u6572\\u6084\\u6865\\u77a7\\u4e54\\u4fa8\\u5de7\\u9798\\u64ac\\u7fd8\\u5ced\\u4fcf\\u7a8d\\u5281\\u8bee\\u8c2f\\u835e\\u6100\\u6194\\u7f32\\u6a35\\u6bf3\\u7857\\u8df7\\u9792\", \"qie\": \"\\u5207\\u8304\\u4e14\\u602f\\u7a83\\u90c4\\u553c\\u60ec\\u59be\\u6308\\u9532\\u7ba7\", \"qin\": \"\\u94a6\\u4fb5\\u4eb2\\u79e6\\u7434\\u52e4\\u82b9\\u64d2\\u79bd\\u5bdd\\u6c81\\u82a9\\u84c1\\u8572\\u63ff\\u5423\\u55ea\\u5659\\u6eb1\\u6a8e\\u8793\\u887e\", \"qing\": \"\\u9752\\u8f7b\\u6c22\\u503e\\u537f\\u6e05\\u64ce\\u6674\\u6c30\\u60c5\\u9877\\u8bf7\\u5e86\\u5029\\u82d8\\u570a\\u6aa0\\u78ec\\u873b\\u7f44\\u7b90\\u8b26\\u9cad\\u9ee5\", \"qiong\": \"\\u743c\\u7a77\\u909b\\u8315\\u7a79\\u7b47\\u928e\", \"qiu\": \"\\u79cb\\u4e18\\u90b1\\u7403\\u6c42\\u56da\\u914b\\u6cc5\\u4fc5\\u6c3d\\u5def\\u827d\\u72b0\\u6e6b\\u9011\\u9052\\u6978\\u8d47\\u9e20\\u866c\\u86af\\u8764\\u88d8\\u7cd7\\u9cc5\\u9f3d\", \"qu\": \"\\u8d8b\\u533a\\u86c6\\u66f2\\u8eaf\\u5c48\\u9a71\\u6e20\\u53d6\\u5a36\\u9f8b\\u8da3\\u53bb\\u8bce\\u52ac\\u8556\\u8627\\u5c96\\u8862\\u9612\\u74a9\\u89d1\\u6c0d\\u795b\\u78f2\\u766f\\u86d0\\u883c\\u9eb4\\u77bf\\u9ee2\", \"quan\": \"\\u5708\\u98a7\\u6743\\u919b\\u6cc9\\u5168\\u75ca\\u62f3\\u72ac\\u5238\\u529d\\u8be0\\u8343\\u737e\\u609b\\u7efb\\u8f81\\u754e\\u94e8\\u8737\\u7b4c\\u9b08\", \"que\": \"\\u7f3a\\u7094\\u7638\\u5374\\u9e4a\\u69b7\\u786e\\u96c0\\u9619\\u60ab\", \"qun\": \"\\u88d9\\u7fa4\\u9021\", \"ran\": \"\\u7136\\u71c3\\u5189\\u67d3\\u82d2\\u9aef\", \"rang\": \"\\u74e4\\u58e4\\u6518\\u56b7\\u8ba9\\u79b3\\u7a70\", \"rao\": \"\\u9976\\u6270\\u7ed5\\u835b\\u5a06\\u6861\", \"ruo\": \"\\u60f9\\u82e5\\u5f31\", \"re\": \"\\u70ed\\u504c\", \"ren\": \"\\u58ec\\u4ec1\\u4eba\\u5fcd\\u97e7\\u4efb\\u8ba4\\u5203\\u598a\\u7eab\\u4ede\\u834f\\u845a\\u996a\\u8f6b\\u7a14\\u887d\", \"reng\": \"\\u6254\\u4ecd\", \"ri\": \"\\u65e5\", \"rong\": \"\\u620e\\u8338\\u84c9\\u8363\\u878d\\u7194\\u6eb6\\u5bb9\\u7ed2\\u5197\\u5d58\\u72e8\\u7f1b\\u6995\\u877e\", \"rou\": \"\\u63c9\\u67d4\\u8089\\u7cc5\\u8e42\\u97a3\", \"ru\": \"\\u8339\\u8815\\u5112\\u5b7a\\u5982\\u8fb1\\u4e73\\u6c5d\\u5165\\u8925\\u84d0\\u85b7\\u5685\\u6d33\\u6ebd\\u6fe1\\u94f7\\u8966\\u98a5\", \"ruan\": \"\\u8f6f\\u962e\\u670a\", \"rui\": \"\\u854a\\u745e\\u9510\\u82ae\\u8564\\u777f\\u868b\", \"run\": \"\\u95f0\\u6da6\", \"sa\": \"\\u6492\\u6d12\\u8428\\u5345\\u4ee8\\u6332\\u98d2\", \"sai\": \"\\u816e\\u9cc3\\u585e\\u8d5b\\u567b\", \"san\": \"\\u4e09\\u53c1\\u4f1e\\u6563\\u5f61\\u9993\\u6c35\\u6bf5\\u7cc1\\u9730\", \"sang\": \"\\u6851\\u55d3\\u4e27\\u6421\\u78c9\\u98a1\", \"sao\": \"\\u6414\\u9a9a\\u626b\\u5ac2\\u57fd\\u81ca\\u7619\\u9ccb\", \"se\": \"\\u745f\\u8272\\u6da9\\u556c\\u94e9\\u94ef\\u7a51\", \"sen\": \"\\u68ee\", \"seng\": \"\\u50e7\", \"sha\": \"\\u838e\\u7802\\u6740\\u5239\\u6c99\\u7eb1\\u50bb\\u5565\\u715e\\u810e\\u6b43\\u75e7\\u88df\\u970e\\u9ca8\", \"shai\": \"\\u7b5b\\u6652\\u917e\", \"shan\": \"\\u73ca\\u82eb\\u6749\\u5c71\\u5220\\u717d\\u886b\\u95ea\\u9655\\u64c5\\u8d61\\u81b3\\u5584\\u6c55\\u6247\\u7f2e\\u5261\\u8baa\\u912f\\u57cf\\u829f\\u6f78\\u59d7\\u9a9f\\u81bb\\u9490\\u759d\\u87ee\\u8222\\u8dda\\u9cdd\", \"shang\": \"\\u5892\\u4f24\\u5546\\u8d4f\\u664c\\u4e0a\\u5c1a\\u88f3\\u57a7\\u7ef1\\u6b87\\u71b5\\u89de\", \"shao\": \"\\u68a2\\u634e\\u7a0d\\u70e7\\u828d\\u52fa\\u97f6\\u5c11\\u54e8\\u90b5\\u7ecd\\u52ad\\u82d5\\u6f72\\u86f8\\u7b24\\u7b72\\u8244\", \"she\": \"\\u5962\\u8d4a\\u86c7\\u820c\\u820d\\u8d66\\u6444\\u5c04\\u6151\\u6d89\\u793e\\u8bbe\\u538d\\u4f58\\u731e\\u7572\\u9e9d\", \"shen\": \"\\u7837\\u7533\\u547b\\u4f38\\u8eab\\u6df1\\u5a20\\u7ec5\\u795e\\u6c88\\u5ba1\\u5a76\\u751a\\u80be\\u614e\\u6e17\\u8bdc\\u8c02\\u5432\\u54c2\\u6e16\\u6939\\u77e7\\u8703\", \"sheng\": \"\\u58f0\\u751f\\u7525\\u7272\\u5347\\u7ef3\\u7701\\u76db\\u5269\\u80dc\\u5723\\u4e1e\\u6e11\\u5ab5\\u771a\\u7b19\", \"shi\": \"\\u5e08\\u5931\\u72ee\\u65bd\\u6e7f\\u8bd7\\u5c38\\u8671\\u5341\\u77f3\\u62fe\\u65f6\\u4ec0\\u98df\\u8680\\u5b9e\\u8bc6\\u53f2\\u77e2\\u4f7f\\u5c4e\\u9a76\\u59cb\\u5f0f\\u793a\\u58eb\\u4e16\\u67ff\\u4e8b\\u62ed\\u8a93\\u901d\\u52bf\\u662f\\u55dc\\u566c\\u9002\\u4ed5\\u4f8d\\u91ca\\u9970\\u6c0f\\u5e02\\u6043\\u5ba4\\u89c6\\u8bd5\\u8c25\\u57d8\\u83b3\\u84cd\\u5f11\\u5511\\u9963\\u8f7c\\u8006\\u8d33\\u70bb\\u793b\\u94c8\\u94ca\\u87ab\\u8210\\u7b6e\\u8c55\\u9ca5\\u9cba\", \"shou\": \"\\u6536\\u624b\\u9996\\u5b88\\u5bff\\u6388\\u552e\\u53d7\\u7626\\u517d\\u624c\\u72e9\\u7ef6\\u824f\", \"shu\": \"\\u852c\\u67a2\\u68b3\\u6b8a\\u6292\\u8f93\\u53d4\\u8212\\u6dd1\\u758f\\u4e66\\u8d4e\\u5b70\\u719f\\u85af\\u6691\\u66d9\\u7f72\\u8700\\u9ecd\\u9f20\\u5c5e\\u672f\\u8ff0\\u6811\\u675f\\u620d\\u7ad6\\u5885\\u5eb6\\u6570\\u6f31\\u6055\\u500f\\u587e\\u83fd\\u5fc4\\u6cad\\u6d91\\u6f8d\\u59dd\\u7ebe\\u6bf9\\u8167\\u6bb3\\u956f\\u79eb\\u9e6c\", \"shua\": \"\\u5237\\u800d\\u5530\\u6dae\", \"shuai\": \"\\u6454\\u8870\\u7529\\u5e05\\u87c0\", \"shuan\": \"\\u6813\\u62f4\\u95e9\", \"shuang\": \"\\u971c\\u53cc\\u723d\\u5b40\", \"shui\": \"\\u8c01\\u6c34\\u7761\\u7a0e\", \"shun\": \"\\u542e\\u77ac\\u987a\\u821c\\u6042\", \"shuo\": \"\\u8bf4\\u7855\\u6714\\u70c1\\u84b4\\u6420\\u55cd\\u6fef\\u5981\\u69ca\\u94c4\", \"si\": \"\\u65af\\u6495\\u5636\\u601d\\u79c1\\u53f8\\u4e1d\\u6b7b\\u8086\\u5bfa\\u55e3\\u56db\\u4f3a\\u4f3c\\u9972\\u5df3\\u53ae\\u4fdf\\u5155\\u83e5\\u549d\\u6c5c\\u6cd7\\u6f8c\\u59d2\\u9a77\\u7f0c\\u7940\\u7960\\u9536\\u9e36\\u801c\\u86f3\\u7b25\", \"song\": \"\\u677e\\u8038\\u6002\\u9882\\u9001\\u5b8b\\u8bbc\\u8bf5\\u51c7\\u83d8\\u5d27\\u5d69\\u5fea\\u609a\\u6dde\\u7ae6\", \"sou\": \"\\u641c\\u8258\\u64de\\u55fd\\u53df\\u55d6\\u55fe\\u998a\\u6eb2\\u98d5\\u778d\\u953c\\u878b\", \"su\": \"\\u82cf\\u9165\\u4fd7\\u7d20\\u901f\\u7c9f\\u50f3\\u5851\\u6eaf\\u5bbf\\u8bc9\\u8083\\u5919\\u8c21\\u850c\\u55c9\\u612b\\u7c0c\\u89eb\\u7a23\", \"suan\": \"\\u9178\\u849c\\u7b97\", \"sui\": \"\\u867d\\u968b\\u968f\\u7ee5\\u9ad3\\u788e\\u5c81\\u7a57\\u9042\\u96a7\\u795f\\u84d1\\u51ab\\u8c07\\u6fc9\\u9083\\u71e7\\u772d\\u7762\", \"sun\": \"\\u5b59\\u635f\\u7b0b\\u836a\\u72f2\\u98e7\\u69ab\\u8de3\\u96bc\", \"suo\": \"\\u68ad\\u5506\\u7f29\\u7410\\u7d22\\u9501\\u6240\\u5522\\u55e6\\u5a11\\u686b\\u7743\\u7fa7\", \"ta\": \"\\u584c\\u4ed6\\u5b83\\u5979\\u5854\\u736d\\u631e\\u8e4b\\u8e0f\\u95fc\\u6ebb\\u9062\\u69bb\\u6c93\", \"tai\": \"\\u80ce\\u82d4\\u62ac\\u53f0\\u6cf0\\u915e\\u592a\\u6001\\u6c70\\u90b0\\u85b9\\u80bd\\u70b1\\u949b\\u8dc6\\u9c90\", \"tan\": \"\\u574d\\u644a\\u8d2a\\u762b\\u6ee9\\u575b\\u6a80\\u75f0\\u6f6d\\u8c2d\\u8c08\\u5766\\u6bef\\u8892\\u78b3\\u63a2\\u53f9\\u70ad\\u90ef\\u8548\\u6619\\u94bd\\u952c\\u8983\", \"tang\": \"\\u6c64\\u5858\\u642a\\u5802\\u68e0\\u819b\\u5510\\u7cd6\\u50a5\\u9967\\u6e8f\\u746d\\u94f4\\u9557\\u8025\\u8797\\u87b3\\u7fb0\\u91a3\", \"thang\": \"\\u5018\\u8eba\\u6dcc\", \"theng\": \"\\u8d9f\\u70eb\", \"tao\": \"\\u638f\\u6d9b\\u6ed4\\u7ee6\\u8404\\u6843\\u9003\\u6dd8\\u9676\\u8ba8\\u5957\\u6311\\u9f17\\u5555\\u97ec\\u9955\", \"te\": \"\\u7279\", \"teng\": \"\\u85e4\\u817e\\u75bc\\u8a8a\\u6ed5\", \"ti\": \"\\u68af\\u5254\\u8e22\\u9511\\u63d0\\u9898\\u8e44\\u557c\\u4f53\\u66ff\\u568f\\u60d5\\u6d95\\u5243\\u5c49\\u8351\\u608c\\u9016\\u7ee8\\u7f07\\u9e48\\u88fc\\u918d\", \"tian\": \"\\u5929\\u6dfb\\u586b\\u7530\\u751c\\u606c\\u8214\\u8146\\u63ad\\u5fdd\\u9617\\u6b84\\u754b\\u94bf\\u86ba\", \"tiao\": \"\\u6761\\u8fe2\\u773a\\u8df3\\u4f7b\\u7967\\u94eb\\u7a95\\u9f86\\u9ca6\", \"tie\": \"\\u8d34\\u94c1\\u5e16\\u841c\\u992e\", \"ting\": \"\\u5385\\u542c\\u70c3\\u6c40\\u5ef7\\u505c\\u4ead\\u5ead\\u633a\\u8247\\u839b\\u8476\\u5a77\\u6883\\u8713\\u9706\", \"tong\": \"\\u901a\\u6850\\u916e\\u77b3\\u540c\\u94dc\\u5f64\\u7ae5\\u6876\\u6345\\u7b52\\u7edf\\u75db\\u4f5f\\u50ee\\u4edd\\u833c\\u55f5\\u6078\\u6f7c\\u783c\", \"tou\": \"\\u5077\\u6295\\u5934\\u900f\\u4ea0\", \"tu\": \"\\u51f8\\u79c3\\u7a81\\u56fe\\u5f92\\u9014\\u6d82\\u5c60\\u571f\\u5410\\u5154\\u580d\\u837c\\u83df\\u948d\\u9174\", \"tuan\": \"\\u6e4d\\u56e2\\u7583\", \"tui\": \"\\u63a8\\u9893\\u817f\\u8715\\u892a\\u9000\\u5fd2\\u717a\", \"tun\": \"\\u541e\\u5c6f\\u81c0\\u9968\\u66be\\u8c5a\\u7a80\", \"tuo\": \"\\u62d6\\u6258\\u8131\\u9e35\\u9640\\u9a6e\\u9a7c\\u692d\\u59a5\\u62d3\\u553e\\u4e47\\u4f57\\u5768\\u5eb9\\u6cb1\\u67dd\\u7823\\u7ba8\\u8204\\u8dce\\u9f0d\", \"wa\": \"\\u6316\\u54c7\\u86d9\\u6d3c\\u5a03\\u74e6\\u889c\\u4f64\\u5a32\\u817d\", \"wai\": \"\\u6b6a\\u5916\", \"wan\": \"\\u8c4c\\u5f2f\\u6e7e\\u73a9\\u987d\\u4e38\\u70f7\\u5b8c\\u7897\\u633d\\u665a\\u7696\\u60cb\\u5b9b\\u5a49\\u4e07\\u8155\\u525c\\u8284\\u82cb\\u83c0\\u7ea8\\u7efe\\u742c\\u8118\\u7579\\u873f\\u7ba2\", \"wang\": \"\\u6c6a\\u738b\\u4ea1\\u6789\\u7f51\\u5f80\\u65fa\\u671b\\u5fd8\\u5984\\u7f54\\u5c22\\u60d8\\u8f8b\\u9b4d\", \"wei\": \"\\u5a01\\u5dcd\\u5fae\\u5371\\u97e6\\u8fdd\\u6845\\u56f4\\u552f\\u60df\\u4e3a\\u6f4d\\u7ef4\\u82c7\\u840e\\u59d4\\u4f1f\\u4f2a\\u5c3e\\u7eac\\u672a\\u851a\\u5473\\u754f\\u80c3\\u5582\\u9b4f\\u4f4d\\u6e2d\\u8c13\\u5c09\\u6170\\u536b\\u502d\\u504e\\u8bff\\u9688\\u8473\\u8587\\u5e0f\\u5e37\\u5d34\\u5d6c\\u7325\\u732c\\u95f1\\u6ca9\\u6d27\\u6da0\\u9036\\u5a13\\u73ae\\u97ea\\u8ece\\u709c\\u7168\\u71a8\\u75ff\\u8249\\u9c94\", \"wen\": \"\\u761f\\u6e29\\u868a\\u6587\\u95fb\\u7eb9\\u543b\\u7a33\\u7d0a\\u95ee\\u520e\\u6120\\u960c\\u6c76\\u74ba\\u97eb\\u6b81\\u96ef\", \"weng\": \"\\u55e1\\u7fc1\\u74ee\\u84ca\\u8579\", \"wo\": \"\\u631d\\u8717\\u6da1\\u7a9d\\u6211\\u65a1\\u5367\\u63e1\\u6c83\\u83b4\\u5e44\\u6e25\\u674c\\u809f\\u9f8c\", \"wu\": \"\\u5deb\\u545c\\u94a8\\u4e4c\\u6c61\\u8bec\\u5c4b\\u65e0\\u829c\\u68a7\\u543e\\u5434\\u6bcb\\u6b66\\u4e94\\u6342\\u5348\\u821e\\u4f0d\\u4fae\\u575e\\u620a\\u96fe\\u6664\\u7269\\u52ff\\u52a1\\u609f\\u8bef\\u5140\\u4ef5\\u9622\\u90ac\\u572c\\u82b4\\u5e91\\u6003\\u5fe4\\u6d6f\\u5be4\\u8fd5\\u59a9\\u9a9b\\u727e\\u7110\\u9e49\\u9e5c\\u8708\\u92c8\\u9f2f\", \"xi\": \"\\u6614\\u7199\\u6790\\u897f\\u7852\\u77fd\\u6670\\u563b\\u5438\\u9521\\u727a\\u7a00\\u606f\\u5e0c\\u6089\\u819d\\u5915\\u60dc\\u7184\\u70ef\\u6eaa\\u6c50\\u7280\\u6a84\\u88ad\\u5e2d\\u4e60\\u5ab3\\u559c\\u94e3\\u6d17\\u7cfb\\u9699\\u620f\\u7ec6\\u50d6\\u516e\\u96b0\\u90d7\\u831c\\u8478\\u84f0\\u595a\\u550f\\u5f99\\u9969\\u960b\\u6d60\\u6dc5\\u5c63\\u5b09\\u73ba\\u6a28\\u66e6\\u89cb\\u6b37\\u71b9\\u798a\\u79a7\\u94b8\\u7699\\u7a78\\u8725\\u87cb\\u823e\\u7fb2\\u7c9e\\u7fd5\\u91af\\u9f37\", \"xia\": \"\\u778e\\u867e\\u5323\\u971e\\u8f96\\u6687\\u5ce1\\u4fa0\\u72ed\\u4e0b\\u53a6\\u590f\\u5413\\u6380\\u846d\\u55c4\\u72ce\\u9050\\u7455\\u7856\\u7615\\u7f45\\u9ee0\", \"xian\": \"\\u9528\\u5148\\u4ed9\\u9c9c\\u7ea4\\u54b8\\u8d24\\u8854\\u8237\\u95f2\\u6d8e\\u5f26\\u5acc\\u663e\\u9669\\u73b0\\u732e\\u53bf\\u817a\\u9985\\u7fa1\\u5baa\\u9677\\u9650\\u7ebf\\u51bc\\u85d3\\u5c98\\u7303\\u66b9\\u5a34\\u6c19\\u7946\\u9e47\\u75eb\\u86ac\\u7b45\\u7c7c\\u9170\\u8df9\", \"xiang\": \"\\u76f8\\u53a2\\u9576\\u9999\\u7bb1\\u8944\\u6e58\\u4e61\\u7fd4\\u7965\\u8be6\\u60f3\\u54cd\\u4eab\\u9879\\u5df7\\u6a61\\u50cf\\u5411\\u8c61\\u8297\\u8459\\u9977\\u5ea0\\u9aa7\\u7f03\\u87d3\\u9c9e\\u98e8\", \"xiao\": \"\\u8427\\u785d\\u9704\\u524a\\u54ee\\u56a3\\u9500\\u6d88\\u5bb5\\u6dc6\\u6653\\u5c0f\\u5b5d\\u6821\\u8096\\u5578\\u7b11\\u6548\\u54d3\\u54bb\\u5d24\\u6f47\\u900d\\u9a81\\u7ee1\\u67ad\\u67b5\\u7b71\\u7bab\\u9b48\", \"xie\": \"\\u6954\\u4e9b\\u6b47\\u874e\\u978b\\u534f\\u631f\\u643a\\u90aa\\u659c\\u80c1\\u8c10\\u5199\\u68b0\\u5378\\u87f9\\u61c8\\u6cc4\\u6cfb\\u8c22\\u5c51\\u5055\\u4eb5\\u52f0\\u71ee\\u85a4\\u64b7\\u5ee8\\u7023\\u9082\\u7ec1\\u7f2c\\u69ad\\u698d\\u6b59\\u8e9e\", \"xin\": \"\\u85aa\\u82af\\u950c\\u6b23\\u8f9b\\u65b0\\u5ffb\\u5fc3\\u4fe1\\u8845\\u56df\\u99a8\\u8398\\u6b46\\u94fd\\u946b\", \"xing\": \"\\u661f\\u8165\\u7329\\u60fa\\u5174\\u5211\\u578b\\u5f62\\u90a2\\u884c\\u9192\\u5e78\\u674f\\u6027\\u59d3\\u9649\\u8347\\u8365\\u64e4\\u60bb\\u784e\", \"xiong\": \"\\u5144\\u51f6\\u80f8\\u5308\\u6c79\\u96c4\\u718a\\u828e\", \"xiu\": \"\\u4f11\\u4fee\\u7f9e\\u673d\\u55c5\\u9508\\u79c0\\u8896\\u7ee3\\u83a0\\u5cab\\u9990\\u5ea5\\u9e3a\\u8c85\\u9af9\", \"xu\": \"\\u589f\\u620c\\u9700\\u865a\\u5618\\u987b\\u5f90\\u8bb8\\u84c4\\u9157\\u53d9\\u65ed\\u5e8f\\u755c\\u6064\\u7d6e\\u5a7f\\u7eea\\u7eed\\u8bb4\\u8be9\\u5729\\u84ff\\u6035\\u6d2b\\u6e86\\u987c\\u6829\\u7166\\u7809\\u76f1\\u80e5\\u7cc8\\u9191\", \"xuan\": \"\\u8f69\\u55a7\\u5ba3\\u60ac\\u65cb\\u7384\\u9009\\u7663\\u7729\\u7eda\\u5107\\u8c16\\u8431\\u63ce\\u9994\\u6ceb\\u6d35\\u6e32\\u6f29\\u7487\\u6966\\u6684\\u70ab\\u714a\\u78b9\\u94c9\\u955f\\u75c3\", \"xue\": \"\\u9774\\u859b\\u5b66\\u7a74\\u96ea\\u8840\\u5671\\u6cf6\\u9cd5\", \"xun\": \"\\u52cb\\u718f\\u5faa\\u65ec\\u8be2\\u5bfb\\u9a6f\\u5de1\\u6b89\\u6c5b\\u8bad\\u8baf\\u900a\\u8fc5\\u5dfd\\u57d9\\u8340\\u85b0\\u5ccb\\u5f87\\u6d54\\u66db\\u7aa8\\u91ba\\u9c9f\", \"ya\": \"\\u538b\\u62bc\\u9e26\\u9e2d\\u5440\\u4e2b\\u82bd\\u7259\\u869c\\u5d16\\u8859\\u6daf\\u96c5\\u54d1\\u4e9a\\u8bb6\\u4f22\\u63e0\\u5416\\u5c88\\u8fd3\\u5a05\\u740a\\u6860\\u6c29\\u7811\\u775a\\u75d6\", \"yan\": \"\\u7109\\u54bd\\u9609\\u70df\\u6df9\\u76d0\\u4e25\\u7814\\u8712\\u5ca9\\u5ef6\\u8a00\\u989c\\u960e\\u708e\\u6cbf\\u5944\\u63a9\\u773c\\u884d\\u6f14\\u8273\\u5830\\u71d5\\u538c\\u781a\\u96c1\\u5501\\u5f66\\u7130\\u5bb4\\u8c1a\\u9a8c\\u53a3\\u9765\\u8d5d\\u4fe8\\u5043\\u5156\\u8ba0\\u8c33\\u90fe\\u9122\\u82ab\\u83f8\\u5d26\\u6079\\u95eb\\u960f\\u6d07\\u6e6e\\u6edf\\u598d\\u5ae3\\u7430\\u664f\\u80ed\\u814c\\u7131\\u7f68\\u7b75\\u917d\\u9b47\\u990d\\u9f39\", \"yang\": \"\\u6b83\\u592e\\u9e2f\\u79e7\\u6768\\u626c\\u4f6f\\u75a1\\u7f8a\\u6d0b\\u9633\\u6c27\\u4ef0\\u75d2\\u517b\\u6837\\u6f3e\\u5f89\\u600f\\u6cf1\\u7080\\u70ca\\u6059\\u86d8\\u9785\", \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5c27\\u9065\\u7a91\\u8c23\\u59da\\u54ac\\u8200\\u836f\\u8981\\u8000\\u592d\\u723b\\u5406\\u5d3e\\u5fad\\u7039\\u5e7a\\u73e7\\u6773\\u66dc\\u80b4\\u9e5e\\u7a88\\u7e47\\u9cd0\", \"ye\": \"\\u6930\\u564e\\u8036\\u7237\\u91ce\\u51b6\\u4e5f\\u9875\\u6396\\u4e1a\\u53f6\\u66f3\\u814b\\u591c\\u6db2\\u8c12\\u90ba\\u63f6\\u9980\\u6654\\u70e8\\u94d8\", \"yi\": \"\\u4e00\\u58f9\\u533b\\u63d6\\u94f1\\u4f9d\\u4f0a\\u8863\\u9890\\u5937\\u9057\\u79fb\\u4eea\\u80f0\\u7591\\u6c82\\u5b9c\\u59e8\\u5f5d\\u6905\\u8681\\u501a\\u5df2\\u4e59\\u77e3\\u4ee5\\u827a\\u6291\\u6613\\u9091\\u5c79\\u4ebf\\u5f79\\u81c6\\u9038\\u8084\\u75ab\\u4ea6\\u88d4\\u610f\\u6bc5\\u5fc6\\u4e49\\u76ca\\u6ea2\\u8be3\\u8bae\\u8c0a\\u8bd1\\u5f02\\u7ffc\\u7fcc\\u7ece\\u5208\\u5293\\u4f7e\\u8bd2\\u572a\\u572f\\u57f8\\u61ff\\u82e1\\u858f\\u5f08\\u5955\\u6339\\u5f0b\\u5453\\u54a6\\u54bf\\u566b\\u5cc4\\u5db7\\u7317\\u9974\\u603f\\u6021\\u6092\\u6f2a\\u8fe4\\u9a7f\\u7f22\\u6baa\\u8d3b\\u65d6\\u71a0\\u9487\\u9552\\u9571\\u75cd\\u7617\\u7654\\u7fca\\u8864\\u8734\\u8223\\u7fbf\\u7ff3\\u914f\\u9edf\", \"yin\": \"\\u8335\\u836b\\u56e0\\u6bb7\\u97f3\\u9634\\u59fb\\u541f\\u94f6\\u6deb\\u5bc5\\u996e\\u5c39\\u5f15\\u9690\\u5370\\u80e4\\u911e\\u5819\\u831a\\u5591\\u72fa\\u5924\\u6c24\\u94df\\u763e\\u8693\\u972a\\u9f88\", \"ying\": \"\\u82f1\\u6a31\\u5a74\\u9e70\\u5e94\\u7f28\\u83b9\\u8424\\u8425\\u8367\\u8747\\u8fce\\u8d62\\u76c8\\u5f71\\u9896\\u786c\\u6620\\u5b34\\u90e2\\u8314\\u83ba\\u8426\\u6484\\u5624\\u81ba\\u6ee2\\u6f46\\u701b\\u745b\\u748e\\u6979\\u9e66\\u763f\\u988d\\u7f42\", \"yo\": \"\\u54df\\u5537\", \"yong\": \"\\u62e5\\u4f63\\u81c3\\u75c8\\u5eb8\\u96cd\\u8e0a\\u86f9\\u548f\\u6cf3\\u6d8c\\u6c38\\u607f\\u52c7\\u7528\\u4fd1\\u58c5\\u5889\\u6175\\u9095\\u955b\\u752c\\u9cd9\\u9954\", \"you\": \"\\u5e7d\\u4f18\\u60a0\\u5fe7\\u5c24\\u7531\\u90ae\\u94c0\\u72b9\\u6cb9\\u6e38\\u9149\\u6709\\u53cb\\u53f3\\u4f51\\u91c9\\u8bf1\\u53c8\\u5e7c\\u5363\\u6538\\u4f91\\u83b8\\u5466\\u56ff\\u5ba5\\u67da\\u7337\\u7256\\u94d5\\u75a3\\u8763\\u9c7f\\u9edd\\u9f2c\", \"yu\": \"\\u8fc2\\u6de4\\u4e8e\\u76c2\\u6986\\u865e\\u611a\\u8206\\u4f59\\u4fde\\u903e\\u9c7c\\u6109\\u6e1d\\u6e14\\u9685\\u4e88\\u5a31\\u96e8\\u4e0e\\u5c7f\\u79b9\\u5b87\\u8bed\\u7fbd\\u7389\\u57df\\u828b\\u90c1\\u5401\\u9047\\u55bb\\u5cea\\u5fa1\\u6108\\u6b32\\u72f1\\u80b2\\u8a89\\u6d74\\u5bd3\\u88d5\\u9884\\u8c6b\\u9a6d\\u79ba\\u6bd3\\u4f1b\\u4fe3\\u8c00\\u8c15\\u8438\\u84e3\\u63c4\\u5581\\u5704\\u5709\\u5d5b\\u72f3\\u996b\\u5ebe\\u9608\\u59aa\\u59a4\\u7ea1\\u745c\\u6631\\u89ce\\u8174\\u6b24\\u65bc\\u715c\\u71e0\\u807f\\u94b0\\u9e46\\u7610\\u7600\\u7ab3\\u8753\\u7afd\\u8201\\u96e9\\u9f89\", \"yuan\": \"\\u9e33\\u6e0a\\u51a4\\u5143\\u57a3\\u8881\\u539f\\u63f4\\u8f95\\u56ed\\u5458\\u5706\\u733f\\u6e90\\u7f18\\u8fdc\\u82d1\\u613f\\u6028\\u9662\\u586c\\u6c85\\u5a9b\\u7457\\u6a7c\\u7230\\u7722\\u9e22\\u8788\\u9f0b\", \"yue\": \"\\u66f0\\u7ea6\\u8d8a\\u8dc3\\u94a5\\u5cb3\\u7ca4\\u6708\\u60a6\\u9605\\u9fa0\\u6a3e\\u5216\\u94ba\", \"yun\": \"\\u8018\\u4e91\\u90e7\\u5300\\u9668\\u5141\\u8fd0\\u8574\\u915d\\u6655\\u97f5\\u5b55\\u90d3\\u82b8\\u72c1\\u607d\\u7ead\\u6b92\\u6600\\u6c32\", \"za\": \"\\u531d\\u7838\\u6742\\u62f6\\u5482\", \"zai\": \"\\u683d\\u54c9\\u707e\\u5bb0\\u8f7d\\u518d\\u5728\\u54b1\\u5d3d\\u753e\", \"zan\": \"\\u6512\\u6682\\u8d5e\\u74d2\\u661d\\u7c2a\\u7ccc\\u8db1\\u933e\", \"zang\": \"\\u8d43\\u810f\\u846c\\u5958\\u6215\\u81e7\", \"zao\": \"\\u906d\\u7cdf\\u51ff\\u85fb\\u67a3\\u65e9\\u6fa1\\u86a4\\u8e81\\u566a\\u9020\\u7682\\u7076\\u71e5\\u5523\\u7f2b\", \"ze\": \"\\u8d23\\u62e9\\u5219\\u6cfd\\u4ec4\\u8d5c\\u5567\\u8fee\\u6603\\u7b2e\\u7ba6\\u8234\", \"zei\": \"\\u8d3c\", \"zen\": \"\\u600e\\u8c2e\", \"zeng\": \"\\u589e\\u618e\\u66fe\\u8d60\\u7f2f\\u7511\\u7f7e\\u9503\", \"zha\": \"\\u624e\\u55b3\\u6e23\\u672d\\u8f67\\u94e1\\u95f8\\u7728\\u6805\\u69a8\\u548b\\u4e4d\\u70b8\\u8bc8\\u63f8\\u5412\\u54a4\\u54f3\\u600d\\u781f\\u75c4\\u86b1\\u9f44\", \"zhai\": \"\\u6458\\u658b\\u5b85\\u7a84\\u503a\\u5be8\\u7826\", \"zhan\": \"\\u77bb\\u6be1\\u8a79\\u7c98\\u6cbe\\u76cf\\u65a9\\u8f97\\u5d2d\\u5c55\\u8638\\u6808\\u5360\\u6218\\u7ad9\\u6e5b\\u7efd\\u8c35\\u640c\\u65c3\", \"zhang\": \"\\u6a1f\\u7ae0\\u5f70\\u6f33\\u5f20\\u638c\\u6da8\\u6756\\u4e08\\u5e10\\u8d26\\u4ed7\\u80c0\\u7634\\u969c\\u4ec9\\u9123\\u5e5b\\u5d82\\u7350\\u5adc\\u748b\\u87d1\", \"zhao\": \"\\u62db\\u662d\\u627e\\u6cbc\\u8d75\\u7167\\u7f69\\u5146\\u8087\\u53ec\\u722a\\u8bcf\\u68f9\\u948a\\u7b0a\", \"zhe\": \"\\u906e\\u6298\\u54f2\\u86f0\\u8f99\\u8005\\u9517\\u8517\\u8fd9\\u6d59\\u8c2a\\u966c\\u67d8\\u8f84\\u78d4\\u9e67\\u891a\\u8707\\u8d6d\", \"zhen\": \"\\u73cd\\u659f\\u771f\\u7504\\u7827\\u81fb\\u8d1e\\u9488\\u4fa6\\u6795\\u75b9\\u8bca\\u9707\\u632f\\u9547\\u9635\\u7f1c\\u6862\\u699b\\u8f78\\u8d48\\u80d7\\u6715\\u796f\\u755b\\u9e29\", \"zheng\": \"\\u84b8\\u6323\\u7741\\u5f81\\u72f0\\u4e89\\u6014\\u6574\\u62ef\\u6b63\\u653f\\u5e27\\u75c7\\u90d1\\u8bc1\\u8be4\\u5ce5\\u94b2\\u94ee\\u7b5d\", \"zhi\": \"\\u829d\\u679d\\u652f\\u5431\\u8718\\u77e5\\u80a2\\u8102\\u6c41\\u4e4b\\u7ec7\\u804c\\u76f4\\u690d\\u6b96\\u6267\\u503c\\u4f84\\u5740\\u6307\\u6b62\\u8dbe\\u53ea\\u65e8\\u7eb8\\u5fd7\\u631a\\u63b7\\u81f3\\u81f4\\u7f6e\\u5e1c\\u5cd9\\u5236\\u667a\\u79e9\\u7a1a\\u8d28\\u7099\\u75d4\\u6ede\\u6cbb\\u7a92\\u536e\\u965f\\u90c5\\u57f4\\u82b7\\u646d\\u5e19\\u5fee\\u5f58\\u54ab\\u9a98\\u6809\\u67b3\\u6800\\u684e\\u8f75\\u8f7e\\u6534\\u8d3d\\u81a3\\u7949\\u7957\\u9ef9\\u96c9\\u9e37\\u75e3\\u86ed\\u7d77\\u916f\\u8dd6\\u8e2c\\u8e2f\\u8c78\\u89ef\", \"zhong\": \"\\u4e2d\\u76c5\\u5fe0\\u949f\\u8877\\u7ec8\\u79cd\\u80bf\\u91cd\\u4ef2\\u4f17\\u51a2\\u953a\\u87bd\\u8202\\u822f\\u8e35\", \"zhou\": \"\\u821f\\u5468\\u5dde\\u6d32\\u8bcc\\u7ca5\\u8f74\\u8098\\u5e1a\\u5492\\u76b1\\u5b99\\u663c\\u9aa4\\u5544\\u7740\\u501c\\u8bf9\\u836e\\u9b3b\\u7ea3\\u80c4\\u78a1\\u7c40\\u8233\\u914e\\u9cb7\", \"zhu\": \"\\u73e0\\u682a\\u86db\\u6731\\u732a\\u8bf8\\u8bdb\\u9010\\u7af9\\u70db\\u716e\\u62c4\\u77a9\\u5631\\u4e3b\\u8457\\u67f1\\u52a9\\u86c0\\u8d2e\\u94f8\\u7b51\\u4f4f\\u6ce8\\u795d\\u9a7b\\u4f2b\\u4f8f\\u90be\\u82ce\\u8331\\u6d19\\u6e1a\\u6f74\\u9a7a\\u677c\\u69e0\\u6a65\\u70b7\\u94e2\\u75b0\\u7603\\u86b0\\u7afa\\u7bb8\\u7fe5\\u8e85\\u9e88\", \"zhua\": \"\\u6293\", \"zhuai\": \"\\u62fd\", \"zhuan\": \"\\u4e13\\u7816\\u8f6c\\u64b0\\u8d5a\\u7bc6\\u629f\\u556d\\u989b\", \"zhuang\": \"\\u6869\\u5e84\\u88c5\\u5986\\u649e\\u58ee\\u72b6\\u4e2c\", \"zhui\": \"\\u690e\\u9525\\u8ffd\\u8d58\\u5760\\u7f00\\u8411\\u9a93\\u7f12\", \"zhun\": \"\\u8c06\\u51c6\", \"zhuo\": \"\\u6349\\u62d9\\u5353\\u684c\\u7422\\u8301\\u914c\\u707c\\u6d4a\\u502c\\u8bfc\\u5ef4\\u855e\\u64e2\\u555c\\u6d5e\\u6dbf\\u6753\\u712f\\u799a\\u65ab\", \"zi\": \"\\u5179\\u54a8\\u8d44\\u59ff\\u6ecb\\u6dc4\\u5b5c\\u7d2b\\u4ed4\\u7c7d\\u6ed3\\u5b50\\u81ea\\u6e0d\\u5b57\\u8c18\\u5d6b\\u59ca\\u5b73\\u7f01\\u6893\\u8f8e\\u8d40\\u6063\\u7726\\u9531\\u79ed\\u8014\\u7b2b\\u7ca2\\u89dc\\u8a3e\\u9cbb\\u9aed\", \"zong\": \"\\u9b03\\u68d5\\u8e2a\\u5b97\\u7efc\\u603b\\u7eb5\\u8159\\u7cbd\", \"zou\": \"\\u90b9\\u8d70\\u594f\\u63cd\\u9139\\u9cb0\", \"zu\": \"\\u79df\\u8db3\\u5352\\u65cf\\u7956\\u8bc5\\u963b\\u7ec4\\u4fce\\u83f9\\u5550\\u5f82\\u9a75\\u8e74\", \"zuan\": \"\\u94bb\\u7e82\\u6525\\u7f35\", \"zui\": \"\\u5634\\u9189\\u6700\\u7f6a\", \"zun\": \"\\u5c0a\\u9075\\u6499\\u6a3d\\u9cdf\", \"zuo\": \"\\u6628\\u5de6\\u4f50\\u67de\\u505a\\u4f5c\\u5750\\u5ea7\\u961d\\u963c\\u80d9\\u795a\\u9162\", \"cou\": \"\\u85ae\\u6971\\u8f8f\\u8160\", \"nang\": \"\\u652e\\u54dd\\u56d4\\u9995\\u66e9\", \"o\": \"\\u5594\", \"dia\": \"\\u55f2\", \"chuai\": \"\\u562c\\u81aa\\u8e39\", \"cen\": \"\\u5c91\\u6d94\", \"diu\": \"\\u94e5\", \"nou\": \"\\u8028\", \"fou\": \"\\u7f36\", \"bia\": \"\\u9adf\" };\r\nconst polyphone: any = { \"19969\": \"DZ\", \"19975\": \"WM\", \"19988\": \"QJ\", \"20048\": \"YL\", \"20056\": \"SC\", \"20060\": \"NM\", \"20094\": \"QG\", \"20127\": \"QJ\", \"20167\": \"QC\", \"20193\": \"YG\", \"20250\": \"KH\", \"20256\": \"ZC\", \"20282\": \"SC\", \"20285\": \"QJG\", \"20291\": \"TD\", \"20314\": \"YD\", \"20340\": \"NE\", \"20375\": \"TD\", \"20389\": \"YJ\", \"20391\": \"CZ\", \"20415\": \"PB\", \"20446\": \"YS\", \"20447\": \"SQ\", \"20504\": \"TC\", \"20608\": \"KG\", \"20854\": \"QJ\", \"20857\": \"ZC\", \"20911\": \"PF\", \"20985\": \"AW\", \"21032\": \"PB\", \"21048\": \"XQ\", \"21049\": \"SC\", \"21089\": \"YS\", \"21119\": \"JC\", \"21242\": \"SB\", \"21273\": \"SC\", \"21305\": \"YP\", \"21306\": \"QO\", \"21330\": \"ZC\", \"21333\": \"SDC\", \"21345\": \"QK\", \"21378\": \"CA\", \"21397\": \"SC\", \"21414\": \"XS\", \"21442\": \"SC\", \"21477\": \"JG\", \"21480\": \"TD\", \"21484\": \"ZS\", \"21494\": \"YX\", \"21505\": \"YX\", \"21512\": \"HG\", \"21523\": \"XH\", \"21537\": \"PB\", \"21542\": \"PF\", \"21549\": \"KH\", \"21571\": \"E\", \"21574\": \"DA\", \"21588\": \"TD\", \"21589\": \"O\", \"21618\": \"ZC\", \"21621\": \"KHA\", \"21632\": \"ZJ\", \"21654\": \"KG\", \"21679\": \"LKG\", \"21683\": \"KH\", \"21710\": \"A\", \"21719\": \"YH\", \"21734\": \"WOE\", \"21769\": \"A\", \"21780\": \"WN\", \"21804\": \"XH\", \"21834\": \"A\", \"21899\": \"ZD\", \"21903\": \"RN\", \"21908\": \"WO\", \"21939\": \"ZC\", \"21956\": \"SA\", \"21964\": \"YA\", \"21970\": \"TD\", \"22003\": \"A\", \"22031\": \"JG\", \"22040\": \"XS\", \"22060\": \"ZC\", \"22066\": \"ZC\", \"22079\": \"MH\", \"22129\": \"XJ\", \"22179\": \"XA\", \"22237\": \"NJ\", \"22244\": \"TD\", \"22280\": \"JQ\", \"22300\": \"YH\", \"22313\": \"XW\", \"22331\": \"YQ\", \"22343\": \"YJ\", \"22351\": \"PH\", \"22395\": \"DC\", \"22412\": \"TD\", \"22484\": \"PB\", \"22500\": \"PB\", \"22534\": \"ZD\", \"22549\": \"DH\", \"22561\": \"PB\", \"22612\": \"TD\", \"22771\": \"KQ\", \"22831\": \"HB\", \"22841\": \"JG\", \"22855\": \"QJ\", \"22865\": \"XQ\", \"23013\": \"ML\", \"23081\": \"WM\", \"23487\": \"SX\", \"23558\": \"QJ\", \"23561\": \"YW\", \"23586\": \"YW\", \"23614\": \"YW\", \"23615\": \"SN\", \"23631\": \"PB\", \"23646\": \"ZS\", \"23663\": \"ZT\", \"23673\": \"YG\", \"23762\": \"TD\", \"23769\": \"ZS\", \"23780\": \"QJ\", \"23884\": \"QK\", \"24055\": \"XH\", \"24113\": \"DC\", \"24162\": \"ZC\", \"24191\": \"GA\", \"24273\": \"QJ\", \"24324\": \"NL\", \"24377\": \"TD\", \"24378\": \"QJ\", \"24439\": \"PF\", \"24554\": \"ZS\", \"24683\": \"TD\", \"24694\": \"WE\", \"24733\": \"LK\", \"24925\": \"TN\", \"25094\": \"ZG\", \"25100\": \"XQ\", \"25103\": \"XH\", \"25153\": \"PB\", \"25170\": \"PB\", \"25179\": \"KG\", \"25203\": \"PB\", \"25240\": \"ZS\", \"25282\": \"FB\", \"25303\": \"NA\", \"25324\": \"KG\", \"25341\": \"ZY\", \"25373\": \"WZ\", \"25375\": \"XJ\", \"25384\": \"A\", \"25457\": \"A\", \"25528\": \"SD\", \"25530\": \"SC\", \"25552\": \"TD\", \"25774\": \"ZC\", \"25874\": \"ZC\", \"26044\": \"YW\", \"26080\": \"WM\", \"26292\": \"PB\", \"26333\": \"PB\", \"26355\": \"ZY\", \"26366\": \"CZ\", \"26397\": \"ZC\", \"26399\": \"QJ\", \"26415\": \"ZS\", \"26451\": \"SB\", \"26526\": \"ZC\", \"26552\": \"JG\", \"26561\": \"TD\", \"26588\": \"JG\", \"26597\": \"CZ\", \"26629\": \"ZS\", \"26638\": \"YL\", \"26646\": \"XQ\", \"26653\": \"KG\", \"26657\": \"XJ\", \"26727\": \"HG\", \"26894\": \"ZC\", \"26937\": \"ZS\", \"26946\": \"ZC\", \"26999\": \"KJ\", \"27099\": \"KJ\", \"27449\": \"YQ\", \"27481\": \"XS\", \"27542\": \"ZS\", \"27663\": \"ZS\", \"27748\": \"TS\", \"27784\": \"SC\", \"27788\": \"ZD\", \"27795\": \"TD\", \"27812\": \"O\", \"27850\": \"PB\", \"27852\": \"MB\", \"27895\": \"SL\", \"27898\": \"PL\", \"27973\": \"QJ\", \"27981\": \"KH\", \"27986\": \"HX\", \"27994\": \"XJ\", \"28044\": \"YC\", \"28065\": \"WG\", \"28177\": \"SM\", \"28267\": \"QJ\", \"28291\": \"KH\", \"28337\": \"ZQ\", \"28463\": \"TL\", \"28548\": \"DC\", \"28601\": \"TD\", \"28689\": \"PB\", \"28805\": \"JG\", \"28820\": \"QG\", \"28846\": \"PB\", \"28952\": \"TD\", \"28975\": \"ZC\", \"29100\": \"A\", \"29325\": \"QJ\", \"29575\": \"SL\", \"29602\": \"FB\", \"30010\": \"TD\", \"30044\": \"CX\", \"30058\": \"PF\", \"30091\": \"YSP\", \"30111\": \"YN\", \"30229\": \"XJ\", \"30427\": \"SC\", \"30465\": \"SX\", \"30631\": \"YQ\", \"30655\": \"QJ\", \"30684\": \"QJG\", \"30707\": \"SD\", \"30729\": \"XH\", \"30796\": \"LG\", \"30917\": \"PB\", \"31074\": \"NM\", \"31085\": \"JZ\", \"31109\": \"SC\", \"31181\": \"ZC\", \"31192\": \"MLB\", \"31293\": \"JQ\", \"31400\": \"YX\", \"31584\": \"YJ\", \"31896\": \"ZN\", \"31909\": \"ZY\", \"31995\": \"XJ\", \"32321\": \"PF\", \"32327\": \"ZY\", \"32418\": \"HG\", \"32420\": \"XQ\", \"32421\": \"HG\", \"32438\": \"LG\", \"32473\": \"GJ\", \"32488\": \"TD\", \"32521\": \"QJ\", \"32527\": \"PB\", \"32562\": \"ZSQ\", \"32564\": \"JZ\", \"32735\": \"ZD\", \"32793\": \"PB\", \"33071\": \"PF\", \"33098\": \"XL\", \"33100\": \"YA\", \"33152\": \"PB\", \"33261\": \"CX\", \"33324\": \"BP\", \"33333\": \"TD\", \"33406\": \"YA\", \"33426\": \"WM\", \"33432\": \"PB\", \"33445\": \"JG\", \"33486\": \"ZN\", \"33493\": \"TS\", \"33507\": \"QJ\", \"33540\": \"QJ\", \"33544\": \"ZC\", \"33564\": \"XQ\", \"33617\": \"YT\", \"33632\": \"QJ\", \"33636\": \"XH\", \"33637\": \"YX\", \"33694\": \"WG\", \"33705\": \"PF\", \"33728\": \"YW\", \"33882\": \"SR\", \"34067\": \"WM\", \"34074\": \"YW\", \"34121\": \"QJ\", \"34255\": \"ZC\", \"34259\": \"XL\", \"34425\": \"JH\", \"34430\": \"XH\", \"34485\": \"KH\", \"34503\": \"YS\", \"34532\": \"HG\", \"34552\": \"XS\", \"34558\": \"YE\", \"34593\": \"ZL\", \"34660\": \"YQ\", \"34892\": \"XH\", \"34928\": \"SC\", \"34999\": \"QJ\", \"35048\": \"PB\", \"35059\": \"SC\", \"35098\": \"ZC\", \"35203\": \"TQ\", \"35265\": \"JX\", \"35299\": \"JX\", \"35782\": \"SZ\", \"35828\": \"YS\", \"35830\": \"E\", \"35843\": \"TD\", \"35895\": \"YG\", \"35977\": \"MH\", \"36158\": \"JG\", \"36228\": \"QJ\", \"36426\": \"XQ\", \"36466\": \"DC\", \"36710\": \"JC\", \"36711\": \"ZYG\", \"36767\": \"PB\", \"36866\": \"SK\", \"36951\": \"YW\", \"37034\": \"YX\", \"37063\": \"XH\", \"37218\": \"ZC\", \"37325\": \"ZC\", \"38063\": \"PB\", \"38079\": \"TD\", \"38085\": \"QY\", \"38107\": \"DC\", \"38116\": \"TD\", \"38123\": \"YD\", \"38224\": \"HG\", \"38241\": \"XTC\", \"38271\": \"ZC\", \"38415\": \"YE\", \"38426\": \"KH\", \"38461\": \"YD\", \"38463\": \"AE\", \"38466\": \"PB\", \"38477\": \"XJ\", \"38518\": \"YT\", \"38551\": \"WK\", \"38585\": \"ZC\", \"38704\": \"XS\", \"38739\": \"LJ\", \"38761\": \"GJ\", \"38808\": \"SQ\", \"39048\": \"JG\", \"39049\": \"XJ\", \"39052\": \"HG\", \"39076\": \"CZ\", \"39271\": \"XT\", \"39534\": \"TD\", \"39552\": \"TD\", \"39584\": \"PB\", \"39647\": \"SB\", \"39730\": \"LG\", \"39748\": \"TPB\", \"40109\": \"ZQ\", \"40479\": \"ND\", \"40516\": \"HG\", \"40536\": \"HG\", \"40583\": \"QJ\", \"40765\": \"YQ\", \"40784\": \"QJ\", \"40840\": \"YK\", \"40863\": \"QJG\" };\r\nconst options: any = {\r\n checkPolyphone: false,\r\n charcase: \"default\",\r\n};\r\nconst pinYin = {\r\n // 提取拼音, 返回首字母大写形式\r\n getFullChars: (str: any) => {\r\n let result = \"\",\r\n name;\r\n if (!str) {\r\n return result;\r\n }\r\n const reg = new RegExp(\"[a-zA-Z0-9- ]\");\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const ch = str.substr(i, 1),\r\n unicode = ch.charCodeAt(0);\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n name = pinYin._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n return result.toLocaleLowerCase();\r\n },\r\n // 提取首字母,返回大写形式\r\n getCamelChars: (str: any) => {\r\n if (typeof str !== \"string\") {\r\n return \"Z\";\r\n }\r\n const chars = []; //保存中间结果的数组\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n const ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(pinYin._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n return pinYin._getResult(chars).toLocaleLowerCase();\r\n },\r\n // 提取拼音\r\n _getFullChar: (str: any) => {\r\n for (const key in full_dict) {\r\n if (-1 !== full_dict[key].indexOf(str)) {\r\n return pinYin._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n },\r\n // 首字母大写\r\n _capitalize: (str: any) => {\r\n if (str.length > 0) {\r\n const first = str.substr(0, 1).toUpperCase();\r\n const spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n },\r\n _getChar: (ch: any) => {\r\n const unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!options.checkPolyphone) return char_dict.charAt(unicode - 19968);\r\n return polyphone[unicode] ? polyphone[unicode] : char_dict.charAt(unicode - 19968);\r\n },\r\n _getResult: (chars: any) => {\r\n if (!options.checkPolyphone) return chars.join(\"\");\r\n let result = [\"\"];\r\n for (let i = 0, len = chars.length; i < len; i++) {\r\n const str = chars[i],\r\n strlen = str.length;\r\n if (strlen === 1) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[j] += str;\r\n }\r\n } else {\r\n const swap1 = result.slice(0);\r\n result = [];\r\n for (let j = 0; j < strlen; j++) {\r\n //复制一个相同的arrRslt\r\n const swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (let k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(j);\r\n }\r\n //把复制并修改后的数组连接到arrRslt上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n },\r\n};\r\nexport default pinYin;\r\n","\r\nimport { Options, Inject, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport { Control } from \"@/domain\";\r\nimport { FormEnum } from \"@/domain\";\r\nimport { FormFieldClass } from \"@/constants\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport generateGridTemplateColumns from \"../../filtres/generate-grid-template-columns.filter\";\r\nimport generateGridColumnEnd from \"../../filtres/generate-grid-column-end.filter\";\r\nimport { DesFormLayout } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\n\r\nimport { AutoComplete, Cascader, Checkbox, DatePicker, Form, Input, InputNumber, Radio, Select, Switch, TimePicker, TreeSelect, Slider, Tooltip, Popover, Divider, Rate, Dropdown, Button, Menu, Upload, Popconfirm, Timeline, FormItem, RadioGroup, Textarea, CheckboxGroup, InputPassword, TimelineItem, Row, Col } from \"ant-design-vue\";\r\nimport { VerticalArrangement } from \"@/constants\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\n\r\nimport amountCapitalization from \"../../filtres/amount-capitalization.filter\";\r\nimport { FormControl, ValidateResult, CustomFormat } from \"../../domain\";\r\nimport { FormBusAttr, SubmittedType, MoneyUnit, ControlFormatType, BuiltLabel, SupportUploadType } from \"../../constants/enum\";\r\nimport { ValidateRules } from \"@/constants\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\nimport zoomMultiple from \"../../filtres/zoom-multiple.filter\";\r\nimport switchEnumConvert from \"../../filtres/switch-enum-convert.filter\";\r\nimport StretchText from \"./StretchText.vue\";\r\nimport { SUBMITTED_SVG_XML, HISTORY_SVG_XML } from \"../../constants/encode-assets/svg\";\r\nimport { SearchOutlined, PlusOutlined, QuestionCircleOutlined, ClockCircleOutlined, DownOutlined, UploadOutlined } from \"@ant-design/icons-vue\";\r\n\r\nimport dayjs from \"dayjs\";\r\nimport locale from \"ant-design-vue/es/date-picker/locale/zh_CN\";\r\nimport pinYin from \"../../../public/js/pinyin\";\r\n\r\n@Options({\r\n name: \"DvFormLayout\",\r\n filters: {\r\n amountCapitalization: amountCapitalization,\r\n switchEnumConvert: switchEnumConvert,\r\n zoomMultiple: zoomMultiple,\r\n },\r\n components: {\r\n StretchText,\r\n PlusOutlined,\r\n [Form.name]: Form,\r\n [FormItem.name]: FormItem,\r\n [Input.name]: Input,\r\n [Textarea.name]: Textarea,\r\n [AutoComplete.name]: AutoComplete,\r\n [InputNumber.name]: InputNumber,\r\n [Select.name]: Select,\r\n [Select.Option.displayName + \"\"]: Select.Option,\r\n [Select.OptGroup.displayName + \"\"]: Select.OptGroup,\r\n [Radio.name]: Radio,\r\n [RadioGroup.name]: RadioGroup,\r\n [Checkbox.name]: Checkbox,\r\n [CheckboxGroup.name]: CheckboxGroup,\r\n [Switch.name]: Switch,\r\n [TimePicker.name]: TimePicker,\r\n [DatePicker.name]: DatePicker,\r\n [Slider.name]: Slider,\r\n [AutoComplete.name]: AutoComplete,\r\n [Cascader.name]: Cascader,\r\n [TreeSelect.name]: TreeSelect,\r\n [Tooltip.name]: Tooltip,\r\n [InputPassword.name]: InputPassword,\r\n [Popover.name]: Popover,\r\n [Popconfirm.name]: Popconfirm,\r\n [Timeline.name]: Timeline,\r\n [TimelineItem.name]: TimelineItem,\r\n [Rate.name]: Rate,\r\n [Dropdown.name]: Dropdown,\r\n [Menu.name]: Menu,\r\n [Menu.Item.name]: Menu.Item,\r\n [Upload.name]: Upload,\r\n [Button.name]: Button,\r\n [Divider.name]: Divider,\r\n [DatePicker.MonthPicker.name]: DatePicker.MonthPicker,\r\n [StretchText.name]: StretchText,\r\n [Row.name]: Row,\r\n [Col.name]: Col,\r\n VNodes: (_, { attrs }) => {\r\n return attrs.vnodes;\r\n },\r\n QuestionCircleOutlined,\r\n ClockCircleOutlined,\r\n DownOutlined,\r\n UploadOutlined,\r\n SearchOutlined,\r\n },\r\n})\r\nexport default class DvFormLayout extends Vue {\r\n locale = locale; // 国际化\r\n submittedSvg = SUBMITTED_SVG_XML; // 上报图标\r\n historySvg = HISTORY_SVG_XML; // 历史记录图标\r\n\r\n numberPopoverVisible = false; // 是否开启数字气泡弹窗\r\n validateResult: ValidateResult = {}; // 校验规则\r\n metaRefresh: any; // 刷新标识\r\n defaultMoneyUnit: any = {}; // 默认单位\r\n zoomType = ZoomType; // 缩放类型\r\n builtLabel = BuiltLabel; // 内置前/后置标签\r\n traddayList: any = localStorage.getItem(\"traddayList\") || JSON.stringify([]); // 交易日集合\r\n weekdayList: any = localStorage.getItem(\"weekdayList\") || JSON.stringify([]); // 节假日集合\r\n workdayList: any = localStorage.getItem(\"workdayList\") || JSON.stringify([]); // 工作日集合\r\n amountCapitalization = amountCapitalization; // 大写转换\r\n zoomMultiple = zoomMultiple; // 缩放\r\n filterOption(value: any, item: any) {\r\n if (!item.title) {\r\n return false;\r\n }\r\n return item.title.indexOf(value) > -1 || pinYin.getCamelChars(item.title).indexOf(value) > -1 || pinYin.getFullChars(item.title).indexOf(value) > -1;\r\n }\r\n\r\n @Prop() index: number | undefined;\r\n @Prop() control: Control | undefined;\r\n @Prop() parentControl: Control | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats: { [key: string]: CustomFormat } | undefined;\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Inject() provideInjectData: ProvideInjectData | any;\r\n readonly formFieldClass: FormEnum = FormFieldClass; // 表单字段分类\r\n readonly formFieldType: FormEnum = FormFieldType; // 表单字段类型\r\n\r\n @Watch(\"defaultMoneyUnit\", { immediate: true })\r\n onDefaultMoneyUnitHandler(newVal: any): void {\r\n if (newVal.code != null) {\r\n switch (newVal.code) {\r\n case MoneyUnit.Yuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 1;\r\n break;\r\n case MoneyUnit.TenThousandYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 10000;\r\n break;\r\n case MoneyUnit.HundredMillionYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 100000000;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验反馈\r\n * @author ChenRui\r\n * @date 2021/2/26 14:24\r\n */\r\n @Watch(\"provideInjectData.refreshCheckFeedbackFlag\")\r\n @Watch(\"control.formControl.refreshValidate\")\r\n onValidationFeedbackHandle(): void {\r\n this.validateResult = this.formControl.validate();\r\n }\r\n\r\n /**\r\n * @description: 表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 14:12\r\n */\r\n @Watch(\"provideInjectData.formValidateStateResetMark\")\r\n onFormValidateStateResetMarkHandle(): void {\r\n this.validateResult = {};\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:22\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"control.controlAttr.isHideControl\")\r\n onHideControl() {\r\n this.$nextTick(() => {\r\n this.$emit(\"fixFormLayout\");\r\n });\r\n }\r\n /**\r\n * @description: 输入框形态\r\n * @author ChenRui\r\n * @date 2022/5/7 17:48\r\n */\r\n get inputShape(): string {\r\n if ((this.controlAttr as DesFormControl).isPasswordBox) {\r\n return \"a-input-password\";\r\n } else if ((this.controlAttr as DesFormControl).enableAutoComplete) {\r\n return \"a-auto-complete\";\r\n } else {\r\n return \"a-input\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/27 11:07\r\n */\r\n get formControl(): FormControl {\r\n if (this.control && this.control.formControl) {\r\n // 初始化部分数据\r\n this.initFormControlData();\r\n return this.control.formControl;\r\n }\r\n return new FormControl();\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get controlAttr(): DesFormControl | DesFormLayout {\r\n return this.control?.controlAttr as any;\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get parentControlAttr(): DesFormLayout {\r\n return this.parentControl?.controlAttr as DesFormLayout;\r\n }\r\n\r\n /**\r\n * @description: 获取布局方式\r\n * @author ChenRui\r\n * @date 2020/12/30 18:19\r\n */\r\n get layout(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"value\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.value;\r\n }\r\n\r\n /**\r\n * @description: 当前输入的字符长度\r\n * @author ChenRui\r\n * @date 2021/4/20 15:55\r\n */\r\n get currentCharacterCount(): any {\r\n return this.control!.formControl && this.control!.formControl.value ? this.control!.formControl.value.length : 0;\r\n }\r\n\r\n /**\r\n * @description: 最大字数限制\r\n * @author ChenRui\r\n * @date 2021/4/20 15:38\r\n */\r\n get maxCharacterCount(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const verificationRule: any = controlAttr.verificationRules.find((item: any) => item.ruleType === ValidateRules.MaxTextLength.code);\r\n if (verificationRule != null && verificationRule.ruleContent) {\r\n return Number(verificationRule.ruleContent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数字格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:30\r\n */\r\n get numberFormatter(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const controlFormatType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value != undefined ? String(value) : \"\";\r\n switch (controlFormatType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (controlFormatType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n // 校验小数位不做千分位格式化处理\r\n if (val.indexOf(\".\") > -1) {\r\n val = `${val}`.split(\".\")[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \".\" + `${val}`.split(\".\")[1];\r\n } else {\r\n val = `${val}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n // val = `${val}${controlAttr.unit}`;\r\n val = `${val}`;\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/[\\s]/g, \"\").replace(/(\\d{4})(?=\\d)/g, \"$1 \");\r\n }\r\n return val;\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\D/g, \"\").substr(0, 11); // 不允许输入非数字字符,超过11位数字截取前11位\r\n const len = val.length;\r\n if (len > 3 && len < 8) {\r\n val = val.replace(/^(\\d{3})/g, \"$1 \");\r\n } else if (len >= 8) {\r\n val = val.replace(/^(\\d{3})(\\d{4})/g, \"$1 $2 \");\r\n }\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return value;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: 数字反格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:31\r\n */\r\n get numberParser(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const zoomType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value;\r\n switch (zoomType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (zoomType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n val = val.replace(/\\$\\s?|(,*)/g, \"\");\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n const replaceUnit: string[] = controlAttr.unit.split(\"\");\r\n replaceUnit.forEach((item) => {\r\n val = val.replace(item, \"\");\r\n });\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\s/g, \"\");\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return val;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: label 宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (this.isMobileBrowser()) {\r\n return \"120px\";\r\n }\r\n if (controlAttr.titleWidth) {\r\n return controlAttr.titleWidth;\r\n } else if (parentControlAttr.labelSpan) {\r\n return parentControlAttr.labelSpan;\r\n } else {\r\n return this.provideInjectData.labelSpan;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 标签后是否显示冒号\r\n * @author ZPFly\r\n * @date 2022/7/15 10:54\r\n */\r\n get colon(): boolean {\r\n return this.provideInjectData.colon;\r\n }\r\n\r\n /**\r\n * @description: 最大宽度设置\r\n * @author ChenRui\r\n * @date 2021/7/8 16:39\r\n */\r\n get controlSpanMaxWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 15:11\r\n */\r\n get controlSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: label 标签的文本对齐方式\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelAlign(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"textAlign\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.textAlign;\r\n }\r\n\r\n /**\r\n * @description: 获取金额转换单位\r\n * @author ChenRui\r\n * @date 2021/2/20 17:43\r\n */\r\n get moneyUnits(): any[] {\r\n const moneyUnits: any[] = [];\r\n const moneyUnit: any[] = formBeanUtilsService.parse((this.controlAttr as DesFormControl).moneyUnit);\r\n if ((this.controlAttr as DesFormControl).moneyUnit) {\r\n Object.values(MoneyUnit).forEach((item) => {\r\n if (moneyUnit.findIndex((it) => it === item.code) !== -1) {\r\n moneyUnits.push(item);\r\n }\r\n });\r\n }\r\n\r\n if (moneyUnits && moneyUnits.length > 0) {\r\n this.defaultMoneyUnit = moneyUnits[0];\r\n }\r\n return moneyUnits;\r\n }\r\n\r\n /**\r\n * @description: 单位缩放比例\r\n * @author ChenRui\r\n * @date 2022/5/7 10:31\r\n */\r\n get moneyUnitsIndentScale(): number {\r\n const moneyUnit: any = this.defaultMoneyUnit;\r\n if (moneyUnit != null && moneyUnit.code) {\r\n return Number(moneyUnit.code);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * @description: 获取select、checkbox、radio可选项\r\n * @author ChenRui\r\n * @date 2020/12/2 14:36\r\n */\r\n get options(): any[] {\r\n return extractOptions(this.controlAttr);\r\n }\r\n\r\n /**\r\n * @description: 使用月份组件\r\n * @author ChenRui\r\n * @date 2021/5/19 16:12\r\n */\r\n get useMonthPicker(): boolean {\r\n const dateFormat: any = (this.controlAttr as DesFormControl).dateFormat;\r\n if (dateFormat && dateFormat.toLowerCase() === \"yyyy-mm\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 级联选择框\r\n * @author ChenRui\r\n * @date 2021/1/5 16:31\r\n */\r\n get cascaderOptions(): any[] {\r\n const value: any[] = this.options;\r\n let options: any[] = [];\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n options = this.cascaderRecursion(items);\r\n }\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n get treeSelectOptions(): any[] {\r\n const value: any[] = this.options;\r\n console.log(value);\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n this.treeSelectRecursion(items);\r\n return items;\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 是否12小时制\r\n * @author ChenRui\r\n * @date 2021/1/18 10:54\r\n */\r\n get is12Hours(): boolean {\r\n return !!(this.controlAttr as DesFormControl).timeFormat && (this.controlAttr as DesFormControl).timeFormat.indexOf(\":ss\") < 0;\r\n }\r\n\r\n /**\r\n * @description: 是否添加反馈\r\n * @author ChenRui\r\n * @date 2021/1/21 10:43\r\n */\r\n get hasFeedback(): boolean {\r\n return this.control!.formControl != null && this.control!.formControl!.validates && this.control!.formControl!.validates.length > 0;\r\n }\r\n\r\n /**\r\n * @description: 是否必填,仅影响样式\r\n * @author ChenRui\r\n * @date 2021/1/21 10:50\r\n */\r\n get required(): boolean {\r\n if (this.hasFeedback && this.control!.formControl!.validates.findIndex((item: any) => String(item.name) === String(ValidateRules.Required.code)) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 格式化数据\r\n * @author ChenRui\r\n * @date 2021/1/8 11:30\r\n */\r\n get formatData(): string {\r\n this.metaRefresh = this.provideInjectData.metaRefresh; // 刷新标识\r\n let val = \"\";\r\n let data: any = this.control!.formControl!.value;\r\n let options: any[];\r\n let context: any[];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n switch (this.control!.code) {\r\n case FormFieldType.Input.code:\r\n if (controlAttr.bindingPrefix) {\r\n val += controlAttr.bindingPrefix;\r\n }\r\n val += data || \"\";\r\n if (controlAttr.bindingSuffix) {\r\n val += controlAttr.bindingSuffix;\r\n }\r\n data = val;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (this.numberFormatter) {\r\n data = this.numberFormatter(data);\r\n }\r\n // 自动补0\r\n if (data && controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\") {\r\n let index;\r\n if (data.indexOf(\".\") == -1) {\r\n index = controlAttr.decimalPlaces;\r\n data += \".\";\r\n } else {\r\n index = controlAttr.decimalPlaces - (data.length - 1 - data.indexOf(\".\"));\r\n }\r\n for (let i = 0; i < index; i++) {\r\n data += \"0\";\r\n }\r\n data = this.countDecimalPlaces(data, controlAttr.decimalPlaces);\r\n }\r\n // 金额后缀不依赖于是否设置了小数位\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && data != null && data != \"\" && controlAttr.unit) {\r\n data = data.replace(controlAttr.unit, \"\");\r\n // data = `${data}${controlAttr.unit}`; // 后缀在后面统一展示 2023年9月22日15:49:08\r\n }\r\n return data;\r\n case FormFieldType.Select.code:\r\n case FormFieldType.Radio.code:\r\n if (data != null && Array.isArray(data)) {\r\n const context: string[] = [];\r\n this.options.find((item) => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (item.value === data[i]) {\r\n context.push(item.title);\r\n }\r\n }\r\n });\r\n return context.join(\",\");\r\n } else {\r\n const option = this.options.find((item) => item.value === data);\r\n return option ? option.title : \"\";\r\n }\r\n case FormFieldType.Checkbox.code:\r\n options = data || [];\r\n context = [];\r\n options.forEach((it) => {\r\n this.options.find((item) => {\r\n if (item.value === it) {\r\n context.push(item.title);\r\n }\r\n });\r\n });\r\n return context.join(\" , \");\r\n case FormFieldType.Switch.code:\r\n if (data !== undefined) {\r\n if (data === true && controlAttr.onOpeningValue != undefined && controlAttr.onOpeningValue !== \"\") {\r\n return controlAttr.onOpeningValue;\r\n } else if (data === false && controlAttr.whenClosedValue != undefined && controlAttr.whenClosedValue !== \"\") {\r\n return controlAttr.whenClosedValue;\r\n } else {\r\n return data ? \"是\" : \"否\";\r\n }\r\n }\r\n return \"\";\r\n case FormFieldType.TimePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.timeFormat || \"HH:mm:ss\");\r\n }\r\n return \"\";\r\n case FormFieldType.DatePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.dateFormat || \"YYYY-MM-dd\");\r\n }\r\n return \"\";\r\n case FormFieldType.Cascader.code:\r\n if (data != null) {\r\n return this.cascaderContextRecursion(data, this.cascaderOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.TreeSelect.code:\r\n if (data != null) {\r\n return this.treeSelectContextRecursion(data, this.treeSelectOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.Custom.code:\r\n if (this.customFormats && this.customFormats[controlAttr.customFieldName]) {\r\n const customFormat: CustomFormat = this.customFormats[controlAttr.customFieldName];\r\n if (customFormat && customFormat.display) {\r\n return customFormat.display(data, controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * 数字小数位数计算\r\n * @author JiangTao\r\n * @since 2026-04-16 16:40:23\r\n */\r\n countDecimalPlaces(data: string | number, decimalPlaces: number | undefined): string {\r\n // 1. 安全处理\r\n const digits = decimalPlaces ?? 0;\r\n const str = String(data).trim();\r\n if (!str) return digits > 0 ? `0.${\"0\".repeat(digits)}` : \"0\";\r\n\r\n // 2. 判断是否有小数\r\n const hasDot = str.includes(\".\");\r\n const intPart = hasDot ? str.split(\".\")[0] : str;\r\n const decimalPart = hasDot ? str.split(\".\")[1] : \"\";\r\n\r\n // 3. 拼接成纯数字用于四舍五入计算\r\n const pureNumStr = intPart.replace(/,/g, \"\") + (hasDot ? \".\" + decimalPart : \"\");\r\n const num = parseFloat(pureNumStr);\r\n if (isNaN(num)) return intPart + (digits > 0 ? `.${\"0\".repeat(digits)}` : \"\");\r\n\r\n // 4. 四舍五入保留 digits 位\r\n const factor = Math.pow(10, digits);\r\n const rounded = (Math.round(num * factor) / factor).toFixed(digits);\r\n\r\n // 5. 拆分四舍五入后的整数与小数\r\n const [, roundedDecimal = \"\"] = rounded.split(\".\");\r\n\r\n // 6. 最终结果:原始整数部分 + 处理后的小数部分\r\n if (digits <= 0) return intPart;\r\n return `${intPart}.${roundedDecimal}`;\r\n }\r\n\r\n /**\r\n * @description: 支持的上传类型\r\n * @author ChenRui\r\n * @date 2021/4/25 11:50\r\n */\r\n get uploadType(): any {\r\n const controlAttr = this.controlAttr as DesFormControl;\r\n if (controlAttr.supportUploadType === SupportUploadType.Arbitrarily.code) {\r\n return undefined;\r\n } else if (controlAttr.supportUploadType === SupportUploadType.Custom.code) {\r\n return controlAttr.customUploadType;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n /*const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n console.log(controlAttr.optionConfig);\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n console.log(controlAttr.generalDictionaryOptions);\r\n }\r\n }\r\n }*/\r\n }\r\n\r\n /**\r\n * @description: 级联搜索\r\n * @author ChenRui\r\n * @date 2021/5/19 17:23\r\n */\r\n cascaderFilter(inputValue: any, path: any): any {\r\n return path.some((option: any) => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\r\n }\r\n\r\n /**\r\n * @description: 递归生成树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n treeSelectRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n item.disabled = false;\r\n item.key = item.value;\r\n if (item.children && item.children.length > 0) {\r\n if ((this.controlAttr as any).disableNonLeafNodes !== \"0\") {\r\n item.disabled = true; // LiuBo 2023年11月7日11:33:41 禁用非叶子节点\r\n }\r\n this.treeSelectRecursion(item.children);\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 级联递归\r\n * @author ChenRui\r\n * @date 2021/1/5 16:35\r\n */\r\n cascaderRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n const option: any = {\r\n value: item.value,\r\n label: item.title,\r\n isLeaf: false,\r\n };\r\n options.push(option);\r\n if (item.children && item.children.length > 0) {\r\n option.children = this.cascaderRecursion(item.children);\r\n } else {\r\n option.isLeaf = true;\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 递归获取级联选项对应的文本\r\n * @author ChenRui\r\n * @date 2021/1/8 14:45\r\n */\r\n cascaderContextRecursion(val: any[], cascaderOptions: any[], index = 0): string {\r\n if (val && val.length > 0 && cascaderOptions && cascaderOptions.length > 0) {\r\n if (val.length > index) {\r\n const currentIndex = val[index];\r\n const cascaderOption = cascaderOptions.find((item) => item.value === currentIndex);\r\n if (cascaderOption != null) {\r\n let currentText = cascaderOption.label;\r\n if (val.length > index + 1) {\r\n const subText = this.cascaderContextRecursion(val, cascaderOption.children, index + 1);\r\n currentText += \" / \" + subText;\r\n }\r\n return currentText;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description:\r\n * @author ChenRui\r\n * @date 2021/1/8 15:05\r\n */\r\n\r\n treeSelectContextRecursion(val: string, treeSelectOptions: any[]): string {\r\n if (val && treeSelectOptions && treeSelectOptions.length > 0) {\r\n for (let i = 0; i < treeSelectOptions.length; i++) {\r\n if (treeSelectOptions[i].value === val) {\r\n return treeSelectOptions[i].title;\r\n } else if (treeSelectOptions[i].children && treeSelectOptions[i].children.length > 0) {\r\n const subTitle: string = this.treeSelectContextRecursion(val, treeSelectOptions[i].children);\r\n if (subTitle) {\r\n return subTitle;\r\n }\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 是否为ie\r\n * @author ChenRui\r\n * @date 2021/3/25 14:44\r\n */\r\n get isIe(): boolean {\r\n return !!this.provideInjectData.widthCompatibleMode || !!window.ActiveXObject || \"ActiveXObject\" in window;\r\n }\r\n\r\n /**\r\n * @description: ie 兼容性宽度布局\r\n * @author ChenRui\r\n * @date 2021/3/25 12:53\r\n */\r\n get divWidthCompatibleToIe(): any {\r\n if (this.isIe) {\r\n const desFormLayout: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n const configIndex: number = this.index! % desFormLayout.gridColumnConfig.length; // 索引位置\r\n const proportion: number = desFormLayout.gridColumnConfig[configIndex].value; // 比重\r\n let total = 0; // 总值\r\n desFormLayout.gridColumnConfig.forEach((item: any) => {\r\n total += Number(item.value);\r\n });\r\n const ratio = proportion / total; // 比值\r\n const val = Number(ratio) * 100;\r\n return `calc( ${val}% - 1px)`;\r\n } else {\r\n return \"100%\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根节点容器布局样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:52\r\n */\r\n get emptyLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = { \"grid-template-columns\": gridTemplateColumns };\r\n }\r\n return style;\r\n }\r\n\r\n /**\r\n * @description: 常规布局容器样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:42\r\n */\r\n get generalLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridColumnEnd: any = generateGridColumnEnd((this.parentControl?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = {\r\n \"grid-column-end\": gridColumnEnd,\r\n \"grid-template-columns\": gridTemplateColumns,\r\n };\r\n }\r\n return style;\r\n }\r\n /**\r\n * 判断是否为移动端浏览器\r\n * @returns {boolean} true=移动端,false=PC端\r\n */\r\n isMobileBrowser() {\r\n // 匹配常见移动端设备的User-Agent关键词\r\n const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i;\r\n // 排除平板设备(可选,根据业务需求调整)\r\n const tabletRegex = /iPad|Tablet|Nexus 7|Nexus 10/i;\r\n\r\n const userAgent = navigator.userAgent;\r\n const isMobile = mobileRegex.test(userAgent);\r\n const isTablet = tabletRegex.test(userAgent);\r\n\r\n // 业务逻辑:如果是平板,可根据需求返回true或false\r\n return isMobile && !isTablet;\r\n }\r\n\r\n /**\r\n * @description: 初始化部分数据\r\n * @author ChenRui\r\n * @date 2021/1/29 15:28\r\n */\r\n initFormControlData(): void {\r\n if (this.control && this.control.formControl) {\r\n if (this.control!.code === FormFieldType.DatePicker.code || this.control!.code === FormFieldType.TimePicker.code) {\r\n if (this.control.formControl.value) {\r\n if (typeof this.control.formControl.value === \"string\") {\r\n this.control.formControl.value = dayjs(new Date(this.control.formControl.value));\r\n } else if (this.control.formControl.value instanceof Date) {\r\n this.control.formControl.value = dayjs(this.control.formControl.value);\r\n }\r\n }\r\n }\r\n if (this.control.formControl.textNoticeCallback == null) {\r\n this.control.formControl.textNoticeCallback = () => {\r\n return this.formatData;\r\n };\r\n }\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxValue == null || (controlAttr.maxValue as any) === \"\") {\r\n const maxValue = \"9999999999999999\";\r\n if (controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\" && controlAttr.decimalPlaces > 0) {\r\n if (controlAttr.decimalPlaces > 16) {\r\n controlAttr.decimalPlaces = 16;\r\n }\r\n controlAttr.maxValue = Number(maxValue.slice(0, maxValue.length - controlAttr.decimalPlaces) + \".\" + maxValue.slice(maxValue.length - controlAttr.decimalPlaces, maxValue.length));\r\n } else {\r\n controlAttr.maxValue = Number(maxValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 业务属性\r\n * @author ChenRui\r\n * @date 2021/2/1 14:38\r\n */\r\n get busAttr(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n let busAttr: any;\r\n let attrSubmittedType: any[] = [];\r\n if (controlAttr.busAttr) {\r\n busAttr = formBeanUtilsService.parse(controlAttr.busAttr);\r\n if (busAttr[FormBusAttr.SUBMITTED_TYPE.code]) {\r\n attrSubmittedType = busAttr[FormBusAttr.SUBMITTED_TYPE.code].split(\",\").filter((item: any) => !!item);\r\n }\r\n }\r\n const submittedType: any[] = Object.values(SubmittedType).map((val: any) => ({ label: val.name, value: val.code }));\r\n const submittedTypeCheckedNode: any[] = [];\r\n submittedType.forEach((item) => {\r\n if (attrSubmittedType.findIndex((it) => it === item.value) > -1) {\r\n submittedTypeCheckedNode.push(item);\r\n }\r\n });\r\n return {\r\n [FormBusAttr.SUBMITTED_TYPE.code]: submittedTypeCheckedNode,\r\n [FormBusAttr.IS_SUPPLEMENT.code]: busAttr ? busAttr[FormBusAttr.IS_SUPPLEMENT.code] : false,\r\n [FormBusAttr.IS_KEY_ELEMENTS.code]: busAttr ? busAttr[FormBusAttr.IS_KEY_ELEMENTS.code] : false,\r\n [FormBusAttr.IS_TRACK.code]: busAttr ? busAttr[FormBusAttr.IS_TRACK.code] : false,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 报送类型\r\n * @author ChenRui\r\n * @date 2021/2/1 15:05\r\n */\r\n get submittedType(): any[] {\r\n if (this.busAttr && this.busAttr[FormBusAttr.SUBMITTED_TYPE.code].length > 0) {\r\n return this.busAttr[FormBusAttr.SUBMITTED_TYPE.code];\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 报送类型字符串\r\n * @author ChenRui\r\n * @date 2021/2/1 15:08\r\n */\r\n get submittedTypeStr(): string {\r\n return this.submittedType.map((item) => item.label).join(\"、\");\r\n }\r\n\r\n /**\r\n * 根据日期时间格式决定是否显示时间选择功能\r\n * @param format\r\n */\r\n showPickerTime(format?: string): any {\r\n // format 包含时间格式\r\n if (format && format.indexOf(\"HH:mm\") > -1) {\r\n return format;\r\n }\r\n return false;\r\n }\r\n /**\r\n * @description: 清除特殊字符\r\n * @author ChenRui\r\n * @date 2021/6/22 15:41\r\n */\r\n private clearNoNum(value: any) {\r\n if (value) {\r\n value = value.replace(/[^\\d.]/g, \"\"); //清除“数字”和“.”以外的字符\r\n value = value.replace(/\\.{2,}/g, \".\"); //只保留第一个. 清除多余的\r\n value = value.replace(\".\", \"$#$\").replace(/\\./g, \"\").replace(\"$#$\", \".\");\r\n // eslint-disable-next-line no-useless-escape\r\n value = value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/, \"$1$2.$3\"); //只能输入两个小数\r\n if (value.indexOf(\".\") < 0 && value != \"\") {\r\n //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额\r\n value = parseFloat(value);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * @description: 校验数字是否超过16位纯编码\r\n * @author ChenRui\r\n * @date 2021/6/22 14:58\r\n */\r\n private validateNumBeyondLimit(value: any): boolean {\r\n if (value) {\r\n const pureNumber: string = value.replace(/[^0-9]/gi, \"\");\r\n return pureNumber.length > 16;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 删除文件\r\n * @author ChenRui\r\n * @date 2021/4/25 11:35\r\n */\r\n handleRemove(file: any): void {\r\n const index = this.formControl.value.indexOf(file);\r\n const newFileList = this.formControl.value.slice();\r\n newFileList.splice(index, 1);\r\n this.formControl.value = newFileList;\r\n }\r\n\r\n /**\r\n * @description: 文件上传前回调函数\r\n * @author ChenRui\r\n * @date 2021/4/25 11:23\r\n */\r\n beforeUpload(file: any): boolean {\r\n const fileList: any[] = [...this.formControl.value, file];\r\n this.formControl.value = fileList;\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 文件上传变更\r\n * @author ChenRui\r\n * @date 2021/4/25 11:29\r\n */\r\n handleUploadChange(event: any): any {\r\n let fileList: any[] = [...this.formControl.value];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxUploadNumber && controlAttr.maxUploadNumber > 0) {\r\n fileList = fileList.slice(0 - Number(controlAttr.maxUploadNumber));\r\n }\r\n fileList = fileList.map((file) => {\r\n if (file.response) {\r\n file.url = file.response.url;\r\n }\r\n return file;\r\n });\r\n this.formControl.value = fileList;\r\n if (event && event.file && (event.file.status === undefined || event.file.status === \"removed\")) {\r\n this.onChange(this.control!);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 金额菜单单机事件\r\n * @author ChenRui\r\n * @date 2021/2/20 17:21\r\n */\r\n handleMoneyUnitMenuClick(e: any): void {\r\n this.defaultMoneyUnit = this.moneyUnits.find((item) => item.code === e.key);\r\n }\r\n\r\n /**\r\n * @description: 将下拉弹层渲染节点固定在触发器的父元素中\r\n * @author ZPFly\r\n * @date 2022/8/31 11:30\r\n */\r\n getPopupContainer(triggerNode: any) {\r\n return triggerNode.parentNode;\r\n }\r\n\r\n /**\r\n * @description: 输入事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:37\r\n */\r\n onChange(event: Control): void {\r\n if (this.control && (this.control.type === FormFieldClass.Base.code || this.control.type === FormFieldClass.Senior.code)) {\r\n this.validateResult = this.formControl.validate(event.formControl?.value);\r\n }\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 点击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:37\r\n */\r\n onClick(event: Control): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 数字框失焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:51\r\n */\r\n onInputNumberFocus(event: Control): void {\r\n this.onFocus(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = true;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 数字输入框失焦\r\n * @author ChenRui\r\n * @date 2021/3/4 11:43\r\n */\r\n onInputNumberBlur(event: Control): void {\r\n this.onBlur(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n\r\n /**\r\n * @Description 是否节假日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRest(current: any): boolean {\r\n if (JSON.parse(this.weekdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否工作日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isWeekday(current: any): boolean {\r\n if (JSON.parse(this.workdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否交易日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRadingDay(current: any): boolean {\r\n if (JSON.parse(this.traddayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 日期格式转换\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n DateTime(date: any): string {\r\n const year: any = date.getFullYear();\r\n let month: any = date.getMonth() + 1;\r\n let strDate: any = date.getDate();\r\n\r\n if (month < 10) {\r\n month = \"0\" + month;\r\n }\r\n\r\n if (strDate < 10) {\r\n strDate = \"0\" + strDate;\r\n }\r\n\r\n return \"\" + year + month + strDate;\r\n }\r\n}\r\n","import { render } from \"./DvFormLayout.vue?vue&type=template&id=2f021ee3&scoped=true&ts=true\"\nimport script from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\nexport * from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\n\nimport \"./DvFormLayout.vue?vue&type=style&index=0&id=2f021ee3&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2f021ee3\"]])\n\nexport default __exports__","/* eslint-disable */\r\nclass DateFormatService {\r\n /**\r\n * 日期时间格式自定义\r\n * @param {number|string} value 日期时间值时间戳或时间格式\r\n * @param {string} format 输出的时间格式\r\n * @returns {string} 定义好的时间格式\r\n */\r\n formatDateTime(value: any, format = 'YYYY-MM-dd HH:mm:ss'): string {\r\n const reg = /(YY|YYYY|MM|dd|HH|mm|ss|ww|WW)/g;\r\n if (!value) {\r\n return ''\r\n }\r\n if (!reg.test(format)) {\r\n throw new Error(`The defined format ${format} is incorrect,Please enter 'YYYY or YY' for year,MM for month, dd for day,ww or WW for week,HH for hours,mm for minutes,ss for seconds.`)\r\n }\r\n if (typeof value === 'string' && value.length === 8) {\r\n value = [value.substr(0, 4), value.substr(4, 2), value.substr(6, 2)].join('/')\r\n } else if (!isNaN(Number(value))) {\r\n value = Number(value);\r\n }\r\n const time = new Date(value);\r\n if (String(time) === 'Invalid Date') {\r\n throw new Error(`Time format unrecognized by ${value}, Please enter time stamp or legal time format.`);\r\n }\r\n const dayMap = ['日', '一', '二', '三', '四', '五', '六'];\r\n const year = String(time.getFullYear());\r\n const month = time.getMonth() + 1 > 9 ? String(time.getMonth() + 1) : `0${String(time.getMonth() + 1)}`;\r\n const date = time.getDate() > 9 ? String(time.getDate()) : `0${String(time.getDate())}`;\r\n const day = time.getDay();\r\n const week: any = day !== 0 ? day : '日';\r\n const hours = time.getHours() > 9 ? String(time.getHours()) : `0${String(time.getHours())}`;\r\n const minutes = time.getMinutes() > 9 ? String(time.getMinutes()) : `0${time.getMinutes()}`;\r\n const seconds = time.getSeconds() > 9 ? String(time.getSeconds()) : `0${String(time.getSeconds())}`;\r\n let str = '';\r\n if (/YYYY|YY/g.test(format)) {\r\n format.replace(/YYYY|YY/g, (reg, index, value) => {\r\n if (reg === 'YY') {\r\n str = value.replace('YY', year.slice(2))\r\n }\r\n if (reg === 'YYYY') {\r\n str = value.replace('YYYY', year)\r\n }\r\n return str\r\n })\r\n } else {\r\n str = format\r\n }\r\n str = str.replace(/MM/g, month);\r\n str = str.replace(/dd/g, date);\r\n str = str.replace(/HH/g, hours);\r\n str = str.replace(/mm/g, minutes);\r\n str = str.replace(/ss/g, seconds);\r\n str = str.replace(/ww/g, week);\r\n str = str.replace(/WW/g, dayMap[day]);\r\n return str\r\n }\r\n\r\n /**\r\n * @Description:两个日期大小比较(开始时间 > 结束时间,返回true)\r\n * @author LiuBo\r\n * @date 2022/7/15\r\n * @time 10:43\r\n * @param startTime 开始时间 (YYYY-MM-DD)\r\n * @param endTime 结束时间 (YYYY-MM-DD)\r\n * @modifyLog\r\n */\r\n dateSizeCompare(startTime: string,endTime: string): boolean {\r\n return new Date(Date.parse(startTime.replace(/-/g,\"/\"))).getTime() >\r\n new Date(Date.parse(endTime.replace(/-/g,\"/\"))).getTime();\r\n }\r\n}\r\nconst dateFormat: DateFormatService = new DateFormatService();\r\nexport { dateFormat };\r\n","import { FormGroup } from \"@/domain\";\r\nimport { AbstractControl } from \"@/domain/AbstractControl\";\r\nimport { FormControl, Validate, ValidateReport, ValidateResult } from \"../domain/FormControl\";\r\nimport DvForm from \"../components/form/DvForm.vue\";\r\nimport { FormFieldType, OptionType, SubmittedType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\n// import moment from \"moment\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions, storageOptions } from \"@/filtres/extract-options.filter\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../domain\";\r\nimport { Rule, validateGeneratorService } from \"../services/validate-generator.service\";\r\nimport { formToolsService, formTreeNodeConvertService, formValidateService } from \"@/services\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { Vue } from \"vue-property-decorator\";\r\nimport dayjs from \"dayjs\";\r\nimport { dateFormat } from \"@/services/date-format.service\";\r\nexport type FormatType = \"default\" | \"ebtrust\";\r\n\r\nexport enum Attribute {\r\n IsHideControl = \"isHideControl\", // 隐藏控件\r\n IsRequiredValidate = \"isRequiredValidate\", // 是否必填\r\n FormFieldDescribe = \"formFieldDescribe\", // 字段别名\r\n FieldDefaultValue = \"fieldDefaultValue\", // 默认值\r\n TitleWidth = \"titleWidth\", // 标题宽度\r\n IsBoldTitle = \"isBoldTitle\", // 加粗标题\r\n IsHideTitle = \"isHideTitle\", // 隐藏标题\r\n TitleColor = \"titleColor\", // 标题颜色\r\n Placeholder = \"placeholder\", // 预期值的提示信息\r\n Tips = \"tips\", // 提示信息\r\n IsNotEdit = \"isNotEdit\", // 不可编辑\r\n BindingPrefix = \"bindingPrefix\", // 绑定前缀\r\n BindingSuffix = \"bindingSuffix\", // 绑定后缀\r\n BuiltInFrontLabel = \"builtInFrontLabel\", // 内置前置标签\r\n BuiltInPostLabel = \"builtInPostLabel\", // 内置后置标签\r\n ControlWidth = \"controlWidth\", // 控件宽度\r\n IsPasswordBox = \"isPasswordBox\", // 是否密码框\r\n InitRowHeight = \"initRowHeight\", // 初始行高\r\n IsFixedRowHeight = \"isFixedRowHeight\", // 是否固定行高\r\n FormatType = \"formatType\", // 格式化类型\r\n MinValue = \"minValue\", // 最小值\r\n MaxValue = \"maxValue\", // 最大值\r\n Step = \"step\", // 步长\r\n DecimalPlaces = \"decimalPlaces\", // 小数位\r\n ThousandthPercentileFormat = \"thousandthPercentileFormat\", // 千分位格式化\r\n Unit = \"unit\", // 单位\r\n ZoomType = \"zoomType\", // 缩放类型\r\n ZoomMultiple = \"zoomMultiple\", // 缩放倍数\r\n IsShowCapitalization = \"isShowCapitalization\", // 展示大写\r\n IsLineFeedDisplay = \"isLineFeedDisplay\", // 换行显示\r\n IsOptionType = \"isOptionType\", // 类型选项\r\n OptionConfig = \"optionConfig\", // 自定义字典项\r\n DateFormat = \"dateFormat\", // 日期格式\r\n TimeFormat = \"timeFormat\", // 时间格式\r\n IsSupportMultiple = \"isSupportMultiple\", // 是否支持多选\r\n MaxUploadNumber = \"maxUploadNumber\", // 最多上传个数\"\r\n LimitSize = \"limitSize\", // 上传大小限制\r\n SupportUploadType = \"supportUploadType\", // 扩展类型\r\n CustomUploadType = \"customUploadType\", // 自定义类型\r\n ExtendUploadType = \"extendUploadType\", // 扩展类型\r\n AttachmentExtendProperties = \"attachmentExtendProperties\", // 附件扩展属性\r\n IsMultipleChoice = \"isMultipleChoice\", // 是否可多选\r\n IsSearchable = \"isSearchable\", // 是否可搜索\r\n CanAddEntry = \"canAddEntry\", // 是否可新增条目\r\n IsClearButton = \"isClearButton\", // 显示清除按钮\r\n OnOpeningValue = \"onOpeningValue\", // 打开时的值\r\n WhenClosedValue = \"whenClosedValue\", // 关闭时的值\r\n OnOpeningText = \"onOpeningText\", // 打开时的文字描述\r\n WhenClosedText = \"whenClosedText\", // 关闭时的文字描述\r\n CustomFieldName = \"customFieldName\", // 自定义字段名\r\n TextFold = \"textFold\", // 文本折叠\r\n HiddenDropdown = \"hiddenDropdown\", // 隐藏下拉面板\r\n BusAttr = \"busAttr\", // 业务属性\r\n EnableAutoComplete = \"enableAutoComplete\", // 开启自动完成功能\r\n AutoCompleteOptions = \"autoCompleteOptions\", // 自动完成列表数据\r\n IsTreeOpen = \"isTreeOpen\", // 树形选择框是否展开\r\n CheckboxStyle = \"checkboxStyle\", // 多选器选项标签样式\r\n ItemWidth = \"itemWidth\",\r\n ChangeOnSelect = \"changeOnSelect\", // 是否允许级联选择框只选中父级选项\r\n TextareaRows = \"textareaRows\", // 设置textarea组件默认展示行数\r\n IsShowHoliday = \"isShowHoliday\", // 是否展示节假日\r\n}\r\n\r\n/**\r\n * @description: 表单基础类,聚合常用api\r\n * @author ChenRui\r\n * @date 2020/11/28 23:27\r\n */\r\nexport class FormApi {\r\n id?: any; // api编号\r\n dvForm: Vue | any; // form组件实例\r\n edit: boolean | undefined; // 编辑状态\r\n formatType: FormatType; // 数据格式化模式\r\n apiMetaRefresh: any; // api内部刷新标识\r\n [key: string]: any; // 任一扩展属性\r\n oldVal: any; //修改前数据\r\n\r\n /**\r\n * @description: 获取表单对象\r\n * @author ChenRui\r\n * @date 2020/11/28 23:29\r\n */\r\n constructor(\r\n options: {\r\n id?: any;\r\n dvForm?: Vue;\r\n edit?: boolean;\r\n formatType?: FormatType;\r\n } = {}\r\n ) {\r\n this.id = options.id || this.getUuid();\r\n this.dvForm = options.dvForm || new Vue(DvForm);\r\n this.edit = options.edit;\r\n this.formatType = options.formatType || \"default\";\r\n }\r\n\r\n get mathjs(): MathJsStatic {\r\n if ((window as any).$app.config.globalProperties.$mathjs) {\r\n return (window as any).$app.config.globalProperties.$mathjs;\r\n }\r\n return {} as MathJsStatic;\r\n }\r\n\r\n /**\r\n * @description: 获取表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:36\r\n */\r\n get formData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n let obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n if (this.oldVal) {\r\n obj = this.contrast(this.oldVal, obj);\r\n if (!Object.keys(obj).length) {\r\n obj = null;\r\n }\r\n }\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @Description 获取表单全部值\r\n * @Author JiangTao\r\n * @Date 2023-12-22 下午 02:50\r\n */\r\n get formAllData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 编码表单对象\r\n * @author ChenRui\r\n * @date 2021/4/25 16:41\r\n */\r\n get encodedFormData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const data = this.generateData(this.dvForm.desForm.formGroup);\r\n return this.jsonToFormData(data);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:37\r\n */\r\n setFormData(srcData: any, isDefault = false, validate = false, oldVal?: any): void {\r\n if (this.dvForm.desForm.formGroup) {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n } else {\r\n setTimeout(() => {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n });\r\n }\r\n if (oldVal) this.oldVal = oldVal;\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/29 10:08\r\n */\r\n getControl(key: string, control?: AbstractControl, showError = true): AbstractControl | any {\r\n if (key) {\r\n if (control == null) {\r\n if (this.dvForm.desForm.formGroup) {\r\n control = this.dvForm.desForm.formGroup.controls;\r\n } else if (showError) {\r\n console.log(\"表单对象尚未初始化完成...\");\r\n }\r\n }\r\n if (control && Object.keys(control).length > 0) {\r\n for (const propName of Object.keys(control)) {\r\n if (propName === key) {\r\n return control[propName];\r\n }\r\n if (control[propName].controls && Object.keys(control[propName].controls).length > 0) {\r\n const subControl: AbstractControl = this.getControl(key, control[propName].controls);\r\n if (subControl != null) {\r\n return subControl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 获取值\r\n * @author ChenRui\r\n * @date 2021/1/29 14:57\r\n */\r\n getValue(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n // && control instanceof FormControl\r\n return this.decodeData(control as FormControl, false);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置值\r\n * @author ChenRui\r\n * @date 2021/1/29 16:23\r\n */\r\n setValue(key: string, val: any, isDefault = false, validate = true): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n });\r\n } else {\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单\r\n * @author ChenRui\r\n * @date 2021/2/22 17:40\r\n */\r\n resetValue(): void {\r\n this.dvForm.formatDesForm(true);\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:03\r\n */\r\n getText(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.text();\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 获取可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:11\r\n */\r\n getOptions(key: string): any[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return extractOptions(control.controlAttr);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 设置可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:15\r\n */\r\n setOptions(key: string, data: any[], defaultVal?: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlOptions(control, key, data, defaultVal);\r\n });\r\n } else {\r\n this.setControlOptions(control, key, data, defaultVal);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n getAttribute(key: string, attribute: Attribute): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return control.controlAttr[attribute];\r\n }\r\n }\r\n /**\r\n * @description: 设置常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n setAttribute(key: string, attribute: Attribute, data: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlAttribute(control, attribute, data);\r\n });\r\n } else {\r\n this.setControlAttribute(control, attribute, data);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根据name获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:46\r\n */\r\n getValidate(key: string, name: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.getValidate(name);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:30\r\n */\r\n removeValidate(key: string, validateName: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const validates: Validate[] = control.validates;\r\n if (validates && validates.length > 0) {\r\n const index = validates.findIndex((item) => item.name === validateName);\r\n if (index !== -1) {\r\n validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除所有校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:48\r\n */\r\n removeAllValidates(key: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n control.validates = [];\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验集合\r\n * @author ChenRui\r\n * @date 2021/1/30 11:40\r\n */\r\n getValidates(key: string): Validate[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.validates;\r\n }\r\n return [];\r\n }\r\n /**\r\n * @Description: 设置必输校验\r\n * @author GuoXuHui\r\n * @date 2022-05-25\r\n * @time 10:09\r\n */\r\n setRequiredValidate(key: string, data: boolean) {\r\n if (data) {\r\n this.setValidate(key, { ruleType: ValidateRules.Required.code });\r\n } else {\r\n this.removeValidate(key, ValidateRules.Required.code); // 清除必填校验\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:54\r\n */\r\n setValidate(key: string, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n });\r\n } else {\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:40\r\n */\r\n validateTips(scrollView?: any): boolean {\r\n return formValidateService.validateTips(this, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 全局校验报告\r\n * @author ChenRui\r\n * @date 2021/2/5 11:48\r\n */\r\n validateReport(formGroup?: AbstractControl, validateReports?: ValidateReport[], refreshFeedback = true): ValidateReport[] {\r\n if (validateReports == null) {\r\n validateReports = [];\r\n }\r\n if (formGroup == null) {\r\n formGroup = this.dvForm.desForm.formGroup;\r\n if (refreshFeedback) {\r\n this.dvForm.refreshCheckFeedbackFlag = new Date().getTime();\r\n }\r\n }\r\n if (formGroup != null) {\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n this.validateReport(formGroup.controls[propName], validateReports);\r\n } else if (formGroup.controls[propName] instanceof FormControl && !formGroup.controls[propName].controlAttr.isHideControl) {\r\n const validateResult: ValidateResult = formGroup.controls[propName].validate();\r\n if (validateResult.validateStatus === ValidateStatus.Error.code) {\r\n validateReports.push({\r\n key: formGroup.controls[propName].key,\r\n name: formGroup.controls[propName].controlAttr.formFieldDescribe,\r\n errorMsg: validateResult.errorMsg,\r\n controlType: formGroup.controls[propName].controlAttr.controlType,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return validateReports;\r\n }\r\n\r\n /**\r\n * @description: 表单全局校验\r\n * @author ChenRui\r\n * @date 2021/2/5 14:11\r\n */\r\n validate(refreshFeedback = true): boolean {\r\n const validateReports: ValidateReport[] = this.validateReport(undefined, undefined, refreshFeedback);\r\n return !(validateReports.length > 0);\r\n }\r\n\r\n /**\r\n * @description: 刷新校验\r\n * @author ChenRui\r\n * @date 2021/6/4 19:32\r\n */\r\n refreshValidate(key: string): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n });\r\n } else {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 11:51\r\n */\r\n resetFormValidateState(): void {\r\n this.dvForm.formValidateStateResetMark = new Date().getTime();\r\n }\r\n\r\n /**\r\n * @description: 设置格式化显示和输出函数\r\n * @author ChenRui\r\n * @date 2021/2/4 19:44\r\n */\r\n setFormatDisplayAndOutput(key: string, customFormat: CustomFormat): void {\r\n if (key) {\r\n this.dvForm.customFormats[key] = customFormat;\r\n }\r\n this.refreshAndUpdateData();\r\n }\r\n\r\n /**\r\n * @description: 刷新数据\r\n * @author ChenRui\r\n * @date 2021/2/4 20:22\r\n */\r\n refreshAndUpdateData(): void {\r\n this.dvForm.onRefreshArgumentsHandler(new Date().getTime());\r\n }\r\n\r\n /**\r\n * @description: 获取控件dom对象\r\n * @author ChenRui\r\n * @date 2021/2/26 17:12\r\n */\r\n getControlEl(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control != null && control.controlAttr) {\r\n const els: HTMLCollectionOf<any> = document.getElementsByClassName(\"form-model-item-\" + control.controlAttr.boundProperty);\r\n if (els != null && els.length > 0) {\r\n return els[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 检查是否包含上传控件\r\n * @author ChenRui\r\n * @date 2021/4/23 11:30\r\n */\r\n checkHasUploadControl(abstractControl: AbstractControl): boolean {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n const judge = this.checkHasUploadControl(formGroup.controls[propName]);\r\n if (judge) {\r\n return judge;\r\n }\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n if (formGroup.controls[propName].code === FormFieldType.Upload.code) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: json格式转表单格式\r\n * @author ChenRui\r\n * @date 2020/8/28 15:20\r\n */\r\n jsonToFormData(params: any): FormData {\r\n const formData = new FormData();\r\n if (params != null) {\r\n Object.keys(params).forEach((key) => {\r\n if (params[key] != null && params[key] instanceof Array && params[key].length > 0 && params[key][0] instanceof File) {\r\n params[key].forEach((item: any) => {\r\n formData.append(key, item);\r\n });\r\n } else {\r\n formData.append(key, params[key]);\r\n }\r\n });\r\n return formData;\r\n }\r\n return formData;\r\n }\r\n\r\n /**\r\n * @description: 设置变更历史记录\r\n * @author ChenRui\r\n * @date 2021/4/25 15:55\r\n */\r\n setFieldChangeHistory(fieldChangeHistory: FieldChangeHistory): void {\r\n fieldChangeHistory = fieldChangeHistory || {};\r\n for (const propertyName of Object.keys(fieldChangeHistory)) {\r\n let control: AbstractControl = this.getControl(propertyName, undefined, false);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n });\r\n } else {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 隐藏布局\r\n * @author ChenRui\r\n * @date 2021/11/16 0:01\r\n */\r\n hideLayout(layoutName: string, mark = true): void {\r\n if (layoutName) {\r\n const nodes: any = document.getElementsByClassName(\"lo-form-layout-\" + layoutName);\r\n if (nodes && nodes.length > 0) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n nodes[i].style.display = mark ? \"none\" : \"grid\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/8/16 9:29\r\n */\r\n private setFormDataInner(srcData: any, isDefault: boolean, validate: boolean): void {\r\n if (srcData) {\r\n for (const propName of Object.keys(srcData)) {\r\n if (typeof srcData[propName] === \"string\" || typeof srcData[propName] === \"number\") {\r\n this.setValue(propName, srcData[propName], isDefault, false);\r\n } else {\r\n this.setFormData(srcData[propName], isDefault, validate);\r\n }\r\n }\r\n }\r\n if (validate) {\r\n this.validate();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件值\r\n * @author ChenRui\r\n * @date 2021/4/13 12:50\r\n */\r\n private setControlValue(control: AbstractControl, key: string, val: any, isDefault?: boolean, validate = true): void {\r\n if (control) {\r\n // && control instanceof FormControl\r\n switch (control.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (val && control.controlAttr.zoomMultiple) {\r\n if (control.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} / ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (control.controlAttr.zoomType === ZoomType.narrow.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} * ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (val != undefined) {\r\n control.value = val;\r\n } else {\r\n control.value = \"\";\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.isMultipleChoice) {\r\n if (!val) {\r\n val = [];\r\n } else if (typeof val === \"string\") {\r\n val = val.split(\",\");\r\n }\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n case FormFieldType.Cascader.code:\r\n if (val) {\r\n val = val.split(\",\");\r\n } else {\r\n val = [];\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (control.controlAttr.onOpeningValue) {\r\n val = val === true || val === control.controlAttr.onOpeningValue;\r\n } else if (control.controlAttr.whenClosedValue) {\r\n val = !(val === false || val === control.controlAttr.whenClosedValue);\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(new Date(this.nowDateStr() + \" \" + val));\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(val, control.dateFormat);\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n default: {\r\n control.value = val;\r\n }\r\n }\r\n if (isDefault) {\r\n this.setAttribute(key, Attribute.FieldDefaultValue, JSON.stringify(control.value));\r\n }\r\n if (validate) {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件可选项\r\n * @author ChenRui\r\n * @date 2021/4/13 15:09\r\n */\r\n private setControlOptions(control: AbstractControl, key: string, data: any[], defaultVal?: any): void {\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr)\r\n storageOptions(control.controlAttr, data);\r\n this.setAttribute(key, Attribute.IsOptionType, OptionType.Fixed.code);\r\n this.setAttribute(key, Attribute.OptionConfig, data);\r\n }\r\n if (defaultVal) {\r\n this.setValue(key, defaultVal, true);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件常规属性\r\n * @author ChenRui\r\n * @date 2021/4/13 15:11\r\n */\r\n private setControlAttribute(control: AbstractControl, attribute: Attribute, data: any): void {\r\n if (control && attribute) {\r\n //control && control instanceof FormControl && attribute\r\n control.controlAttr[attribute] = data;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验内部函数\r\n * @author ChenRui\r\n * @date 2021/7/19 17:51\r\n */\r\n private setValidateInner(control: AbstractControl, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n if (validate != null && (validate as Rule).ruleType) {\r\n validate = validateGeneratorService.getBuiltInValidationRules(validate as Rule, control.controlAttr) as any;\r\n }\r\n if (validate != null) {\r\n if (isCover) {\r\n control.validates = [];\r\n }\r\n control.addValidate(validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 生成数据信息\r\n * @author ChenRui\r\n * @date 2021/1/29 10:06\r\n */\r\n private generateData(abstractControl: AbstractControl, obj: any = {}): any {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n obj[propName] = this.generateData(formGroup.controls[propName], obj[propName]);\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n obj[propName] = this.decodeData(formGroup.controls[propName] as FormControl);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 数据解码输出\r\n * @author ChenRui\r\n * @date 2021/5/29 23:03\r\n */\r\n private decodeData(formControl: FormControl, isFinal = true): any {\r\n let data = formControl.value || \"\";\r\n switch (formControl.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (formControl.value === 0) {\r\n data = 0;\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (formControl.controlAttr.isMultipleChoice && data && Array.isArray(data)) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (data && isFinal) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.timeFormat || \"LTS\");\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.dateFormat || \"YYYY-MM-DD\");\r\n }\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (data) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Switch.code:\r\n data = !!data;\r\n if (formControl.controlAttr) {\r\n if (data === true && formControl.controlAttr.onOpeningValue != undefined && formControl.controlAttr.onOpeningValue !== \"\") {\r\n data = formControl.controlAttr.onOpeningValue;\r\n } else if (data === false && formControl.controlAttr.whenClosedValue != undefined && formControl.controlAttr.whenClosedValue !== \"\") {\r\n data = formControl.controlAttr.whenClosedValue;\r\n }\r\n }\r\n break;\r\n case FormFieldType.Custom.code:\r\n if (formControl.controlAttr && formControl.controlAttr.customFieldName) {\r\n const customFormat: CustomFormat = this.dvForm.customFormats[formControl.controlAttr.customFieldName];\r\n if (customFormat && customFormat.output) {\r\n data = customFormat.output(data, formControl.controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * @description: 获取当前日期字符串\r\n * @author ChenRui\r\n * @date 2021/2/4 11:43\r\n */\r\n private nowDateStr(): string {\r\n const time = new Date();\r\n const day = (\"0\" + time.getDate()).slice(-2);\r\n const month = (\"0\" + (time.getMonth() + 1)).slice(-2);\r\n return time.getFullYear() + \"/\" + month + \"/\" + day;\r\n }\r\n\r\n /**\r\n * @description: uuid生成器\r\n * @author ChenRui\r\n * @date 2021/7/20 11:14\r\n */\r\n private getUuid(): string {\r\n const s: any[] = [];\r\n const hexDigits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n for (let i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[14] = \"4\";\r\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\r\n s[8] = s[13] = s[18] = s[23] = \"-\";\r\n const uuid = s.join(\"\");\r\n return uuid;\r\n }\r\n\r\n /**\r\n * @Description: 对比新旧表单值\r\n * @author lzs\r\n * @date 2022/9/3\r\n * @time 21:49\r\n */\r\n private contrast(objectA: any, objectB: any): any {\r\n const object: any = {};\r\n const data: any = {};\r\n const fieldInfoArr: any = [];\r\n if (!objectB || !objectA) {\r\n object.changeLog = \"必传参数不存在\";\r\n return object;\r\n }\r\n const handlerFlag = objectA.handlerFlag;\r\n // console.log(\"======\", this.dvForm.desForm.formGroup.controls);\r\n for (const key in this.dvForm.desForm.formGroup.controls) {\r\n if (!objectA[key] && !objectB[key]) {\r\n continue;\r\n }\r\n const control: AbstractControl = this.getControl(key);\r\n if (!control) {\r\n continue;\r\n }\r\n if (this.getChangedInfo(control, objectA[key], objectB[key])) {\r\n let oldValue = objectA[key]; // 记录新值\r\n const newValue = objectB[key]; // 记录旧值\r\n const fieldInfo: any = {}; //日志信息\r\n if (control.code !== FormFieldType.Custom.code) {\r\n fieldInfo.field_cd = key; //字段英文\r\n const name = control.controlAttr.formFieldDescribe;\r\n fieldInfo.field_nm = name; //字段中文\r\n fieldInfo.field_key = newValue; //当前值\r\n\r\n const newDict = this.translateDictionaries(control, key, newValue); // 新值描述\r\n fieldInfo.field_value = newDict; //当前值描述\r\n\r\n fieldInfo.is_change = \"1\"; //是否变动\r\n\r\n fieldInfo.field_old_key = oldValue; //旧值\r\n const oldDict = this.translateDictionaries(control, key, oldValue); //旧值描述\r\n fieldInfo.field_old_value = oldDict; //field_old_value\r\n object[key] = newValue;\r\n\r\n fieldInfoArr.push(fieldInfo);\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n oldValue = \"\";\r\n }\r\n const oldName = oldValue ? oldDict : \"空\";\r\n const newName = newValue ? newDict : \"空\";\r\n //除自定义组件均记录日志\r\n object.changeLog = object.changeLog ? object.changeLog + \",\" : \"\";\r\n if (handlerFlag === \"add\") {\r\n object.changeLog = object.changeLog + \"新增【\" + name + \"】\" + \"为“\" + newName + \"”\";\r\n } else {\r\n object.changeLog = object.changeLog + \"修改【\" + name + \"】\" + \"由“\" + oldName + \"”修改为“\" + newName + \"”\";\r\n }\r\n } else {\r\n object[key] = newValue;\r\n }\r\n }\r\n }\r\n object.fieldInfoArr = fieldInfoArr;\r\n return object;\r\n }\r\n /**\r\n * @Description: 获取表单值更改信息\r\n * @author lzs\r\n * @date 2022/10/11\r\n * @time 09:53\r\n */\r\n getChangedInfo(control: any, oldValue: any, newValue: any): boolean {\r\n oldValue = oldValue + \"\";\r\n newValue = newValue + \"\";\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n return true;\r\n }\r\n let flag = true;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Textarea.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Slider.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Rate.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Select.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n oldValue = dateFormat.formatDateTime(oldValue, \"YYYY-MM-dd\");\r\n newValue = dateFormat.formatDateTime(newValue, \"YYYY-MM-dd\");\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n }\r\n return flag;\r\n }\r\n /**\r\n * @Description: 翻译字典项\r\n * @author lzs\r\n * @date 2022/9/6\r\n * @time 11:54\r\n */\r\n translateDictionaries(control: any, key: any, value: any): string {\r\n let str = value;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n break;\r\n case FormFieldType.Textarea.code:\r\n break;\r\n case FormFieldType.Slider.code:\r\n break;\r\n case FormFieldType.Rate.code:\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n str = \"\";\r\n if (value) {\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n }\r\n str = str.substring(0, str.length - 1);\r\n }\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n str = dateFormat.formatDateTime(value, \"YYYY-MM-dd\");\r\n break;\r\n case FormFieldType.Cascader.code:\r\n str = \"\";\r\n if (value) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n str = str.substring(0, str.length - 1);\r\n } else {\r\n str = \"\";\r\n }\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n str = \"\";\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n if (item.value === value) {\r\n str = str + item.title;\r\n }\r\n });\r\n break;\r\n case FormFieldType.Switch.code:\r\n str = value ? \"开\" : \"关\";\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n default:\r\n str = value;\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * @Description 根据报送类型返回需要隐藏的表单字段\r\n * @Author JiangTao\r\n * @Date 2024-01-30 上午 09:33\r\n */\r\n getFormSubmittedType(form: any, code: any) {\r\n const strArr = code && code.length > 0 ? code : [];\r\n const list: any = this.dvForm.desForm.controls[0].subControls;\r\n const subControlsList: any = formToolsService.loadResource(this.dvForm.desForm.formId).controls[0].subControls;\r\n const submittedTypeList: any = [];\r\n if (strArr.length > 0) {\r\n // 遍历组件实例\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(item.formControl.key, Attribute.IsHideControl)) {\r\n // 处理普通表单控件\r\n submittedTypeList.push(item.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, item);\r\n }\r\n } else if (item.subControls) {\r\n // 处理栅格中表单控件\r\n // 遍历栅格中控件\r\n item.subControls.forEach((control: any, num: any) => {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(control.formControl.key, Attribute.IsHideControl)) {\r\n submittedTypeList.push(control.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, control);\r\n }\r\n });\r\n }\r\n });\r\n // 隐藏无需展示的表单字段\r\n submittedTypeList.forEach((item: any) => {\r\n form.setAttribute(item, Attribute.IsHideControl, true);\r\n });\r\n } else {\r\n // 默认展示全部字段\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n } else if (item.subControls) {\r\n item.subControls.forEach((control: any, num: any) => {\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @Description 筛选报送类型字段数据处理\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 08:50\r\n */\r\n private handleSubmittedData(submittedTypeList: any, codeArr: any, submittedData: any): void {\r\n let submittedType: any = [];\r\n if (JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType !== \"\") {\r\n // 获取字段报送类型\r\n submittedType = JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType.split(\",\");\r\n // 遍历查询报送类型\r\n for (let i = 0; i < codeArr.length; i++) {\r\n // 判断是否为查询的报送类型字段\r\n if (submittedType.filter((type: any) => type === codeArr[i]).length > 0 && submittedTypeList.indexOf(submittedData.formControl.key) >= 0) {\r\n submittedTypeList.splice(submittedTypeList.indexOf(submittedData.formControl.key), 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description 获取报送类型枚举(数组)\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 03:30\r\n */\r\n getSubmittedType() {\r\n const list: any = [];\r\n Object.values(SubmittedType).forEach((item: any) => {\r\n list.push({\r\n value: item.code,\r\n label: item.name,\r\n });\r\n });\r\n return list;\r\n }\r\n}\r\n","\r\nimport DvFormLayout from \"./DvFormLayout.vue\";\r\nimport { Options, Prop, Provide, Watch, Vue } from \"vue-property-decorator\";\r\nimport { DesForm } from \"@/domain\";\r\nimport { FormFieldClass, DynamicOptionType, OptionType, ValidateRules } from \"@/constants\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { Control } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\nimport { FormGroup } from \"@/domain\";\r\nimport { FormControl } from \"@/domain\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { FormApi } from \"@/core\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\nimport { validateGeneratorService } from \"@/services\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../../domain\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\n// import { DynamicOptionType, OptionType } from \"../../constants/enum\";\r\nimport { NzTreeNodeOptions } from \"@/services\";\r\n\r\nexport type NfFormMode = \"manual\" | \"auto\";\r\n\r\nexport type NfStyleMode = \"default\" | \"trust\" | \"credit-rd\";\r\n\r\nexport type NfFormTheme = \"default\" | \"gray\";\r\n/**\r\n * @description: 动态表单\r\n * @author ChenRui\r\n * @date 2020/12/30 11:20\r\n */\r\n@Options({\r\n name: \"DyForm\",\r\n components: {\r\n DvFormLayout: DvFormLayout,\r\n },\r\n})\r\nexport default class DyForm extends Vue {\r\n @Prop() formId: string | undefined;\r\n @Prop() mode: NfFormMode | undefined;\r\n @Prop({ type: String, default: \"default\" }) styleMode!: NfStyleMode;\r\n @Prop() srcDesForm: DesForm | undefined;\r\n @Prop({ default: false, type: Boolean }) edit!: boolean;\r\n @Prop({ default: false, type: Boolean }) colon!: boolean;\r\n @Prop({ default: \"130px\", type: String }) labelSpan!: string;\r\n @Prop({ default: undefined }) controlSpan!: any;\r\n @Prop({ type: Object }) formApi: FormApi | undefined;\r\n @Prop({ type: Array }) history: FieldChangeHistory | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats!: {\r\n [key: string]: CustomFormat;\r\n };\r\n @Prop() refreshArguments: any; // 刷新自变量\r\n @Prop({ default: false }) widthCompatibleMode!: boolean; // 宽度计算模式\r\n @Prop({ type: String }) formTheme!: NfFormTheme; // 表单主题\r\n @Prop({ type: Array }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Prop({ type: Array }) formLimits!: any[]; // 表单权限\r\n\r\n private metaRefresh: any = new Date().getTime(); // 刷新标识\r\n private refreshCheckFeedbackFlag = new Date().getTime(); // 刷新校验标识\r\n private sysDictDetailOptions: NzTreeNodeOptions[] = []; // 常规字典\r\n private sysDictTreeDetailOptions: NzTreeNodeOptions[] = []; // 树形字典\r\n private formValidateStateResetMark: any = new Date().getTime(); // 重置校验标识\r\n\r\n desForm: DesForm = new DesForm();\r\n\r\n @Provide() provideInjectData: ProvideInjectData = {\r\n edit: (this.$props as any).edit,\r\n labelSpan: (this.$props as any).labelSpan,\r\n controlSpan: (this.$props as any).controlSpan,\r\n colon: (this.$props as any).colon,\r\n metaRefresh: this.metaRefresh,\r\n refreshCheckFeedbackFlag: this.refreshCheckFeedbackFlag,\r\n widthCompatibleMode: (this.$props as any).widthCompatibleMode,\r\n formValidateStateResetMark: this.formValidateStateResetMark,\r\n };\r\n\r\n /**\r\n * @description: 刷新自变量监听处理\r\n * @author ChenRui\r\n * @date 2021/2/5 10:25\r\n */\r\n @Watch(\"refreshArguments\", { immediate: true })\r\n onRefreshArgumentsHandler(newVal: any): void {\r\n this.metaRefresh = newVal;\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验状态监听\r\n * @author ChenRui\r\n * @date 2022/4/6 14:17\r\n */\r\n @Watch(\"formValidateStateResetMark\")\r\n onPropFormValidateStateResetHandler(): void {\r\n if ((this as any)._provided) {\r\n ((this as any)._provided as any).provideInjectData.formValidateStateResetMark = this.formValidateStateResetMark;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 值变更处理器\r\n * @author ChenRui\r\n * @date 2021/1/8 11:03\r\n */\r\n @Watch(\"edit\")\r\n @Watch(\"labelSpan\")\r\n @Watch(\"controlSpan\")\r\n @Watch(\"metaRefresh\")\r\n @Watch(\"refreshCheckFeedbackFlag\")\r\n @Watch(\"widthCompatibleMode\")\r\n onPropHandler(): void {\r\n if (this) {\r\n this.provideInjectData.edit = this.edit;\r\n this.provideInjectData.labelSpan = this.labelSpan;\r\n this.provideInjectData.controlSpan = this.controlSpan;\r\n this.provideInjectData.metaRefresh = this.metaRefresh;\r\n this.provideInjectData.refreshCheckFeedbackFlag = this.refreshCheckFeedbackFlag;\r\n this.provideInjectData.widthCompatibleMode = this.widthCompatibleMode;\r\n }\r\n }\r\n\r\n get loFormTheme(): string {\r\n const win: any = window;\r\n // 默认, 灰度, 某北某方,label换行\r\n const themes = [\"default\", \"gray\", \"nitic\", \"labelWrap\"];\r\n const formTheme = themes.indexOf(this.formTheme) > -1 ? this.formTheme : win.$loFormTheme;\r\n return themes.indexOf(formTheme) > -1 ? formTheme : themes[0];\r\n }\r\n\r\n get loFormLimit(): any {\r\n const formLimitObj: any = {};\r\n this.formLimits?.forEach((item: any) => {\r\n formLimitObj[item.id] = item;\r\n });\r\n return formLimitObj;\r\n }\r\n\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:16\r\n */\r\n linkClick(data: any) {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n created() {\r\n this.initDict();\r\n }\r\n\r\n mounted() {\r\n if (this.formId) {\r\n this.initDesForm();\r\n } else if (this.desForm) {\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n @Watch(\"formId\")\r\n private onFormIdChanged() {\r\n this.initDesForm();\r\n }\r\n\r\n @Watch(\"srcDesForm\", { immediate: true })\r\n private onSrcDesFormChanged(newVal: DesForm) {\r\n if (newVal != null) {\r\n this.desForm = formBeanUtilsService.copy(newVal);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化表单\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initDesForm(): void {\r\n if (this.formId != null && this.formId !== \"\") {\r\n this.desForm = formToolsService.loadResource(this.formId);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/12 10:12\r\n */\r\n private initDict(): void {\r\n this.sysDictDetailOptions = formToolsService.sysDictDetailOptions;\r\n this.sysDictTreeDetailOptions = formToolsService.sysDictTreeDetailOptions;\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 16:05\r\n */\r\n private formatDesForm(isReset?: boolean): void {\r\n if (this.desForm != null && this.desForm.controls != null && this.desForm.controls.length > 0) {\r\n const model = this.analysisBindingObjects();\r\n this.desForm.formGroup = this.generateFormGroup(model);\r\n this.initControlForm(this.desForm.controls, this.desForm.formGroup);\r\n this.generateFormApi(isReset);\r\n if (this.history != null) {\r\n this.formApi?.setFieldChangeHistory(this.history);\r\n }\r\n this.$emit(\"complete\");\r\n }\r\n }\r\n /**\r\n * @Description: 临时-该方法被取消\r\n * @author LiuBo\r\n * @date 2022/11/6\r\n * @time 17:11\r\n */\r\n private fixFormLayout() {\r\n this.$nextTick(() => {\r\n console.log(\"自动修改表单宽度\");\r\n try {\r\n const formView: any = this.$refs.formView;\r\n const cons = formView.getElementsByClassName(\"lo-control-container\");\r\n const len = cons.length;\r\n for (let i = 0; i < len - 1; i++) {\r\n if (cons[i].offsetLeft === cons[i + 1].offsetLeft && cons[i].clientWidth < cons[i + 1].clientWidth) {\r\n cons[i].style.width = \"200%\";\r\n } else {\r\n cons[i].style.width = \"100%\";\r\n }\r\n }\r\n if (len > 2) {\r\n const con1 = cons[len - 1];\r\n const con2 = cons[len - 2];\r\n if (con1.clientWidth === con2.clientWidth && con1.offsetLeft !== con2.offsetLeft) {\r\n con1.style.width = \"200%\";\r\n } else {\r\n con1.style.width = \"100%\";\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"自动修改表单宽度错误\" + e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2021/1/7 20:48\r\n */\r\n private generateFormApi(isReset?: boolean): void {\r\n if (isReset) {\r\n const formApi: FormApi = new FormApi(this.formApi);\r\n formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", formApi);\r\n } else {\r\n if (this.formApi) {\r\n this.formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", this.formApi);\r\n } else {\r\n const formApi = new FormApi({ dvForm: this });\r\n this.$emit(\"update:formApi\", formApi);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 解析对象\r\n * @author ChenRui\r\n * @date 2020/11/25 16:25\r\n */\r\n private analysisBindingObjects(): any {\r\n const models: any[] = this.objectExtraction(this.desForm!.controls);\r\n let obj: any = {};\r\n if (models != null && models.length > 0) {\r\n models.forEach((item) => {\r\n if (Object.keys(item).length > 0) {\r\n obj = this.objectMerge(obj, item[Object.keys(item)[0]]);\r\n }\r\n });\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 对象抽取\r\n * @author ChenRui\r\n * @date 2020/11/25 17:28\r\n */\r\n private objectExtraction(controls: Control[], models: any[] = []): any {\r\n controls.forEach((item) => {\r\n if (item.type === FormFieldClass.Layout.code) {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n return this.objectExtraction(item.subControls, models);\r\n }\r\n } else {\r\n const desFormControl: DesFormControl = item?.controlAttr as DesFormControl;\r\n const boundProperty: string = desFormControl.boundProperty;\r\n if (boundProperty) {\r\n /* 初始化字典项数据 */\r\n if (desFormControl.generalDictionary || desFormControl.treeShape) {\r\n if (desFormControl.isOptionType === OptionType.Dynamic.code) {\r\n if (desFormControl.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n desFormControl.generalDictionaryOptions = this.findDictOptions(desFormControl.generalDictionary, this.sysDictDetailOptions);\r\n } else if (desFormControl.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n desFormControl.treeShapeOptions = this.findDictOptions(desFormControl.treeShape, this.sysDictTreeDetailOptions);\r\n }\r\n }\r\n }\r\n /*初始化默认值*/\r\n const propertys: string[] = boundProperty.split(\".\");\r\n let lastMd: any = {};\r\n const md = { lastMd };\r\n propertys.forEach((val, idx, array) => {\r\n if (idx < array.length - 1) {\r\n lastMd[val] = {};\r\n lastMd = lastMd[val];\r\n } else {\r\n const defaultValue: any = formBeanUtilsService.parse((item.controlAttr as DesFormControl).fieldDefaultValue) || \"\";\r\n lastMd[val] = this.securityValue(item, defaultValue);\r\n }\r\n });\r\n models.push(md.lastMd);\r\n }\r\n }\r\n });\r\n return models;\r\n }\r\n\r\n /**\r\n * @description: 查询字典\r\n * @author ChenRui\r\n * @date 2021/3/11 17:19\r\n */\r\n private findDictOptions(key: string, nzTreeNodeOptions: NzTreeNodeOptions[]): NzTreeNodeOptions[] {\r\n if (nzTreeNodeOptions != null && nzTreeNodeOptions.length > 0) {\r\n for (const item of nzTreeNodeOptions) {\r\n if (item.key === key) {\r\n (item.children || []).forEach((item) => {\r\n item.disabled = false;\r\n });\r\n return item.children || [];\r\n } else if (item.children && item.children.length > 0) {\r\n const subTtems: NzTreeNodeOptions[] = this.findDictOptions(key, item.children);\r\n if (subTtems != null && subTtems.length > 0) {\r\n return subTtems;\r\n }\r\n }\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 安全值处理\r\n * @author ChenRui\r\n * @date 2021/1/29 17:01\r\n */\r\n securityValue(control: Control, defaultValue: any): any {\r\n if (control.code === FormFieldType.DatePicker.code || control.code === FormFieldType.TimePicker.code) {\r\n if (defaultValue) {\r\n return defaultValue;\r\n } else {\r\n return null;\r\n }\r\n } else if (control.code === FormFieldType.TreeSelect.code) {\r\n const options = extractOptions(control.controlAttr);\r\n if (options && options.length > 0 && defaultValue) {\r\n defaultValue = this.treeSelectRecursion(defaultValue, options);\r\n }\r\n return defaultValue;\r\n } else if (control.code === FormFieldType.Upload.code) {\r\n return defaultValue || [];\r\n } else if (control.code === FormFieldType.Switch.code) {\r\n if (control.controlAttr && (control.controlAttr as DesFormControl).onOpeningValue) {\r\n return defaultValue === true || defaultValue === (control.controlAttr as DesFormControl).onOpeningValue ? true : false;\r\n } else if (control.controlAttr && (control.controlAttr as DesFormControl).whenClosedValue) {\r\n return defaultValue === false || defaultValue === (control.controlAttr as DesFormControl).whenClosedValue ? false : true;\r\n }\r\n return defaultValue;\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 树形递归\r\n * @author ChenRui\r\n * @date 2021/1/11 0:23\r\n */\r\n treeSelectRecursion(value: any, items: any[]): any {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].key === value) {\r\n return items[i].value;\r\n } else if (items[i].children && items[i].children.length > 0) {\r\n const subValue = this.treeSelectRecursion(value, items[i].children);\r\n if (subValue) {\r\n return subValue;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 对象合并\r\n * @author ChenRui\r\n * @date 2020/11/25 17:49\r\n */\r\n private objectMerge(modelX: any, modelY: any): any {\r\n let key;\r\n for (key in modelY) {\r\n if (modelX[key] && modelX[key].toString() === \"[object Object]\" && modelY[key] && modelY[key].toString() === \"[object Object]\") {\r\n modelX[key] = this.objectMerge(modelX[key], modelY[key]);\r\n } else {\r\n modelX[key] = modelX[key] = modelY[key];\r\n }\r\n }\r\n return modelX;\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2020/11/26 11:02\r\n */\r\n private generateFormGroup(model: any): FormGroup {\r\n const group: FormGroup = new FormGroup();\r\n if (model != null) {\r\n Object.keys(model).forEach((key) => {\r\n if (Object.prototype.toString.call(model[key]) === \"[object Object]\") {\r\n const subFormGroup: FormGroup = this.generateFormGroup(model[key]);\r\n subFormGroup.key = key;\r\n group.addControl(key, subFormGroup);\r\n } else {\r\n const formControl: FormControl = new FormControl(model[key]);\r\n formControl.key = key;\r\n group.addControl(key, formControl);\r\n }\r\n });\r\n }\r\n return group;\r\n }\r\n\r\n /**\r\n * @description: 创建表单对象\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initControlForm(controls: Control[], formGroup: FormGroup): void {\r\n controls.forEach((control) => {\r\n if (control.type === FormFieldClass.Base.code || control.type === FormFieldClass.Senior.code) {\r\n const boundProperty: string = (control.controlAttr as DesFormControl)?.boundProperty;\r\n if (boundProperty) {\r\n const propertys: string[] = boundProperty.split(\".\");\r\n if (propertys.length > 1 && formGroup != null) {\r\n const formControl: FormControl = this.findFormControlByProperty(propertys.slice(1, propertys.length), formGroup);\r\n const controlAttr: DesFormControl = control.controlAttr as any;\r\n // console.log(\"接受到的表单权限信息\", this.loFormLimit);\r\n const property = propertys[propertys.length - 1];\r\n const formLimit = this.loFormLimit[property];\r\n if (formLimit) {\r\n controlAttr.isHideControl = formLimit.isHide === \"1\";\r\n controlAttr.isNotEdit = formLimit.isNotEdit === \"1\";\r\n const requiredIndex = controlAttr.verificationRules?.findIndex((item: any) => item.ruleType === ValidateRules.Required.code);\r\n if (formLimit.isMustFill == \"1\" && requiredIndex == -1) {\r\n // 添加必输校验\r\n controlAttr.verificationRules.push({ ruleType: ValidateRules.Required.code });\r\n } else if (formLimit.isMustFill != \"1\" && requiredIndex > -1) {\r\n // 移除必输校验\r\n controlAttr.verificationRules.splice(requiredIndex, 1);\r\n }\r\n }\r\n formControl.code = control.code;\r\n formControl.controlAttr = controlAttr;\r\n validateGeneratorService.fillCheckRule(formControl, controlAttr);\r\n control[\"formControl\"] = formControl;\r\n }\r\n }\r\n } else if (control.type === FormFieldClass.Layout.code && control.subControls != null && control.subControls.length > 0) {\r\n this.initControlForm(control.subControls, formGroup);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 按照节点查询控件\r\n * @author ChenRui\r\n * @date 2020/11/26 15:45\r\n */\r\n private findFormControlByProperty(propertys: string[], formGroup: FormGroup): FormControl | any {\r\n let currentFormGroup = formGroup;\r\n for (let i = 0; i < propertys.length; i++) {\r\n const formObject = currentFormGroup.get(propertys[i]);\r\n if (i < propertys.length - 1 && formObject != null && formObject instanceof FormGroup) {\r\n currentFormGroup = formObject;\r\n } else {\r\n return formObject;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件值变化事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:35\r\n */\r\n onChange(event: any): void {\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n }\r\n\r\n /**\r\n * @description: 单击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:39\r\n */\r\n onClick(event: any): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n}\r\n","import { render } from \"./DvForm.vue?vue&type=template&id=572952fa&scoped=true&ts=true\"\nimport script from \"./DvForm.vue?vue&type=script&lang=ts\"\nexport * from \"./DvForm.vue?vue&type=script&lang=ts\"\n\nimport \"./DvForm.vue?vue&type=style&index=0&id=572952fa&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-572952fa\"]])\n\nexport default __exports__","import { App } from \"vue\";\r\nimport DyForm from \"./components/form/DvForm.vue\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { DEFAULT_FORM_FILE_NAME } from \"./constants/config/form.config\";\r\nimport { formLocalForageService } from \"@/services\";\r\nimport { dictLocalForageService } from \"@/services\";\r\nimport { create, subtractDependencies, addDependencies, multiplyDependencies, divideDependencies, formatDependencies, evaluateDependencies, MathJsStatic } from \"mathjs\";\r\nimport { cleanLocalForageService } from \"@/services\";\r\n\r\nexport * from \"./components/index\";\r\nexport * from \"./constants/index\";\r\nexport * from \"./core/index\";\r\nexport * from \"./domain/index\";\r\nexport * from \"./services/index\";\r\nexport * from \"./store/index\";\r\nexport * from \"./types/vfForm\";\r\nimport \"./styles/index.scss\";\r\n\r\nimport \"dayjs/locale/zh-cn\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst components: any = {\r\n DyForm,\r\n};\r\n\r\nconst install: any = function (app: App, options: any) {\r\n if (install.installed) return;\r\n install.installed = true;\r\n // Modal.install(vue);\r\n Object.keys(components).forEach((key) => {\r\n app.component(key, components[key]);\r\n });\r\n dayjs.locale(\"zh-cn\");\r\n\r\n const url: string = options && options.url ? options.url : \"./resources/json/\" + DEFAULT_FORM_FILE_NAME;\r\n app.config.globalProperties.$qlForm = {\r\n url: url,\r\n contextPath: options.contextPath || \"/ms-loong\",\r\n dictUrl: options && options.dictUrl ? options.dictUrl : \"\",\r\n dictRestLoadMode: options && options.dictRestLoadMode ? options.dictRestLoadMode : \"GET\",\r\n dictRestLoadBody: options && options.dictRestLoadBody ? options.dictRestLoadBody : undefined,\r\n dictRestLoadHeaders: options && options.dictRestLoadHeaders ? options.dictRestLoadHeaders : undefined,\r\n dictRestLoadOnlyBody: options && options.dictRestLoadOnlyBody ? options.dictRestLoadOnlyBody : false,\r\n loadMode: options && options.loadMode ? options.loadMode : \"static\",\r\n appId: options && options.appId ? options.appId : \"\",\r\n onlySimpleLoadConfig: options && options.onlySimpleLoadConfig ? options.onlySimpleLoadConfig : false,\r\n urls: options?.urls,\r\n dictUrls: options?.dictUrls,\r\n };\r\n app.config.globalProperties.$formToolsService = formToolsService;\r\n (window as any).$app = app;\r\n cleanLocalForageService.init();\r\n formLocalForageService.init();\r\n dictLocalForageService.init();\r\n\r\n const mathjsDependencies: any = {\r\n formatDependencies,\r\n subtractDependencies,\r\n multiplyDependencies,\r\n evaluateDependencies,\r\n addDependencies,\r\n divideDependencies,\r\n };\r\n const mathjs: Partial<MathJsStatic> = create(mathjsDependencies, {\r\n number: \"BigNumber\",\r\n precision: 20,\r\n });\r\n app.config.globalProperties.$mathjs = mathjs;\r\n};\r\n\r\nconst VueLoForm = {\r\n install,\r\n};\r\nexport default VueLoForm;\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","const ZoomType = {\r\n enlarge: { code: \"1\", name: \"放大\" },\r\n narrow: { code: \"2\", name: \"缩小\" },\r\n automatic: { code: \"3\", name: \"自动\" },\r\n};\r\nexport { ZoomType };\r\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://vue3-lo-form/webpack/universalModuleDefinition","webpack://vue3-lo-form/webpack/bootstrap","webpack://vue3-lo-form/external \"vue-property-decorator\"","webpack://vue3-lo-form/./src/constants/enum/dynamic-option-type.enum.ts","webpack://vue3-lo-form/external \"core-js/modules/es.array.push.js\"","webpack://vue3-lo-form/./src/constants/enum/validate-status.enum.ts","webpack://vue3-lo-form/external \"dayjs/locale/zh-cn\"","webpack://vue3-lo-form/external \"ant-design-vue\"","webpack://vue3-lo-form/./src/constants/enum/option-type.enum.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?c258","webpack://vue3-lo-form/./node_modules/vue-loader-v16/dist/exportHelper.js","webpack://vue3-lo-form/external \"dayjs\"","webpack://vue3-lo-form/external \"vue\"","webpack://vue3-lo-form/external \"@ant-design/icons-vue\"","webpack://vue3-lo-form/./src/constants/enum/cache-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-class.enum.ts","webpack://vue3-lo-form/external \"mathjs\"","webpack://vue3-lo-form/external \"ant-design-vue/es/date-picker/locale/zh_CN\"","webpack://vue3-lo-form/external \"localforage\"","webpack://vue3-lo-form/external \"moment\"","webpack://vue3-lo-form/./src/constants/enum/switch.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-field-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/builtIn-label.enum.ts","webpack://vue3-lo-form/./src/constants/enum/control-format-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-bus-attr.enum.ts","webpack://vue3-lo-form/./src/constants/enum/form-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/lateral-arrangement.enum.ts","webpack://vue3-lo-form/./src/constants/enum/money-unit.enum.ts","webpack://vue3-lo-form/./src/constants/enum/submitted-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/support-upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/upload-type.enum.ts","webpack://vue3-lo-form/./src/constants/enum/validate-rules.enum.ts","webpack://vue3-lo-form/./src/constants/enum/vertical-arrangement.enum.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue?8a96","webpack://vue3-lo-form/external \"tslib\"","webpack://vue3-lo-form/external \"core-js/modules/es.error.cause.js\"","webpack://vue3-lo-form/./src/components/form/StretchText.vue?7438","webpack://vue3-lo-form/./src/services/validate-generator.service.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://vue3-lo-form/./src/components/form/DvForm.vue?cafe","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://vue3-lo-form/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?b8ec","webpack://vue3-lo-form/./src/constants/config/form-template.config.ts","webpack://vue3-lo-form/./src/constants/encode-assets/svg.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-template-columns.filter.ts","webpack://vue3-lo-form/./src/filtres/generate-grid-column-end.filter.ts","webpack://vue3-lo-form/./src/services/api.service.ts","webpack://vue3-lo-form/./src/constants/config/storage.config.ts","webpack://vue3-lo-form/./src/services/clean-local-forage.service.ts","webpack://vue3-lo-form/./src/services/dict-local-forage.service.ts","webpack://vue3-lo-form/./src/services/form-bean-utils.service.ts","webpack://vue3-lo-form/./src/services/form-local-forage.service.ts","webpack://vue3-lo-form/./src/domain/DesForm.ts","webpack://vue3-lo-form/./src/domain/DesFormLayout.ts","webpack://vue3-lo-form/./src/services/form-tree-node-convert.service.ts","webpack://vue3-lo-form/./src/store/form.store.ts","webpack://vue3-lo-form/./src/store/dict.store.ts","webpack://vue3-lo-form/./src/constants/config/form.config.ts","webpack://vue3-lo-form/./src/services/router.service.ts","webpack://vue3-lo-form/./src/services/form-validate.service.ts","webpack://vue3-lo-form/./src/services/form-tools.service.ts","webpack://vue3-lo-form/./src/filtres/amount-capitalization.filter.ts","webpack://vue3-lo-form/./src/domain/DesFormControl.ts","webpack://vue3-lo-form/./src/domain/AbstractControl.ts","webpack://vue3-lo-form/./src/domain/FormControl.ts","webpack://vue3-lo-form/./src/domain/FormGroup.ts","webpack://vue3-lo-form/./src/filtres/extract-options.filter.ts","webpack://vue3-lo-form/./src/filtres/zoom-multiple.filter.ts","webpack://vue3-lo-form/./src/filtres/switch-enum-convert.filter.ts","webpack://vue3-lo-form/./src/components/form/StretchText.vue?2f7e","webpack://vue3-lo-form/./src/components/form/StretchText.vue","webpack://vue3-lo-form/./src/components/form/StretchText.vue?c6be","webpack://vue3-lo-form/./public/js/pinyin.ts","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue","webpack://vue3-lo-form/./src/components/form/DvFormLayout.vue?f9e6","webpack://vue3-lo-form/./src/services/date-format.service.ts","webpack://vue3-lo-form/./src/core/FormApi.ts","webpack://vue3-lo-form/./src/components/form/DvForm.vue","webpack://vue3-lo-form/./src/components/form/DvForm.vue?7a07","webpack://vue3-lo-form/./src/index.ts","webpack://vue3-lo-form/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js","webpack://vue3-lo-form/./src/constants/enum/zoom-type.ts"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","DynamicOptionType","GeneralDictionary","code","TreeDictionary","ValidateStatus","Success","Warning","Error","Validating","OptionType","Fixed","Dynamic","default","sfc","props","target","__vccOpts","val","CacheType","FORM","TABLE","DICT","FormFieldClass","Layout","icon","Base","Senior","Switch","Disable","Enable","FormFieldType","Input","type","Textarea","InputNumber","Select","Radio","Checkbox","TimePicker","DatePicker","Slider","Rate","Upload","Editor","Cascader","TreeSelect","Custom","Empty","Grid","BuiltLabel","ORDERED_LIST","ControlFormatType","GENERAL","AMOUNT_OF_MONEY","BANK_CARD_NUMBER","CELL_PHONE_NUMBER","LANDLINE_NUMBER","FormBusAttr","SUBMITTED_TYPE","IS_SUPPLEMENT","IS_KEY_ELEMENTS","IS_TRACK","FormType","Pc","Mobile","LateralArrangement","AlignLeft","RightAlignment","Center","BothSidesAreEquallySpaced","AlignBothEnds","MoneyUnit","Yuan","TenThousandYuan","HundredMillionYuan","SubmittedType","EAST","CITIC","TOTAL_ELEMENTS","PBC_CAPITAL_DECLARATION","ENTERPRISE_CREDIT_REFERENCE","OTOHAF_SUBMISSION","EAST_F","PERSONAL_CREDIT","BS_09","BS_10","BS_11","BS_12","BS_13","BS_14","BS_15","BS_16","BS_17","BS_18","BS_19","BS_20","BS_21","BS_22","BS_23","BS_24","BS_25","BS_26","BS_27","BS_28","BS_29","BS_30","SupportUploadType","Arbitrarily","UploadType","Jpeg","Png","Gif","Bmp","Doc","html","Mp3","Mp4","Pdf","Ppt","Xls","Xml","Zip","Wps","ValidateRules","SameValue","hasContent","hasDescribe","MailBox","RegEx","MinTextLength","MaxTextLength","MinValue","MaxValue","SpecifiedValue","SpecifiedDigitsNumber","DateNotEarlierThan","DateNoLaterThan","SpecifiedRangeNumber","PhoneNumber","Required","LineUnique","LetterSpace","AlphanumericUnderline","Alphanumeric","JsMethodVerification","BackEndVerification","LandlineNumber","VerticalArrangement","AlignRight","textAlign","AlignTop","ValidateGeneratorService","fillCheckRule","formControl","controlAttr","verificationRules","length","validates","forEach","item","validate","getBuiltInValidationRules","push","addValidate","ruleType","genSameValue","genMailBox","genRegEx","genMinTextLength","genMaxTextLength","genMinValue","genMaxValue","genSpecifiedValue","genSpecifiedDigitsNumber","genDateNotEarlierThan","genDateNoLaterThan","genSpecifiedRangeNumber","genPhoneNumber","genRequired","controlType","genLineUnique","genLetterSpace","genAlphanumericUnderline","genAlphanumeric","genJsMethodVerification","genBackEndVerification","genLandlineNumber","validateFunc","ruleContent","validateStatus","errorMsg","emreg","test","eval","describe","String","Number","undefined","countDecimals","Math","floor","toString","split","roundNumber","number","decimals","newString","round","numString","lastIndexOf","cutoff","d1","substring","d2","isNaN","roundedNum","decs","toDate","moment","e","indexOf","arr","reg","trim","Array","isArray","msg","func","Function","validateGeneratorService","window","currentScript","document","src","match","render","_ctx","_cache","$props","$setup","$data","$options","_ctx$desForm","_component_dv_form_layout","_resolveComponent","desForm","controls","_openBlock","_createElementBlock","ref","class","_normalizeClass","edit","styleMode","loFormTheme","_Fragment","_renderList","_createBlock","control","customFormats","linkList","onLinkClick","linkClick","index","onChange","$event","onFocus","onBlur","onClick","onAddonBefore","onAddonBeforeHandler","onAddonAfter","onAddonAfterHandler","onAddItem","selectAddItem","_createSlots","_","keys","$slots","propName","fn","_withCtx","slotProps","_renderSlot","content","_createCommentVNode","_typeof","obj","iterator","constructor","_toPrimitive","input","hint","prim","toPrimitive","res","TypeError","_toPropertyKey","arg","_defineProperty","toPropertyKey","configurable","writable","_withScopeId","_pushScopeId","_popScopeId","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_createElementVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_component_a_tooltip","_component_question_circle_outlined","_component_clock_circle_outlined","_component_a_timeline_item","_component_a_timeline","_component_a_popconfirm","_component_search_outlined","_component_a_textarea","_component_a_input_number","_component_a_menu_item","_component_a_menu","_component_down_outlined","_component_a_button","_component_a_dropdown","_component_a_popover","_component_v_nodes","_component_a_divider","_component_plus_outlined","_component_a_select_option","_component_a_select","_component_a_radio","_component_a_radio_group","_component_a_checkbox","_component_a_col","_component_a_row","_component_a_checkbox_group","_component_a_switch","_component_a_time_picker","_component_a_month_picker","_component_a_date_picker","_component_a_slider","_component_a_cascader","_component_a_tree_select","_component_a_rate","_component_upload_outlined","_component_a_upload","_component_stretch_text","_component_a_form_item","_component_a_form","formFieldClass","isHideControl","formFieldType","layoutName","layout","style","_normalizeStyle","emptyLayoutContainerStyle","subControls","parentControl","onFixFormLayout","onHideControl","scopedPropName","generalLayoutContainerStyle","width","divWidthCompatibleToIe","_createVNode","labelCol","labelSpanWidth","wrapperCol","controlSpanMaxWidth","controlSpanWidth","colon","labelAlign","required","validateResult","help","provideInjectData","boundProperty","isMobileBrowser","label","isHideTitle","isBoldTitle","color","titleColor","_toDisplayString","formFieldDescribe","submittedType","placement","title","submittedTypeStr","overlayClassName","submittedSvg","tips","history","dot","time","before","_createTextVNode","after","author","historySvg","_resolveDynamicComponent","inputShape","bindingPrefix","builtInFrontLabel","bindingSuffix","builtInPostLabel","placeholder","disabled","isNotEdit","autoCompleteOptions","onInput","rows","textareaRows","showCount","maxCharacterCount","maxlength","zoomType","automatic","moneyUnits","moneyUnitsIndentScale","tabindex","trigger","getPopupContainer","triggerNode","parentNode","body","step","min","minValue","max","maxValue","formatter","numberFormatter","parser","numberParser","precision","decimalPlaces","onInputNumberFocus","onInputNumberBlur","unit","overlay","handleMoneyUnitMenuClick","defaultMoneyUnit","numberPopoverVisible","amountCapitalization","zoomMultiple","isMultipleChoice","dropdownClassName","hiddenDropdown","showArrow","filterOption","dropdownRender","menuNode","menu","vnodes","canAddEntry","onMousedown","preventDefault","options","checkboxStyle","checked","onOpeningText","whenClosedText","locale","is12Hours","useMonthPicker","format","dateFormat","isShowHoliday","showTime","showPickerTime","dateRender","current","date","isRest","isWeekday","isRadingDay","renderExtraFooter","changeOnSelect","cascaderFilter","cascaderOptions","treeNodeFilterProp","maxHeight","overflow","treeSelectOptions","treeDefaultExpandAll","isTreeOpen","accept","uploadType","multiple","onRemove","handleRemove","beforeUpload","handleUploadChange","customFieldName","formatData","textFold","fieldKey","href","formTemplate","formId","appId","domainClassId","objectId","formType","formName","formAlias","formDescribe","useState","desDomainClass","desFormLayouts","layoutId","parentLayoutId","layoutType","gridSpace","gridColumnConfig","gridLateralArrangement","gridVerticalArrangement","layoutOrder","labelSpan","controlSpan","subDesFormLayout","desFormControls","desBusObject","SUBMITTED_SVG_XML","HISTORY_SVG_XML","FORM_ERROR_MODAL_SVG_XML","DROP_DOWN_LIST_SVG_XML","transform","configs","sort","a","b","order","join","generateGridTemplateColumns","generateGridColumnEnd","ApiService","createBasicHeaders","Accept","createAuthHeaders","accessToken","jti","Authorization","fetch","path","query","method","header","urlQueryConvert","headers","then","response","status","statusText","url","json","error","message","connectiveSymbol","idx","apiService","NAME","STORE_NAME","DICT_STORE_NAME","CleanLocalForageService","$app","config","globalProperties","$qlForm","init","formConfig","driver","sourceLocalForage","version","storeName","description","localForage","setItem","getItem","dropInstance","cleanLocalForageService","DictLocalForageService","dictLocalForageService","FormBeanUtilsService","copy","JSON","parse","stringify","str","formBeanUtilsService","FormLocalForageService","formLocalForageService","DesForm","formGroup","DesFormLayout","FormTreeNodeConvertService","arrayConvertToTreeNode","data","nodeContrast","parentId","nds","filter","children","id","treeNodeConvertToNzTreeNode","nzNodeContrast","isDisabledLeaf","nodes","node","isLeaf","selected","selectable","disableCheckbox","expanded","arrayConvertToNzTreeNode","treeNode","treeNodeConvertToCascaderOption","nzCascaderOptionContrast","loading","parent","nzTreeNodeConvertToMap","mapNodeOptions","arrayConvertToCascaderOption","treeNodeConvertToArray","childName","formTreeNodeConvertService","FormStore","setForms","FORMS","getForms","setVersion","VERSION","getVersion","formStore","DictStore","setDicts","nzTreeNodeOptions","DICTS","getDicts","setTreeDicts","TREE_DICTS","getTreeDicts","setMapDicts","MAP_DICTS","getMapDicts","setMapTreeDicts","MAP_TREE_DICTS","getMapTreeDicts","dictStore","DEFAULT_FORM_FILE_NAME","DEFAULT_DICT_FILE_NAME","DEFAULT_DICT_URL","RouterService","subapp","pushState","getPathFromUrl","getParamsFromUrl","parameter","urlParameterToParams","params","array","kv","decodeURIComponent","getParameterOfUrl","mark","routerService","FormValidateService","validateTips","formApis","scrollView","actualFormApis","allError","errMessage","formApi","errors","validateReport","concat","err","console","log","Modal","confirm","h","innerHTML","onOk","showErrorModal","okText","cancelText","_formApis$","_allError$","errorEl","getControlEl","getElementById","scrollTo","top","offsetTop","behavior","running","event","scrollTop","documentElement","calculationError","removeEventListener","showErrInput","addEventListener","el","count","interval","setInterval","opacity","clearInterval","formValidateService","FormToolsService","setSupHoliday","bool","supHoliday","setFormDisabledColor","setProperty","checkFirstLoadAndInitDesign","IS_FIRST_LOADED","Promise","resolve","all","initDesign","initDict","selectHolidays","designRes","dictRes","contextPath","localStorage","traddayList","weekdayList","workdayList","LOAD_SUCCESS","forms","formVersion","loadMode","desForms","loadDesign","cacheType","desCacheVersion","cacheVersionNumber","formUrl","storageAddress","resEx","LOAD_FAIL","urls","mergeUrlByType","mergeUrlByCacheId","downloadUrl","appIds","resp","_resp$data","_query$appIds","address","cacheVersionMap","_item$desCacheVersion","_query$appIds2","_resp$data2","_query$appIds3","_item$desCacheVersion2","cacheVersionId","mergeFetchDesign","newDesForms","newDesForm","formatDesForm","onlySimpleLoadConfig","createFileDownloadAuthorizationHeader","fetches","dicts","treeDicts","mapDicts","mapTreeDicts","dictVersion","dictUrl","sysDictDetailOptions","sysDictTreeDetailOptions","mapSysDictDetailOptions","mapSysDictTreeDetailOptions","loadDict","url1","dictRestLoadOnlyBody","dictRestLoadMode","toLocaleUpperCase","dictRestLoadBody","dictRestLoadHeaders","distUrl","mergeFetchDict","sysDictInfos","dictionaryFormatCollection","inidDictOptions","fetchDicts","dictInfos","newDictInfos","empObj","filterDist","dictId","sysDictInfo","dictCd","dictNm","dictTp","comDictKeyValues","it","dictDetailsContrast","nzDictDetailsContrastContrast","treeDictKeyValues","suprDicPk","dictTreeDetailsContrast","nzDictTreeDetailsContrastContrast","mapTreeNodeOptions","sourceDesForm","recursionFormatForm","sortControls","formFieldId","desFormControl","values","find","active","isPasswordBox","enableAutoComplete","isFixedRowHeight","thousandthPercentileFormat","isShowCapitalization","isLineFeedDisplay","optionConfig","generalDictionaryOptions","treeShapeOptions","isSupportMultiple","customUploadType","isSearchable","isClearButton","desFormLayout","layoutControl","controlA","controlB","x","y","tableFieldOrder","loadResource","initResource","reject","simple","responseType","formToolsService","currencyDigits","MAXIMUM_NUMBER","CN_ZERO","CN_ONE","CN_TWO","CN_THREE","CN_FOUR","CN_FIVE","CN_SIX","CN_SEVEN","CN_EIGHT","CN_NINE","CN_TEN","CN_HUNDRED","CN_THOUSAND","CN_TEN_THOUSAND","CN_HUNDRED_MILLION","CN_SYMBOL","CN_DOLLAR","DROP","CN_TEN_CENT","CN_CENT","CN_INTEGER","integral","decimal","outputCharacters","zeroCount","quotient","modulus","parts","digits","radices","bigRadices","prefix","substr","replace","divisor","num","DesFormControl","extendBoundPropertyOne","extendBoundPropertyTwo","fieldDefaultValue","titleWidth","controlWidth","initRowHeight","formatType","moneyUnit","defineOptionalUnits","defineOptionalUnitsDefault","isOptionType","dynamicOptionType","generalDictionary","treeShape","disableNonLeafNodes","timeFormat","maxUploadNumber","limitSize","supportUploadType","extendUploadType","attachmentExtendProperties","onOpeningValue","whenClosedValue","busAttr","itemWidth","AbstractControl","FormControl","formState","super","setValue","findIndex","removeValidate","splice","getValidate","result","text","textNoticeCallback","FormGroup","addControl","removeControl","transformReverse","extractOptions","args","storageOptions","encode","_getCurrentInstance","proxy","getCurrentInstance","mathjs","$mathjs","ZoomType","enlarge","evaluate","notation","narrow","switchEnumFiled","attribute","defaultVal","switchEnum","switchEnumConvert","unfold","ifOver","StretchText","Vue","mounted","onContentHandle","$emit","spanBox","offsetHeight","textBox","__decorate","Prop","Ref","Watch","Options","__exports__","char_dict","full_dict","polyphone","checkPolyphone","charcase","pinYin","getFullChars","RegExp","len","ch","unicode","charCodeAt","_getFullChar","toLocaleLowerCase","getCamelChars","chars","charAt","_getChar","_getResult","_capitalize","first","toUpperCase","spare","strlen","j","swap1","slice","swap2","k","DvFormLayout","onDefaultMoneyUnitHandler","newVal","onValidationFeedbackHandle","onFormValidateStateResetMarkHandle","$nextTick","initFormControlData","_this$control","_this$parentControl","verificationRule","controlFormatType","replaceUnit","parentControlAttr","toLowerCase","items","cascaderRecursion","treeSelectRecursion","hasFeedback","metaRefresh","context","countDecimalPlaces","option","dayjs","cascaderContextRecursion","treeSelectContextRecursion","customFormat","display","repeat","hasDot","includes","intPart","decimalPart","pureNumStr","parseFloat","factor","pow","rounded","toFixed","roundedDecimal","inputValue","some","currentIndex","cascaderOption","currentText","subText","subTitle","widthCompatibleMode","ActiveXObject","isIe","configIndex","proportion","total","ratio","_this$control2","gridTemplateColumns","_this$parentControl2","_this$control3","gridColumnEnd","mobileRegex","tabletRegex","userAgent","navigator","isMobile","isTablet","Date","attrSubmittedType","map","submittedTypeCheckedNode","clearNoNum","validateNumBeyondLimit","pureNumber","file","newFileList","fileList","_event$formControl","calDate","DateTime","$d","year","getFullYear","month","getMonth","strDate","getDate","Inject","immediate","filters","components","PlusOutlined","Form","FormItem","AutoComplete","Option","displayName","OptGroup","RadioGroup","CheckboxGroup","Tooltip","InputPassword","Popover","Popconfirm","Timeline","TimelineItem","Dropdown","Menu","Item","Button","Divider","MonthPicker","Row","Col","VNodes","attrs","QuestionCircleOutlined","ClockCircleOutlined","DownOutlined","UploadOutlined","SearchOutlined","DateFormatService","formatDateTime","dayMap","day","getDay","week","hours","getHours","minutes","getMinutes","seconds","getSeconds","dateSizeCompare","startTime","endTime","getTime","Attribute","FormApi","getUuid","dvForm","DvForm","apiMetaRefresh","generateData","oldVal","contrast","jsonToFormData","setFormData","srcData","isDefault","setFormDataInner","setTimeout","getControl","showError","subControl","getValue","decodeData","setControlValue","resetValue","getText","getOptions","setOptions","setControlOptions","getAttribute","setAttribute","setControlAttribute","validateName","removeAllValidates","getValidates","setRequiredValidate","setValidate","isCover","setValidateInner","validateReports","refreshFeedback","refreshCheckFeedbackFlag","refreshValidate","resetFormValidateState","formValidateStateResetMark","setFormatDisplayAndOutput","refreshAndUpdateData","onRefreshArgumentsHandler","els","getElementsByClassName","checkHasUploadControl","abstractControl","judge","formData","FormData","File","append","setFieldChangeHistory","fieldChangeHistory","propertyName","aTime","bTime","hideLayout","nowDateStr","FieldDefaultValue","IsOptionType","OptionConfig","isFinal","output","hexDigits","random","uuid","objectA","objectB","fieldInfoArr","changeLog","handlerFlag","getChangedInfo","oldValue","newValue","fieldInfo","field_cd","field_nm","field_key","newDict","translateDictionaries","field_value","is_change","field_old_key","oldDict","field_old_value","oldName","newName","flag","getFormSubmittedType","form","strArr","list","subControlsList","submittedTypeList","IsHideControl","handleSubmittedData","codeArr","submittedData","getSubmittedType","DyForm","onPropFormValidateStateResetHandler","_provided","onPropHandler","win","themes","formTheme","$loFormTheme","_this$formLimits","formLimitObj","formLimits","created","initDesForm","onFormIdChanged","onSrcDesFormChanged","isReset","model","analysisBindingObjects","_this$formApi","generateFormGroup","initControlForm","generateFormApi","fixFormLayout","formView","$refs","cons","offsetLeft","clientWidth","con1","con2","models","objectExtraction","objectMerge","findDictOptions","propertys","lastMd","md","defaultValue","securityValue","subTtems","subValue","modelX","modelY","group","subFormGroup","_control$controlAttr","findFormControlByProperty","formLimit","loFormLimit","_controlAttr$verifica","isHide","requiredIndex","isMustFill","currentFormGroup","formObject","Boolean","Provide","install","app","installed","component","dictUrls","$formToolsService","mathjsDependencies","formatDependencies","subtractDependencies","multiplyDependencies","evaluateDependencies","addDependencies","divideDependencies","VueLoForm"],"mappings":"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S,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,MAAO,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,IAAK,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,MAAO,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,KAAM,MAAS,OAC57Kxf,GAAe,CACnByf,gBAAgB,EAChBC,SAAU,WAENC,GAAS,CAEbC,aAAezX,IACb,IACIhoB,EADAy8B,EAAS,GAEb,IAAKzU,EACH,OAAOyU,EAEG,IAAIiD,OAAO,iBACvB,IAAK,IAAIjgC,EAAI,EAAGkgC,EAAM3X,EAAI1c,OAAQ7L,EAAIkgC,EAAKlgC,IAAK,CAC9C,MAAMmgC,EAAK5X,EAAIkS,OAAOz6B,EAAG,GACvBogC,EAAUD,EAAGE,WAAW,GACtBD,EAAU,OAASA,EAAU,MAC/BpD,GAAUmD,GAEV5/B,EAAOw/B,GAAOO,aAAaH,IACd,IAAT5/B,IACFy8B,GAAUz8B,IAIhB,OAAOy8B,EAAOuD,qBAGhBC,cAAgBjY,IACd,GAAmB,kBAARA,EACT,MAAO,IAET,MAAMkY,EAAQ,GACd,IAAK,IAAIzgC,EAAI,EAAGkgC,EAAM3X,EAAI1c,OAAQ7L,EAAIkgC,EAAKlgC,IAAK,CAE9C,MAAMmgC,EAAK5X,EAAImY,OAAO1gC,GAEtBygC,EAAMt0B,KAAK4zB,GAAOY,SAASR,IAG7B,OAAOJ,GAAOa,WAAWH,GAAOF,qBAGlCD,aAAe/X,IACb,IAAK,MAAMhnB,KAAOo+B,GAChB,IAAK,IAAMA,GAAUp+B,GAAKsO,QAAQ0Y,GAChC,OAAOwX,GAAOc,YAAYt/B,GAI9B,OAAO,GAGTs/B,YAActY,IACZ,GAAIA,EAAI1c,OAAS,EAAG,CAClB,MAAMi1B,EAAQvY,EAAIkS,OAAO,EAAG,GAAGsG,cACzBC,EAAQzY,EAAIkS,OAAO,EAAGlS,EAAI1c,QAChC,OAAOi1B,EAAQE,IAGnBL,SAAWR,IACT,MAAMC,EAAUD,EAAGE,WAAW,GAE9B,OAAID,EAAU,OAASA,EAAU,MAAcD,EAE1C/f,GAAQyf,gBACND,GAAUQ,GAAWR,GAAUQ,GADFV,GAAUgB,OAAON,EAAU,QAGjEQ,WAAaH,IACX,IAAKrgB,GAAQyf,eAAgB,OAAOY,EAAMzb,KAAK,IAC/C,IAAIgY,EAAS,CAAC,IACd,IAAK,IAAIh9B,EAAI,EAAGkgC,EAAMO,EAAM50B,OAAQ7L,EAAIkgC,EAAKlgC,IAAK,CAChD,MAAMuoB,EAAMkY,EAAMzgC,GAChBihC,EAAS1Y,EAAI1c,OACf,GAAe,IAAXo1B,EACF,IAAK,IAAIC,EAAI,EAAGA,EAAIlE,EAAOnxB,OAAQq1B,IACjClE,EAAOkE,IAAM3Y,MAEV,CACL,MAAM4Y,EAAQnE,EAAOoE,MAAM,GAC3BpE,EAAS,GACT,IAAK,IAAIkE,EAAI,EAAGA,EAAID,EAAQC,IAAK,CAE/B,MAAMG,EAAQF,EAAMC,MAAM,GAE1B,IAAK,IAAIE,EAAI,EAAGA,EAAID,EAAMx1B,OAAQy1B,IAChCD,EAAMC,IAAM/Y,EAAImY,OAAOQ,GAGzBlE,EAASA,EAAOjP,OAAOsT,KAI7B,OAAOrE,IAGI+C,UCXf,IAAqBwB,GAArB,cAA0C1C,SAAG3qB,eAAAspB,GAAA,SAAAA,GAAA5oB,EAAA,cAClC6L,MAAQ7L,EAAA,oBACF0P,GAAmB1P,EAAA,kBACrB2P,GAAiB3P,EAAA,6BAEP,GAAOA,EAAA,sBACG,IAAIA,EAAA,2BACnBA,EAAA,wBACM,IAAIA,EAAA,gBACjBopB,QAAUppB,EAAA,kBACR1P,QAAY0P,EAAA,mBACNwc,aAAavJ,QAAQ,gBAAkBO,KAAKE,UAAU,KAAK1T,EAAA,mBAC3Dwc,aAAavJ,QAAQ,gBAAkBO,KAAKE,UAAU,KAAK1T,EAAA,mBAC3Dwc,aAAavJ,QAAQ,gBAAkBO,KAAKE,UAAU,KAAK1T,EAAA,4BACvD0K,IAAsB1K,EAAA,oBAC9B2K,IAAY3K,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,6BAAAA,EAAA,6BAAAA,EAAA,wBAY0CA,EAAA,iCAAAA,EAAA,sBAEjCrR,QAAgBqR,EAAA,qBACjB7Q,QAdnC6b,aAAa3e,EAAY+K,GACvB,QAAKA,EAAK6P,QAGH7P,EAAK6P,MAAMhM,QAAQ5O,IAAU,GAAK8+B,GAAOS,cAAcx0B,EAAK6P,OAAOhM,QAAQ5O,IAAU,GAAK8+B,GAAOC,aAAah0B,EAAK6P,OAAOhM,QAAQ5O,IAAU,GAarJugC,0BAA0BC,GACxB,GAAmB,MAAfA,EAAOt/B,KACT,OAAQs/B,EAAOt/B,MACb,KAAKqE,OAAUC,KAAKtE,KACjBvC,KAAK+L,YAA+B4T,aAAe,EACpD,MACF,KAAK/Y,OAAUE,gBAAgBvE,KAC5BvC,KAAK+L,YAA+B4T,aAAe,IACpD,MACF,KAAK/Y,OAAUG,mBAAmBxE,KAC/BvC,KAAK+L,YAA+B4T,aAAe,IACpD,OAYRmiB,6BACE9hC,KAAKmb,eAAiBnb,KAAK8L,YAAYO,WASzC01B,qCACE/hC,KAAKmb,eAAiB,GAOxBxI,UAAUyW,GACRppB,KAAKo/B,MAAM,YAAahW,GAI1B/O,gBACEra,KAAKgiC,UAAU,KACbhiC,KAAKo/B,MAAM,mBAQf,iBACE,OAAKp/B,KAAK+L,YAA+BkrB,cAChC,mBACGj3B,KAAK+L,YAA+BmrB,mBACvC,kBAEA,UASX,kBACE,OAAIl3B,KAAKuS,SAAWvS,KAAKuS,QAAQzG,aAE/B9L,KAAKiiC,sBACEjiC,KAAKuS,QAAQzG,aAEf,IAAI8wB,GAQb,kBAAe,IAAAsF,EACb,OAAmB,QAAnBA,EAAOliC,KAAKuS,eAAO,IAAA2vB,OAAA,EAAZA,EAAcn2B,YAQvB,wBAAqB,IAAAo2B,EACnB,OAAyB,QAAzBA,EAAOniC,KAAKma,qBAAa,IAAAgoB,OAAA,EAAlBA,EAAoBp2B,YAQ7B,aACE,IAAK,MAAM6H,KAAY9S,OAAO4S,KAAKlI,QACjC,GAAKA,OAA4BoI,GAAU,UAAa5T,KAAK+L,YAA8BoY,wBACzF,OAAQ3Y,OAA4BoI,GAAU,SAGlD,OAAOpI,OAAoBC,WAAWpK,MAQxC,4BACE,OAAOrB,KAAKuS,QAASzG,aAAe9L,KAAKuS,QAASzG,YAAYzK,MAAQrB,KAAKuS,QAASzG,YAAYzK,MAAM4K,OAAS,EAQjH,wBACE,MAAMF,EAA8B/L,KAAK+L,YACzC,GAAIA,EAAYC,mBAAqBD,EAAYC,kBAAkBC,OAAS,EAAG,CAC7E,MAAMm2B,EAAwBr2B,EAAYC,kBAAkB+qB,KAAM3qB,GAAcA,EAAKK,WAAazC,OAAcO,cAAchI,MAC9H,GAAwB,MAApB6/B,GAA4BA,EAAiBn0B,YAC/C,OAAOQ,OAAO2zB,EAAiBn0B,cAWrC,sBACE,MAAMlC,EAAmB/L,KAAK+L,YACxBs2B,EAA4Bt2B,EAAYyvB,WAAazvB,EAAYyvB,WAAah2B,OAAkBC,QAAQlD,KAC9G,OAAQlB,IACN,IAAIiC,OAAoBoL,GAATrN,EAAqBmN,OAAOnN,GAAS,GACpD,OAAQghC,GACN,KAAK78B,OAAkBC,QAAQlD,KAC/B,KAAKiD,OAAkBE,gBAAgBnD,KAarC,OAZI8/B,IAAsB78B,OAAkBE,gBAAgBnD,MAAe,MAAPe,GAAeyI,EAAYqrB,6BAG3F9zB,EADEA,EAAI2M,QAAQ,MAAQ,GAChB,GAAG3M,GAAMyL,MAAM,KAAK,GAAG+rB,QAAQ,wBAAyB,KAAO,KAAM,GAAGx3B,GAAMyL,MAAM,KAAK,IAEzF,GAAGzL,GAAMw3B,QAAQ,wBAAyB,MAGhD/uB,EAAY+R,WAAasgB,OAASrgB,UAAUxb,MAAe,MAAPe,GAAsB,IAAPA,GAAayI,EAAYsT,OAE9F/b,EAAM,GAAGA,GAEJA,EACT,KAAKkC,OAAkBG,iBAAiBpD,KAItC,OAHW,MAAPe,IACFA,EAAMA,EAAIw3B,QAAQ,QAAS,IAAIA,QAAQ,iBAAkB,QAEpDx3B,EACT,KAAKkC,OAAkBI,kBAAkBrD,KACvC,GAAW,MAAPe,EAAa,CACfA,EAAMA,EAAIw3B,QAAQ,MAAO,IAAID,OAAO,EAAG,IACvC,MAAMyF,EAAMh9B,EAAI2I,OACZq0B,EAAM,GAAKA,EAAM,EACnBh9B,EAAMA,EAAIw3B,QAAQ,YAAa,OACtBwF,GAAO,IAChBh9B,EAAMA,EAAIw3B,QAAQ,mBAAoB,WAG1C,OAAOx3B,EACT,KAAKkC,OAAkBK,gBAAgBtD,KACrC,OAAOe,EACT,QACE,OAAOjC,IAWf,mBACE,MAAM0K,EAAmB/L,KAAK+L,YACxB+R,EAAmB/R,EAAYyvB,WAAazvB,EAAYyvB,WAAah2B,OAAkBC,QAAQlD,KACrG,OAAQlB,IACN,IAAIiC,EAAWjC,EACf,OAAQyc,GACN,KAAKtY,OAAkBC,QAAQlD,KAC/B,KAAKiD,OAAkBE,gBAAgBnD,KAIrC,GAHIub,IAAatY,OAAkBE,gBAAgBnD,MAAe,MAAPe,GAAeyI,EAAYqrB,6BACpF9zB,EAAMA,EAAIw3B,QAAQ,cAAe,KAE/B/uB,EAAY+R,WAAasgB,OAASrgB,UAAUxb,MAAe,MAAPe,GAAsB,IAAPA,GAAayI,EAAYsT,KAAM,CACpG,MAAMijB,EAAwBv2B,EAAYsT,KAAKtQ,MAAM,IACrDuzB,EAAYn2B,QAASC,IACnB9I,EAAMA,EAAIw3B,QAAQ1uB,EAAM,MAG5B,OAAO9I,EACT,KAAKkC,OAAkBG,iBAAiBpD,KACxC,KAAKiD,OAAkBI,kBAAkBrD,KAIvC,OAHW,MAAPe,IACFA,EAAMA,EAAIw3B,QAAQ,MAAO,KAEpBx3B,EACT,KAAKkC,OAAkBK,gBAAgBtD,KACrC,OAAOe,EACT,QACE,OAAOA,IAWf,qBACE,MAAMyI,EAA8B/L,KAAK+L,YACnCw2B,EAAmCviC,KAAKuiC,kBAC9C,OAAIviC,KAAKub,kBACA,QAELxP,EAAYsvB,WACPtvB,EAAYsvB,WACVkH,EAAkBle,UACpBke,EAAkBle,UAElBrkB,KAAKqb,kBAAkBgJ,UASlC,YACE,OAAOrkB,KAAKqb,kBAAkBL,MAQhC,0BACE,MAAMjP,EAA8B/L,KAAK+L,YACnCw2B,EAAmCviC,KAAKuiC,kBAC9C,OAAIx2B,EAAYuvB,aACPvvB,EAAYuvB,aACViH,EAAkBje,YACpBie,EAAkBje,YAChBtkB,KAAKqb,kBAAkBiJ,YACzBtkB,KAAKqb,kBAAkBiJ,YAEvB,OASX,uBACE,MAAMvY,EAA8B/L,KAAK+L,YACnCw2B,EAAmCviC,KAAKuiC,kBAC9C,OAAIx2B,EAAYuvB,aACPvvB,EAAYuvB,aACViH,EAAkBje,YACpBie,EAAkBje,YAChBtkB,KAAKqb,kBAAkBiJ,YACzBtkB,KAAKqb,kBAAkBiJ,YAEvB,OASX,iBACE,IAAK,MAAM1Q,KAAY9S,OAAO4S,KAAKlI,QACjC,GAAKA,OAA4BoI,GAAU,UAAa5T,KAAK+L,YAA8BoY,wBACzF,OAAQ3Y,OAA4BoI,GAAU,aAGlD,OAAOpI,OAAoBC,WAAWC,UAQxC,iBACE,MAAMsS,EAAoB,GACpByd,EAAmB7S,GAAqBH,MAAOzoB,KAAK+L,YAA+B0vB,WAYzF,OAXKz7B,KAAK+L,YAA+B0vB,WACvC36B,OAAOg2B,OAAOlwB,QAAWuF,QAASC,KACuB,IAAnDqvB,EAAUuB,UAAW/G,GAAOA,IAAO7pB,EAAK7J,OAC1Cyb,EAAWzR,KAAKH,KAKlB4R,GAAcA,EAAW/R,OAAS,IACpCjM,KAAKwf,iBAAmBxB,EAAW,IAE9BA,EAQT,4BACE,MAAMyd,EAAiBz7B,KAAKwf,iBAC5B,OAAiB,MAAbic,GAAqBA,EAAUl5B,KAC1BkM,OAAOgtB,EAAUl5B,MAEnB,EAQT,cACE,OAAOo7B,GAAe39B,KAAK+L,aAQ7B,qBACE,MAAMkV,EAAmBjhB,KAAK+L,YAA+BkV,WAC7D,SAAIA,GAA2C,YAA7BA,EAAWuhB,eAW/B,sBACE,MAAMnhC,EAAerB,KAAKwgB,QAC1B,IAAIA,EAAiB,GACrB,GAAInf,GAASA,EAAM4K,OAAS,EAAG,CAC7B,MAAMw2B,EAAQ7Z,GAAqBL,KAAKlnB,GACxCmf,EAAUxgB,KAAK0iC,kBAAkBD,GAEnC,OAAOjiB,EAQT,wBACE,MAAMnf,EAAerB,KAAKwgB,QAE1B,GADA6N,QAAQC,IAAIjtB,GACRA,GAASA,EAAM4K,OAAS,EAAG,CAC7B,MAAMw2B,EAAQ7Z,GAAqBL,KAAKlnB,GAExC,OADArB,KAAK2iC,oBAAoBF,GAClBA,EAET,MAAO,GAQT,gBACE,QAAUziC,KAAK+L,YAA+BkwB,YAAej8B,KAAK+L,YAA+BkwB,WAAWhsB,QAAQ,OAAS,EAQ/H,kBACE,OAAoC,MAA7BjQ,KAAKuS,QAASzG,aAAuB9L,KAAKuS,QAASzG,YAAaI,WAAalM,KAAKuS,QAASzG,YAAaI,UAAUD,OAAS,EAQpI,eACE,SAAIjM,KAAK4iC,cAA6I,IAA9H5iC,KAAKuS,QAASzG,YAAaI,UAAU8wB,UAAW5wB,GAAcoC,OAAOpC,EAAKzL,QAAU6N,OAAOxE,OAAcgB,SAASzI,QAW5I,iBACEvC,KAAK6iC,YAAc7iC,KAAKqb,kBAAkBwnB,YAC1C,IAEIriB,EACAsiB,EAHAx/B,EAAM,GACN8lB,EAAYppB,KAAKuS,QAASzG,YAAazK,MAG3C,MAAM0K,EAA8B/L,KAAK+L,YACzC,OAAQ/L,KAAKuS,QAAShQ,MACpB,KAAK4B,OAAcC,MAAM7B,KACnBwJ,EAAYiR,gBACd1Z,GAAOyI,EAAYiR,eAErB1Z,GAAO8lB,GAAQ,GACXrd,EAAYmR,gBACd5Z,GAAOyI,EAAYmR,eAErBkM,EAAO9lB,EACP,MACF,KAAKa,OAAcI,YAAYhC,KAK7B,GAJIvC,KAAK8e,kBACPsK,EAAOppB,KAAK8e,gBAAgBsK,IAG1BA,QAAqC1a,GAA7B3C,EAAYmT,eAAqE,KAAtCnT,EAAYmT,cAA8B,CAC/F,IAAItM,GACsB,GAAtBwW,EAAKnZ,QAAQ,MACf2C,EAAQ7G,EAAYmT,cACpBkK,GAAQ,KAERxW,EAAQ7G,EAAYmT,eAAiBkK,EAAKnd,OAAS,EAAImd,EAAKnZ,QAAQ,MAEtE,IAAK,IAAI7P,EAAI,EAAGA,EAAIwS,EAAOxS,IACzBgpB,GAAQ,IAEVA,EAAOppB,KAAK+iC,mBAAmB3Z,EAAMrd,EAAYmT,eAOnD,OAJInT,EAAY+R,WAAasgB,OAASrgB,UAAUxb,MAAgB,MAAR6mB,GAAwB,IAARA,GAAcrd,EAAYsT,OAChG+J,EAAOA,EAAK0R,QAAQ/uB,EAAYsT,KAAM,KAGjC+J,EACT,KAAKjlB,OAAcK,OAAOjC,KAC1B,KAAK4B,OAAcM,MAAMlC,KACvB,GAAY,MAAR6mB,GAAgB/Y,MAAMC,QAAQ8Y,GAAO,CACvC,MAAM0Z,EAAoB,GAQ1B,OAPA9iC,KAAKwgB,QAAQuW,KAAM3qB,IACjB,IAAK,IAAIhM,EAAI,EAAGA,EAAIgpB,EAAKnd,OAAQ7L,IAC3BgM,EAAK/K,QAAU+nB,EAAKhpB,IACtB0iC,EAAQv2B,KAAKH,EAAK6P,SAIjB6mB,EAAQ1d,KAAK,KACf,CACL,MAAM4d,EAAShjC,KAAKwgB,QAAQuW,KAAM3qB,GAASA,EAAK/K,QAAU+nB,GAC1D,OAAO4Z,EAASA,EAAO/mB,MAAQ,GAEnC,KAAK9X,OAAcO,SAASnC,KAU1B,OATAie,EAAU4I,GAAQ,GAClB0Z,EAAU,GACVtiB,EAAQrU,QAAS8pB,IACfj2B,KAAKwgB,QAAQuW,KAAM3qB,IACbA,EAAK/K,QAAU40B,GACjB6M,EAAQv2B,KAAKH,EAAK6P,WAIjB6mB,EAAQ1d,KAAK,OACtB,KAAKjhB,OAAcH,OAAOzB,KACxB,YAAamM,IAAT0a,GACW,IAATA,QAA+C1a,GAA9B3C,EAAYwwB,gBAA8D,KAA/BxwB,EAAYwwB,eACnExwB,EAAYwwB,gBACD,IAATnT,QAAiD1a,GAA/B3C,EAAYywB,iBAAgE,KAAhCzwB,EAAYywB,gBAC5EzwB,EAAYywB,gBAEZpT,EAAO,IAAM,IAGjB,GACT,KAAKjlB,OAAcQ,WAAWpC,KAC5B,OAAY,MAAR6mB,EACK6Z,KAAM7Z,GAAMpI,OAAOjV,EAAYkwB,YAAc,YAE/C,GACT,KAAK93B,OAAcS,WAAWrC,KAC5B,OAAY,MAAR6mB,EACK6Z,KAAM7Z,GAAMpI,OAAOjV,EAAYkV,YAAc,cAE/C,GACT,KAAK9c,OAAcc,SAAS1C,KAC1B,OAAY,MAAR6mB,EACKppB,KAAKkjC,yBAAyB9Z,EAAMppB,KAAK8hB,iBAE3C,GACT,KAAK3d,OAAce,WAAW3C,KAC5B,OAAY,MAAR6mB,EACKppB,KAAKmjC,2BAA2B/Z,EAAMppB,KAAKkiB,mBAE7C,GACT,KAAK/d,OAAcgB,OAAO5C,KACxB,GAAIvC,KAAKwS,eAAiBxS,KAAKwS,cAAczG,EAAY6W,iBAAkB,CACzE,MAAMwgB,EAA6BpjC,KAAKwS,cAAczG,EAAY6W,iBAClE,GAAIwgB,GAAgBA,EAAaC,QAC/B,OAAOD,EAAaC,QAAQja,EAAMrd,IAI1C,OAAOqd,EAQT2Z,mBAAmB3Z,EAAuBlK,GAExC,MAAMub,EAAsB,OAAbvb,QAAa,IAAbA,IAAiB,EAC1ByJ,EAAMna,OAAO4a,GAAMhZ,OACzB,IAAKuY,EAAK,OAAO8R,EAAS,EAAI,KAAK,IAAI6I,OAAO7I,GAAY,IAG1D,MAAM8I,EAAS5a,EAAI6a,SAAS,KACtBC,EAAUF,EAAS5a,EAAI5Z,MAAM,KAAK,GAAK4Z,EACvC+a,EAAcH,EAAS5a,EAAI5Z,MAAM,KAAK,GAAK,GAG3C40B,EAAaF,EAAQ3I,QAAQ,KAAM,KAAOyI,EAAS,IAAMG,EAAc,IACvE1I,EAAM4I,WAAWD,GACvB,GAAIh0B,MAAMqrB,GAAM,OAAOyI,GAAWhJ,EAAS,EAAI,IAAI,IAAI6I,OAAO7I,GAAY,IAG1E,MAAMoJ,EAASj1B,KAAKk1B,IAAI,GAAIrJ,GACtBsJ,GAAWn1B,KAAKQ,MAAM4rB,EAAM6I,GAAUA,GAAQG,QAAQvJ,IAGrD,CAAEwJ,EAAiB,IAAMF,EAAQh1B,MAAM,KAG9C,OAAI0rB,GAAU,EAAUgJ,EACjB,GAAGA,KAAWQ,IAQvB,iBACE,MAAMl4B,EAAc/L,KAAK+L,YACzB,GAAIA,EAAYqwB,oBAAsBrzB,OAAkBC,YAAYzG,KAE7D,OAAIwJ,EAAYqwB,oBAAsBrzB,OAAkB5D,OAAO5C,KAC7DwJ,EAAY4rB,sBADd,EAWTpkB,cAAckc,GACZzvB,KAAKo/B,MAAM,WAAY3P,GAkBzB5N,eAAeqiB,EAAiBne,GAC9B,OAAOA,EAAKoe,KAAMnB,GAAgBA,EAAOxnB,MAAMgnB,cAAcvyB,QAAQi0B,EAAW1B,gBAAkB,GAQpGG,oBAAoBF,GAClB,MAAMjiB,EAAiB,GAWvB,OAVAiiB,EAAMt2B,QAASC,IACbA,EAAKiR,UAAW,EAChBjR,EAAKzK,IAAMyK,EAAK/K,MACZ+K,EAAKqd,UAAYrd,EAAKqd,SAASxd,OAAS,IACY,MAAjDjM,KAAK+L,YAAoBiwB,sBAC5B5vB,EAAKiR,UAAW,GAElBrd,KAAK2iC,oBAAoBv2B,EAAKqd,aAG3BjJ,EAQTkiB,kBAAkBD,GAChB,MAAMjiB,EAAiB,GAcvB,OAbAiiB,EAAMt2B,QAASC,IACb,MAAM42B,EAAc,CAClB3hC,MAAO+K,EAAK/K,MACZma,MAAOpP,EAAK6P,MACZ+N,QAAQ,GAEVxJ,EAAQjU,KAAKy2B,GACT52B,EAAKqd,UAAYrd,EAAKqd,SAASxd,OAAS,EAC1C+2B,EAAOvZ,SAAWzpB,KAAK0iC,kBAAkBt2B,EAAKqd,UAE9CuZ,EAAOhZ,QAAS,IAGbxJ,EAQT0iB,yBAAyB5/B,EAAYwe,EAAwBlP,EAAQ,GACnE,GAAItP,GAAOA,EAAI2I,OAAS,GAAK6V,GAAmBA,EAAgB7V,OAAS,GACnE3I,EAAI2I,OAAS2G,EAAO,CACtB,MAAMwxB,EAAe9gC,EAAIsP,GACnByxB,EAAiBviB,EAAgBiV,KAAM3qB,GAASA,EAAK/K,QAAU+iC,GACrE,GAAsB,MAAlBC,EAAwB,CAC1B,IAAIC,EAAcD,EAAe7oB,MACjC,GAAIlY,EAAI2I,OAAS2G,EAAQ,EAAG,CAC1B,MAAM2xB,EAAUvkC,KAAKkjC,yBAAyB5/B,EAAK+gC,EAAe5a,SAAU7W,EAAQ,GACpF0xB,GAAe,MAAQC,EAEzB,OAAOD,GAIb,MAAO,GASTnB,2BAA2B7/B,EAAa4e,GACtC,GAAI5e,GAAO4e,GAAqBA,EAAkBjW,OAAS,EACzD,IAAK,IAAI7L,EAAI,EAAGA,EAAI8hB,EAAkBjW,OAAQ7L,IAAK,CACjD,GAAI8hB,EAAkB9hB,GAAGiB,QAAUiC,EACjC,OAAO4e,EAAkB9hB,GAAG6b,MACvB,GAAIiG,EAAkB9hB,GAAGqpB,UAAYvH,EAAkB9hB,GAAGqpB,SAASxd,OAAS,EAAG,CACpF,MAAMu4B,EAAmBxkC,KAAKmjC,2BAA2B7/B,EAAK4e,EAAkB9hB,GAAGqpB,UACnF,GAAI+a,EACF,OAAOA,GAKf,MAAO,GAQT,WACE,QAASxkC,KAAKqb,kBAAkBopB,uBAAyB9zB,OAAO+zB,eAAiB,kBAAmB/zB,OAQtG,6BACE,GAAI3Q,KAAK2kC,KAAM,CACb,MAAM7M,EAA+B93B,KAAKuiC,kBACpCqC,EAAsB5kC,KAAK4S,MAASklB,EAAc7T,iBAAiBhY,OACnE44B,EAAqB/M,EAAc7T,iBAAiB2gB,GAAavjC,MACvE,IAAIyjC,EAAQ,EACZhN,EAAc7T,iBAAiB9X,QAASC,IACtC04B,GAASr2B,OAAOrC,EAAK/K,SAEvB,MAAM0jC,EAAQF,EAAaC,EACrBxhC,EAAsB,IAAhBmL,OAAOs2B,GACnB,MAAO,SAASzhC,YAEhB,MAAO,OASX,gCACE,IAAIyW,EAAa,GACjB,GAAI/Z,KAAKub,kBACP,MAAO,CAAE8nB,QAAS,OAAQ,iBAAkB,UAE9C,GAAIrjC,KAAK2kC,KACP5qB,EAAQ,CAAEspB,QAAS,OAAQ,YAAa,YACnC,KAAA2B,EACL,MAAMC,EAA2B5f,EAAyC,QAAd2f,EAAEhlC,KAAKuS,eAAO,IAAAyyB,GAA+B,QAA/BA,EAAZA,EAAcj5B,mBAA6B,IAAAi5B,OAAA,EAA3CA,EAA6C/gB,kBAC3GlK,EAAQ,CAAE,wBAAyBkrB,GAErC,OAAOlrB,EAQT,kCACE,IAAIA,EAAa,GACjB,GAAI/Z,KAAKub,kBACP,MAAO,CAAE8nB,QAAS,OAAQ,iBAAkB,UAE9C,GAAIrjC,KAAK2kC,KACP5qB,EAAQ,CAAEspB,QAAS,OAAQ,YAAa,YACnC,KAAA6B,EAAAC,EACL,MAAMC,EAAqB9f,EAAyC,QAApB4f,EAAEllC,KAAKma,qBAAa,IAAA+qB,GAA+B,QAA/BA,EAAlBA,EAAoBn5B,mBAA6B,IAAAm5B,OAAA,EAAjDA,EAAmDjhB,kBAC/FghB,EAA2B5f,EAAyC,QAAd8f,EAAEnlC,KAAKuS,eAAO,IAAA4yB,GAA+B,QAA/BA,EAAZA,EAAcp5B,mBAA6B,IAAAo5B,OAAA,EAA3CA,EAA6ClhB,kBAC3GlK,EAAQ,CACN,kBAAmBqrB,EACnB,wBAAyBH,GAG7B,OAAOlrB,EAMTwB,kBAEE,MAAM8pB,EAAc,qFAEdC,EAAc,gCAEdC,EAAYC,UAAUD,UACtBE,EAAWJ,EAAYh3B,KAAKk3B,GAC5BG,EAAWJ,EAAYj3B,KAAKk3B,GAGlC,OAAOE,IAAaC,EAQtBzD,sBACE,GAAIjiC,KAAKuS,SAAWvS,KAAKuS,QAAQzG,YAAa,CACxC9L,KAAKuS,QAAShQ,OAAS4B,OAAcS,WAAWrC,MAAQvC,KAAKuS,QAAShQ,OAAS4B,OAAcQ,WAAWpC,MACtGvC,KAAKuS,QAAQzG,YAAYzK,QACmB,kBAAnCrB,KAAKuS,QAAQzG,YAAYzK,MAClCrB,KAAKuS,QAAQzG,YAAYzK,MAAQ4hC,KAAM,IAAI0C,KAAK3lC,KAAKuS,QAAQzG,YAAYzK,QAChErB,KAAKuS,QAAQzG,YAAYzK,iBAAiBskC,OACnD3lC,KAAKuS,QAAQzG,YAAYzK,MAAQ4hC,KAAMjjC,KAAKuS,QAAQzG,YAAYzK,SAInB,MAA/CrB,KAAKuS,QAAQzG,YAAYwxB,qBAC3Bt9B,KAAKuS,QAAQzG,YAAYwxB,mBAAqB,IACrCt9B,KAAK6iB,YAGhB,MAAM9W,EAA8B/L,KAAK+L,YACzC,GAA4B,MAAxBA,EAAY6S,UAAsD,KAAjC7S,EAAY6S,SAAyB,CACxE,MAAMA,EAAW,wBACgBlQ,GAA7B3C,EAAYmT,eAAqE,KAAtCnT,EAAYmT,eAAgCnT,EAAYmT,cAAgB,GACjHnT,EAAYmT,cAAgB,KAC9BnT,EAAYmT,cAAgB,IAE9BnT,EAAY6S,SAAWnQ,OAAOmQ,EAAS4iB,MAAM,EAAG5iB,EAAS3S,OAASF,EAAYmT,eAAiB,IAAMN,EAAS4iB,MAAM5iB,EAAS3S,OAASF,EAAYmT,cAAeN,EAAS3S,UAE1KF,EAAY6S,SAAWnQ,OAAOmQ,KAWtC,cACE,MAAM7S,EAA8B/L,KAAK+L,YACzC,IAAI0wB,EACAmJ,EAA2B,GAC3B75B,EAAY0wB,UACdA,EAAU7T,GAAqBH,MAAM1c,EAAY0wB,SAC7CA,EAAQ32B,OAAYC,eAAexD,QACrCqjC,EAAoBnJ,EAAQ32B,OAAYC,eAAexD,MAAMwM,MAAM,KAAKya,OAAQpd,KAAgBA,KAGpG,MAAM2P,EAAuBjb,OAAOg2B,OAAO9vB,QAAe6+B,IAAKviC,IAAQ,CAAQkY,MAAOlY,EAAI3C,KAAMU,MAAOiC,EAAIf,QACrGujC,EAAkC,GAMxC,OALA/pB,EAAc5P,QAASC,IACjBw5B,EAAkB5I,UAAW/G,GAAOA,IAAO7pB,EAAK/K,QAAU,GAC5DykC,EAAyBv5B,KAAKH,KAG3B,CACL,CAACtG,OAAYC,eAAexD,MAAOujC,EACnC,CAAChgC,OAAYE,cAAczD,QAAOk6B,GAAUA,EAAQ32B,OAAYE,cAAczD,MAC9E,CAACuD,OAAYG,gBAAgB1D,QAAOk6B,GAAUA,EAAQ32B,OAAYG,gBAAgB1D,MAClF,CAACuD,OAAYI,SAAS3D,QAAOk6B,GAAUA,EAAQ32B,OAAYI,SAAS3D,OASxE,oBACE,OAAIvC,KAAKy8B,SAAWz8B,KAAKy8B,QAAQ32B,OAAYC,eAAexD,MAAM0J,OAAS,EAClEjM,KAAKy8B,QAAQ32B,OAAYC,eAAexD,MAE1C,GAQT,uBACE,OAAOvC,KAAK+b,cAAc8pB,IAAKz5B,GAASA,EAAKoP,OAAO4J,KAAK,KAO3DhE,eAAeJ,GAEb,SAAIA,GAAUA,EAAO/Q,QAAQ,UAAY,IAChC+Q,EASH+kB,WAAW1kC,GAYjB,OAXIA,IACFA,EAAQA,EAAMy5B,QAAQ,UAAW,IACjCz5B,EAAQA,EAAMy5B,QAAQ,UAAW,KACjCz5B,EAAQA,EAAMy5B,QAAQ,IAAK,OAAOA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,KAEpEz5B,EAAQA,EAAMy5B,QAAQ,yBAA0B,WAC5Cz5B,EAAM4O,QAAQ,KAAO,GAAc,IAAT5O,IAE5BA,EAAQuiC,WAAWviC,KAGhBA,EAQD2kC,uBAAuB3kC,GAC7B,GAAIA,EAAO,CACT,MAAM4kC,EAAqB5kC,EAAMy5B,QAAQ,WAAY,IACrD,OAAOmL,EAAWh6B,OAAS,GAE7B,OAAO,EAQTwW,aAAayjB,GACX,MAAMtzB,EAAQ5S,KAAK8L,YAAYzK,MAAM4O,QAAQi2B,GACvCC,EAAcnmC,KAAK8L,YAAYzK,MAAMmgC,QAC3C2E,EAAYjJ,OAAOtqB,EAAO,GAC1B5S,KAAK8L,YAAYzK,MAAQ8kC,EAQ3BzjB,aAAawjB,GACX,MAAME,EAAkB,IAAIpmC,KAAK8L,YAAYzK,MAAO6kC,GAEpD,OADAlmC,KAAK8L,YAAYzK,MAAQ+kC,GAClB,EAQTzjB,mBAAmB8M,GACjB,IAAI2W,EAAkB,IAAIpmC,KAAK8L,YAAYzK,OAC3C,MAAM0K,EAA8B/L,KAAK+L,YACrCA,EAAYmwB,iBAAmBnwB,EAAYmwB,gBAAkB,IAC/DkK,EAAWA,EAAS5E,MAAM,EAAI/yB,OAAO1C,EAAYmwB,mBAEnDkK,EAAWA,EAASP,IAAKK,IACnBA,EAAK5f,WACP4f,EAAKzf,IAAMyf,EAAK5f,SAASG,KAEpByf,IAETlmC,KAAK8L,YAAYzK,MAAQ+kC,EACrB3W,GAASA,EAAMyW,YAA+Bx3B,IAAtB+gB,EAAMyW,KAAK3f,QAA8C,YAAtBkJ,EAAMyW,KAAK3f,SACxEvmB,KAAK6S,SAAS7S,KAAKuS,SASvBgN,yBAAyBvP,GACvBhQ,KAAKwf,iBAAmBxf,KAAKge,WAAW+Y,KAAM3qB,GAASA,EAAK7J,OAASyN,EAAErO,KAQzEyc,kBAAkBC,GAChB,OAAOA,EAAYC,WAQrBzL,SAAS4c,GACmH,IAAA4W,GAAtHrmC,KAAKuS,SAAYvS,KAAKuS,QAAQlO,OAASV,OAAeG,KAAKvB,MAAQvC,KAAKuS,QAAQlO,OAASV,OAAeI,OAAOxB,OACjHvC,KAAKmb,eAAiBnb,KAAK8L,YAAYO,SAA0B,QAAlBg6B,EAAC5W,EAAM3jB,mBAAW,IAAAu6B,OAAA,EAAjBA,EAAmBhlC,QAErErB,KAAKo/B,MAAM,SAAU3P,GAQvBxc,QAAQwc,GACNzvB,KAAKo/B,MAAM,QAAS3P,GAQtBtc,qBAAqBsc,GACnBzvB,KAAKo/B,MAAM,eAAgB3P,GAQ7Bpc,oBAAoBoc,GAClBzvB,KAAKo/B,MAAM,cAAe3P,GAQ5BtQ,mBAAmBsQ,GACjBzvB,KAAK+S,QAAQ0c,GACRzvB,KAAK+L,YAA+BsrB,uBACvCr3B,KAAKyf,sBAAuB,GAShCL,kBAAkBqQ,GAChBzvB,KAAKgT,OAAOyc,GACPzvB,KAAK+L,YAA+BsrB,uBACvCr3B,KAAKyf,sBAAuB,GAShC1M,QAAQ0c,GACNzvB,KAAKo/B,MAAM,QAAS3P,GAQtBzc,OAAOyc,GACLzvB,KAAKo/B,MAAM,OAAQ3P,GAQrBjO,OAAOF,GACL,QAAIkH,KAAKC,MAAMzoB,KAAK0xB,aAAaqF,KAAM/mB,GAAWA,EAAEs2B,UAAYtmC,KAAKumC,SAASjlB,EAAQklB,KAYxF/kB,UAAUH,GACR,QAAIkH,KAAKC,MAAMzoB,KAAK2xB,aAAaoF,KAAM/mB,GAAWA,EAAEs2B,UAAYtmC,KAAKumC,SAASjlB,EAAQklB,KAYxF9kB,YAAYJ,GACV,QAAIkH,KAAKC,MAAMzoB,KAAKyxB,aAAasF,KAAM/mB,GAAWA,EAAEs2B,UAAYtmC,KAAKumC,SAASjlB,EAAQklB,KAYxFD,SAAShlB,GACP,MAAMklB,EAAYllB,EAAKmlB,cACvB,IAAIC,EAAaplB,EAAKqlB,WAAa,EAC/BC,EAAetlB,EAAKulB,UAUxB,OARIH,EAAQ,KACVA,EAAQ,IAAMA,GAGZE,EAAU,KACZA,EAAU,IAAMA,GAGX,GAAKJ,EAAOE,EAAQE,IAlnCrBrH,wBAAA,CAAPC,qB,6BACOD,wBAAA,CAAPC,qB,+BACOD,wBAAA,CAAPC,qB,qCAC4CD,wBAAA,CAA5CC,kBAAK,CAAEp7B,KAAMvD,OAAQmC,QAASA,KAAA,O,qCACWu8B,wBAAA,CAAzCC,kBAAK,CAAEp7B,KAAMgM,MAAOpN,QAASA,IAAM,M,gCAC1Bu8B,wBAAA,CAATuH,uB,yCAKDvH,wBAAA,CADCG,mBAAM,mBAAoB,CAAEqH,WAAW,K,+CAwBxCxH,wBAAA,CAFCG,mBAAM,8CACNA,mBAAM,wC,gDAWPH,wBAAA,CADCG,mBAAM,iD,wDAcPH,wBAAA,CADCG,mBAAM,sC,mCA9EYgC,GAAYnC,wBAAA,CAzDhCI,qBAAQ,CACPj/B,KAAM,eACNsmC,QAAS,CACPvnB,qBAAsBA,GACtBmf,kBAAmBA,GACnBlf,aAAcA,IAEhBunB,WAAY,CACVlI,eACAmI,gCACA,CAACC,WAAKzmC,MAAOymC,WACb,CAACC,eAAS1mC,MAAO0mC,eACjB,CAACjjC,YAAMzD,MAAOyD,YACd,CAACE,eAAS3D,MAAO2D,eACjB,CAACgjC,mBAAa3mC,MAAO2mC,mBACrB,CAAC/iC,kBAAY5D,MAAO4D,kBACpB,CAACC,aAAO7D,MAAO6D,aACf,CAACA,aAAO+iC,OAAOC,YAAc,IAAKhjC,aAAO+iC,OACzC,CAAC/iC,aAAOijC,SAASD,YAAc,IAAKhjC,aAAOijC,SAC3C,CAAChjC,YAAM9D,MAAO8D,YACd,CAACijC,iBAAW/mC,MAAO+mC,iBACnB,CAAChjC,eAAS/D,MAAO+D,eACjB,CAACijC,oBAAchnC,MAAOgnC,oBACtB,CAAC3jC,aAAOrD,MAAOqD,aACf,CAACW,iBAAWhE,MAAOgE,iBACnB,CAACC,iBAAWjE,MAAOiE,iBACnB,CAACC,aAAOlE,MAAOkE,aACf,CAACyiC,mBAAa3mC,MAAO2mC,mBACrB,CAACriC,eAAStE,MAAOsE,eACjB,CAACC,iBAAWvE,MAAOuE,iBACnB,CAAC0iC,cAAQjnC,MAAOinC,cAChB,CAACC,oBAAclnC,MAAOknC,oBACtB,CAACC,cAAQnnC,MAAOmnC,cAChB,CAACC,iBAAWpnC,MAAOonC,iBACnB,CAACC,eAASrnC,MAAOqnC,eACjB,CAACC,mBAAatnC,MAAOsnC,mBACrB,CAACnjC,WAAKnE,MAAOmE,WACb,CAACojC,eAASvnC,MAAOunC,eACjB,CAACC,WAAKxnC,MAAOwnC,WACb,CAACA,WAAKC,KAAKznC,MAAOwnC,WAAKC,KACvB,CAACrjC,aAAOpE,MAAOoE,aACf,CAACsjC,aAAO1nC,MAAO0nC,aACf,CAACC,cAAQ3nC,MAAO2nC,cAChB,CAAC1jC,iBAAW2jC,YAAY5nC,MAAOiE,iBAAW2jC,YAC1C,CAACvJ,GAAYr+B,MAAOq+B,GACpB,CAACwJ,UAAI7nC,MAAO6nC,UACZ,CAACC,UAAI9nC,MAAO8nC,UACZC,OAAQA,CAACj1B,GAAKk1B,WACLA,EAAMvoB,OAEfwoB,oDACAC,8CACAC,gCACAC,oCACAC,wCAGiBrH,c,UClFrB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,SAAS,GAAQ,CAAC,YAAY,qBAE1E,UCRf,MAAMsH,GAOFC,eAAe7nC,EAAY2f,EAAS,uBAChC,MAAM7Q,EAAM,kCACZ,IAAK9O,EACD,MAAO,GAEX,IAAK8O,EAAI9B,KAAK2S,GACV,MAAM,IAAIpe,MAAM,sBAAsBoe,4IAErB,kBAAV3f,GAAuC,IAAjBA,EAAM4K,OACnC5K,EAAQ,CAACA,EAAMw5B,OAAO,EAAG,GAAIx5B,EAAMw5B,OAAO,EAAG,GAAIx5B,EAAMw5B,OAAO,EAAG,IAAIzV,KAAK,KAClEzV,MAAMlB,OAAOpN,MACrBA,EAAQoN,OAAOpN,IAEnB,MAAMmb,EAAO,IAAImpB,KAAKtkC,GACtB,GAAqB,iBAAjBmN,OAAOgO,GACP,MAAM,IAAI5Z,MAAM,+BAA+BvB,oDAEnD,MAAM8nC,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxC1C,EAAOj4B,OAAOgO,EAAKkqB,eACnBC,EAAQnqB,EAAKoqB,WAAa,EAAI,EAAIp4B,OAAOgO,EAAKoqB,WAAa,GAAK,IAAIp4B,OAAOgO,EAAKoqB,WAAa,GAC7FrlB,EAAO/E,EAAKsqB,UAAY,EAAIt4B,OAAOgO,EAAKsqB,WAAa,IAAIt4B,OAAOgO,EAAKsqB,WACrEsC,EAAM5sB,EAAK6sB,SACXC,EAAoB,IAARF,EAAYA,EAAM,IAC9BG,EAAQ/sB,EAAKgtB,WAAa,EAAIh7B,OAAOgO,EAAKgtB,YAAc,IAAIh7B,OAAOgO,EAAKgtB,YACxEC,EAAUjtB,EAAKktB,aAAe,EAAIl7B,OAAOgO,EAAKktB,cAAgB,IAAIltB,EAAKktB,aACvEC,EAAUntB,EAAKotB,aAAe,EAAIp7B,OAAOgO,EAAKotB,cAAgB,IAAIp7B,OAAOgO,EAAKotB,cACpF,IAAIjhB,EAAM,GAqBV,MApBI,WAAWta,KAAK2S,GAChBA,EAAO8Z,QAAQ,WAAY,CAAC3qB,EAAKyC,EAAOvR,KACxB,OAAR8O,IACAwY,EAAMtnB,EAAMy5B,QAAQ,KAAM2L,EAAKjF,MAAM,KAE7B,SAARrxB,IACAwY,EAAMtnB,EAAMy5B,QAAQ,OAAQ2L,IAEzB9d,IAGXA,EAAM3H,EAEV2H,EAAMA,EAAImS,QAAQ,MAAO6L,GACzBhe,EAAMA,EAAImS,QAAQ,MAAOvZ,GACzBoH,EAAMA,EAAImS,QAAQ,MAAOyO,GACzB5gB,EAAMA,EAAImS,QAAQ,MAAO2O,GACzB9gB,EAAMA,EAAImS,QAAQ,MAAO6O,GACzBhhB,EAAMA,EAAImS,QAAQ,MAAOwO,GACzB3gB,EAAMA,EAAImS,QAAQ,MAAOqO,EAAOC,IACzBzgB,EAYXkhB,gBAAgBC,EAAkBC,GAC9B,OAAO,IAAIpE,KAAKA,KAAKld,MAAMqhB,EAAUhP,QAAQ,KAAK,OAAOkP,UACvD,IAAIrE,KAAKA,KAAKld,MAAMshB,EAAQjP,QAAQ,KAAK,OAAOkP,WAG1D,MAAM/oB,GAAgC,IAAIgoB,GCvDnC,IAAKgB,IAAZ,SAAYA,GACVA,EAAA,iCACAA,EAAA,2CACAA,EAAA,yCACAA,EAAA,yCACAA,EAAA,2BACAA,EAAA,6BACAA,EAAA,6BACAA,EAAA,2BACAA,EAAA,6BACAA,EAAA,eACAA,EAAA,yBACAA,EAAA,iCACAA,EAAA,iCACAA,EAAA,yCACAA,EAAA,uCACAA,EAAA,+BACAA,EAAA,iCACAA,EAAA,iCACAA,EAAA,uCACAA,EAAA,2BACAA,EAAA,uBACAA,EAAA,uBACAA,EAAA,eACAA,EAAA,iCACAA,EAAA,2DACAA,EAAA,eACAA,EAAA,uBACAA,EAAA,+BACAA,EAAA,+CACAA,EAAA,yCACAA,EAAA,+BACAA,EAAA,+BACAA,EAAA,2BACAA,EAAA,2BACAA,EAAA,yCACAA,EAAA,qCACAA,EAAA,yBACAA,EAAA,yCACAA,EAAA,uCACAA,EAAA,uCACAA,EAAA,2DACAA,EAAA,uCACAA,EAAA,+BACAA,EAAA,6BACAA,EAAA,iCACAA,EAAA,mCACAA,EAAA,qCACAA,EAAA,iCACAA,EAAA,mCACAA,EAAA,qCACAA,EAAA,uBACAA,EAAA,mCACAA,EAAA,qBACAA,EAAA,2CACAA,EAAA,6CACAA,EAAA,2BACAA,EAAA,iCACAA,EAAA,yBACAA,EAAA,mCACAA,EAAA,+BACAA,EAAA,kCA7DF,CAAYA,QAAS,KAqEf,MAAOC,GAcX51B,YACEkM,EAKI,IAAExL,EAAA,kBAnBEA,EAAA,sBACSA,EAAA,oBACQA,EAAA,0BACHA,EAAA,8BACHA,EAAA,sBAiBnBhV,KAAK0pB,GAAKlJ,EAAQkJ,IAAM1pB,KAAKmqC,UAC7BnqC,KAAKoqC,OAAS5pB,EAAQ4pB,QAAU,IAAInL,SAAIoL,IACxCrqC,KAAKiS,KAAOuO,EAAQvO,KACpBjS,KAAKw7B,WAAahb,EAAQgb,YAAc,UAG1C,aACE,OAAK7qB,OAAeyW,KAAKC,OAAOC,iBAAiB6W,QACvCxtB,OAAeyW,KAAKC,OAAOC,iBAAiB6W,QAE/C,GAQT,eAEE,GADAn+B,KAAKsqC,eAAiBtqC,KAAKoqC,OAAOvH,YAC9B7iC,KAAKoqC,OAAO14B,SAAW1R,KAAKoqC,OAAO14B,QAAQsX,UAAW,CACxD,IAAI5U,EAAWpU,KAAKuqC,aAAavqC,KAAKoqC,OAAO14B,QAAQsX,WAOrD,OANIhpB,KAAKwqC,SACPp2B,EAAMpU,KAAKyqC,SAASzqC,KAAKwqC,OAAQp2B,GAC5BtT,OAAO4S,KAAKU,GAAKnI,SACpBmI,EAAM,OAGHA,EAET,OAAO,KAQT,kBAEE,GADApU,KAAKsqC,eAAiBtqC,KAAKoqC,OAAOvH,YAC9B7iC,KAAKoqC,OAAO14B,SAAW1R,KAAKoqC,OAAO14B,QAAQsX,UAAW,CACxD,MAAM5U,EAAWpU,KAAKuqC,aAAavqC,KAAKoqC,OAAO14B,QAAQsX,WACvD,OAAO5U,EAET,OAAO,KAQT,sBAEE,GADApU,KAAKsqC,eAAiBtqC,KAAKoqC,OAAOvH,YAC9B7iC,KAAKoqC,OAAO14B,SAAW1R,KAAKoqC,OAAO14B,QAAQsX,UAAW,CACxD,MAAMI,EAAOppB,KAAKuqC,aAAavqC,KAAKoqC,OAAO14B,QAAQsX,WACnD,OAAOhpB,KAAK0qC,eAAethB,GAE7B,OAAO,KAQTuhB,YAAYC,EAAcC,GAAY,EAAOx+B,GAAW,EAAOm+B,GACzDxqC,KAAKoqC,OAAO14B,QAAQsX,UACtBhpB,KAAK8qC,iBAAiBF,EAASC,EAAWx+B,GAE1C0+B,WAAW,KACT/qC,KAAK8qC,iBAAiBF,EAASC,EAAWx+B,KAG1Cm+B,IAAQxqC,KAAKwqC,OAASA,GAQ5BQ,WAAWrpC,EAAa4Q,EAA2B04B,GAAY,GAC7D,GAAItpC,IACa,MAAX4Q,IACEvS,KAAKoqC,OAAO14B,QAAQsX,UACtBzW,EAAUvS,KAAKoqC,OAAO14B,QAAQsX,UAAUrX,SAC/Bs5B,GACT5c,QAAQC,IAAI,mBAGZ/b,GAAWzR,OAAO4S,KAAKnB,GAAStG,OAAS,GAC3C,IAAK,MAAM2H,KAAY9S,OAAO4S,KAAKnB,GAAU,CAC3C,GAAIqB,IAAajS,EACf,OAAO4Q,EAAQqB,GAEjB,GAAIrB,EAAQqB,GAAUjC,UAAY7Q,OAAO4S,KAAKnB,EAAQqB,GAAUjC,UAAU1F,OAAS,EAAG,CACpF,MAAMi/B,EAA8BlrC,KAAKgrC,WAAWrpC,EAAK4Q,EAAQqB,GAAUjC,UAC3E,GAAkB,MAAdu5B,EACF,OAAOA,GAMjB,OAAO,KAQTC,SAASxpC,GACP,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,OAAI4Q,EAEKvS,KAAKorC,WAAW74B,GAAwB,GAE1C,KAQTwqB,SAASp7B,EAAa2B,EAAUunC,GAAY,EAAOx+B,GAAW,GAC5D,IAAIkG,EAA2BvS,KAAKgrC,WAAWrpC,GAChC,MAAX4Q,EACFw4B,WAAW,KACTx4B,EAAUvS,KAAKgrC,WAAWrpC,GAC1B3B,KAAKqrC,gBAAgB94B,EAAS5Q,EAAK2B,EAAKunC,EAAWx+B,KAGrDrM,KAAKqrC,gBAAgB94B,EAAS5Q,EAAK2B,EAAKunC,EAAWx+B,GASvDi/B,aACEtrC,KAAKoqC,OAAOxW,eAAc,GAQ5B2X,QAAQ5pC,GACN,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,OAAI4Q,EAEKA,EAAQ8qB,OAEV,GAQTmO,WAAW7pC,GACT,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,OAAI4Q,GAAWA,EAAQxG,YAEd4xB,GAAeprB,EAAQxG,aAEzB,GAQT0/B,WAAW9pC,EAAaynB,EAAauV,GACnC,IAAIpsB,EAA2BvS,KAAKgrC,WAAWrpC,GAChC,MAAX4Q,EACFw4B,WAAW,KACTx4B,EAAUvS,KAAKgrC,WAAWrpC,GAC1B3B,KAAK0rC,kBAAkBn5B,EAAS5Q,EAAKynB,EAAMuV,KAG7C3+B,KAAK0rC,kBAAkBn5B,EAAS5Q,EAAKynB,EAAMuV,GAS/CgN,aAAahqC,EAAa+8B,GACxB,MAAMnsB,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,GAAI4Q,GAAWA,EAAQxG,YAErB,OAAOwG,EAAQxG,YAAY2yB,GAQ/BkN,aAAajqC,EAAa+8B,EAAsBtV,GAC9C,IAAI7W,EAA2BvS,KAAKgrC,WAAWrpC,GAChC,MAAX4Q,EACFw4B,WAAW,KACTx4B,EAAUvS,KAAKgrC,WAAWrpC,GAC1B3B,KAAK6rC,oBAAoBt5B,EAASmsB,EAAWtV,KAG/CppB,KAAK6rC,oBAAoBt5B,EAASmsB,EAAWtV,GASjD+T,YAAYx7B,EAAahB,GACvB,MAAM4R,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,GAAI4Q,EAEF,OAAOA,EAAQ4qB,YAAYx8B,GAS/Bs8B,eAAet7B,EAAamqC,GAC1B,MAAMv5B,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,GAAI4Q,EAAS,CAEX,MAAMrG,EAAwBqG,EAAQrG,UACtC,GAAIA,GAAaA,EAAUD,OAAS,EAAG,CACrC,MAAM2G,EAAQ1G,EAAU8wB,UAAW5wB,GAASA,EAAKzL,OAASmrC,IAC3C,IAAXl5B,GACF1G,EAAUgxB,OAAOtqB,EAAO,KAWhCm5B,mBAAmBpqC,GACjB,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GAC7C4Q,IAEFA,EAAQrG,UAAY,IASxB8/B,aAAarqC,GACX,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,OAAI4Q,EAEKA,EAAQrG,UAEV,GAQT+/B,oBAAoBtqC,EAAaynB,GAC3BA,EACFppB,KAAKksC,YAAYvqC,EAAK,CAAE8K,SAAUzC,OAAcgB,SAASzI,OAEzDvC,KAAKi9B,eAAet7B,EAAKqI,OAAcgB,SAASzI,MASpD2pC,YAAYvqC,EAAa0K,EAAwC8/B,GAAU,GACzE,IAAI55B,EAA2BvS,KAAKgrC,WAAWrpC,GAChC,MAAX4Q,EACFw4B,WAAW,KACTx4B,EAAUvS,KAAKgrC,WAAWrpC,GACtB4Q,GAEFvS,KAAKosC,iBAAiB75B,EAASlG,EAAU8/B,KAI7CnsC,KAAKosC,iBAAiB75B,EAASlG,EAAU8/B,GAS7Cze,aAAaE,GACX,OAAO0C,GAAoB5C,aAAa1tB,KAAM4tB,GAQhDM,eAAelF,EAA6BqjB,EAAoCC,GAAkB,GAUhG,GATuB,MAAnBD,IACFA,EAAkB,IAEH,MAAbrjB,IACFA,EAAYhpB,KAAKoqC,OAAO14B,QAAQsX,UAC5BsjB,IACFtsC,KAAKoqC,OAAOmC,0BAA2B,IAAI5G,MAAOqE,YAGrC,MAAbhhB,EACF,IAAK,MAAMpV,KAAY9S,OAAO4S,KAAKsV,EAAUrX,UAC3C,GAAIqX,EAAUrX,SAASiC,aAAqB2pB,GAC1Cv9B,KAAKkuB,eAAelF,EAAUrX,SAASiC,GAAWy4B,QAC7C,GAAIrjB,EAAUrX,SAASiC,aAAqBgpB,KAAgB5T,EAAUrX,SAASiC,GAAU7H,YAAY4N,cAAe,CACzH,MAAMwB,EAAiC6N,EAAUrX,SAASiC,GAAUvH,WAChE8O,EAAejN,iBAAmBzL,OAAeG,MAAML,MACzD8pC,EAAgB9/B,KAAK,CACnB5K,IAAKqnB,EAAUrX,SAASiC,GAAUjS,IAClChB,KAAMqoB,EAAUrX,SAASiC,GAAU7H,YAAY+P,kBAC/C3N,SAAUgN,EAAehN,SACzBX,YAAawb,EAAUrX,SAASiC,GAAU7H,YAAYyB,cAMhE,OAAO6+B,EAQThgC,SAASigC,GAAkB,GACzB,MAAMD,EAAoCrsC,KAAKkuB,oBAAexf,OAAWA,EAAW49B,GACpF,QAASD,EAAgBpgC,OAAS,GAQpCugC,gBAAgB7qC,GACd,IAAI4Q,EAA2BvS,KAAKgrC,WAAWrpC,GAChC,MAAX4Q,EACFw4B,WAAW,KACTx4B,EAAUvS,KAAKgrC,WAAWrpC,GAC1B4Q,EAAQ,oBAAqB,IAAIozB,MAAOqE,YAG1Cz3B,EAAQ,oBAAqB,IAAIozB,MAAOqE,UAS5CyC,yBACEzsC,KAAKoqC,OAAOsC,4BAA6B,IAAI/G,MAAOqE,UAQtD2C,0BAA0BhrC,EAAayhC,GACjCzhC,IACF3B,KAAKoqC,OAAO53B,cAAc7Q,GAAOyhC,GAEnCpjC,KAAK4sC,uBAQPA,uBACE5sC,KAAKoqC,OAAOyC,2BAA0B,IAAIlH,MAAOqE,WAQnD9a,aAAavtB,GACX,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,GAAe,MAAX4Q,GAAmBA,EAAQxG,YAAa,CAC1C,MAAM+gC,EAA6Bj8B,SAASk8B,uBAAuB,mBAAqBx6B,EAAQxG,YAAYuP,eAC5G,GAAW,MAAPwxB,GAAeA,EAAI7gC,OAAS,EAC9B,OAAO6gC,EAAI,GAGf,OAAO,KAQTE,sBAAsBC,GACpB,GAAIA,aAA2B1P,GAAW,CACxC,MAAMvU,EAAuBikB,EAC7B,IAAK,MAAMr5B,KAAY9S,OAAO4S,KAAKsV,EAAUrX,UAC3C,GAAIqX,EAAUrX,SAASiC,aAAqB2pB,GAAW,CACrD,MAAM2P,EAAQltC,KAAKgtC,sBAAsBhkB,EAAUrX,SAASiC,IAC5D,GAAIs5B,EACF,OAAOA,OAEJ,GAAIlkB,EAAUrX,SAASiC,aAAqBgpB,IAC7C5T,EAAUrX,SAASiC,GAAUrR,OAAS4B,OAAcY,OAAOxC,KAC7D,OAAO,EAKf,OAAO,EAQTmoC,eAAexd,GACb,MAAMigB,EAAW,IAAIC,SACrB,OAAc,MAAVlgB,GACFpsB,OAAO4S,KAAKwZ,GAAQ/gB,QAASxK,IACR,MAAfurB,EAAOvrB,IAAgBurB,EAAOvrB,aAAgB0O,OAAS6c,EAAOvrB,GAAKsK,OAAS,GAAKihB,EAAOvrB,GAAK,aAAc0rC,KAC7GngB,EAAOvrB,GAAKwK,QAASC,IACnB+gC,EAASG,OAAO3rC,EAAKyK,KAGvB+gC,EAASG,OAAO3rC,EAAKurB,EAAOvrB,MAGzBwrC,GAEFA,EAQTI,sBAAsBC,GACpBA,EAAqBA,GAAsB,GAC3C,IAAK,MAAMC,KAAgB3sC,OAAO4S,KAAK85B,GAAqB,CAC1D,IAAIj7B,EAA2BvS,KAAKgrC,WAAWyC,OAAc/+B,GAAW,GACxE,GAAe,MAAX6D,EACFw4B,WAAW,KAET,GADAx4B,EAAUvS,KAAKgrC,WAAWyC,OAAc/+B,GAAW,GAC/C6D,EAAS,CAEX,MAAM+J,GAAWkxB,EAAmBC,IAAiB,IAAIzoB,KAAK,CAACC,EAAGC,KAChE,MAAMwoB,EAAQ,IAAI/H,KAAK1gB,EAAEzI,MAAMwtB,UACzB2D,EAAQ,IAAIhI,KAAKzgB,EAAE1I,MAAMwtB,UAC/B,OAAO2D,EAAQD,IAEjBn7B,EAAQ+J,QAAUA,UAKtB,GADA/J,EAAUvS,KAAKgrC,WAAWyC,OAAc/+B,GAAW,GAC/C6D,EAAS,CAEX,MAAM+J,GAAWkxB,EAAmBC,IAAiB,IAAIzoB,KAAK,CAACC,EAAGC,KAChE,MAAMwoB,EAAQ,IAAI/H,KAAK1gB,EAAEzI,MAAMwtB,UACzB2D,EAAQ,IAAIhI,KAAKzgB,EAAE1I,MAAMwtB,UAC/B,OAAO2D,EAAQD,IAEjBn7B,EAAQ+J,QAAUA,IAW1BsxB,WAAW/zB,EAAoB0T,GAAO,GACpC,GAAI1T,EAAY,CACd,MAAMiQ,EAAajZ,SAASk8B,uBAAuB,kBAAoBlzB,GACvE,GAAIiQ,GAASA,EAAM7d,OAAS,EAC1B,IAAK,IAAI7L,EAAI,EAAGA,EAAI0pB,EAAM7d,OAAQ7L,IAChC0pB,EAAM1pB,GAAG2Z,MAAMspB,QAAU9V,EAAO,OAAS,QAWzCud,iBAAiBF,EAAcC,EAAoBx+B,GACzD,GAAIu+B,EACF,IAAK,MAAMh3B,KAAY9S,OAAO4S,KAAKk3B,GACA,kBAAtBA,EAAQh3B,IAAuD,kBAAtBg3B,EAAQh3B,GAC1D5T,KAAK+8B,SAASnpB,EAAUg3B,EAAQh3B,GAAWi3B,GAAW,GAEtD7qC,KAAK2qC,YAAYC,EAAQh3B,GAAWi3B,EAAWx+B,GAIjDA,GACFrM,KAAKqM,WASDg/B,gBAAgB94B,EAA0B5Q,EAAa2B,EAAUunC,EAAqBx+B,GAAW,GACvG,GAAIkG,EAAS,CAEX,OAAQA,EAAQhQ,MACd,KAAK4B,OAAcI,YAAYhC,KACzBe,GAAOiP,EAAQxG,YAAY4T,eACzBpN,EAAQxG,YAAY+R,WAAasgB,OAASC,QAAQ97B,KACpDe,EAAMtD,KAAKk+B,OAAOld,OAAOhhB,KAAKk+B,OAAOI,SAAS,GAAGh7B,OAASiP,EAAQxG,YAAY4T,gBAAiB,CAAE4e,SAAU,UAClGhsB,EAAQxG,YAAY+R,WAAasgB,OAASI,OAAOj8B,OAC1De,EAAMtD,KAAKk+B,OAAOld,OAAOhhB,KAAKk+B,OAAOI,SAAS,GAAGh7B,OAASiP,EAAQxG,YAAY4T,gBAAiB,CAAE4e,SAAU,YAI7GhsB,EAAQlR,WADCqN,GAAPpL,EACcA,EAEA,GAElB,MACF,KAAKa,OAAcK,OAAOjC,KACpBgQ,EAAQxG,YAAY6T,mBACjBtc,EAEqB,kBAARA,IAChBA,EAAMA,EAAIyL,MAAM,MAFhBzL,EAAM,IAKViP,EAAQlR,MAAQiC,EAChB,MACF,KAAKa,OAAcO,SAASnC,KAC5B,KAAK4B,OAAcc,SAAS1C,KAExBe,EADEA,EACIA,EAAIyL,MAAM,KAEV,GAERwD,EAAQlR,MAAQiC,EAChB,MACF,KAAKa,OAAcH,OAAOzB,KACpBgQ,EAAQxG,YAAYwwB,eACtBj5B,GAAc,IAARA,GAAgBA,IAAQiP,EAAQxG,YAAYwwB,eACzChqB,EAAQxG,YAAYywB,kBAC7Bl5B,KAAgB,IAARA,GAAiBA,IAAQiP,EAAQxG,YAAYywB,kBAEvDjqB,EAAQlR,MAAQiC,EAChB,MACF,KAAKa,OAAcQ,WAAWpC,KACxBe,GACiB,kBAARA,EACTA,EAAM2/B,KAAM,IAAI0C,KAAK3lC,KAAK6tC,aAAe,IAAMvqC,IACtCA,aAAeqiC,OACxBriC,EAAM2/B,KAAM3/B,IAEdiP,EAAQlR,MAAQiC,GAEhBiP,EAAQlR,MAAQ,KAElB,MACF,KAAK8C,OAAcS,WAAWrC,KACxBe,GACiB,kBAARA,EACTA,EAAM2/B,KAAM3/B,EAAKiP,EAAQ0O,YAChB3d,aAAeqiC,OACxBriC,EAAM2/B,KAAM3/B,IAEdiP,EAAQlR,MAAQiC,GAEhBiP,EAAQlR,MAAQ,KAElB,MACF,QACEkR,EAAQlR,MAAQiC,EAGhBunC,GACF7qC,KAAK4rC,aAAajqC,EAAKsoC,GAAU6D,kBAAmBtlB,KAAKE,UAAUnW,EAAQlR,QAEzEgL,IACFkG,EAAQ,oBAAqB,IAAIozB,MAAOqE,YAUtC0B,kBAAkBn5B,EAA0B5Q,EAAaynB,EAAauV,GACxEpsB,GAAWA,EAAQxG,cAErB8xB,GAAetrB,EAAQxG,YAAaqd,GACpCppB,KAAK4rC,aAAajqC,EAAKsoC,GAAU8D,aAAcjrC,OAAWC,MAAMR,MAChEvC,KAAK4rC,aAAajqC,EAAKsoC,GAAU+D,aAAc5kB,IAE7CuV,GACF3+B,KAAK+8B,SAASp7B,EAAKg9B,GAAY,GAS3BkN,oBAAoBt5B,EAA0BmsB,EAAsBtV,GACtE7W,GAAWmsB,IAEbnsB,EAAQxG,YAAY2yB,GAAatV,GAS7BgjB,iBAAiB75B,EAA0BlG,EAAwC8/B,GAAU,GACnF,MAAZ9/B,GAAqBA,EAAkBI,WACzCJ,EAAWqE,QAAyBpE,0BAA0BD,EAAkBkG,EAAQxG,cAE1E,MAAZM,IACE8/B,IACF55B,EAAQrG,UAAY,IAEtBqG,EAAQ/F,YAAYH,IAShBk+B,aAAa0C,EAAkC74B,EAAW,IAChE,GAAI64B,aAA2B1P,GAAW,CACxC,MAAMvU,EAAuBikB,EAC7B,IAAK,MAAMr5B,KAAY9S,OAAO4S,KAAKsV,EAAUrX,UACvCqX,EAAUrX,SAASiC,aAAqB2pB,GAC1CnpB,EAAIR,GAAY5T,KAAKuqC,aAAavhB,EAAUrX,SAASiC,GAAWQ,EAAIR,IAC3DoV,EAAUrX,SAASiC,aAAqBgpB,KACjDxoB,EAAIR,GAAY5T,KAAKorC,WAAWpiB,EAAUrX,SAASiC,KAIzD,OAAOQ,EAQDg3B,WAAWt/B,EAA0BmiC,GAAU,GACrD,IAAI7kB,EAAOtd,EAAYzK,OAAS,GAChC,OAAQyK,EAAYvJ,MAClB,KAAK4B,OAAcI,YAAYhC,KACzB6mB,GAAQtd,EAAYC,YAAY4T,eAC9B7T,EAAYC,YAAY+R,WAAasgB,OAASC,QAAQ97B,KACxD6mB,EAAOppB,KAAKk+B,OAAOld,OAAOhhB,KAAKk+B,OAAOI,SAAS,GAAGlV,OAAUtd,EAAYC,YAAY4T,gBAAiB,CAAE4e,SAAU,UACxGzyB,EAAYC,YAAY+R,WAAasgB,OAASI,OAAOj8B,KAC9D6mB,EAAOppB,KAAKk+B,OAAOld,OAAOhhB,KAAKk+B,OAAOI,SAAS,GAAGlV,OAAUtd,EAAYC,YAAY4T,gBAAiB,CAAE4e,SAAU,UACxGzyB,EAAYC,YAAY+R,WAAasgB,OAASrgB,UAAUxb,OACjE6mB,EAAOppB,KAAKk+B,OAAOld,OAAOhhB,KAAKk+B,OAAOI,SAAS,GAAGlV,OAAUtd,EAAYC,YAAY4T,gBAAiB,CAAE4e,SAAU,YAG3F,IAAtBzyB,EAAYzK,QACd+nB,EAAO,GAET,MACF,KAAKjlB,OAAcK,OAAOjC,KACpBuJ,EAAYC,YAAY6T,kBAAoBwJ,GAAQ/Y,MAAMC,QAAQ8Y,KACpEA,EAAOA,EAAKhE,KAAK,MAEnB,MACF,KAAKjhB,OAAcO,SAASnC,KACtB6mB,GAAQ6kB,IACV7kB,EAAOA,EAAKhE,KAAK,MAEnB,MACF,KAAKjhB,OAAcQ,WAAWpC,KACxB6mB,IACFA,EAAO6Z,KAAM7Z,GAAMpI,OAAOlV,EAAYC,YAAYkwB,YAAc,QAElE,MACF,KAAK93B,OAAcS,WAAWrC,KACxB6mB,IACFA,EAAO6Z,KAAM7Z,GAAMpI,OAAOlV,EAAYC,YAAYkV,YAAc,eAElE,MACF,KAAK9c,OAAcc,SAAS1C,KACtB6mB,IACFA,EAAOA,EAAKhE,KAAK,MAEnB,MACF,KAAKjhB,OAAcH,OAAOzB,KACxB6mB,IAASA,EACLtd,EAAYC,eACD,IAATqd,QAA2D1a,GAA1C5C,EAAYC,YAAYwwB,gBAA0E,KAA3CzwB,EAAYC,YAAYwwB,eAClGnT,EAAOtd,EAAYC,YAAYwwB,gBACb,IAATnT,QAA6D1a,GAA3C5C,EAAYC,YAAYywB,iBAA4E,KAA5C1wB,EAAYC,YAAYywB,kBAC3GpT,EAAOtd,EAAYC,YAAYywB,kBAGnC,MACF,KAAKr4B,OAAcgB,OAAO5C,KACxB,GAAIuJ,EAAYC,aAAeD,EAAYC,YAAY6W,gBAAiB,CACtE,MAAMwgB,EAA6BpjC,KAAKoqC,OAAO53B,cAAc1G,EAAYC,YAAY6W,iBACjFwgB,GAAgBA,EAAa8K,SAC/B9kB,EAAOga,EAAa8K,OAAO9kB,EAAMtd,EAAYC,eAIrD,OAAOqd,EAQDykB,aACN,MAAMrxB,EAAO,IAAImpB,KACXyD,GAAO,IAAM5sB,EAAKsqB,WAAWtF,OAAO,GACpCmF,GAAS,KAAOnqB,EAAKoqB,WAAa,IAAIpF,OAAO,GACnD,OAAOhlB,EAAKkqB,cAAgB,IAAMC,EAAQ,IAAMyC,EAQ1Ce,UACN,MAAMhoC,EAAW,GACXgsC,EAAY,uCAClB,IAAK,IAAI/tC,EAAI,EAAGA,EAAI,GAAIA,IACtB+B,EAAE/B,GAAK+tC,EAAUtT,OAAOjsB,KAAKC,MAAsB,GAAhBD,KAAKw/B,UAAkB,GAE5DjsC,EAAE,IAAM,IACRA,EAAE,IAAMgsC,EAAUtT,OAAgB,EAAR14B,EAAE,IAAa,EAAK,GAC9CA,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAM,IAC/B,MAAMksC,EAAOlsC,EAAEijB,KAAK,IACpB,OAAOipB,EASD5D,SAAS6D,EAAcC,GAC7B,MAAMzsC,EAAc,GAEd0sC,EAAoB,GAC1B,IAAKD,IAAYD,EAEf,OADAxsC,EAAO2sC,UAAY,UACZ3sC,EAET,MAAM4sC,EAAcJ,EAAQI,YAE5B,IAAK,MAAM/sC,KAAO3B,KAAKoqC,OAAO14B,QAAQsX,UAAUrX,SAAU,CACxD,IAAK28B,EAAQ3sC,KAAS4sC,EAAQ5sC,GAC5B,SAEF,MAAM4Q,EAA2BvS,KAAKgrC,WAAWrpC,GACjD,GAAK4Q,GAGDvS,KAAK2uC,eAAep8B,EAAS+7B,EAAQ3sC,GAAM4sC,EAAQ5sC,IAAO,CAC5D,IAAIitC,EAAWN,EAAQ3sC,GACvB,MAAMktC,EAAWN,EAAQ5sC,GACnBmtC,EAAiB,GACvB,GAAIv8B,EAAQhQ,OAAS4B,OAAcgB,OAAO5C,KAAM,CAC9CusC,EAAUC,SAAWptC,EACrB,MAAMhB,EAAO4R,EAAQxG,YAAY+P,kBACjCgzB,EAAUE,SAAWruC,EACrBmuC,EAAUG,UAAYJ,EAEtB,MAAMK,EAAUlvC,KAAKmvC,sBAAsB58B,EAAS5Q,EAAKktC,GACzDC,EAAUM,YAAcF,EAExBJ,EAAUO,UAAY,IAEtBP,EAAUQ,cAAgBV,EAC1B,MAAMW,EAAUvvC,KAAKmvC,sBAAsB58B,EAAS5Q,EAAKitC,GACzDE,EAAUU,gBAAkBD,EAC5BztC,EAAOH,GAAOktC,EAEdL,EAAajiC,KAAKuiC,GACD,SAAbF,GAAoC,cAAbA,IACzBA,EAAW,IAEb,MAAMa,EAAUb,EAAWW,EAAU,IAC/BG,EAAUb,EAAWK,EAAU,IAErCptC,EAAO2sC,UAAY3sC,EAAO2sC,UAAY3sC,EAAO2sC,UAAY,IAAM,GAE7D3sC,EAAO2sC,UADW,QAAhBC,EACiB5sC,EAAO2sC,UAAY,MAAQ9tC,EAA3BmB,MAA+C4tC,EAAU,IAEzD5tC,EAAO2sC,UAAY,MAAQ9tC,EAA3BmB,MAA+C2tC,EAAU,QAAUC,EAAU,SAGlG5tC,EAAOH,GAAOktC,GAKpB,OADA/sC,EAAO0sC,aAAeA,EACf1sC,EAQT6sC,eAAep8B,EAAcq8B,EAAeC,GAG1C,GAFAD,GAAsB,GACtBC,GAAsB,GACL,SAAbD,GAAoC,cAAbA,EACzB,OAAO,EAET,IAAIe,GAAO,EACX,OAAQp9B,EAAQhQ,MACd,KAAK4B,OAAcC,MAAM7B,KACnBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcI,YAAYhC,KACzBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcG,SAAS/B,KACtBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcU,OAAOtC,KACpBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcW,KAAKvC,KAClBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcK,OAAOjC,KACpBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcO,SAASnC,KACtBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcM,MAAMlC,KACnBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcQ,WAAWpC,KACxBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcS,WAAWrC,KAC5BqsC,EAAW3tB,GAAWioB,eAAe0F,EAAU,cAC/CC,EAAW5tB,GAAWioB,eAAe2F,EAAU,cAC3CD,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcc,SAAS1C,KACtBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAce,WAAW3C,KACxBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcH,OAAOzB,KACpBqsC,IAAaC,IAAUc,GAAO,GAClC,MACF,KAAKxrC,OAAcgB,OAAO5C,KACxB,MAEJ,OAAOotC,EAQTR,sBAAsB58B,EAAc5Q,EAAUN,GAC5C,IAAIsnB,EAAMtnB,EACV,OAAQkR,EAAQhQ,MACd,KAAK4B,OAAcC,MAAM7B,KACvB,MACF,KAAK4B,OAAcI,YAAYhC,KAC7B,MACF,KAAK4B,OAAcG,SAAS/B,KAC1B,MACF,KAAK4B,OAAcU,OAAOtC,KACxB,MACF,KAAK4B,OAAcW,KAAKvC,KACtB,MACF,KAAK4B,OAAcK,OAAOjC,KACpBgQ,EAAQxG,YAAYyrB,yBACtBjlB,EAAQxG,YAAYyrB,yBAAyBrrB,QAASC,IAChDA,EAAK/K,QAAUA,IACjBsnB,EAAMvc,EAAK6P,SAIf1J,EAAQxG,YAAYwrB,aAAaprB,QAASC,IACpCA,EAAK/K,QAAUA,IACjBsnB,EAAMvc,EAAK6P,SAIjB,MACF,KAAK9X,OAAcO,SAASnC,KAC1BomB,EAAM,GACFtnB,IACEkR,EAAQxG,YAAYyrB,yBACtBjlB,EAAQxG,YAAYyrB,yBAAyBrrB,QAASC,IACpD/K,EAAM0N,MAAM,KAAK5C,QAASyG,IACpBxG,EAAK/K,QAAUuR,IACjB+V,EAAMA,EAAMvc,EAAK6P,MAAQ,SAK/B1J,EAAQxG,YAAYwrB,aAAaprB,QAASC,IACxC/K,EAAM0N,MAAM,KAAK5C,QAASyG,IACpBxG,EAAK/K,QAAUuR,IACjB+V,EAAMA,EAAMvc,EAAK6P,MAAQ,SAKjC0M,EAAMA,EAAIlZ,UAAU,EAAGkZ,EAAI1c,OAAS,IAEtC,MACF,KAAK9H,OAAcM,MAAMlC,KACnBgQ,EAAQxG,YAAYyrB,yBACtBjlB,EAAQxG,YAAYyrB,yBAAyBrrB,QAASC,IAChDA,EAAK/K,QAAUA,IACjBsnB,EAAMvc,EAAK6P,SAIf1J,EAAQxG,YAAYwrB,aAAaprB,QAASC,IACpCA,EAAK/K,QAAUA,IACjBsnB,EAAMvc,EAAK6P,SAIjB,MACF,KAAK9X,OAAcQ,WAAWpC,KAC5B,MACF,KAAK4B,OAAcS,WAAWrC,KAC5BomB,EAAM1H,GAAWioB,eAAe7nC,EAAO,cACvC,MACF,KAAK8C,OAAcc,SAAS1C,KAC1BomB,EAAM,GACFtnB,GACF2pB,GAA2BF,uBAAuBvY,EAAQxG,YAAY0rB,iBAAkB,GAAI,YAAYtrB,QAASC,IAC/G/K,EAAM0N,MAAM,KAAK5C,QAASyG,IACpBxG,EAAK/K,QAAUuR,IACjB+V,EAAMA,EAAMvc,EAAK6P,MAAQ,SAI/B0M,EAAMA,EAAIlZ,UAAU,EAAGkZ,EAAI1c,OAAS,IAEpC0c,EAAM,GAER,MACF,KAAKxkB,OAAce,WAAW3C,KAC5BomB,EAAM,GACNqC,GAA2BF,uBAAuBvY,EAAQxG,YAAY0rB,iBAAkB,GAAI,YAAYtrB,QAASC,IAC3GA,EAAK/K,QAAUA,IACjBsnB,GAAYvc,EAAK6P,SAGrB,MACF,KAAK9X,OAAcH,OAAOzB,KACxBomB,EAAMtnB,EAAQ,IAAM,IACpB,MACF,KAAK8C,OAAcgB,OAAO5C,KACxB,MACF,QACEomB,EAAMtnB,EACN,MAEJ,OAAOsnB,EAQTinB,qBAAqBC,EAAWttC,GAC9B,MAAMutC,EAASvtC,GAAQA,EAAK0J,OAAS,EAAI1J,EAAO,GAC1CwtC,EAAY/vC,KAAKoqC,OAAO14B,QAAQC,SAAS,GAAGuI,YAC5C81B,EAAuBtX,GAAiBL,aAAar4B,KAAKoqC,OAAO14B,QAAQwR,QAAQvR,SAAS,GAAGuI,YAC7F+1B,EAAyB,GAC3BH,EAAO7jC,OAAS,GAElB8jC,EAAK5jC,QAAQ,CAACC,EAAWwG,KACnBxG,EAAKN,YAEF+jC,EAAKlE,aAAav/B,EAAKN,YAAYnK,IAAKsoC,GAAUiG,iBAErDD,EAAkB1jC,KAAKH,EAAKN,YAAYnK,KAExCkuC,EAAKjE,aAAax/B,EAAKN,YAAYnK,IAAKsoC,GAAUiG,cAAeF,EAAgBp9B,GAAO7G,YAAY4N,eAEpG3Z,KAAKmwC,oBAAoBF,EAAmBH,EAAQ1jC,IAE7CA,EAAK8N,aAGd9N,EAAK8N,YAAY/N,QAAQ,CAACoG,EAAcyoB,KAEjC6U,EAAKlE,aAAap5B,EAAQzG,YAAYnK,IAAKsoC,GAAUiG,iBACxDD,EAAkB1jC,KAAKgG,EAAQzG,YAAYnK,KAE3CkuC,EAAKjE,aAAar5B,EAAQzG,YAAYnK,IAAKsoC,GAAUiG,cAAeF,EAAgBp9B,GAAOsH,YAAY8gB,GAAKjvB,YAAY4N,eAExH3Z,KAAKmwC,oBAAoBF,EAAmBH,EAAQv9B,QAM5D09B,EAAkB9jC,QAASC,IACzByjC,EAAKjE,aAAax/B,EAAM69B,GAAUiG,eAAe,MAInDH,EAAK5jC,QAAQ,CAACC,EAAWwG,KACnBxG,EAAKN,YACP+jC,EAAKjE,aAAax/B,EAAKN,YAAYnK,IAAKsoC,GAAUiG,cAAeF,EAAgBp9B,GAAO7G,YAAY4N,eAC3FvN,EAAK8N,aACd9N,EAAK8N,YAAY/N,QAAQ,CAACoG,EAAcyoB,KACtC6U,EAAKjE,aAAar5B,EAAQzG,YAAYnK,IAAKsoC,GAAUiG,cAAeF,EAAgBp9B,GAAOsH,YAAY8gB,GAAKjvB,YAAY4N,mBAY1Hw2B,oBAAoBF,EAAwBG,EAAcC,GAChE,IAAIt0B,EAAqB,GACzB,GAAgF,KAA5EyM,KAAKC,MAAM4nB,EAAcvkC,YAAYC,YAAY0wB,SAAS1gB,cAAsB,CAElFA,EAAgByM,KAAKC,MAAM4nB,EAAcvkC,YAAYC,YAAY0wB,SAAS1gB,cAAchN,MAAM,KAE9F,IAAK,IAAI3O,EAAI,EAAGA,EAAIgwC,EAAQnkC,OAAQ7L,IAElC,GAAI2b,EAAcyN,OAAQnlB,GAAcA,IAAS+rC,EAAQhwC,IAAI6L,OAAS,GAAKgkC,EAAkBhgC,QAAQogC,EAAcvkC,YAAYnK,MAAQ,EAAG,CACxIsuC,EAAkB/S,OAAO+S,EAAkBhgC,QAAQogC,EAAcvkC,YAAYnK,KAAM,GACnF,QAWR2uC,mBACE,MAAMP,EAAY,GAOlB,OANAjvC,OAAOg2B,OAAO9vB,QAAemF,QAASC,IACpC2jC,EAAKxjC,KAAK,CACRlL,MAAO+K,EAAK7J,KACZiZ,MAAOpP,EAAKzL,SAGTovC,GC/qCX,IAAqBQ,GAArB,cAAoCtR,SAAG3qB,eAAAspB,GAAA,SAAAA,GAAA5oB,EAAA,sBAAAA,EAAA,oBAAAA,EAAA,yBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,qBAAAA,EAAA,yBAAAA,EAAA,2BAAAA,EAAA,uBAAAA,EAAA,uBAAAA,EAAA,6BAAAA,EAAA,gCAcNA,EAAA,mCAC0BA,EAAA,yBACRA,EAAA,wBACCA,EAAA,0BACPA,EAAA,oBAEhB,IAAI2wB,MAAOqE,WAAWh1B,EAAA,iCACd,IAAI2wB,MAAOqE,WAAWh1B,EAAA,4BACL,IAAIA,EAAA,gCACA,IAAIA,EAAA,mCAClB,IAAI2wB,MAAOqE,WAAWh1B,EAAA,eAE7C,IAAI+T,IAAS/T,EAAA,yBAEkB,CAChD/C,KAAOjS,KAAKmR,OAAec,KAC3BoS,UAAYrkB,KAAKmR,OAAekT,UAChCC,YAActkB,KAAKmR,OAAemT,YAClCtJ,MAAQhb,KAAKmR,OAAe6J,MAC5B6nB,YAAa7iC,KAAK6iC,YAClB0J,yBAA0BvsC,KAAKusC,yBAC/B9H,oBAAsBzkC,KAAKmR,OAAeszB,oBAC1CiI,2BAA4B1sC,KAAK0sC,6BASnCG,0BAA0BhL,GACxB7hC,KAAK6iC,YAAchB,EASrB2O,sCACOxwC,KAAaywC,YACdzwC,KAAaywC,UAAkBp1B,kBAAkBqxB,2BAA6B1sC,KAAK0sC,4BAezFgE,gBACM1wC,OACFA,KAAKqb,kBAAkBpJ,KAAOjS,KAAKiS,KACnCjS,KAAKqb,kBAAkBgJ,UAAYrkB,KAAKqkB,UACxCrkB,KAAKqb,kBAAkBiJ,YAActkB,KAAKskB,YAC1CtkB,KAAKqb,kBAAkBwnB,YAAc7iC,KAAK6iC,YAC1C7iC,KAAKqb,kBAAkBkxB,yBAA2BvsC,KAAKusC,yBACvDvsC,KAAKqb,kBAAkBopB,oBAAsBzkC,KAAKykC,qBAItD,kBACE,MAAMkM,EAAWhgC,OAEXigC,EAAS,CAAC,UAAW,OAAQ,QAAS,aACtCC,EAAYD,EAAO3gC,QAAQjQ,KAAK6wC,YAAc,EAAI7wC,KAAK6wC,UAAYF,EAAIG,aAC7E,OAAOF,EAAO3gC,QAAQ4gC,IAAc,EAAIA,EAAYD,EAAO,GAG7D,kBAAe,IAAAG,EACb,MAAMC,EAAoB,GAI1B,OAHe,QAAfD,EAAA/wC,KAAKixC,kBAAU,IAAAF,GAAfA,EAAiB5kC,QAASC,IACxB4kC,EAAa5kC,EAAKsd,IAAMtd,IAEnB4kC,EAQTr+B,UAAUyW,GACRppB,KAAKo/B,MAAM,YAAahW,GAG1B8nB,UACElxC,KAAKmxB,WAGP+N,UACMl/B,KAAKkjB,OACPljB,KAAKmxC,cACInxC,KAAK0R,SACd1R,KAAK4zB,gBAKDwd,kBACNpxC,KAAKmxC,cAICE,oBAAoBxP,GACZ,MAAVA,IACF7hC,KAAK0R,QAAUkX,GAAqBL,KAAKsZ,GACzC7hC,KAAK4zB,iBASDud,cACa,MAAfnxC,KAAKkjB,QAAkC,KAAhBljB,KAAKkjB,QAC9BwV,GAAiBJ,aAAat4B,KAAKkjB,QAAQmD,KAAMwpB,IAC/C7vC,KAAK0R,QAAUm+B,EACf7vC,KAAK4zB,kBAUHzC,WACNnxB,KAAKs0B,qBAAuBoE,GAAiBpE,qBAC7Ct0B,KAAKu0B,yBAA2BmE,GAAiBnE,yBAQ3CX,cAAc0d,GACpB,GAAoB,MAAhBtxC,KAAK0R,SAA4C,MAAzB1R,KAAK0R,QAAQC,UAAoB3R,KAAK0R,QAAQC,SAAS1F,OAAS,EAAG,CAC7F,MAAMslC,EAAQvxC,KAAKwxC,yBAIO,IAAAC,EAA1B,GAHAzxC,KAAK0R,QAAQsX,UAAYhpB,KAAK0xC,kBAAkBH,GAChDvxC,KAAK2xC,gBAAgB3xC,KAAK0R,QAAQC,SAAU3R,KAAK0R,QAAQsX,WACzDhpB,KAAK4xC,gBAAgBN,GACD,MAAhBtxC,KAAKsc,QACK,QAAZm1B,EAAAzxC,KAAKguB,eAAO,IAAAyjB,GAAZA,EAAclE,sBAAsBvtC,KAAKsc,SAE3Ctc,KAAKo/B,MAAM,aASPyS,gBACN7xC,KAAKgiC,UAAU,KACb3T,QAAQC,IAAI,YACZ,IACE,MAAMwjB,EAAgB9xC,KAAK+xC,MAAMD,SAC3BE,EAAOF,EAAS/E,uBAAuB,wBACvCzM,EAAM0R,EAAK/lC,OACjB,IAAK,IAAI7L,EAAI,EAAGA,EAAIkgC,EAAM,EAAGlgC,IACvB4xC,EAAK5xC,GAAG6xC,aAAeD,EAAK5xC,EAAI,GAAG6xC,YAAcD,EAAK5xC,GAAG8xC,YAAcF,EAAK5xC,EAAI,GAAG8xC,YACrFF,EAAK5xC,GAAG2Z,MAAMS,MAAQ,OAEtBw3B,EAAK5xC,GAAG2Z,MAAMS,MAAQ,OAG1B,GAAI8lB,EAAM,EAAG,CACX,MAAM6R,EAAOH,EAAK1R,EAAM,GAClB8R,EAAOJ,EAAK1R,EAAM,GACpB6R,EAAKD,cAAgBE,EAAKF,aAAeC,EAAKF,aAAeG,EAAKH,WACpEE,EAAKp4B,MAAMS,MAAQ,OAEnB23B,EAAKp4B,MAAMS,MAAQ,QAGvB,MAAOxK,GACPqe,QAAQ1H,MAAM,aAAe3W,MAU3B4hC,gBAAgBN,GACtB,GAAIA,EAAS,CACX,MAAMtjB,EAAmB,IAAIkc,GAAQlqC,KAAKguB,SAC1CA,EAAQoc,OAASpqC,KACjBA,KAAKo/B,MAAM,iBAAkBpR,QAE7B,GAAIhuB,KAAKguB,QACPhuB,KAAKguB,QAAQoc,OAASpqC,KACtBA,KAAKo/B,MAAM,iBAAkBp/B,KAAKguB,aAC7B,CACL,MAAMA,EAAU,IAAIkc,GAAQ,CAAEE,OAAQpqC,OACtCA,KAAKo/B,MAAM,iBAAkBpR,IAU3BwjB,yBACN,MAAMa,EAAgBryC,KAAKsyC,iBAAiBtyC,KAAK0R,QAASC,UAC1D,IAAIyC,EAAW,GAQf,OAPc,MAAVi+B,GAAkBA,EAAOpmC,OAAS,GACpComC,EAAOlmC,QAASC,IACVtL,OAAO4S,KAAKtH,GAAMH,OAAS,IAC7BmI,EAAMpU,KAAKuyC,YAAYn+B,EAAKhI,EAAKtL,OAAO4S,KAAKtH,GAAM,QAIlDgI,EAQDk+B,iBAAiB3gC,EAAqB0gC,EAAgB,IAqC5D,OApCA1gC,EAASxF,QAASC,IAChB,GAAIA,EAAK/H,OAASV,OAAeC,OAAOrB,MACtC,GAAwB,MAApB6J,EAAK8N,aAAuB9N,EAAK8N,YAAYjO,OAAS,EACxD,OAAOjM,KAAKsyC,iBAAiBlmC,EAAK8N,YAAam4B,OAE5C,CACL,MAAMxb,EAAqC,OAAJzqB,QAAI,IAAJA,OAAI,EAAJA,EAAML,YACvCuP,EAAwBub,EAAevb,cAC7C,GAAIA,EAAe,EAEbub,EAAeiF,mBAAqBjF,EAAekF,YACjDlF,EAAe+E,eAAiB94B,OAAWE,QAAQT,OACjDs0B,EAAegF,oBAAsBx5B,OAAkBC,kBAAkBC,KAC3Es0B,EAAeW,yBAA2Bx3B,KAAKwyC,gBAAgB3b,EAAeiF,kBAAmB97B,KAAKs0B,sBAC7FuC,EAAegF,oBAAsBx5B,OAAkBG,eAAeD,OAC/Es0B,EAAeY,iBAAmBz3B,KAAKwyC,gBAAgB3b,EAAekF,UAAW/7B,KAAKu0B,4BAK5F,MAAMke,EAAsBn3B,EAAcvM,MAAM,KAChD,IAAI2jC,EAAc,GAClB,MAAMC,EAAK,CAAED,UACbD,EAAUtmC,QAAQ,CAAC7I,EAAKwjB,EAAKqG,KAC3B,GAAIrG,EAAMqG,EAAMlhB,OAAS,EACvBymC,EAAOpvC,GAAO,GACdovC,EAASA,EAAOpvC,OACX,CACL,MAAMsvC,EAAoBhqB,GAAqBH,MAAOrc,EAAKL,YAA+BqvB,oBAAsB,GAChHsX,EAAOpvC,GAAOtD,KAAK6yC,cAAczmC,EAAMwmC,MAG3CP,EAAO9lC,KAAKomC,EAAGD,YAIdL,EAQDG,gBAAgB7wC,EAAagqB,GACnC,GAAyB,MAArBA,GAA6BA,EAAkB1f,OAAS,EAC1D,IAAK,MAAMG,KAAQuf,EAAmB,CACpC,GAAIvf,EAAKzK,MAAQA,EAIf,OAHCyK,EAAKqd,UAAY,IAAItd,QAASC,IAC7BA,EAAKiR,UAAW,IAEXjR,EAAKqd,UAAY,GACnB,GAAIrd,EAAKqd,UAAYrd,EAAKqd,SAASxd,OAAS,EAAG,CACpD,MAAM6mC,EAAgC9yC,KAAKwyC,gBAAgB7wC,EAAKyK,EAAKqd,UACrE,GAAgB,MAAZqpB,GAAoBA,EAAS7mC,OAAS,EACxC,OAAO6mC,GAKf,MAAO,GAQTD,cAActgC,EAAkBqgC,GAC9B,GAAIrgC,EAAQhQ,OAAS4B,OAAcS,WAAWrC,MAAQgQ,EAAQhQ,OAAS4B,OAAcQ,WAAWpC,KAC9F,OAAIqwC,GAGK,KAEJ,GAAIrgC,EAAQhQ,OAAS4B,OAAce,WAAW3C,KAAM,CACzD,MAAMie,EAAUmd,GAAeprB,EAAQxG,aAIvC,OAHIyU,GAAWA,EAAQvU,OAAS,GAAK2mC,IACnCA,EAAe5yC,KAAK2iC,oBAAoBiQ,EAAcpyB,IAEjDoyB,EACF,OAAIrgC,EAAQhQ,OAAS4B,OAAcY,OAAOxC,KACxCqwC,GAAgB,GACdrgC,EAAQhQ,OAAS4B,OAAcH,OAAOzB,KAC3CgQ,EAAQxG,aAAgBwG,EAAQxG,YAA+BwwB,gBACzC,IAAjBqW,GAAyBA,IAAkBrgC,EAAQxG,YAA+BwwB,eAChFhqB,EAAQxG,aAAgBwG,EAAQxG,YAA+BywB,iBAChD,IAAjBoW,GAA0BA,IAAkBrgC,EAAQxG,YAA+BywB,gBAErFoW,EAEAA,EASXjQ,oBAAoBthC,EAAYohC,GAC9B,IAAK,IAAIriC,EAAI,EAAGA,EAAIqiC,EAAMx2B,OAAQ7L,IAAK,CACrC,GAAIqiC,EAAMriC,GAAGuB,MAAQN,EACnB,OAAOohC,EAAMriC,GAAGiB,MACX,GAAIohC,EAAMriC,GAAGqpB,UAAYgZ,EAAMriC,GAAGqpB,SAASxd,OAAS,EAAG,CAC5D,MAAM8mC,EAAW/yC,KAAK2iC,oBAAoBthC,EAAOohC,EAAMriC,GAAGqpB,UAC1D,GAAIspB,EACF,OAAOA,GAIb,MAAO,GAQDR,YAAYS,EAAaC,GAC/B,IAAItxC,EACJ,IAAKA,KAAOsxC,EACND,EAAOrxC,IAAmC,oBAA3BqxC,EAAOrxC,GAAKmN,YAAoCmkC,EAAOtxC,IAAmC,oBAA3BsxC,EAAOtxC,GAAKmN,WAC5FkkC,EAAOrxC,GAAO3B,KAAKuyC,YAAYS,EAAOrxC,GAAMsxC,EAAOtxC,IAEnDqxC,EAAOrxC,GAAOqxC,EAAOrxC,GAAOsxC,EAAOtxC,GAGvC,OAAOqxC,EAQDtB,kBAAkBH,GACxB,MAAM2B,EAAmB,IAAI3V,GAc7B,OAba,MAATgU,GACFzwC,OAAO4S,KAAK69B,GAAOplC,QAASxK,IAC1B,GAAmD,oBAA/Cb,OAAOkB,UAAU8M,SAASvO,KAAKgxC,EAAM5vC,IAA6B,CACpE,MAAMwxC,EAA0BnzC,KAAK0xC,kBAAkBH,EAAM5vC,IAC7DwxC,EAAaxxC,IAAMA,EACnBuxC,EAAM1V,WAAW77B,EAAKwxC,OACjB,CACL,MAAMrnC,EAA2B,IAAI8wB,GAAY2U,EAAM5vC,IACvDmK,EAAYnK,IAAMA,EAClBuxC,EAAM1V,WAAW77B,EAAKmK,MAIrBonC,EAQDvB,gBAAgBhgC,EAAqBqX,GAC3CrX,EAASxF,QAASoG,IAChB,GAAIA,EAAQlO,OAASV,OAAeG,KAAKvB,MAAQgQ,EAAQlO,OAASV,OAAeI,OAAOxB,KAAM,KAAA6wC,EAC5F,MAAM93B,EAA+D,QAAlD83B,EAAY7gC,EAAQxG,mBAA8B,IAAAqnC,OAAA,EAAtCA,EAAwC93B,cACvE,GAAIA,EAAe,CACjB,MAAMm3B,EAAsBn3B,EAAcvM,MAAM,KAChD,GAAI0jC,EAAUxmC,OAAS,GAAkB,MAAb+c,EAAmB,CAC7C,MAAMld,EAA2B9L,KAAKqzC,0BAA0BZ,EAAUjR,MAAM,EAAGiR,EAAUxmC,QAAS+c,GAChGjd,EAA8BwG,EAAQxG,YAEtChK,EAAW0wC,EAAUA,EAAUxmC,OAAS,GACxCqnC,EAAYtzC,KAAKuzC,YAAYxxC,GACnC,GAAIuxC,EAAW,KAAAE,EACbznC,EAAY4N,cAAqC,MAArB25B,EAAUG,OACtC1nC,EAAYuR,UAAoC,MAAxBg2B,EAAUh2B,UAClC,MAAMo2B,EAA6C,QAAhCF,EAAGznC,EAAYC,yBAAiB,IAAAwnC,OAAA,EAA7BA,EAA+BxW,UAAW5wB,GAAcA,EAAKK,WAAazC,OAAcgB,SAASzI,MAC3F,KAAxB+wC,EAAUK,aAAuC,GAAlBD,EAEjC3nC,EAAYC,kBAAkBO,KAAK,CAAEE,SAAUzC,OAAcgB,SAASzI,OACrC,KAAxB+wC,EAAUK,YAAqBD,GAAiB,GAEzD3nC,EAAYC,kBAAkBkxB,OAAOwW,EAAe,GAGxD5nC,EAAYvJ,KAAOgQ,EAAQhQ,KAC3BuJ,EAAYC,YAAcA,EAC1B2E,QAAyB7E,cAAcC,EAAaC,GACpDwG,EAAQ,eAAiBzG,SAGpByG,EAAQlO,OAASV,OAAeC,OAAOrB,MAA+B,MAAvBgQ,EAAQ2H,aAAuB3H,EAAQ2H,YAAYjO,OAAS,GACpHjM,KAAK2xC,gBAAgBp/B,EAAQ2H,YAAa8O,KAUxCqqB,0BAA0BZ,EAAqBzpB,GACrD,IAAI4qB,EAAmB5qB,EACvB,IAAK,IAAI5oB,EAAI,EAAGA,EAAIqyC,EAAUxmC,OAAQ7L,IAAK,CACzC,MAAMyzC,EAAaD,EAAiB3yC,IAAIwxC,EAAUryC,IAClD,KAAIA,EAAIqyC,EAAUxmC,OAAS,GAAmB,MAAd4nC,GAAsBA,aAAsBtW,IAG1E,OAAOsW,EAFPD,EAAmBC,GAYzBhhC,SAAS4c,GACPzvB,KAAKo/B,MAAM,SAAU3P,GAQvBlc,cAAckc,GACZzvB,KAAKo/B,MAAM,WAAY3P,GAQzBxc,QAAQwc,GACNzvB,KAAKo/B,MAAM,QAAS3P,GAQtBtc,qBAAqBsc,GACnBzvB,KAAKo/B,MAAM,eAAgB3P,GAQ7Bpc,oBAAoBoc,GAClBzvB,KAAKo/B,MAAM,cAAe3P,GAQ5B1c,QAAQ0c,GACNzvB,KAAKo/B,MAAM,QAAS3P,GAQtBzc,OAAOyc,GACLzvB,KAAKo/B,MAAM,OAAQ3P,KA7gBb+P,wBAAA,CAAPC,qB,8BACOD,wBAAA,CAAPC,qB,4BAC2CD,wBAAA,CAA3CC,kBAAK,CAAEp7B,KAAMmK,OAAQvL,QAAS,a,iCACvBu8B,wBAAA,CAAPC,qB,kCACwCD,wBAAA,CAAxCC,kBAAK,CAAEx8B,SAAS,EAAOoB,KAAMyvC,W,4BACWtU,wBAAA,CAAxCC,kBAAK,CAAEx8B,SAAS,EAAOoB,KAAMyvC,W,6BACYtU,wBAAA,CAAzCC,kBAAK,CAAEx8B,QAAS,QAASoB,KAAMmK,U,iCACFgxB,wBAAA,CAA7BC,kBAAK,CAAEx8B,aAASyL,K,mCACO8wB,wBAAA,CAAvBC,kBAAK,CAAEp7B,KAAMvD,U,+BACS0+B,wBAAA,CAAtBC,kBAAK,CAAEp7B,KAAMgM,S,+BAC+BmvB,wBAAA,CAA5CC,kBAAK,CAAEp7B,KAAMvD,OAAQmC,QAASA,KAAA,O,qCAGvBu8B,wBAAA,CAAPC,qB,wCACyBD,wBAAA,CAAzBC,kBAAK,CAAEx8B,SAAS,K,2CACOu8B,wBAAA,CAAvBC,kBAAK,CAAEp7B,KAAMmK,U,iCACSgxB,wBAAA,CAAtBC,kBAAK,CAAEp7B,KAAMgM,S,gCACSmvB,wBAAA,CAAtBC,kBAAK,CAAEp7B,KAAMgM,S,kCAUHmvB,wBAAA,CAAVuU,wB,yCAiBDvU,wBAAA,CADCG,mBAAM,mBAAoB,CAAEqH,WAAW,K,+CAWxCxH,wBAAA,CADCG,mBAAM,+B,yDAkBPH,wBAAA,CANCG,mBAAM,QACNA,mBAAM,aACNA,mBAAM,eACNA,mBAAM,eACNA,mBAAM,4BACNA,mBAAM,wB,mCAkDPH,wBAAA,CADCG,mBAAM,W,qCAMPH,wBAAA,CADCG,mBAAM,aAAc,CAAEqH,WAAW,K,yCA7HfuJ,GAAM/Q,wBAAA,CAN1BI,qBAAQ,CACPj/B,KAAM,SACNumC,WAAY,CACVvF,aAAcA,OAGG4O,c,UC7BrB,MAAM,GAA2B,KAAgB,GAAQ,CAAC,CAAC,SAASv/B,GAAQ,CAAC,YAAY,qBAE1E,U,iCCYf,MAAMk2B,GAAkB,CACtBqJ,WAGIyD,GAAe,SAAUC,EAAUzzB,GACvC,GAAIwzB,GAAQE,UAAW,OACvBF,GAAQE,WAAY,EAEpBpzC,OAAO4S,KAAKwzB,IAAY/6B,QAASxK,IAC/BsyC,EAAIE,UAAUxyC,EAAKulC,GAAWvlC,MAEhCshC,KAAMpiB,OAAO,SAEb,MAAM4F,EAAcjG,GAAWA,EAAQiG,IAAMjG,EAAQiG,IAAM,oBAAsB+F,GACjFynB,EAAI5sB,OAAOC,iBAAiBC,QAAU,CACpCd,IAAKA,EACL8K,YAAa/Q,EAAQ+Q,aAAe,YACpC8C,QAAS7T,GAAWA,EAAQ6T,QAAU7T,EAAQ6T,QAAU,GACxDQ,iBAAkBrU,GAAWA,EAAQqU,iBAAmBrU,EAAQqU,iBAAmB,MACnFE,iBAAkBvU,GAAWA,EAAQuU,iBAAmBvU,EAAQuU,sBAAmBrmB,EACnFsmB,oBAAqBxU,GAAWA,EAAQwU,oBAAsBxU,EAAQwU,yBAAsBtmB,EAC5FkmB,wBAAsBpU,IAAWA,EAAQoU,uBAAuBpU,EAAQoU,qBACxE7C,SAAUvR,GAAWA,EAAQuR,SAAWvR,EAAQuR,SAAW,SAC3D5O,MAAO3C,GAAWA,EAAQ2C,MAAQ3C,EAAQ2C,MAAQ,GAClD0Q,wBAAsBrT,IAAWA,EAAQqT,uBAAuBrT,EAAQqT,qBACxEpB,KAAa,OAAPjS,QAAO,IAAPA,OAAO,EAAPA,EAASiS,KACf2hB,SAAiB,OAAP5zB,QAAO,IAAPA,OAAO,EAAPA,EAAS4zB,UAErBH,EAAI5sB,OAAOC,iBAAiB+sB,kBAAoB3b,GAC/C/nB,OAAeyW,KAAO6sB,EACvB9rB,GAAwBX,OACxBsB,GAAuBtB,OACvBa,GAAuBb,OAEvB,MAAM8sB,EAA0B,CAC9BC,4CACAC,gDACAC,gDACAC,gDACAC,sCACAC,6CAEI1W,EAAgCx8B,qBAAO4yC,EAAoB,CAC/DrlC,OAAQ,YACRgQ,UAAW,KAEbg1B,EAAI5sB,OAAOC,iBAAiB6W,QAAUD,GAGlC2W,GAAY,CAChBb,YAEaa,UCvEA,iB,kCCFf,wCAAMzW,EAAW,CACfC,QAAS,CAAE97B,KAAM,IAAK5B,KAAM,MAC5B69B,OAAQ,CAAEj8B,KAAM,IAAK5B,KAAM,MAC3Bod,UAAW,CAAExb,KAAM,IAAK5B,KAAM","file":"vue3-lo-form.umd.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue3-lo-form\"] = factory();\n\telse\n\t\troot[\"vue3-lo-form\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n","module.exports = require(\"vue-property-decorator\");","// 动态字典类型\r\nconst DynamicOptionType = {\r\n GeneralDictionary: { code: \"1\", name: \"常规\" },\r\n TreeDictionary: { code: \"2\", name: \"树形\" },\r\n};\r\nexport { DynamicOptionType };\r\n","module.exports = require(\"core-js/modules/es.array.push.js\");","// 校验状态\r\nconst ValidateStatus: any = {\r\n Success: { code: \"success\", name: \"通过\" },\r\n Warning: { code: \"warning\", name: \"警告\" },\r\n Error: { code: \"error\", name: \"未通过\" },\r\n Validating: { code: \"validating\", name: \"校验中\" },\r\n};\r\nexport { ValidateStatus };\r\n","module.exports = require(\"dayjs/locale/zh-cn\");","module.exports = require(\"ant-design-vue\");","const OptionType = {\r\n Fixed: { code: \"1\", name: \"固定\" },\r\n Dynamic: { code: \"2\", name: \"动态\" },\r\n};\r\nexport { OptionType };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvFormLayout.vue?vue&type=style&index=0&id=2f021ee3&lang=scss&scoped=true\"","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","module.exports = require(\"dayjs\");","module.exports = require(\"vue\");","module.exports = require(\"@ant-design/icons-vue\");","// 数据缓存类型\r\nconst CacheType = {\r\n FORM: { code: \"1\", name: \"表格\" },\r\n TABLE: { code: \"2\", name: \"表单\" },\r\n DICT: { code: \"3\", name: \"字典\" },\r\n};\r\nexport { CacheType };\r\n","// 字段分类\r\nconst FormFieldClass = {\r\n Layout: { code: \"1\", name: \"布局\", icon: \"profile\" },\r\n Base: { code: \"2\", name: \"基础字段\", icon: \"profile\" },\r\n Senior: { code: \"3\", name: \"高级字段\", icon: \"profile\" },\r\n};\r\nexport { FormFieldClass };\r\n","module.exports = require(\"mathjs\");","module.exports = require(\"ant-design-vue/es/date-picker/locale/zh_CN\");","module.exports = require(\"localforage\");","module.exports = require(\"moment\");","const Switch = {\r\n Disable: { code: \"0\", name: \"禁用\" },\r\n Enable: { code: \"1\", name: \"启用\" },\r\n};\r\nexport { Switch };\r\n","import { FormFieldClass } from \"./form-field-class.enum\";\r\n// 控件类型\r\nconst FormFieldType = {\r\n Input: { code: \"1\", name: \"输入框\", icon: \"icondanhangwenben\", type: FormFieldClass.Base.code },\r\n Textarea: { code: \"2\", name: \"多行文本\", icon: \"iconduohangwenben\", type: FormFieldClass.Base.code },\r\n InputNumber: { code: \"3\", name: \"数字输入框\", icon: \"iconjishuqi\", type: FormFieldClass.Base.code },\r\n Select: { code: \"4\", name: \"选择器\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Base.code },\r\n Radio: { code: \"5\", name: \"单选框\", icon: \"icondanxuankuangzu\", type: FormFieldClass.Base.code },\r\n Checkbox: { code: \"6\", name: \"多选框\", icon: \"iconduoxuankuangzu\", type: FormFieldClass.Base.code },\r\n Switch: { code: \"7\", name: \"开关\", icon: \"iconkaiguan\", type: FormFieldClass.Base.code },\r\n TimePicker: { code: \"8\", name: \"时间选择框\", icon: \"iconshijianxuanzeqi\", type: FormFieldClass.Base.code },\r\n DatePicker: { code: \"9\", name: \"日期选择框\", icon: \"iconriqixuanzeqi\", type: FormFieldClass.Base.code },\r\n Slider: { code: \"10\", name: \"滑动输入条\", icon: \"iconhuakuai\", type: FormFieldClass.Base.code },\r\n Rate: { code: \"11\", name: \"评分\", icon: \"iconpingfen\", type: FormFieldClass.Base.code },\r\n\r\n Upload: { code: \"50\", name: \"上传\", icon: \"iconwenjian\", type: FormFieldClass.Senior.code },\r\n Editor: { code: \"51\", name: \"编辑器\", icon: \"iconbianjiqi\", type: FormFieldClass.Senior.code },\r\n Cascader: { code: \"52\", name: \"级联选择\", icon: \"iconjilianxuanzeqi\", type: FormFieldClass.Senior.code },\r\n TreeSelect: { code: \"53\", name: \"树选择\", icon: \"iconxialaxuanzekuang\", type: FormFieldClass.Senior.code },\r\n Custom: { code: \"54\", name: \"自定义组件\", icon: \"iconzidingyizujian\", type: FormFieldClass.Senior.code },\r\n\r\n Empty: { code: \"101\", name: \"根布局\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n Grid: { code: \"102\", name: \"栅格\", icon: \"iconzhagebuju\", type: FormFieldClass.Layout.code },\r\n};\r\nexport { FormFieldType };\r\n","// 内置前/后置标签\r\nconst BuiltLabel = {\r\n ORDERED_LIST: { code: \"1\", name: \"ordered-list\" },\r\n};\r\nexport { BuiltLabel };\r\n","// 控件格式化类型\r\nconst ControlFormatType = {\r\n GENERAL: { code: \"1\", name: \"常规数字\" },\r\n AMOUNT_OF_MONEY: { code: \"2\", name: \"金额\" },\r\n BANK_CARD_NUMBER: { code: \"3\", name: \"银行卡号\" },\r\n CELL_PHONE_NUMBER: { code: \"4\", name: \"手机号\" },\r\n LANDLINE_NUMBER: { code: \"5\", name: \"座机号\" },\r\n};\r\nexport { ControlFormatType };\r\n","// 动态字典类型\r\nconst FormBusAttr = {\r\n SUBMITTED_TYPE: { code: \"submittedType\", name: \"报送类型\" },\r\n IS_SUPPLEMENT: { code: \"isSupplement\", name: \"是否补录\" },\r\n IS_KEY_ELEMENTS: { code: \"isKeyElements\", name: \"是否关键要素\" },\r\n IS_TRACK: { code: \"isTrack\", name: \"是否追踪\" },\r\n};\r\nexport { FormBusAttr };\r\n","const FormType = {\r\n Pc: { code: \"1\", name: \"PC端\" },\r\n Mobile: { code: \"2\", name: \"移动端\" },\r\n};\r\nexport { FormType };\r\n","// 横向排列\r\nconst LateralArrangement = {\r\n AlignLeft: { code: \"1\", name: \"左对齐\" },\r\n RightAlignment: { code: \"2\", name: \"右对齐\" },\r\n Center: { code: \"3\", name: \"居中\" },\r\n BothSidesAreEquallySpaced: { code: \"4\", name: \"两侧间隔相等\" },\r\n AlignBothEnds: { code: \"5\", name: \"两端对齐\" },\r\n};\r\nexport { LateralArrangement };\r\n","const MoneyUnit = {\r\n Yuan: { code: \"1\", name: \"元\" },\r\n TenThousandYuan: { code: \"2\", name: \"万元\" },\r\n HundredMillionYuan: { code: \"3\", name: \"亿元\" },\r\n};\r\nexport { MoneyUnit };\r\n","// 报送信息类型\r\nconst SubmittedType = {\r\n EAST: { code: \"1\", name: \"EAST\" },\r\n CITIC: { code: \"2\", name: \"中信登\" },\r\n TOTAL_ELEMENTS: { code: \"3\", name: \"全要素\" },\r\n PBC_CAPITAL_DECLARATION: { code: \"4\", name: \"人行资金申报\" },\r\n ENTERPRISE_CREDIT_REFERENCE: { code: \"5\", name: \"企业征信\" },\r\n OTOHAF_SUBMISSION: { code: \"6\", name: \"1104报送\" },\r\n EAST_F: { code: \"7\", name: \"EAST4.0\" },\r\n PERSONAL_CREDIT: { code: \"8\", name: \"个人征信\" },\r\n BS_09: { code: \"9\", name: \"非现场监管报表\" },\r\n BS_10: { code: \"10\", name: \"银监其他\" },\r\n BS_11: { code: \"11\", name: \"人行资管产品统计逐产品采集\" },\r\n BS_12: { code: \"12\", name: \"人行其他\" },\r\n BS_13: { code: \"13\", name: \"其他报表\" },\r\n BS_14: { code: \"14\", name: \"反洗钱\" },\r\n BS_15: { code: \"15\", name: \"关联交易\" },\r\n BS_16: { code: \"16\", name: \"事前报告\" },\r\n BS_17: { code: \"17\", name: \"银监风险项目要素表\" },\r\n BS_18: { code: \"18\", name: \"金控重点监测项目数据报送\" },\r\n BS_19: { code: \"19\", name: \"中央企业金融风险事项统计表\" },\r\n BS_20: { code: \"20\", name: \"主动管理项目清单\" },\r\n BS_21: { code: \"21\", name: \"风险项目要素表(重大预警及关注不良)\" },\r\n BS_22: { code: \"22\", name: \"人行金融基础数据报送\" },\r\n BS_23: { code: \"23\", name: \"人行利率报备\" },\r\n BS_24: { code: \"24\", name: \"EAST5.0\" },\r\n BS_25: { code: \"25\", name: \"新中信登\" },\r\n BS_26: { code: \"26\", name: \"集团司库资金系统投融资数据报送\" },\r\n BS_27: { code: \"27\", name: \"金控客户协同\" },\r\n BS_28: { code: \"28\", name: \"金控大额交易\" },\r\n BS_29: { code: \"29\", name: \"五篇大文章\" },\r\n BS_30: { code: \"30\", name: \"金控重大风险预警及关注与不良项目情况表\" },\r\n};\r\nexport { SubmittedType };\r\n","const SupportUploadType = {\r\n Arbitrarily: { code: \"1\", name: \"任意类型\" },\r\n Custom: { code: \"2\", name: \"自定义类型\" },\r\n};\r\nexport { SupportUploadType };\r\n","const UploadType = {\r\n Jpeg: { code: \"image/jpeg\", name: \"jpeg/jpg/jpe\" },\r\n Png: { code: \"image/png\", name: \"png\" },\r\n Gif: { code: \"image/gif\", name: \"gif\" },\r\n Bmp: { code: \"image/bmp\", name: \"bmp\" },\r\n Doc: { code: \"application/msword\", name: \"doc\" },\r\n html: { code: \"text/html\", name: \"html\" },\r\n Mp3: { code: \"audio/mpeg\", name: \"mp3\" },\r\n Mp4: { code: \"audio/mp4\", name: \"mp4\" },\r\n Pdf: { code: \"application/pdf\", name: \"pdf\" },\r\n Ppt: { code: \"application/vnd.ms-powerpoint\", name: \"ppt\" },\r\n Xls: { code: \"application/vnd.ms-excel\", name: \"xls\" },\r\n Xml: { code: \"application/xml\", name: \"xml\" },\r\n Zip: { code: \"aplication/zip\", name: \"zip\" },\r\n Wps: { code: \"application/vnd.ms-works\", name: \"wps\" },\r\n};\r\nexport { UploadType };\r\n","// 校验规则\r\nconst ValidateRules: any = {\r\n SameValue: { code: \"1\", name: \"相同的值\", hasContent: true, hasDescribe: false },\r\n MailBox: { code: \"2\", name: \"电子邮箱\", hasContent: false, hasDescribe: false },\r\n RegEx: { code: \"3\", name: \"正则表达式\", hasContent: true, hasDescribe: true },\r\n MinTextLength: { code: \"4\", name: \"最小文本长度\", hasContent: true, hasDescribe: false },\r\n MaxTextLength: { code: \"5\", name: \"最大文本长度\", hasContent: true, hasDescribe: false },\r\n MinValue: { code: \"6\", name: \"最小数值\", hasContent: true, hasDescribe: false },\r\n MaxValue: { code: \"7\", name: \"最大数值\", hasContent: true, hasDescribe: false },\r\n SpecifiedValue: { code: \"8\", name: \"指定的值\", hasContent: true, hasDescribe: false },\r\n SpecifiedDigitsNumber: { code: \"9\", name: \"指定位数的数字\", hasContent: true, hasDescribe: false },\r\n DateNotEarlierThan: { code: \"10\", name: \"日期不早于\", hasContent: true, hasDescribe: false },\r\n DateNoLaterThan: { code: \"11\", name: \"日期不晚于\", hasContent: true, hasDescribe: false },\r\n SpecifiedRangeNumber: { code: \"12\", name: \"指定范围的数字(包含最小/大值)\", hasContent: true, hasDescribe: false },\r\n PhoneNumber: { code: \"13\", name: \"手机号码\", hasContent: false, hasDescribe: false },\r\n Required: { code: \"14\", name: \"必填\", hasContent: false, hasDescribe: false },\r\n LineUnique: { code: \"15\", name: \"行唯一\", hasContent: false, hasDescribe: false },\r\n LetterSpace: { code: \"16\", name: \"字母空格\", hasContent: false, hasDescribe: false },\r\n AlphanumericUnderline: { code: \"17\", name: \"字母数字横线下划线\", hasContent: false, hasDescribe: false },\r\n Alphanumeric: { code: \"18\", name: \"字母数字\", hasContent: false, hasDescribe: false },\r\n JsMethodVerification: { code: \"19\", name: \"JS方法校验\", hasContent: true, hasDescribe: true },\r\n BackEndVerification: { code: \"20\", name: \"后端校验\", hasContent: false, hasDescribe: false },\r\n LandlineNumber: { code: \"21\", name: \"座机校验\", hasContent: false, hasDescribe: false },\r\n};\r\nexport { ValidateRules };\r\n","// 标签对齐方式\r\nconst VerticalArrangement = {\r\n AlignRight: { code: \"1\", name: \"右对齐\", value: \"horizontal\", textAlign: \"right\" },\r\n AlignTop: { code: \"2\", name: \"顶部对齐\", value: \"vertical\", textAlign: \"left\" },\r\n AlignLeft: { code: \"3\", name: \"左对齐\", value: \"horizontal\", textAlign: \"left\" },\r\n};\r\nexport { VerticalArrangement };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./DvForm.vue?vue&type=style&index=0&id=85b95a94&lang=scss&scoped=true\"","module.exports = require(\"tslib\");","module.exports = require(\"core-js/modules/es.error.cause.js\");","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"","import { DesFormControl, FormControl, Validate } from \"../domain\";\r\nimport { FormFieldType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\nimport moment from \"moment\";\r\n\r\ninterface Rule {\r\n ruleType?: any;\r\n ruleContent?: any;\r\n describe?: any;\r\n}\r\n\r\nclass ValidateGeneratorService {\r\n /**\r\n * @description: 填充校验规则\r\n * @author ChenRui\r\n * @date 2021/1/27 15:07\r\n */\r\n fillCheckRule(formControl: FormControl, controlAttr: DesFormControl): void {\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const validates: Validate[] = [];\r\n controlAttr.verificationRules.forEach((item: Rule) => {\r\n const validate: Validate | undefined = this.getBuiltInValidationRules(item, controlAttr);\r\n if (validate) {\r\n validates.push(validate);\r\n }\r\n });\r\n formControl.addValidate(validates);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验规则\r\n * @author ChenRui\r\n * @date 2021/7/19 17:55\r\n */\r\n getBuiltInValidationRules(item: Rule, controlAttr: DesFormControl): Validate | undefined {\r\n let validate: Validate | undefined;\r\n switch (item.ruleType) {\r\n case ValidateRules.SameValue.code:\r\n validate = this.genSameValue(item);\r\n break;\r\n case ValidateRules.MailBox.code:\r\n validate = this.genMailBox(item);\r\n break;\r\n case ValidateRules.RegEx.code:\r\n validate = this.genRegEx(item);\r\n break;\r\n case ValidateRules.MinTextLength.code:\r\n validate = this.genMinTextLength(item);\r\n break;\r\n case ValidateRules.MaxTextLength.code:\r\n validate = this.genMaxTextLength(item);\r\n break;\r\n case ValidateRules.MinValue.code:\r\n validate = this.genMinValue(item);\r\n break;\r\n case ValidateRules.MaxValue.code:\r\n validate = this.genMaxValue(item);\r\n break;\r\n case ValidateRules.SpecifiedValue.code:\r\n validate = this.genSpecifiedValue(item);\r\n break;\r\n case ValidateRules.SpecifiedDigitsNumber.code:\r\n validate = this.genSpecifiedDigitsNumber(item);\r\n break;\r\n case ValidateRules.DateNotEarlierThan.code:\r\n validate = this.genDateNotEarlierThan(item);\r\n break;\r\n case ValidateRules.DateNoLaterThan.code:\r\n validate = this.genDateNoLaterThan(item);\r\n break;\r\n case ValidateRules.SpecifiedRangeNumber.code:\r\n validate = this.genSpecifiedRangeNumber(item);\r\n break;\r\n case ValidateRules.PhoneNumber.code:\r\n validate = this.genPhoneNumber(item);\r\n break;\r\n case ValidateRules.Required.code:\r\n validate = this.genRequired(item, controlAttr.controlType);\r\n break;\r\n case ValidateRules.LineUnique.code:\r\n validate = this.genLineUnique(item);\r\n break;\r\n case ValidateRules.LetterSpace.code:\r\n validate = this.genLetterSpace(item);\r\n break;\r\n case ValidateRules.AlphanumericUnderline.code:\r\n validate = this.genAlphanumericUnderline(item);\r\n break;\r\n case ValidateRules.Alphanumeric.code:\r\n validate = this.genAlphanumeric(item);\r\n break;\r\n case ValidateRules.JsMethodVerification.code:\r\n validate = this.genJsMethodVerification(item);\r\n break;\r\n case ValidateRules.BackEndVerification.code:\r\n validate = this.genBackEndVerification(item);\r\n break;\r\n case ValidateRules.LandlineNumber.code:\r\n validate = this.genLandlineNumber(item);\r\n break;\r\n }\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 相同的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:12\r\n */\r\n genSameValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 电子邮箱\r\n * @author ChenRui\r\n * @date 2021/1/27 15:15\r\n */\r\n genMailBox(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const emreg = /^\\w{3,}(\\.\\w+)*@[A-z0-9]+(\\.[A-z]{2,5}){1,2}$/;\r\n if (!emreg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"电子邮件格式不正确\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 正则匹配\r\n * @author ChenRui\r\n * @date 2021/1/27 15:17\r\n */\r\n genRegEx(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && !eval(item.ruleContent).test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'不满足正则校验'${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:18\r\n */\r\n genMinTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不少于${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大文本长度\r\n * @author ChenRui\r\n * @date 2021/1/27 15:21\r\n */\r\n genMaxTextLength(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val && String(val).length > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `内容不超过${item.ruleContent}个字`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最小值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:24\r\n */\r\n genMinValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) < Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能小于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 最大值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:25\r\n */\r\n genMaxValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent != null && val != null && val !== \"\" && Number(val) > Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值不能大于${item.ruleContent}`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定的值\r\n * @author ChenRui\r\n * @date 2021/1/27 15:27\r\n */\r\n genSpecifiedValue(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val != item.ruleContent) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `与预期值(${item.ruleContent})不符`,\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定位数数字\r\n * @author ChenRui\r\n * @date 2021/1/27 15:31\r\n */\r\n genSpecifiedDigitsNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != undefined && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n let countDecimals = 0;\r\n if (Math.floor(val).toString() !== val.toString()) {\r\n countDecimals = val.toString().split(\".\")[1].length || 0;\r\n }\r\n if (countDecimals != Number(item.ruleContent)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.ruleContent === \"0\" || item.ruleContent === 0 ? `请输入整数` : `请保留${item.ruleContent}位小数`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 自动补位\r\n * @author ChenRui\r\n * @date 2021/1/27 15:59\r\n */\r\n roundNumber(number: any, decimals: any): any {\r\n let newString; // The new rounded number\r\n decimals = Number(decimals);\r\n if (decimals < 1) {\r\n newString = Math.round(number).toString();\r\n } else {\r\n let numString = number.toString();\r\n if (numString.lastIndexOf(\".\") == -1) {\r\n // If there is no decimal point\r\n numString += \".\"; // give it one at the end\r\n }\r\n let cutoff = numString.lastIndexOf(\".\") + decimals; // The point at which to truncate the number\r\n let d1: any = Number(numString.substring(cutoff, cutoff + 1)); // The value of the last decimal place that we'll end up with\r\n const d2 = Number(numString.substring(cutoff + 1, cutoff + 2)); // The next decimal, after the last one we want\r\n if (d2 >= 5) {\r\n // Do we need to round up at all? If not, the string will just be truncated\r\n if (d1 == 9 && cutoff > 0) {\r\n // If the last digit is 9, find a new cutoff point\r\n while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {\r\n if (d1 != \".\") {\r\n cutoff -= 1;\r\n d1 = Number(numString.substring(cutoff, cutoff + 1));\r\n } else {\r\n cutoff -= 1;\r\n }\r\n }\r\n }\r\n d1 += 1;\r\n }\r\n if (d1 == 10) {\r\n numString = numString.substring(0, numString.lastIndexOf(\".\"));\r\n const roundedNum = Number(numString) + 1;\r\n newString = roundedNum.toString() + \".\";\r\n } else {\r\n newString = numString.substring(0, cutoff) + d1.toString();\r\n }\r\n }\r\n if (newString.lastIndexOf(\".\") == -1) {\r\n // Do this again, to the new string\r\n newString += \".\";\r\n }\r\n const decs = newString.substring(newString.lastIndexOf(\".\") + 1).length;\r\n for (let i = 0; i < decimals - decs; i++) newString += \"0\";\r\n return newString;\r\n }\r\n\r\n /**\r\n * @description: 日期不早于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:06\r\n */\r\n genDateNotEarlierThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() > moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不早于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最大值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 日期不晚于\r\n * @author ChenRui\r\n * @date 2021/1/27 16:08\r\n */\r\n genDateNoLaterThan(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent && val) {\r\n try {\r\n if (val.toDate() < moment(item.ruleContent).toDate()) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `日期不晚于${item.ruleContent}`,\r\n };\r\n }\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `最小值日期(${item.ruleContent})格式有误!`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 指定范围的数字\r\n * @author ChenRui\r\n * @date 2021/1/27 16:35\r\n */\r\n genSpecifiedRangeNumber(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (item.ruleContent != null && val && item.ruleContent.indexOf(\"/\") > -1) {\r\n const arr: any[] = item.ruleContent.split(\"/\");\r\n if (arr && arr.length > 1) {\r\n if (val < Number(arr[0]) || val > Number(arr[1])) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: `数值大小应在${arr[0]}~${arr[1]}之间`,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 手机号\r\n * @author ChenRui\r\n * @date 2021/1/27 16:55\r\n */\r\n genPhoneNumber(item: Rule): Validate {\r\n const reg = /^0?1[3|4|5|6|7|8|9][0-9]\\d{8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"手机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 必填\r\n * @author ChenRui\r\n * @date 2021/1/27 15:28\r\n */\r\n genRequired(item: Rule, controlType: string): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val == null || (typeof val == \"string\" && val.trim() === \"\") || (Array.isArray(val) && val.length === 0)) {\r\n let msg = \"为必输项\";\r\n if (controlType === FormFieldType.Select.code || controlType === FormFieldType.Radio.code || controlType === FormFieldType.Checkbox.code) {\r\n msg += \",请选择\";\r\n } else {\r\n msg += \",请输入\";\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: msg,\r\n };\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 唯一行\r\n * @author ChenRui\r\n * @date 2021/1/27 17:16\r\n */\r\n genLineUnique(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 仅包含字母空格\r\n * @author ChenRui\r\n * @date 2021/1/27 17:21\r\n */\r\n genLetterSpace(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^(?!_)([A-Za-z ]+)$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含字母空格\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 数字字母下划线\r\n * @author ChenRui\r\n * @date 2021/1/27 17:28\r\n */\r\n genAlphanumericUnderline(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[a-zA-Z0-9_]{1,}$/;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母下划线\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 字母数字\r\n * @author ChenRui\r\n * @date 2021/1/27 17:32\r\n */\r\n genAlphanumeric(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n const reg = /^[0-9a-zA-Z]*$/g;\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"仅包含数字字母\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: JS方法校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:42\r\n */\r\n genJsMethodVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && item.ruleContent) {\r\n try {\r\n const func = new Function(item.ruleContent);\r\n return func(val);\r\n } catch (e) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: item.describe ? item.describe : `'JS校验函数不合法`,\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 后端校验\r\n * @author ChenRui\r\n * @date 2021/1/27 17:43\r\n */\r\n genBackEndVerification(item: Rule): Validate {\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: () => {\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n\r\n /**\r\n * @description: 座机号校验\r\n * @author ChenRui\r\n * @date 2021/4/14 11:40\r\n */\r\n genLandlineNumber(item: Rule): Validate {\r\n const reg = /^0\\d{2,3}-?\\d{7,8}$/;\r\n const validate: Validate = {\r\n name: item.ruleType,\r\n validateFunc: (val: any) => {\r\n if (val != null && val !== \"\") {\r\n if (val && !reg.test(val)) {\r\n return {\r\n validateStatus: ValidateStatus.Error.code,\r\n errorMsg: \"座机号不合法\",\r\n };\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n };\r\n },\r\n };\r\n return validate;\r\n }\r\n}\r\nconst validateGeneratorService = new ValidateGeneratorService();\r\nexport { Rule, validateGeneratorService };\r\n","// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, resolveComponent as _resolveComponent, withCtx as _withCtx, createSlots as _createSlots, createBlock as _createBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\")!\n\n return (_ctx.desForm?.controls?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"formView\",\n class: _normalizeClass('lo-form-container ' + ('lo-' + (_ctx.edit ? 'enable' : 'disable') + '-edit') + ' lo-class-style-' + _ctx.styleMode + ' lo-form-theme-' + _ctx.loFormTheme)\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.desForm.controls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n control: item,\n customFormats: _ctx.customFormats,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n index: i,\n onChange: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onChange($event))),\n onFocus: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[2] || (_cache[2] = ($event: any) => (_ctx.onBlur($event))),\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onClick($event))),\n onAddonBefore: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[6] || (_cache[6] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(this.$slots), (propName) => {\n return {\n name: propName,\n fn: _withCtx((slotProps) => [\n _renderSlot(_ctx.$slots, propName, {\n content: slotProps.content,\n control: slotProps.control,\n onChange: slotProps.onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"control\", \"customFormats\", \"linkList\", \"onLinkClick\", \"index\"]))\n }), 128))\n ], 2))\n : _createCommentVNode(\"\", true)\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, createSlots as _createSlots, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2f021ee3\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"lo-control-box\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"lo-history-popconfirm-title\" }, \"历史修改\", -1))\nconst _hoisted_5 = { class: \"lo-history-context\" }\nconst _hoisted_6 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_7 = { class: \"lo-important lo-mx-10\" }\nconst _hoisted_8 = { class: \"lo-important lo-ml-10\" }\nconst _hoisted_9 = [\"src\"]\nconst _hoisted_10 = { class: \"number-format-show\" }\nconst _hoisted_11 = { class: \"addon-inner\" }\nconst _hoisted_12 = { class: \"ant-picker-cell-inner calendar-control-style\" }\nconst _hoisted_13 = { class: \"date-control-style\" }\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"eest-day-style\" }, null, -1))\nconst _hoisted_15 = { class: \"date-style\" }\nconst _hoisted_16 = { class: \"eest-day-style\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"holidays-style\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"weekday-style\"\n}\nconst _hoisted_19 = { class: \"date-type-style\" }\nconst _hoisted_20 = {\n key: 0,\n class: \"trading-day-style\"\n}\nconst _hoisted_21 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"legend\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain-style\" }, [\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"trading-day-icon\" }),\n /*#__PURE__*/_createElementVNode(\"div\", { class: \"day-explain\" }, \"交易日\")\n ])\n], -1))\nconst _hoisted_22 = {\n key: 14,\n class: \"custom-border\"\n}\nconst _hoisted_23 = { class: \"lo-input-content\" }\nconst _hoisted_24 = [\"title\"]\nconst _hoisted_25 = { key: 1 }\nconst _hoisted_26 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"flex-grow-1\" }, null, -1))\nconst _hoisted_27 = {\n key: 0,\n class: \"addon-readonly\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_a_tooltip = _resolveComponent(\"a-tooltip\")!\n const _component_question_circle_outlined = _resolveComponent(\"question-circle-outlined\")!\n const _component_clock_circle_outlined = _resolveComponent(\"clock-circle-outlined\")!\n const _component_a_timeline_item = _resolveComponent(\"a-timeline-item\")!\n const _component_a_timeline = _resolveComponent(\"a-timeline\")!\n const _component_a_popconfirm = _resolveComponent(\"a-popconfirm\")!\n const _component_search_outlined = _resolveComponent(\"search-outlined\")!\n const _component_a_textarea = _resolveComponent(\"a-textarea\")!\n const _component_a_input_number = _resolveComponent(\"a-input-number\")!\n const _component_a_menu_item = _resolveComponent(\"a-menu-item\")!\n const _component_a_menu = _resolveComponent(\"a-menu\")!\n const _component_down_outlined = _resolveComponent(\"down-outlined\")!\n const _component_a_button = _resolveComponent(\"a-button\")!\n const _component_a_dropdown = _resolveComponent(\"a-dropdown\")!\n const _component_a_popover = _resolveComponent(\"a-popover\")!\n const _component_v_nodes = _resolveComponent(\"v-nodes\")!\n const _component_a_divider = _resolveComponent(\"a-divider\")!\n const _component_plus_outlined = _resolveComponent(\"plus-outlined\")!\n const _component_a_select_option = _resolveComponent(\"a-select-option\")!\n const _component_a_select = _resolveComponent(\"a-select\")!\n const _component_a_radio = _resolveComponent(\"a-radio\")!\n const _component_a_radio_group = _resolveComponent(\"a-radio-group\")!\n const _component_a_checkbox = _resolveComponent(\"a-checkbox\")!\n const _component_a_col = _resolveComponent(\"a-col\")!\n const _component_a_row = _resolveComponent(\"a-row\")!\n const _component_a_checkbox_group = _resolveComponent(\"a-checkbox-group\")!\n const _component_a_switch = _resolveComponent(\"a-switch\")!\n const _component_a_time_picker = _resolveComponent(\"a-time-picker\")!\n const _component_a_month_picker = _resolveComponent(\"a-month-picker\")!\n const _component_a_date_picker = _resolveComponent(\"a-date-picker\")!\n const _component_a_slider = _resolveComponent(\"a-slider\")!\n const _component_a_cascader = _resolveComponent(\"a-cascader\")!\n const _component_a_tree_select = _resolveComponent(\"a-tree-select\")!\n const _component_a_rate = _resolveComponent(\"a-rate\")!\n const _component_upload_outlined = _resolveComponent(\"upload-outlined\")!\n const _component_a_upload = _resolveComponent(\"a-upload\")!\n const _component_stretch_text = _resolveComponent(\"stretch-text\")!\n const _component_a_form_item = _resolveComponent(\"a-form-item\")!\n const _component_dv_form_layout = _resolveComponent(\"dv-form-layout\", true)!\n const _component_a_form = _resolveComponent(\"a-form\")!\n\n return ((_ctx.control.type === _ctx.formFieldClass.Base.code || _ctx.control.type === _ctx.formFieldClass.Senior.code) && !_ctx.controlAttr.isHideControl)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-control-container\",\n style: _normalizeStyle({ width: _ctx.divWidthCompatibleToIe })\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_a_form_item, {\n labelCol: {\r\n style: 'min-width: ' + _ctx.labelSpanWidth + ';width:' + _ctx.labelSpanWidth,\r\n },\n wrapperCol: {\r\n style: 'max-width: ' + _ctx.controlSpanMaxWidth + ';width: ' + _ctx.controlSpanWidth,\r\n },\n colon: _ctx.colon,\n labelAlign: _ctx.labelAlign,\n required: _ctx.required,\n \"validate-status\": _ctx.validateResult.validateStatus,\n help: _ctx.provideInjectData.edit ? _ctx.validateResult.errorMsg : null,\n class: _normalizeClass({\r\n ['form-model-item-' + _ctx.controlAttr.boundProperty]: true,\r\n ['form-model-item-' + _ctx.control.code]: true,\r\n 'lo-form-model-item-textarea-box lo-theme-textarea-box': _ctx.control.code === _ctx.formFieldType.Textarea.code,\r\n 'lo-form-item-mobile': _ctx.isMobileBrowser(),\r\n })\n }, {\n label: _withCtx(() => [\n (!_ctx.controlAttr.isHideTitle)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createElementVNode(\"span\", {\n class: _normalizeClass({ 'lo-fw': _ctx.controlAttr.isBoldTitle }),\n style: _normalizeStyle({ color: _ctx.controlAttr.titleColor })\n }, _toDisplayString(_ctx.controlAttr.formFieldDescribe), 7),\n (_ctx.submittedType.length > 0)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 0,\n class: \"lo-label-sub-type-icon\",\n placement: \"right\",\n title: _ctx.submittedTypeStr,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"img\", { src: _ctx.submittedSvg }, null, 8, _hoisted_3)\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.controlAttr.tips)\n ? (_openBlock(), _createBlock(_component_a_tooltip, {\n key: 1,\n class: \"lo-label-tips-icon\",\n placement: \"right\",\n title: _ctx.controlAttr.tips,\n overlayClassName: \"lo-form-item-tooltip\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_question_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n _: 1\n }, 8, [\"title\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.formControl.history && _ctx.formControl.history.length)\n ? (_openBlock(), _createBlock(_component_a_popconfirm, {\n key: 2,\n overlayClassName: \"lo-label-history-popconfirm\",\n placement: \"right\",\n \"ok-text\": \"确定\"\n }, {\n title: _withCtx(() => [\n _hoisted_4,\n _createElementVNode(\"div\", null, [\n _createVNode(_component_a_timeline, { class: \"lo-history-timeline\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.formControl.history, (item, index) => {\n return (_openBlock(), _createBlock(_component_a_timeline_item, { key: index }, {\n dot: _withCtx(() => [\n _createVNode(_component_clock_circle_outlined, { style: {\"font-size\":\"13px\"} })\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", null, _toDisplayString(item.time), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(item.before), 1),\n _createTextVNode(\" 改为 \"),\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(item.after), 1),\n _createTextVNode(\" 修改人 \"),\n _createElementVNode(\"div\", _hoisted_8, _toDisplayString(item.author), 1)\n ])\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"img\", {\n class: \"lo-label-history-icon\",\n src: _ctx.historySvg\n }, null, 8, _hoisted_9)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.control.code === _ctx.formFieldType.Input.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_ctx.provideInjectData.edit)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.inputShape), {\n key: 0,\n class: _normalizeClass({\r\n 'addon-before': _ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel,\r\n 'addon-after': _ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel,\r\n }),\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n \"data-source\": _ctx.controlAttr.autoCompleteOptions,\n onFocus: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[4] || (_cache[4] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onInput: _cache[5] || (_cache[5] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.$slots['input:prefix:' + _ctx.formControl.key])\n ? {\n name: \"prefix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:prefix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"0\"\n }\n : undefined,\n (_ctx.$slots['input:suffix:' + _ctx.formControl.key])\n ? {\n name: \"suffix\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, 'input:suffix:' + _ctx.formControl.key, {}, undefined, true)\n ]),\n key: \"1\"\n }\n : undefined,\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key] || _ctx.controlAttr.bindingPrefix || _ctx.controlAttr.builtInFrontLabel)\n ? {\n name: \"addonBefore\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onAddonBeforeHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonBefore:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonBefore:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingPrefix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingPrefix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInFrontLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"2\"\n }\n : undefined,\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix || _ctx.controlAttr.builtInPostLabel)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", {\n class: \"addon-inner\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.onAddonAfterHandler(_ctx.control)))\n }, [\n (_ctx.$slots['input:addonAfter:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'input:addonAfter:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_ctx.controlAttr.bindingSuffix)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n : (_ctx.controlAttr.builtInPostLabel)\n ? (_openBlock(), _createBlock(_component_search_outlined, {\n key: 2,\n class: \"addon-icon\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n key: \"3\"\n }\n : undefined\n ]), 1064, [\"class\", \"value\", \"placeholder\", \"disabled\", \"data-source\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_ctx.control.code === _ctx.formFieldType.Textarea.code)\n ? (_openBlock(), _createBlock(_component_a_textarea, {\n key: 1,\n value: _ctx.control.formControl.value,\n \"onUpdate:value\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.control.formControl.value) = $event)),\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n rows: _ctx.controlAttr.textareaRows || 3,\n showCount: !!_ctx.maxCharacterCount,\n maxlength: _ctx.maxCharacterCount,\n onInput: _cache[8] || (_cache[8] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onFocus: _cache[9] || (_cache[9] = ($event: any) => (_ctx.onFocus(_ctx.control))),\n onBlur: _cache[10] || (_cache[10] = ($event: any) => (_ctx.onBlur(_ctx.control))),\n onClick: _cache[11] || (_cache[11] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"placeholder\", \"disabled\", \"rows\", \"showCount\", \"maxlength\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.InputNumber.code)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n class: _normalizeClass([\"lo-input-number-box\", {\r\n 'lo-with-unit': _ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0,\r\n ['lo-unit-' + _ctx.moneyUnitsIndentScale]: true,\r\n }]),\n tabindex: \"1\"\n }, [\n _createVNode(_component_a_popover, {\n placement: \"topLeft\",\n trigger: \"focus\",\n getPopupContainer: \r\n (triggerNode) => {\r\n return triggerNode.parentNode || _ctx.document.body;\r\n }\r\n \n }, _createSlots({\n default: _withCtx(() => [\n _createVNode(_component_a_input_number, {\n step: _ctx.controlAttr.step || 1,\n min: _ctx.controlAttr.minValue != null ? _ctx.controlAttr.minValue : undefined,\n max: _ctx.controlAttr.maxValue != null ? _ctx.controlAttr.maxValue : undefined,\n formatter: _ctx.numberFormatter,\n parser: _ctx.numberParser,\n precision: _ctx.controlAttr.decimalPlaces,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[12] || (_cache[12] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[13] || (_cache[13] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[14] || (_cache[14] = ($event: any) => (_ctx.onClick(_ctx.control))),\n onFocus: _cache[15] || (_cache[15] = ($event: any) => (_ctx.onInputNumberFocus(_ctx.control))),\n onBlur: _cache[16] || (_cache[16] = ($event: any) => (_ctx.onInputNumberBlur(_ctx.control)))\n }, _createSlots({ _: 2 }, [\n (_ctx.controlAttr.unit)\n ? {\n name: \"addonAfter\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.controlAttr.unit), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"step\", \"min\", \"max\", \"formatter\", \"parser\", \"precision\", \"placeholder\", \"disabled\", \"value\"]),\n (_ctx.controlAttr.zoomType === _ctx.zoomType.automatic.code && _ctx.moneyUnits.length > 0)\n ? (_openBlock(), _createBlock(_component_a_dropdown, { key: 0 }, {\n overlay: _withCtx(() => [\n _createVNode(_component_a_menu, { onClick: _ctx.handleMoneyUnitMenuClick }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.moneyUnits, (unit) => {\n return (_openBlock(), _createBlock(_component_a_menu_item, {\n key: unit.code\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(unit.name), 1)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.defaultMoneyUnit.name) + \" \", 1),\n (_ctx.moneyUnits.length > 1)\n ? (_openBlock(), _createBlock(_component_down_outlined, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, [\n (_ctx.numberPopoverVisible)\n ? {\n name: \"content\",\n fn: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.amountCapitalization(_ctx.zoomMultiple(_ctx.formControl.value, _ctx.formControl))), 1)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"getPopupContainer\"])\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Select.code)\n ? (_openBlock(), _createBlock(_component_a_select, {\n key: 3,\n class: _normalizeClass([\"lo-select\", {\r\n 'lo-select-multiple-suffix-icon': _ctx.controlAttr.isMultipleChoice && (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix),\r\n }]),\n dropdownClassName: _ctx.controlAttr.hiddenDropdown ? 'lo-select-hide-drop-down-content' : '',\n showArrow: \"\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[19] || (_cache[19] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"allow-clear\": true,\n \"show-search\": \"\",\n mode: _ctx.controlAttr.isMultipleChoice ? 'multiple' : '',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n onChange: _cache[20] || (_cache[20] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[21] || (_cache[21] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"get-popup-container\": _ctx.getPopupContainer,\n \"filter-option\": _ctx.filterOption\n }, _createSlots({\n dropdownRender: _withCtx(({ menuNode: menu }) => [\n _createVNode(_component_v_nodes, { vnodes: menu }, null, 8, [\"vnodes\"]),\n (_ctx.controlAttr.canAddEntry)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createVNode(_component_a_divider, { style: {\"margin\":\"4px 0\"} }),\n _createElementVNode(\"div\", {\n style: {\"padding\":\"4px 8px 6px 8px\",\"cursor\":\"pointer\"},\n onMousedown: _cache[17] || (_cache[17] = (e) => e.preventDefault()),\n onClick: _cache[18] || (_cache[18] = ($event: any) => (_ctx.selectAddItem(_ctx.control)))\n }, [\n _createVNode(_component_plus_outlined),\n _createTextVNode(\"新增\")\n ], 32)\n ], 64))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_select_option, {\n value: item.value,\n key: item.value,\n title: item.title,\n disabled: item.disabled ? item.disabled : false\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 2\n }, [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key] || _ctx.controlAttr.bindingSuffix)\n ? {\n name: \"suffixIcon\",\n fn: _withCtx(() => [\n (_ctx.$slots['select:suffixIcon:' + _ctx.formControl.key])\n ? _renderSlot(_ctx.$slots, 'select:suffixIcon:' + _ctx.formControl.key, { key: 0 }, undefined, true)\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(_ctx.controlAttr.bindingSuffix), 1)\n ], 64))\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"dropdownClassName\", \"class\", \"value\", \"mode\", \"disabled\", \"placeholder\", \"get-popup-container\", \"filter-option\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Radio.code)\n ? (_openBlock(), _createBlock(_component_a_radio_group, {\n key: 4,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[22] || (_cache[22] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[23] || (_cache[23] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[24] || (_cache[24] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_radio, {\n key: item.value,\n value: item.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1032, [\"value\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Checkbox.code)\n ? (_openBlock(), _createBlock(_component_a_checkbox_group, {\n key: 5,\n class: \"w-100\",\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[25] || (_cache[25] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[26] || (_cache[26] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[27] || (_cache[27] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_row, null, {\n default: _withCtx(() => [\n _createVNode(_component_a_col, null, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item) => {\n return (_openBlock(), _createBlock(_component_a_checkbox, {\n key: item.value,\n value: item.value,\n class: \"ml-0 mr-5\",\n style: _normalizeStyle({ width: _ctx.controlAttr.checkboxStyle ? 'auto' : '10rem' })\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_tooltip, null, {\n title: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(item.title), 1)\n ]),\n default: _withCtx(() => [\n _createTextVNode(\" \" + _toDisplayString(item.title), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1032, [\"value\", \"style\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Switch.code)\n ? (_openBlock(), _createBlock(_component_a_switch, {\n key: 6,\n checked: _ctx.formControl.value,\n \"onUpdate:checked\": _cache[28] || (_cache[28] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"checked-children\": _ctx.controlAttr.onOpeningText,\n \"un-checked-children\": _ctx.controlAttr.whenClosedText,\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[29] || (_cache[29] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[30] || (_cache[30] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"checked\", \"checked-children\", \"un-checked-children\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TimePicker.code)\n ? (_openBlock(), _createBlock(_component_a_time_picker, {\n key: 7,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n \"use12-hours\": _ctx.is12Hours,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[31] || (_cache[31] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[32] || (_cache[32] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[33] || (_cache[33] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"use12-hours\", \"placeholder\", \"disabled\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.DatePicker.code)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 8 }, [\n (_ctx.useMonthPicker)\n ? (_openBlock(), _createBlock(_component_a_month_picker, {\n key: 0,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[34] || (_cache[34] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[35] || (_cache[35] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[36] || (_cache[36] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_ctx.controlAttr.isShowHoliday)\n ? (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 1,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[37] || (_cache[37] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[38] || (_cache[38] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[39] || (_cache[39] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, {\n dateRender: _withCtx(({ current }) => [\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _hoisted_14,\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(current.date()), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n (_ctx.isRest(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, \"休\"))\n : (_ctx.isWeekday(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, \"班\"))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n (_ctx.isRadingDay(current))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n renderExtraFooter: _withCtx(() => [\n _hoisted_21\n ]),\n _: 1\n }, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n : (_openBlock(), _createBlock(_component_a_date_picker, {\n key: 2,\n class: \"w-100\",\n \"get-popup-container\": _ctx.getPopupContainer,\n locale: _ctx.locale,\n showTime: _ctx.showPickerTime(_ctx.controlAttr.dateFormat),\n format: _ctx.controlAttr.dateFormat,\n placeholder: _ctx.controlAttr.placeholder,\n disabled: _ctx.controlAttr.isNotEdit,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[40] || (_cache[40] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[41] || (_cache[41] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[42] || (_cache[42] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"locale\", \"showTime\", \"format\", \"placeholder\", \"disabled\", \"value\"]))\n ], 64))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Slider.code)\n ? (_openBlock(), _createBlock(_component_a_slider, {\n key: 9,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[43] || (_cache[43] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[44] || (_cache[44] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[45] || (_cache[45] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Cascader.code)\n ? (_openBlock(), _createBlock(_component_a_cascader, {\n key: 10,\n \"get-popup-container\": _ctx.getPopupContainer,\n changeOnSelect: _ctx.controlAttr.changeOnSelect,\n placeholder: _ctx.controlAttr.placeholder,\n \"show-search\": { cascaderFilter: _ctx.cascaderFilter },\n disabled: _ctx.controlAttr.isNotEdit,\n options: _ctx.cascaderOptions,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[46] || (_cache[46] = ($event: any) => ((_ctx.formControl.value) = $event)),\n onChange: _cache[47] || (_cache[47] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[48] || (_cache[48] = ($event: any) => (_ctx.onClick(_ctx.control)))\n }, null, 8, [\"get-popup-container\", \"changeOnSelect\", \"placeholder\", \"show-search\", \"disabled\", \"options\", \"value\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.TreeSelect.code)\n ? (_openBlock(), _createBlock(_component_a_tree_select, {\n key: 11,\n \"get-popup-container\": _ctx.getPopupContainer,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[49] || (_cache[49] = ($event: any) => ((_ctx.formControl.value) = $event)),\n \"show-search\": true,\n treeNodeFilterProp: 'title',\n disabled: _ctx.controlAttr.isNotEdit,\n placeholder: _ctx.controlAttr.placeholder,\n \"dropdown-style\": { maxHeight: '250px', overflow: 'auto' },\n \"tree-data\": _ctx.treeSelectOptions,\n onChange: _cache[50] || (_cache[50] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[51] || (_cache[51] = ($event: any) => (_ctx.onClick(_ctx.control))),\n treeDefaultExpandAll: _ctx.controlAttr.isTreeOpen\n }, null, 8, [\"get-popup-container\", \"value\", \"disabled\", \"placeholder\", \"tree-data\", \"treeDefaultExpandAll\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Rate.code)\n ? (_openBlock(), _createBlock(_component_a_rate, {\n key: 12,\n value: _ctx.formControl.value,\n \"onUpdate:value\": _cache[52] || (_cache[52] = ($event: any) => ((_ctx.formControl.value) = $event)),\n disabled: _ctx.controlAttr.isNotEdit,\n onChange: _cache[53] || (_cache[53] = ($event: any) => (_ctx.onChange(_ctx.control))),\n onClick: _cache[54] || (_cache[54] = ($event: any) => (_ctx.onClick(_ctx.control))),\n \"allow-half\": \"\"\n }, null, 8, [\"value\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Upload.code)\n ? (_openBlock(), _createBlock(_component_a_upload, {\n key: 13,\n \"file-list\": _ctx.formControl.value,\n accept: _ctx.uploadType,\n multiple: _ctx.controlAttr.isMultipleChoice,\n onRemove: _ctx.handleRemove,\n \"before-upload\": _ctx.beforeUpload,\n onChange: _ctx.handleUploadChange\n }, {\n default: _withCtx(() => [\n _createVNode(_component_a_button, null, {\n default: _withCtx(() => [\n _createVNode(_component_upload_outlined),\n _createTextVNode(\" 选择文件 \")\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"file-list\", \"accept\", \"multiple\", \"onRemove\", \"before-upload\", \"onChange\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.control.code === _ctx.formFieldType.Custom.code && _ctx.controlAttr.customFieldName)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _renderSlot(_ctx.$slots, _ctx.controlAttr.customFieldName, {\n control: _ctx.control,\n onChange: _ctx.onChange\n }, undefined, true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_23, [\n _renderSlot(_ctx.$slots, 'read:' + _ctx.control.formControl.key, { content: _ctx.formatData }, () => [\n (_ctx.controlAttr.textFold)\n ? (_openBlock(), _createBlock(_component_stretch_text, {\n key: 0,\n content: _ctx.formatData,\n linkList: _ctx.linkList,\n fieldKey: _ctx.control.formControl.key,\n onLinkClick: _cache[55] || (_cache[55] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, null, 8, [\"content\", \"linkList\", \"fieldKey\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"lo-control-text\",\n title: _ctx.formatData\n }, [\n (_ctx.linkList.indexOf(_ctx.control.formControl.key) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[56] || (_cache[56] = ($event: any) => (_ctx.linkClick({ key: _ctx.formControl.key, value: _ctx.formatData })))\n }, _toDisplayString(_ctx.formatData), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_25, _toDisplayString(_ctx.formatData), 1))\n ], 8, _hoisted_24))\n ], true)\n ]),\n _hoisted_26,\n (_ctx.controlAttr.unit)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_27, _toDisplayString(_ctx.controlAttr.unit), 1))\n : _createCommentVNode(\"\", true)\n ], 64))\n ]),\n _: 3\n }, 8, [\"labelCol\", \"wrapperCol\", \"colon\", \"labelAlign\", \"required\", \"validate-status\", \"help\", \"class\"])\n ])\n ], 4))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code === _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 1,\n class: _normalizeClass('w-100 lo-empty-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.emptyLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n linkList: _ctx.linkList,\n onLinkClick: _ctx.linkClick,\n onChange: _cache[57] || (_cache[57] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[58] || (_cache[58] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[59] || (_cache[59] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[60] || (_cache[60] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[61] || (_cache[61] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[62] || (_cache[62] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[63] || (_cache[63] = ($event: any) => (_ctx.selectAddItem($event))),\n onFixFormLayout: _ctx.onHideControl\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"linkList\", \"onLinkClick\", \"onFixFormLayout\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : (_ctx.control.type === _ctx.formFieldClass.Layout.code && _ctx.control.code !== _ctx.formFieldType.Empty.code)\n ? (_openBlock(), _createBlock(_component_a_form, {\n key: 2,\n class: _normalizeClass('w-100 lo-general-layout-container' + (_ctx.controlAttr.layoutName ? ' lo-form-layout-' + _ctx.controlAttr.layoutName : '')),\n layout: _ctx.layout,\n style: _normalizeStyle(_ctx.generalLayoutContainerStyle)\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.control.subControls, (item, i) => {\n return (_openBlock(), _createBlock(_component_dv_form_layout, {\n key: i,\n index: i,\n customFormats: _ctx.customFormats,\n control: item,\n parentControl: _ctx.control,\n class: _normalizeClass(_ctx.controlAttr.layoutName ? 'lo-form-layout-' + _ctx.controlAttr.layoutName : ''),\n onChange: _cache[64] || (_cache[64] = ($event: any) => (_ctx.onChange($event))),\n onClick: _cache[65] || (_cache[65] = ($event: any) => (_ctx.onClick($event))),\n onFocus: _cache[66] || (_cache[66] = ($event: any) => (_ctx.onFocus($event))),\n onBlur: _cache[67] || (_cache[67] = ($event: any) => (_ctx.onBlur($event))),\n onAddonBefore: _cache[68] || (_cache[68] = ($event: any) => (_ctx.onAddonBeforeHandler($event))),\n onAddonAfter: _cache[69] || (_cache[69] = ($event: any) => (_ctx.onAddonAfterHandler($event))),\n onAddItem: _cache[70] || (_cache[70] = ($event: any) => (_ctx.selectAddItem($event)))\n }, _createSlots({ _: 2 }, [\n _renderList(Object.keys(_ctx.$slots), (scopedPropName) => {\n return {\n name: scopedPropName,\n fn: _withCtx(({ content, control, onChange }) => [\n _renderSlot(_ctx.$slots, scopedPropName, {\n content: content,\n control: control,\n onChange: onChange\n }, undefined, true)\n ])\n }\n })\n ]), 1032, [\"index\", \"customFormats\", \"control\", \"parentControl\", \"class\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"class\", \"layout\", \"style\"]))\n : _createCommentVNode(\"\", true)\n}","const formTemplate = {\r\n formId: \"1\",\r\n appId: \"1\",\r\n domainClassId: \"\",\r\n objectId: \"1\",\r\n formType: \"1\",\r\n formName: \"test\",\r\n formAlias: \"test\",\r\n formDescribe: \"\",\r\n useState: \"1\",\r\n desDomainClass: null,\r\n desFormLayouts: [\r\n {\r\n layoutId: \"1\",\r\n formId: \"1\",\r\n parentLayoutId: \"\",\r\n layoutName: \"\",\r\n layoutType: \"101\",\r\n gridSpace: 1,\r\n gridColumnConfig: '[{\"value\":12,\"order\":1},{\"value\":12,\"order\":2}]',\r\n gridLateralArrangement: \"1\",\r\n gridVerticalArrangement: \"1\",\r\n layoutOrder: 1,\r\n labelSpan: \"\",\r\n controlSpan: \"\",\r\n subDesFormLayout: null,\r\n desFormControls: [],\r\n },\r\n ],\r\n desBusObject: null,\r\n};\r\nexport { formTemplate };\r\n","const SUBMITTED_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjEyMTY2MTU4NzYxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjkxMjY3IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE1Ij4NCiAgICAgIDxkZWZzPjwvZGVmcz4NCiAgICAgIDxwYXRoDQogICAgICAgIGQ9Ik01MTEuNSA5NjBDMjY0LjIgOTYwIDYzIDc1OC44IDYzIDUxMS41UzI2NC4yIDYzIDUxMS41IDYzIDk2MCAyNjQuMiA5NjAgNTExLjUgNzU4LjggOTYwIDUxMS41IDk2MHogbTAtODU5LjIzMmMtMjI2LjQ3OCAwLTQxMC43MzIgMTg0LjI1NC00MTAuNzMyIDQxMC43MzJTMjg1LjAyMiA5MjIuMjMyIDUxMS41IDkyMi4yMzIgOTIyLjIzMiA3MzcuOTc4IDkyMi4yMzIgNTExLjUgNzM3Ljk3OCAxMDAuNzY4IDUxMS41IDEwMC43Njh6IG0tOTQuOTA2IDI4NS45ODhsMi40MTgtMS44MTNjOC45NzMtNi43MzQgMTMuNTIyLTE0LjE3NSAxMy41MjQtMjIuMTEycy00LjU0OS0xNS4zOC0xMy41MjQtMjIuMTE3bC0yLjQxOC0xLjgxNGgtNjMuMzQxVjIyNmwtMS44MTQtMi40MTljLTYuNzM2LTguOTc1LTE0LjE3OC0xMy41MjQtMjIuMTE1LTEzLjUyNHMtMTUuMzc5IDQuNTQ5LTIyLjExNSAxMy41MjRMMzA1LjM5NCAyMjZ2MTEyLjloLTczLjk4MWwtMi42NTQgMi42NTNjLTkuNjc5IDkuNjc5LTEzLjcxMyAxOC40OTQtMTIuMzMgMjYuOTQ5IDEuMTgyIDcuMjIzIDYuMTI5IDEzLjA0OCAxNC43IDE3LjMwOGwxLjkwNiAwLjk0Nmg3Mi4zNTV2MTU0LjEyOWMtMjEuOSAxMi4wNTgtNDkuODY5IDI0LjMtODMuMjM2IDM2LjQzNWwtMi4zODggMC44Ny0xLjU4OCAxLjk4MmMtOS4wMzMgMTEuMjc3LTExLjg3OSAyMC44LTguNyAyOS4xMDcgMy4wNCA3Ljk0NSAxMS4xODIgMTMuMDY5IDI0LjIgMTUuMjNsMi4yMTggMC4zNjkgMi4xMzMtMC43MWE0NzEuOTg5IDQ3MS45ODkgMCAwIDAgNjcuMzYyLTI4LjA1djE0My4zNDRjMCA3LjkyOS0yLjc4IDkuNy0zLjY5NCAxMC4yODQtMy42NSAyLjMyLTE2LjU4MSA1LjY2MS01Ny43NDctMTMuNTQybC0yLjY5MS0xLjI1NS0yLjkxMSAwLjU3OGMtMTAuNzI4IDIuMTQtMTcuOCA2Ljg5NC0yMS4wMDYgMTQuMTM5LTMuNTQxIDcuOTkxLTEuODczIDE3LjUyNiA1LjA5NCAyOS4xNDdsMS41NDkgMi41ODUgMi43OTEgMS4xNDNjMjguNDEgMTEuNjIxIDUxLjggMTcuNDE1IDcwLjU3NSAxNy40MTUgMTIuODI2IDAgMjMuNS0yLjcgMzIuMTQ4LTguMSAxNC4yNTctOC44OTIgMjIuMjQxLTI0LjY1IDIzLjczLTQ2LjgzNWwwLjAyMS0xNzMuNzE0YzI4LjI1OS0xNi4xMjcgNTIuMzUzLTM0LjA3NCA3MS42OC01My40bDEuNTE3LTEuNTE4IDAuNjc2LTIuMDM1YzQuNDc0LTEzLjQ3MiAzLjg0NS0yMy4zLTEuOTIzLTMwLjA0NC01LjU1MS02LjUtMTQuOTY2LTguNjkzLTI3Ljk4My02LjUyOWwtMy41OSAwLjU5My0yLjE3OSAyLjkxNGMtNy4zOTQgOS44NzYtMjAuMjEyIDIxLjA1MS0zOC4yIDMzLjMxNVYzODYuNzU2aDYzLjM0MXogbTM5MS4yODggMzY3Ljg2MmwtMS42NzgtMi43OTQtMy4wNzMtMS4wODVjLTUxLjY4Ni0xOC4yMzktOTYuNzMzLTQzLjk1My0xMzQuMDM3LTc2LjUgNDYuOTM4LTU1LjA1NSA3Ny4zLTExNC4wNzcgOTAuMy0xNzUuNTc0IDUuMTE4LTIwLjYgMi45NC0zNy4xNi02LjQ3MS00OS4yMTRDNzQxLjcgNDM1LjA4NiA3MjEuNDc5IDQyOC4xIDY5MS4wOSA0MjguMUg0OTIuMDEzVjMwOC4zMThjMC0yMS40MzggOS4xNDUtMzAuNTg1IDMwLjU4NC0zMC41ODVoMTM4Ljc1OWM0NC43MjkgMCA0NS40MzkgMjEuNTIxIDQ1LjQ0OSAzMC4xNzZsLTQuOTE3IDU0LjEtMC4wMzkgMC44MmMwIDQuOTI3LTEuODU1IDcuMDI3LTMuNDcgOC4zMDUtNS4xNTEgNC4wNzktMjEuMDQzIDkuMjA2LTY5LjYzMi0yLjI1OWwtMi43OS0wLjY1OC0yLjY2IDEuMDY3Yy0xMS4wNCA0LjQyMy0xNy40NjEgMTAuNjkzLTE5LjA4NSAxOC42NDQtMS42NzQgOC4xODUgMi4wNjIgMTYuOSAxMS4xIDI1LjkybDEuODggMS44NzIgMi41OTIgMC41NjZjNTQuODYgMTEuOTM0IDkxLjQ2NSAxMC40NTYgMTExLjkwNy00LjUzMSAxMC42MjYtNy43ODggMTYuNjc2LTE4Ljk3IDE4LTMzLjQ5M2w0Ljk0Mi03OS4xMDVjMS42MjYtMTkuNTc2LTIuOTY3LTM1LjM5LTEzLjY1My00Ny0xMy44LTE0Ljk5My0zNi42LTIyLjI4LTY5LjcxMi0yMi4yOEg1MTIuNjg0Yy00NC44MzMgMC02OC41MyAyMy43LTY4LjUzIDY4LjUyOVY3OTdsMS44MTUgMi40MTljNi43MzcgOC45NzUgMTQuMTc4IDEzLjUyNCAyMi4xMTYgMTMuNTI0czE1LjM3Ny00LjU0OSAyMi4xMTMtMTMuNTI0bDEuODE1LTIuNDE5di0wLjk4M2M1LjUxOSAyLjgyMSAxMi45MzUgMy40NzkgMjIuMTU3IDEuOTQybDEuNDg4LTAuMjQ2IDEuMzI2LTAuNzE2YzQxLjI5MS0yMi4yNjIgODEuNTYxLTUwLjg4MyAxMTkuOC04NS4xNDJhNDg5LjYgNDg5LjYgMCAwIDAgMTUwLjQgODUuNzExbDIuMzU3IDAuODMzIDIuNDUtMC41YzEwLjcyNy0yLjE2NCAxNy43ODgtNi45NCAyMC45ODgtMTQuMiAzLjUyOS03Ljk5IDEuODYtMTcuNDk5LTUuMDk3LTI5LjA4MXogbS05NS40NzMtMjY2LjNsLTAuMzI5IDAuODIxLTAuMTYzIDAuODdjLTkuMTE4IDQ4LjY0OS0zNi4xODkgOTkuNjIyLTgwLjUwOSAxNTEuNjI0LTQ1LjA4Ni00OS43NzQtNzcuNTM2LTEwNS40MTktOTYuNjItMTY1LjY3M2gxNDYuMzljMjYuMDU4IDAgMzEuMDQ2IDUuNDE1IDMxLjc4MiA2LjUgMC45MjkgMS4zNyAwLjIxMiAzLjk0LTAuNTUxIDUuODU3eiBtLTIyMC40IDUuMTE1YzI1LjQ1OCA3My4yMTkgNjEuNDI2IDEzNS43NDYgMTA3LjE1MyAxODYuMjM5LTMwLjEzNSAyOC44LTY2LjEyNyA1My45NDgtMTA3LjE1MyA3NC44NDhWNDkzLjQzMnoiDQogICAgICAgIGZpbGw9IiMwMDlERTUiDQogICAgICAgIHAtaWQ9IjkxMjY4Ig0KICAgICAgPjwvcGF0aD4NCiAgICA8L3N2Zz4=\";\r\n// const HISTORY_SVG_XML =\r\n// \"data:image/svg+xml;base64,PHN2ZyBpZD0i5Zu+5bGCXzEiIGRhdGEtbmFtZT0i5Zu+5bGCIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmMTcxNzt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPuWbvuaghzExPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNS40MSw1aDBsMC0uMDlBOCw4LDAsMSwwLC42NCwxMS4xMmE3Ljg2LDcuODYsMCwwLDAsMS42MiwyLjQ1QTgsOCwwLDAsMCwxNS40MSw1Wm0tMi4yNSw4LjE3QTcuMyw3LjMsMCwwLDEsOCwxNS4yOUg4QTcuMzEsNy4zMSwwLDAsMSwuNzEsOCw3LjI5LDcuMjksMCwwLDEsOCwuNzFIOGE3LjI5LDcuMjksMCwwLDEsNS4xNiwxMi40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02LjY0LDEwYy0uOTMuNTItMS44NCwxLTIuNzIsMS40MVY3Ljc4SDUuNzl2LjU5aC44NVYzLjU0SDIuODZWNC4zSDUuNzlWN0gzLjA3djQuMTZhMS4yNywxLjI3LDAsMCwxLS4zOCwxbC41OC43NWE1LjkzLDUuOTMsMCwwLDEsLjY0LS41MWMxLS41NiwyLTEuMDcsMi45LTEuNTVBOC41NSw4LjU1LDAsMCwxLDYuNjQsMTBaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAuMjksMTAuNTdhMTAsMTAsMCwwLDAsMS41OC01LjIzaDEuMjh2LS44SDguNzVjLjIxLS41NC40Mi0xLjEuNjItMS42OGwtLjg2LS4yNUEyMy41MiwyMy41MiwwLDAsMSw2LjY2LDcuMTlhNy4yMyw3LjIzLDAsMCwxLC41NS42OWMuMTktLjM1LjM3LS43MS41Ni0xLjA5YTguODEsOC44MSwwLDAsMCwxLjM4LDMuNzUsMTAuMywxMC4zLDAsMCwxLTMuMzksMi4wNyw1LjMxLDUuMzEsMCwwLDEsLjY0Ljc4LDExLjMzLDExLjMzLDAsMCwwLDMuMzMtMi4xNiw5LjQyLDkuNDIsMCwwLDAsMi45LDIsNS41Nyw1LjU3LDAsMCwxLC42OS0uODVBNy4yMiw3LjIyLDAsMCwxLDEwLjI5LDEwLjU3Wm0tLjU3LS43MmExMCwxMCwwLDAsMS0xLjQtNC4yN2wuMS0uMjRIMTFBOS42OCw5LjY4LDAsMCwxLDkuNzIsOS44NVoiLz48L3N2Zz4=\";\r\nconst HISTORY_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0idHJhbnNmb3JtOiBzY2FsZSgwLjkpOyBtYXJnaW4tYm90dG9tOiAtMi41cHgiIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE1cHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQogICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC03MzYgLTIyNyApIj4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICBkPSJNIDE0LjQgNy4xOTI5ODI0NTA2NTc4OSAgQyAxNC40IDcuNjczNjg0MjEwNTI2MzIgIDE0LjM1MDkzMzMzMzMzMzMgOC4xNDMxNTc4OTQ3MzY4NCAgMTQuMjU3Nzc3NzgzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBMIDEyLjc5ODU3Nzc4MzMzMzMgOC41OTY0OTEyMzM1NTI2MyAgQyAxMi45MTgzMzI3ODU5NTUyIDguMTM4Mzk0ODc0Mjk4NjEgIDEyLjk3ODkzMDcxNzExODMgNy42NjcxOTc0MTQyNTIwMyAgMTIuOTc4OTMwNzE3MTE4MyA3LjE5NDEwMjY5MTg5MzEyICBDIDEyLjk3ODkzMDcxNzExODMgNC4wOTM1NTY3MzA5NTg2NCAgMTAuNDMxOTI4NDA3NTMxOSAxLjU4MDA2NzYwOTY1NjI4ICA3LjI5MDA0MTgzMzc4NDk3IDEuNTgwMDY3NjA5NjU2MjggIEMgNC4xNDgxNTUyNjAwMzgwNCAxLjU4MDA2NzYwOTY1NjI4ICAxLjYwMTE1Mjk1MDQ1MTY0IDQuMDkzNTU2NzMwOTU4NjQgIDEuNjAxMTUyOTUwNDUxNjQgNy4xOTQxMDI2OTE4OTMxMiAgQyAxLjYwMTE1Mjk1MDQ1MTY0IDEwLjI5NDY0ODY1MjgyNzYgIDQuMTQ4MTU1MjYwMDM4MDQgMTIuODA4MTM3Nzc0MTMgIDcuMjkwMDQxODMzNzg0OTcgMTIuODA4MTM3Nzc0MTMgIEMgNy44MDE3MTU4NDYxMjU2OCAxMi44MDgxMzc3NzQxMyAgOC4zMTEwNTEwNTk5ODkxMyAxMi43NDAwMTU0NzY1MDk1ICA4LjgwNDI2NjY2NjY2NjY3IDEyLjYwNTYxNDAyOTYwNTMgIEMgOC44ODY3NTU1NSAxMi44MTk2NDkxMTE4NDIxICA5LjAyMTE1NTU1IDEzLjAwOTEyMjc5NjA1MjYgIDkuMTkyNTMzMzMzMzMzMzMgMTMuMTU3ODk0NzM2ODQyMSAgQyA4LjkyMzU4OTU2OTY3MTU0IDEzLjM5MTU1NDE5MjUzODIgIDguNzU0MTUwMzc0NjM0NzggMTMuNzE2OTQ4ODM3NTM4MyAgOC43MTgyMjIyMTY2NjY2NyAxNC4wNjg3NzE5MjQzNDIxICBDIDguMjU2IDE0LjE2MTQwMzUwMzI4OTUgIDcuNzc4MTMzMzMzMzMzMzMgMTQuMjEwNTI2MzE1Nzg5NSAgNy4yODg4ODg4ODMzMzMzMyAxNC4yMTA1MjYzMTU3ODk1ICBDIDMuMzYxNDIyMjE2NjY2NjcgMTQuMjEwNTI2MzE1Nzg5NSAgMC4xNzc3Nzc3NjY2NjY2NjcgMTEuMDY4NzcxOTI0MzQyMSAgMC4xNzc3Nzc3ODMzMzMzMzQgNy4xOTI5ODI0NTA2NTc4OSAgQyAwLjE3Nzc3NzggMy4zMTcxOTI5NzY5NzM2OCAgMy4zNjE0MjIyMTY2NjY2NyAwLjE3NTQzODYwMTk3MzY4NCAgNy4yODg4ODg4ODMzMzMzMyAwLjE3NTQzODYwMTk3MzY4NCAgQyAxMS4yMTYzNTU1NSAwLjE3NTQzODYwMTk3MzY4NCAgMTQuNCAzLjMxNzE5Mjk5MzQyMTA1ICAxNC40IDcuMTkyOTgyNDUwNjU3ODkgIFogTSA3LjY0NDQ0NDQ1IDMuNjg0MjEwNTI2MzE1NzkgIEwgNy42NDQ0NDQ0NSA3LjE5Mjk4MjQ1MDY1Nzg5ICBMIDkuNzc3Nzc3NzgzMzMzMzMgNy4xOTI5ODI0NTA2NTc4OSAgQyAxMC4xNzA1MTM2MDg1MDM1IDcuMTkyOTgyNDUwNjU3ODkgIDEwLjQ4ODg4ODkgNy41MDcxNjg1OTM1ODIwOSAgMTAuNDg4ODg4OSA3Ljg5NDczNjg0MjEwNTI2ICBDIDEwLjQ4ODg4ODkgOC4yODIzMDUwOTA2Mjg0MyAgMTAuMTcwNTEzNjA4NTAzNSA4LjU5NjQ5MTIzMzU1MjYzICA5Ljc3Nzc3Nzc4MzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEwgNi45MzMzMzMzMzMzMzMzMyA4LjU5NjQ5MTIzMzU1MjYzICBDIDYuNDU5MjU5MjU1NTU1NTUgOC41OTY0OTEyMzM1NTI2MyAgNy40MDc0MDc0MTExMTExMSA4LjU5NjQ5MTIzMzU1MjYzICA2LjkzMzMzMzMzMzMzMzMzIDguNTk2NDkxMjMzNTUyNjMgIEMgNi41NDA1OTc1MDgxNjMxOSA4LjU5NjQ5MTIzMzU1MjYzICA2LjIyMjIyMjIxNjY2NjY3IDguMjgyMzA1MDkwNjI4NDMgIDYuMjIyMjIyMjE2NjY2NjcgNy44OTQ3MzY4NDIxMDUyNiAgTCA2LjIyMjIyMjIxNjY2NjY3IDMuNjg0MjEwNTI2MzE1NzkgIEMgNi4yMjIyMjIyMTY2NjY2NyAzLjI5NjY0MjI3Nzc5MjYyICA2LjU0MDU5NzUwODE2MzE5IDIuOTgyNDU2MTM0ODY4NDIgIDYuOTMzMzMzMzMzMzMzMzMgMi45ODI0NTYxMzQ4Njg0MiAgQyA3LjMyNjA2OTE1ODUwMzQ4IDIuOTgyNDU2MTM0ODY4NDIgIDcuNjQ0NDQ0NDUgMy4yOTY2NDIyNzc3OTI2MiAgNy42NDQ0NDQ0NSAzLjY4NDIxMDUyNjMxNTc5ICBaIE0gMTAuODQ0NDQ0NDUgOS4yOTgyNDU2MDg1NTI2MyAgTCAxNS4xMTExMTExMTY2NjY3IDkuMjk4MjQ1NjA4NTUyNjMgIEMgMTUuNTAzODQ2OTQxODM2OCA5LjI5ODI0NTYwODU1MjYzICAxNS44MjIyMjIyMzMzMzMzIDkuNjEyNDMxNzUxNDc2ODMgIDE1LjgyMjIyMjIzMzMzMzMgMTAgIEMgMTUuODIyMjIyMjMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxNS41MDM4NDY5NDE4MzY4IDEwLjcwMTc1NDM5MTQ0NzQgIDE1LjExMTExMTExNjY2NjcgMTAuNzAxNzU0MzkxNDQ3NCAgTCAxMC44NDQ0NDQ0NSAxMC43MDE3NTQzOTE0NDc0ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTAuNzAxNzU0MzkxNDQ3NCAgMTAuMTMzMzMzMzMzMzMzMyAxMC4zODc1NjgyNDg1MjMyICAxMC4xMzMzMzMzMzMzMzMzIDEwICBDIDEwLjEzMzMzMzMzMzMzMzMgOS42MTI0MzE3NTE0NzY4MyAgMTAuNDUxNzA4NjI0ODI5OSA5LjI5ODI0NTYwODU1MjYzICAxMC44NDQ0NDQ0NSA5LjI5ODI0NTYwODU1MjYzICBaIE0gMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgTCAxNS4xMTExMTExMTY2NjY3IDExLjQwMzUwODc2NjQ0NzQgIEMgMTUuNTAzODQ2OTQxODM2OCAxMS40MDM1MDg3NjY0NDc0ICAxNS44MjIyMjIyMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDE1LjgyMjIyMjIzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxNS44MjIyMjIyMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDE1LjUwMzg0Njk0MTgzNjggMTIuODA3MDE3NTQ5MzQyMSAgMTUuMTExMTExMTE2NjY2NyAxMi44MDcwMTc1NDkzNDIxICBMIDEwLjg0NDQ0NDQ1IDEyLjgwNzAxNzU0OTM0MjEgIEMgMTAuNDUxNzA4NjI0ODI5OSAxMi44MDcwMTc1NDkzNDIxICAxMC4xMzMzMzMzMzMzMzMzIDEyLjQ5MjgzMTQwNjQxNzkgIDEwLjEzMzMzMzMzMzMzMzMgMTIuMTA1MjYzMTU3ODk0NyAgQyAxMC4xMzMzMzMzMzMzMzMzIDExLjcxNzY5NDkwOTM3MTYgIDEwLjQ1MTcwODYyNDgyOTkgMTEuNDAzNTA4NzY2NDQ3NCAgMTAuODQ0NDQ0NDUgMTEuNDAzNTA4NzY2NDQ3NCAgWiBNIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIEwgMTUuMTExMTExMTE2NjY2NyAxMy41MDg3NzE5MjQzNDIxICBDIDE1LjUwMzg0Njk0MTgzNjggMTMuNTA4NzcxOTI0MzQyMSAgMTUuODIyMjIyMjMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxNS44MjIyMjIyMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTUuODIyMjIyMjMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxNS41MDM4NDY5NDE4MzY4IDE0LjkxMjI4MDcwNzIzNjggIDE1LjExMTExMTExNjY2NjcgMTQuOTEyMjgwNzA3MjM2OCAgTCAxMC44NDQ0NDQ0NSAxNC45MTIyODA3MDcyMzY4ICBDIDEwLjQ1MTcwODYyNDgyOTkgMTQuOTEyMjgwNzA3MjM2OCAgMTAuMTMzMzMzMzMzMzMzMyAxNC41OTgwOTQ1NjQzMTI2ICAxMC4xMzMzMzMzMzMzMzMzIDE0LjIxMDUyNjMxNTc4OTUgIEMgMTAuMTMzMzMzMzMzMzMzMyAxMy44MjI5NTgwNjcyNjYzICAxMC40NTE3MDg2MjQ4Mjk5IDEzLjUwODc3MTkyNDM0MjEgIDEwLjg0NDQ0NDQ1IDEzLjUwODc3MTkyNDM0MjEgIFogIg0KICAgICAgICAgIGZpbGwtcnVsZT0ibm9uemVybyINCiAgICAgICAgICBmaWxsPSIjZmZhMTE2Ig0KICAgICAgICAgIHN0cm9rZT0ibm9uZSINCiAgICAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDczNiAyMjcgKSINCiAgICAgICAgLz4NCiAgICAgIDwvZz4NCiAgICA8L3N2Zz4=\";\r\nconst FORM_ERROR_MODAL_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB0PSIxNjI5Mjg0MTUzNjk3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjIxODIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiAwQzIzMC40IDAgMCAyMjcuMiAwIDUxMmMwIDI4MS42IDIzMC40IDUxMiA1MTIgNTEyIDI4NC44IDAgNTEyLTIyNy4yIDUxMi01MTJTNzk2LjggMCA1MTIgMHogbTAgODE5LjJjLTI4LjggMC01MS4yLTIyLjQtNTEuMi01MS4yczIyLjQtNTEuMiA1MS4yLTUxLjJjMjguOCAwIDUxLjIgMjIuNCA1MS4yIDUxLjIgMy4yIDI4LjgtMjIuNCA1MS4yLTUxLjIgNTEuMnogbTU0LjQtMjIwLjhjMCAyOC44LTIyLjQgNTEuMi01MS4yIDUxLjItMjguOCAwLTUxLjItMjIuNC01MS4yLTUxLjJWMjU2YzAtMjguOCAyMi40LTUxLjIgNTEuMi01MS4yIDI4LjggMCA1MS4yIDIyLjQgNTEuMiA1MS4ydjM0Mi40eiIgcC1pZD0iMjE4MyIgZmlsbD0iI0YxQjkxNiI+PC9wYXRoPjwvc3ZnPg==\";\r\nconst DROP_DOWN_LIST_SVG_XML =\r\n \"data:image/svg+xml;base64, PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxMXB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIC01MTYgLTQ2ICkiPg0KICAgIDxwYXRoIGQ9Ik0gMCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMS41NTU1NDk0NzkxNjY2NCA0Ljc0OTk5NDE0MDYyNTAxICBMIDAgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDAgOC43NSAgTCAwIDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDEwLjI0OTk5NDE0MDYyNSAgTCAxLjU1NTU0OTQ3OTE2NjY0IDguNzUgIEwgMCA4Ljc1ICBaIE0gMCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAwIDIuMjUgIEwgMS41NTU1NDk0NzkxNjY2NCAyLjI1ICBMIDEuNTU1NTQ5NDc5MTY2NjQgMC43NTAwMDU4NTkzNzQ5OTQgIEwgMCAwLjc1MDAwNTg1OTM3NDk5NCAgWiBNIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgTCAzLjExMTExNzE4NzQ5OTk5IDYuMjUwMDA1ODU5Mzc0OTkgIEwgMTQgNi4yNTAwMDU4NTkzNzQ5OSAgTCAxNCA0Ljc0OTk5NDE0MDYyNTAxICBMIDMuMTExMTE3MTg3NDk5OTkgNC43NDk5OTQxNDA2MjUwMSAgWiBNIDMuMTExMTE3MTg3NDk5OTkgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDEwLjI0OTk5NDE0MDYyNSAgTCAxNCAxMC4yNDk5OTQxNDA2MjUgIEwgMTQgOC43NSAgTCAzLjExMTExNzE4NzQ5OTk5IDguNzUgIFogTSAxNCAwLjc1MDAwNTg1OTM3NDk5NCAgTCAzLjExMTExNzE4NzQ5OTk5IDAuNzUwMDA1ODU5Mzc0OTk0ICBMIDMuMTExMTE3MTg3NDk5OTkgMi4yNSAgTCAxNCAyLjI1ICBMIDE0IDAuNzUwMDA1ODU5Mzc0OTk0ICBaICIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjYmZiY2NjIiBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgNTE2IDQ2ICkiIC8+DQogIDwvZz4NCjwvc3ZnPg==\";\r\nexport { SUBMITTED_SVG_XML, HISTORY_SVG_XML, FORM_ERROR_MODAL_SVG_XML, DROP_DOWN_LIST_SVG_XML };\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n const arr: string[] = [];\r\n configs.sort((a: Config, b: Config) => a.order - b.order).forEach((item) => arr.push(item.value + \"fr\"));\r\n return arr.join(\" \");\r\n } else {\r\n return `1fr`;\r\n }\r\n}\r\n/**\r\n * @description: 网格布局比例分配\r\n * @author ChenRui\r\n * @date 2020/12/1 19:32\r\n */\r\nconst generateGridTemplateColumns = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridTemplateColumns;\r\n","interface Config {\r\n value: number;\r\n order: number;\r\n}\r\n\r\nfunction transform(configs: Config[]): unknown {\r\n if (configs != null && configs.length > 0) {\r\n return configs.length + 1;\r\n } else {\r\n return 2;\r\n }\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst generateGridColumnEnd = (configs: Config[]) => {\r\n return transform(configs);\r\n};\r\n\r\nexport default generateGridColumnEnd;\r\n","class ApiService {\r\n createBasicHeaders() {\r\n return {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n createAuthHeaders(accessToken: string, jti: string) {\r\n return {\r\n Authorization: \"bearer \" + accessToken,\r\n \"user-identity\": jti,\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n };\r\n }\r\n\r\n fetch(path: string, query: { [key: string]: any }, body: any, method: string, header: any) {\r\n path = query != null ? this.urlQueryConvert(path, query) : path;\r\n return fetch(path, {\r\n method: method ? method : \"GET\",\r\n headers: header,\r\n body: body,\r\n }).then(\r\n function (response) {\r\n response.status; //=> number 100–599\r\n response.statusText; //=> String\r\n response.headers; //=> Headers\r\n response.url; //=> String\r\n\r\n return response.json();\r\n },\r\n function (error) {\r\n error.message; //=> String\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @description: url请求参数组装\r\n * @author ChenRui\r\n * @date 2020/8/28 15:21\r\n */\r\n urlQueryConvert(url: string, query: { [key: string]: any }) {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (query) {\r\n Object.keys(query).forEach((key, idx) => {\r\n const val = query[key];\r\n if (idx === 0) {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += connectiveSymbol + key + \"=\" + val;\r\n } else {\r\n url += connectiveSymbol + key + \"=\";\r\n }\r\n } else {\r\n if (val != null && val !== \"null\" && val !== \"undefined\") {\r\n url += \"&\" + key + \"=\" + val;\r\n } else {\r\n url += \"&\" + key + \"=\";\r\n }\r\n }\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst apiService = new ApiService();\r\nexport { apiService };\r\n","const NAME = \"vue-lo\";\r\nconst STORE_NAME = \"form:\";\r\nconst DICT_STORE_NAME = \"dict:\";\r\nexport { NAME, STORE_NAME, DICT_STORE_NAME };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME } from \"../constants/config/storage.config\";\r\nclass CleanLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: \"clean:\" + appId, // Should be alphanumeric, with underscores.\r\n description: \"用于清理实例的缓存对象\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst cleanLocalForageService: CleanLocalForageService = new CleanLocalForageService();\r\nexport { CleanLocalForageService, cleanLocalForageService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { DICT_STORE_NAME, NAME } from \"../constants/config/storage.config\";\r\nclass DictLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: DICT_STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst dictLocalForageService: DictLocalForageService = new DictLocalForageService();\r\nexport { DictLocalForageService, dictLocalForageService };\r\n","class FormBeanUtilsService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 对象拷贝\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n copy(obj: any): any {\r\n if (obj != null) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 字符串转对象\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n parse(str: string | null): any {\r\n if (str != null && str !== \"\") {\r\n return JSON.parse(str);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 对象转字符串\r\n * @author ChenRui\r\n * @date 2020/8/29 19:54\r\n */\r\n stringify(obj: any): string {\r\n if (obj != null) {\r\n return JSON.stringify(obj);\r\n }\r\n return \"\";\r\n }\r\n}\r\nconst formBeanUtilsService = new FormBeanUtilsService();\r\nexport { formBeanUtilsService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport * as sourceLocalForage from \"localforage\";\r\nimport { NAME, STORE_NAME } from \"../constants/config/storage.config\";\r\n\r\nclass FormLocalForageService {\r\n localForage: any;\r\n config: any;\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n constructor() {}\r\n\r\n init(): void {\r\n const appId: string = this.formConfig.appId ? this.formConfig.appId : \"\";\r\n this.config = {\r\n driver: sourceLocalForage.INDEXEDDB, // Force WebSQL; same as using setDriver()\r\n name: NAME,\r\n version: 1.0,\r\n storeName: STORE_NAME + appId, // Should be alphanumeric, with underscores.\r\n description: \"PC端表单数据库\",\r\n };\r\n this.localForage = sourceLocalForage.createInstance(this.config);\r\n }\r\n\r\n /**\r\n * @description: 设值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n setItem(key: string, value: any): any {\r\n this.localForage.setItem(key, value);\r\n }\r\n\r\n /**\r\n * @description: 取值\r\n * @author ChenRui\r\n * @date 2021/3/12 16:31\r\n */\r\n getItem(key: string): Promise<any> {\r\n return this.localForage.getItem(key);\r\n }\r\n\r\n /**\r\n * @description: 删除实例\r\n * @author ChenRui\r\n * @date 2021/6/22 11:08\r\n */\r\n dropInstance(): void {\r\n if (this.localForage != null) {\r\n this.localForage.dropInstance().then();\r\n }\r\n }\r\n}\r\nconst formLocalForageService: FormLocalForageService = new FormLocalForageService();\r\nexport { FormLocalForageService, formLocalForageService };\r\n","import { DesFormLayout } from \"./DesFormLayout\";\r\nimport { Control } from \"./Control\";\r\nimport { FormGroup } from \"./FormGroup\";\r\n\r\nexport class DesForm {\r\n formId: string;\r\n appId: string;\r\n domainClassId: string;\r\n objectId: string;\r\n formType: string;\r\n formName: string;\r\n formAlias: string;\r\n formDescribe: string;\r\n useState: string;\r\n desFormLayouts: DesFormLayout[];\r\n controls: Control[];\r\n formGroup: FormGroup | undefined;\r\n [key: string]: any;\r\n constructor(\r\n options: {\r\n formId?: string;\r\n appId?: string;\r\n domainClassId?: string;\r\n objectId?: string;\r\n formType?: string;\r\n formName?: string;\r\n formAlias?: string;\r\n formDescribe?: string;\r\n useState?: string;\r\n controls?: Control[];\r\n formGroup?: FormGroup;\r\n desFormLayouts?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.formId = options.formId || \"\";\r\n this.appId = options.appId || \"\";\r\n this.domainClassId = options.domainClassId || \"\";\r\n this.objectId = options.objectId || \"\";\r\n this.formType = options.formType || \"\";\r\n this.formName = options.formName || \"\";\r\n this.formAlias = options.formAlias || \"\";\r\n this.formDescribe = options.formDescribe || \"\";\r\n this.useState = options.useState || \"\";\r\n this.controls = options.controls || [];\r\n this.formGroup = options.formGroup;\r\n this.desFormLayouts = options.desFormLayouts || [];\r\n }\r\n}\r\n","import { DesFormControl } from \"./DesFormControl\";\r\n\r\nexport class DesFormLayout {\r\n layoutId: string;\r\n formId: string;\r\n parentLayoutId: string;\r\n layoutName: string;\r\n layoutType: string;\r\n gridSpace: number | undefined;\r\n gridColumnConfig: any;\r\n gridLateralArrangement: string;\r\n gridVerticalArrangement: string;\r\n layoutOrder: number | undefined;\r\n labelSpan: string;\r\n controlSpan: string;\r\n desFormControls: DesFormControl[];\r\n subDesFormLayout: DesFormLayout[];\r\n constructor(\r\n options: {\r\n layoutId?: string;\r\n formId?: string;\r\n parentLayoutId?: string;\r\n layoutName?: string;\r\n layoutType?: string;\r\n gridSpace?: number;\r\n gridColumnConfig?: any;\r\n gridLateralArrangement?: string;\r\n gridVerticalArrangement?: string;\r\n layoutOrder?: number;\r\n labelSpan?: string;\r\n controlSpan?: string;\r\n desFormControls?: DesFormControl[];\r\n subDesFormLayout?: DesFormLayout[];\r\n } = {}\r\n ) {\r\n this.layoutId = options.layoutId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.parentLayoutId = options.parentLayoutId || \"\";\r\n this.layoutName = options.layoutName || \"\";\r\n this.layoutType = options.layoutType || \"\";\r\n this.gridSpace = options.gridSpace;\r\n this.gridColumnConfig = options.gridColumnConfig;\r\n this.gridLateralArrangement = options.gridLateralArrangement || \"\";\r\n this.gridVerticalArrangement = options.gridVerticalArrangement || \"\";\r\n this.layoutOrder = options.layoutOrder;\r\n this.labelSpan = options.labelSpan || \"\";\r\n this.controlSpan = options.controlSpan || \"\";\r\n this.desFormControls = options.desFormControls || [];\r\n this.subDesFormLayout = options.subDesFormLayout || [];\r\n }\r\n}\r\n","import { formBeanUtilsService } from \"./form-bean-utils.service\";\r\n\r\ninterface NodeContrast {\r\n id: string;\r\n parentId: string;\r\n children: string;\r\n}\r\n\r\ninterface NzNodeContrast {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: string;\r\n checked?: string;\r\n selected?: string;\r\n selectable?: string;\r\n disabled?: string;\r\n disableCheckbox?: string;\r\n expanded?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzCascaderOptionContrast {\r\n value: string;\r\n label: string;\r\n title?: string;\r\n disabled?: string;\r\n loading?: string;\r\n isLeaf?: string;\r\n parent?: string;\r\n children: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface NzTreeNodeOptions {\r\n title: string;\r\n key: string;\r\n icon?: string;\r\n isLeaf?: boolean;\r\n checked?: boolean;\r\n selected?: boolean;\r\n selectable?: boolean;\r\n disabled?: boolean;\r\n disableCheckbox?: boolean;\r\n expanded?: boolean;\r\n children?: NzTreeNodeOptions[];\r\n [key: string]: any;\r\n}\r\n\r\ninterface MapNodeItem {\r\n key?: string;\r\n title?: string;\r\n value?: string;\r\n children?: MapNodeOptions;\r\n}\r\n\r\ninterface MapNodeOptions {\r\n [key: string]: MapNodeItem;\r\n}\r\n\r\nclass FormTreeNodeConvertService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 数组转换为树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:18\r\n */\r\n arrayConvertToTreeNode(data: any[], nodeContrast: NodeContrast, parentId?: string): any[] {\r\n if (data != null && data.length > 0) {\r\n let nds: any[] = data.filter((item) => (item[nodeContrast.parentId] || \"\") === (parentId || \"\"));\r\n if (nds != null && nds.length > 0) {\r\n nds = formBeanUtilsService.copy(nds);\r\n nds.forEach((item) => {\r\n const children = this.arrayConvertToTreeNode(data, nodeContrast, item[nodeContrast.id]);\r\n if (children != null && children.length > 0) {\r\n item[nodeContrast.children] = [...children];\r\n }\r\n });\r\n return nds;\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToNzTreeNode(data: any[], nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n title: \"\",\r\n key: \"\",\r\n icon: \"\",\r\n isLeaf: true,\r\n checked: false,\r\n selected: false,\r\n selectable: true,\r\n disabled: isDisabledLeaf,\r\n disableCheckbox: false,\r\n expanded: true,\r\n children: [],\r\n };\r\n for (const propName of Object.keys(nzNodeContrast)) {\r\n if (nzNodeContrast[propName] != null && nzNodeContrast[propName] !== \"\") {\r\n node[propName] = item[nzNodeContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzNodeContrast.children] != null && item[nzNodeContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToNzTreeNode(item[nzNodeContrast.children], nzNodeContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToNzTreeNode(data: any[], nodeContrast: NodeContrast, nzNodeContrast: NzNodeContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToNzTreeNode(treeNode, nzNodeContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 树形结构转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:21\r\n */\r\n treeNodeConvertToCascaderOption(data: any[], nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const nodes: any[] = [];\r\n if (data != null && data.length > 0) {\r\n data.forEach((item) => {\r\n const node: any = {\r\n value: \"\",\r\n label: \"\",\r\n title: \"\",\r\n disabled: isDisabledLeaf,\r\n loading: \"\",\r\n isLeaf: true,\r\n parent: \"\",\r\n children: \"\",\r\n };\r\n for (const propName of Object.keys(nzCascaderOptionContrast)) {\r\n if (nzCascaderOptionContrast[propName] != null && nzCascaderOptionContrast[propName] !== \"\") {\r\n node[propName] = item[nzCascaderOptionContrast[propName]];\r\n }\r\n }\r\n node.children = [];\r\n if (item[nzCascaderOptionContrast.children] != null && item[nzCascaderOptionContrast.children].length > 0) {\r\n const children = this.treeNodeConvertToCascaderOption(item[nzCascaderOptionContrast.children], nzCascaderOptionContrast, isDisabledLeaf);\r\n node.disabled = false;\r\n node.isLeaf = false;\r\n node.children = children;\r\n }\r\n nodes.push(node);\r\n });\r\n }\r\n return nodes;\r\n }\r\n\r\n /**\r\n * @description: 插件树结构转map\r\n * @author ChenRui\r\n * @date 2022/1/18 19:19\r\n */\r\n nzTreeNodeConvertToMap(data: NzTreeNodeOptions[]): MapNodeOptions | undefined {\r\n if (data != null && data.length > 0) {\r\n const mapNodeOptions: MapNodeOptions = {};\r\n data.forEach((item) => {\r\n if (item.value) {\r\n mapNodeOptions[item.value] = {\r\n key: item.key,\r\n title: item.title,\r\n value: item.value,\r\n };\r\n if (item.children && item.children.length > 0) {\r\n mapNodeOptions[item.value].children = this.nzTreeNodeConvertToMap(item.children) || undefined;\r\n }\r\n }\r\n });\r\n return mapNodeOptions;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数组转换为Nz树形结构\r\n * @author ChenRui\r\n * @date 2020/10/30 10:41\r\n */\r\n arrayConvertToCascaderOption(data: any[], nodeContrast: NodeContrast, nzCascaderOptionContrast: NzCascaderOptionContrast, isDisabledLeaf = false): any[] {\r\n const treeNode = this.arrayConvertToTreeNode(data, nodeContrast);\r\n if (treeNode != null && treeNode.length > 0) {\r\n return this.treeNodeConvertToCascaderOption(treeNode, nzCascaderOptionContrast, isDisabledLeaf);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @Description: 树形数据转为数组\r\n * @author LiuBo\r\n * @date 2021/11/5\r\n * @time 16:59\r\n * @param treeNode 树形数据\r\n * @param data 数组 传入空数组即可[]\r\n * @param childName 子节点名称\r\n */\r\n treeNodeConvertToArray(treeNode: any[], data: any[], childName: string): any[] {\r\n data = data || [];\r\n treeNode = JSON.parse(JSON.stringify(treeNode));\r\n treeNode.forEach((val: any) => {\r\n data.push(val);\r\n if (val[childName] && val[childName].length) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(val[childName], data, childName);\r\n }\r\n });\r\n data.forEach((val: any) => {\r\n delete val[childName];\r\n });\r\n return data;\r\n }\r\n}\r\nconst formTreeNodeConvertService: FormTreeNodeConvertService = new FormTreeNodeConvertService();\r\nexport { NodeContrast, NzNodeContrast, NzCascaderOptionContrast, NzTreeNodeOptions, MapNodeItem, MapNodeOptions, formTreeNodeConvertService };\r\n","import { DesForm } from \"../domain/DesForm\";\r\nimport { formLocalForageService } from \"../services/form-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单存储服务\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass FormStore {\r\n private static readonly FORMS = \"forms_data\";\r\n private static readonly VERSION = \"forms_version\";\r\n\r\n constructor() {}\r\n\r\n public setForms(desForm: DesForm[]) {\r\n formLocalForageService.setItem(FormStore.FORMS, desForm);\r\n }\r\n\r\n public getForms(): Promise<DesForm[]> {\r\n return formLocalForageService.getItem(FormStore.FORMS);\r\n }\r\n\r\n public setVersion(value: string) {\r\n formLocalForageService.setItem(FormStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return formLocalForageService.getItem(FormStore.VERSION);\r\n }\r\n}\r\nconst formStore = new FormStore();\r\nexport { formStore };\r\n","import { dictLocalForageService } from \"../services/dict-local-forage.service\";\r\n\r\n/**\r\n * @description: 表单版本管理\r\n * @author ChenRui\r\n * @date 2020/12/30 11:17\r\n */\r\nclass DictStore {\r\n private static readonly DICTS = \"dicts_data\";\r\n private static readonly TREE_DICTS = \"treeDicts_data\";\r\n private static readonly MAP_DICTS = \"map_dicts_data\";\r\n private static readonly MAP_TREE_DICTS = \"map_treeDicts_data\";\r\n private static readonly VERSION = \"dict_version\";\r\n\r\n constructor() {}\r\n\r\n /**常规字典存储*/\r\n public setDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.DICTS);\r\n }\r\n\r\n /**树形字典存储*/\r\n public setTreeDicts(nzTreeNodeOptions: any[]) {\r\n dictLocalForageService.setItem(DictStore.TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getTreeDicts(): Promise<any[]> {\r\n return dictLocalForageService.getItem(DictStore.TREE_DICTS);\r\n }\r\n\r\n /**map型常规字典存储*/\r\n public setMapDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_DICTS);\r\n }\r\n\r\n /**map型树形字典存储*/\r\n public setMapTreeDicts(nzTreeNodeOptions: any) {\r\n dictLocalForageService.setItem(DictStore.MAP_TREE_DICTS, nzTreeNodeOptions);\r\n }\r\n\r\n public getMapTreeDicts(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.MAP_TREE_DICTS);\r\n }\r\n\r\n /*字典版本存储*/\r\n public setVersion(value: string) {\r\n dictLocalForageService.setItem(DictStore.VERSION, value);\r\n }\r\n\r\n public getVersion(): Promise<any> {\r\n return dictLocalForageService.getItem(DictStore.VERSION);\r\n }\r\n}\r\nconst dictStore = new DictStore();\r\nexport { dictStore };\r\n","const DEFAULT_FORM_FILE_NAME = \"form-design.json\";\r\nconst DEFAULT_DICT_FILE_NAME = \"dict.json\";\r\nconst DEFAULT_DICT_URL = \"./resources/json/\" + DEFAULT_DICT_FILE_NAME;\r\nexport { DEFAULT_FORM_FILE_NAME, DEFAULT_DICT_FILE_NAME, DEFAULT_DICT_URL };\r\n","interface Params {\r\n [key: string]: any;\r\n}\r\nexport class RouterService {\r\n constructor() {}\r\n\r\n /**\r\n * @description: 跨应用跳转\r\n * @author ChenRui\r\n * @date 2020/9/28 14:23\r\n */\r\n push(subapp: string): void {\r\n history.pushState(null, subapp, subapp);\r\n }\r\n\r\n /**\r\n * @description: 获取纯路劲\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getPathFromUrl(url: string): string {\r\n let path = url;\r\n if (url.indexOf(\"?\") !== -1) {\r\n path = url.split(\"?\")[0];\r\n }\r\n return path;\r\n }\r\n\r\n /**\r\n * @description: 获取请求参数\r\n * @author ChenRui\r\n * @date 2020/10/12 21:06\r\n */\r\n getParamsFromUrl(url: string): Params | undefined {\r\n let parameter: Params | undefined;\r\n if (url.indexOf(\"?\") !== -1) {\r\n parameter = this.urlParameterToParams(url.split(\"?\")[1]);\r\n }\r\n return parameter;\r\n }\r\n\r\n /**\r\n * @description: url地址参数转换成路由参数对象\r\n * @author ChenRui\r\n * @date 2020/10/12 21:07\r\n */\r\n urlParameterToParams(parameter: string): Params | undefined {\r\n const params: Params = {};\r\n const arr: string[] = parameter.split(\"&\");\r\n arr.forEach((val, idx, array) => {\r\n const kv: string[] = val.split(\"=\");\r\n if (kv.length > 1) {\r\n params[kv[0]] = decodeURIComponent(kv[1]);\r\n } else {\r\n params[kv[0]] = \"\";\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * @description: 地址参数拼接\r\n * @author ChenRui\r\n * @date 2021/2/19 11:40\r\n */\r\n getParameterOfUrl(url: string, parameter?: { [key: string]: any }): string {\r\n let connectiveSymbol = \"\";\r\n if (url.indexOf(\"?\") !== -1) {\r\n connectiveSymbol = \"&\";\r\n } else {\r\n connectiveSymbol = \"?\";\r\n }\r\n if (parameter && Object.keys(parameter).length > 0) {\r\n let mark = 0;\r\n Object.keys(parameter).forEach((item) => {\r\n if (mark === 0) {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += connectiveSymbol + item + \"=\" + parameter[item];\r\n } else {\r\n url += connectiveSymbol + item + \"=\";\r\n }\r\n } else {\r\n if (parameter[item] != null && parameter[item] !== \"null\" && parameter[item] !== \"undefined\") {\r\n url += \"&\" + item + \"=\" + parameter[item];\r\n } else {\r\n url += \"&\" + item + \"=\";\r\n }\r\n }\r\n mark++;\r\n });\r\n }\r\n return url;\r\n }\r\n}\r\nconst routerService: RouterService = new RouterService();\r\nexport { routerService, Params };\r\n","import { FormApi } from \"../core/FormApi\";\r\nimport { ValidateReport } from \"../domain/FormControl\";\r\nimport { Modal } from \"ant-design-vue\";\r\nimport { FORM_ERROR_MODAL_SVG_XML } from \"../constants/encode-assets/svg\";\r\nimport { h, createVNode } from \"vue\";\r\n/**\r\n * @description: 表单校验窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\nclass FormValidateService {\r\n /**\r\n * @description: 校验并进行窗口提示\r\n * @author ChenRui\r\n * @date 2021/8/19 12:58\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n if (formApis != null) {\r\n if (!Array.isArray(formApis)) {\r\n formApis = [formApis];\r\n }\r\n const actualFormApis: FormApi[] = [];\r\n let allError: ValidateReport[] = [];\r\n let errMessage = \"\";\r\n formApis.forEach((formApi) => {\r\n const errors: ValidateReport[] = formApi.validateReport(); // 获取校验报告\r\n if (errors && errors.length > 0) {\r\n actualFormApis.push(formApi);\r\n allError = allError.concat(errors);\r\n }\r\n });\r\n if (allError && allError.length > 0) {\r\n // 显示错误的输入框\r\n allError.forEach((err) => {\r\n console.log(err);\r\n errMessage += `<div class=\"lo-error-item d-flex\"><div class=\"lo-error-describe\">${err.name}</div>&nbsp;${err.errorMsg};</div>`;\r\n });\r\n\r\n Modal.confirm({\r\n width: 380,\r\n title: h(\"div\", { class: \"d-flex\", innerHTML: `<img src=\"${FORM_ERROR_MODAL_SVG_XML}\" /><div style=\"font-size: 18px\">校验提示</div>` }),\r\n content: h(\"div\", { innerHTML: errMessage }),\r\n onOk: () => {\r\n this.showErrorModal(actualFormApis as any, allError, scrollView);\r\n },\r\n okText: \"确认\",\r\n cancelText: \"取消\",\r\n class: \"lo-form-error-modal\",\r\n });\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * @Description: 滚动到错误位置-闪烁提示\r\n * @author LiuBo\r\n * @date 2021/2/25\r\n * @time 21:35\r\n */\r\n public showErrorModal(formApis: FormApi[], allError: ValidateReport[], scrollView?: any) {\r\n const errorEl: any = formApis[0]?.getControlEl(allError[0]?.key);\r\n if (errorEl != null) {\r\n if (scrollView && typeof scrollView === \"string\") {\r\n scrollView = document.getElementById(scrollView);\r\n }\r\n if (scrollView) {\r\n scrollView.scrollTo({ top: errorEl.offsetTop, behavior: \"smooth\" });\r\n const running = (event: any) => {\r\n const scrollTop = scrollView.window != null && scrollView.window === scrollView.window.window ? document.documentElement.scrollTop || document.body.scrollTop : scrollView.scrollTop;\r\n const calculationError = errorEl.offsetTop - scrollTop;\r\n if (calculationError > -20 && calculationError < 20) {\r\n scrollView.removeEventListener(\"scroll\", running);\r\n this.showErrInput(errorEl);\r\n }\r\n };\r\n scrollView.addEventListener(\"scroll\", running, false);\r\n } else {\r\n this.showErrInput(errorEl);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description: 闪烁显示校验不通过的输入框\r\n * @author LiuBo\r\n * @date 2019/6/3\r\n * @time 22:01\r\n * @param el 出错的输入框html对象\r\n */\r\n private showErrInput(el: any) {\r\n let count = 0;\r\n const interval = setInterval(() => {\r\n el.style.opacity = count++ % 2 === 0 ? \".3\" : \"1\";\r\n if (count > 5) {\r\n clearInterval(interval);\r\n }\r\n }, 400);\r\n }\r\n}\r\nconst formValidateService = new FormValidateService();\r\nexport { formValidateService };\r\n","import { FormConfig } from \"../domain/FormConfig\";\r\nimport { FormRestfulResponse } from \"../domain/FormRestfulResponse\";\r\nimport { DesForm } from \"../domain/DesForm\";\r\nimport { DesFormControl } from \"../domain/DesFormControl\";\r\nimport { DesFormLayout } from \"../domain/DesFormLayout\";\r\nimport { FormFieldClass } from \"../constants/enum/form-field-class.enum\";\r\nimport { Control } from \"../domain/Control\";\r\nimport { FormFieldType } from \"../constants/enum/form-field-type.enum\";\r\nimport { Switch } from \"../constants/enum/switch.enum\";\r\nimport { formTreeNodeConvertService, MapNodeOptions, NodeContrast, NzNodeContrast, NzTreeNodeOptions } from \"./form-tree-node-convert.service\";\r\nimport { formBeanUtilsService } from \"./form-bean-utils.service\";\r\nimport { apiService } from \"./api.service\";\r\nimport { formStore } from \"../store/form.store\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\nimport { dictStore } from \"../store\";\r\nimport { SysDictInfo } from \"../domain/SysDictInfo\";\r\nimport { DEFAULT_DICT_URL, DEFAULT_FORM_FILE_NAME } from \"../constants/config/form.config\";\r\nimport { CacheType } from \"../constants/enum/cache-type.enum\";\r\nimport { routerService } from \"./router.service\";\r\nimport { FormApi } from \"../core/FormApi\";\r\nimport { formValidateService } from \"./form-validate.service\";\r\n\r\ninterface DictionaryFormatCollection {\r\n sysDictDetailOptions?: NzTreeNodeOptions[];\r\n sysDictTreeDetailOptions?: NzTreeNodeOptions[];\r\n mapSysDictDetailOptions?: MapNodeOptions;\r\n mapSysDictTreeDetailOptions?: MapNodeOptions;\r\n}\r\n\r\nclass FormToolsService {\r\n private static readonly LOAD_SUCCESS = { code: 1, msg: \"加载成功\" }; // 操作成功提示\r\n private static readonly LOAD_FAIL = { code: 1, msg: \"加载失败\" }; // 操作失败提示\r\n private static IS_FIRST_LOADED = false; // 是否经过首次初始化\r\n private nodeContrast: NodeContrast = { id: \"layoutId\", parentId: \"parentLayoutId\", children: \"subDesFormLayout\" };\r\n private dictDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private dictTreeDetailsContrast: NodeContrast = { id: \"dicEntryPk\", parentId: \"suprDicPk\", children: \"children\" };\r\n private nzDictTreeDetailsContrastContrast: NzNodeContrast = { key: \"dicEntryPk\", title: \"dicValue\", children: \"children\", value: \"dicKey\" };\r\n private desForms: DesForm[] = []; // 表单配置缓存\r\n\r\n sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n mapSysDictDetailOptions: MapNodeOptions | undefined;\r\n mapSysDictTreeDetailOptions: MapNodeOptions | undefined;\r\n\r\n supHoliday?: boolean = false; // 节假日支持\r\n\r\n constructor() {}\r\n\r\n get formConfig(): Partial<FormConfig> {\r\n if ((window as any).$app.config.globalProperties.$qlForm != null) {\r\n return (window as any).$app.config.globalProperties.$qlForm;\r\n }\r\n return {};\r\n }\r\n\r\n setSupHoliday(bool: boolean) {\r\n this.supHoliday = bool;\r\n }\r\n\r\n setFormDisabledColor(color = \"#f0f0f0\") {\r\n document.body.style.setProperty(\"--lo-form-disabled\", color);\r\n }\r\n\r\n /**\r\n * @description: 检查是否经过首次初始化并初始化\r\n * @author ChenRui\r\n * @date 2021/1/5 23:04\r\n */\r\n checkFirstLoadAndInitDesign(): Promise<FormRestfulResponse> {\r\n if (FormToolsService.IS_FIRST_LOADED) {\r\n return Promise.resolve({\r\n code: 1,\r\n msg: \"检查到已经过首次加载,不在执行加载逻辑\",\r\n });\r\n } else {\r\n return this.init().then((res: FormRestfulResponse) => {\r\n FormToolsService.IS_FIRST_LOADED = true;\r\n return res;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化\r\n * @author ChenRui\r\n * @date 2021/3/12 11:02\r\n */\r\n init(): Promise<FormRestfulResponse> {\r\n return Promise.all([this.initDesign(), this.initDict(), this.selectHolidays()]).then(([designRes, dictRes]: any) => {\r\n const code = designRes.code === 1 && dictRes.code === 1 ? 1 : 0;\r\n return { code, msg: designRes.msg + \"; \" + dictRes.msg };\r\n });\r\n }\r\n\r\n /**\r\n * @Description 初始化节假日数据\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 04:11\r\n */\r\n selectHolidays(): Promise<FormRestfulResponse> {\r\n if (this.formConfig.url && this.supHoliday) {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/basic-form-weekday/query-all-by-year\";\r\n return this.fetch(url, {}, undefined, \"POST\").then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n localStorage.setItem(\"traddayList\", JSON.stringify(res.data.traddayList)); // 交易日集合\r\n localStorage.setItem(\"weekdayList\", JSON.stringify(res.data.weekdayList)); // 节假日集合\r\n localStorage.setItem(\"workdayList\", JSON.stringify(res.data.workdayList)); // 工作日集合\r\n }\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n\r\n /**\r\n * @description: 初始化表单设计\r\n * @author ChenRui\r\n * @date 2020/11/20 10:55\r\n */\r\n initDesign(): Promise<FormRestfulResponse> {\r\n return Promise.all([formStore.getForms(), formStore.getVersion()]).then(([forms, formVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return this.loadDesign([this.formConfig.url || DEFAULT_FORM_FILE_NAME]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId != null && this.formConfig.appId !== \"\") {\r\n const query = {\r\n appId: this.formConfig.appId,\r\n cacheType: CacheType.FORM.code,\r\n };\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n return this.fetch(url!, query).then((res: FormRestfulResponse) => {\r\n if (res != null && res.code === 1) {\r\n if (res.data != null && res.data.desCacheVersion != null) {\r\n if (String(formVersion) !== String(res.data.desCacheVersion.cacheVersionNumber)) {\r\n const formUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + res.data.desCacheVersion.storageAddress;\r\n return this.loadDesign([formUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n formStore.setVersion(res.data.desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (forms != null) {\r\n this.desForms = forms;\r\n }\r\n console.log(this.desForms);\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n }\r\n } else {\r\n return Promise.resolve({ code: 1, msg: \"暂无版本数据\" });\r\n }\r\n } else {\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n }\r\n });\r\n } else {\r\n return Promise.resolve({\r\n code: 0,\r\n msg: \"动态加载需指定当前系统编号(appId)\",\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n if (this.formConfig.urls) {\r\n return new Promise((resolve) => {\r\n this.loadDesign(this.formConfig.urls || []).then(() => {\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n } else {\r\n return this.mergeUrlByType(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.FORM.code).then((response: any) => {\r\n if (formVersion === response.cacheVersionNumber) {\r\n if (forms) {\r\n this.desForms = forms;\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_SUCCESS);\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDesign(response.storageAddress).then(() => {\r\n formStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return Promise.resolve(FormToolsService.LOAD_FAIL);\r\n });\r\n }\r\n\r\n /**\r\n * @description: 获取表单或字典数据地址\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByType(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.storageAddress && query.appIds && query.appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.storageAddress);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n /**\r\n * @description: 获取表单或字典数据地址-按照缓存版本号查询字典/表单\r\n * @author ZPFly\r\n * @date 2022/10/18 20:43\r\n */\r\n private mergeUrlByCacheId(type: string): Promise<any> {\r\n const url = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-batch-appids-cachetype\";\r\n const downloadUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/downloadById?cacheVersionId=\";\r\n const query = {\r\n appIds: this.formConfig.appId,\r\n cacheType: type,\r\n };\r\n const appIds: string[] = query.appIds?.split(\",\") || [];\r\n return this.fetch(url!, query).then((resp: any) => {\r\n const response: any = {};\r\n const address: string[] = [];\r\n const cacheVersionNumber: any[] = [];\r\n const cacheVersionMap: any = {};\r\n resp?.data?.forEach((item: any) => {\r\n // 数据下载地址\r\n if (item.cacheType == type && item.desCacheVersion?.cacheVersionId && query.appIds && appIds.indexOf(item.appId) > -1) {\r\n cacheVersionMap[item.appId] = item.desCacheVersion.cacheVersionNumber;\r\n address.push(downloadUrl + item.desCacheVersion.cacheVersionId + \"&appId=\" + item.appId + \"&cacheType=\" + type);\r\n }\r\n });\r\n query.appIds?.split(\",\").forEach((appId) => {\r\n cacheVersionNumber.push(cacheVersionMap[appId]);\r\n });\r\n response.cacheVersionNumber = cacheVersionNumber.join(\",\");\r\n response.storageAddress = address;\r\n return response;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程表单配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDesign(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDesign(urls).then((desForms: DesForm[]) => {\r\n const newDesForms: DesForm[] = [];\r\n if (desForms != null && desForms.length > 0) {\r\n desForms\r\n .filter((item) => item.desFormLayouts != null && item.desFormLayouts.length > 0)\r\n .forEach((item) => {\r\n const newDesForm: DesForm | undefined = this.formatDesForm(item);\r\n if (newDesForm != null) {\r\n newDesForms.push(newDesForm);\r\n }\r\n });\r\n }\r\n this.desForms = newDesForms;\r\n formStore.setForms(this.desForms);\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用表单\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDesign(urls: string[]) {\r\n const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n const headers = this.createFileDownloadAuthorizationHeader();\r\n const fetches: any = [];\r\n urls.forEach((url: string) => {\r\n fetches.push(this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetches).then((desForms: DesForm[]) => {\r\n let newDesForms: DesForm[] = [];\r\n desForms?.forEach((desForm: any) => {\r\n newDesForms = newDesForms.concat(desForm);\r\n });\r\n return newDesForms;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/11 14:32\r\n */\r\n initDict(): Promise<FormRestfulResponse> {\r\n return Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), dictStore.getVersion()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, dictVersion]: any[]) => {\r\n if (this.formConfig.loadMode === \"static\") {\r\n const url = this.formConfig.dictUrl ? this.formConfig.dictUrl : DEFAULT_DICT_URL;\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return this.loadDict([url]);\r\n }\r\n } else if (this.formConfig.loadMode === \"dynamic\") {\r\n if (this.formConfig.appId) {\r\n const url1 = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/query-cacheversion-by-appid-cachetype\";\r\n const url: string = this.formConfig.dictUrl ? this.formConfig.dictUrl : url1 || \"\";\r\n const path: string = routerService.getPathFromUrl(url);\r\n let query: any = routerService.getParamsFromUrl(url) || {};\r\n query.appId = query.appId ? query.appId : this.formConfig.appId;\r\n query.cacheType = query.cacheType ? query.cacheType : CacheType.DICT.code;\r\n query = this.formConfig.dictRestLoadOnlyBody ? {} : query;\r\n const body: any = (this.formConfig.dictRestLoadMode || \"GET\").toLocaleUpperCase() === \"GET\" ? undefined : this.formConfig.dictRestLoadBody;\r\n let headers: any = this.formConfig.dictRestLoadHeaders;\r\n if (headers != null && typeof headers === \"function\") {\r\n headers = (headers as any)();\r\n }\r\n return this.fetch(path, query, body, this.formConfig.dictRestLoadMode, headers).then((res: FormRestfulResponse) => {\r\n if (res != null && (res.code === 1 || String(res.code) === String(200))) {\r\n if (res.data != null) {\r\n let desCacheVersion: any = res.data.desCacheVersion;\r\n if (res.data && res.data instanceof Array && res.data.length > 0) {\r\n desCacheVersion = res.data[0].desCacheVersion;\r\n }\r\n const distUrl = this.formConfig.url + this.formConfig.contextPath + \"/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + desCacheVersion.storageAddress;\r\n if (String(dictVersion) !== String(desCacheVersion.cacheVersionNumber)) {\r\n return this.loadDict([distUrl]).then((resEx: FormRestfulResponse) => {\r\n if (resEx.code === 1) {\r\n dictStore.setVersion(desCacheVersion.cacheVersionNumber);\r\n }\r\n return resEx;\r\n });\r\n } else {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n }\r\n } else {\r\n return { code: 1, msg: \"暂无版本数据\" };\r\n }\r\n } else {\r\n return FormToolsService.LOAD_FAIL;\r\n }\r\n });\r\n } else {\r\n return { code: 0, msg: \"动态加载需指定当前系统编号(appId)\" };\r\n }\r\n } else if (this.formConfig.loadMode === \"merge\") {\r\n return this.mergeUrlByType(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n } else if (this.formConfig.loadMode === \"merge_cacheId\") {\r\n // 按照缓存编号查询表单数据,2024年8月15日14:03:24\r\n return this.mergeUrlByCacheId(CacheType.DICT.code).then((response: any) => {\r\n if (dictVersion === response.cacheVersionNumber) {\r\n if (dicts != null || treeDicts != null) {\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n } else {\r\n return new Promise((resolve) => {\r\n this.loadDict(response.storageAddress).then(() => {\r\n dictStore.setVersion(response.cacheVersionNumber);\r\n resolve(FormToolsService.LOAD_SUCCESS);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n return FormToolsService.LOAD_FAIL;\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载远程字典配置\r\n * @author ChenRui\r\n * @date 2020/11/20 17:30\r\n */\r\n private loadDict(urls: string[]): Promise<FormRestfulResponse> {\r\n return this.mergeFetchDict(urls).then((sysDictInfos: any) => {\r\n if (sysDictInfos != null) {\r\n // 数据格式化\r\n const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // 字典本地存储\r\n if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n }\r\n if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n }\r\n dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n }\r\n return FormToolsService.LOAD_SUCCESS;\r\n });\r\n // const onlySimpleLoadConfig = !!this.formConfig.onlySimpleLoadConfig;\r\n // let sysDictInfos: SysDictInfo[] = [];\r\n // if (loadMode === \"dynamic\") {\r\n // const headers = this.createFileDownloadAuthorizationHeader();\r\n // url = this.formConfig.url + \"/ms-loong/api/v1/des-cache-info/permit_endpoint/download?storageAddress=\" + url;\r\n // return this.fetch(url, {}, undefined, \"GET\", headers, onlySimpleLoadConfig).then((res: any) => {\r\n // sysDictInfos = res;\r\n // if (sysDictInfos != null && sysDictInfos.length > 0) {\r\n // // 数据格式化\r\n // const dictionaryFormatCollection: DictionaryFormatCollection = this.inidDictOptions(sysDictInfos);\r\n // this.sysDictDetailOptions = dictionaryFormatCollection.sysDictDetailOptions || [];\r\n // this.sysDictTreeDetailOptions = dictionaryFormatCollection.sysDictTreeDetailOptions || [];\r\n // this.mapSysDictDetailOptions = dictionaryFormatCollection.mapSysDictDetailOptions;\r\n // this.mapSysDictTreeDetailOptions = dictionaryFormatCollection.mapSysDictTreeDetailOptions;\r\n // // 字典本地存储\r\n // if (dictionaryFormatCollection.sysDictDetailOptions && dictionaryFormatCollection.sysDictDetailOptions.length > 0) {\r\n // dictStore.setDicts(dictionaryFormatCollection.sysDictDetailOptions);\r\n // }\r\n // if (dictionaryFormatCollection.sysDictTreeDetailOptions && dictionaryFormatCollection.sysDictTreeDetailOptions.length > 0) {\r\n // dictStore.setTreeDicts(dictionaryFormatCollection.sysDictTreeDetailOptions);\r\n // }\r\n // dictStore.setMapDicts(dictionaryFormatCollection.mapSysDictDetailOptions || null);\r\n // dictStore.setMapTreeDicts(dictionaryFormatCollection.mapSysDictTreeDetailOptions || null);\r\n // }\r\n // return FormToolsService.LOAD_SUCCESS;\r\n // });\r\n // }\r\n }\r\n\r\n /**\r\n * @description: 合并多个应用字典\r\n * @author ZPFly\r\n * @date 2022/10/17 15:39\r\n */\r\n private mergeFetchDict(dictUrl: string[]) {\r\n const fetchDicts: any = [];\r\n dictUrl.forEach((url: string) => {\r\n fetchDicts.push(this.fetch(url, {}, undefined, \"GET\", undefined, !!this.formConfig.onlySimpleLoadConfig));\r\n });\r\n return Promise.all(fetchDicts).then((dictInfos: SysDictInfo[]) => {\r\n let newDictInfos: SysDictInfo[] = [];\r\n const empObj: any = {};\r\n const filterDist: SysDictInfo[] = [];\r\n dictInfos?.forEach((desForm: any) => {\r\n newDictInfos = newDictInfos.concat(desForm);\r\n });\r\n // 去除重复字典\r\n newDictInfos.forEach((item: SysDictInfo) => {\r\n if (!empObj[item.dictId]) {\r\n filterDist.push(item);\r\n empObj[item.dictId] = true;\r\n }\r\n });\r\n return filterDist;\r\n });\r\n }\r\n /**\r\n * @description: 初始化字典可选项\r\n * @author ChenRui\r\n * @date 2020/11/10 20:38\r\n */\r\n public inidDictOptions(sysDictInfos: SysDictInfo[]): DictionaryFormatCollection {\r\n const sysDictDetailOptions: NzTreeNodeOptions[] = [];\r\n const sysDictTreeDetailOptions: NzTreeNodeOptions[] = [];\r\n sysDictInfos.forEach((sysDictInfo) => {\r\n const node: NzTreeNodeOptions = {\r\n key: sysDictInfo.dictId,\r\n value: sysDictInfo.dictCd,\r\n title: sysDictInfo.dictNm,\r\n isLeaf: true,\r\n expanded: false,\r\n children: [],\r\n };\r\n if (sysDictInfo.dictTp === DynamicOptionType.GeneralDictionary.code) {\r\n node.isLeaf = false;\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.comDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictDetailsContrast,\r\n this.nzDictDetailsContrastContrast,\r\n true\r\n );\r\n sysDictDetailOptions.push(node);\r\n } else if (sysDictInfo.dictTp === DynamicOptionType.TreeDictionary.code) {\r\n if (sysDictInfo.treeDictKeyValues != null && sysDictInfo.treeDictKeyValues.length > 0) {\r\n node.isLeaf = false;\r\n sysDictInfo.treeDictKeyValues.forEach((item) => {\r\n if (item.suprDicPk === \"0\") {\r\n item.suprDicPk = \"\";\r\n }\r\n });\r\n node.children = formTreeNodeConvertService.arrayConvertToNzTreeNode(\r\n sysDictInfo.treeDictKeyValues.filter((it) => !!it.dictId),\r\n this.dictTreeDetailsContrast,\r\n this.nzDictTreeDetailsContrastContrast,\r\n true\r\n );\r\n }\r\n sysDictTreeDetailOptions.push(node);\r\n }\r\n });\r\n const mapNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictDetailOptions);\r\n const mapTreeNodeOptions: MapNodeOptions | undefined = formTreeNodeConvertService.nzTreeNodeConvertToMap(sysDictTreeDetailOptions);\r\n return {\r\n sysDictDetailOptions: sysDictDetailOptions,\r\n sysDictTreeDetailOptions: sysDictTreeDetailOptions,\r\n mapSysDictDetailOptions: mapNodeOptions,\r\n mapSysDictTreeDetailOptions: mapTreeNodeOptions,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 15:48\r\n */\r\n formatDesForm(sourceDesForm: DesForm): DesForm | undefined {\r\n if (sourceDesForm != null) {\r\n const newDesForm: DesForm = new DesForm(sourceDesForm);\r\n const desFormLayouts: DesFormLayout[] = formTreeNodeConvertService.arrayConvertToTreeNode(sourceDesForm.desFormLayouts, this.nodeContrast);\r\n const controls = this.recursionFormatForm([], desFormLayouts);\r\n this.sortControls(controls);\r\n newDesForm.desFormLayouts = [];\r\n newDesForm.controls = controls;\r\n return newDesForm;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 递归格式化\r\n * @author ChenRui\r\n * @date 2020/11/17 10:16\r\n */\r\n private recursionFormatForm(desFormControls: DesFormControl[], desFormLayouts: DesFormLayout[]): Control[] {\r\n const controls: Control[] = [];\r\n if (desFormControls != null && desFormControls.length > 0) {\r\n desFormControls\r\n .filter((item) => !!item.formFieldId)\r\n .forEach((desFormControl) => {\r\n const control: Control = {\r\n code: desFormControl.controlType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormControl.controlType) || {}).name || \"\",\r\n type: Number(desFormControl.controlType) < 50 ? FormFieldClass.Base.code : FormFieldClass.Senior.code,\r\n active: false,\r\n subControls: undefined,\r\n controlAttr: desFormControl,\r\n };\r\n const controlAttr = control.controlAttr as DesFormControl;\r\n controlAttr.isBoldTitle = desFormControl.isBoldTitle === Switch.Enable.code;\r\n controlAttr.isHideTitle = desFormControl.isHideTitle === Switch.Enable.code;\r\n controlAttr.isNotEdit = desFormControl.isNotEdit === Switch.Enable.code;\r\n controlAttr.isShowHoliday = desFormControl.isShowHoliday === Switch.Enable.code;\r\n controlAttr.isHideControl = desFormControl.isHideControl === Switch.Enable.code;\r\n controlAttr.isPasswordBox = desFormControl.isPasswordBox === Switch.Enable.code;\r\n controlAttr.enableAutoComplete = desFormControl.enableAutoComplete === Switch.Enable.code;\r\n controlAttr.isFixedRowHeight = desFormControl.isFixedRowHeight === Switch.Enable.code;\r\n controlAttr.thousandthPercentileFormat = desFormControl.thousandthPercentileFormat === Switch.Enable.code;\r\n controlAttr.isShowCapitalization = desFormControl.isShowCapitalization === Switch.Enable.code;\r\n controlAttr.isLineFeedDisplay = desFormControl.isLineFeedDisplay === Switch.Enable.code;\r\n controlAttr.optionConfig = formBeanUtilsService.parse(desFormControl.optionConfig);\r\n controlAttr.generalDictionaryOptions = formBeanUtilsService.parse(desFormControl.generalDictionaryOptions);\r\n controlAttr.treeShapeOptions = formBeanUtilsService.parse(desFormControl.treeShapeOptions);\r\n controlAttr.isSupportMultiple = desFormControl.isSupportMultiple === Switch.Enable.code;\r\n if (Array.isArray(desFormControl.customUploadType) && desFormControl.customUploadType.length > 0) {\r\n controlAttr.customUploadType = desFormControl.customUploadType.join(\",\");\r\n }\r\n controlAttr.isMultipleChoice = desFormControl.isMultipleChoice === Switch.Enable.code;\r\n controlAttr.isSearchable = desFormControl.isSearchable === Switch.Enable.code;\r\n controlAttr.canAddEntry = desFormControl.canAddEntry === Switch.Enable.code;\r\n controlAttr.isClearButton = desFormControl.isClearButton === Switch.Enable.code;\r\n controlAttr.hiddenDropdown = desFormControl.hiddenDropdown === Switch.Enable.code;\r\n controlAttr.textFold = desFormControl.textFold === Switch.Enable.code;\r\n controlAttr.verificationRules = formBeanUtilsService.parse(desFormControl.verificationRules);\r\n controls.push(control);\r\n });\r\n }\r\n if (desFormLayouts != null && desFormLayouts.length > 0) {\r\n desFormLayouts\r\n .filter((item) => !!item.layoutId)\r\n .forEach((desFormLayout) => {\r\n const layoutControl: Control = {\r\n code: desFormLayout.layoutType,\r\n name: (Object.values(FormFieldType).find((item) => item.code === desFormLayout.layoutType) || {}).name || \"\",\r\n type: FormFieldClass.Layout.code,\r\n active: false,\r\n subControls: [],\r\n controlAttr: new DesFormLayout(desFormLayout),\r\n };\r\n const controlAttr = layoutControl.controlAttr as DesFormLayout;\r\n controlAttr.gridColumnConfig = formBeanUtilsService.parse(desFormLayout.gridColumnConfig);\r\n controlAttr.desFormControls = [];\r\n controlAttr.subDesFormLayout = [];\r\n if ((desFormLayout.subDesFormLayout != null && desFormLayout.subDesFormLayout.length > 0) || (desFormLayout.desFormControls != null && desFormLayout.desFormControls.length > 0)) {\r\n layoutControl.subControls = this.recursionFormatForm(desFormLayout.desFormControls, desFormLayout.subDesFormLayout);\r\n }\r\n controls.push(layoutControl);\r\n });\r\n }\r\n return controls;\r\n }\r\n\r\n /**\r\n * @description: 控件排序\r\n * @author ChenRui\r\n * @date 2020/11/17 11:59\r\n */\r\n private sortControls(controls: Control[]): void {\r\n controls.sort((controlA, controlB) => {\r\n let x = 0;\r\n let y = 0;\r\n if (controlA.type === FormFieldClass.Layout.code) {\r\n x = Number((controlA.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n x = Number((controlA.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n if (controlB.type === FormFieldClass.Layout.code) {\r\n y = Number((controlB.controlAttr as DesFormLayout).layoutOrder);\r\n } else {\r\n y = Number((controlB.controlAttr as DesFormControl).tableFieldOrder);\r\n }\r\n return x - y;\r\n });\r\n controls.forEach((item) => {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n this.sortControls(item.subControls);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 加载资源\r\n * @author ChenRui\r\n * @date 2020/11/23 11:00\r\n */\r\n loadResource(formId: string): DesForm {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n return new DesForm({ formId: formId });\r\n }\r\n }\r\n\r\n initResource(formId: string): Promise<void | DesForm> {\r\n if (this.desForms.length === 0) {\r\n return new Promise((resolve, reject) => {\r\n Promise.all([dictStore.getDicts(), dictStore.getTreeDicts(), dictStore.getMapDicts(), dictStore.getMapTreeDicts(), formStore.getForms()]).then(([dicts, treeDicts, mapDicts, mapTreeDicts, forms]: any[]) => {\r\n this.desForms = forms;\r\n this.sysDictDetailOptions = dicts;\r\n this.sysDictTreeDetailOptions = treeDicts;\r\n this.mapSysDictDetailOptions = mapDicts;\r\n this.mapSysDictTreeDetailOptions = mapTreeDicts;\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n resolve(formBeanUtilsService.copy(desForm));\r\n return formBeanUtilsService.copy(desForm);\r\n } else {\r\n reject(new DesForm({ formId: formId }));\r\n }\r\n });\r\n });\r\n } else {\r\n const desForm: DesForm | undefined = this.desForms.find((item) => item.formId === formId);\r\n if (desForm != null) {\r\n return Promise.resolve(formBeanUtilsService.copy(desForm));\r\n } else {\r\n return Promise.reject(new DesForm({ formId: formId }));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: rest客户端\r\n * @author ChenRui\r\n * @date 2020/11/19 21:02\r\n */\r\n private fetch(path: string, params: { [key: string]: any }, body?: any, method = \"GET\", headers?: any, simple = false): Promise<any> {\r\n headers = headers ? headers : apiService.createBasicHeaders();\r\n return simple ? fetch(path).then((response) => response.json()) : apiService.fetch(path, params, body, method, headers);\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:14\r\n */\r\n validateTips(formApis: FormApi | FormApi[], scrollView?: any): boolean {\r\n return formValidateService.validateTips(formApis, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 创建认证下载消息头\r\n * @author ChenRui\r\n * @date 2020/8/28 15:18\r\n */\r\n createFileDownloadAuthorizationHeader() {\r\n return {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n responseType: \"blob\",\r\n };\r\n }\r\n}\r\nconst formToolsService: FormToolsService = new FormToolsService();\r\nexport { formToolsService, FormToolsService, DictionaryFormatCollection };\r\n","function transform(currencyDigits: any): any {\r\n // Constants:\r\n const MAXIMUM_NUMBER = 999999999999.99;\r\n // Predefine the radix characters and currency symbols for output:\r\n const CN_ZERO = \"零\";\r\n const CN_ONE = \"壹\";\r\n const CN_TWO = \"贰\";\r\n const CN_THREE = \"叁\";\r\n const CN_FOUR = \"肆\";\r\n const CN_FIVE = \"伍\";\r\n const CN_SIX = \"陆\";\r\n const CN_SEVEN = \"柒\";\r\n const CN_EIGHT = \"捌\";\r\n const CN_NINE = \"玖\";\r\n const CN_TEN = \"拾\";\r\n const CN_HUNDRED = \"佰\";\r\n const CN_THOUSAND = \"仟\";\r\n const CN_TEN_THOUSAND = \"万\";\r\n const CN_HUNDRED_MILLION = \"亿\";\r\n // 满足数字大写转换需求\r\n const CN_SYMBOL = \"\"; // 不带前缀【金额:】\r\n const CN_DOLLAR = \"\"; // 元\r\n const DROP = \"点\"; // 点 2023年8月31日10:51:25\r\n const CN_TEN_CENT = \"\"; // 角\r\n const CN_CENT = \"\"; // 分\r\n const CN_INTEGER = \"\"; // 整\r\n\r\n // constiables:\r\n let integral; // Represent integral part of digit number.\r\n let decimal; // Represent decimal part of digit number.\r\n let outputCharacters; // The output result.\r\n let parts = [];\r\n let digits = [],\r\n radices = [],\r\n bigRadices = [],\r\n decimals = [];\r\n let zeroCount;\r\n let i, p, d;\r\n let quotient, modulus;\r\n\r\n // Validate input string:\r\n currencyDigits = currencyDigits != undefined ? currencyDigits.toString() : \"\";\r\n\r\n let prefix = \"\";\r\n if (currencyDigits != null && currencyDigits.indexOf(\"-\") === 0) {\r\n prefix = \"负\";\r\n currencyDigits = currencyDigits.substr(1);\r\n }\r\n if (currencyDigits === \"\") {\r\n return \"空\"; // 默认提示\r\n }\r\n if (currencyDigits.match(/[^,.\\d]/) != null) {\r\n return \"您的输入含有无效字符\";\r\n }\r\n if (currencyDigits.match(/^((\\d{1,3}(,\\d{3})*(.((\\d{3},)*\\d{1,3}))?)|(\\d+(.\\d+)?))$/) == null) {\r\n return \"您的输入的数字格式不正确\";\r\n }\r\n\r\n // Normalize the format of input digits:\r\n currencyDigits = currencyDigits.replace(/,/g, \"\"); // Remove comma delimiters.\r\n currencyDigits = currencyDigits.replace(/^0+/, \"\"); // Trim zeros at the beginning.\r\n // Assert the number is not greater than the maximum number.\r\n if (Number(currencyDigits) > MAXIMUM_NUMBER) {\r\n let divisor = 1000000000000;\r\n if (currencyDigits.indexOf(\".\") > -1) {\r\n const num = currencyDigits.split(\".\")[1].length;\r\n for (let i = 0; i < num; i++) {\r\n divisor = divisor * 10;\r\n }\r\n currencyDigits = currencyDigits.replace(\".\", \"\");\r\n }\r\n return Number(currencyDigits) / Number(divisor) + \"万亿元\";\r\n }\r\n\r\n // Process the coversion from currency digits to characters:\r\n // Separate integral and decimal parts before processing coversion:\r\n parts = currencyDigits.split(\".\");\r\n if (parts.length > 1) {\r\n integral = parts[0];\r\n decimal = parts[1];\r\n // Cut down redundant decimal digits that are after the second.\r\n decimal = decimal.substr(0, 2);\r\n } else {\r\n integral = parts[0];\r\n decimal = \"\";\r\n }\r\n // Prepare the characters corresponding to the digits:\r\n digits = [CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE];\r\n radices = [\"\", CN_TEN, CN_HUNDRED, CN_THOUSAND];\r\n bigRadices = [\"\", CN_TEN_THOUSAND, CN_HUNDRED_MILLION];\r\n decimals = [CN_TEN_CENT, CN_CENT];\r\n // Start processing:\r\n outputCharacters = \"\";\r\n // Process integral part if it is larger than 0:\r\n if (Number(integral) > 0) {\r\n zeroCount = 0;\r\n for (i = 0; i < integral.length; i++) {\r\n p = integral.length - i - 1;\r\n d = integral.substr(i, 1);\r\n quotient = p / 4;\r\n modulus = p % 4;\r\n if (d === \"0\") {\r\n zeroCount++;\r\n } else {\r\n if (zeroCount > 0) {\r\n outputCharacters += digits[0];\r\n }\r\n zeroCount = 0;\r\n outputCharacters += digits[Number(d)] + radices[modulus];\r\n }\r\n if (modulus === 0 && zeroCount < 4) {\r\n outputCharacters += bigRadices[quotient];\r\n zeroCount = 0;\r\n }\r\n }\r\n // outputCharacters += CN_DOLLAR; // 原来的【元】\r\n } else {\r\n //整数位为'零'\r\n outputCharacters = digits[Number(integral)];\r\n }\r\n // Process decimal part if there is:\r\n //校验小数位是否有值\r\n if (decimal !== \"\" && decimal !== \"0\" && decimal !== \"00\") {\r\n outputCharacters += DROP; // new 2023年8月31日10:52:54\r\n for (i = 0; i < decimal.length; i++) {\r\n d = decimal.substr(i, 1);\r\n if (d !== \"0\") {\r\n outputCharacters += digits[Number(d)] + decimals[i];\r\n } else if (i === 0) {\r\n //处理金额十分位数值为0时的大写转换\r\n outputCharacters += digits[Number(d)];\r\n }\r\n }\r\n }\r\n // Confirm and return the final output string:\r\n if (outputCharacters === \"\") {\r\n outputCharacters = CN_ZERO + CN_DOLLAR;\r\n }\r\n if (decimal === \"\") {\r\n outputCharacters += CN_INTEGER;\r\n }\r\n outputCharacters = CN_SYMBOL + prefix + outputCharacters;\r\n return outputCharacters;\r\n}\r\n/**\r\n * @description: 跨列计算\r\n * @author ChenRui\r\n * @date 2020/12/1 19:34\r\n */\r\nconst amountCapitalization = (data: any) => {\r\n return transform(data);\r\n};\r\n\r\nexport default amountCapitalization;\r\n","export class DesFormControl {\r\n formFieldId: string;\r\n formId: string;\r\n layoutId: string;\r\n boundProperty: string;\r\n extendBoundPropertyOne: string;\r\n extendBoundPropertyTwo: string;\r\n formFieldDescribe: string;\r\n controlType: string;\r\n tableFieldOrder: number | undefined;\r\n fieldDefaultValue: any;\r\n titleWidth: string;\r\n isBoldTitle: string | boolean;\r\n isHideTitle: string | boolean;\r\n titleColor: string;\r\n placeholder: string;\r\n tips: string;\r\n isNotEdit: string | boolean;\r\n bindingPrefix: string;\r\n bindingSuffix: string;\r\n builtInFrontLabel: string;\r\n builtInPostLabel: string;\r\n isHideControl: string | boolean;\r\n isShowHoliday: string | boolean;\r\n controlWidth: string;\r\n isPasswordBox: string | boolean;\r\n initRowHeight: number | undefined;\r\n isFixedRowHeight: string | boolean;\r\n formatType: string;\r\n minValue: number | undefined;\r\n maxValue: number | undefined;\r\n step: number | undefined;\r\n decimalPlaces: number | undefined;\r\n thousandthPercentileFormat: string | boolean;\r\n unit: string;\r\n moneyUnit: string;\r\n defineOptionalUnits: string;\r\n defineOptionalUnitsDefault: string;\r\n zoomType: string;\r\n zoomMultiple: number | undefined;\r\n isShowCapitalization: string | boolean;\r\n isLineFeedDisplay: string | boolean;\r\n isOptionType: string | boolean;\r\n optionConfig: any;\r\n dynamicOptionType: string;\r\n generalDictionary: string;\r\n generalDictionaryOptions: any;\r\n treeShape: string;\r\n treeShapeOptions: any;\r\n disableNonLeafNodes: string | boolean;\r\n dateFormat: string;\r\n timeFormat: string;\r\n isSupportMultiple: string | boolean;\r\n maxUploadNumber: number | undefined;\r\n limitSize: number | undefined;\r\n supportUploadType: string;\r\n customUploadType: any;\r\n extendUploadType: string;\r\n attachmentExtendProperties: string;\r\n isMultipleChoice: string | boolean;\r\n isSearchable: string | boolean;\r\n canAddEntry: string | boolean;\r\n isClearButton: string | boolean;\r\n hiddenDropdown: string | boolean; // new by 2021-11-9\r\n onOpeningValue: string;\r\n whenClosedValue: string;\r\n onOpeningText: string;\r\n whenClosedText: string;\r\n customFieldName: string; // new by 2021-11-9\r\n textFold: string | boolean;\r\n enableAutoComplete: string | boolean; // new by 2022-05-07\r\n autoCompleteOptions: any[]; // new by 2022-05-07\r\n verificationRules: any;\r\n busAttr: any;\r\n checkboxStyle: string | boolean; // 多选框选项标签样式\r\n itemWidth: string | boolean; // 多选框选项标签样式\r\n isTreeOpen: string | boolean; // 树形选择框是否展开\r\n changeOnSelect: string | boolean; // 是否允许级联选择框只选中父级选项\r\n textareaRows: number | undefined; // 设置textarea组件默认展示行数\r\n constructor(\r\n options: {\r\n formFieldId?: string;\r\n formId?: string;\r\n layoutId?: string;\r\n boundProperty?: string;\r\n extendBoundPropertyOne?: string;\r\n extendBoundPropertyTwo?: string;\r\n formFieldDescribe?: string;\r\n controlType?: string;\r\n tableFieldOrder?: number;\r\n fieldDefaultValue?: any;\r\n titleWidth?: string;\r\n isBoldTitle?: string;\r\n isHideTitle?: string;\r\n titleColor?: string;\r\n placeholder?: string;\r\n tips?: string;\r\n isNotEdit?: string;\r\n bindingPrefix?: string;\r\n bindingSuffix?: string;\r\n builtInFrontLabel?: string;\r\n builtInPostLabel?: string;\r\n isHideControl?: string;\r\n isShowHoliday?: string;\r\n controlWidth?: string;\r\n isPasswordBox?: string;\r\n initRowHeight?: number;\r\n isFixedRowHeight?: string;\r\n formatType?: string;\r\n minValue?: number;\r\n maxValue?: number;\r\n step?: number;\r\n decimalPlaces?: number;\r\n thousandthPercentileFormat?: string;\r\n unit?: string;\r\n moneyUnit?: string;\r\n defineOptionalUnits?: string;\r\n defineOptionalUnitsDefault?: string;\r\n zoomType?: string;\r\n zoomMultiple?: number;\r\n isShowCapitalization?: string;\r\n isLineFeedDisplay?: string;\r\n isOptionType?: string;\r\n optionConfig?: any;\r\n dynamicOptionType?: string;\r\n generalDictionary?: string;\r\n generalDictionaryOptions?: any;\r\n treeShape?: string;\r\n treeShapeOptions?: any;\r\n disableNonLeafNodes?: string | boolean;\r\n dateFormat?: string;\r\n timeFormat?: string;\r\n isSupportMultiple?: string;\r\n maxUploadNumber?: number;\r\n limitSize?: number;\r\n supportUploadType?: string;\r\n customUploadType?: any;\r\n extendUploadType?: string;\r\n attachmentExtendProperties?: string;\r\n isMultipleChoice?: string;\r\n isSearchable?: string;\r\n canAddEntry?: string;\r\n isClearButton?: string;\r\n hiddenDropdown?: string;\r\n onOpeningValue?: string;\r\n whenClosedValue?: string;\r\n onOpeningText?: string;\r\n whenClosedText?: string;\r\n customFieldName?: string;\r\n textFold?: string;\r\n enableAutoComplete?: string;\r\n autoCompleteOptions?: any[];\r\n verificationRules?: any;\r\n busAttr?: any;\r\n checkboxStyle?: string | boolean;\r\n isTreeOpen?: string | boolean;\r\n itemWidth?: string | boolean;\r\n changeOnSelect?: string | boolean;\r\n textareaRows?: number | undefined;\r\n } = {}\r\n ) {\r\n this.formFieldId = options.formFieldId || \"\";\r\n this.formId = options.formId || \"\";\r\n this.layoutId = options.layoutId || \"\";\r\n this.boundProperty = options.boundProperty || \"\";\r\n this.extendBoundPropertyOne = options.extendBoundPropertyOne || \"\";\r\n this.extendBoundPropertyTwo = options.extendBoundPropertyTwo || \"\";\r\n this.formFieldDescribe = options.formFieldDescribe || \"\";\r\n this.controlType = options.controlType || \"\";\r\n this.tableFieldOrder = options.tableFieldOrder || undefined;\r\n this.fieldDefaultValue = options.fieldDefaultValue || \"\";\r\n this.titleWidth = options.titleWidth || \"\";\r\n this.isBoldTitle = options.isBoldTitle || \"\";\r\n this.isHideTitle = options.isHideTitle || \"\";\r\n this.titleColor = options.titleColor || \"\";\r\n this.placeholder = options.placeholder || \"\";\r\n this.tips = options.tips || \"\";\r\n this.isNotEdit = options.isNotEdit || \"\";\r\n this.bindingPrefix = options.bindingPrefix || \"\";\r\n this.bindingSuffix = options.bindingSuffix || \"\";\r\n this.builtInFrontLabel = options.builtInFrontLabel || \"\";\r\n this.builtInPostLabel = options.builtInPostLabel || \"\";\r\n this.isHideControl = options.isHideControl || \"\";\r\n this.isShowHoliday = options.isShowHoliday || \"\";\r\n this.controlWidth = options.controlWidth || \"\";\r\n this.isPasswordBox = options.isPasswordBox || \"\";\r\n this.initRowHeight = options.initRowHeight || undefined;\r\n this.isFixedRowHeight = options.isFixedRowHeight || \"\";\r\n this.formatType = options.formatType || \"\";\r\n this.minValue = options.minValue || undefined;\r\n this.maxValue = options.maxValue || undefined;\r\n this.step = options.step || undefined;\r\n this.decimalPlaces = options.decimalPlaces || undefined;\r\n this.thousandthPercentileFormat = options.thousandthPercentileFormat || \"\";\r\n this.unit = options.unit || \"\";\r\n this.moneyUnit = options.moneyUnit || \"\";\r\n this.defineOptionalUnits = options.defineOptionalUnits || \"\";\r\n this.defineOptionalUnitsDefault = options.defineOptionalUnitsDefault || \"\";\r\n this.zoomType = options.zoomType || \"\";\r\n this.zoomMultiple = options.zoomMultiple || undefined;\r\n this.isShowCapitalization = options.isShowCapitalization || \"\";\r\n this.isLineFeedDisplay = options.isLineFeedDisplay || \"\";\r\n this.isOptionType = options.isOptionType || \"\";\r\n this.optionConfig = options.optionConfig || \"\";\r\n this.dynamicOptionType = options.dynamicOptionType || \"\";\r\n this.generalDictionary = options.generalDictionary || \"\";\r\n this.generalDictionaryOptions = options.generalDictionaryOptions || \"\";\r\n this.treeShape = options.treeShape || \"\";\r\n this.treeShapeOptions = options.treeShapeOptions || \"\";\r\n this.disableNonLeafNodes = options.disableNonLeafNodes || \"\";\r\n this.dateFormat = options.dateFormat || \"\";\r\n this.timeFormat = options.timeFormat || \"\";\r\n this.isSupportMultiple = options.isSupportMultiple || \"\";\r\n this.maxUploadNumber = options.maxUploadNumber || undefined;\r\n this.limitSize = options.limitSize || undefined;\r\n this.supportUploadType = options.supportUploadType || \"\";\r\n this.customUploadType = options.customUploadType;\r\n this.extendUploadType = options.extendUploadType || \"\";\r\n this.attachmentExtendProperties = options.attachmentExtendProperties || \"\";\r\n this.isMultipleChoice = options.isMultipleChoice || \"\";\r\n this.isSearchable = options.isSearchable || \"\";\r\n this.canAddEntry = options.canAddEntry || \"\";\r\n this.isClearButton = options.isClearButton || \"\";\r\n this.hiddenDropdown = options.hiddenDropdown || \"\";\r\n this.onOpeningValue = options.onOpeningValue || \"\";\r\n this.whenClosedValue = options.whenClosedValue || \"\";\r\n this.onOpeningText = options.onOpeningText || \"\";\r\n this.whenClosedText = options.whenClosedText || \"\";\r\n this.customFieldName = options.customFieldName || \"\";\r\n this.textFold = options.textFold || \"\";\r\n this.enableAutoComplete = options.enableAutoComplete || \"\";\r\n this.autoCompleteOptions = options.autoCompleteOptions || [];\r\n this.verificationRules = options.verificationRules;\r\n this.busAttr = options.busAttr;\r\n this.checkboxStyle = options.checkboxStyle || \"\";\r\n this.isTreeOpen = options.isTreeOpen || \"\";\r\n this.itemWidth = options.itemWidth || \"\";\r\n this.changeOnSelect = options.changeOnSelect || \"\";\r\n this.textareaRows = options.textareaRows || 3;\r\n }\r\n}\r\n","export abstract class AbstractControl {\r\n value: any;\r\n [key: string]: any;\r\n\r\n abstract get(path: Array<string | number> | string): AbstractControl | null;\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\nimport { ValidateStatus } from \"../constants/enum/validate-status.enum\";\r\n\r\nexport interface ValidateResult {\r\n validateStatus?: string;\r\n errorMsg?: any;\r\n}\r\nexport interface ValidateReport {\r\n key: string;\r\n name: string;\r\n errorMsg: any;\r\n controlType: string;\r\n}\r\nexport type ValidateFunc = (val: any) => ValidateResult;\r\nexport interface Validate {\r\n name: string;\r\n validateFunc: ValidateFunc;\r\n}\r\nexport type TextNoticeCallback = (val?: any) => string;\r\n\r\n/**\r\n * @description: 控件对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormControl extends AbstractControl {\r\n history: any[] = []; // 字段历史\r\n validates: Validate[] = []; // 校验规则\r\n textNoticeCallback: TextNoticeCallback | undefined; // 获取文本内容回调\r\n\r\n constructor(formState?: any) {\r\n super();\r\n this.setValue(formState);\r\n }\r\n\r\n setValue(value: any) {\r\n this.value = value || undefined;\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n return this;\r\n }\r\n\r\n /**\r\n * @description: 添加校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:05\r\n */\r\n addValidate(validate: Validate | Validate[]): void {\r\n let validates: Validate[] = [];\r\n if (!(validate instanceof Array)) {\r\n validates.push(validate);\r\n } else {\r\n validates = validate;\r\n }\r\n if (validates && validates.length > 0) {\r\n for (let i = 0; i < validates.length; i++) {\r\n if (validates[i].name) {\r\n const index = this.validates.findIndex((item) => item.name === validates[i].name);\r\n if (index > -1) {\r\n this.validates[index].validateFunc = validates[i].validateFunc;\r\n } else {\r\n this.validates.push(validates[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:06\r\n */\r\n removeValidate(name: string): void {\r\n if (name) {\r\n const index = this.validates.findIndex((item) => item.name === name);\r\n if (index > -1) {\r\n this.validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:47\r\n */\r\n getValidate(name: string): Validate | any {\r\n if (name) {\r\n return this.validates.find((item) => item.name === name);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 校验\r\n * @author ChenRui\r\n * @date 2021/1/26 21:08\r\n */\r\n validate(val: any = this.value): ValidateResult {\r\n for (let i = 0; i < this.validates.length; i++) {\r\n const result: ValidateResult = this.validates[i].validateFunc(val);\r\n if (result && result.validateStatus !== ValidateStatus.Success.code) {\r\n return result;\r\n }\r\n }\r\n return {\r\n validateStatus: ValidateStatus.Success.code,\r\n errorMsg: null,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:56\r\n */\r\n text(): string {\r\n if (this.textNoticeCallback) {\r\n return this.textNoticeCallback();\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { AbstractControl } from \"./AbstractControl\";\r\n\r\n/**\r\n * @description: 表单对象\r\n * @author ChenRui\r\n * @date 2020/12/1 15:06\r\n */\r\nexport class FormGroup extends AbstractControl {\r\n controls: { [key: string]: AbstractControl };\r\n\r\n constructor(controls: { [key: string]: AbstractControl } = {}) {\r\n super();\r\n this.controls = controls;\r\n }\r\n\r\n /**\r\n * @description: 添加控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n addControl(name: string, control: AbstractControl): void {\r\n this.controls[name] = control;\r\n }\r\n\r\n /**\r\n * @description: 移除控件\r\n * @author ChenRui\r\n * @date 2020/12/1 14:47\r\n */\r\n removeControl(name: string): void {\r\n if (this.controls[name] != null) {\r\n delete this.controls[name];\r\n }\r\n }\r\n\r\n get(path: Array<string | number> | string): AbstractControl | null {\r\n if (typeof path === \"string\") {\r\n return this.controls[path];\r\n }\r\n return null;\r\n }\r\n}\r\n","import { OptionType } from \"../constants/enum/option-type.enum\";\r\nimport { DynamicOptionType } from \"../constants/enum/dynamic-option-type.enum\";\r\n\r\nfunction transformReverse(controlAttr: any, data: any[]): void {\r\n if (data == null) {\r\n data = [];\r\n }\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n controlAttr.optionConfig = data;\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n controlAttr.generalDictionaryOptions = data;\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n controlAttr.treeShapeOptions = data;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction transform(controlAttr: any): any[] {\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n return controlAttr.optionConfig || [];\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n return controlAttr.generalDictionaryOptions || [];\r\n } else if (controlAttr.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n return controlAttr.treeShapeOptions || [];\r\n }\r\n }\r\n }\r\n return [];\r\n}\r\n\r\n/**\r\n * @description: 根据字典类型获取可选项\r\n * @author ChenRui\r\n * @date 2020/12/30 11:18\r\n */\r\nconst extractOptions = (controlAttr: any, ...args: any[]): any[] => {\r\n return transform(controlAttr);\r\n};\r\n\r\n/**\r\n * @description: 保存可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:17\r\n */\r\nconst storageOptions = (controlAttr: any, data: any[]): void => {\r\n return transformReverse(controlAttr, data);\r\n};\r\nexport { storageOptions, extractOptions };\r\n","import { ZoomType } from \"@/constants/enum/zoom-type\";\r\nimport { FormControl } from \"@/domain/FormControl\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { getCurrentInstance } from \"vue\";\r\n\r\n/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(data: any, formControl: FormControl) {\r\n const proxy: any = getCurrentInstance()?.proxy;\r\n const mathjs: MathJsStatic = proxy?.$mathjs as MathJsStatic;\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = mathjs.format(mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (String(formControl.value) === \"0\") {\r\n data = 0;\r\n }\r\n return data;\r\n}\r\nconst zoomMultiple = (code: any, formControl: FormControl) => {\r\n return encode(code, formControl);\r\n};\r\n\r\nexport default zoomMultiple;\r\n","/**\r\n * @description: 通用字典转换\r\n * @author ChenRui\r\n * @date 2020/7/29 18:43\r\n */\r\nfunction encode(code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) {\r\n if (switchEnumFiled != null && Object.values(switchEnumFiled).length > 0) {\r\n for (const switchEnum of Object.values(switchEnumFiled) as any) {\r\n return switchEnum[attribute || \"name\"] || defaultVal;\r\n }\r\n }\r\n return defaultVal || \"\";\r\n}\r\nconst switchEnumConvert = (code: string, switchEnumFiled: any, attribute?: string, defaultVal?: any) => {\r\n return encode(code, switchEnumFiled, attribute, defaultVal);\r\n};\r\n\r\nexport default switchEnumConvert;\r\n","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-12085cfe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = [\"title\"]\nconst _hoisted_2 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"lo-text-container\", [{ 'lo-text-column': !_ctx.unfold }, { 'lo-text-row': _ctx.unfold }]])\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['lo-text-box', { 'lo-over': !_ctx.ifOver }, { 'lo-over-hidden': !_ctx.unfold }, { 'lo-unfold': _ctx.ifOver && !_ctx.unfold }]),\n ref: \"textBox\"\n }, [\n _createElementVNode(\"span\", {\n class: \"lo-text\",\n ref: \"spanBox\",\n title: _ctx.content\n }, [\n (_ctx.linkList.indexOf(_ctx.fieldKey) > -1)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.linkClick(_ctx.content)))\n }, _toDisplayString(_ctx.content), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.content), 1))\n ], 8, _hoisted_1)\n ], 2),\n (_ctx.ifOver)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"lo-btn\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.unfold = !_ctx.unfold))\n }, _toDisplayString(_ctx.unfold ? \"收起\" : \"展开\"), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n}","\r\nimport { Prop, Ref, Watch } from \"vue-property-decorator\";\r\nimport { Options, Vue } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n name: \"StretchText\",\r\n})\r\nexport default class StretchText extends Vue {\r\n ifOver = false; // 文本是否超出三行,默认否\r\n unfold = false; // 文本是否是展开状态 默认为收起\r\n @Prop({ default: false }) enableStretchText!: boolean;\r\n @Prop({ default: \"\" }) content!: string;\r\n @Prop({ default: \"\" }) fieldKey!: string; // 元素码值key\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Ref() readonly spanBox: any;\r\n @Ref() readonly textBox: any;\r\n\r\n mounted(): void {\r\n this.onContentHandle();\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:string 元素值value)\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:24\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"content\")\r\n onContentHandle(): void {\r\n // 判断是否显示展开收起按钮\r\n this.ifOver = this.spanBox.offsetHeight > this.textBox.offsetHeight;\r\n }\r\n}\r\n","import { render } from \"./StretchText.vue?vue&type=template&id=12085cfe&scoped=true&ts=true\"\nimport script from \"./StretchText.vue?vue&type=script&lang=ts\"\nexport * from \"./StretchText.vue?vue&type=script&lang=ts\"\n\nimport \"./StretchText.vue?vue&type=style&index=0&id=12085cfe&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-12085cfe\"]])\n\nexport default __exports__","/*eslint-disable*/\r\nconst char_dict: any = \"YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY\"\r\nconst full_dict: any = { \"a\": \"\\u554a\\u963f\\u9515\", \"ai\": \"\\u57c3\\u6328\\u54ce\\u5509\\u54c0\\u7691\\u764c\\u853c\\u77ee\\u827e\\u788d\\u7231\\u9698\\u8bf6\\u6371\\u55f3\\u55cc\\u5ad2\\u7477\\u66a7\\u7839\\u953f\\u972d\", \"an\": \"\\u978d\\u6c28\\u5b89\\u4ffa\\u6309\\u6697\\u5cb8\\u80fa\\u6848\\u8c19\\u57ef\\u63de\\u72b4\\u5eb5\\u6849\\u94f5\\u9e4c\\u9878\\u9eef\", \"ang\": \"\\u80ae\\u6602\\u76ce\", \"ao\": \"\\u51f9\\u6556\\u71ac\\u7ff1\\u8884\\u50b2\\u5965\\u61ca\\u6fb3\\u5773\\u62d7\\u55f7\\u5662\\u5c99\\u5ed2\\u9068\\u5aaa\\u9a9c\\u8071\\u87af\\u93ca\\u9ccc\\u93d6\", \"ba\": \"\\u82ad\\u634c\\u6252\\u53ed\\u5427\\u7b06\\u516b\\u75a4\\u5df4\\u62d4\\u8dcb\\u9776\\u628a\\u8019\\u575d\\u9738\\u7f62\\u7238\\u8307\\u83dd\\u8406\\u636d\\u5c9c\\u705e\\u6777\\u94af\\u7c91\\u9c85\\u9b43\", \"bai\": \"\\u767d\\u67cf\\u767e\\u6446\\u4f70\\u8d25\\u62dc\\u7a17\\u859c\\u63b0\\u97b4\", \"ban\": \"\\u6591\\u73ed\\u642c\\u6273\\u822c\\u9881\\u677f\\u7248\\u626e\\u62cc\\u4f34\\u74e3\\u534a\\u529e\\u7eca\\u962a\\u5742\\u8c73\\u94a3\\u7622\\u764d\\u8228\", \"bang\": \"\\u90a6\\u5e2e\\u6886\\u699c\\u8180\\u7ed1\\u68d2\\u78c5\\u868c\\u9551\\u508d\\u8c24\\u84a1\\u8783\", \"bao\": \"\\u82de\\u80de\\u5305\\u8912\\u96f9\\u4fdd\\u5821\\u9971\\u5b9d\\u62b1\\u62a5\\u66b4\\u8c79\\u9c8d\\u7206\\u52f9\\u8446\\u5b80\\u5b62\\u7172\\u9e28\\u8913\\u8db5\\u9f85\", \"bo\": \"\\u5265\\u8584\\u73bb\\u83e0\\u64ad\\u62e8\\u94b5\\u6ce2\\u535a\\u52c3\\u640f\\u94c2\\u7b94\\u4f2f\\u5e1b\\u8236\\u8116\\u818a\\u6e24\\u6cca\\u9a73\\u4eb3\\u8543\\u5575\\u997d\\u6a97\\u64d8\\u7934\\u94b9\\u9e41\\u7c38\\u8ddb\", \"bei\": \"\\u676f\\u7891\\u60b2\\u5351\\u5317\\u8f88\\u80cc\\u8d1d\\u94a1\\u500d\\u72c8\\u5907\\u60eb\\u7119\\u88ab\\u5b5b\\u9642\\u90b6\\u57e4\\u84d3\\u5457\\u602b\\u6096\\u789a\\u9e4e\\u8919\\u943e\", \"ben\": \"\\u5954\\u82ef\\u672c\\u7b28\\u755a\\u574c\\u951b\", \"beng\": \"\\u5d29\\u7ef7\\u752d\\u6cf5\\u8e66\\u8ff8\\u552a\\u5623\\u750f\", \"bi\": \"\\u903c\\u9f3b\\u6bd4\\u9119\\u7b14\\u5f7c\\u78a7\\u84d6\\u853d\\u6bd5\\u6bd9\\u6bd6\\u5e01\\u5e87\\u75f9\\u95ed\\u655d\\u5f0a\\u5fc5\\u8f9f\\u58c1\\u81c2\\u907f\\u965b\\u5315\\u4ef3\\u4ffe\\u8298\\u835c\\u8378\\u5421\\u54d4\\u72f4\\u5eb3\\u610e\\u6ed7\\u6fde\\u5f3c\\u59a3\\u5a62\\u5b16\\u74a7\\u8d32\\u7540\\u94cb\\u79d5\\u88e8\\u7b5a\\u7b85\\u7be6\\u822d\\u895e\\u8df8\\u9ac0\", \"bian\": \"\\u97ad\\u8fb9\\u7f16\\u8d2c\\u6241\\u4fbf\\u53d8\\u535e\\u8fa8\\u8fa9\\u8fab\\u904d\\u533e\\u5f01\\u82c4\\u5fed\\u6c74\\u7f0f\\u7178\\u782d\\u78a5\\u7a39\\u7a86\\u8759\\u7b3e\\u9cca\", \"biao\": \"\\u6807\\u5f6a\\u8198\\u8868\\u5a4a\\u9aa0\\u98d1\\u98d9\\u98da\\u706c\\u9556\\u9573\\u762d\\u88f1\\u9cd4\", \"bie\": \"\\u9cd6\\u618b\\u522b\\u762a\\u8e69\\u9cd8\", \"bin\": \"\\u5f6c\\u658c\\u6fd2\\u6ee8\\u5bbe\\u6448\\u50a7\\u6d5c\\u7f24\\u73a2\\u6ba1\\u8191\\u9554\\u9acc\\u9b13\", \"bing\": \"\\u5175\\u51b0\\u67c4\\u4e19\\u79c9\\u997c\\u70b3\\u75c5\\u5e76\\u7980\\u90b4\\u6452\\u7ee0\\u678b\\u69df\\u71f9\", \"bu\": \"\\u6355\\u535c\\u54fa\\u8865\\u57e0\\u4e0d\\u5e03\\u6b65\\u7c3f\\u90e8\\u6016\\u62ca\\u535f\\u900b\\u74ff\\u6661\\u949a\\u91ad\", \"ca\": \"\\u64e6\\u5693\\u7924\", \"cai\": \"\\u731c\\u88c1\\u6750\\u624d\\u8d22\\u776c\\u8e29\\u91c7\\u5f69\\u83dc\\u8521\", \"can\": \"\\u9910\\u53c2\\u8695\\u6b8b\\u60ed\\u60e8\\u707f\\u9a96\\u74a8\\u7cb2\\u9eea\", \"cang\": \"\\u82cd\\u8231\\u4ed3\\u6ca7\\u85cf\\u4f27\", \"cao\": \"\\u64cd\\u7cd9\\u69fd\\u66f9\\u8349\\u8279\\u5608\\u6f15\\u87ac\\u825a\", \"ce\": \"\\u5395\\u7b56\\u4fa7\\u518c\\u6d4b\\u5202\\u5e3b\\u607b\", \"ceng\": \"\\u5c42\\u8e6d\\u564c\", \"cha\": \"\\u63d2\\u53c9\\u832c\\u8336\\u67e5\\u78b4\\u643d\\u5bdf\\u5c94\\u5dee\\u8be7\\u7339\\u9987\\u6c4a\\u59f9\\u6748\\u6942\\u69ce\\u6aab\\u9497\\u9538\\u9572\\u8869\", \"chai\": \"\\u62c6\\u67f4\\u8c7a\\u4faa\\u8308\\u7625\\u867f\\u9f87\", \"chan\": \"\\u6400\\u63ba\\u8749\\u998b\\u8c17\\u7f20\\u94f2\\u4ea7\\u9610\\u98a4\\u5181\\u8c04\\u8c36\\u8487\\u5edb\\u5fcf\\u6f7a\\u6fb6\\u5b71\\u7fbc\\u5a75\\u5b17\\u9aa3\\u89c7\\u7985\\u9561\\u88e3\\u87fe\\u8e94\", \"chang\": \"\\u660c\\u7316\\u573a\\u5c1d\\u5e38\\u957f\\u507f\\u80a0\\u5382\\u655e\\u7545\\u5531\\u5021\\u4f25\\u9b2f\\u82cc\\u83d6\\u5f9c\\u6005\\u60dd\\u960a\\u5a3c\\u5ae6\\u6636\\u6c05\\u9cb3\", \"chao\": \"\\u8d85\\u6284\\u949e\\u671d\\u5632\\u6f6e\\u5de2\\u5435\\u7092\\u600a\\u7ec9\\u6641\\u8016\", \"che\": \"\\u8f66\\u626f\\u64a4\\u63a3\\u5f7b\\u6f88\\u577c\\u5c6e\\u7817\", \"chen\": \"\\u90f4\\u81e3\\u8fb0\\u5c18\\u6668\\u5ff1\\u6c89\\u9648\\u8d81\\u886c\\u79f0\\u8c0c\\u62bb\\u55d4\\u5bb8\\u741b\\u6987\\u809c\\u80c2\\u789c\\u9f80\", \"cheng\": \"\\u6491\\u57ce\\u6a59\\u6210\\u5448\\u4e58\\u7a0b\\u60e9\\u6f84\\u8bda\\u627f\\u901e\\u9a8b\\u79e4\\u57d5\\u5d4a\\u5fb5\\u6d48\\u67a8\\u67fd\\u6a18\\u665f\\u584d\\u77a0\\u94d6\\u88ce\\u86cf\\u9172\", \"chi\": \"\\u5403\\u75f4\\u6301\\u5319\\u6c60\\u8fdf\\u5f1b\\u9a70\\u803b\\u9f7f\\u4f88\\u5c3a\\u8d64\\u7fc5\\u65a5\\u70bd\\u50ba\\u5880\\u82aa\\u830c\\u640b\\u53f1\\u54e7\\u557b\\u55e4\\u5f73\\u996c\\u6cb2\\u5ab8\\u6555\\u80dd\\u7719\\u7735\\u9e31\\u761b\\u892b\\u86a9\\u87ad\\u7b1e\\u7bea\\u8c49\\u8e05\\u8e1f\\u9b51\", \"chong\": \"\\u5145\\u51b2\\u866b\\u5d07\\u5ba0\\u833a\\u5fe1\\u61a7\\u94f3\\u825f\", \"chou\": \"\\u62bd\\u916c\\u7574\\u8e0c\\u7a20\\u6101\\u7b79\\u4ec7\\u7ef8\\u7785\\u4e11\\u4fe6\\u5733\\u5e31\\u60c6\\u6eb4\\u59af\\u7633\\u96e0\\u9c8b\", \"chu\": \"\\u81ed\\u521d\\u51fa\\u6a71\\u53a8\\u8e87\\u9504\\u96cf\\u6ec1\\u9664\\u695a\\u7840\\u50a8\\u77d7\\u6410\\u89e6\\u5904\\u4e8d\\u520d\\u61b7\\u7ecc\\u6775\\u696e\\u6a17\\u870d\\u8e70\\u9edc\", \"chuan\": \"\\u63e3\\u5ddd\\u7a7f\\u693d\\u4f20\\u8239\\u5598\\u4e32\\u63be\\u821b\\u60f4\\u9044\\u5ddb\\u6c1a\\u948f\\u9569\\u8221\", \"chuang\": \"\\u75ae\\u7a97\\u5e62\\u5e8a\\u95ef\\u521b\\u6006\", \"chui\": \"\\u5439\\u708a\\u6376\\u9524\\u5782\\u9672\\u68f0\\u69cc\", \"chun\": \"\\u6625\\u693f\\u9187\\u5507\\u6df3\\u7eaf\\u8822\\u4fc3\\u83bc\\u6c8c\\u80ab\\u6710\\u9e51\\u877d\", \"chuo\": \"\\u6233\\u7ef0\\u851f\\u8fb6\\u8f8d\\u955e\\u8e14\\u9f8a\", \"ci\": \"\\u75b5\\u8328\\u78c1\\u96cc\\u8f9e\\u6148\\u74f7\\u8bcd\\u6b64\\u523a\\u8d50\\u6b21\\u8360\\u5472\\u5d6f\\u9e5a\\u8785\\u7ccd\\u8d91\", \"cong\": \"\\u806a\\u8471\\u56f1\\u5306\\u4ece\\u4e1b\\u506c\\u82c1\\u6dd9\\u9aa2\\u742e\\u7481\\u679e\", \"cu\": \"\\u51d1\\u7c97\\u918b\\u7c07\\u731d\\u6b82\\u8e59\", \"cuan\": \"\\u8e7f\\u7be1\\u7a9c\\u6c46\\u64ba\\u6615\\u7228\", \"cui\": \"\\u6467\\u5d14\\u50ac\\u8106\\u7601\\u7cb9\\u6dec\\u7fe0\\u8403\\u60b4\\u7480\\u69b1\\u96b9\", \"cun\": \"\\u6751\\u5b58\\u5bf8\\u78cb\\u5fd6\\u76b4\", \"cuo\": \"\\u64ae\\u6413\\u63aa\\u632b\\u9519\\u539d\\u811e\\u9509\\u77ec\\u75e4\\u9e7e\\u8e49\\u8e9c\", \"da\": \"\\u642d\\u8fbe\\u7b54\\u7629\\u6253\\u5927\\u8037\\u54d2\\u55d2\\u601b\\u59b2\\u75b8\\u8921\\u7b2a\\u977c\\u9791\", \"dai\": \"\\u5446\\u6b79\\u50a3\\u6234\\u5e26\\u6b86\\u4ee3\\u8d37\\u888b\\u5f85\\u902e\\u6020\\u57ed\\u7519\\u5454\\u5cb1\\u8fe8\\u902f\\u9a80\\u7ed0\\u73b3\\u9edb\", \"dan\": \"\\u803d\\u62c5\\u4e39\\u5355\\u90f8\\u63b8\\u80c6\\u65e6\\u6c2e\\u4f46\\u60ee\\u6de1\\u8bde\\u5f39\\u86cb\\u4ebb\\u510b\\u5369\\u840f\\u5556\\u6fb9\\u6a90\\u6b9a\\u8d55\\u7708\\u7605\\u8043\\u7baa\", \"dang\": \"\\u5f53\\u6321\\u515a\\u8361\\u6863\\u8c20\\u51fc\\u83ea\\u5b95\\u7800\\u94db\\u88c6\", \"dao\": \"\\u5200\\u6363\\u8e48\\u5012\\u5c9b\\u7977\\u5bfc\\u5230\\u7a3b\\u60bc\\u9053\\u76d7\\u53e8\\u5541\\u5fc9\\u6d2e\\u6c18\\u7118\\u5fd1\\u7e9b\", \"de\": \"\\u5fb7\\u5f97\\u7684\\u951d\", \"deng\": \"\\u8e6c\\u706f\\u767b\\u7b49\\u77aa\\u51f3\\u9093\\u5654\\u5d9d\\u6225\\u78f4\\u956b\\u7c26\", \"di\": \"\\u5824\\u4f4e\\u6ef4\\u8fea\\u654c\\u7b1b\\u72c4\\u6da4\\u7fdf\\u5ae1\\u62b5\\u5e95\\u5730\\u8482\\u7b2c\\u5e1d\\u5f1f\\u9012\\u7f14\\u6c10\\u7c74\\u8bcb\\u8c1b\\u90b8\\u577b\\u839c\\u837b\\u5600\\u5a23\\u67e2\\u68e3\\u89cc\\u7825\\u78b2\\u7747\\u955d\\u7f9d\\u9ab6\", \"dian\": \"\\u98a0\\u6382\\u6ec7\\u7898\\u70b9\\u5178\\u975b\\u57ab\\u7535\\u4f43\\u7538\\u5e97\\u60e6\\u5960\\u6dc0\\u6bbf\\u4e36\\u963d\\u576b\\u57dd\\u5dc5\\u73b7\\u765c\\u766b\\u7c1f\\u8e2e\", \"diao\": \"\\u7889\\u53fc\\u96d5\\u51cb\\u5201\\u6389\\u540a\\u9493\\u8c03\\u8f7a\\u94de\\u8729\\u7c9c\\u8c82\", \"die\": \"\\u8dcc\\u7239\\u789f\\u8776\\u8fed\\u8c0d\\u53e0\\u4f5a\\u57a4\\u581e\\u63f2\\u558b\\u6e2b\\u8f76\\u7252\\u74de\\u8936\\u800b\\u8e40\\u9cbd\\u9cce\", \"ding\": \"\\u4e01\\u76ef\\u53ee\\u9489\\u9876\\u9f0e\\u952d\\u5b9a\\u8ba2\\u4e22\\u4ec3\\u5576\\u738e\\u815a\\u7887\\u753a\\u94e4\\u7594\\u8035\\u914a\", \"dong\": \"\\u4e1c\\u51ac\\u8463\\u61c2\\u52a8\\u680b\\u4f97\\u606b\\u51bb\\u6d1e\\u578c\\u549a\\u5cbd\\u5cd2\\u5902\\u6c21\\u80e8\\u80f4\\u7850\\u9e2b\", \"dou\": \"\\u515c\\u6296\\u6597\\u9661\\u8c46\\u9017\\u75d8\\u8538\\u94ad\\u7aa6\\u7aac\\u86aa\\u7bfc\\u9161\", \"du\": \"\\u90fd\\u7763\\u6bd2\\u728a\\u72ec\\u8bfb\\u5835\\u7779\\u8d4c\\u675c\\u9540\\u809a\\u5ea6\\u6e21\\u5992\\u828f\\u561f\\u6e0e\\u691f\\u6a50\\u724d\\u8839\\u7b03\\u9ad1\\u9ee9\", \"duan\": \"\\u7aef\\u77ed\\u953b\\u6bb5\\u65ad\\u7f0e\\u5f56\\u6934\\u7145\\u7c16\", \"dui\": \"\\u5806\\u5151\\u961f\\u5bf9\\u603c\\u619d\\u7893\", \"dun\": \"\\u58a9\\u5428\\u8e72\\u6566\\u987f\\u56e4\\u949d\\u76fe\\u9041\\u7096\\u7818\\u7905\\u76f9\\u9566\\u8db8\", \"duo\": \"\\u6387\\u54c6\\u591a\\u593a\\u579b\\u8eb2\\u6735\\u8dfa\\u8235\\u5241\\u60f0\\u5815\\u5484\\u54da\\u7f0d\\u67c1\\u94ce\\u88f0\\u8e31\", \"e\": \"\\u86fe\\u5ce8\\u9e45\\u4fc4\\u989d\\u8bb9\\u5a25\\u6076\\u5384\\u627c\\u904f\\u9102\\u997f\\u5669\\u8c14\\u57a9\\u57ad\\u82ca\\u83aa\\u843c\\u5443\\u6115\\u5c59\\u5a40\\u8f6d\\u66f7\\u816d\\u786a\\u9507\\u9537\\u9e57\\u989a\\u9cc4\", \"en\": \"\\u6069\\u84bd\\u6441\\u5514\\u55ef\", \"er\": \"\\u800c\\u513f\\u8033\\u5c14\\u9975\\u6d31\\u4e8c\\u8d30\\u8fe9\\u73e5\\u94d2\\u9e38\\u9c95\", \"fa\": \"\\u53d1\\u7f5a\\u7b4f\\u4f10\\u4e4f\\u9600\\u6cd5\\u73d0\\u57a1\\u781d\", \"fan\": \"\\u85e9\\u5e06\\u756a\\u7ffb\\u6a0a\\u77fe\\u9492\\u7e41\\u51e1\\u70e6\\u53cd\\u8fd4\\u8303\\u8d29\\u72af\\u996d\\u6cdb\\u8629\\u5e61\\u72ad\\u68b5\\u6535\\u71d4\\u7548\\u8e6f\", \"fang\": \"\\u574a\\u82b3\\u65b9\\u80aa\\u623f\\u9632\\u59a8\\u4eff\\u8bbf\\u7eba\\u653e\\u531a\\u90a1\\u5f77\\u94ab\\u822b\\u9c82\", \"fei\": \"\\u83f2\\u975e\\u5561\\u98de\\u80a5\\u532a\\u8bfd\\u5420\\u80ba\\u5e9f\\u6cb8\\u8d39\\u82be\\u72d2\\u60b1\\u6ddd\\u5983\\u7ecb\\u7eef\\u69a7\\u8153\\u6590\\u6249\\u7953\\u7829\\u9544\\u75f1\\u871a\\u7bda\\u7fe1\\u970f\\u9cb1\", \"fen\": \"\\u82ac\\u915a\\u5429\\u6c1b\\u5206\\u7eb7\\u575f\\u711a\\u6c7e\\u7c89\\u594b\\u4efd\\u5fff\\u6124\\u7caa\\u507e\\u7035\\u68fc\\u610d\\u9cbc\\u9f22\", \"feng\": \"\\u4e30\\u5c01\\u67ab\\u8702\\u5cf0\\u950b\\u98ce\\u75af\\u70fd\\u9022\\u51af\\u7f1d\\u8bbd\\u5949\\u51e4\\u4ff8\\u9146\\u8451\\u6ca3\\u781c\", \"fu\": \"\\u4f5b\\u5426\\u592b\\u6577\\u80a4\\u5b75\\u6276\\u62c2\\u8f90\\u5e45\\u6c1f\\u7b26\\u4f0f\\u4fd8\\u670d\\u6d6e\\u6daa\\u798f\\u88b1\\u5f17\\u752b\\u629a\\u8f85\\u4fef\\u91dc\\u65a7\\u812f\\u8151\\u5e9c\\u8150\\u8d74\\u526f\\u8986\\u8d4b\\u590d\\u5085\\u4ed8\\u961c\\u7236\\u8179\\u8d1f\\u5bcc\\u8ba3\\u9644\\u5987\\u7f1a\\u5490\\u5310\\u51eb\\u90db\\u8299\\u82fb\\u832f\\u83a9\\u83d4\\u544b\\u5e5e\\u6ecf\\u8274\\u5b5a\\u9a78\\u7ec2\\u6874\\u8d59\\u9efb\\u9efc\\u7f58\\u7a03\\u99a5\\u864d\\u86a8\\u8709\\u8760\\u876e\\u9eb8\\u8dba\\u8dd7\\u9cc6\", \"ga\": \"\\u5676\\u560e\\u86e4\\u5c2c\\u5477\\u5c15\\u5c1c\\u65ee\\u9486\", \"gai\": \"\\u8be5\\u6539\\u6982\\u9499\\u76d6\\u6e89\\u4e10\\u9654\\u5793\\u6224\\u8d45\\u80f2\", \"gan\": \"\\u5e72\\u7518\\u6746\\u67d1\\u7aff\\u809d\\u8d76\\u611f\\u79c6\\u6562\\u8d63\\u5769\\u82f7\\u5c34\\u64c0\\u6cd4\\u6de6\\u6f89\\u7ec0\\u6a44\\u65f0\\u77f8\\u75b3\\u9150\", \"gang\": \"\\u5188\\u521a\\u94a2\\u7f38\\u809b\\u7eb2\\u5c97\\u6e2f\\u6206\\u7f61\\u9883\\u7b7b\", \"gong\": \"\\u6760\\u5de5\\u653b\\u529f\\u606d\\u9f9a\\u4f9b\\u8eac\\u516c\\u5bab\\u5f13\\u5de9\\u6c5e\\u62f1\\u8d21\\u5171\\u857b\\u5efe\\u54a3\\u73d9\\u80b1\\u86a3\\u86e9\\u89e5\", \"gao\": \"\\u7bd9\\u768b\\u9ad8\\u818f\\u7f94\\u7cd5\\u641e\\u9550\\u7a3f\\u544a\\u777e\\u8bf0\\u90dc\\u84bf\\u85c1\\u7f1f\\u69d4\\u69c1\\u6772\\u9506\", \"ge\": \"\\u54e5\\u6b4c\\u6401\\u6208\\u9e3d\\u80f3\\u7599\\u5272\\u9769\\u845b\\u683c\\u9601\\u9694\\u94ec\\u4e2a\\u5404\\u9b32\\u4ee1\\u54ff\\u5865\\u55dd\\u7ea5\\u643f\\u8188\\u784c\\u94ea\\u9549\\u88bc\\u988c\\u867c\\u8238\\u9abc\\u9ac2\", \"gei\": \"\\u7ed9\", \"gen\": \"\\u6839\\u8ddf\\u4e98\\u831b\\u54cf\\u826e\", \"geng\": \"\\u8015\\u66f4\\u5e9a\\u7fb9\\u57c2\\u803f\\u6897\\u54fd\\u8d53\\u9ca0\", \"gou\": \"\\u94a9\\u52fe\\u6c9f\\u82df\\u72d7\\u57a2\\u6784\\u8d2d\\u591f\\u4f5d\\u8bdf\\u5ca3\\u9058\\u5abe\\u7f11\\u89cf\\u5f40\\u9e32\\u7b31\\u7bdd\\u97b2\", \"gu\": \"\\u8f9c\\u83c7\\u5495\\u7b8d\\u4f30\\u6cbd\\u5b64\\u59d1\\u9f13\\u53e4\\u86ca\\u9aa8\\u8c37\\u80a1\\u6545\\u987e\\u56fa\\u96c7\\u560f\\u8bc2\\u83f0\\u54cc\\u5d2e\\u6c69\\u688f\\u8f71\\u726f\\u727f\\u80cd\\u81cc\\u6bc2\\u77bd\\u7f5f\\u94b4\\u9522\\u74e0\\u9e2a\\u9e44\\u75fc\\u86c4\\u9164\\u89da\\u9cb4\\u9ab0\\u9e58\", \"gua\": \"\\u522e\\u74dc\\u5250\\u5be1\\u6302\\u8902\\u5366\\u8bd6\\u5471\\u681d\\u9e39\", \"guai\": \"\\u4e56\\u62d0\\u602a\\u54d9\", \"guan\": \"\\u68fa\\u5173\\u5b98\\u51a0\\u89c2\\u7ba1\\u9986\\u7f50\\u60ef\\u704c\\u8d2f\\u500c\\u839e\\u63bc\\u6dab\\u76e5\\u9e73\\u9ccf\", \"guang\": \"\\u5149\\u5e7f\\u901b\\u72b7\\u6844\\u80f1\\u7592\", \"gui\": \"\\u7470\\u89c4\\u572d\\u7845\\u5f52\\u9f9f\\u95fa\\u8f68\\u9b3c\\u8be1\\u7678\\u6842\\u67dc\\u8dea\\u8d35\\u523d\\u5326\\u523f\\u5e8b\\u5b84\\u59ab\\u6867\\u7085\\u6677\\u7688\\u7c0b\\u9c91\\u9cdc\", \"gun\": \"\\u8f8a\\u6eda\\u68cd\\u4e28\\u886e\\u7ef2\\u78d9\\u9ca7\", \"guo\": \"\\u9505\\u90ed\\u56fd\\u679c\\u88f9\\u8fc7\\u9998\\u8803\\u57da\\u63b4\\u5459\\u56d7\\u5e3c\\u5d1e\\u7313\\u6901\\u8662\\u951e\\u8052\\u872e\\u873e\\u8748\", \"ha\": \"\\u54c8\", \"hai\": \"\\u9ab8\\u5b69\\u6d77\\u6c26\\u4ea5\\u5bb3\\u9a87\\u54b4\\u55e8\\u988f\\u91a2\", \"han\": \"\\u9163\\u61a8\\u90af\\u97e9\\u542b\\u6db5\\u5bd2\\u51fd\\u558a\\u7f55\\u7ff0\\u64bc\\u634d\\u65f1\\u61be\\u608d\\u710a\\u6c57\\u6c49\\u9097\\u83e1\\u6496\\u961a\\u701a\\u6657\\u7113\\u9894\\u86b6\\u9f3e\", \"hen\": \"\\u592f\\u75d5\\u5f88\\u72e0\\u6068\", \"hang\": \"\\u676d\\u822a\\u6c86\\u7ed7\\u73e9\\u6841\", \"hao\": \"\\u58d5\\u568e\\u8c6a\\u6beb\\u90dd\\u597d\\u8017\\u53f7\\u6d69\\u8585\\u55e5\\u5686\\u6fe0\\u704f\\u660a\\u7693\\u98a2\\u869d\", \"he\": \"\\u5475\\u559d\\u8377\\u83cf\\u6838\\u79be\\u548c\\u4f55\\u5408\\u76d2\\u8c89\\u9602\\u6cb3\\u6db8\\u8d6b\\u8910\\u9e64\\u8d3a\\u8bc3\\u52be\\u58d1\\u85ff\\u55d1\\u55ec\\u9616\\u76cd\\u86b5\\u7fee\", \"hei\": \"\\u563f\\u9ed1\", \"heng\": \"\\u54fc\\u4ea8\\u6a2a\\u8861\\u6052\\u8a07\\u8605\", \"hong\": \"\\u8f70\\u54c4\\u70d8\\u8679\\u9e3f\\u6d2a\\u5b8f\\u5f18\\u7ea2\\u9ec9\\u8ba7\\u836d\\u85a8\\u95f3\\u6cd3\", \"hou\": \"\\u5589\\u4faf\\u7334\\u543c\\u539a\\u5019\\u540e\\u5820\\u5f8c\\u9005\\u760a\\u7bcc\\u7cc7\\u9c8e\\u9aba\", \"hu\": \"\\u547c\\u4e4e\\u5ffd\\u745a\\u58f6\\u846b\\u80e1\\u8774\\u72d0\\u7cca\\u6e56\\u5f27\\u864e\\u552c\\u62a4\\u4e92\\u6caa\\u6237\\u51b1\\u553f\\u56eb\\u5cb5\\u7322\\u6019\\u60da\\u6d52\\u6ef9\\u7425\\u69f2\\u8f77\\u89f3\\u70c0\\u7173\\u623d\\u6248\\u795c\\u9e55\\u9e71\\u7b0f\\u9190\\u659b\", \"hua\": \"\\u82b1\\u54d7\\u534e\\u733e\\u6ed1\\u753b\\u5212\\u5316\\u8bdd\\u5290\\u6d4d\\u9a85\\u6866\\u94e7\\u7a1e\", \"huai\": \"\\u69d0\\u5f8a\\u6000\\u6dee\\u574f\\u8fd8\\u8e1d\", \"huan\": \"\\u6b22\\u73af\\u6853\\u7f13\\u6362\\u60a3\\u5524\\u75ea\\u8c62\\u7115\\u6da3\\u5ba6\\u5e7b\\u90c7\\u5942\\u57b8\\u64d0\\u571c\\u6d39\\u6d63\\u6f36\\u5bf0\\u902d\\u7f33\\u953e\\u9ca9\\u9b1f\", \"huang\": \"\\u8352\\u614c\\u9ec4\\u78fa\\u8757\\u7c27\\u7687\\u51f0\\u60f6\\u714c\\u6643\\u5e4c\\u604d\\u8c0e\\u968d\\u5fa8\\u6e5f\\u6f62\\u9051\\u749c\\u8093\\u7640\\u87e5\\u7bc1\\u9cc7\", \"hui\": \"\\u7070\\u6325\\u8f89\\u5fbd\\u6062\\u86d4\\u56de\\u6bc1\\u6094\\u6167\\u5349\\u60e0\\u6666\\u8d3f\\u79fd\\u4f1a\\u70e9\\u6c47\\u8bb3\\u8bf2\\u7ed8\\u8bd9\\u8334\\u835f\\u8559\\u54d5\\u5599\\u96b3\\u6d04\\u5f57\\u7f0b\\u73f2\\u6656\\u605a\\u867a\\u87ea\\u9ebe\", \"hun\": \"\\u8364\\u660f\\u5a5a\\u9b42\\u6d51\\u6df7\\u8be8\\u9984\\u960d\\u6eb7\\u7f17\", \"huo\": \"\\u8c41\\u6d3b\\u4f19\\u706b\\u83b7\\u6216\\u60d1\\u970d\\u8d27\\u7978\\u6509\\u56af\\u5925\\u94ac\\u952a\\u956c\\u8020\\u8816\", \"ji\": \"\\u51fb\\u573e\\u57fa\\u673a\\u7578\\u7a3d\\u79ef\\u7b95\\u808c\\u9965\\u8ff9\\u6fc0\\u8ba5\\u9e21\\u59ec\\u7ee9\\u7f09\\u5409\\u6781\\u68d8\\u8f91\\u7c4d\\u96c6\\u53ca\\u6025\\u75be\\u6c72\\u5373\\u5ac9\\u7ea7\\u6324\\u51e0\\u810a\\u5df1\\u84df\\u6280\\u5180\\u5b63\\u4f0e\\u796d\\u5242\\u60b8\\u6d4e\\u5bc4\\u5bc2\\u8ba1\\u8bb0\\u65e2\\u5fcc\\u9645\\u5993\\u7ee7\\u7eaa\\u5c45\\u4e0c\\u4e69\\u525e\\u4f76\\u4f74\\u8114\\u58bc\\u82a8\\u82b0\\u8401\\u84ba\\u857a\\u638e\\u53fd\\u54ad\\u54dc\\u5527\\u5c8c\\u5d74\\u6d0e\\u5f50\\u5c50\\u9aa5\\u757f\\u7391\\u696b\\u6b9b\\u621f\\u6222\\u8d4d\\u89ca\\u7284\\u9f51\\u77f6\\u7f81\\u5d47\\u7a37\\u7620\\u7635\\u866e\\u7b08\\u7b04\\u66a8\\u8dfb\\u8dfd\\u9701\\u9c9a\\u9cab\\u9afb\\u9e82\", \"jia\": \"\\u5609\\u67b7\\u5939\\u4f73\\u5bb6\\u52a0\\u835a\\u988a\\u8d3e\\u7532\\u94be\\u5047\\u7a3c\\u4ef7\\u67b6\\u9a7e\\u5ac1\\u4f3d\\u90cf\\u62ee\\u5cac\\u6d43\\u8fe6\\u73c8\\u621b\\u80db\\u605d\\u94d7\\u9553\\u75c2\\u86f1\\u7b33\\u8888\\u8dcf\", \"jian\": \"\\u6b7c\\u76d1\\u575a\\u5c16\\u7b3a\\u95f4\\u714e\\u517c\\u80a9\\u8270\\u5978\\u7f04\\u8327\\u68c0\\u67ec\\u78b1\\u7877\\u62e3\\u6361\\u7b80\\u4fed\\u526a\\u51cf\\u8350\\u69db\\u9274\\u8df5\\u8d31\\u89c1\\u952e\\u7bad\\u4ef6\\u5065\\u8230\\u5251\\u996f\\u6e10\\u6e85\\u6da7\\u5efa\\u50ed\\u8c0f\\u8c2b\\u83c5\\u84b9\\u641b\\u56dd\\u6e54\\u8e47\\u8b07\\u7f23\\u67a7\\u67d9\\u6957\\u620b\\u622c\\u726e\\u728d\\u6bfd\\u8171\\u7751\\u950f\\u9e63\\u88e5\\u7b15\\u7bb4\\u7fe6\\u8dbc\\u8e3a\\u9ca3\\u97af\", \"jiang\": \"\\u50f5\\u59dc\\u5c06\\u6d46\\u6c5f\\u7586\\u848b\\u6868\\u5956\\u8bb2\\u5320\\u9171\\u964d\\u8333\\u6d1a\\u7edb\\u7f30\\u729f\\u7913\\u8029\\u7ce8\\u8c47\", \"jiao\": \"\\u8549\\u6912\\u7901\\u7126\\u80f6\\u4ea4\\u90ca\\u6d47\\u9a84\\u5a07\\u56bc\\u6405\\u94f0\\u77eb\\u4fa5\\u811a\\u72e1\\u89d2\\u997a\\u7f34\\u7ede\\u527f\\u6559\\u9175\\u8f7f\\u8f83\\u53eb\\u4f7c\\u50ec\\u832d\\u6322\\u564d\\u5ce4\\u5fbc\\u59e3\\u7e9f\\u656b\\u768e\\u9e6a\\u86df\\u91ae\\u8de4\\u9c9b\", \"jie\": \"\\u7a96\\u63ed\\u63a5\\u7686\\u79f8\\u8857\\u9636\\u622a\\u52ab\\u8282\\u6854\\u6770\\u6377\\u776b\\u7aed\\u6d01\\u7ed3\\u89e3\\u59d0\\u6212\\u85c9\\u82a5\\u754c\\u501f\\u4ecb\\u75a5\\u8beb\\u5c4a\\u5048\\u8ba6\\u8bd8\\u5588\\u55df\\u736c\\u5a55\\u5b51\\u6840\\u7352\\u78a3\\u9534\\u7596\\u88b7\\u9889\\u86a7\\u7faf\\u9c92\\u9ab1\\u9aeb\", \"jin\": \"\\u5dfe\\u7b4b\\u65a4\\u91d1\\u4eca\\u6d25\\u895f\\u7d27\\u9526\\u4ec5\\u8c28\\u8fdb\\u9773\\u664b\\u7981\\u8fd1\\u70ec\\u6d78\\u5c3d\\u537a\\u8369\\u5807\\u5664\\u9991\\u5ed1\\u5997\\u7f19\\u747e\\u69ff\\u8d46\\u89d0\\u9485\\u9513\\u887f\\u77dc\", \"jing\": \"\\u52b2\\u8346\\u5162\\u830e\\u775b\\u6676\\u9cb8\\u4eac\\u60ca\\u7cbe\\u7cb3\\u7ecf\\u4e95\\u8b66\\u666f\\u9888\\u9759\\u5883\\u656c\\u955c\\u5f84\\u75c9\\u9756\\u7adf\\u7ade\\u51c0\\u522d\\u5106\\u9631\\u83c1\\u734d\\u61ac\\u6cfe\\u8ff3\\u5f2a\\u5a67\\u80bc\\u80eb\\u8148\\u65cc\", \"jiong\": \"\\u70af\\u7a98\\u5182\\u8fe5\\u6243\", \"jiu\": \"\\u63ea\\u7a76\\u7ea0\\u7396\\u97ed\\u4e45\\u7078\\u4e5d\\u9152\\u53a9\\u6551\\u65e7\\u81fc\\u8205\\u548e\\u5c31\\u759a\\u50e6\\u557e\\u9604\\u67e9\\u6855\\u9e6b\\u8d73\\u9b0f\", \"ju\": \"\\u97a0\\u62d8\\u72d9\\u75bd\\u9a79\\u83ca\\u5c40\\u5480\\u77e9\\u4e3e\\u6cae\\u805a\\u62d2\\u636e\\u5de8\\u5177\\u8ddd\\u8e1e\\u952f\\u4ff1\\u53e5\\u60e7\\u70ac\\u5267\\u5028\\u8bb5\\u82e3\\u82f4\\u8392\\u63ac\\u907d\\u5c66\\u741a\\u67b8\\u6910\\u6998\\u6989\\u6a58\\u728b\\u98d3\\u949c\\u9514\\u7aad\\u88fe\\u8d84\\u91b5\\u8e3d\\u9f83\\u96ce\\u97ab\", \"juan\": \"\\u6350\\u9e43\\u5a1f\\u5026\\u7737\\u5377\\u7ee2\\u9104\\u72f7\\u6d93\\u684a\\u8832\\u9529\\u954c\\u96bd\", \"jue\": \"\\u6485\\u652b\\u6289\\u6398\\u5014\\u7235\\u89c9\\u51b3\\u8bc0\\u7edd\\u53a5\\u5282\\u8c32\\u77cd\\u8568\\u5658\\u5d1b\\u7357\\u5b53\\u73cf\\u6877\\u6a5b\\u721d\\u9562\\u8e76\\u89d6\", \"jun\": \"\\u5747\\u83cc\\u94a7\\u519b\\u541b\\u5cfb\\u4fca\\u7ae3\\u6d5a\\u90e1\\u9a8f\\u6343\\u72fb\\u76b2\\u7b60\\u9e87\", \"ka\": \"\\u5580\\u5496\\u5361\\u4f67\\u5494\\u80e9\", \"ke\": \"\\u54af\\u5777\\u82db\\u67ef\\u68f5\\u78d5\\u9897\\u79d1\\u58f3\\u54b3\\u53ef\\u6e34\\u514b\\u523b\\u5ba2\\u8bfe\\u5ca2\\u606a\\u6e98\\u9a92\\u7f02\\u73c2\\u8f72\\u6c2a\\u778c\\u94b6\\u75b4\\u7aa0\\u874c\\u9ac1\", \"kai\": \"\\u5f00\\u63e9\\u6977\\u51ef\\u6168\\u5240\\u57b2\\u8488\\u5ffe\\u607a\\u94e0\\u950e\", \"kan\": \"\\u520a\\u582a\\u52d8\\u574e\\u780d\\u770b\\u4f83\\u51f5\\u83b0\\u83b6\\u6221\\u9f9b\\u77b0\", \"kang\": \"\\u5eb7\\u6177\\u7ce0\\u625b\\u6297\\u4ea2\\u7095\\u5751\\u4f09\\u95f6\\u94aa\", \"kao\": \"\\u8003\\u62f7\\u70e4\\u9760\\u5c3b\\u6832\\u7292\\u94d0\", \"ken\": \"\\u80af\\u5543\\u57a6\\u6073\\u57a0\\u88c9\\u9880\", \"keng\": \"\\u542d\\u5fd0\\u94ff\", \"kong\": \"\\u7a7a\\u6050\\u5b54\\u63a7\\u5025\\u5d06\\u7b9c\", \"kou\": \"\\u62a0\\u53e3\\u6263\\u5bc7\\u82a4\\u853b\\u53e9\\u770d\\u7b58\", \"ku\": \"\\u67af\\u54ed\\u7a9f\\u82e6\\u9177\\u5e93\\u88e4\\u5233\\u5800\\u55be\\u7ed4\\u9ab7\", \"kua\": \"\\u5938\\u57ae\\u630e\\u8de8\\u80ef\\u4f89\", \"kuai\": \"\\u5757\\u7b77\\u4fa9\\u5feb\\u84af\\u90d0\\u8489\\u72ef\\u810d\", \"kuan\": \"\\u5bbd\\u6b3e\\u9acb\", \"kuang\": \"\\u5321\\u7b50\\u72c2\\u6846\\u77ff\\u7736\\u65f7\\u51b5\\u8bd3\\u8bf3\\u909d\\u5739\\u593c\\u54d0\\u7ea9\\u8d36\", \"kui\": \"\\u4e8f\\u76d4\\u5cbf\\u7aa5\\u8475\\u594e\\u9b41\\u5080\\u9988\\u6127\\u6e83\\u9997\\u532e\\u5914\\u9697\\u63c6\\u55b9\\u559f\\u609d\\u6126\\u9615\\u9035\\u668c\\u777d\\u8069\\u8770\\u7bd1\\u81fe\\u8dec\", \"kun\": \"\\u5764\\u6606\\u6346\\u56f0\\u6083\\u9603\\u7428\\u951f\\u918c\\u9cb2\\u9ae1\", \"kuo\": \"\\u62ec\\u6269\\u5ed3\\u9614\\u86de\", \"la\": \"\\u5783\\u62c9\\u5587\\u8721\\u814a\\u8fa3\\u5566\\u524c\\u647a\\u908b\\u65ef\\u782c\\u760c\", \"lai\": \"\\u83b1\\u6765\\u8d56\\u5d03\\u5f95\\u6d9e\\u6fd1\\u8d49\\u7750\\u94fc\\u765e\\u7c41\", \"lan\": \"\\u84dd\\u5a6a\\u680f\\u62e6\\u7bee\\u9611\\u5170\\u6f9c\\u8c30\\u63fd\\u89c8\\u61d2\\u7f06\\u70c2\\u6ee5\\u5549\\u5c9a\\u61d4\\u6f24\\u6984\\u6593\\u7f71\\u9567\\u8934\", \"lang\": \"\\u7405\\u6994\\u72fc\\u5eca\\u90ce\\u6717\\u6d6a\\u83a8\\u8497\\u5577\\u9606\\u9512\\u7a02\\u8782\", \"lao\": \"\\u635e\\u52b3\\u7262\\u8001\\u4f6c\\u59e5\\u916a\\u70d9\\u6d9d\\u5520\\u5d02\\u6833\\u94d1\\u94f9\\u75e8\\u91aa\", \"le\": \"\\u52d2\\u4e50\\u808b\\u4ec2\\u53fb\\u561e\\u6cd0\\u9cd3\", \"lei\": \"\\u96f7\\u956d\\u857e\\u78ca\\u7d2f\\u5121\\u5792\\u64c2\\u7c7b\\u6cea\\u7fb8\\u8bd4\\u837d\\u54a7\\u6f2f\\u5ad8\\u7f27\\u6a91\\u8012\\u9179\", \"ling\": \"\\u68f1\\u51b7\\u62ce\\u73b2\\u83f1\\u96f6\\u9f84\\u94c3\\u4f36\\u7f9a\\u51cc\\u7075\\u9675\\u5cad\\u9886\\u53e6\\u4ee4\\u9143\\u5844\\u82d3\\u5464\\u56f9\\u6ce0\\u7eeb\\u67c3\\u68c2\\u74f4\\u8046\\u86c9\\u7fce\\u9cae\", \"leng\": \"\\u695e\\u6123\", \"li\": \"\\u5398\\u68a8\\u7281\\u9ece\\u7bf1\\u72f8\\u79bb\\u6f13\\u7406\\u674e\\u91cc\\u9ca4\\u793c\\u8389\\u8354\\u540f\\u6817\\u4e3d\\u5389\\u52b1\\u783e\\u5386\\u5229\\u5088\\u4f8b\\u4fd0\\u75e2\\u7acb\\u7c92\\u6ca5\\u96b6\\u529b\\u7483\\u54e9\\u4fea\\u4fda\\u90e6\\u575c\\u82c8\\u8385\\u84e0\\u85dc\\u6369\\u5456\\u5533\\u55b1\\u7301\\u6ea7\\u6fa7\\u9026\\u5a0c\\u5ae0\\u9a8a\\u7f21\\u73de\\u67a5\\u680e\\u8f79\\u623e\\u783a\\u8a48\\u7f79\\u9502\\u9e42\\u75a0\\u75ac\\u86ce\\u870a\\u8821\\u7b20\\u7be5\\u7c9d\\u91b4\\u8dde\\u96f3\\u9ca1\\u9ce2\\u9ee7\", \"lian\": \"\\u4fe9\\u8054\\u83b2\\u8fde\\u9570\\u5ec9\\u601c\\u6d9f\\u5e18\\u655b\\u8138\\u94fe\\u604b\\u70bc\\u7ec3\\u631b\\u8539\\u5941\\u6f4b\\u6fc2\\u5a08\\u740f\\u695d\\u6b93\\u81c1\\u81a6\\u88e2\\u880a\\u9ca2\", \"liang\": \"\\u7cae\\u51c9\\u6881\\u7cb1\\u826f\\u4e24\\u8f86\\u91cf\\u667e\\u4eae\\u8c05\\u589a\\u690b\\u8e09\\u9753\\u9b49\", \"liao\": \"\\u64a9\\u804a\\u50da\\u7597\\u71ce\\u5be5\\u8fbd\\u6f66\\u4e86\\u6482\\u9563\\u5ed6\\u6599\\u84fc\\u5c25\\u5639\\u7360\\u5bee\\u7f2d\\u948c\\u9e69\\u8022\", \"lie\": \"\\u5217\\u88c2\\u70c8\\u52a3\\u730e\\u51bd\\u57d2\\u6d0c\\u8d94\\u8e90\\u9b23\", \"lin\": \"\\u7433\\u6797\\u78f7\\u9716\\u4e34\\u90bb\\u9cde\\u6dcb\\u51db\\u8d41\\u541d\\u853a\\u5d99\\u5eea\\u9074\\u6aa9\\u8f9a\\u77b5\\u7cbc\\u8e8f\\u9e9f\", \"liu\": \"\\u6e9c\\u7409\\u69b4\\u786b\\u998f\\u7559\\u5218\\u7624\\u6d41\\u67f3\\u516d\\u62a1\\u507b\\u848c\\u6cd6\\u6d4f\\u905b\\u9a9d\\u7efa\\u65d2\\u7198\\u950d\\u954f\\u9e68\\u938f\", \"long\": \"\\u9f99\\u804b\\u5499\\u7b3c\\u7abf\\u9686\\u5784\\u62e2\\u9647\\u5f04\\u5785\\u830f\\u6cf7\\u73d1\\u680a\\u80e7\\u783b\\u7643\", \"lou\": \"\\u697c\\u5a04\\u6402\\u7bd3\\u6f0f\\u964b\\u55bd\\u5d5d\\u9542\\u7618\\u8027\\u877c\\u9ac5\", \"lu\": \"\\u82a6\\u5362\\u9885\\u5e90\\u7089\\u63b3\\u5364\\u864f\\u9c81\\u9e93\\u788c\\u9732\\u8def\\u8d42\\u9e7f\\u6f5e\\u7984\\u5f55\\u9646\\u622e\\u5786\\u6445\\u64b8\\u565c\\u6cf8\\u6e0c\\u6f09\\u7490\\u680c\\u6a79\\u8f73\\u8f82\\u8f98\\u6c07\\u80ea\\u9565\\u9e2c\\u9e6d\\u7c0f\\u823b\\u9c88\", \"lv\": \"\\u9a74\\u5415\\u94dd\\u4fa3\\u65c5\\u5c65\\u5c61\\u7f15\\u8651\\u6c2f\\u5f8b\\u7387\\u6ee4\\u7eff\\u634b\\u95fe\\u6988\\u8182\\u7a06\\u891b\", \"luan\": \"\\u5ce6\\u5b6a\\u6ee6\\u5375\\u4e71\\u683e\\u9e3e\\u92ae\", \"lue\": \"\\u63a0\\u7565\\u950a\", \"lun\": \"\\u8f6e\\u4f26\\u4ed1\\u6ca6\\u7eb6\\u8bba\\u56f5\", \"luo\": \"\\u841d\\u87ba\\u7f57\\u903b\\u9523\\u7ba9\\u9aa1\\u88f8\\u843d\\u6d1b\\u9a86\\u7edc\\u502e\\u8366\\u645e\\u7321\\u6cfa\\u6924\\u8136\\u9559\\u7630\\u96d2\", \"ma\": \"\\u5988\\u9ebb\\u739b\\u7801\\u8682\\u9a6c\\u9a82\\u561b\\u5417\\u551b\\u72b8\\u5b37\\u6769\\u9ebd\", \"mai\": \"\\u57cb\\u4e70\\u9ea6\\u5356\\u8fc8\\u8109\\u52a2\\u836c\\u54aa\\u973e\", \"man\": \"\\u7792\\u9992\\u86ee\\u6ee1\\u8513\\u66fc\\u6162\\u6f2b\\u8c29\\u5881\\u5e54\\u7f26\\u71b3\\u9558\\u989f\\u87a8\\u9cd7\\u9794\", \"mang\": \"\\u8292\\u832b\\u76f2\\u5fd9\\u83bd\\u9099\\u6f2d\\u6726\\u786d\\u87d2\", \"meng\": \"\\u6c13\\u840c\\u8499\\u6aac\\u76df\\u9530\\u731b\\u68a6\\u5b5f\\u52d0\\u750d\\u77a2\\u61f5\\u791e\\u867b\\u8722\\u8813\\u824b\\u8268\\u9efe\", \"miao\": \"\\u732b\\u82d7\\u63cf\\u7784\\u85d0\\u79d2\\u6e3a\\u5e99\\u5999\\u55b5\\u9088\\u7f08\\u7f2a\\u676a\\u6dfc\\u7707\\u9e4b\\u8731\", \"mao\": \"\\u8305\\u951a\\u6bdb\\u77db\\u94c6\\u536f\\u8302\\u5192\\u5e3d\\u8c8c\\u8d38\\u4f94\\u88a4\\u52d6\\u8306\\u5cc1\\u7441\\u6634\\u7266\\u8004\\u65c4\\u61cb\\u7780\\u86d1\\u8765\\u87ca\\u9ae6\", \"me\": \"\\u4e48\", \"mei\": \"\\u73ab\\u679a\\u6885\\u9176\\u9709\\u7164\\u6ca1\\u7709\\u5a92\\u9541\\u6bcf\\u7f8e\\u6627\\u5bd0\\u59b9\\u5a9a\\u5776\\u8393\\u5d4b\\u7338\\u6d7c\\u6e44\\u6963\\u9545\\u9e5b\\u8882\\u9b45\", \"men\": \"\\u95e8\\u95f7\\u4eec\\u626a\\u739f\\u7116\\u61d1\\u9494\", \"mi\": \"\\u772f\\u919a\\u9761\\u7cdc\\u8ff7\\u8c1c\\u5f25\\u7c73\\u79d8\\u89c5\\u6ccc\\u871c\\u5bc6\\u5e42\\u8288\\u5196\\u8c27\\u863c\\u5627\\u7315\\u736f\\u6c68\\u5b93\\u5f2d\\u8112\\u6549\\u7cf8\\u7e3b\\u9e8b\", \"mian\": \"\\u68c9\\u7720\\u7ef5\\u5195\\u514d\\u52c9\\u5a29\\u7f05\\u9762\\u6c94\\u6e4e\\u817c\\u7704\", \"mie\": \"\\u8511\\u706d\\u54a9\\u881b\\u7bfe\", \"min\": \"\\u6c11\\u62bf\\u76bf\\u654f\\u60af\\u95fd\\u82e0\\u5cb7\\u95f5\\u6cef\\u73c9\", \"ming\": \"\\u660e\\u879f\\u9e23\\u94ed\\u540d\\u547d\\u51a5\\u8317\\u6e9f\\u669d\\u7791\\u9169\", \"miu\": \"\\u8c2c\", \"mo\": \"\\u6478\\u6479\\u8611\\u6a21\\u819c\\u78e8\\u6469\\u9b54\\u62b9\\u672b\\u83ab\\u58a8\\u9ed8\\u6cab\\u6f20\\u5bde\\u964c\\u8c1f\\u8309\\u84e6\\u998d\\u5aeb\\u9546\\u79e3\\u763c\\u8031\\u87c6\\u8c8a\\u8c98\", \"mou\": \"\\u8c0b\\u725f\\u67d0\\u53b6\\u54de\\u5a7a\\u7738\\u936a\", \"mu\": \"\\u62c7\\u7261\\u4ea9\\u59c6\\u6bcd\\u5893\\u66ae\\u5e55\\u52df\\u6155\\u6728\\u76ee\\u7766\\u7267\\u7a46\\u4eeb\\u82dc\\u5452\\u6c90\\u6bea\\u94bc\", \"na\": \"\\u62ff\\u54ea\\u5450\\u94a0\\u90a3\\u5a1c\\u7eb3\\u5185\\u637a\\u80ad\\u954e\\u8872\\u7bac\", \"nai\": \"\\u6c16\\u4e43\\u5976\\u8010\\u5948\\u9f10\\u827f\\u8418\\u67f0\", \"nan\": \"\\u5357\\u7537\\u96be\\u56ca\\u5583\\u56e1\\u6960\\u8169\\u877b\\u8d67\", \"nao\": \"\\u6320\\u8111\\u607c\\u95f9\\u5b6c\\u57b4\\u7331\\u7459\\u7847\\u94d9\\u86f2\", \"ne\": \"\\u6dd6\\u5462\\u8bb7\", \"nei\": \"\\u9981\", \"nen\": \"\\u5ae9\\u80fd\\u6798\\u6041\", \"ni\": \"\\u59ae\\u9713\\u502a\\u6ce5\\u5c3c\\u62df\\u4f60\\u533f\\u817b\\u9006\\u6eba\\u4f32\\u576d\\u730a\\u6029\\u6ee0\\u6635\\u65ce\\u7962\\u615d\\u7768\\u94cc\\u9cb5\", \"nian\": \"\\u852b\\u62c8\\u5e74\\u78be\\u64b5\\u637b\\u5ff5\\u5eff\\u8f87\\u9ecf\\u9c87\\u9cb6\", \"niang\": \"\\u5a18\\u917f\", \"niao\": \"\\u9e1f\\u5c3f\\u8311\\u5b32\\u8132\\u8885\", \"nie\": \"\\u634f\\u8042\\u5b7d\\u556e\\u954a\\u954d\\u6d85\\u4e5c\\u9667\\u8616\\u55eb\\u8080\\u989e\\u81ec\\u8e51\", \"nin\": \"\\u60a8\\u67e0\", \"ning\": \"\\u72de\\u51dd\\u5b81\\u62e7\\u6cde\\u4f5e\\u84e5\\u549b\\u752f\\u804d\", \"niu\": \"\\u725b\\u626d\\u94ae\\u7ebd\\u72c3\\u5ff8\\u599e\\u86b4\", \"nong\": \"\\u8113\\u6d53\\u519c\\u4fac\", \"nu\": \"\\u5974\\u52aa\\u6012\\u5476\\u5e11\\u5f29\\u80ec\\u5b65\\u9a7d\", \"nv\": \"\\u5973\\u6067\\u9495\\u8844\", \"nuan\": \"\\u6696\", \"nuenue\": \"\\u8650\", \"nue\": \"\\u759f\\u8c11\", \"nuo\": \"\\u632a\\u61e6\\u7cef\\u8bfa\\u50a9\\u6426\\u558f\\u9518\", \"ou\": \"\\u54e6\\u6b27\\u9e25\\u6bb4\\u85d5\\u5455\\u5076\\u6ca4\\u6004\\u74ef\\u8026\", \"pa\": \"\\u556a\\u8db4\\u722c\\u5e15\\u6015\\u7436\\u8469\\u7b62\", \"pai\": \"\\u62cd\\u6392\\u724c\\u5f98\\u6e43\\u6d3e\\u4ff3\\u848e\", \"pan\": \"\\u6500\\u6f58\\u76d8\\u78d0\\u76fc\\u7554\\u5224\\u53db\\u723f\\u6cee\\u88a2\\u897b\\u87e0\\u8e52\", \"pang\": \"\\u4e53\\u5e9e\\u65c1\\u802a\\u80d6\\u6ec2\\u9004\", \"pao\": \"\\u629b\\u5486\\u5228\\u70ae\\u888d\\u8dd1\\u6ce1\\u530f\\u72cd\\u5e96\\u812c\\u75b1\", \"pei\": \"\\u5478\\u80da\\u57f9\\u88f4\\u8d54\\u966a\\u914d\\u4f69\\u6c9b\\u638a\\u8f94\\u5e14\\u6de0\\u65c6\\u952b\\u9185\\u9708\", \"pen\": \"\\u55b7\\u76c6\\u6e53\", \"peng\": \"\\u7830\\u62a8\\u70f9\\u6f8e\\u5f6d\\u84ec\\u68da\\u787c\\u7bf7\\u81a8\\u670b\\u9e4f\\u6367\\u78b0\\u576f\\u580b\\u562d\\u6026\\u87db\", \"pi\": \"\\u7812\\u9739\\u6279\\u62ab\\u5288\\u7435\\u6bd7\\u5564\\u813e\\u75b2\\u76ae\\u5339\\u75de\\u50fb\\u5c41\\u8b6c\\u4e15\\u9674\\u90b3\\u90eb\\u572e\\u9f19\\u64d7\\u567c\\u5e80\\u5ab2\\u7eb0\\u6787\\u7513\\u7765\\u7f74\\u94cd\\u75e6\\u7656\\u758b\\u868d\\u8c94\", \"pian\": \"\\u7bc7\\u504f\\u7247\\u9a97\\u8c1d\\u9a88\\u728f\\u80fc\\u890a\\u7fe9\\u8e41\", \"piao\": \"\\u98d8\\u6f02\\u74e2\\u7968\\u527d\\u560c\\u5ad6\\u7f25\\u6b8d\\u779f\\u87b5\", \"pie\": \"\\u6487\\u77a5\\u4e3f\\u82e4\\u6c15\", \"pin\": \"\\u62fc\\u9891\\u8d2b\\u54c1\\u8058\\u62da\\u59d8\\u5ad4\\u6980\\u725d\\u98a6\", \"ping\": \"\\u4e52\\u576a\\u82f9\\u840d\\u5e73\\u51ed\\u74f6\\u8bc4\\u5c4f\\u4fdc\\u5a09\\u67b0\\u9c86\", \"po\": \"\\u5761\\u6cfc\\u9887\\u5a46\\u7834\\u9b44\\u8feb\\u7c95\\u53f5\\u9131\\u6ea5\\u73c0\\u948b\\u94b7\\u76a4\\u7b38\", \"pou\": \"\\u5256\\u88d2\\u8e23\", \"pu\": \"\\u6251\\u94fa\\u4ec6\\u8386\\u8461\\u83e9\\u84b2\\u57d4\\u6734\\u5703\\u666e\\u6d66\\u8c31\\u66dd\\u7011\\u530d\\u5657\\u6fee\\u749e\\u6c06\\u9564\\u9568\\u8e7c\", \"qi\": \"\\u671f\\u6b3a\\u6816\\u621a\\u59bb\\u4e03\\u51c4\\u6f06\\u67d2\\u6c8f\\u5176\\u68cb\\u5947\\u6b67\\u7566\\u5d0e\\u8110\\u9f50\\u65d7\\u7948\\u7941\\u9a91\\u8d77\\u5c82\\u4e5e\\u4f01\\u542f\\u5951\\u780c\\u5668\\u6c14\\u8fc4\\u5f03\\u6c7d\\u6ce3\\u8bab\\u4e9f\\u4e93\\u573b\\u8291\\u840b\\u847a\\u5601\\u5c7a\\u5c90\\u6c54\\u6dc7\\u9a90\\u7eee\\u742a\\u7426\\u675e\\u6864\\u69ed\\u6b39\\u797a\\u61a9\\u789b\\u86f4\\u871e\\u7da6\\u7dae\\u8dbf\\u8e4a\\u9ccd\\u9e92\", \"qia\": \"\\u6390\\u6070\\u6d3d\\u845c\", \"qian\": \"\\u7275\\u6266\\u948e\\u94c5\\u5343\\u8fc1\\u7b7e\\u4edf\\u8c26\\u4e7e\\u9ed4\\u94b1\\u94b3\\u524d\\u6f5c\\u9063\\u6d45\\u8c34\\u5811\\u5d4c\\u6b20\\u6b49\\u4f65\\u9621\\u828a\\u82a1\\u8368\\u63ae\\u5c8d\\u60ad\\u614a\\u9a9e\\u6434\\u8930\\u7f31\\u6920\\u80b7\\u6106\\u94a4\\u8654\\u7b9d\", \"qiang\": \"\\u67aa\\u545b\\u8154\\u7f8c\\u5899\\u8537\\u5f3a\\u62a2\\u5af1\\u6a2f\\u6217\\u709d\\u9516\\u9535\\u956a\\u8941\\u8723\\u7f9f\\u8deb\\u8dc4\", \"qiao\": \"\\u6a47\\u9539\\u6572\\u6084\\u6865\\u77a7\\u4e54\\u4fa8\\u5de7\\u9798\\u64ac\\u7fd8\\u5ced\\u4fcf\\u7a8d\\u5281\\u8bee\\u8c2f\\u835e\\u6100\\u6194\\u7f32\\u6a35\\u6bf3\\u7857\\u8df7\\u9792\", \"qie\": \"\\u5207\\u8304\\u4e14\\u602f\\u7a83\\u90c4\\u553c\\u60ec\\u59be\\u6308\\u9532\\u7ba7\", \"qin\": \"\\u94a6\\u4fb5\\u4eb2\\u79e6\\u7434\\u52e4\\u82b9\\u64d2\\u79bd\\u5bdd\\u6c81\\u82a9\\u84c1\\u8572\\u63ff\\u5423\\u55ea\\u5659\\u6eb1\\u6a8e\\u8793\\u887e\", \"qing\": \"\\u9752\\u8f7b\\u6c22\\u503e\\u537f\\u6e05\\u64ce\\u6674\\u6c30\\u60c5\\u9877\\u8bf7\\u5e86\\u5029\\u82d8\\u570a\\u6aa0\\u78ec\\u873b\\u7f44\\u7b90\\u8b26\\u9cad\\u9ee5\", \"qiong\": \"\\u743c\\u7a77\\u909b\\u8315\\u7a79\\u7b47\\u928e\", \"qiu\": \"\\u79cb\\u4e18\\u90b1\\u7403\\u6c42\\u56da\\u914b\\u6cc5\\u4fc5\\u6c3d\\u5def\\u827d\\u72b0\\u6e6b\\u9011\\u9052\\u6978\\u8d47\\u9e20\\u866c\\u86af\\u8764\\u88d8\\u7cd7\\u9cc5\\u9f3d\", \"qu\": \"\\u8d8b\\u533a\\u86c6\\u66f2\\u8eaf\\u5c48\\u9a71\\u6e20\\u53d6\\u5a36\\u9f8b\\u8da3\\u53bb\\u8bce\\u52ac\\u8556\\u8627\\u5c96\\u8862\\u9612\\u74a9\\u89d1\\u6c0d\\u795b\\u78f2\\u766f\\u86d0\\u883c\\u9eb4\\u77bf\\u9ee2\", \"quan\": \"\\u5708\\u98a7\\u6743\\u919b\\u6cc9\\u5168\\u75ca\\u62f3\\u72ac\\u5238\\u529d\\u8be0\\u8343\\u737e\\u609b\\u7efb\\u8f81\\u754e\\u94e8\\u8737\\u7b4c\\u9b08\", \"que\": \"\\u7f3a\\u7094\\u7638\\u5374\\u9e4a\\u69b7\\u786e\\u96c0\\u9619\\u60ab\", \"qun\": \"\\u88d9\\u7fa4\\u9021\", \"ran\": \"\\u7136\\u71c3\\u5189\\u67d3\\u82d2\\u9aef\", \"rang\": \"\\u74e4\\u58e4\\u6518\\u56b7\\u8ba9\\u79b3\\u7a70\", \"rao\": \"\\u9976\\u6270\\u7ed5\\u835b\\u5a06\\u6861\", \"ruo\": \"\\u60f9\\u82e5\\u5f31\", \"re\": \"\\u70ed\\u504c\", \"ren\": \"\\u58ec\\u4ec1\\u4eba\\u5fcd\\u97e7\\u4efb\\u8ba4\\u5203\\u598a\\u7eab\\u4ede\\u834f\\u845a\\u996a\\u8f6b\\u7a14\\u887d\", \"reng\": \"\\u6254\\u4ecd\", \"ri\": \"\\u65e5\", \"rong\": \"\\u620e\\u8338\\u84c9\\u8363\\u878d\\u7194\\u6eb6\\u5bb9\\u7ed2\\u5197\\u5d58\\u72e8\\u7f1b\\u6995\\u877e\", \"rou\": \"\\u63c9\\u67d4\\u8089\\u7cc5\\u8e42\\u97a3\", \"ru\": \"\\u8339\\u8815\\u5112\\u5b7a\\u5982\\u8fb1\\u4e73\\u6c5d\\u5165\\u8925\\u84d0\\u85b7\\u5685\\u6d33\\u6ebd\\u6fe1\\u94f7\\u8966\\u98a5\", \"ruan\": \"\\u8f6f\\u962e\\u670a\", \"rui\": \"\\u854a\\u745e\\u9510\\u82ae\\u8564\\u777f\\u868b\", \"run\": \"\\u95f0\\u6da6\", \"sa\": \"\\u6492\\u6d12\\u8428\\u5345\\u4ee8\\u6332\\u98d2\", \"sai\": \"\\u816e\\u9cc3\\u585e\\u8d5b\\u567b\", \"san\": \"\\u4e09\\u53c1\\u4f1e\\u6563\\u5f61\\u9993\\u6c35\\u6bf5\\u7cc1\\u9730\", \"sang\": \"\\u6851\\u55d3\\u4e27\\u6421\\u78c9\\u98a1\", \"sao\": \"\\u6414\\u9a9a\\u626b\\u5ac2\\u57fd\\u81ca\\u7619\\u9ccb\", \"se\": \"\\u745f\\u8272\\u6da9\\u556c\\u94e9\\u94ef\\u7a51\", \"sen\": \"\\u68ee\", \"seng\": \"\\u50e7\", \"sha\": \"\\u838e\\u7802\\u6740\\u5239\\u6c99\\u7eb1\\u50bb\\u5565\\u715e\\u810e\\u6b43\\u75e7\\u88df\\u970e\\u9ca8\", \"shai\": \"\\u7b5b\\u6652\\u917e\", \"shan\": \"\\u73ca\\u82eb\\u6749\\u5c71\\u5220\\u717d\\u886b\\u95ea\\u9655\\u64c5\\u8d61\\u81b3\\u5584\\u6c55\\u6247\\u7f2e\\u5261\\u8baa\\u912f\\u57cf\\u829f\\u6f78\\u59d7\\u9a9f\\u81bb\\u9490\\u759d\\u87ee\\u8222\\u8dda\\u9cdd\", \"shang\": \"\\u5892\\u4f24\\u5546\\u8d4f\\u664c\\u4e0a\\u5c1a\\u88f3\\u57a7\\u7ef1\\u6b87\\u71b5\\u89de\", \"shao\": \"\\u68a2\\u634e\\u7a0d\\u70e7\\u828d\\u52fa\\u97f6\\u5c11\\u54e8\\u90b5\\u7ecd\\u52ad\\u82d5\\u6f72\\u86f8\\u7b24\\u7b72\\u8244\", \"she\": \"\\u5962\\u8d4a\\u86c7\\u820c\\u820d\\u8d66\\u6444\\u5c04\\u6151\\u6d89\\u793e\\u8bbe\\u538d\\u4f58\\u731e\\u7572\\u9e9d\", \"shen\": \"\\u7837\\u7533\\u547b\\u4f38\\u8eab\\u6df1\\u5a20\\u7ec5\\u795e\\u6c88\\u5ba1\\u5a76\\u751a\\u80be\\u614e\\u6e17\\u8bdc\\u8c02\\u5432\\u54c2\\u6e16\\u6939\\u77e7\\u8703\", \"sheng\": \"\\u58f0\\u751f\\u7525\\u7272\\u5347\\u7ef3\\u7701\\u76db\\u5269\\u80dc\\u5723\\u4e1e\\u6e11\\u5ab5\\u771a\\u7b19\", \"shi\": \"\\u5e08\\u5931\\u72ee\\u65bd\\u6e7f\\u8bd7\\u5c38\\u8671\\u5341\\u77f3\\u62fe\\u65f6\\u4ec0\\u98df\\u8680\\u5b9e\\u8bc6\\u53f2\\u77e2\\u4f7f\\u5c4e\\u9a76\\u59cb\\u5f0f\\u793a\\u58eb\\u4e16\\u67ff\\u4e8b\\u62ed\\u8a93\\u901d\\u52bf\\u662f\\u55dc\\u566c\\u9002\\u4ed5\\u4f8d\\u91ca\\u9970\\u6c0f\\u5e02\\u6043\\u5ba4\\u89c6\\u8bd5\\u8c25\\u57d8\\u83b3\\u84cd\\u5f11\\u5511\\u9963\\u8f7c\\u8006\\u8d33\\u70bb\\u793b\\u94c8\\u94ca\\u87ab\\u8210\\u7b6e\\u8c55\\u9ca5\\u9cba\", \"shou\": \"\\u6536\\u624b\\u9996\\u5b88\\u5bff\\u6388\\u552e\\u53d7\\u7626\\u517d\\u624c\\u72e9\\u7ef6\\u824f\", \"shu\": \"\\u852c\\u67a2\\u68b3\\u6b8a\\u6292\\u8f93\\u53d4\\u8212\\u6dd1\\u758f\\u4e66\\u8d4e\\u5b70\\u719f\\u85af\\u6691\\u66d9\\u7f72\\u8700\\u9ecd\\u9f20\\u5c5e\\u672f\\u8ff0\\u6811\\u675f\\u620d\\u7ad6\\u5885\\u5eb6\\u6570\\u6f31\\u6055\\u500f\\u587e\\u83fd\\u5fc4\\u6cad\\u6d91\\u6f8d\\u59dd\\u7ebe\\u6bf9\\u8167\\u6bb3\\u956f\\u79eb\\u9e6c\", \"shua\": \"\\u5237\\u800d\\u5530\\u6dae\", \"shuai\": \"\\u6454\\u8870\\u7529\\u5e05\\u87c0\", \"shuan\": \"\\u6813\\u62f4\\u95e9\", \"shuang\": \"\\u971c\\u53cc\\u723d\\u5b40\", \"shui\": \"\\u8c01\\u6c34\\u7761\\u7a0e\", \"shun\": \"\\u542e\\u77ac\\u987a\\u821c\\u6042\", \"shuo\": \"\\u8bf4\\u7855\\u6714\\u70c1\\u84b4\\u6420\\u55cd\\u6fef\\u5981\\u69ca\\u94c4\", \"si\": \"\\u65af\\u6495\\u5636\\u601d\\u79c1\\u53f8\\u4e1d\\u6b7b\\u8086\\u5bfa\\u55e3\\u56db\\u4f3a\\u4f3c\\u9972\\u5df3\\u53ae\\u4fdf\\u5155\\u83e5\\u549d\\u6c5c\\u6cd7\\u6f8c\\u59d2\\u9a77\\u7f0c\\u7940\\u7960\\u9536\\u9e36\\u801c\\u86f3\\u7b25\", \"song\": \"\\u677e\\u8038\\u6002\\u9882\\u9001\\u5b8b\\u8bbc\\u8bf5\\u51c7\\u83d8\\u5d27\\u5d69\\u5fea\\u609a\\u6dde\\u7ae6\", \"sou\": \"\\u641c\\u8258\\u64de\\u55fd\\u53df\\u55d6\\u55fe\\u998a\\u6eb2\\u98d5\\u778d\\u953c\\u878b\", \"su\": \"\\u82cf\\u9165\\u4fd7\\u7d20\\u901f\\u7c9f\\u50f3\\u5851\\u6eaf\\u5bbf\\u8bc9\\u8083\\u5919\\u8c21\\u850c\\u55c9\\u612b\\u7c0c\\u89eb\\u7a23\", \"suan\": \"\\u9178\\u849c\\u7b97\", \"sui\": \"\\u867d\\u968b\\u968f\\u7ee5\\u9ad3\\u788e\\u5c81\\u7a57\\u9042\\u96a7\\u795f\\u84d1\\u51ab\\u8c07\\u6fc9\\u9083\\u71e7\\u772d\\u7762\", \"sun\": \"\\u5b59\\u635f\\u7b0b\\u836a\\u72f2\\u98e7\\u69ab\\u8de3\\u96bc\", \"suo\": \"\\u68ad\\u5506\\u7f29\\u7410\\u7d22\\u9501\\u6240\\u5522\\u55e6\\u5a11\\u686b\\u7743\\u7fa7\", \"ta\": \"\\u584c\\u4ed6\\u5b83\\u5979\\u5854\\u736d\\u631e\\u8e4b\\u8e0f\\u95fc\\u6ebb\\u9062\\u69bb\\u6c93\", \"tai\": \"\\u80ce\\u82d4\\u62ac\\u53f0\\u6cf0\\u915e\\u592a\\u6001\\u6c70\\u90b0\\u85b9\\u80bd\\u70b1\\u949b\\u8dc6\\u9c90\", \"tan\": \"\\u574d\\u644a\\u8d2a\\u762b\\u6ee9\\u575b\\u6a80\\u75f0\\u6f6d\\u8c2d\\u8c08\\u5766\\u6bef\\u8892\\u78b3\\u63a2\\u53f9\\u70ad\\u90ef\\u8548\\u6619\\u94bd\\u952c\\u8983\", \"tang\": \"\\u6c64\\u5858\\u642a\\u5802\\u68e0\\u819b\\u5510\\u7cd6\\u50a5\\u9967\\u6e8f\\u746d\\u94f4\\u9557\\u8025\\u8797\\u87b3\\u7fb0\\u91a3\", \"thang\": \"\\u5018\\u8eba\\u6dcc\", \"theng\": \"\\u8d9f\\u70eb\", \"tao\": \"\\u638f\\u6d9b\\u6ed4\\u7ee6\\u8404\\u6843\\u9003\\u6dd8\\u9676\\u8ba8\\u5957\\u6311\\u9f17\\u5555\\u97ec\\u9955\", \"te\": \"\\u7279\", \"teng\": \"\\u85e4\\u817e\\u75bc\\u8a8a\\u6ed5\", \"ti\": \"\\u68af\\u5254\\u8e22\\u9511\\u63d0\\u9898\\u8e44\\u557c\\u4f53\\u66ff\\u568f\\u60d5\\u6d95\\u5243\\u5c49\\u8351\\u608c\\u9016\\u7ee8\\u7f07\\u9e48\\u88fc\\u918d\", \"tian\": \"\\u5929\\u6dfb\\u586b\\u7530\\u751c\\u606c\\u8214\\u8146\\u63ad\\u5fdd\\u9617\\u6b84\\u754b\\u94bf\\u86ba\", \"tiao\": \"\\u6761\\u8fe2\\u773a\\u8df3\\u4f7b\\u7967\\u94eb\\u7a95\\u9f86\\u9ca6\", \"tie\": \"\\u8d34\\u94c1\\u5e16\\u841c\\u992e\", \"ting\": \"\\u5385\\u542c\\u70c3\\u6c40\\u5ef7\\u505c\\u4ead\\u5ead\\u633a\\u8247\\u839b\\u8476\\u5a77\\u6883\\u8713\\u9706\", \"tong\": \"\\u901a\\u6850\\u916e\\u77b3\\u540c\\u94dc\\u5f64\\u7ae5\\u6876\\u6345\\u7b52\\u7edf\\u75db\\u4f5f\\u50ee\\u4edd\\u833c\\u55f5\\u6078\\u6f7c\\u783c\", \"tou\": \"\\u5077\\u6295\\u5934\\u900f\\u4ea0\", \"tu\": \"\\u51f8\\u79c3\\u7a81\\u56fe\\u5f92\\u9014\\u6d82\\u5c60\\u571f\\u5410\\u5154\\u580d\\u837c\\u83df\\u948d\\u9174\", \"tuan\": \"\\u6e4d\\u56e2\\u7583\", \"tui\": \"\\u63a8\\u9893\\u817f\\u8715\\u892a\\u9000\\u5fd2\\u717a\", \"tun\": \"\\u541e\\u5c6f\\u81c0\\u9968\\u66be\\u8c5a\\u7a80\", \"tuo\": \"\\u62d6\\u6258\\u8131\\u9e35\\u9640\\u9a6e\\u9a7c\\u692d\\u59a5\\u62d3\\u553e\\u4e47\\u4f57\\u5768\\u5eb9\\u6cb1\\u67dd\\u7823\\u7ba8\\u8204\\u8dce\\u9f0d\", \"wa\": \"\\u6316\\u54c7\\u86d9\\u6d3c\\u5a03\\u74e6\\u889c\\u4f64\\u5a32\\u817d\", \"wai\": \"\\u6b6a\\u5916\", \"wan\": \"\\u8c4c\\u5f2f\\u6e7e\\u73a9\\u987d\\u4e38\\u70f7\\u5b8c\\u7897\\u633d\\u665a\\u7696\\u60cb\\u5b9b\\u5a49\\u4e07\\u8155\\u525c\\u8284\\u82cb\\u83c0\\u7ea8\\u7efe\\u742c\\u8118\\u7579\\u873f\\u7ba2\", \"wang\": \"\\u6c6a\\u738b\\u4ea1\\u6789\\u7f51\\u5f80\\u65fa\\u671b\\u5fd8\\u5984\\u7f54\\u5c22\\u60d8\\u8f8b\\u9b4d\", \"wei\": \"\\u5a01\\u5dcd\\u5fae\\u5371\\u97e6\\u8fdd\\u6845\\u56f4\\u552f\\u60df\\u4e3a\\u6f4d\\u7ef4\\u82c7\\u840e\\u59d4\\u4f1f\\u4f2a\\u5c3e\\u7eac\\u672a\\u851a\\u5473\\u754f\\u80c3\\u5582\\u9b4f\\u4f4d\\u6e2d\\u8c13\\u5c09\\u6170\\u536b\\u502d\\u504e\\u8bff\\u9688\\u8473\\u8587\\u5e0f\\u5e37\\u5d34\\u5d6c\\u7325\\u732c\\u95f1\\u6ca9\\u6d27\\u6da0\\u9036\\u5a13\\u73ae\\u97ea\\u8ece\\u709c\\u7168\\u71a8\\u75ff\\u8249\\u9c94\", \"wen\": \"\\u761f\\u6e29\\u868a\\u6587\\u95fb\\u7eb9\\u543b\\u7a33\\u7d0a\\u95ee\\u520e\\u6120\\u960c\\u6c76\\u74ba\\u97eb\\u6b81\\u96ef\", \"weng\": \"\\u55e1\\u7fc1\\u74ee\\u84ca\\u8579\", \"wo\": \"\\u631d\\u8717\\u6da1\\u7a9d\\u6211\\u65a1\\u5367\\u63e1\\u6c83\\u83b4\\u5e44\\u6e25\\u674c\\u809f\\u9f8c\", \"wu\": \"\\u5deb\\u545c\\u94a8\\u4e4c\\u6c61\\u8bec\\u5c4b\\u65e0\\u829c\\u68a7\\u543e\\u5434\\u6bcb\\u6b66\\u4e94\\u6342\\u5348\\u821e\\u4f0d\\u4fae\\u575e\\u620a\\u96fe\\u6664\\u7269\\u52ff\\u52a1\\u609f\\u8bef\\u5140\\u4ef5\\u9622\\u90ac\\u572c\\u82b4\\u5e91\\u6003\\u5fe4\\u6d6f\\u5be4\\u8fd5\\u59a9\\u9a9b\\u727e\\u7110\\u9e49\\u9e5c\\u8708\\u92c8\\u9f2f\", \"xi\": \"\\u6614\\u7199\\u6790\\u897f\\u7852\\u77fd\\u6670\\u563b\\u5438\\u9521\\u727a\\u7a00\\u606f\\u5e0c\\u6089\\u819d\\u5915\\u60dc\\u7184\\u70ef\\u6eaa\\u6c50\\u7280\\u6a84\\u88ad\\u5e2d\\u4e60\\u5ab3\\u559c\\u94e3\\u6d17\\u7cfb\\u9699\\u620f\\u7ec6\\u50d6\\u516e\\u96b0\\u90d7\\u831c\\u8478\\u84f0\\u595a\\u550f\\u5f99\\u9969\\u960b\\u6d60\\u6dc5\\u5c63\\u5b09\\u73ba\\u6a28\\u66e6\\u89cb\\u6b37\\u71b9\\u798a\\u79a7\\u94b8\\u7699\\u7a78\\u8725\\u87cb\\u823e\\u7fb2\\u7c9e\\u7fd5\\u91af\\u9f37\", \"xia\": \"\\u778e\\u867e\\u5323\\u971e\\u8f96\\u6687\\u5ce1\\u4fa0\\u72ed\\u4e0b\\u53a6\\u590f\\u5413\\u6380\\u846d\\u55c4\\u72ce\\u9050\\u7455\\u7856\\u7615\\u7f45\\u9ee0\", \"xian\": \"\\u9528\\u5148\\u4ed9\\u9c9c\\u7ea4\\u54b8\\u8d24\\u8854\\u8237\\u95f2\\u6d8e\\u5f26\\u5acc\\u663e\\u9669\\u73b0\\u732e\\u53bf\\u817a\\u9985\\u7fa1\\u5baa\\u9677\\u9650\\u7ebf\\u51bc\\u85d3\\u5c98\\u7303\\u66b9\\u5a34\\u6c19\\u7946\\u9e47\\u75eb\\u86ac\\u7b45\\u7c7c\\u9170\\u8df9\", \"xiang\": \"\\u76f8\\u53a2\\u9576\\u9999\\u7bb1\\u8944\\u6e58\\u4e61\\u7fd4\\u7965\\u8be6\\u60f3\\u54cd\\u4eab\\u9879\\u5df7\\u6a61\\u50cf\\u5411\\u8c61\\u8297\\u8459\\u9977\\u5ea0\\u9aa7\\u7f03\\u87d3\\u9c9e\\u98e8\", \"xiao\": \"\\u8427\\u785d\\u9704\\u524a\\u54ee\\u56a3\\u9500\\u6d88\\u5bb5\\u6dc6\\u6653\\u5c0f\\u5b5d\\u6821\\u8096\\u5578\\u7b11\\u6548\\u54d3\\u54bb\\u5d24\\u6f47\\u900d\\u9a81\\u7ee1\\u67ad\\u67b5\\u7b71\\u7bab\\u9b48\", \"xie\": \"\\u6954\\u4e9b\\u6b47\\u874e\\u978b\\u534f\\u631f\\u643a\\u90aa\\u659c\\u80c1\\u8c10\\u5199\\u68b0\\u5378\\u87f9\\u61c8\\u6cc4\\u6cfb\\u8c22\\u5c51\\u5055\\u4eb5\\u52f0\\u71ee\\u85a4\\u64b7\\u5ee8\\u7023\\u9082\\u7ec1\\u7f2c\\u69ad\\u698d\\u6b59\\u8e9e\", \"xin\": \"\\u85aa\\u82af\\u950c\\u6b23\\u8f9b\\u65b0\\u5ffb\\u5fc3\\u4fe1\\u8845\\u56df\\u99a8\\u8398\\u6b46\\u94fd\\u946b\", \"xing\": \"\\u661f\\u8165\\u7329\\u60fa\\u5174\\u5211\\u578b\\u5f62\\u90a2\\u884c\\u9192\\u5e78\\u674f\\u6027\\u59d3\\u9649\\u8347\\u8365\\u64e4\\u60bb\\u784e\", \"xiong\": \"\\u5144\\u51f6\\u80f8\\u5308\\u6c79\\u96c4\\u718a\\u828e\", \"xiu\": \"\\u4f11\\u4fee\\u7f9e\\u673d\\u55c5\\u9508\\u79c0\\u8896\\u7ee3\\u83a0\\u5cab\\u9990\\u5ea5\\u9e3a\\u8c85\\u9af9\", \"xu\": \"\\u589f\\u620c\\u9700\\u865a\\u5618\\u987b\\u5f90\\u8bb8\\u84c4\\u9157\\u53d9\\u65ed\\u5e8f\\u755c\\u6064\\u7d6e\\u5a7f\\u7eea\\u7eed\\u8bb4\\u8be9\\u5729\\u84ff\\u6035\\u6d2b\\u6e86\\u987c\\u6829\\u7166\\u7809\\u76f1\\u80e5\\u7cc8\\u9191\", \"xuan\": \"\\u8f69\\u55a7\\u5ba3\\u60ac\\u65cb\\u7384\\u9009\\u7663\\u7729\\u7eda\\u5107\\u8c16\\u8431\\u63ce\\u9994\\u6ceb\\u6d35\\u6e32\\u6f29\\u7487\\u6966\\u6684\\u70ab\\u714a\\u78b9\\u94c9\\u955f\\u75c3\", \"xue\": \"\\u9774\\u859b\\u5b66\\u7a74\\u96ea\\u8840\\u5671\\u6cf6\\u9cd5\", \"xun\": \"\\u52cb\\u718f\\u5faa\\u65ec\\u8be2\\u5bfb\\u9a6f\\u5de1\\u6b89\\u6c5b\\u8bad\\u8baf\\u900a\\u8fc5\\u5dfd\\u57d9\\u8340\\u85b0\\u5ccb\\u5f87\\u6d54\\u66db\\u7aa8\\u91ba\\u9c9f\", \"ya\": \"\\u538b\\u62bc\\u9e26\\u9e2d\\u5440\\u4e2b\\u82bd\\u7259\\u869c\\u5d16\\u8859\\u6daf\\u96c5\\u54d1\\u4e9a\\u8bb6\\u4f22\\u63e0\\u5416\\u5c88\\u8fd3\\u5a05\\u740a\\u6860\\u6c29\\u7811\\u775a\\u75d6\", \"yan\": \"\\u7109\\u54bd\\u9609\\u70df\\u6df9\\u76d0\\u4e25\\u7814\\u8712\\u5ca9\\u5ef6\\u8a00\\u989c\\u960e\\u708e\\u6cbf\\u5944\\u63a9\\u773c\\u884d\\u6f14\\u8273\\u5830\\u71d5\\u538c\\u781a\\u96c1\\u5501\\u5f66\\u7130\\u5bb4\\u8c1a\\u9a8c\\u53a3\\u9765\\u8d5d\\u4fe8\\u5043\\u5156\\u8ba0\\u8c33\\u90fe\\u9122\\u82ab\\u83f8\\u5d26\\u6079\\u95eb\\u960f\\u6d07\\u6e6e\\u6edf\\u598d\\u5ae3\\u7430\\u664f\\u80ed\\u814c\\u7131\\u7f68\\u7b75\\u917d\\u9b47\\u990d\\u9f39\", \"yang\": \"\\u6b83\\u592e\\u9e2f\\u79e7\\u6768\\u626c\\u4f6f\\u75a1\\u7f8a\\u6d0b\\u9633\\u6c27\\u4ef0\\u75d2\\u517b\\u6837\\u6f3e\\u5f89\\u600f\\u6cf1\\u7080\\u70ca\\u6059\\u86d8\\u9785\", \"yao\": \"\\u9080\\u8170\\u5996\\u7476\\u6447\\u5c27\\u9065\\u7a91\\u8c23\\u59da\\u54ac\\u8200\\u836f\\u8981\\u8000\\u592d\\u723b\\u5406\\u5d3e\\u5fad\\u7039\\u5e7a\\u73e7\\u6773\\u66dc\\u80b4\\u9e5e\\u7a88\\u7e47\\u9cd0\", \"ye\": \"\\u6930\\u564e\\u8036\\u7237\\u91ce\\u51b6\\u4e5f\\u9875\\u6396\\u4e1a\\u53f6\\u66f3\\u814b\\u591c\\u6db2\\u8c12\\u90ba\\u63f6\\u9980\\u6654\\u70e8\\u94d8\", \"yi\": \"\\u4e00\\u58f9\\u533b\\u63d6\\u94f1\\u4f9d\\u4f0a\\u8863\\u9890\\u5937\\u9057\\u79fb\\u4eea\\u80f0\\u7591\\u6c82\\u5b9c\\u59e8\\u5f5d\\u6905\\u8681\\u501a\\u5df2\\u4e59\\u77e3\\u4ee5\\u827a\\u6291\\u6613\\u9091\\u5c79\\u4ebf\\u5f79\\u81c6\\u9038\\u8084\\u75ab\\u4ea6\\u88d4\\u610f\\u6bc5\\u5fc6\\u4e49\\u76ca\\u6ea2\\u8be3\\u8bae\\u8c0a\\u8bd1\\u5f02\\u7ffc\\u7fcc\\u7ece\\u5208\\u5293\\u4f7e\\u8bd2\\u572a\\u572f\\u57f8\\u61ff\\u82e1\\u858f\\u5f08\\u5955\\u6339\\u5f0b\\u5453\\u54a6\\u54bf\\u566b\\u5cc4\\u5db7\\u7317\\u9974\\u603f\\u6021\\u6092\\u6f2a\\u8fe4\\u9a7f\\u7f22\\u6baa\\u8d3b\\u65d6\\u71a0\\u9487\\u9552\\u9571\\u75cd\\u7617\\u7654\\u7fca\\u8864\\u8734\\u8223\\u7fbf\\u7ff3\\u914f\\u9edf\", \"yin\": \"\\u8335\\u836b\\u56e0\\u6bb7\\u97f3\\u9634\\u59fb\\u541f\\u94f6\\u6deb\\u5bc5\\u996e\\u5c39\\u5f15\\u9690\\u5370\\u80e4\\u911e\\u5819\\u831a\\u5591\\u72fa\\u5924\\u6c24\\u94df\\u763e\\u8693\\u972a\\u9f88\", \"ying\": \"\\u82f1\\u6a31\\u5a74\\u9e70\\u5e94\\u7f28\\u83b9\\u8424\\u8425\\u8367\\u8747\\u8fce\\u8d62\\u76c8\\u5f71\\u9896\\u786c\\u6620\\u5b34\\u90e2\\u8314\\u83ba\\u8426\\u6484\\u5624\\u81ba\\u6ee2\\u6f46\\u701b\\u745b\\u748e\\u6979\\u9e66\\u763f\\u988d\\u7f42\", \"yo\": \"\\u54df\\u5537\", \"yong\": \"\\u62e5\\u4f63\\u81c3\\u75c8\\u5eb8\\u96cd\\u8e0a\\u86f9\\u548f\\u6cf3\\u6d8c\\u6c38\\u607f\\u52c7\\u7528\\u4fd1\\u58c5\\u5889\\u6175\\u9095\\u955b\\u752c\\u9cd9\\u9954\", \"you\": \"\\u5e7d\\u4f18\\u60a0\\u5fe7\\u5c24\\u7531\\u90ae\\u94c0\\u72b9\\u6cb9\\u6e38\\u9149\\u6709\\u53cb\\u53f3\\u4f51\\u91c9\\u8bf1\\u53c8\\u5e7c\\u5363\\u6538\\u4f91\\u83b8\\u5466\\u56ff\\u5ba5\\u67da\\u7337\\u7256\\u94d5\\u75a3\\u8763\\u9c7f\\u9edd\\u9f2c\", \"yu\": \"\\u8fc2\\u6de4\\u4e8e\\u76c2\\u6986\\u865e\\u611a\\u8206\\u4f59\\u4fde\\u903e\\u9c7c\\u6109\\u6e1d\\u6e14\\u9685\\u4e88\\u5a31\\u96e8\\u4e0e\\u5c7f\\u79b9\\u5b87\\u8bed\\u7fbd\\u7389\\u57df\\u828b\\u90c1\\u5401\\u9047\\u55bb\\u5cea\\u5fa1\\u6108\\u6b32\\u72f1\\u80b2\\u8a89\\u6d74\\u5bd3\\u88d5\\u9884\\u8c6b\\u9a6d\\u79ba\\u6bd3\\u4f1b\\u4fe3\\u8c00\\u8c15\\u8438\\u84e3\\u63c4\\u5581\\u5704\\u5709\\u5d5b\\u72f3\\u996b\\u5ebe\\u9608\\u59aa\\u59a4\\u7ea1\\u745c\\u6631\\u89ce\\u8174\\u6b24\\u65bc\\u715c\\u71e0\\u807f\\u94b0\\u9e46\\u7610\\u7600\\u7ab3\\u8753\\u7afd\\u8201\\u96e9\\u9f89\", \"yuan\": \"\\u9e33\\u6e0a\\u51a4\\u5143\\u57a3\\u8881\\u539f\\u63f4\\u8f95\\u56ed\\u5458\\u5706\\u733f\\u6e90\\u7f18\\u8fdc\\u82d1\\u613f\\u6028\\u9662\\u586c\\u6c85\\u5a9b\\u7457\\u6a7c\\u7230\\u7722\\u9e22\\u8788\\u9f0b\", \"yue\": \"\\u66f0\\u7ea6\\u8d8a\\u8dc3\\u94a5\\u5cb3\\u7ca4\\u6708\\u60a6\\u9605\\u9fa0\\u6a3e\\u5216\\u94ba\", \"yun\": \"\\u8018\\u4e91\\u90e7\\u5300\\u9668\\u5141\\u8fd0\\u8574\\u915d\\u6655\\u97f5\\u5b55\\u90d3\\u82b8\\u72c1\\u607d\\u7ead\\u6b92\\u6600\\u6c32\", \"za\": \"\\u531d\\u7838\\u6742\\u62f6\\u5482\", \"zai\": \"\\u683d\\u54c9\\u707e\\u5bb0\\u8f7d\\u518d\\u5728\\u54b1\\u5d3d\\u753e\", \"zan\": \"\\u6512\\u6682\\u8d5e\\u74d2\\u661d\\u7c2a\\u7ccc\\u8db1\\u933e\", \"zang\": \"\\u8d43\\u810f\\u846c\\u5958\\u6215\\u81e7\", \"zao\": \"\\u906d\\u7cdf\\u51ff\\u85fb\\u67a3\\u65e9\\u6fa1\\u86a4\\u8e81\\u566a\\u9020\\u7682\\u7076\\u71e5\\u5523\\u7f2b\", \"ze\": \"\\u8d23\\u62e9\\u5219\\u6cfd\\u4ec4\\u8d5c\\u5567\\u8fee\\u6603\\u7b2e\\u7ba6\\u8234\", \"zei\": \"\\u8d3c\", \"zen\": \"\\u600e\\u8c2e\", \"zeng\": \"\\u589e\\u618e\\u66fe\\u8d60\\u7f2f\\u7511\\u7f7e\\u9503\", \"zha\": \"\\u624e\\u55b3\\u6e23\\u672d\\u8f67\\u94e1\\u95f8\\u7728\\u6805\\u69a8\\u548b\\u4e4d\\u70b8\\u8bc8\\u63f8\\u5412\\u54a4\\u54f3\\u600d\\u781f\\u75c4\\u86b1\\u9f44\", \"zhai\": \"\\u6458\\u658b\\u5b85\\u7a84\\u503a\\u5be8\\u7826\", \"zhan\": \"\\u77bb\\u6be1\\u8a79\\u7c98\\u6cbe\\u76cf\\u65a9\\u8f97\\u5d2d\\u5c55\\u8638\\u6808\\u5360\\u6218\\u7ad9\\u6e5b\\u7efd\\u8c35\\u640c\\u65c3\", \"zhang\": \"\\u6a1f\\u7ae0\\u5f70\\u6f33\\u5f20\\u638c\\u6da8\\u6756\\u4e08\\u5e10\\u8d26\\u4ed7\\u80c0\\u7634\\u969c\\u4ec9\\u9123\\u5e5b\\u5d82\\u7350\\u5adc\\u748b\\u87d1\", \"zhao\": \"\\u62db\\u662d\\u627e\\u6cbc\\u8d75\\u7167\\u7f69\\u5146\\u8087\\u53ec\\u722a\\u8bcf\\u68f9\\u948a\\u7b0a\", \"zhe\": \"\\u906e\\u6298\\u54f2\\u86f0\\u8f99\\u8005\\u9517\\u8517\\u8fd9\\u6d59\\u8c2a\\u966c\\u67d8\\u8f84\\u78d4\\u9e67\\u891a\\u8707\\u8d6d\", \"zhen\": \"\\u73cd\\u659f\\u771f\\u7504\\u7827\\u81fb\\u8d1e\\u9488\\u4fa6\\u6795\\u75b9\\u8bca\\u9707\\u632f\\u9547\\u9635\\u7f1c\\u6862\\u699b\\u8f78\\u8d48\\u80d7\\u6715\\u796f\\u755b\\u9e29\", \"zheng\": \"\\u84b8\\u6323\\u7741\\u5f81\\u72f0\\u4e89\\u6014\\u6574\\u62ef\\u6b63\\u653f\\u5e27\\u75c7\\u90d1\\u8bc1\\u8be4\\u5ce5\\u94b2\\u94ee\\u7b5d\", \"zhi\": \"\\u829d\\u679d\\u652f\\u5431\\u8718\\u77e5\\u80a2\\u8102\\u6c41\\u4e4b\\u7ec7\\u804c\\u76f4\\u690d\\u6b96\\u6267\\u503c\\u4f84\\u5740\\u6307\\u6b62\\u8dbe\\u53ea\\u65e8\\u7eb8\\u5fd7\\u631a\\u63b7\\u81f3\\u81f4\\u7f6e\\u5e1c\\u5cd9\\u5236\\u667a\\u79e9\\u7a1a\\u8d28\\u7099\\u75d4\\u6ede\\u6cbb\\u7a92\\u536e\\u965f\\u90c5\\u57f4\\u82b7\\u646d\\u5e19\\u5fee\\u5f58\\u54ab\\u9a98\\u6809\\u67b3\\u6800\\u684e\\u8f75\\u8f7e\\u6534\\u8d3d\\u81a3\\u7949\\u7957\\u9ef9\\u96c9\\u9e37\\u75e3\\u86ed\\u7d77\\u916f\\u8dd6\\u8e2c\\u8e2f\\u8c78\\u89ef\", \"zhong\": \"\\u4e2d\\u76c5\\u5fe0\\u949f\\u8877\\u7ec8\\u79cd\\u80bf\\u91cd\\u4ef2\\u4f17\\u51a2\\u953a\\u87bd\\u8202\\u822f\\u8e35\", \"zhou\": \"\\u821f\\u5468\\u5dde\\u6d32\\u8bcc\\u7ca5\\u8f74\\u8098\\u5e1a\\u5492\\u76b1\\u5b99\\u663c\\u9aa4\\u5544\\u7740\\u501c\\u8bf9\\u836e\\u9b3b\\u7ea3\\u80c4\\u78a1\\u7c40\\u8233\\u914e\\u9cb7\", \"zhu\": \"\\u73e0\\u682a\\u86db\\u6731\\u732a\\u8bf8\\u8bdb\\u9010\\u7af9\\u70db\\u716e\\u62c4\\u77a9\\u5631\\u4e3b\\u8457\\u67f1\\u52a9\\u86c0\\u8d2e\\u94f8\\u7b51\\u4f4f\\u6ce8\\u795d\\u9a7b\\u4f2b\\u4f8f\\u90be\\u82ce\\u8331\\u6d19\\u6e1a\\u6f74\\u9a7a\\u677c\\u69e0\\u6a65\\u70b7\\u94e2\\u75b0\\u7603\\u86b0\\u7afa\\u7bb8\\u7fe5\\u8e85\\u9e88\", \"zhua\": \"\\u6293\", \"zhuai\": \"\\u62fd\", \"zhuan\": \"\\u4e13\\u7816\\u8f6c\\u64b0\\u8d5a\\u7bc6\\u629f\\u556d\\u989b\", \"zhuang\": \"\\u6869\\u5e84\\u88c5\\u5986\\u649e\\u58ee\\u72b6\\u4e2c\", \"zhui\": \"\\u690e\\u9525\\u8ffd\\u8d58\\u5760\\u7f00\\u8411\\u9a93\\u7f12\", \"zhun\": \"\\u8c06\\u51c6\", \"zhuo\": \"\\u6349\\u62d9\\u5353\\u684c\\u7422\\u8301\\u914c\\u707c\\u6d4a\\u502c\\u8bfc\\u5ef4\\u855e\\u64e2\\u555c\\u6d5e\\u6dbf\\u6753\\u712f\\u799a\\u65ab\", \"zi\": \"\\u5179\\u54a8\\u8d44\\u59ff\\u6ecb\\u6dc4\\u5b5c\\u7d2b\\u4ed4\\u7c7d\\u6ed3\\u5b50\\u81ea\\u6e0d\\u5b57\\u8c18\\u5d6b\\u59ca\\u5b73\\u7f01\\u6893\\u8f8e\\u8d40\\u6063\\u7726\\u9531\\u79ed\\u8014\\u7b2b\\u7ca2\\u89dc\\u8a3e\\u9cbb\\u9aed\", \"zong\": \"\\u9b03\\u68d5\\u8e2a\\u5b97\\u7efc\\u603b\\u7eb5\\u8159\\u7cbd\", \"zou\": \"\\u90b9\\u8d70\\u594f\\u63cd\\u9139\\u9cb0\", \"zu\": \"\\u79df\\u8db3\\u5352\\u65cf\\u7956\\u8bc5\\u963b\\u7ec4\\u4fce\\u83f9\\u5550\\u5f82\\u9a75\\u8e74\", \"zuan\": \"\\u94bb\\u7e82\\u6525\\u7f35\", \"zui\": \"\\u5634\\u9189\\u6700\\u7f6a\", \"zun\": \"\\u5c0a\\u9075\\u6499\\u6a3d\\u9cdf\", \"zuo\": \"\\u6628\\u5de6\\u4f50\\u67de\\u505a\\u4f5c\\u5750\\u5ea7\\u961d\\u963c\\u80d9\\u795a\\u9162\", \"cou\": \"\\u85ae\\u6971\\u8f8f\\u8160\", \"nang\": \"\\u652e\\u54dd\\u56d4\\u9995\\u66e9\", \"o\": \"\\u5594\", \"dia\": \"\\u55f2\", \"chuai\": \"\\u562c\\u81aa\\u8e39\", \"cen\": \"\\u5c91\\u6d94\", \"diu\": \"\\u94e5\", \"nou\": \"\\u8028\", \"fou\": \"\\u7f36\", \"bia\": \"\\u9adf\" };\r\nconst polyphone: any = { \"19969\": \"DZ\", \"19975\": \"WM\", \"19988\": \"QJ\", \"20048\": \"YL\", \"20056\": \"SC\", \"20060\": \"NM\", \"20094\": \"QG\", \"20127\": \"QJ\", \"20167\": \"QC\", \"20193\": \"YG\", \"20250\": \"KH\", \"20256\": \"ZC\", \"20282\": \"SC\", \"20285\": \"QJG\", \"20291\": \"TD\", \"20314\": \"YD\", \"20340\": \"NE\", \"20375\": \"TD\", \"20389\": \"YJ\", \"20391\": \"CZ\", \"20415\": \"PB\", \"20446\": \"YS\", \"20447\": \"SQ\", \"20504\": \"TC\", \"20608\": \"KG\", \"20854\": \"QJ\", \"20857\": \"ZC\", \"20911\": \"PF\", \"20985\": \"AW\", \"21032\": \"PB\", \"21048\": \"XQ\", \"21049\": \"SC\", \"21089\": \"YS\", \"21119\": \"JC\", \"21242\": \"SB\", \"21273\": \"SC\", \"21305\": \"YP\", \"21306\": \"QO\", \"21330\": \"ZC\", \"21333\": \"SDC\", \"21345\": \"QK\", \"21378\": \"CA\", \"21397\": \"SC\", \"21414\": \"XS\", \"21442\": \"SC\", \"21477\": \"JG\", \"21480\": \"TD\", \"21484\": \"ZS\", \"21494\": \"YX\", \"21505\": \"YX\", \"21512\": \"HG\", \"21523\": \"XH\", \"21537\": \"PB\", \"21542\": \"PF\", \"21549\": \"KH\", \"21571\": \"E\", \"21574\": \"DA\", \"21588\": \"TD\", \"21589\": \"O\", \"21618\": \"ZC\", \"21621\": \"KHA\", \"21632\": \"ZJ\", \"21654\": \"KG\", \"21679\": \"LKG\", \"21683\": \"KH\", \"21710\": \"A\", \"21719\": \"YH\", \"21734\": \"WOE\", \"21769\": \"A\", \"21780\": \"WN\", \"21804\": \"XH\", \"21834\": \"A\", \"21899\": \"ZD\", \"21903\": \"RN\", \"21908\": \"WO\", \"21939\": \"ZC\", \"21956\": \"SA\", \"21964\": \"YA\", \"21970\": \"TD\", \"22003\": \"A\", \"22031\": \"JG\", \"22040\": \"XS\", \"22060\": \"ZC\", \"22066\": \"ZC\", \"22079\": \"MH\", \"22129\": \"XJ\", \"22179\": \"XA\", \"22237\": \"NJ\", \"22244\": \"TD\", \"22280\": \"JQ\", \"22300\": \"YH\", \"22313\": \"XW\", \"22331\": \"YQ\", \"22343\": \"YJ\", \"22351\": \"PH\", \"22395\": \"DC\", \"22412\": \"TD\", \"22484\": \"PB\", \"22500\": \"PB\", \"22534\": \"ZD\", \"22549\": \"DH\", \"22561\": \"PB\", \"22612\": \"TD\", \"22771\": \"KQ\", \"22831\": \"HB\", \"22841\": \"JG\", \"22855\": \"QJ\", \"22865\": \"XQ\", \"23013\": \"ML\", \"23081\": \"WM\", \"23487\": \"SX\", \"23558\": \"QJ\", \"23561\": \"YW\", \"23586\": \"YW\", \"23614\": \"YW\", \"23615\": \"SN\", \"23631\": \"PB\", \"23646\": \"ZS\", \"23663\": \"ZT\", \"23673\": \"YG\", \"23762\": \"TD\", \"23769\": \"ZS\", \"23780\": \"QJ\", \"23884\": \"QK\", \"24055\": \"XH\", \"24113\": \"DC\", \"24162\": \"ZC\", \"24191\": \"GA\", \"24273\": \"QJ\", \"24324\": \"NL\", \"24377\": \"TD\", \"24378\": \"QJ\", \"24439\": \"PF\", \"24554\": \"ZS\", \"24683\": \"TD\", \"24694\": \"WE\", \"24733\": \"LK\", \"24925\": \"TN\", \"25094\": \"ZG\", \"25100\": \"XQ\", \"25103\": \"XH\", \"25153\": \"PB\", \"25170\": \"PB\", \"25179\": \"KG\", \"25203\": \"PB\", \"25240\": \"ZS\", \"25282\": \"FB\", \"25303\": \"NA\", \"25324\": \"KG\", \"25341\": \"ZY\", \"25373\": \"WZ\", \"25375\": \"XJ\", \"25384\": \"A\", \"25457\": \"A\", \"25528\": \"SD\", \"25530\": \"SC\", \"25552\": \"TD\", \"25774\": \"ZC\", \"25874\": \"ZC\", \"26044\": \"YW\", \"26080\": \"WM\", \"26292\": \"PB\", \"26333\": \"PB\", \"26355\": \"ZY\", \"26366\": \"CZ\", \"26397\": \"ZC\", \"26399\": \"QJ\", \"26415\": \"ZS\", \"26451\": \"SB\", \"26526\": \"ZC\", \"26552\": \"JG\", \"26561\": \"TD\", \"26588\": \"JG\", \"26597\": \"CZ\", \"26629\": \"ZS\", \"26638\": \"YL\", \"26646\": \"XQ\", \"26653\": \"KG\", \"26657\": \"XJ\", \"26727\": \"HG\", \"26894\": \"ZC\", \"26937\": \"ZS\", \"26946\": \"ZC\", \"26999\": \"KJ\", \"27099\": \"KJ\", \"27449\": \"YQ\", \"27481\": \"XS\", \"27542\": \"ZS\", \"27663\": \"ZS\", \"27748\": \"TS\", \"27784\": \"SC\", \"27788\": \"ZD\", \"27795\": \"TD\", \"27812\": \"O\", \"27850\": \"PB\", \"27852\": \"MB\", \"27895\": \"SL\", \"27898\": \"PL\", \"27973\": \"QJ\", \"27981\": \"KH\", \"27986\": \"HX\", \"27994\": \"XJ\", \"28044\": \"YC\", \"28065\": \"WG\", \"28177\": \"SM\", \"28267\": \"QJ\", \"28291\": \"KH\", \"28337\": \"ZQ\", \"28463\": \"TL\", \"28548\": \"DC\", \"28601\": \"TD\", \"28689\": \"PB\", \"28805\": \"JG\", \"28820\": \"QG\", \"28846\": \"PB\", \"28952\": \"TD\", \"28975\": \"ZC\", \"29100\": \"A\", \"29325\": \"QJ\", \"29575\": \"SL\", \"29602\": \"FB\", \"30010\": \"TD\", \"30044\": \"CX\", \"30058\": \"PF\", \"30091\": \"YSP\", \"30111\": \"YN\", \"30229\": \"XJ\", \"30427\": \"SC\", \"30465\": \"SX\", \"30631\": \"YQ\", \"30655\": \"QJ\", \"30684\": \"QJG\", \"30707\": \"SD\", \"30729\": \"XH\", \"30796\": \"LG\", \"30917\": \"PB\", \"31074\": \"NM\", \"31085\": \"JZ\", \"31109\": \"SC\", \"31181\": \"ZC\", \"31192\": \"MLB\", \"31293\": \"JQ\", \"31400\": \"YX\", \"31584\": \"YJ\", \"31896\": \"ZN\", \"31909\": \"ZY\", \"31995\": \"XJ\", \"32321\": \"PF\", \"32327\": \"ZY\", \"32418\": \"HG\", \"32420\": \"XQ\", \"32421\": \"HG\", \"32438\": \"LG\", \"32473\": \"GJ\", \"32488\": \"TD\", \"32521\": \"QJ\", \"32527\": \"PB\", \"32562\": \"ZSQ\", \"32564\": \"JZ\", \"32735\": \"ZD\", \"32793\": \"PB\", \"33071\": \"PF\", \"33098\": \"XL\", \"33100\": \"YA\", \"33152\": \"PB\", \"33261\": \"CX\", \"33324\": \"BP\", \"33333\": \"TD\", \"33406\": \"YA\", \"33426\": \"WM\", \"33432\": \"PB\", \"33445\": \"JG\", \"33486\": \"ZN\", \"33493\": \"TS\", \"33507\": \"QJ\", \"33540\": \"QJ\", \"33544\": \"ZC\", \"33564\": \"XQ\", \"33617\": \"YT\", \"33632\": \"QJ\", \"33636\": \"XH\", \"33637\": \"YX\", \"33694\": \"WG\", \"33705\": \"PF\", \"33728\": \"YW\", \"33882\": \"SR\", \"34067\": \"WM\", \"34074\": \"YW\", \"34121\": \"QJ\", \"34255\": \"ZC\", \"34259\": \"XL\", \"34425\": \"JH\", \"34430\": \"XH\", \"34485\": \"KH\", \"34503\": \"YS\", \"34532\": \"HG\", \"34552\": \"XS\", \"34558\": \"YE\", \"34593\": \"ZL\", \"34660\": \"YQ\", \"34892\": \"XH\", \"34928\": \"SC\", \"34999\": \"QJ\", \"35048\": \"PB\", \"35059\": \"SC\", \"35098\": \"ZC\", \"35203\": \"TQ\", \"35265\": \"JX\", \"35299\": \"JX\", \"35782\": \"SZ\", \"35828\": \"YS\", \"35830\": \"E\", \"35843\": \"TD\", \"35895\": \"YG\", \"35977\": \"MH\", \"36158\": \"JG\", \"36228\": \"QJ\", \"36426\": \"XQ\", \"36466\": \"DC\", \"36710\": \"JC\", \"36711\": \"ZYG\", \"36767\": \"PB\", \"36866\": \"SK\", \"36951\": \"YW\", \"37034\": \"YX\", \"37063\": \"XH\", \"37218\": \"ZC\", \"37325\": \"ZC\", \"38063\": \"PB\", \"38079\": \"TD\", \"38085\": \"QY\", \"38107\": \"DC\", \"38116\": \"TD\", \"38123\": \"YD\", \"38224\": \"HG\", \"38241\": \"XTC\", \"38271\": \"ZC\", \"38415\": \"YE\", \"38426\": \"KH\", \"38461\": \"YD\", \"38463\": \"AE\", \"38466\": \"PB\", \"38477\": \"XJ\", \"38518\": \"YT\", \"38551\": \"WK\", \"38585\": \"ZC\", \"38704\": \"XS\", \"38739\": \"LJ\", \"38761\": \"GJ\", \"38808\": \"SQ\", \"39048\": \"JG\", \"39049\": \"XJ\", \"39052\": \"HG\", \"39076\": \"CZ\", \"39271\": \"XT\", \"39534\": \"TD\", \"39552\": \"TD\", \"39584\": \"PB\", \"39647\": \"SB\", \"39730\": \"LG\", \"39748\": \"TPB\", \"40109\": \"ZQ\", \"40479\": \"ND\", \"40516\": \"HG\", \"40536\": \"HG\", \"40583\": \"QJ\", \"40765\": \"YQ\", \"40784\": \"QJ\", \"40840\": \"YK\", \"40863\": \"QJG\" };\r\nconst options: any = {\r\n checkPolyphone: false,\r\n charcase: \"default\",\r\n};\r\nconst pinYin = {\r\n // 提取拼音, 返回首字母大写形式\r\n getFullChars: (str: any) => {\r\n let result = \"\",\r\n name;\r\n if (!str) {\r\n return result;\r\n }\r\n const reg = new RegExp(\"[a-zA-Z0-9- ]\");\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const ch = str.substr(i, 1),\r\n unicode = ch.charCodeAt(0);\r\n if (unicode > 40869 || unicode < 19968) {\r\n result += ch;\r\n } else {\r\n name = pinYin._getFullChar(ch);\r\n if (name !== false) {\r\n result += name;\r\n }\r\n }\r\n }\r\n return result.toLocaleLowerCase();\r\n },\r\n // 提取首字母,返回大写形式\r\n getCamelChars: (str: any) => {\r\n if (typeof str !== \"string\") {\r\n return \"Z\";\r\n }\r\n const chars = []; //保存中间结果的数组\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n //获得unicode码\r\n const ch = str.charAt(i);\r\n //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理\r\n chars.push(pinYin._getChar(ch));\r\n }\r\n //处理arrResult,返回所有可能的拼音首字母串数组\r\n return pinYin._getResult(chars).toLocaleLowerCase();\r\n },\r\n // 提取拼音\r\n _getFullChar: (str: any) => {\r\n for (const key in full_dict) {\r\n if (-1 !== full_dict[key].indexOf(str)) {\r\n return pinYin._capitalize(key);\r\n break;\r\n }\r\n }\r\n return false;\r\n },\r\n // 首字母大写\r\n _capitalize: (str: any) => {\r\n if (str.length > 0) {\r\n const first = str.substr(0, 1).toUpperCase();\r\n const spare = str.substr(1, str.length);\r\n return first + spare;\r\n }\r\n },\r\n _getChar: (ch: any) => {\r\n const unicode = ch.charCodeAt(0);\r\n //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数\r\n if (unicode > 40869 || unicode < 19968) return ch; //dealWithOthers(ch);\r\n //检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母\r\n if (!options.checkPolyphone) return char_dict.charAt(unicode - 19968);\r\n return polyphone[unicode] ? polyphone[unicode] : char_dict.charAt(unicode - 19968);\r\n },\r\n _getResult: (chars: any) => {\r\n if (!options.checkPolyphone) return chars.join(\"\");\r\n let result = [\"\"];\r\n for (let i = 0, len = chars.length; i < len; i++) {\r\n const str = chars[i],\r\n strlen = str.length;\r\n if (strlen === 1) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[j] += str;\r\n }\r\n } else {\r\n const swap1 = result.slice(0);\r\n result = [];\r\n for (let j = 0; j < strlen; j++) {\r\n //复制一个相同的arrRslt\r\n const swap2 = swap1.slice(0);\r\n //把当前字符str[k]添加到每个元素末尾\r\n for (let k = 0; k < swap2.length; k++) {\r\n swap2[k] += str.charAt(j);\r\n }\r\n //把复制并修改后的数组连接到arrRslt上\r\n result = result.concat(swap2);\r\n }\r\n }\r\n }\r\n return result;\r\n },\r\n};\r\nexport default pinYin;\r\n","\r\nimport { Options, Inject, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport { Control } from \"@/domain\";\r\nimport { FormEnum } from \"@/domain\";\r\nimport { FormFieldClass } from \"@/constants\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport generateGridTemplateColumns from \"../../filtres/generate-grid-template-columns.filter\";\r\nimport generateGridColumnEnd from \"../../filtres/generate-grid-column-end.filter\";\r\nimport { DesFormLayout } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\n\r\nimport { AutoComplete, Cascader, Checkbox, DatePicker, Form, Input, InputNumber, Radio, Select, Switch, TimePicker, TreeSelect, Slider, Tooltip, Popover, Divider, Rate, Dropdown, Button, Menu, Upload, Popconfirm, Timeline, FormItem, RadioGroup, Textarea, CheckboxGroup, InputPassword, TimelineItem, Row, Col } from \"ant-design-vue\";\r\nimport { VerticalArrangement } from \"@/constants\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\n\r\nimport amountCapitalization from \"../../filtres/amount-capitalization.filter\";\r\nimport { FormControl, ValidateResult, CustomFormat } from \"../../domain\";\r\nimport { FormBusAttr, SubmittedType, MoneyUnit, ControlFormatType, BuiltLabel, SupportUploadType } from \"../../constants/enum\";\r\nimport { ValidateRules } from \"@/constants\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\nimport zoomMultiple from \"../../filtres/zoom-multiple.filter\";\r\nimport switchEnumConvert from \"../../filtres/switch-enum-convert.filter\";\r\nimport StretchText from \"./StretchText.vue\";\r\nimport { SUBMITTED_SVG_XML, HISTORY_SVG_XML } from \"../../constants/encode-assets/svg\";\r\nimport { SearchOutlined, PlusOutlined, QuestionCircleOutlined, ClockCircleOutlined, DownOutlined, UploadOutlined } from \"@ant-design/icons-vue\";\r\n\r\nimport dayjs from \"dayjs\";\r\nimport locale from \"ant-design-vue/es/date-picker/locale/zh_CN\";\r\nimport pinYin from \"../../../public/js/pinyin\";\r\n\r\n@Options({\r\n name: \"DvFormLayout\",\r\n filters: {\r\n amountCapitalization: amountCapitalization,\r\n switchEnumConvert: switchEnumConvert,\r\n zoomMultiple: zoomMultiple,\r\n },\r\n components: {\r\n StretchText,\r\n PlusOutlined,\r\n [Form.name]: Form,\r\n [FormItem.name]: FormItem,\r\n [Input.name]: Input,\r\n [Textarea.name]: Textarea,\r\n [AutoComplete.name]: AutoComplete,\r\n [InputNumber.name]: InputNumber,\r\n [Select.name]: Select,\r\n [Select.Option.displayName + \"\"]: Select.Option,\r\n [Select.OptGroup.displayName + \"\"]: Select.OptGroup,\r\n [Radio.name]: Radio,\r\n [RadioGroup.name]: RadioGroup,\r\n [Checkbox.name]: Checkbox,\r\n [CheckboxGroup.name]: CheckboxGroup,\r\n [Switch.name]: Switch,\r\n [TimePicker.name]: TimePicker,\r\n [DatePicker.name]: DatePicker,\r\n [Slider.name]: Slider,\r\n [AutoComplete.name]: AutoComplete,\r\n [Cascader.name]: Cascader,\r\n [TreeSelect.name]: TreeSelect,\r\n [Tooltip.name]: Tooltip,\r\n [InputPassword.name]: InputPassword,\r\n [Popover.name]: Popover,\r\n [Popconfirm.name]: Popconfirm,\r\n [Timeline.name]: Timeline,\r\n [TimelineItem.name]: TimelineItem,\r\n [Rate.name]: Rate,\r\n [Dropdown.name]: Dropdown,\r\n [Menu.name]: Menu,\r\n [Menu.Item.name]: Menu.Item,\r\n [Upload.name]: Upload,\r\n [Button.name]: Button,\r\n [Divider.name]: Divider,\r\n [DatePicker.MonthPicker.name]: DatePicker.MonthPicker,\r\n [StretchText.name]: StretchText,\r\n [Row.name]: Row,\r\n [Col.name]: Col,\r\n VNodes: (_, { attrs }) => {\r\n return attrs.vnodes;\r\n },\r\n QuestionCircleOutlined,\r\n ClockCircleOutlined,\r\n DownOutlined,\r\n UploadOutlined,\r\n SearchOutlined,\r\n },\r\n})\r\nexport default class DvFormLayout extends Vue {\r\n locale = locale; // 国际化\r\n submittedSvg = SUBMITTED_SVG_XML; // 上报图标\r\n historySvg = HISTORY_SVG_XML; // 历史记录图标\r\n\r\n numberPopoverVisible = false; // 是否开启数字气泡弹窗\r\n validateResult: ValidateResult = {}; // 校验规则\r\n metaRefresh: any; // 刷新标识\r\n defaultMoneyUnit: any = {}; // 默认单位\r\n zoomType = ZoomType; // 缩放类型\r\n builtLabel = BuiltLabel; // 内置前/后置标签\r\n traddayList: any = localStorage.getItem(\"traddayList\") || JSON.stringify([]); // 交易日集合\r\n weekdayList: any = localStorage.getItem(\"weekdayList\") || JSON.stringify([]); // 节假日集合\r\n workdayList: any = localStorage.getItem(\"workdayList\") || JSON.stringify([]); // 工作日集合\r\n amountCapitalization = amountCapitalization; // 大写转换\r\n zoomMultiple = zoomMultiple; // 缩放\r\n filterOption(value: any, item: any) {\r\n if (!item.title) {\r\n return false;\r\n }\r\n return item.title.indexOf(value) > -1 || pinYin.getCamelChars(item.title).indexOf(value) > -1 || pinYin.getFullChars(item.title).indexOf(value) > -1;\r\n }\r\n\r\n @Prop() index: number | undefined;\r\n @Prop() control: Control | undefined;\r\n @Prop() parentControl: Control | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats: { [key: string]: CustomFormat } | undefined;\r\n @Prop({ type: Array, default: () => [] }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Inject() provideInjectData: ProvideInjectData | any;\r\n readonly formFieldClass: FormEnum = FormFieldClass; // 表单字段分类\r\n readonly formFieldType: FormEnum = FormFieldType; // 表单字段类型\r\n\r\n @Watch(\"defaultMoneyUnit\", { immediate: true })\r\n onDefaultMoneyUnitHandler(newVal: any): void {\r\n if (newVal.code != null) {\r\n switch (newVal.code) {\r\n case MoneyUnit.Yuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 1;\r\n break;\r\n case MoneyUnit.TenThousandYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 10000;\r\n break;\r\n case MoneyUnit.HundredMillionYuan.code:\r\n (this.controlAttr as DesFormControl).zoomMultiple = 100000000;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验反馈\r\n * @author ChenRui\r\n * @date 2021/2/26 14:24\r\n */\r\n @Watch(\"provideInjectData.refreshCheckFeedbackFlag\")\r\n @Watch(\"control.formControl.refreshValidate\")\r\n onValidationFeedbackHandle(): void {\r\n this.validateResult = this.formControl.validate();\r\n }\r\n\r\n /**\r\n * @description: 表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 14:12\r\n */\r\n @Watch(\"provideInjectData.formValidateStateResetMark\")\r\n onFormValidateStateResetMarkHandle(): void {\r\n this.validateResult = {};\r\n }\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:22\r\n */\r\n linkClick(data: any): void {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n @Watch(\"control.controlAttr.isHideControl\")\r\n onHideControl() {\r\n this.$nextTick(() => {\r\n this.$emit(\"fixFormLayout\");\r\n });\r\n }\r\n /**\r\n * @description: 输入框形态\r\n * @author ChenRui\r\n * @date 2022/5/7 17:48\r\n */\r\n get inputShape(): string {\r\n if ((this.controlAttr as DesFormControl).isPasswordBox) {\r\n return \"a-input-password\";\r\n } else if ((this.controlAttr as DesFormControl).enableAutoComplete) {\r\n return \"a-auto-complete\";\r\n } else {\r\n return \"a-input\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/27 11:07\r\n */\r\n get formControl(): FormControl {\r\n if (this.control && this.control.formControl) {\r\n // 初始化部分数据\r\n this.initFormControlData();\r\n return this.control.formControl;\r\n }\r\n return new FormControl();\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get controlAttr(): DesFormControl | DesFormLayout {\r\n return this.control?.controlAttr as any;\r\n }\r\n\r\n /**\r\n * @description: 获取控件配置参数\r\n * @author ChenRui\r\n * @date 2021/1/5 11:26\r\n */\r\n get parentControlAttr(): DesFormLayout {\r\n return this.parentControl?.controlAttr as DesFormLayout;\r\n }\r\n\r\n /**\r\n * @description: 获取布局方式\r\n * @author ChenRui\r\n * @date 2020/12/30 18:19\r\n */\r\n get layout(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"value\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.value;\r\n }\r\n\r\n /**\r\n * @description: 当前输入的字符长度\r\n * @author ChenRui\r\n * @date 2021/4/20 15:55\r\n */\r\n get currentCharacterCount(): any {\r\n return this.control!.formControl && this.control!.formControl.value ? this.control!.formControl.value.length : 0;\r\n }\r\n\r\n /**\r\n * @description: 最大字数限制\r\n * @author ChenRui\r\n * @date 2021/4/20 15:38\r\n */\r\n get maxCharacterCount(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.verificationRules && controlAttr.verificationRules.length > 0) {\r\n const verificationRule: any = controlAttr.verificationRules.find((item: any) => item.ruleType === ValidateRules.MaxTextLength.code);\r\n if (verificationRule != null && verificationRule.ruleContent) {\r\n return Number(verificationRule.ruleContent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 数字格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:30\r\n */\r\n get numberFormatter(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const controlFormatType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value != undefined ? String(value) : \"\";\r\n switch (controlFormatType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (controlFormatType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n // 校验小数位不做千分位格式化处理\r\n if (val.indexOf(\".\") > -1) {\r\n val = `${val}`.split(\".\")[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + \".\" + `${val}`.split(\".\")[1];\r\n } else {\r\n val = `${val}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n // val = `${val}${controlAttr.unit}`;\r\n val = `${val}`;\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/[\\s]/g, \"\").replace(/(\\d{4})(?=\\d)/g, \"$1 \");\r\n }\r\n return val;\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\D/g, \"\").substr(0, 11); // 不允许输入非数字字符,超过11位数字截取前11位\r\n const len = val.length;\r\n if (len > 3 && len < 8) {\r\n val = val.replace(/^(\\d{3})/g, \"$1 \");\r\n } else if (len >= 8) {\r\n val = val.replace(/^(\\d{3})(\\d{4})/g, \"$1 $2 \");\r\n }\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return value;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: 数字反格式化\r\n * @author ChenRui\r\n * @date 2021/1/14 16:31\r\n */\r\n get numberParser(): any {\r\n const controlAttr: any = this.controlAttr as DesFormControl;\r\n const zoomType: string = controlAttr.formatType ? controlAttr.formatType : ControlFormatType.GENERAL.code;\r\n return (value: any) => {\r\n let val: any = value;\r\n switch (zoomType) {\r\n case ControlFormatType.GENERAL.code:\r\n case ControlFormatType.AMOUNT_OF_MONEY.code:\r\n if (zoomType === ControlFormatType.AMOUNT_OF_MONEY.code && val != null && controlAttr.thousandthPercentileFormat) {\r\n val = val.replace(/\\$\\s?|(,*)/g, \"\");\r\n }\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && val != null && val != \"\" && controlAttr.unit) {\r\n const replaceUnit: string[] = controlAttr.unit.split(\"\");\r\n replaceUnit.forEach((item) => {\r\n val = val.replace(item, \"\");\r\n });\r\n }\r\n return val;\r\n case ControlFormatType.BANK_CARD_NUMBER.code:\r\n case ControlFormatType.CELL_PHONE_NUMBER.code:\r\n if (val != null) {\r\n val = val.replace(/\\s/g, \"\");\r\n }\r\n return val;\r\n case ControlFormatType.LANDLINE_NUMBER.code:\r\n return val;\r\n default: {\r\n return val;\r\n }\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * @description: label 宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (this.isMobileBrowser()) {\r\n return \"120px\";\r\n }\r\n if (controlAttr.titleWidth) {\r\n return controlAttr.titleWidth;\r\n } else if (parentControlAttr.labelSpan) {\r\n return parentControlAttr.labelSpan;\r\n } else {\r\n return this.provideInjectData.labelSpan;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 标签后是否显示冒号\r\n * @author ZPFly\r\n * @date 2022/7/15 10:54\r\n */\r\n get colon(): boolean {\r\n return this.provideInjectData.colon;\r\n }\r\n\r\n /**\r\n * @description: 最大宽度设置\r\n * @author ChenRui\r\n * @date 2021/7/8 16:39\r\n */\r\n get controlSpanMaxWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件宽度\r\n * @author ChenRui\r\n * @date 2021/1/5 15:11\r\n */\r\n get controlSpanWidth(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n const parentControlAttr: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n if (controlAttr.controlWidth) {\r\n return controlAttr.controlWidth;\r\n } else if (parentControlAttr.controlSpan) {\r\n return parentControlAttr.controlSpan;\r\n } else if (this.provideInjectData.controlSpan) {\r\n return this.provideInjectData.controlSpan;\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: label 标签的文本对齐方式\r\n * @author ChenRui\r\n * @date 2021/1/5 11:59\r\n */\r\n get labelAlign(): string {\r\n for (const propName of Object.keys(VerticalArrangement)) {\r\n if ((VerticalArrangement as any)[propName][\"code\"] === (this.controlAttr as DesFormLayout).gridVerticalArrangement) {\r\n return (VerticalArrangement as any)[propName][\"textAlign\"];\r\n }\r\n }\r\n return VerticalArrangement.AlignRight.textAlign;\r\n }\r\n\r\n /**\r\n * @description: 获取金额转换单位\r\n * @author ChenRui\r\n * @date 2021/2/20 17:43\r\n */\r\n get moneyUnits(): any[] {\r\n const moneyUnits: any[] = [];\r\n const moneyUnit: any[] = formBeanUtilsService.parse((this.controlAttr as DesFormControl).moneyUnit);\r\n if ((this.controlAttr as DesFormControl).moneyUnit) {\r\n Object.values(MoneyUnit).forEach((item) => {\r\n if (moneyUnit.findIndex((it) => it === item.code) !== -1) {\r\n moneyUnits.push(item);\r\n }\r\n });\r\n }\r\n\r\n if (moneyUnits && moneyUnits.length > 0) {\r\n this.defaultMoneyUnit = moneyUnits[0];\r\n }\r\n return moneyUnits;\r\n }\r\n\r\n /**\r\n * @description: 单位缩放比例\r\n * @author ChenRui\r\n * @date 2022/5/7 10:31\r\n */\r\n get moneyUnitsIndentScale(): number {\r\n const moneyUnit: any = this.defaultMoneyUnit;\r\n if (moneyUnit != null && moneyUnit.code) {\r\n return Number(moneyUnit.code);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * @description: 获取select、checkbox、radio可选项\r\n * @author ChenRui\r\n * @date 2020/12/2 14:36\r\n */\r\n get options(): any[] {\r\n return extractOptions(this.controlAttr);\r\n }\r\n\r\n /**\r\n * @description: 使用月份组件\r\n * @author ChenRui\r\n * @date 2021/5/19 16:12\r\n */\r\n get useMonthPicker(): boolean {\r\n const dateFormat: any = (this.controlAttr as DesFormControl).dateFormat;\r\n if (dateFormat && dateFormat.toLowerCase() === \"yyyy-mm\") {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 级联选择框\r\n * @author ChenRui\r\n * @date 2021/1/5 16:31\r\n */\r\n get cascaderOptions(): any[] {\r\n const value: any[] = this.options;\r\n let options: any[] = [];\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n options = this.cascaderRecursion(items);\r\n }\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n get treeSelectOptions(): any[] {\r\n const value: any[] = this.options;\r\n console.log(value);\r\n if (value && value.length > 0) {\r\n const items = formBeanUtilsService.copy(value);\r\n this.treeSelectRecursion(items);\r\n return items;\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 是否12小时制\r\n * @author ChenRui\r\n * @date 2021/1/18 10:54\r\n */\r\n get is12Hours(): boolean {\r\n return !!(this.controlAttr as DesFormControl).timeFormat && (this.controlAttr as DesFormControl).timeFormat.indexOf(\":ss\") < 0;\r\n }\r\n\r\n /**\r\n * @description: 是否添加反馈\r\n * @author ChenRui\r\n * @date 2021/1/21 10:43\r\n */\r\n get hasFeedback(): boolean {\r\n return this.control!.formControl != null && this.control!.formControl!.validates && this.control!.formControl!.validates.length > 0;\r\n }\r\n\r\n /**\r\n * @description: 是否必填,仅影响样式\r\n * @author ChenRui\r\n * @date 2021/1/21 10:50\r\n */\r\n get required(): boolean {\r\n if (this.hasFeedback && this.control!.formControl!.validates.findIndex((item: any) => String(item.name) === String(ValidateRules.Required.code)) !== -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 格式化数据\r\n * @author ChenRui\r\n * @date 2021/1/8 11:30\r\n */\r\n get formatData(): string {\r\n this.metaRefresh = this.provideInjectData.metaRefresh; // 刷新标识\r\n let val = \"\";\r\n let data: any = this.control!.formControl!.value;\r\n let options: any[];\r\n let context: any[];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n switch (this.control!.code) {\r\n case FormFieldType.Input.code:\r\n if (controlAttr.bindingPrefix) {\r\n val += controlAttr.bindingPrefix;\r\n }\r\n val += data || \"\";\r\n if (controlAttr.bindingSuffix) {\r\n val += controlAttr.bindingSuffix;\r\n }\r\n data = val;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (this.numberFormatter) {\r\n data = this.numberFormatter(data);\r\n }\r\n // 自动补0\r\n if (data && controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\") {\r\n let index;\r\n if (data.indexOf(\".\") == -1) {\r\n index = controlAttr.decimalPlaces;\r\n data += \".\";\r\n } else {\r\n index = controlAttr.decimalPlaces - (data.length - 1 - data.indexOf(\".\"));\r\n }\r\n for (let i = 0; i < index; i++) {\r\n data += \"0\";\r\n }\r\n data = this.countDecimalPlaces(data, controlAttr.decimalPlaces);\r\n }\r\n // 金额后缀不依赖于是否设置了小数位\r\n if (controlAttr.zoomType !== ZoomType.automatic.code && data != null && data != \"\" && controlAttr.unit) {\r\n data = data.replace(controlAttr.unit, \"\");\r\n // data = `${data}${controlAttr.unit}`; // 后缀在后面统一展示 2023年9月22日15:49:08\r\n }\r\n return data;\r\n case FormFieldType.Select.code:\r\n case FormFieldType.Radio.code:\r\n if (data != null && Array.isArray(data)) {\r\n const context: string[] = [];\r\n this.options.find((item) => {\r\n for (let i = 0; i < data.length; i++) {\r\n if (item.value === data[i]) {\r\n context.push(item.title);\r\n }\r\n }\r\n });\r\n return context.join(\",\");\r\n } else {\r\n const option = this.options.find((item) => item.value === data);\r\n return option ? option.title : \"\";\r\n }\r\n case FormFieldType.Checkbox.code:\r\n options = data || [];\r\n context = [];\r\n options.forEach((it) => {\r\n this.options.find((item) => {\r\n if (item.value === it) {\r\n context.push(item.title);\r\n }\r\n });\r\n });\r\n return context.join(\" , \");\r\n case FormFieldType.Switch.code:\r\n if (data !== undefined) {\r\n if (data === true && controlAttr.onOpeningValue != undefined && controlAttr.onOpeningValue !== \"\") {\r\n return controlAttr.onOpeningValue;\r\n } else if (data === false && controlAttr.whenClosedValue != undefined && controlAttr.whenClosedValue !== \"\") {\r\n return controlAttr.whenClosedValue;\r\n } else {\r\n return data ? \"是\" : \"否\";\r\n }\r\n }\r\n return \"\";\r\n case FormFieldType.TimePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.timeFormat || \"HH:mm:ss\");\r\n }\r\n return \"\";\r\n case FormFieldType.DatePicker.code:\r\n if (data != null) {\r\n return dayjs(data).format(controlAttr.dateFormat || \"YYYY-MM-dd\");\r\n }\r\n return \"\";\r\n case FormFieldType.Cascader.code:\r\n if (data != null) {\r\n return this.cascaderContextRecursion(data, this.cascaderOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.TreeSelect.code:\r\n if (data != null) {\r\n return this.treeSelectContextRecursion(data, this.treeSelectOptions);\r\n }\r\n return \"\";\r\n case FormFieldType.Custom.code:\r\n if (this.customFormats && this.customFormats[controlAttr.customFieldName]) {\r\n const customFormat: CustomFormat = this.customFormats[controlAttr.customFieldName];\r\n if (customFormat && customFormat.display) {\r\n return customFormat.display(data, controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * 数字小数位数计算\r\n * @author JiangTao\r\n * @since 2026-04-16 16:40:23\r\n */\r\n countDecimalPlaces(data: string | number, decimalPlaces: number | undefined): string {\r\n // 1. 安全处理\r\n const digits = decimalPlaces ?? 0;\r\n const str = String(data).trim();\r\n if (!str) return digits > 0 ? `0.${\"0\".repeat(digits)}` : \"0\";\r\n\r\n // 2. 判断是否有小数\r\n const hasDot = str.includes(\".\");\r\n const intPart = hasDot ? str.split(\".\")[0] : str;\r\n const decimalPart = hasDot ? str.split(\".\")[1] : \"\";\r\n\r\n // 3. 拼接成纯数字用于四舍五入计算\r\n const pureNumStr = intPart.replace(/,/g, \"\") + (hasDot ? \".\" + decimalPart : \"\");\r\n const num = parseFloat(pureNumStr);\r\n if (isNaN(num)) return intPart + (digits > 0 ? `.${\"0\".repeat(digits)}` : \"\");\r\n\r\n // 4. 四舍五入保留 digits 位\r\n const factor = Math.pow(10, digits);\r\n const rounded = (Math.round(num * factor) / factor).toFixed(digits);\r\n\r\n // 5. 拆分四舍五入后的整数与小数\r\n const [, roundedDecimal = \"\"] = rounded.split(\".\");\r\n\r\n // 6. 最终结果:原始整数部分 + 处理后的小数部分\r\n if (digits <= 0) return intPart;\r\n return `${intPart}.${roundedDecimal}`;\r\n }\r\n\r\n /**\r\n * @description: 支持的上传类型\r\n * @author ChenRui\r\n * @date 2021/4/25 11:50\r\n */\r\n get uploadType(): any {\r\n const controlAttr = this.controlAttr as DesFormControl;\r\n if (controlAttr.supportUploadType === SupportUploadType.Arbitrarily.code) {\r\n return undefined;\r\n } else if (controlAttr.supportUploadType === SupportUploadType.Custom.code) {\r\n return controlAttr.customUploadType;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n /*const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr != null) {\r\n if (controlAttr.isOptionType === OptionType.Fixed.code) {\r\n console.log(controlAttr.optionConfig);\r\n } else if (controlAttr.isOptionType === OptionType.Dynamic.code) {\r\n if (controlAttr.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n console.log(controlAttr.generalDictionaryOptions);\r\n }\r\n }\r\n }*/\r\n }\r\n\r\n /**\r\n * @description: 级联搜索\r\n * @author ChenRui\r\n * @date 2021/5/19 17:23\r\n */\r\n cascaderFilter(inputValue: any, path: any): any {\r\n return path.some((option: any) => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);\r\n }\r\n\r\n /**\r\n * @description: 递归生成树形下拉选项\r\n * @author ChenRui\r\n * @date 2021/1/5 16:44\r\n */\r\n treeSelectRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n item.disabled = false;\r\n item.key = item.value;\r\n if (item.children && item.children.length > 0) {\r\n if ((this.controlAttr as any).disableNonLeafNodes !== \"0\") {\r\n item.disabled = true; // LiuBo 2023年11月7日11:33:41 禁用非叶子节点\r\n }\r\n this.treeSelectRecursion(item.children);\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 级联递归\r\n * @author ChenRui\r\n * @date 2021/1/5 16:35\r\n */\r\n cascaderRecursion(items: any[]): any[] {\r\n const options: any[] = [];\r\n items.forEach((item) => {\r\n const option: any = {\r\n value: item.value,\r\n label: item.title,\r\n isLeaf: false,\r\n };\r\n options.push(option);\r\n if (item.children && item.children.length > 0) {\r\n option.children = this.cascaderRecursion(item.children);\r\n } else {\r\n option.isLeaf = true;\r\n }\r\n });\r\n return options;\r\n }\r\n\r\n /**\r\n * @description: 递归获取级联选项对应的文本\r\n * @author ChenRui\r\n * @date 2021/1/8 14:45\r\n */\r\n cascaderContextRecursion(val: any[], cascaderOptions: any[], index = 0): string {\r\n if (val && val.length > 0 && cascaderOptions && cascaderOptions.length > 0) {\r\n if (val.length > index) {\r\n const currentIndex = val[index];\r\n const cascaderOption = cascaderOptions.find((item) => item.value === currentIndex);\r\n if (cascaderOption != null) {\r\n let currentText = cascaderOption.label;\r\n if (val.length > index + 1) {\r\n const subText = this.cascaderContextRecursion(val, cascaderOption.children, index + 1);\r\n currentText += \" / \" + subText;\r\n }\r\n return currentText;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description:\r\n * @author ChenRui\r\n * @date 2021/1/8 15:05\r\n */\r\n\r\n treeSelectContextRecursion(val: string, treeSelectOptions: any[]): string {\r\n if (val && treeSelectOptions && treeSelectOptions.length > 0) {\r\n for (let i = 0; i < treeSelectOptions.length; i++) {\r\n if (treeSelectOptions[i].value === val) {\r\n return treeSelectOptions[i].title;\r\n } else if (treeSelectOptions[i].children && treeSelectOptions[i].children.length > 0) {\r\n const subTitle: string = this.treeSelectContextRecursion(val, treeSelectOptions[i].children);\r\n if (subTitle) {\r\n return subTitle;\r\n }\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 是否为ie\r\n * @author ChenRui\r\n * @date 2021/3/25 14:44\r\n */\r\n get isIe(): boolean {\r\n return !!this.provideInjectData.widthCompatibleMode || !!window.ActiveXObject || \"ActiveXObject\" in window;\r\n }\r\n\r\n /**\r\n * @description: ie 兼容性宽度布局\r\n * @author ChenRui\r\n * @date 2021/3/25 12:53\r\n */\r\n get divWidthCompatibleToIe(): any {\r\n if (this.isIe) {\r\n const desFormLayout: DesFormLayout = this.parentControlAttr as DesFormLayout;\r\n const configIndex: number = this.index! % desFormLayout.gridColumnConfig.length; // 索引位置\r\n const proportion: number = desFormLayout.gridColumnConfig[configIndex].value; // 比重\r\n let total = 0; // 总值\r\n desFormLayout.gridColumnConfig.forEach((item: any) => {\r\n total += Number(item.value);\r\n });\r\n const ratio = proportion / total; // 比值\r\n const val = Number(ratio) * 100;\r\n return `calc( ${val}% - 1px)`;\r\n } else {\r\n return \"100%\";\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根节点容器布局样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:52\r\n */\r\n get emptyLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = { \"grid-template-columns\": gridTemplateColumns };\r\n }\r\n return style;\r\n }\r\n\r\n /**\r\n * @description: 常规布局容器样式\r\n * @author ChenRui\r\n * @date 2021/3/25 14:42\r\n */\r\n get generalLayoutContainerStyle(): any {\r\n let style: any = {};\r\n if (this.isMobileBrowser()) {\r\n return { display: \"flex\", \"flex-direction\": \"column\" };\r\n }\r\n if (this.isIe) {\r\n style = { display: \"flex\", \"flex-wrap\": \"wrap\" };\r\n } else {\r\n const gridColumnEnd: any = generateGridColumnEnd((this.parentControl?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n const gridTemplateColumns: any = generateGridTemplateColumns((this.control?.controlAttr as DesFormLayout)?.gridColumnConfig);\r\n style = {\r\n \"grid-column-end\": gridColumnEnd,\r\n \"grid-template-columns\": gridTemplateColumns,\r\n };\r\n }\r\n return style;\r\n }\r\n /**\r\n * 判断是否为移动端浏览器\r\n * @returns {boolean} true=移动端,false=PC端\r\n */\r\n isMobileBrowser() {\r\n // 匹配常见移动端设备的User-Agent关键词\r\n const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i;\r\n // 排除平板设备(可选,根据业务需求调整)\r\n const tabletRegex = /iPad|Tablet|Nexus 7|Nexus 10/i;\r\n\r\n const userAgent = navigator.userAgent;\r\n const isMobile = mobileRegex.test(userAgent);\r\n const isTablet = tabletRegex.test(userAgent);\r\n\r\n // 业务逻辑:如果是平板,可根据需求返回true或false\r\n return isMobile && !isTablet;\r\n }\r\n\r\n /**\r\n * @description: 初始化部分数据\r\n * @author ChenRui\r\n * @date 2021/1/29 15:28\r\n */\r\n initFormControlData(): void {\r\n if (this.control && this.control.formControl) {\r\n if (this.control!.code === FormFieldType.DatePicker.code || this.control!.code === FormFieldType.TimePicker.code) {\r\n if (this.control.formControl.value) {\r\n if (typeof this.control.formControl.value === \"string\") {\r\n this.control.formControl.value = dayjs(new Date(this.control.formControl.value));\r\n } else if (this.control.formControl.value instanceof Date) {\r\n this.control.formControl.value = dayjs(this.control.formControl.value);\r\n }\r\n }\r\n }\r\n if (this.control.formControl.textNoticeCallback == null) {\r\n this.control.formControl.textNoticeCallback = () => {\r\n return this.formatData;\r\n };\r\n }\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxValue == null || (controlAttr.maxValue as any) === \"\") {\r\n const maxValue = \"9999999999999999\";\r\n if (controlAttr.decimalPlaces != undefined && (controlAttr.decimalPlaces as any) !== \"\" && controlAttr.decimalPlaces > 0) {\r\n if (controlAttr.decimalPlaces > 16) {\r\n controlAttr.decimalPlaces = 16;\r\n }\r\n controlAttr.maxValue = Number(maxValue.slice(0, maxValue.length - controlAttr.decimalPlaces) + \".\" + maxValue.slice(maxValue.length - controlAttr.decimalPlaces, maxValue.length));\r\n } else {\r\n controlAttr.maxValue = Number(maxValue);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 业务属性\r\n * @author ChenRui\r\n * @date 2021/2/1 14:38\r\n */\r\n get busAttr(): any {\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n let busAttr: any;\r\n let attrSubmittedType: any[] = [];\r\n if (controlAttr.busAttr) {\r\n busAttr = formBeanUtilsService.parse(controlAttr.busAttr);\r\n if (busAttr[FormBusAttr.SUBMITTED_TYPE.code]) {\r\n attrSubmittedType = busAttr[FormBusAttr.SUBMITTED_TYPE.code].split(\",\").filter((item: any) => !!item);\r\n }\r\n }\r\n const submittedType: any[] = Object.values(SubmittedType).map((val: any) => ({ label: val.name, value: val.code }));\r\n const submittedTypeCheckedNode: any[] = [];\r\n submittedType.forEach((item) => {\r\n if (attrSubmittedType.findIndex((it) => it === item.value) > -1) {\r\n submittedTypeCheckedNode.push(item);\r\n }\r\n });\r\n return {\r\n [FormBusAttr.SUBMITTED_TYPE.code]: submittedTypeCheckedNode,\r\n [FormBusAttr.IS_SUPPLEMENT.code]: busAttr ? busAttr[FormBusAttr.IS_SUPPLEMENT.code] : false,\r\n [FormBusAttr.IS_KEY_ELEMENTS.code]: busAttr ? busAttr[FormBusAttr.IS_KEY_ELEMENTS.code] : false,\r\n [FormBusAttr.IS_TRACK.code]: busAttr ? busAttr[FormBusAttr.IS_TRACK.code] : false,\r\n };\r\n }\r\n\r\n /**\r\n * @description: 报送类型\r\n * @author ChenRui\r\n * @date 2021/2/1 15:05\r\n */\r\n get submittedType(): any[] {\r\n if (this.busAttr && this.busAttr[FormBusAttr.SUBMITTED_TYPE.code].length > 0) {\r\n return this.busAttr[FormBusAttr.SUBMITTED_TYPE.code];\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 报送类型字符串\r\n * @author ChenRui\r\n * @date 2021/2/1 15:08\r\n */\r\n get submittedTypeStr(): string {\r\n return this.submittedType.map((item) => item.label).join(\"、\");\r\n }\r\n\r\n /**\r\n * 根据日期时间格式决定是否显示时间选择功能\r\n * @param format\r\n */\r\n showPickerTime(format?: string): any {\r\n // format 包含时间格式\r\n if (format && format.indexOf(\"HH:mm\") > -1) {\r\n return format;\r\n }\r\n return false;\r\n }\r\n /**\r\n * @description: 清除特殊字符\r\n * @author ChenRui\r\n * @date 2021/6/22 15:41\r\n */\r\n private clearNoNum(value: any) {\r\n if (value) {\r\n value = value.replace(/[^\\d.]/g, \"\"); //清除“数字”和“.”以外的字符\r\n value = value.replace(/\\.{2,}/g, \".\"); //只保留第一个. 清除多余的\r\n value = value.replace(\".\", \"$#$\").replace(/\\./g, \"\").replace(\"$#$\", \".\");\r\n // eslint-disable-next-line no-useless-escape\r\n value = value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/, \"$1$2.$3\"); //只能输入两个小数\r\n if (value.indexOf(\".\") < 0 && value != \"\") {\r\n //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额\r\n value = parseFloat(value);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * @description: 校验数字是否超过16位纯编码\r\n * @author ChenRui\r\n * @date 2021/6/22 14:58\r\n */\r\n private validateNumBeyondLimit(value: any): boolean {\r\n if (value) {\r\n const pureNumber: string = value.replace(/[^0-9]/gi, \"\");\r\n return pureNumber.length > 16;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 删除文件\r\n * @author ChenRui\r\n * @date 2021/4/25 11:35\r\n */\r\n handleRemove(file: any): void {\r\n const index = this.formControl.value.indexOf(file);\r\n const newFileList = this.formControl.value.slice();\r\n newFileList.splice(index, 1);\r\n this.formControl.value = newFileList;\r\n }\r\n\r\n /**\r\n * @description: 文件上传前回调函数\r\n * @author ChenRui\r\n * @date 2021/4/25 11:23\r\n */\r\n beforeUpload(file: any): boolean {\r\n const fileList: any[] = [...this.formControl.value, file];\r\n this.formControl.value = fileList;\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: 文件上传变更\r\n * @author ChenRui\r\n * @date 2021/4/25 11:29\r\n */\r\n handleUploadChange(event: any): any {\r\n let fileList: any[] = [...this.formControl.value];\r\n const controlAttr: DesFormControl = this.controlAttr as DesFormControl;\r\n if (controlAttr.maxUploadNumber && controlAttr.maxUploadNumber > 0) {\r\n fileList = fileList.slice(0 - Number(controlAttr.maxUploadNumber));\r\n }\r\n fileList = fileList.map((file) => {\r\n if (file.response) {\r\n file.url = file.response.url;\r\n }\r\n return file;\r\n });\r\n this.formControl.value = fileList;\r\n if (event && event.file && (event.file.status === undefined || event.file.status === \"removed\")) {\r\n this.onChange(this.control!);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 金额菜单单机事件\r\n * @author ChenRui\r\n * @date 2021/2/20 17:21\r\n */\r\n handleMoneyUnitMenuClick(e: any): void {\r\n this.defaultMoneyUnit = this.moneyUnits.find((item) => item.code === e.key);\r\n }\r\n\r\n /**\r\n * @description: 将下拉弹层渲染节点固定在触发器的父元素中\r\n * @author ZPFly\r\n * @date 2022/8/31 11:30\r\n */\r\n getPopupContainer(triggerNode: any) {\r\n return triggerNode.parentNode;\r\n }\r\n\r\n /**\r\n * @description: 输入事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:37\r\n */\r\n onChange(event: Control): void {\r\n if (this.control && (this.control.type === FormFieldClass.Base.code || this.control.type === FormFieldClass.Senior.code)) {\r\n this.validateResult = this.formControl.validate(event.formControl?.value);\r\n }\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 点击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:37\r\n */\r\n onClick(event: Control): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 数字框失焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:51\r\n */\r\n onInputNumberFocus(event: Control): void {\r\n this.onFocus(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = true;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 数字输入框失焦\r\n * @author ChenRui\r\n * @date 2021/3/4 11:43\r\n */\r\n onInputNumberBlur(event: Control): void {\r\n this.onBlur(event);\r\n if ((this.controlAttr as DesFormControl).isShowCapitalization) {\r\n this.numberPopoverVisible = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n\r\n /**\r\n * @Description 是否节假日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRest(current: any): boolean {\r\n if (JSON.parse(this.weekdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否工作日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isWeekday(current: any): boolean {\r\n if (JSON.parse(this.workdayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 是否交易日校验\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n isRadingDay(current: any): boolean {\r\n if (JSON.parse(this.traddayList).find((e: any) => e.calDate === this.DateTime(current.$d))) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * @Description 日期格式转换\r\n * @Author JiangTao\r\n * @Date 2024-04-16 下午 02:33\r\n */\r\n DateTime(date: any): string {\r\n const year: any = date.getFullYear();\r\n let month: any = date.getMonth() + 1;\r\n let strDate: any = date.getDate();\r\n\r\n if (month < 10) {\r\n month = \"0\" + month;\r\n }\r\n\r\n if (strDate < 10) {\r\n strDate = \"0\" + strDate;\r\n }\r\n\r\n return \"\" + year + month + strDate;\r\n }\r\n}\r\n","import { render } from \"./DvFormLayout.vue?vue&type=template&id=2f021ee3&scoped=true&ts=true\"\nimport script from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\nexport * from \"./DvFormLayout.vue?vue&type=script&lang=ts\"\n\nimport \"./DvFormLayout.vue?vue&type=style&index=0&id=2f021ee3&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2f021ee3\"]])\n\nexport default __exports__","/* eslint-disable */\r\nclass DateFormatService {\r\n /**\r\n * 日期时间格式自定义\r\n * @param {number|string} value 日期时间值时间戳或时间格式\r\n * @param {string} format 输出的时间格式\r\n * @returns {string} 定义好的时间格式\r\n */\r\n formatDateTime(value: any, format = 'YYYY-MM-dd HH:mm:ss'): string {\r\n const reg = /(YY|YYYY|MM|dd|HH|mm|ss|ww|WW)/g;\r\n if (!value) {\r\n return ''\r\n }\r\n if (!reg.test(format)) {\r\n throw new Error(`The defined format ${format} is incorrect,Please enter 'YYYY or YY' for year,MM for month, dd for day,ww or WW for week,HH for hours,mm for minutes,ss for seconds.`)\r\n }\r\n if (typeof value === 'string' && value.length === 8) {\r\n value = [value.substr(0, 4), value.substr(4, 2), value.substr(6, 2)].join('/')\r\n } else if (!isNaN(Number(value))) {\r\n value = Number(value);\r\n }\r\n const time = new Date(value);\r\n if (String(time) === 'Invalid Date') {\r\n throw new Error(`Time format unrecognized by ${value}, Please enter time stamp or legal time format.`);\r\n }\r\n const dayMap = ['日', '一', '二', '三', '四', '五', '六'];\r\n const year = String(time.getFullYear());\r\n const month = time.getMonth() + 1 > 9 ? String(time.getMonth() + 1) : `0${String(time.getMonth() + 1)}`;\r\n const date = time.getDate() > 9 ? String(time.getDate()) : `0${String(time.getDate())}`;\r\n const day = time.getDay();\r\n const week: any = day !== 0 ? day : '日';\r\n const hours = time.getHours() > 9 ? String(time.getHours()) : `0${String(time.getHours())}`;\r\n const minutes = time.getMinutes() > 9 ? String(time.getMinutes()) : `0${time.getMinutes()}`;\r\n const seconds = time.getSeconds() > 9 ? String(time.getSeconds()) : `0${String(time.getSeconds())}`;\r\n let str = '';\r\n if (/YYYY|YY/g.test(format)) {\r\n format.replace(/YYYY|YY/g, (reg, index, value) => {\r\n if (reg === 'YY') {\r\n str = value.replace('YY', year.slice(2))\r\n }\r\n if (reg === 'YYYY') {\r\n str = value.replace('YYYY', year)\r\n }\r\n return str\r\n })\r\n } else {\r\n str = format\r\n }\r\n str = str.replace(/MM/g, month);\r\n str = str.replace(/dd/g, date);\r\n str = str.replace(/HH/g, hours);\r\n str = str.replace(/mm/g, minutes);\r\n str = str.replace(/ss/g, seconds);\r\n str = str.replace(/ww/g, week);\r\n str = str.replace(/WW/g, dayMap[day]);\r\n return str\r\n }\r\n\r\n /**\r\n * @Description:两个日期大小比较(开始时间 > 结束时间,返回true)\r\n * @author LiuBo\r\n * @date 2022/7/15\r\n * @time 10:43\r\n * @param startTime 开始时间 (YYYY-MM-DD)\r\n * @param endTime 结束时间 (YYYY-MM-DD)\r\n * @modifyLog\r\n */\r\n dateSizeCompare(startTime: string,endTime: string): boolean {\r\n return new Date(Date.parse(startTime.replace(/-/g,\"/\"))).getTime() >\r\n new Date(Date.parse(endTime.replace(/-/g,\"/\"))).getTime();\r\n }\r\n}\r\nconst dateFormat: DateFormatService = new DateFormatService();\r\nexport { dateFormat };\r\n","import { FormGroup } from \"@/domain\";\r\nimport { AbstractControl } from \"@/domain/AbstractControl\";\r\nimport { FormControl, Validate, ValidateReport, ValidateResult } from \"../domain/FormControl\";\r\nimport DvForm from \"../components/form/DvForm.vue\";\r\nimport { FormFieldType, OptionType, SubmittedType, ValidateRules, ValidateStatus } from \"../constants/enum\";\r\n// import moment from \"moment\";\r\nimport { ZoomType } from \"@/constants\";\r\nimport { extractOptions, storageOptions } from \"@/filtres/extract-options.filter\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../domain\";\r\nimport { Rule, validateGeneratorService } from \"../services/validate-generator.service\";\r\nimport { formToolsService, formTreeNodeConvertService, formValidateService } from \"@/services\";\r\nimport { MathJsStatic } from \"mathjs\";\r\nimport { Vue } from \"vue-property-decorator\";\r\nimport dayjs from \"dayjs\";\r\nimport { dateFormat } from \"@/services/date-format.service\";\r\nexport type FormatType = \"default\" | \"ebtrust\";\r\n\r\nexport enum Attribute {\r\n IsHideControl = \"isHideControl\", // 隐藏控件\r\n IsRequiredValidate = \"isRequiredValidate\", // 是否必填\r\n FormFieldDescribe = \"formFieldDescribe\", // 字段别名\r\n FieldDefaultValue = \"fieldDefaultValue\", // 默认值\r\n TitleWidth = \"titleWidth\", // 标题宽度\r\n IsBoldTitle = \"isBoldTitle\", // 加粗标题\r\n IsHideTitle = \"isHideTitle\", // 隐藏标题\r\n TitleColor = \"titleColor\", // 标题颜色\r\n Placeholder = \"placeholder\", // 预期值的提示信息\r\n Tips = \"tips\", // 提示信息\r\n IsNotEdit = \"isNotEdit\", // 不可编辑\r\n BindingPrefix = \"bindingPrefix\", // 绑定前缀\r\n BindingSuffix = \"bindingSuffix\", // 绑定后缀\r\n BuiltInFrontLabel = \"builtInFrontLabel\", // 内置前置标签\r\n BuiltInPostLabel = \"builtInPostLabel\", // 内置后置标签\r\n ControlWidth = \"controlWidth\", // 控件宽度\r\n IsPasswordBox = \"isPasswordBox\", // 是否密码框\r\n InitRowHeight = \"initRowHeight\", // 初始行高\r\n IsFixedRowHeight = \"isFixedRowHeight\", // 是否固定行高\r\n FormatType = \"formatType\", // 格式化类型\r\n MinValue = \"minValue\", // 最小值\r\n MaxValue = \"maxValue\", // 最大值\r\n Step = \"step\", // 步长\r\n DecimalPlaces = \"decimalPlaces\", // 小数位\r\n ThousandthPercentileFormat = \"thousandthPercentileFormat\", // 千分位格式化\r\n Unit = \"unit\", // 单位\r\n ZoomType = \"zoomType\", // 缩放类型\r\n ZoomMultiple = \"zoomMultiple\", // 缩放倍数\r\n IsShowCapitalization = \"isShowCapitalization\", // 展示大写\r\n IsLineFeedDisplay = \"isLineFeedDisplay\", // 换行显示\r\n IsOptionType = \"isOptionType\", // 类型选项\r\n OptionConfig = \"optionConfig\", // 自定义字典项\r\n DateFormat = \"dateFormat\", // 日期格式\r\n TimeFormat = \"timeFormat\", // 时间格式\r\n IsSupportMultiple = \"isSupportMultiple\", // 是否支持多选\r\n MaxUploadNumber = \"maxUploadNumber\", // 最多上传个数\"\r\n LimitSize = \"limitSize\", // 上传大小限制\r\n SupportUploadType = \"supportUploadType\", // 扩展类型\r\n CustomUploadType = \"customUploadType\", // 自定义类型\r\n ExtendUploadType = \"extendUploadType\", // 扩展类型\r\n AttachmentExtendProperties = \"attachmentExtendProperties\", // 附件扩展属性\r\n IsMultipleChoice = \"isMultipleChoice\", // 是否可多选\r\n IsSearchable = \"isSearchable\", // 是否可搜索\r\n CanAddEntry = \"canAddEntry\", // 是否可新增条目\r\n IsClearButton = \"isClearButton\", // 显示清除按钮\r\n OnOpeningValue = \"onOpeningValue\", // 打开时的值\r\n WhenClosedValue = \"whenClosedValue\", // 关闭时的值\r\n OnOpeningText = \"onOpeningText\", // 打开时的文字描述\r\n WhenClosedText = \"whenClosedText\", // 关闭时的文字描述\r\n CustomFieldName = \"customFieldName\", // 自定义字段名\r\n TextFold = \"textFold\", // 文本折叠\r\n HiddenDropdown = \"hiddenDropdown\", // 隐藏下拉面板\r\n BusAttr = \"busAttr\", // 业务属性\r\n EnableAutoComplete = \"enableAutoComplete\", // 开启自动完成功能\r\n AutoCompleteOptions = \"autoCompleteOptions\", // 自动完成列表数据\r\n IsTreeOpen = \"isTreeOpen\", // 树形选择框是否展开\r\n CheckboxStyle = \"checkboxStyle\", // 多选器选项标签样式\r\n ItemWidth = \"itemWidth\",\r\n ChangeOnSelect = \"changeOnSelect\", // 是否允许级联选择框只选中父级选项\r\n TextareaRows = \"textareaRows\", // 设置textarea组件默认展示行数\r\n IsShowHoliday = \"isShowHoliday\", // 是否展示节假日\r\n}\r\n\r\n/**\r\n * @description: 表单基础类,聚合常用api\r\n * @author ChenRui\r\n * @date 2020/11/28 23:27\r\n */\r\nexport class FormApi {\r\n id?: any; // api编号\r\n dvForm: Vue | any; // form组件实例\r\n edit: boolean | undefined; // 编辑状态\r\n formatType: FormatType; // 数据格式化模式\r\n apiMetaRefresh: any; // api内部刷新标识\r\n [key: string]: any; // 任一扩展属性\r\n oldVal: any; //修改前数据\r\n\r\n /**\r\n * @description: 获取表单对象\r\n * @author ChenRui\r\n * @date 2020/11/28 23:29\r\n */\r\n constructor(\r\n options: {\r\n id?: any;\r\n dvForm?: Vue;\r\n edit?: boolean;\r\n formatType?: FormatType;\r\n } = {}\r\n ) {\r\n this.id = options.id || this.getUuid();\r\n this.dvForm = options.dvForm || new Vue(DvForm);\r\n this.edit = options.edit;\r\n this.formatType = options.formatType || \"default\";\r\n }\r\n\r\n get mathjs(): MathJsStatic {\r\n if ((window as any).$app.config.globalProperties.$mathjs) {\r\n return (window as any).$app.config.globalProperties.$mathjs;\r\n }\r\n return {} as MathJsStatic;\r\n }\r\n\r\n /**\r\n * @description: 获取表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:36\r\n */\r\n get formData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n let obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n if (this.oldVal) {\r\n obj = this.contrast(this.oldVal, obj);\r\n if (!Object.keys(obj).length) {\r\n obj = null;\r\n }\r\n }\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @Description 获取表单全部值\r\n * @Author JiangTao\r\n * @Date 2023-12-22 下午 02:50\r\n */\r\n get formAllData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const obj: any = this.generateData(this.dvForm.desForm.formGroup);\r\n return obj;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 编码表单对象\r\n * @author ChenRui\r\n * @date 2021/4/25 16:41\r\n */\r\n get encodedFormData(): any {\r\n this.apiMetaRefresh = this.dvForm.metaRefresh;\r\n if (this.dvForm.desForm && this.dvForm.desForm.formGroup) {\r\n const data = this.generateData(this.dvForm.desForm.formGroup);\r\n return this.jsonToFormData(data);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/2/4 10:37\r\n */\r\n setFormData(srcData: any, isDefault = false, validate = false, oldVal?: any): void {\r\n if (this.dvForm.desForm.formGroup) {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n } else {\r\n setTimeout(() => {\r\n this.setFormDataInner(srcData, isDefault, validate);\r\n });\r\n }\r\n if (oldVal) this.oldVal = oldVal;\r\n }\r\n\r\n /**\r\n * @description: 获取控件对象\r\n * @author ChenRui\r\n * @date 2021/1/29 10:08\r\n */\r\n getControl(key: string, control?: AbstractControl, showError = true): AbstractControl | any {\r\n if (key) {\r\n if (control == null) {\r\n if (this.dvForm.desForm.formGroup) {\r\n control = this.dvForm.desForm.formGroup.controls;\r\n } else if (showError) {\r\n console.log(\"表单对象尚未初始化完成...\");\r\n }\r\n }\r\n if (control && Object.keys(control).length > 0) {\r\n for (const propName of Object.keys(control)) {\r\n if (propName === key) {\r\n return control[propName];\r\n }\r\n if (control[propName].controls && Object.keys(control[propName].controls).length > 0) {\r\n const subControl: AbstractControl = this.getControl(key, control[propName].controls);\r\n if (subControl != null) {\r\n return subControl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 获取值\r\n * @author ChenRui\r\n * @date 2021/1/29 14:57\r\n */\r\n getValue(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n // && control instanceof FormControl\r\n return this.decodeData(control as FormControl, false);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 设置值\r\n * @author ChenRui\r\n * @date 2021/1/29 16:23\r\n */\r\n setValue(key: string, val: any, isDefault = false, validate = true): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n });\r\n } else {\r\n this.setControlValue(control, key, val, isDefault, validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单\r\n * @author ChenRui\r\n * @date 2021/2/22 17:40\r\n */\r\n resetValue(): void {\r\n this.dvForm.formatDesForm(true);\r\n }\r\n\r\n /**\r\n * @description: 获取文本内容\r\n * @author ChenRui\r\n * @date 2021/1/29 15:03\r\n */\r\n getText(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.text();\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 获取可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:11\r\n */\r\n getOptions(key: string): any[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return extractOptions(control.controlAttr);\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 设置可选项\r\n * @author ChenRui\r\n * @date 2021/1/29 16:15\r\n */\r\n setOptions(key: string, data: any[], defaultVal?: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlOptions(control, key, data, defaultVal);\r\n });\r\n } else {\r\n this.setControlOptions(control, key, data, defaultVal);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n getAttribute(key: string, attribute: Attribute): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr\r\n return control.controlAttr[attribute];\r\n }\r\n }\r\n /**\r\n * @description: 设置常规属性\r\n * @author ChenRui\r\n * @date 2021/1/29 17:21\r\n */\r\n setAttribute(key: string, attribute: Attribute, data: any): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n this.setControlAttribute(control, attribute, data);\r\n });\r\n } else {\r\n this.setControlAttribute(control, attribute, data);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 根据name获取校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:46\r\n */\r\n getValidate(key: string, name: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.getValidate(name);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:30\r\n */\r\n removeValidate(key: string, validateName: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const validates: Validate[] = control.validates;\r\n if (validates && validates.length > 0) {\r\n const index = validates.findIndex((item) => item.name === validateName);\r\n if (index !== -1) {\r\n validates.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 移除所有校验\r\n * @author ChenRui\r\n * @date 2021/4/1 21:48\r\n */\r\n removeAllValidates(key: string): void {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n control.validates = [];\r\n }\r\n }\r\n\r\n /**\r\n * @description: 获取校验集合\r\n * @author ChenRui\r\n * @date 2021/1/30 11:40\r\n */\r\n getValidates(key: string): Validate[] {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n return control.validates;\r\n }\r\n return [];\r\n }\r\n /**\r\n * @Description: 设置必输校验\r\n * @author GuoXuHui\r\n * @date 2022-05-25\r\n * @time 10:09\r\n */\r\n setRequiredValidate(key: string, data: boolean) {\r\n if (data) {\r\n this.setValidate(key, { ruleType: ValidateRules.Required.code });\r\n } else {\r\n this.removeValidate(key, ValidateRules.Required.code); // 清除必填校验\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验\r\n * @author ChenRui\r\n * @date 2021/1/30 11:54\r\n */\r\n setValidate(key: string, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n });\r\n } else {\r\n this.setValidateInner(control, validate, isCover);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 校验提示\r\n * @author ChenRui\r\n * @date 2021/8/18 17:40\r\n */\r\n validateTips(scrollView?: any): boolean {\r\n return formValidateService.validateTips(this, scrollView);\r\n }\r\n\r\n /**\r\n * @description: 全局校验报告\r\n * @author ChenRui\r\n * @date 2021/2/5 11:48\r\n */\r\n validateReport(formGroup?: AbstractControl, validateReports?: ValidateReport[], refreshFeedback = true): ValidateReport[] {\r\n if (validateReports == null) {\r\n validateReports = [];\r\n }\r\n if (formGroup == null) {\r\n formGroup = this.dvForm.desForm.formGroup;\r\n if (refreshFeedback) {\r\n this.dvForm.refreshCheckFeedbackFlag = new Date().getTime();\r\n }\r\n }\r\n if (formGroup != null) {\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n this.validateReport(formGroup.controls[propName], validateReports);\r\n } else if (formGroup.controls[propName] instanceof FormControl && !formGroup.controls[propName].controlAttr.isHideControl) {\r\n const validateResult: ValidateResult = formGroup.controls[propName].validate();\r\n if (validateResult.validateStatus === ValidateStatus.Error.code) {\r\n validateReports.push({\r\n key: formGroup.controls[propName].key,\r\n name: formGroup.controls[propName].controlAttr.formFieldDescribe,\r\n errorMsg: validateResult.errorMsg,\r\n controlType: formGroup.controls[propName].controlAttr.controlType,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return validateReports;\r\n }\r\n\r\n /**\r\n * @description: 表单全局校验\r\n * @author ChenRui\r\n * @date 2021/2/5 14:11\r\n */\r\n validate(refreshFeedback = true): boolean {\r\n const validateReports: ValidateReport[] = this.validateReport(undefined, undefined, refreshFeedback);\r\n return !(validateReports.length > 0);\r\n }\r\n\r\n /**\r\n * @description: 刷新校验\r\n * @author ChenRui\r\n * @date 2021/6/4 19:32\r\n */\r\n refreshValidate(key: string): void {\r\n let control: AbstractControl = this.getControl(key);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(key);\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n });\r\n } else {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验\r\n * @author ChenRui\r\n * @date 2022/4/6 11:51\r\n */\r\n resetFormValidateState(): void {\r\n this.dvForm.formValidateStateResetMark = new Date().getTime();\r\n }\r\n\r\n /**\r\n * @description: 设置格式化显示和输出函数\r\n * @author ChenRui\r\n * @date 2021/2/4 19:44\r\n */\r\n setFormatDisplayAndOutput(key: string, customFormat: CustomFormat): void {\r\n if (key) {\r\n this.dvForm.customFormats[key] = customFormat;\r\n }\r\n this.refreshAndUpdateData();\r\n }\r\n\r\n /**\r\n * @description: 刷新数据\r\n * @author ChenRui\r\n * @date 2021/2/4 20:22\r\n */\r\n refreshAndUpdateData(): void {\r\n this.dvForm.onRefreshArgumentsHandler(new Date().getTime());\r\n }\r\n\r\n /**\r\n * @description: 获取控件dom对象\r\n * @author ChenRui\r\n * @date 2021/2/26 17:12\r\n */\r\n getControlEl(key: string): any {\r\n const control: AbstractControl = this.getControl(key);\r\n if (control != null && control.controlAttr) {\r\n const els: HTMLCollectionOf<any> = document.getElementsByClassName(\"form-model-item-\" + control.controlAttr.boundProperty);\r\n if (els != null && els.length > 0) {\r\n return els[0];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @description: 检查是否包含上传控件\r\n * @author ChenRui\r\n * @date 2021/4/23 11:30\r\n */\r\n checkHasUploadControl(abstractControl: AbstractControl): boolean {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n const judge = this.checkHasUploadControl(formGroup.controls[propName]);\r\n if (judge) {\r\n return judge;\r\n }\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n if (formGroup.controls[propName].code === FormFieldType.Upload.code) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description: json格式转表单格式\r\n * @author ChenRui\r\n * @date 2020/8/28 15:20\r\n */\r\n jsonToFormData(params: any): FormData {\r\n const formData = new FormData();\r\n if (params != null) {\r\n Object.keys(params).forEach((key) => {\r\n if (params[key] != null && params[key] instanceof Array && params[key].length > 0 && params[key][0] instanceof File) {\r\n params[key].forEach((item: any) => {\r\n formData.append(key, item);\r\n });\r\n } else {\r\n formData.append(key, params[key]);\r\n }\r\n });\r\n return formData;\r\n }\r\n return formData;\r\n }\r\n\r\n /**\r\n * @description: 设置变更历史记录\r\n * @author ChenRui\r\n * @date 2021/4/25 15:55\r\n */\r\n setFieldChangeHistory(fieldChangeHistory: FieldChangeHistory): void {\r\n fieldChangeHistory = fieldChangeHistory || {};\r\n for (const propertyName of Object.keys(fieldChangeHistory)) {\r\n let control: AbstractControl = this.getControl(propertyName, undefined, false);\r\n if (control == null) {\r\n setTimeout(() => {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n });\r\n } else {\r\n control = this.getControl(propertyName, undefined, false);\r\n if (control) {\r\n //control && control instanceof FormControl\r\n const history = (fieldChangeHistory[propertyName] || []).sort((a, b) => {\r\n const aTime = new Date(a.time).getTime();\r\n const bTime = new Date(b.time).getTime();\r\n return bTime - aTime;\r\n });\r\n control.history = history;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 隐藏布局\r\n * @author ChenRui\r\n * @date 2021/11/16 0:01\r\n */\r\n hideLayout(layoutName: string, mark = true): void {\r\n if (layoutName) {\r\n const nodes: any = document.getElementsByClassName(\"lo-form-layout-\" + layoutName);\r\n if (nodes && nodes.length > 0) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n nodes[i].style.display = mark ? \"none\" : \"grid\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置表单值\r\n * @author ChenRui\r\n * @date 2021/8/16 9:29\r\n */\r\n private setFormDataInner(srcData: any, isDefault: boolean, validate: boolean): void {\r\n if (srcData) {\r\n for (const propName of Object.keys(srcData)) {\r\n if (typeof srcData[propName] === \"string\" || typeof srcData[propName] === \"number\") {\r\n this.setValue(propName, srcData[propName], isDefault, false);\r\n } else {\r\n this.setFormData(srcData[propName], isDefault, validate);\r\n }\r\n }\r\n }\r\n if (validate) {\r\n this.validate();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件值\r\n * @author ChenRui\r\n * @date 2021/4/13 12:50\r\n */\r\n private setControlValue(control: AbstractControl, key: string, val: any, isDefault?: boolean, validate = true): void {\r\n if (control) {\r\n // && control instanceof FormControl\r\n switch (control.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (val && control.controlAttr.zoomMultiple) {\r\n if (control.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} / ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (control.controlAttr.zoomType === ZoomType.narrow.code) {\r\n val = this.mathjs.format(this.mathjs.evaluate(`${val} * ${control.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (val != undefined) {\r\n control.value = val;\r\n } else {\r\n control.value = \"\";\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.isMultipleChoice) {\r\n if (!val) {\r\n val = [];\r\n } else if (typeof val === \"string\") {\r\n val = val.split(\",\");\r\n }\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n case FormFieldType.Cascader.code:\r\n if (val) {\r\n val = val.split(\",\");\r\n } else {\r\n val = [];\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (control.controlAttr.onOpeningValue) {\r\n val = val === true || val === control.controlAttr.onOpeningValue;\r\n } else if (control.controlAttr.whenClosedValue) {\r\n val = !(val === false || val === control.controlAttr.whenClosedValue);\r\n }\r\n control.value = val;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(new Date(this.nowDateStr() + \" \" + val));\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (val) {\r\n if (typeof val === \"string\") {\r\n val = dayjs(val, control.dateFormat);\r\n } else if (val instanceof Date) {\r\n val = dayjs(val);\r\n }\r\n control.value = val;\r\n } else {\r\n control.value = null;\r\n }\r\n break;\r\n default: {\r\n control.value = val;\r\n }\r\n }\r\n if (isDefault) {\r\n this.setAttribute(key, Attribute.FieldDefaultValue, JSON.stringify(control.value));\r\n }\r\n if (validate) {\r\n control[\"refreshValidate\"] = new Date().getTime();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件可选项\r\n * @author ChenRui\r\n * @date 2021/4/13 15:09\r\n */\r\n private setControlOptions(control: AbstractControl, key: string, data: any[], defaultVal?: any): void {\r\n if (control && control.controlAttr) {\r\n //control && control instanceof FormControl && control.controlAttr)\r\n storageOptions(control.controlAttr, data);\r\n this.setAttribute(key, Attribute.IsOptionType, OptionType.Fixed.code);\r\n this.setAttribute(key, Attribute.OptionConfig, data);\r\n }\r\n if (defaultVal) {\r\n this.setValue(key, defaultVal, true);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置控件常规属性\r\n * @author ChenRui\r\n * @date 2021/4/13 15:11\r\n */\r\n private setControlAttribute(control: AbstractControl, attribute: Attribute, data: any): void {\r\n if (control && attribute) {\r\n //control && control instanceof FormControl && attribute\r\n control.controlAttr[attribute] = data;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 设置校验内部函数\r\n * @author ChenRui\r\n * @date 2021/7/19 17:51\r\n */\r\n private setValidateInner(control: AbstractControl, validate: Validate | Validate[] | Rule, isCover = false): void {\r\n if (validate != null && (validate as Rule).ruleType) {\r\n validate = validateGeneratorService.getBuiltInValidationRules(validate as Rule, control.controlAttr) as any;\r\n }\r\n if (validate != null) {\r\n if (isCover) {\r\n control.validates = [];\r\n }\r\n control.addValidate(validate);\r\n }\r\n }\r\n\r\n /**\r\n * @description: 生成数据信息\r\n * @author ChenRui\r\n * @date 2021/1/29 10:06\r\n */\r\n private generateData(abstractControl: AbstractControl, obj: any = {}): any {\r\n if (abstractControl instanceof FormGroup) {\r\n const formGroup: FormGroup = abstractControl as FormGroup;\r\n for (const propName of Object.keys(formGroup.controls)) {\r\n if (formGroup.controls[propName] instanceof FormGroup) {\r\n obj[propName] = this.generateData(formGroup.controls[propName], obj[propName]);\r\n } else if (formGroup.controls[propName] instanceof FormControl) {\r\n obj[propName] = this.decodeData(formGroup.controls[propName] as FormControl);\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 数据解码输出\r\n * @author ChenRui\r\n * @date 2021/5/29 23:03\r\n */\r\n private decodeData(formControl: FormControl, isFinal = true): any {\r\n let data = formControl.value || \"\";\r\n switch (formControl.code) {\r\n case FormFieldType.InputNumber.code:\r\n if (data && formControl.controlAttr.zoomMultiple) {\r\n if (formControl.controlAttr.zoomType === ZoomType.enlarge.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.narrow.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} / ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n } else if (formControl.controlAttr.zoomType === ZoomType.automatic.code) {\r\n data = this.mathjs.format(this.mathjs.evaluate(`${data} * ${formControl.controlAttr.zoomMultiple}`), { notation: \"fixed\" });\r\n }\r\n }\r\n if (formControl.value === 0) {\r\n data = 0;\r\n }\r\n break;\r\n case FormFieldType.Select.code:\r\n if (formControl.controlAttr.isMultipleChoice && data && Array.isArray(data)) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (data && isFinal) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.timeFormat || \"LTS\");\r\n }\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n if (data) {\r\n data = dayjs(data).format(formControl.controlAttr.dateFormat || \"YYYY-MM-DD\");\r\n }\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (data) {\r\n data = data.join(\",\");\r\n }\r\n break;\r\n case FormFieldType.Switch.code:\r\n data = !!data;\r\n if (formControl.controlAttr) {\r\n if (data === true && formControl.controlAttr.onOpeningValue != undefined && formControl.controlAttr.onOpeningValue !== \"\") {\r\n data = formControl.controlAttr.onOpeningValue;\r\n } else if (data === false && formControl.controlAttr.whenClosedValue != undefined && formControl.controlAttr.whenClosedValue !== \"\") {\r\n data = formControl.controlAttr.whenClosedValue;\r\n }\r\n }\r\n break;\r\n case FormFieldType.Custom.code:\r\n if (formControl.controlAttr && formControl.controlAttr.customFieldName) {\r\n const customFormat: CustomFormat = this.dvForm.customFormats[formControl.controlAttr.customFieldName];\r\n if (customFormat && customFormat.output) {\r\n data = customFormat.output(data, formControl.controlAttr);\r\n }\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n /**\r\n * @description: 获取当前日期字符串\r\n * @author ChenRui\r\n * @date 2021/2/4 11:43\r\n */\r\n private nowDateStr(): string {\r\n const time = new Date();\r\n const day = (\"0\" + time.getDate()).slice(-2);\r\n const month = (\"0\" + (time.getMonth() + 1)).slice(-2);\r\n return time.getFullYear() + \"/\" + month + \"/\" + day;\r\n }\r\n\r\n /**\r\n * @description: uuid生成器\r\n * @author ChenRui\r\n * @date 2021/7/20 11:14\r\n */\r\n private getUuid(): string {\r\n const s: any[] = [];\r\n const hexDigits = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\r\n for (let i = 0; i < 36; i++) {\r\n s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);\r\n }\r\n s[14] = \"4\";\r\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\r\n s[8] = s[13] = s[18] = s[23] = \"-\";\r\n const uuid = s.join(\"\");\r\n return uuid;\r\n }\r\n\r\n /**\r\n * @Description: 对比新旧表单值\r\n * @author lzs\r\n * @date 2022/9/3\r\n * @time 21:49\r\n */\r\n private contrast(objectA: any, objectB: any): any {\r\n const object: any = {};\r\n const data: any = {};\r\n const fieldInfoArr: any = [];\r\n if (!objectB || !objectA) {\r\n object.changeLog = \"必传参数不存在\";\r\n return object;\r\n }\r\n const handlerFlag = objectA.handlerFlag;\r\n // console.log(\"======\", this.dvForm.desForm.formGroup.controls);\r\n for (const key in this.dvForm.desForm.formGroup.controls) {\r\n if (!objectA[key] && !objectB[key]) {\r\n continue;\r\n }\r\n const control: AbstractControl = this.getControl(key);\r\n if (!control) {\r\n continue;\r\n }\r\n if (this.getChangedInfo(control, objectA[key], objectB[key])) {\r\n let oldValue = objectA[key]; // 记录新值\r\n const newValue = objectB[key]; // 记录旧值\r\n const fieldInfo: any = {}; //日志信息\r\n if (control.code !== FormFieldType.Custom.code) {\r\n fieldInfo.field_cd = key; //字段英文\r\n const name = control.controlAttr.formFieldDescribe;\r\n fieldInfo.field_nm = name; //字段中文\r\n fieldInfo.field_key = newValue; //当前值\r\n\r\n const newDict = this.translateDictionaries(control, key, newValue); // 新值描述\r\n fieldInfo.field_value = newDict; //当前值描述\r\n\r\n fieldInfo.is_change = \"1\"; //是否变动\r\n\r\n fieldInfo.field_old_key = oldValue; //旧值\r\n const oldDict = this.translateDictionaries(control, key, oldValue); //旧值描述\r\n fieldInfo.field_old_value = oldDict; //field_old_value\r\n object[key] = newValue;\r\n\r\n fieldInfoArr.push(fieldInfo);\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n oldValue = \"\";\r\n }\r\n const oldName = oldValue ? oldDict : \"空\";\r\n const newName = newValue ? newDict : \"空\";\r\n //除自定义组件均记录日志\r\n object.changeLog = object.changeLog ? object.changeLog + \",\" : \"\";\r\n if (handlerFlag === \"add\") {\r\n object.changeLog = object.changeLog + \"新增【\" + name + \"】\" + \"为“\" + newName + \"”\";\r\n } else {\r\n object.changeLog = object.changeLog + \"修改【\" + name + \"】\" + \"由“\" + oldName + \"”修改为“\" + newName + \"”\";\r\n }\r\n } else {\r\n object[key] = newValue;\r\n }\r\n }\r\n }\r\n object.fieldInfoArr = fieldInfoArr;\r\n return object;\r\n }\r\n /**\r\n * @Description: 获取表单值更改信息\r\n * @author lzs\r\n * @date 2022/10/11\r\n * @time 09:53\r\n */\r\n getChangedInfo(control: any, oldValue: any, newValue: any): boolean {\r\n oldValue = oldValue + \"\";\r\n newValue = newValue + \"\";\r\n if (oldValue === \"null\" || oldValue === \"undefined\") {\r\n return true;\r\n }\r\n let flag = true;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Textarea.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Slider.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Rate.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Select.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n oldValue = dateFormat.formatDateTime(oldValue, \"YYYY-MM-dd\");\r\n newValue = dateFormat.formatDateTime(newValue, \"YYYY-MM-dd\");\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Cascader.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Switch.code:\r\n if (oldValue === newValue) flag = false;\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n }\r\n return flag;\r\n }\r\n /**\r\n * @Description: 翻译字典项\r\n * @author lzs\r\n * @date 2022/9/6\r\n * @time 11:54\r\n */\r\n translateDictionaries(control: any, key: any, value: any): string {\r\n let str = value;\r\n switch (control.code) {\r\n case FormFieldType.Input.code:\r\n break;\r\n case FormFieldType.InputNumber.code:\r\n break;\r\n case FormFieldType.Textarea.code:\r\n break;\r\n case FormFieldType.Slider.code:\r\n break;\r\n case FormFieldType.Rate.code:\r\n break;\r\n case FormFieldType.Select.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.Checkbox.code:\r\n str = \"\";\r\n if (value) {\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n }\r\n str = str.substring(0, str.length - 1);\r\n }\r\n break;\r\n case FormFieldType.Radio.code:\r\n if (control.controlAttr.generalDictionaryOptions) {\r\n control.controlAttr.generalDictionaryOptions.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n } else {\r\n control.controlAttr.optionConfig.forEach((item: any) => {\r\n if (item.value === value) {\r\n str = item.title;\r\n }\r\n });\r\n }\r\n break;\r\n case FormFieldType.TimePicker.code:\r\n break;\r\n case FormFieldType.DatePicker.code:\r\n str = dateFormat.formatDateTime(value, \"YYYY-MM-dd\");\r\n break;\r\n case FormFieldType.Cascader.code:\r\n str = \"\";\r\n if (value) {\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n value.split(\",\").forEach((index: any) => {\r\n if (item.value === index) {\r\n str = str + item.title + \",\";\r\n }\r\n });\r\n });\r\n str = str.substring(0, str.length - 1);\r\n } else {\r\n str = \"\";\r\n }\r\n break;\r\n case FormFieldType.TreeSelect.code:\r\n str = \"\";\r\n formTreeNodeConvertService.treeNodeConvertToArray(control.controlAttr.treeShapeOptions, [], \"children\").forEach((item: any) => {\r\n if (item.value === value) {\r\n str = str + item.title;\r\n }\r\n });\r\n break;\r\n case FormFieldType.Switch.code:\r\n str = value ? \"开\" : \"关\";\r\n break;\r\n case FormFieldType.Custom.code:\r\n break;\r\n default:\r\n str = value;\r\n break;\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * @Description 根据报送类型返回需要隐藏的表单字段\r\n * @Author JiangTao\r\n * @Date 2024-01-30 上午 09:33\r\n */\r\n getFormSubmittedType(form: any, code: any) {\r\n const strArr = code && code.length > 0 ? code : [];\r\n const list: any = this.dvForm.desForm.controls[0].subControls;\r\n const subControlsList: any = formToolsService.loadResource(this.dvForm.desForm.formId).controls[0].subControls;\r\n const submittedTypeList: any = [];\r\n if (strArr.length > 0) {\r\n // 遍历组件实例\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(item.formControl.key, Attribute.IsHideControl)) {\r\n // 处理普通表单控件\r\n submittedTypeList.push(item.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, item);\r\n }\r\n } else if (item.subControls) {\r\n // 处理栅格中表单控件\r\n // 遍历栅格中控件\r\n item.subControls.forEach((control: any, num: any) => {\r\n // 校验当前字段是否已隐藏,已隐藏的字段不做处理\r\n if (!form.getAttribute(control.formControl.key, Attribute.IsHideControl)) {\r\n submittedTypeList.push(control.formControl.key);\r\n // 初始化字段是否隐藏属性\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n // 筛选报送类型字段数据处理\r\n this.handleSubmittedData(submittedTypeList, strArr, control);\r\n }\r\n });\r\n }\r\n });\r\n // 隐藏无需展示的表单字段\r\n submittedTypeList.forEach((item: any) => {\r\n form.setAttribute(item, Attribute.IsHideControl, true);\r\n });\r\n } else {\r\n // 默认展示全部字段\r\n list.forEach((item: any, index: any) => {\r\n if (item.formControl) {\r\n form.setAttribute(item.formControl.key, Attribute.IsHideControl, subControlsList[index].controlAttr.isHideControl);\r\n } else if (item.subControls) {\r\n item.subControls.forEach((control: any, num: any) => {\r\n form.setAttribute(control.formControl.key, Attribute.IsHideControl, subControlsList[index].subControls[num].controlAttr.isHideControl);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @Description 筛选报送类型字段数据处理\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 08:50\r\n */\r\n private handleSubmittedData(submittedTypeList: any, codeArr: any, submittedData: any): void {\r\n let submittedType: any = [];\r\n if (JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType !== \"\") {\r\n // 获取字段报送类型\r\n submittedType = JSON.parse(submittedData.formControl.controlAttr.busAttr).submittedType.split(\",\");\r\n // 遍历查询报送类型\r\n for (let i = 0; i < codeArr.length; i++) {\r\n // 判断是否为查询的报送类型字段\r\n if (submittedType.filter((type: any) => type === codeArr[i]).length > 0 && submittedTypeList.indexOf(submittedData.formControl.key) >= 0) {\r\n submittedTypeList.splice(submittedTypeList.indexOf(submittedData.formControl.key), 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @Description 获取报送类型枚举(数组)\r\n * @Author JiangTao\r\n * @Date 2024-01-30 下午 03:30\r\n */\r\n getSubmittedType() {\r\n const list: any = [];\r\n Object.values(SubmittedType).forEach((item: any) => {\r\n list.push({\r\n value: item.code,\r\n label: item.name,\r\n });\r\n });\r\n return list;\r\n }\r\n}\r\n","\r\nimport DvFormLayout from \"./DvFormLayout.vue\";\r\nimport { Options, Prop, Provide, Watch, Vue } from \"vue-property-decorator\";\r\nimport { DesForm } from \"@/domain\";\r\nimport { FormFieldClass, DynamicOptionType, OptionType, ValidateRules } from \"@/constants\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { Control } from \"@/domain\";\r\nimport { DesFormControl } from \"@/domain\";\r\nimport { FormGroup } from \"@/domain\";\r\nimport { FormControl } from \"@/domain\";\r\nimport { formBeanUtilsService } from \"@/services\";\r\nimport { FormApi } from \"@/core\";\r\nimport { FormFieldType } from \"@/constants\";\r\nimport { ProvideInjectData } from \"@/domain/ProvideInjectData\";\r\nimport { validateGeneratorService } from \"@/services\";\r\nimport { CustomFormat, FieldChangeHistory } from \"../../domain\";\r\nimport { extractOptions } from \"@/filtres/extract-options.filter\";\r\n// import { DynamicOptionType, OptionType } from \"../../constants/enum\";\r\nimport { NzTreeNodeOptions } from \"@/services\";\r\n\r\nexport type NfFormMode = \"manual\" | \"auto\";\r\n\r\nexport type NfStyleMode = \"default\" | \"trust\" | \"credit-rd\";\r\n\r\nexport type NfFormTheme = \"default\" | \"gray\";\r\n/**\r\n * @description: 动态表单\r\n * @author ChenRui\r\n * @date 2020/12/30 11:20\r\n */\r\n@Options({\r\n name: \"DyForm\",\r\n components: {\r\n DvFormLayout: DvFormLayout,\r\n },\r\n})\r\nexport default class DyForm extends Vue {\r\n @Prop() formId: string | undefined;\r\n @Prop() mode: NfFormMode | undefined;\r\n @Prop({ type: String, default: \"default\" }) styleMode!: NfStyleMode;\r\n @Prop() srcDesForm: DesForm | undefined;\r\n @Prop({ default: false, type: Boolean }) edit!: boolean;\r\n @Prop({ default: false, type: Boolean }) colon!: boolean;\r\n @Prop({ default: \"130px\", type: String }) labelSpan!: string;\r\n @Prop({ default: undefined }) controlSpan!: any;\r\n @Prop({ type: Object }) formApi: FormApi | undefined;\r\n @Prop({ type: Array }) history: FieldChangeHistory | undefined;\r\n @Prop({ type: Object, default: () => ({}) }) customFormats!: {\r\n [key: string]: CustomFormat;\r\n };\r\n @Prop() refreshArguments: any; // 刷新自变量\r\n @Prop({ default: false }) widthCompatibleMode!: boolean; // 宽度计算模式\r\n @Prop({ type: String }) formTheme!: NfFormTheme; // 表单主题\r\n @Prop({ type: Array }) linkList: any | undefined; // 需要添加超链接点击事件数组 例:['cifNo', 'prodBaseNo']\r\n @Prop({ type: Array }) formLimits!: any[]; // 表单权限\r\n\r\n private metaRefresh: any = new Date().getTime(); // 刷新标识\r\n private refreshCheckFeedbackFlag = new Date().getTime(); // 刷新校验标识\r\n private sysDictDetailOptions: NzTreeNodeOptions[] = []; // 常规字典\r\n private sysDictTreeDetailOptions: NzTreeNodeOptions[] = []; // 树形字典\r\n private formValidateStateResetMark: any = new Date().getTime(); // 重置校验标识\r\n\r\n desForm: DesForm = new DesForm();\r\n\r\n @Provide() provideInjectData: ProvideInjectData = {\r\n edit: (this.$props as any).edit,\r\n labelSpan: (this.$props as any).labelSpan,\r\n controlSpan: (this.$props as any).controlSpan,\r\n colon: (this.$props as any).colon,\r\n metaRefresh: this.metaRefresh,\r\n refreshCheckFeedbackFlag: this.refreshCheckFeedbackFlag,\r\n widthCompatibleMode: (this.$props as any).widthCompatibleMode,\r\n formValidateStateResetMark: this.formValidateStateResetMark,\r\n };\r\n\r\n /**\r\n * @description: 刷新自变量监听处理\r\n * @author ChenRui\r\n * @date 2021/2/5 10:25\r\n */\r\n @Watch(\"refreshArguments\", { immediate: true })\r\n onRefreshArgumentsHandler(newVal: any): void {\r\n this.metaRefresh = newVal;\r\n }\r\n\r\n /**\r\n * @description: 重置表单校验状态监听\r\n * @author ChenRui\r\n * @date 2022/4/6 14:17\r\n */\r\n @Watch(\"formValidateStateResetMark\")\r\n onPropFormValidateStateResetHandler(): void {\r\n if ((this as any)._provided) {\r\n ((this as any)._provided as any).provideInjectData.formValidateStateResetMark = this.formValidateStateResetMark;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 值变更处理器\r\n * @author ChenRui\r\n * @date 2021/1/8 11:03\r\n */\r\n @Watch(\"edit\")\r\n @Watch(\"labelSpan\")\r\n @Watch(\"controlSpan\")\r\n @Watch(\"metaRefresh\")\r\n @Watch(\"refreshCheckFeedbackFlag\")\r\n @Watch(\"widthCompatibleMode\")\r\n onPropHandler(): void {\r\n if (this) {\r\n this.provideInjectData.edit = this.edit;\r\n this.provideInjectData.labelSpan = this.labelSpan;\r\n this.provideInjectData.controlSpan = this.controlSpan;\r\n this.provideInjectData.metaRefresh = this.metaRefresh;\r\n this.provideInjectData.refreshCheckFeedbackFlag = this.refreshCheckFeedbackFlag;\r\n this.provideInjectData.widthCompatibleMode = this.widthCompatibleMode;\r\n }\r\n }\r\n\r\n get loFormTheme(): string {\r\n const win: any = window;\r\n // 默认, 灰度, 某北某方,label换行\r\n const themes = [\"default\", \"gray\", \"nitic\", \"labelWrap\"];\r\n const formTheme = themes.indexOf(this.formTheme) > -1 ? this.formTheme : win.$loFormTheme;\r\n return themes.indexOf(formTheme) > -1 ? formTheme : themes[0];\r\n }\r\n\r\n get loFormLimit(): any {\r\n const formLimitObj: any = {};\r\n this.formLimits?.forEach((item: any) => {\r\n formLimitObj[item.id] = item;\r\n });\r\n return formLimitObj;\r\n }\r\n\r\n /**\r\n * @Description 表单数据反显回调(data:Object { key: 元素码值, value: 元素值 })\r\n * @Author JiangTao\r\n * @Date 2023-10-07 下午 05:16\r\n */\r\n linkClick(data: any) {\r\n this.$emit(\"linkClick\", data);\r\n }\r\n\r\n created() {\r\n this.initDict();\r\n }\r\n\r\n mounted() {\r\n if (this.formId) {\r\n this.initDesForm();\r\n } else if (this.desForm) {\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n @Watch(\"formId\")\r\n private onFormIdChanged() {\r\n this.initDesForm();\r\n }\r\n\r\n @Watch(\"srcDesForm\", { immediate: true })\r\n private onSrcDesFormChanged(newVal: DesForm) {\r\n if (newVal != null) {\r\n this.desForm = formBeanUtilsService.copy(newVal);\r\n this.formatDesForm();\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化表单\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initDesForm(): void {\r\n if (this.formId != null && this.formId !== \"\") {\r\n formToolsService.initResource(this.formId).then((form: any) => {\r\n this.desForm = form;\r\n this.formatDesForm();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description: 初始化字典\r\n * @author ChenRui\r\n * @date 2021/3/12 10:12\r\n */\r\n private initDict(): void {\r\n this.sysDictDetailOptions = formToolsService.sysDictDetailOptions;\r\n this.sysDictTreeDetailOptions = formToolsService.sysDictTreeDetailOptions;\r\n }\r\n\r\n /**\r\n * @description: 格式化表单\r\n * @author ChenRui\r\n * @date 2020/11/30 16:05\r\n */\r\n private formatDesForm(isReset?: boolean): void {\r\n if (this.desForm != null && this.desForm.controls != null && this.desForm.controls.length > 0) {\r\n const model = this.analysisBindingObjects();\r\n this.desForm.formGroup = this.generateFormGroup(model);\r\n this.initControlForm(this.desForm.controls, this.desForm.formGroup);\r\n this.generateFormApi(isReset);\r\n if (this.history != null) {\r\n this.formApi?.setFieldChangeHistory(this.history);\r\n }\r\n this.$emit(\"complete\");\r\n }\r\n }\r\n /**\r\n * @Description: 临时-该方法被取消\r\n * @author LiuBo\r\n * @date 2022/11/6\r\n * @time 17:11\r\n */\r\n private fixFormLayout() {\r\n this.$nextTick(() => {\r\n console.log(\"自动修改表单宽度\");\r\n try {\r\n const formView: any = this.$refs.formView;\r\n const cons = formView.getElementsByClassName(\"lo-control-container\");\r\n const len = cons.length;\r\n for (let i = 0; i < len - 1; i++) {\r\n if (cons[i].offsetLeft === cons[i + 1].offsetLeft && cons[i].clientWidth < cons[i + 1].clientWidth) {\r\n cons[i].style.width = \"200%\";\r\n } else {\r\n cons[i].style.width = \"100%\";\r\n }\r\n }\r\n if (len > 2) {\r\n const con1 = cons[len - 1];\r\n const con2 = cons[len - 2];\r\n if (con1.clientWidth === con2.clientWidth && con1.offsetLeft !== con2.offsetLeft) {\r\n con1.style.width = \"200%\";\r\n } else {\r\n con1.style.width = \"100%\";\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"自动修改表单宽度错误\" + e);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2021/1/7 20:48\r\n */\r\n private generateFormApi(isReset?: boolean): void {\r\n if (isReset) {\r\n const formApi: FormApi = new FormApi(this.formApi);\r\n formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", formApi);\r\n } else {\r\n if (this.formApi) {\r\n this.formApi.dvForm = this;\r\n this.$emit(\"update:formApi\", this.formApi);\r\n } else {\r\n const formApi = new FormApi({ dvForm: this });\r\n this.$emit(\"update:formApi\", formApi);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 解析对象\r\n * @author ChenRui\r\n * @date 2020/11/25 16:25\r\n */\r\n private analysisBindingObjects(): any {\r\n const models: any[] = this.objectExtraction(this.desForm!.controls);\r\n let obj: any = {};\r\n if (models != null && models.length > 0) {\r\n models.forEach((item) => {\r\n if (Object.keys(item).length > 0) {\r\n obj = this.objectMerge(obj, item[Object.keys(item)[0]]);\r\n }\r\n });\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * @description: 对象抽取\r\n * @author ChenRui\r\n * @date 2020/11/25 17:28\r\n */\r\n private objectExtraction(controls: Control[], models: any[] = []): any {\r\n controls.forEach((item) => {\r\n if (item.type === FormFieldClass.Layout.code) {\r\n if (item.subControls != null && item.subControls.length > 0) {\r\n return this.objectExtraction(item.subControls, models);\r\n }\r\n } else {\r\n const desFormControl: DesFormControl = item?.controlAttr as DesFormControl;\r\n const boundProperty: string = desFormControl.boundProperty;\r\n if (boundProperty) {\r\n /* 初始化字典项数据 */\r\n if (desFormControl.generalDictionary || desFormControl.treeShape) {\r\n if (desFormControl.isOptionType === OptionType.Dynamic.code) {\r\n if (desFormControl.dynamicOptionType === DynamicOptionType.GeneralDictionary.code) {\r\n desFormControl.generalDictionaryOptions = this.findDictOptions(desFormControl.generalDictionary, this.sysDictDetailOptions);\r\n } else if (desFormControl.dynamicOptionType === DynamicOptionType.TreeDictionary.code) {\r\n desFormControl.treeShapeOptions = this.findDictOptions(desFormControl.treeShape, this.sysDictTreeDetailOptions);\r\n }\r\n }\r\n }\r\n /*初始化默认值*/\r\n const propertys: string[] = boundProperty.split(\".\");\r\n let lastMd: any = {};\r\n const md = { lastMd };\r\n propertys.forEach((val, idx, array) => {\r\n if (idx < array.length - 1) {\r\n lastMd[val] = {};\r\n lastMd = lastMd[val];\r\n } else {\r\n const defaultValue: any = formBeanUtilsService.parse((item.controlAttr as DesFormControl).fieldDefaultValue) || \"\";\r\n lastMd[val] = this.securityValue(item, defaultValue);\r\n }\r\n });\r\n models.push(md.lastMd);\r\n }\r\n }\r\n });\r\n return models;\r\n }\r\n\r\n /**\r\n * @description: 查询字典\r\n * @author ChenRui\r\n * @date 2021/3/11 17:19\r\n */\r\n private findDictOptions(key: string, nzTreeNodeOptions: NzTreeNodeOptions[]): NzTreeNodeOptions[] {\r\n if (nzTreeNodeOptions != null && nzTreeNodeOptions.length > 0) {\r\n for (const item of nzTreeNodeOptions) {\r\n if (item.key === key) {\r\n (item.children || []).forEach((item) => {\r\n item.disabled = false;\r\n });\r\n return item.children || [];\r\n } else if (item.children && item.children.length > 0) {\r\n const subTtems: NzTreeNodeOptions[] = this.findDictOptions(key, item.children);\r\n if (subTtems != null && subTtems.length > 0) {\r\n return subTtems;\r\n }\r\n }\r\n }\r\n }\r\n return [];\r\n }\r\n\r\n /**\r\n * @description: 安全值处理\r\n * @author ChenRui\r\n * @date 2021/1/29 17:01\r\n */\r\n securityValue(control: Control, defaultValue: any): any {\r\n if (control.code === FormFieldType.DatePicker.code || control.code === FormFieldType.TimePicker.code) {\r\n if (defaultValue) {\r\n return defaultValue;\r\n } else {\r\n return null;\r\n }\r\n } else if (control.code === FormFieldType.TreeSelect.code) {\r\n const options = extractOptions(control.controlAttr);\r\n if (options && options.length > 0 && defaultValue) {\r\n defaultValue = this.treeSelectRecursion(defaultValue, options);\r\n }\r\n return defaultValue;\r\n } else if (control.code === FormFieldType.Upload.code) {\r\n return defaultValue || [];\r\n } else if (control.code === FormFieldType.Switch.code) {\r\n if (control.controlAttr && (control.controlAttr as DesFormControl).onOpeningValue) {\r\n return defaultValue === true || defaultValue === (control.controlAttr as DesFormControl).onOpeningValue ? true : false;\r\n } else if (control.controlAttr && (control.controlAttr as DesFormControl).whenClosedValue) {\r\n return defaultValue === false || defaultValue === (control.controlAttr as DesFormControl).whenClosedValue ? false : true;\r\n }\r\n return defaultValue;\r\n } else {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n /**\r\n * @description: 树形递归\r\n * @author ChenRui\r\n * @date 2021/1/11 0:23\r\n */\r\n treeSelectRecursion(value: any, items: any[]): any {\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].key === value) {\r\n return items[i].value;\r\n } else if (items[i].children && items[i].children.length > 0) {\r\n const subValue = this.treeSelectRecursion(value, items[i].children);\r\n if (subValue) {\r\n return subValue;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @description: 对象合并\r\n * @author ChenRui\r\n * @date 2020/11/25 17:49\r\n */\r\n private objectMerge(modelX: any, modelY: any): any {\r\n let key;\r\n for (key in modelY) {\r\n if (modelX[key] && modelX[key].toString() === \"[object Object]\" && modelY[key] && modelY[key].toString() === \"[object Object]\") {\r\n modelX[key] = this.objectMerge(modelX[key], modelY[key]);\r\n } else {\r\n modelX[key] = modelX[key] = modelY[key];\r\n }\r\n }\r\n return modelX;\r\n }\r\n\r\n /**\r\n * @description: 生成表单对象\r\n * @author ChenRui\r\n * @date 2020/11/26 11:02\r\n */\r\n private generateFormGroup(model: any): FormGroup {\r\n const group: FormGroup = new FormGroup();\r\n if (model != null) {\r\n Object.keys(model).forEach((key) => {\r\n if (Object.prototype.toString.call(model[key]) === \"[object Object]\") {\r\n const subFormGroup: FormGroup = this.generateFormGroup(model[key]);\r\n subFormGroup.key = key;\r\n group.addControl(key, subFormGroup);\r\n } else {\r\n const formControl: FormControl = new FormControl(model[key]);\r\n formControl.key = key;\r\n group.addControl(key, formControl);\r\n }\r\n });\r\n }\r\n return group;\r\n }\r\n\r\n /**\r\n * @description: 创建表单对象\r\n * @author ChenRui\r\n * @date 2020/11/23 11:19\r\n */\r\n private initControlForm(controls: Control[], formGroup: FormGroup): void {\r\n controls.forEach((control) => {\r\n if (control.type === FormFieldClass.Base.code || control.type === FormFieldClass.Senior.code) {\r\n const boundProperty: string = (control.controlAttr as DesFormControl)?.boundProperty;\r\n if (boundProperty) {\r\n const propertys: string[] = boundProperty.split(\".\");\r\n if (propertys.length > 1 && formGroup != null) {\r\n const formControl: FormControl = this.findFormControlByProperty(propertys.slice(1, propertys.length), formGroup);\r\n const controlAttr: DesFormControl = control.controlAttr as any;\r\n // console.log(\"接受到的表单权限信息\", this.loFormLimit);\r\n const property = propertys[propertys.length - 1];\r\n const formLimit = this.loFormLimit[property];\r\n if (formLimit) {\r\n controlAttr.isHideControl = formLimit.isHide === \"1\";\r\n controlAttr.isNotEdit = formLimit.isNotEdit === \"1\";\r\n const requiredIndex = controlAttr.verificationRules?.findIndex((item: any) => item.ruleType === ValidateRules.Required.code);\r\n if (formLimit.isMustFill == \"1\" && requiredIndex == -1) {\r\n // 添加必输校验\r\n controlAttr.verificationRules.push({ ruleType: ValidateRules.Required.code });\r\n } else if (formLimit.isMustFill != \"1\" && requiredIndex > -1) {\r\n // 移除必输校验\r\n controlAttr.verificationRules.splice(requiredIndex, 1);\r\n }\r\n }\r\n formControl.code = control.code;\r\n formControl.controlAttr = controlAttr;\r\n validateGeneratorService.fillCheckRule(formControl, controlAttr);\r\n control[\"formControl\"] = formControl;\r\n }\r\n }\r\n } else if (control.type === FormFieldClass.Layout.code && control.subControls != null && control.subControls.length > 0) {\r\n this.initControlForm(control.subControls, formGroup);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description: 按照节点查询控件\r\n * @author ChenRui\r\n * @date 2020/11/26 15:45\r\n */\r\n private findFormControlByProperty(propertys: string[], formGroup: FormGroup): FormControl | any {\r\n let currentFormGroup = formGroup;\r\n for (let i = 0; i < propertys.length; i++) {\r\n const formObject = currentFormGroup.get(propertys[i]);\r\n if (i < propertys.length - 1 && formObject != null && formObject instanceof FormGroup) {\r\n currentFormGroup = formObject;\r\n } else {\r\n return formObject;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description: 控件值变化事件处理\r\n * @author ChenRui\r\n * @date 2020/12/2 14:35\r\n */\r\n onChange(event: any): void {\r\n this.$emit(\"change\", event);\r\n }\r\n\r\n /**\r\n * @description: 下拉选项新增\r\n * @author ChenRui\r\n * @date 2021/1/14 20:05\r\n */\r\n selectAddItem(event: any): void {\r\n this.$emit(\"add-item\", event);\r\n }\r\n\r\n /**\r\n * @description: 单击事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:39\r\n */\r\n onClick(event: any): void {\r\n this.$emit(\"click\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置前置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:42\r\n */\r\n onAddonBeforeHandler(event: any): void {\r\n this.$emit(\"addon-before\", event);\r\n }\r\n\r\n /**\r\n * @description: 内置后置标签事件\r\n * @author ChenRui\r\n * @date 2021/4/23 9:43\r\n */\r\n onAddonAfterHandler(event: any): void {\r\n this.$emit(\"addon-after\", event);\r\n }\r\n\r\n /**\r\n * @description: 获取焦点\r\n * @author ChenRui\r\n * @date 2021/3/4 11:46\r\n */\r\n onFocus(event: Control): void {\r\n this.$emit(\"focus\", event);\r\n }\r\n\r\n /**\r\n * @description: 失焦事件\r\n * @author ChenRui\r\n * @date 2021/3/4 11:38\r\n */\r\n onBlur(event: Control): void {\r\n this.$emit(\"blur\", event);\r\n }\r\n}\r\n","import { render } from \"./DvForm.vue?vue&type=template&id=85b95a94&scoped=true&ts=true\"\nimport script from \"./DvForm.vue?vue&type=script&lang=ts\"\nexport * from \"./DvForm.vue?vue&type=script&lang=ts\"\n\nimport \"./DvForm.vue?vue&type=style&index=0&id=85b95a94&lang=scss&scoped=true\"\n\nimport exportComponent from \"E:\\\\base-frontend\\\\vue-lo3-form-cust\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-85b95a94\"]])\n\nexport default __exports__","import { App } from \"vue\";\r\nimport DyForm from \"./components/form/DvForm.vue\";\r\nimport { formToolsService } from \"@/services\";\r\nimport { DEFAULT_FORM_FILE_NAME } from \"./constants/config/form.config\";\r\nimport { formLocalForageService } from \"@/services\";\r\nimport { dictLocalForageService } from \"@/services\";\r\nimport { create, subtractDependencies, addDependencies, multiplyDependencies, divideDependencies, formatDependencies, evaluateDependencies, MathJsStatic } from \"mathjs\";\r\nimport { cleanLocalForageService } from \"@/services\";\r\n\r\nexport * from \"./components/index\";\r\nexport * from \"./constants/index\";\r\nexport * from \"./core/index\";\r\nexport * from \"./domain/index\";\r\nexport * from \"./services/index\";\r\nexport * from \"./store/index\";\r\nexport * from \"./types/vfForm\";\r\nimport \"./styles/index.scss\";\r\n\r\nimport \"dayjs/locale/zh-cn\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst components: any = {\r\n DyForm,\r\n};\r\n\r\nconst install: any = function (app: App, options: any) {\r\n if (install.installed) return;\r\n install.installed = true;\r\n // Modal.install(vue);\r\n Object.keys(components).forEach((key) => {\r\n app.component(key, components[key]);\r\n });\r\n dayjs.locale(\"zh-cn\");\r\n\r\n const url: string = options && options.url ? options.url : \"./resources/json/\" + DEFAULT_FORM_FILE_NAME;\r\n app.config.globalProperties.$qlForm = {\r\n url: url,\r\n contextPath: options.contextPath || \"/ms-loong\",\r\n dictUrl: options && options.dictUrl ? options.dictUrl : \"\",\r\n dictRestLoadMode: options && options.dictRestLoadMode ? options.dictRestLoadMode : \"GET\",\r\n dictRestLoadBody: options && options.dictRestLoadBody ? options.dictRestLoadBody : undefined,\r\n dictRestLoadHeaders: options && options.dictRestLoadHeaders ? options.dictRestLoadHeaders : undefined,\r\n dictRestLoadOnlyBody: options && options.dictRestLoadOnlyBody ? options.dictRestLoadOnlyBody : false,\r\n loadMode: options && options.loadMode ? options.loadMode : \"static\",\r\n appId: options && options.appId ? options.appId : \"\",\r\n onlySimpleLoadConfig: options && options.onlySimpleLoadConfig ? options.onlySimpleLoadConfig : false,\r\n urls: options?.urls,\r\n dictUrls: options?.dictUrls,\r\n };\r\n app.config.globalProperties.$formToolsService = formToolsService;\r\n (window as any).$app = app;\r\n cleanLocalForageService.init();\r\n formLocalForageService.init();\r\n dictLocalForageService.init();\r\n\r\n const mathjsDependencies: any = {\r\n formatDependencies,\r\n subtractDependencies,\r\n multiplyDependencies,\r\n evaluateDependencies,\r\n addDependencies,\r\n divideDependencies,\r\n };\r\n const mathjs: Partial<MathJsStatic> = create(mathjsDependencies, {\r\n number: \"BigNumber\",\r\n precision: 20,\r\n });\r\n app.config.globalProperties.$mathjs = mathjs;\r\n};\r\n\r\nconst VueLoForm = {\r\n install,\r\n};\r\nexport default VueLoForm;\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","const ZoomType = {\r\n enlarge: { code: \"1\", name: \"放大\" },\r\n narrow: { code: \"2\", name: \"缩小\" },\r\n automatic: { code: \"3\", name: \"自动\" },\r\n};\r\nexport { ZoomType };\r\n"],"sourceRoot":""}