vue2-client 1.16.28 → 1.16.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursorrules +19 -19
- package/.env.apply +19 -19
- package/.env.gaslink +19 -19
- package/.env.his +19 -19
- package/.env.liuli +20 -20
- package/.env.scada +19 -19
- package/.eslintrc.js +90 -90
- package/CHANGELOG.md +824 -824
- package/Components.md +60 -60
- package/docs/LowCode/lowcode.md +155 -155
- package/docs/LowCode/lowcodeForDeveloper.md +230 -230
- package/docs/index.md +30 -30
- package/index.js +31 -31
- package/jest-transform-stub.js +8 -8
- package/jest.setup.js +7 -7
- package/jsconfig.json +19 -19
- package/package.json +1 -1
- package/public/his/editor/editor.html +51 -51
- package/public/his/editor/mock/bind_data.html +779 -779
- package/public/his/editor/mock/data_table.html +40 -40
- package/public/his/editor/mock/sign.html +75 -75
- package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
- package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
- package/public/his/editor/vender/date97/WdatePicker.js +677 -677
- package/public/his/editor/vender/date97/calendar.js +4 -4
- package/public/his/editor/vender/date97/lang/en.js +13 -13
- package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
- package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
- package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
- package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
- package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
- package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
- package/public/his/editor/vender/diff.js +1627 -1627
- package/public/his/editor/vender/editor.js +1 -1
- package/public/his/editor/vender/fabric.js +31187 -31187
- package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
- package/public/his/editor/vender/jquery/jquery.js +10872 -10872
- package/public/his/editor/vender/jquery/jquery.print.js +255 -255
- package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
- package/public/his/editor/vender/mui/mui.min.css +4 -4
- package/public/his/editor/vender/mui/mui.min.js +5 -5
- package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
- package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
- package/public/his/editor/vender/qrcode.js +7 -7
- package/public/his/editor/vender/requirejs/require.js +2145 -2145
- package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
- package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
- package/public/his/editor/vender/signature/jSignature.js +1486 -1486
- package/public/his/editor/vender/validator.js +5094 -5094
- package/public/his/editor/vender/weui/weui.css +5659 -5659
- package/public/his/editor/vender/weui/weui.min.css +4 -4
- package/public/his/editor/vender/weui/weui.min.js +11 -11
- package/src/assets/img/querySlotDemo.svg +15 -15
- package/src/assets/svg/badtwo.svg +1 -1
- package/src/assets/svg/goodtwo.svg +1 -1
- package/src/base-client/components/AI/AskAiBtn.vue +136 -136
- package/src/base-client/components/AI/demo.vue +31 -31
- package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
- package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
- package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
- package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
- package/src/base-client/components/common/CitySelect/index.js +3 -3
- package/src/base-client/components/common/CitySelect/index.md +109 -109
- package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
- package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
- package/src/base-client/components/common/CreateQuery/index.js +3 -3
- package/src/base-client/components/common/CreateQuery/index.md +42 -42
- package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
- package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
- package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
- package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
- package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
- package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
- package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
- package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
- package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
- package/src/base-client/components/common/HIS/HForm/HForm.vue +1 -1
- package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
- package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
- package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
- package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
- package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
- package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
- package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
- package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
- package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
- package/src/base-client/components/common/PersonSetting/index.js +3 -3
- package/src/base-client/components/common/Recording/Recording.vue +243 -243
- package/src/base-client/components/common/Recording/index.js +3 -3
- package/src/base-client/components/common/Tree/Tree.vue +149 -149
- package/src/base-client/components/common/Tree/index.js +2 -2
- package/src/base-client/components/common/Upload/index.js +3 -3
- package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
- package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
- package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
- package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
- package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
- package/src/base-client/components/common/XAddReport/index.js +3 -3
- package/src/base-client/components/common/XAddReport/index.md +56 -56
- package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
- package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
- package/src/base-client/components/common/XButtons/index.js +3 -3
- package/src/base-client/components/common/XButtons/index.md +61 -61
- package/src/base-client/components/common/XCard/XCard.vue +64 -64
- package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
- package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
- package/src/base-client/components/common/XDataCard/index.js +3 -3
- package/src/base-client/components/common/XDataCard/index.md +1 -1
- package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
- package/src/base-client/components/common/XDataDrawer/index.js +3 -3
- package/src/base-client/components/common/XDataDrawer/index.md +41 -41
- package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
- package/src/base-client/components/common/XDescriptions/index.js +3 -3
- package/src/base-client/components/common/XDescriptions/index.md +83 -83
- package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
- package/src/base-client/components/common/XDetailsView/index.js +3 -3
- package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
- package/src/base-client/components/common/XForm/index.md +178 -178
- package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
- package/src/base-client/components/common/XFormGroup/index.js +3 -3
- package/src/base-client/components/common/XFormGroup/index.md +38 -38
- package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
- package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
- package/src/base-client/components/common/XFormTable/index.md +92 -92
- package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
- package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
- package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
- package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
- package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
- package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
- package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
- package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
- package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
- package/src/base-client/components/common/XPrint/index.vue +97 -97
- package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
- package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
- package/src/base-client/components/common/XReport/index.js +3 -3
- package/src/base-client/components/common/XReport/print.js +186 -186
- package/src/base-client/components/common/XReportDrawer/index.js +3 -3
- package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +8 -3
- package/src/base-client/components/common/XReportGrid/index.js +3 -3
- package/src/base-client/components/common/XReportGrid/index.md +44 -44
- package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
- package/src/base-client/components/common/XReportSlot/index.js +3 -3
- package/src/base-client/components/common/XReportSlot/index.md +48 -48
- package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
- package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
- package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
- package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
- package/src/base-client/components/common/XStepView/index.js +3 -3
- package/src/base-client/components/common/XStepView/index.md +31 -31
- package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
- package/src/base-client/components/common/XTab/index.js +3 -3
- package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
- package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
- package/src/base-client/components/common/XTable/index.md +255 -255
- package/src/base-client/components/common/XTagGroup/index.vue +52 -52
- package/src/base-client/components/common/XTree/XTree.vue +424 -424
- package/src/base-client/components/common/XTree/index.js +3 -3
- package/src/base-client/components/common/XTree/index.md +36 -36
- package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
- package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
- package/src/base-client/components/common/richTextModal/index.vue +56 -56
- package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
- package/src/base-client/components/his/XHisEditor/index.js +3 -3
- package/src/base-client/components/index.js +51 -51
- package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
- package/src/base-client/components/layout/XTreeView/index.js +3 -3
- package/src/base-client/components/layout/XTreeView/index.md +46 -46
- package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
- package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
- package/src/base-client/plugins/Config.js +19 -19
- package/src/base-client/plugins/GetLoginInfoService.js +183 -183
- package/src/base-client/plugins/Recording.js +258 -258
- package/src/base-client/plugins/index.js +23 -23
- package/src/base-client/plugins/tabs-page-plugin.js +39 -39
- package/src/components/Charts/Bar.vue +62 -62
- package/src/components/Charts/ChartCard.vue +134 -134
- package/src/components/Charts/Liquid.vue +67 -67
- package/src/components/Charts/MiniArea.vue +39 -39
- package/src/components/Charts/MiniBar.vue +39 -39
- package/src/components/Charts/MiniProgress.vue +75 -75
- package/src/components/Charts/MiniSmoothArea.vue +40 -40
- package/src/components/Charts/Radar.vue +68 -68
- package/src/components/Charts/RankList.vue +77 -77
- package/src/components/Charts/TagCloud.vue +113 -113
- package/src/components/Charts/TransferBar.vue +64 -64
- package/src/components/Charts/Trend.vue +82 -82
- package/src/components/Charts/chart.less +12 -12
- package/src/components/Charts/smooth.area.less +13 -13
- package/src/components/CodeMirror/inedx.vue +118 -118
- package/src/components/CodeMirror/setting.js +40 -40
- package/src/components/NumberInfo/NumberInfo.vue +54 -54
- package/src/components/NumberInfo/index.js +3 -3
- package/src/components/NumberInfo/index.less +54 -54
- package/src/components/NumberInfo/index.md +43 -43
- package/src/components/card/ChartCard.vue +79 -79
- package/src/components/chart/Bar.vue +60 -60
- package/src/components/chart/MiniArea.vue +67 -67
- package/src/components/chart/MiniBar.vue +59 -59
- package/src/components/chart/MiniProgress.vue +57 -57
- package/src/components/chart/Radar.vue +80 -80
- package/src/components/chart/RankingList.vue +60 -60
- package/src/components/chart/Trend.vue +79 -79
- package/src/components/chart/index.less +9 -9
- package/src/components/checkbox/ColorCheckbox.vue +157 -157
- package/src/components/checkbox/ImgCheckbox.vue +117 -117
- package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
- package/src/components/checkbox/index.js +9 -9
- package/src/components/exception/ExceptionPage.vue +70 -70
- package/src/components/g2Charts/constants.js +202 -202
- package/src/components/g2Charts/demo.vue +808 -808
- package/src/components/g2Charts/designer.vue +228 -228
- package/src/components/g2Charts/designerBaseConfig.vue +61 -61
- package/src/components/g2Charts/designerDataConfig.vue +259 -259
- package/src/components/g2Charts/designerStyleConfig.vue +16 -16
- package/src/components/g2Charts/index.vue +397 -397
- package/src/components/index.js +36 -36
- package/src/components/input/IInput.vue +66 -66
- package/src/components/menu/SideMenu.vue +75 -75
- package/src/components/menu/menu.js +273 -273
- package/src/components/setting/Setting.vue +234 -234
- package/src/components/tool/AStepItem.vue +60 -60
- package/src/config/CreateQueryConfig.js +325 -325
- package/src/config/default/antd.config.js +89 -89
- package/src/config/default/setting.config.js +55 -55
- package/src/font-style/font.css +60 -60
- package/src/layouts/CommonLayout.vue +56 -56
- package/src/layouts/PageLayout.vue +151 -151
- package/src/layouts/SinglePageView.vue +136 -136
- package/src/layouts/header/AdminHeader.vue +132 -132
- package/src/layouts/header/HeaderNotice.vue +177 -177
- package/src/layouts/header/InstitutionDetail.vue +181 -181
- package/src/layouts/tabs/TabsHead.vue +189 -189
- package/src/lib.js +1 -1
- package/src/mock/extend/index.js +84 -84
- package/src/mock/goods/index.js +108 -108
- package/src/pages/DefaultExample/index.vue +77 -77
- package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
- package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
- package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
- package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
- package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
- package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
- package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
- package/src/pages/DynamicStatistics/index.vue +282 -282
- package/src/pages/Example/childIndex.vue +15 -15
- package/src/pages/Example/index.vue +30 -30
- package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
- package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
- package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
- package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
- package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
- package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
- package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
- package/src/pages/NewDynamicStatistics/index.vue +258 -258
- package/src/pages/Recording/index.vue +77 -77
- package/src/pages/ServiceReview/index.vue +284 -284
- package/src/pages/SubExample/index.vue +26 -26
- package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
- package/src/pages/XReportView/index.vue +64 -64
- package/src/pages/XTreeOneProExample/index.vue +67 -67
- package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
- package/src/pages/login/Login.vue +379 -379
- package/src/pages/login/LoginV3.vue +389 -389
- package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
- package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
- package/src/pages/report/ReportTable.js +124 -124
- package/src/pages/resourceManage/orgListManage.vue +98 -98
- package/src/pages/system/dictionary/index.vue +44 -44
- package/src/pages/system/monitor/loginInfor/index.vue +37 -37
- package/src/pages/system/monitor/operLog/index.vue +37 -37
- package/src/pages/system/settings/modifyPassword.vue +117 -117
- package/src/pages/system/ticket/index.vue +480 -480
- package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
- package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
- package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
- package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
- package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
- package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
- package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
- package/src/plugins/EventLogPlugin.js +33 -33
- package/src/plugins/FindParentsData.js +17 -17
- package/src/router/async/config.async.js +35 -35
- package/src/router/index.js +27 -27
- package/src/services/DataModel.js +30 -30
- package/src/services/LodopFuncs.js +137 -137
- package/src/services/api/TicketDetailsViewApi.js +46 -46
- package/src/services/api/cas.js +79 -79
- package/src/services/api/common.js +350 -346
- package/src/services/api/entity.js +18 -18
- package/src/services/api/index.js +17 -17
- package/src/store/modules/account.js +115 -115
- package/src/store/modules/index.js +5 -5
- package/src/store/modules/lowCode.js +33 -33
- package/src/store/modules/setting.js +119 -119
- package/src/theme/default/style.less +58 -58
- package/src/utils/authority-utils.js +85 -85
- package/src/utils/errorCode.js +6 -6
- package/src/utils/formatter.js +74 -74
- package/src/utils/htmlToPDF.js +108 -108
- package/src/utils/htmlToPDFApi.js +5 -5
- package/src/utils/login.js +188 -188
- package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
- package/src/utils/lowcode/lowcodeLog.js +29 -29
- package/src/utils/lowcode/lowcodeUtils.js +373 -373
- package/src/utils/lowcode/registerComponentForEditor.js +1 -1
- package/src/utils/lowcode/registerComponentForRender.js +11 -11
- package/src/utils/map-utils.js +47 -47
- package/src/utils/reg.js +95 -95
- package/src/utils/runEvalFunction.js +14 -14
- package/src/utils/theme-color-replacer-extend.js +92 -92
- package/src/utils/util.js +329 -329
- package/src/utils/waterMark.js +31 -31
- package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
package/src/utils/util.js
CHANGED
@@ -1,329 +1,329 @@
|
|
1
|
-
import enquireJs from 'enquire.js'
|
2
|
-
import moment from 'moment/moment'
|
3
|
-
|
4
|
-
const timeList = [
|
5
|
-
{
|
6
|
-
CN: '早上好',
|
7
|
-
HK: '早晨啊',
|
8
|
-
US: 'Good morning'
|
9
|
-
}, {
|
10
|
-
CN: '上午好',
|
11
|
-
HK: '上午好',
|
12
|
-
US: 'Good morning'
|
13
|
-
}, {
|
14
|
-
CN: '中午好',
|
15
|
-
HK: '中午好',
|
16
|
-
US: 'Good afternoon'
|
17
|
-
}, {
|
18
|
-
CN: '下午好',
|
19
|
-
HK: '下午好',
|
20
|
-
US: 'Good afternoon'
|
21
|
-
}, {
|
22
|
-
CN: '晚上好',
|
23
|
-
HK: '晚上好',
|
24
|
-
US: 'Good evening'
|
25
|
-
}
|
26
|
-
]
|
27
|
-
/**
|
28
|
-
* 数组去空值
|
29
|
-
*/
|
30
|
-
export function arrRemoveEmpty (arr) {
|
31
|
-
for (let i = 0; i < arr.length; i++) {
|
32
|
-
if (arr[i] === '' || typeof (arr[i]) == 'undefined') {
|
33
|
-
arr.splice(i, 1)
|
34
|
-
i--
|
35
|
-
}
|
36
|
-
}
|
37
|
-
return arr
|
38
|
-
}
|
39
|
-
|
40
|
-
export function isDef (v) {
|
41
|
-
return v !== undefined && v !== null
|
42
|
-
}
|
43
|
-
|
44
|
-
export function formatDate (dateStr, fmt) {
|
45
|
-
if (dateStr == null) {
|
46
|
-
return '--'
|
47
|
-
}
|
48
|
-
let date
|
49
|
-
if (dateStr === 'now') {
|
50
|
-
date = new Date()
|
51
|
-
} else {
|
52
|
-
date = new Date(dateStr)
|
53
|
-
}
|
54
|
-
const o = {
|
55
|
-
'M+': date.getMonth() + 1,
|
56
|
-
'd+': date.getDate(),
|
57
|
-
'h+': date.getHours(),
|
58
|
-
'm+': date.getMinutes(),
|
59
|
-
's+': date.getSeconds(),
|
60
|
-
'q+': Math.floor((date.getMonth() + 3) / 3),
|
61
|
-
S: date.getMilliseconds()
|
62
|
-
}
|
63
|
-
if (!fmt) {
|
64
|
-
fmt = 'yyyy-MM-dd hh:mm:ss'
|
65
|
-
}
|
66
|
-
if (/(y+)/.test(fmt)) {
|
67
|
-
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
|
68
|
-
}
|
69
|
-
for (const k in o) {
|
70
|
-
if (new RegExp('(' + k + ')').test(fmt)) {
|
71
|
-
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
|
72
|
-
}
|
73
|
-
}
|
74
|
-
return fmt
|
75
|
-
}
|
76
|
-
|
77
|
-
export function uuid () {
|
78
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
79
|
-
const r = Math.random() * 16 | 0
|
80
|
-
const v = c === 'x' ? r : (r & 0x3 | 0x8)
|
81
|
-
return v.toString(16)
|
82
|
-
})
|
83
|
-
}
|
84
|
-
|
85
|
-
export function timeCompare (date1, date2) {
|
86
|
-
const date11 = new Date(date1)
|
87
|
-
const date22 = new Date(date2)
|
88
|
-
return date11.time > date22.time ? 1 : -1
|
89
|
-
}
|
90
|
-
|
91
|
-
export function timeFix () {
|
92
|
-
const time = new Date()
|
93
|
-
const hour = time.getHours()
|
94
|
-
return hour < 9
|
95
|
-
? timeList[0]
|
96
|
-
: (hour <= 11 ? timeList[1] : (hour <= 13 ? timeList[2] : (hour <= 20 ? timeList[3] : timeList[4])))
|
97
|
-
}
|
98
|
-
|
99
|
-
/**
|
100
|
-
* Remove an item from an array.
|
101
|
-
*/
|
102
|
-
export function remove (arr, item) {
|
103
|
-
if (arr.length) {
|
104
|
-
const index = arr.indexOf(item)
|
105
|
-
if (index > -1) {
|
106
|
-
return arr.splice(index, 1)
|
107
|
-
}
|
108
|
-
}
|
109
|
-
}
|
110
|
-
|
111
|
-
export function isRegExp (v) {
|
112
|
-
return _toString.call(v) === '[object RegExp]'
|
113
|
-
}
|
114
|
-
|
115
|
-
export function enquireScreen (call) {
|
116
|
-
const handler = {
|
117
|
-
match: function () {
|
118
|
-
call && call(true)
|
119
|
-
},
|
120
|
-
unmatch: function () {
|
121
|
-
call && call(false)
|
122
|
-
}
|
123
|
-
}
|
124
|
-
enquireJs.register('only screen and (max-width: 767.99px)', handler)
|
125
|
-
}
|
126
|
-
|
127
|
-
export function showXml (str) {
|
128
|
-
let text = str
|
129
|
-
|
130
|
-
// 去掉多余的空格
|
131
|
-
text = '\n' + text.replace(/(<\w+)(\s.*?>)/g, function ($0, name, props) {
|
132
|
-
return name + props.replace(/\s+(\w+=)/g, ' $1')
|
133
|
-
}).replace(/>\s*?</g, '>\n<')
|
134
|
-
|
135
|
-
// 把注释编码
|
136
|
-
text = text.replace(/\n/g, '\r').replace(/<!--(.+?)-->/g, function ($0, text) {
|
137
|
-
return '<!--' + escape(text) + '-->'
|
138
|
-
}).replace(/\r/g, '\n')
|
139
|
-
|
140
|
-
// 调整格式
|
141
|
-
const rgx = /\n(<(([^?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(\/)>|<(\/)\2>))?)/mg
|
142
|
-
const nodeStack = []
|
143
|
-
const output = text.replace(rgx, function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) {
|
144
|
-
const isClosed = (isCloseFull1 === '/') || (isCloseFull2 === '/') || (isFull1 === '/') || (isFull2 === '/')
|
145
|
-
let prefix
|
146
|
-
if (isBegin === '!') {
|
147
|
-
prefix = getPrefix(nodeStack.length)
|
148
|
-
} else {
|
149
|
-
if (isBegin !== '/') {
|
150
|
-
prefix = getPrefix(nodeStack.length)
|
151
|
-
if (!isClosed) {
|
152
|
-
nodeStack.push(name)
|
153
|
-
}
|
154
|
-
} else {
|
155
|
-
nodeStack.pop()
|
156
|
-
prefix = getPrefix(nodeStack.length)
|
157
|
-
}
|
158
|
-
}
|
159
|
-
return '\n' + prefix + all
|
160
|
-
})
|
161
|
-
let outputText = output.substring(1)
|
162
|
-
|
163
|
-
// 把注释还原并解码,调格式
|
164
|
-
outputText = outputText.replace(/\n/g, '\r').replace(/(\s*)<!--(.+?)-->/g, function ($0, prefix, text) {
|
165
|
-
if (prefix.charAt(0) === '\r') { prefix = prefix.substring(1) }
|
166
|
-
text = unescape(text).replace(/\r/g, '\n')
|
167
|
-
return '\n' + prefix + '<!--' + text.replace(/^\s*/mg, prefix) + '-->'
|
168
|
-
})
|
169
|
-
// alert(outputText);
|
170
|
-
|
171
|
-
outputText = outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n')
|
172
|
-
|
173
|
-
return outputText
|
174
|
-
}
|
175
|
-
|
176
|
-
function getPrefix (prefixIndex) {
|
177
|
-
const span = ' '
|
178
|
-
const output = []
|
179
|
-
for (let i = 0; i < prefixIndex; ++i) {
|
180
|
-
output.push(span)
|
181
|
-
}
|
182
|
-
|
183
|
-
return output.join('')
|
184
|
-
}
|
185
|
-
|
186
|
-
/**
|
187
|
-
* 构造树型结构数据
|
188
|
-
* [label,value,children]
|
189
|
-
*/
|
190
|
-
export function handleTree (data, id, parentId, children) {
|
191
|
-
const config = {
|
192
|
-
id: id || 'id',
|
193
|
-
parentId: parentId || 'parent_id',
|
194
|
-
childrenList: children || 'children'
|
195
|
-
}
|
196
|
-
const childrenListMap = {}
|
197
|
-
const nodeIds = {}
|
198
|
-
const tree = []
|
199
|
-
for (const d of data) {
|
200
|
-
const parentId = d[config.parentId]
|
201
|
-
if (childrenListMap[parentId] == null) {
|
202
|
-
childrenListMap[parentId] = []
|
203
|
-
}
|
204
|
-
nodeIds[d[config.id]] = d
|
205
|
-
childrenListMap[parentId].push(d)
|
206
|
-
}
|
207
|
-
for (const d of data) {
|
208
|
-
const parentId = d[config.parentId]
|
209
|
-
if (nodeIds[parentId] == null) {
|
210
|
-
tree.push(d)
|
211
|
-
}
|
212
|
-
}
|
213
|
-
for (const t of tree) {
|
214
|
-
adaptToChildrenList(t)
|
215
|
-
}
|
216
|
-
|
217
|
-
function adaptToChildrenList (o) {
|
218
|
-
o.label = o.name
|
219
|
-
o.value = o.name
|
220
|
-
if (childrenListMap[o[config.id]] !== null) {
|
221
|
-
o[config.childrenList] = childrenListMap[o[config.id]]
|
222
|
-
}
|
223
|
-
if (o[config.childrenList]) {
|
224
|
-
for (const c of o[config.childrenList]) {
|
225
|
-
adaptToChildrenList(c)
|
226
|
-
}
|
227
|
-
}
|
228
|
-
}
|
229
|
-
return tree
|
230
|
-
}
|
231
|
-
|
232
|
-
/**
|
233
|
-
* Function to get the changed data between two sets of rows *
|
234
|
-
* @param beforeData 之前的数据
|
235
|
-
* @param afterData 之后的数据
|
236
|
-
* @returns {*[]} 差异得数据
|
237
|
-
*/
|
238
|
-
export function getChangedData (beforeData, afterData) {
|
239
|
-
const changeData = []
|
240
|
-
|
241
|
-
beforeData.forEach((item, index) => {
|
242
|
-
const afterItem = afterData[index]
|
243
|
-
const changeItem = compareRows(item, afterItem)
|
244
|
-
|
245
|
-
if (Object.keys(changeItem).length > 0) {
|
246
|
-
changeData.push(afterItem)
|
247
|
-
}
|
248
|
-
})
|
249
|
-
|
250
|
-
return changeData
|
251
|
-
}
|
252
|
-
|
253
|
-
/**
|
254
|
-
* Function to compare two rows and return the changed fields
|
255
|
-
* @param beforeRow 之前的数据
|
256
|
-
* @param afterRow 之后的数据
|
257
|
-
* @returns {*[]} 差异得数据
|
258
|
-
*/
|
259
|
-
export function compareRows (beforeRow, afterRow) {
|
260
|
-
const keys = Object.keys(beforeRow)
|
261
|
-
const changeItem = {}
|
262
|
-
|
263
|
-
keys.forEach(key => {
|
264
|
-
if (beforeRow[key] !== afterRow[key]) {
|
265
|
-
changeItem[key] = afterRow[key]
|
266
|
-
}
|
267
|
-
})
|
268
|
-
|
269
|
-
return changeItem
|
270
|
-
}
|
271
|
-
|
272
|
-
export function getRealKeyData (data) {
|
273
|
-
return Object.keys(data).reduce((obj, key) => {
|
274
|
-
// 找到第一个下划线后面的部分
|
275
|
-
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
276
|
-
obj[realKey] = data[key] // 赋值
|
277
|
-
return obj
|
278
|
-
}, {})
|
279
|
-
}
|
280
|
-
|
281
|
-
export function setDataByRealKey (form, data) {
|
282
|
-
// 创建一个映射 realKey -> formKey
|
283
|
-
const realFormMap = {}
|
284
|
-
|
285
|
-
// 遍历 form,建立真实键名和 form 键的映射
|
286
|
-
Object.keys(form).forEach(key => {
|
287
|
-
// 提取第一个下划线后面的部分
|
288
|
-
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
289
|
-
realFormMap[realKey] = key // 存储映射关系
|
290
|
-
})
|
291
|
-
|
292
|
-
// 遍历 data,更新 form 中的值
|
293
|
-
Object.keys(data).forEach(key => {
|
294
|
-
// 提取第一个下划线后面的部分
|
295
|
-
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
296
|
-
if (realFormMap[realKey]) {
|
297
|
-
form[realFormMap[realKey]] = data[key] // 根据映射关系赋值
|
298
|
-
} else {
|
299
|
-
form[key] = data[key]
|
300
|
-
}
|
301
|
-
})
|
302
|
-
|
303
|
-
return form
|
304
|
-
}
|
305
|
-
|
306
|
-
const _toString = Object.prototype.toString
|
307
|
-
|
308
|
-
export function _moment (...args) {
|
309
|
-
return moment(...args)
|
310
|
-
}
|
311
|
-
|
312
|
-
export function base64ToFile (base64Data, filename = 'image.png') {
|
313
|
-
// 将 base64 转换为 blob
|
314
|
-
const arr = base64Data.split(',')
|
315
|
-
const mime = arr[0].match(/:(.*?);/)?.[1] || 'image/png'
|
316
|
-
const bstr = atob(arr[1])
|
317
|
-
let n = bstr.length
|
318
|
-
const u8arr = new Uint8Array(n)
|
319
|
-
|
320
|
-
while (n--) {
|
321
|
-
u8arr[n] = bstr.charCodeAt(n)
|
322
|
-
}
|
323
|
-
|
324
|
-
// 创建 Blob 对象
|
325
|
-
const blob = new Blob([u8arr], { type: mime })
|
326
|
-
|
327
|
-
// 创建 File 对象
|
328
|
-
return new File([blob], filename, { type: mime })
|
329
|
-
};
|
1
|
+
import enquireJs from 'enquire.js'
|
2
|
+
import moment from 'moment/moment'
|
3
|
+
|
4
|
+
const timeList = [
|
5
|
+
{
|
6
|
+
CN: '早上好',
|
7
|
+
HK: '早晨啊',
|
8
|
+
US: 'Good morning'
|
9
|
+
}, {
|
10
|
+
CN: '上午好',
|
11
|
+
HK: '上午好',
|
12
|
+
US: 'Good morning'
|
13
|
+
}, {
|
14
|
+
CN: '中午好',
|
15
|
+
HK: '中午好',
|
16
|
+
US: 'Good afternoon'
|
17
|
+
}, {
|
18
|
+
CN: '下午好',
|
19
|
+
HK: '下午好',
|
20
|
+
US: 'Good afternoon'
|
21
|
+
}, {
|
22
|
+
CN: '晚上好',
|
23
|
+
HK: '晚上好',
|
24
|
+
US: 'Good evening'
|
25
|
+
}
|
26
|
+
]
|
27
|
+
/**
|
28
|
+
* 数组去空值
|
29
|
+
*/
|
30
|
+
export function arrRemoveEmpty (arr) {
|
31
|
+
for (let i = 0; i < arr.length; i++) {
|
32
|
+
if (arr[i] === '' || typeof (arr[i]) == 'undefined') {
|
33
|
+
arr.splice(i, 1)
|
34
|
+
i--
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return arr
|
38
|
+
}
|
39
|
+
|
40
|
+
export function isDef (v) {
|
41
|
+
return v !== undefined && v !== null
|
42
|
+
}
|
43
|
+
|
44
|
+
export function formatDate (dateStr, fmt) {
|
45
|
+
if (dateStr == null) {
|
46
|
+
return '--'
|
47
|
+
}
|
48
|
+
let date
|
49
|
+
if (dateStr === 'now') {
|
50
|
+
date = new Date()
|
51
|
+
} else {
|
52
|
+
date = new Date(dateStr)
|
53
|
+
}
|
54
|
+
const o = {
|
55
|
+
'M+': date.getMonth() + 1,
|
56
|
+
'd+': date.getDate(),
|
57
|
+
'h+': date.getHours(),
|
58
|
+
'm+': date.getMinutes(),
|
59
|
+
's+': date.getSeconds(),
|
60
|
+
'q+': Math.floor((date.getMonth() + 3) / 3),
|
61
|
+
S: date.getMilliseconds()
|
62
|
+
}
|
63
|
+
if (!fmt) {
|
64
|
+
fmt = 'yyyy-MM-dd hh:mm:ss'
|
65
|
+
}
|
66
|
+
if (/(y+)/.test(fmt)) {
|
67
|
+
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
|
68
|
+
}
|
69
|
+
for (const k in o) {
|
70
|
+
if (new RegExp('(' + k + ')').test(fmt)) {
|
71
|
+
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
|
72
|
+
}
|
73
|
+
}
|
74
|
+
return fmt
|
75
|
+
}
|
76
|
+
|
77
|
+
export function uuid () {
|
78
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
79
|
+
const r = Math.random() * 16 | 0
|
80
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8)
|
81
|
+
return v.toString(16)
|
82
|
+
})
|
83
|
+
}
|
84
|
+
|
85
|
+
export function timeCompare (date1, date2) {
|
86
|
+
const date11 = new Date(date1)
|
87
|
+
const date22 = new Date(date2)
|
88
|
+
return date11.time > date22.time ? 1 : -1
|
89
|
+
}
|
90
|
+
|
91
|
+
export function timeFix () {
|
92
|
+
const time = new Date()
|
93
|
+
const hour = time.getHours()
|
94
|
+
return hour < 9
|
95
|
+
? timeList[0]
|
96
|
+
: (hour <= 11 ? timeList[1] : (hour <= 13 ? timeList[2] : (hour <= 20 ? timeList[3] : timeList[4])))
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Remove an item from an array.
|
101
|
+
*/
|
102
|
+
export function remove (arr, item) {
|
103
|
+
if (arr.length) {
|
104
|
+
const index = arr.indexOf(item)
|
105
|
+
if (index > -1) {
|
106
|
+
return arr.splice(index, 1)
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
export function isRegExp (v) {
|
112
|
+
return _toString.call(v) === '[object RegExp]'
|
113
|
+
}
|
114
|
+
|
115
|
+
export function enquireScreen (call) {
|
116
|
+
const handler = {
|
117
|
+
match: function () {
|
118
|
+
call && call(true)
|
119
|
+
},
|
120
|
+
unmatch: function () {
|
121
|
+
call && call(false)
|
122
|
+
}
|
123
|
+
}
|
124
|
+
enquireJs.register('only screen and (max-width: 767.99px)', handler)
|
125
|
+
}
|
126
|
+
|
127
|
+
export function showXml (str) {
|
128
|
+
let text = str
|
129
|
+
|
130
|
+
// 去掉多余的空格
|
131
|
+
text = '\n' + text.replace(/(<\w+)(\s.*?>)/g, function ($0, name, props) {
|
132
|
+
return name + props.replace(/\s+(\w+=)/g, ' $1')
|
133
|
+
}).replace(/>\s*?</g, '>\n<')
|
134
|
+
|
135
|
+
// 把注释编码
|
136
|
+
text = text.replace(/\n/g, '\r').replace(/<!--(.+?)-->/g, function ($0, text) {
|
137
|
+
return '<!--' + escape(text) + '-->'
|
138
|
+
}).replace(/\r/g, '\n')
|
139
|
+
|
140
|
+
// 调整格式
|
141
|
+
const rgx = /\n(<(([^?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(\/)>|<(\/)\2>))?)/mg
|
142
|
+
const nodeStack = []
|
143
|
+
const output = text.replace(rgx, function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) {
|
144
|
+
const isClosed = (isCloseFull1 === '/') || (isCloseFull2 === '/') || (isFull1 === '/') || (isFull2 === '/')
|
145
|
+
let prefix
|
146
|
+
if (isBegin === '!') {
|
147
|
+
prefix = getPrefix(nodeStack.length)
|
148
|
+
} else {
|
149
|
+
if (isBegin !== '/') {
|
150
|
+
prefix = getPrefix(nodeStack.length)
|
151
|
+
if (!isClosed) {
|
152
|
+
nodeStack.push(name)
|
153
|
+
}
|
154
|
+
} else {
|
155
|
+
nodeStack.pop()
|
156
|
+
prefix = getPrefix(nodeStack.length)
|
157
|
+
}
|
158
|
+
}
|
159
|
+
return '\n' + prefix + all
|
160
|
+
})
|
161
|
+
let outputText = output.substring(1)
|
162
|
+
|
163
|
+
// 把注释还原并解码,调格式
|
164
|
+
outputText = outputText.replace(/\n/g, '\r').replace(/(\s*)<!--(.+?)-->/g, function ($0, prefix, text) {
|
165
|
+
if (prefix.charAt(0) === '\r') { prefix = prefix.substring(1) }
|
166
|
+
text = unescape(text).replace(/\r/g, '\n')
|
167
|
+
return '\n' + prefix + '<!--' + text.replace(/^\s*/mg, prefix) + '-->'
|
168
|
+
})
|
169
|
+
// alert(outputText);
|
170
|
+
|
171
|
+
outputText = outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n')
|
172
|
+
|
173
|
+
return outputText
|
174
|
+
}
|
175
|
+
|
176
|
+
function getPrefix (prefixIndex) {
|
177
|
+
const span = ' '
|
178
|
+
const output = []
|
179
|
+
for (let i = 0; i < prefixIndex; ++i) {
|
180
|
+
output.push(span)
|
181
|
+
}
|
182
|
+
|
183
|
+
return output.join('')
|
184
|
+
}
|
185
|
+
|
186
|
+
/**
|
187
|
+
* 构造树型结构数据
|
188
|
+
* [label,value,children]
|
189
|
+
*/
|
190
|
+
export function handleTree (data, id, parentId, children) {
|
191
|
+
const config = {
|
192
|
+
id: id || 'id',
|
193
|
+
parentId: parentId || 'parent_id',
|
194
|
+
childrenList: children || 'children'
|
195
|
+
}
|
196
|
+
const childrenListMap = {}
|
197
|
+
const nodeIds = {}
|
198
|
+
const tree = []
|
199
|
+
for (const d of data) {
|
200
|
+
const parentId = d[config.parentId]
|
201
|
+
if (childrenListMap[parentId] == null) {
|
202
|
+
childrenListMap[parentId] = []
|
203
|
+
}
|
204
|
+
nodeIds[d[config.id]] = d
|
205
|
+
childrenListMap[parentId].push(d)
|
206
|
+
}
|
207
|
+
for (const d of data) {
|
208
|
+
const parentId = d[config.parentId]
|
209
|
+
if (nodeIds[parentId] == null) {
|
210
|
+
tree.push(d)
|
211
|
+
}
|
212
|
+
}
|
213
|
+
for (const t of tree) {
|
214
|
+
adaptToChildrenList(t)
|
215
|
+
}
|
216
|
+
|
217
|
+
function adaptToChildrenList (o) {
|
218
|
+
o.label = o.name
|
219
|
+
o.value = o.name
|
220
|
+
if (childrenListMap[o[config.id]] !== null) {
|
221
|
+
o[config.childrenList] = childrenListMap[o[config.id]]
|
222
|
+
}
|
223
|
+
if (o[config.childrenList]) {
|
224
|
+
for (const c of o[config.childrenList]) {
|
225
|
+
adaptToChildrenList(c)
|
226
|
+
}
|
227
|
+
}
|
228
|
+
}
|
229
|
+
return tree
|
230
|
+
}
|
231
|
+
|
232
|
+
/**
|
233
|
+
* Function to get the changed data between two sets of rows *
|
234
|
+
* @param beforeData 之前的数据
|
235
|
+
* @param afterData 之后的数据
|
236
|
+
* @returns {*[]} 差异得数据
|
237
|
+
*/
|
238
|
+
export function getChangedData (beforeData, afterData) {
|
239
|
+
const changeData = []
|
240
|
+
|
241
|
+
beforeData.forEach((item, index) => {
|
242
|
+
const afterItem = afterData[index]
|
243
|
+
const changeItem = compareRows(item, afterItem)
|
244
|
+
|
245
|
+
if (Object.keys(changeItem).length > 0) {
|
246
|
+
changeData.push(afterItem)
|
247
|
+
}
|
248
|
+
})
|
249
|
+
|
250
|
+
return changeData
|
251
|
+
}
|
252
|
+
|
253
|
+
/**
|
254
|
+
* Function to compare two rows and return the changed fields
|
255
|
+
* @param beforeRow 之前的数据
|
256
|
+
* @param afterRow 之后的数据
|
257
|
+
* @returns {*[]} 差异得数据
|
258
|
+
*/
|
259
|
+
export function compareRows (beforeRow, afterRow) {
|
260
|
+
const keys = Object.keys(beforeRow)
|
261
|
+
const changeItem = {}
|
262
|
+
|
263
|
+
keys.forEach(key => {
|
264
|
+
if (beforeRow[key] !== afterRow[key]) {
|
265
|
+
changeItem[key] = afterRow[key]
|
266
|
+
}
|
267
|
+
})
|
268
|
+
|
269
|
+
return changeItem
|
270
|
+
}
|
271
|
+
|
272
|
+
export function getRealKeyData (data) {
|
273
|
+
return Object.keys(data).reduce((obj, key) => {
|
274
|
+
// 找到第一个下划线后面的部分
|
275
|
+
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
276
|
+
obj[realKey] = data[key] // 赋值
|
277
|
+
return obj
|
278
|
+
}, {})
|
279
|
+
}
|
280
|
+
|
281
|
+
export function setDataByRealKey (form, data) {
|
282
|
+
// 创建一个映射 realKey -> formKey
|
283
|
+
const realFormMap = {}
|
284
|
+
|
285
|
+
// 遍历 form,建立真实键名和 form 键的映射
|
286
|
+
Object.keys(form).forEach(key => {
|
287
|
+
// 提取第一个下划线后面的部分
|
288
|
+
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
289
|
+
realFormMap[realKey] = key // 存储映射关系
|
290
|
+
})
|
291
|
+
|
292
|
+
// 遍历 data,更新 form 中的值
|
293
|
+
Object.keys(data).forEach(key => {
|
294
|
+
// 提取第一个下划线后面的部分
|
295
|
+
const realKey = key.includes('_') && key !== 'selected_id' ? key.substring(key.indexOf('_') + 1) : key
|
296
|
+
if (realFormMap[realKey]) {
|
297
|
+
form[realFormMap[realKey]] = data[key] // 根据映射关系赋值
|
298
|
+
} else {
|
299
|
+
form[key] = data[key]
|
300
|
+
}
|
301
|
+
})
|
302
|
+
|
303
|
+
return form
|
304
|
+
}
|
305
|
+
|
306
|
+
const _toString = Object.prototype.toString
|
307
|
+
|
308
|
+
export function _moment (...args) {
|
309
|
+
return moment(...args)
|
310
|
+
}
|
311
|
+
|
312
|
+
export function base64ToFile (base64Data, filename = 'image.png') {
|
313
|
+
// 将 base64 转换为 blob
|
314
|
+
const arr = base64Data.split(',')
|
315
|
+
const mime = arr[0].match(/:(.*?);/)?.[1] || 'image/png'
|
316
|
+
const bstr = atob(arr[1])
|
317
|
+
let n = bstr.length
|
318
|
+
const u8arr = new Uint8Array(n)
|
319
|
+
|
320
|
+
while (n--) {
|
321
|
+
u8arr[n] = bstr.charCodeAt(n)
|
322
|
+
}
|
323
|
+
|
324
|
+
// 创建 Blob 对象
|
325
|
+
const blob = new Blob([u8arr], { type: mime })
|
326
|
+
|
327
|
+
// 创建 File 对象
|
328
|
+
return new File([blob], filename, { type: mime })
|
329
|
+
};
|