zbcx_ckyc 1.0.0
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/README.md +3 -0
- package/package.json +90 -0
- package/src/plugins/app/com/CesiumTool.js +730 -0
- package/src/plugins/app/com/MapMethods.js +355 -0
- package/src/plugins/app/com/MapTool.vue +772 -0
- package/src/plugins/app/com/MenuRouter.vue +157 -0
- package/src/plugins/app/com/ParamsDes.vue +35 -0
- package/src/plugins/app/com/SelCoorSys.vue +235 -0
- package/src/plugins/app/com/WebProj4.js +32 -0
- package/src/plugins/app/com/measure.js +127 -0
- package/src/plugins/app/com/yx.js +238 -0
- package/src/plugins/app/modelmanagement/D3DrawGraph.js +708 -0
- package/src/plugins/app/modelmanagement/MineralGo.vue +241 -0
- package/src/plugins/app/modelmanagement/MineralModel.vue +1203 -0
- package/src/plugins/app/modelmanagement/ModelCloudmap.vue +69 -0
- package/src/plugins/app/modelmanagement/ModelMst.vue +60 -0
- package/src/plugins/app/modelmanagement/ModelSy.vue +173 -0
- package/src/plugins/app/modelmanagement/ModelTp.vue +51 -0
- package/src/plugins/app/modelmanagement/ModelUpload.vue +774 -0
- package/src/plugins/app/znycpjxt/Api.js +714 -0
- package/src/plugins/app/znycpjxt/Bf/AttFactory.js +25 -0
- package/src/plugins/app/znycpjxt/Bf/IAnomalyhandle.js +102 -0
- package/src/plugins/app/znycpjxt/Bf/IComposeanomaly.js +140 -0
- package/src/plugins/app/znycpjxt/Bf/IContinueanaly.js +138 -0
- package/src/plugins/app/znycpjxt/Bf/IContrastanaly.js +138 -0
- package/src/plugins/app/znycpjxt/Bf/ICustomNode.js +145 -0
- package/src/plugins/app/znycpjxt/Bf/IDerivanaly.js +139 -0
- package/src/plugins/app/znycpjxt/Bf/IFilterananly.js +141 -0
- package/src/plugins/app/znycpjxt/Bf/IMeananaly.js +137 -0
- package/src/plugins/app/znycpjxt/Bf/IModelNodeBase.js +135 -0
- package/src/plugins/app/znycpjxt/Bf/IMoveaverage.js +135 -0
- package/src/plugins/app/znycpjxt/Bf/IReducepole.js +141 -0
- package/src/plugins/app/znycpjxt/Bf/ISmoothanaly.js +135 -0
- package/src/plugins/app/znycpjxt/Bf/ITrendanaly.js +144 -0
- package/src/plugins/app/znycpjxt/Bf/IVector2grd.js +144 -0
- package/src/plugins/app/znycpjxt/Bf/IYcfj.js +84 -0
- package/src/plugins/app/znycpjxt/Bf/IYcxxjs.js +105 -0
- package/src/plugins/app/znycpjxt/Bf/IYgsbtq.js +112 -0
- package/src/plugins/app/znycpjxt/Bf/IYgtxrh.js +112 -0
- package/src/plugins/app/znycpjxt/Bf/Iinteranaly.js +135 -0
- package/src/plugins/app/znycpjxt/Bf/index.js +44 -0
- package/src/plugins/app/znycpjxt/Bf/input/InputData.js +21 -0
- package/src/plugins/app/znycpjxt/Bf/input/InputExcel.js +28 -0
- package/src/plugins/app/znycpjxt/Bf/input/InputKd.js +31 -0
- package/src/plugins/app/znycpjxt/Bqqd/Bqqd.vue +380 -0
- package/src/plugins/app/znycpjxt/Bqqd/BqqdMap.vue +1046 -0
- package/src/plugins/app/znycpjxt/Bqqd/SetOpacity.vue +101 -0
- package/src/plugins/app/znycpjxt/Bqqd/SjzxTree.vue +244 -0
- package/src/plugins/app/znycpjxt/Bqqd/YclsjjTree.vue +212 -0
- package/src/plugins/app/znycpjxt/Bqqd/api/DsjzxApi.js +37 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmx.vue +161 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/CfgGloalParams.vue +92 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/CfgNodeFlds.vue +102 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/CfgNodeParams.vue +277 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/Ckycmxgl.vue +303 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/SetLabelParam.vue +68 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxgl/SetModelParam.vue +69 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Ckycmxtab.vue +107 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Dtzzylwl.vue +156 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Jjsjwl.vue +230 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Sjsl.vue +126 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Zcxlj.vue +128 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Zjq.vue +123 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Zstp.vue +271 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/Zzylwl.vue +149 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/coms/ParamsData.vue +323 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/coms/ParamsDataNew.vue +336 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycmxtab/coms/QqtEcharts.vue +137 -0
- package/src/plugins/app/znycpjxt/Ckycmx/Ckycrwgl/Ckycrwgl.vue +290 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeApi.js +83 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeEditor/CodeEditor.md +36 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeEditor/CodeEditor.vue +227 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeEditor/PlugCodeEditor.vue +78 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeEditor/demo/basic.png +0 -0
- package/src/plugins/app/znycpjxt/CusTools/CodeEditor/demo/basic.vue +27 -0
- package/src/plugins/app/znycpjxt/CusTools/DmbjForm.vue +76 -0
- package/src/plugins/app/znycpjxt/CusTools/DmfbForm.vue +351 -0
- package/src/plugins/app/znycpjxt/CusTools/GjForm.vue +206 -0
- package/src/plugins/app/znycpjxt/CusTools/Gjbjyfb.vue +200 -0
- package/src/plugins/app/znycpjxt/CusTools/ParamSelect.vue +222 -0
- package/src/plugins/app/znycpjxt/CusTools/ParamSelect2.vue +204 -0
- package/src/plugins/app/znycpjxt/CusTools/Zngjj.vue +105 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/DataAnlyModel.vue +134 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Hgfx/HgfxEcharts.vue +98 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Hgfx/HgfxTab.vue +73 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Hgfx.vue +101 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Jctj/JctjjgTab.vue +70 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Jctj/Plzft.vue +154 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Jctj.vue +118 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Jlfx/JlfxImg.vue +80 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Jlfx.vue +91 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/PCAfx/PcaTab.vue +161 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/PCAfx.vue +101 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Qqt/QqtEcharts.vue +202 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Qqt.vue +88 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Xgxfx/XgxfxImg.vue +80 -0
- package/src/plugins/app/znycpjxt/DataAnlyModel/Xgxfx.vue +96 -0
- package/src/plugins/app/znycpjxt/DatasetMan/CreateDataset.vue +296 -0
- package/src/plugins/app/znycpjxt/DatasetMan/DatasetMan.vue +141 -0
- package/src/plugins/app/znycpjxt/DatasetMan/PreData.js +91 -0
- package/src/plugins/app/znycpjxt/DatasetMan/PreData.vue +545 -0
- package/src/plugins/app/znycpjxt/DatasetMan/PreDataApi.js +101 -0
- package/src/plugins/app/znycpjxt/DatasetMan/SelData.vue +186 -0
- package/src/plugins/app/znycpjxt/DatasetMan/SjTree.vue +130 -0
- package/src/plugins/app/znycpjxt/DatasetMan/Sjj.vue +478 -0
- package/src/plugins/app/znycpjxt/DatasetMan/Yclsjj.vue +445 -0
- package/src/plugins/app/znycpjxt/DatasetMan/Yssjj.vue +389 -0
- package/src/plugins/app/znycpjxt/DocList/DocList.vue +496 -0
- package/src/plugins/app/znycpjxt/DocList/unit/DocItem.vue +137 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/Dchj.vue +107 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/GeophysicalAnomaly.vue +115 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/Jxyt.vue +98 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/Lbjs.vue +127 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/Pjcjs.vue +103 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/AnomalyExtraction/Qdjs.vue +103 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/ExceptHandlModel.vue +163 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Cdjs.vue +102 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Czfx.vue +163 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/GetFormData.vue +343 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Hdpj.vue +100 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Pjtd.vue +90 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Qsfx.vue +109 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/ResultOnlyData.vue +121 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/ResultTable.vue +231 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/UniversalComputing.vue +139 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Xgxsjs.vue +93 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Xxsjs.vue +90 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Ycfj.vue +116 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/GeneralCalculation/Yhcl.vue +100 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/AnomalsGard.vue +91 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/Dqhxycht.vue +113 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/GeocAnomalies.vue +99 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/JgTableList.vue +203 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/Lszcl.vue +110 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/extgeoanomalies/Ycxxjs.vue +116 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/geoAnomalyExtraction/GeoAnomalyExtraction.vue +108 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/geoAnomalyExtraction/coms/AttWeight.vue +99 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/geoAnomalyExtraction/coms/Ckdctq.vue +98 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/geoAnomalyExtraction/coms/LeftForm.vue +266 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/ygyctq/Ygsbtq.vue +150 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/ygyctq/Ygtxrh.vue +107 -0
- package/src/plugins/app/znycpjxt/ExceptHandlModel/ygyctq/ygyctq.vue +98 -0
- package/src/plugins/app/znycpjxt/Index/DataCard.vue +45 -0
- package/src/plugins/app/znycpjxt/Index/Index.vue +123 -0
- package/src/plugins/app/znycpjxt/Rzgl/Rzgl.vue +156 -0
- package/src/plugins/app/znycpjxt/coms/CmapColor.vue +70 -0
- package/src/plugins/app/znycpjxt/coms/CustomFileView.vue +343 -0
- package/src/plugins/app/znycpjxt/coms/CustomForm.vue +220 -0
- package/src/plugins/app/znycpjxt/coms/GrdView.vue +355 -0
- package/src/plugins/app/znycpjxt/coms/LeftForm.vue +195 -0
- package/src/plugins/app/znycpjxt/coms/MakeData.js +472 -0
- package/src/plugins/app/znycpjxt/coms/PreView.js +55 -0
- package/src/plugins/app/znycpjxt/coms/RightContent.vue +71 -0
- package/src/plugins/app/znycpjxt/coms/TableEarth.vue +259 -0
- package/src/plugins/app/znycpjxt/intellPred/ModelList.vue +200 -0
- package/src/plugins/app/znycpjxt/intellPred/coms/D3DrawGraph.js +634 -0
- package/src/plugins/app/znycpjxt/intellPred/coms/MineralGo.vue +249 -0
- package/src/plugins/app/znycpjxt/intellPred/coms/ModelCard.vue +298 -0
- package/src/plugins/app/znycpjxt/intellPred/coms/ModelEdit.vue +292 -0
- package/src/plugins/app/znycpjxt/intellPred/coms/ModelSpecif.vue +46 -0
- package/src/plugins/app/znycpjxt/intellPred/intellPred.vue +71 -0
- package/src/plugins/bf/BfApi.js +92 -0
- package/src/plugins/bf/BfColAdd.vue +78 -0
- package/src/plugins/bf/BfColEdit.vue +68 -0
- package/src/plugins/bf/BfColFilter.vue +112 -0
- package/src/plugins/bf/BfDataGroup.vue +80 -0
- package/src/plugins/bf/BfDataPreview.vue +118 -0
- package/src/plugins/bf/BfDataStat.vue +81 -0
- package/src/plugins/bf/BfDuplicateDel.vue +82 -0
- package/src/plugins/bf/BfProcCall.vue +82 -0
- package/src/plugins/bf/BfRunHis.vue +289 -0
- package/src/plugins/bf/BfRunParams.vue +94 -0
- package/src/plugins/bf/BfSaveFlow.vue +186 -0
- package/src/plugins/bf/BfSelFlow.vue +123 -0
- package/src/plugins/bf/BfTabCombine.vue +127 -0
- package/src/plugins/bf/BfTabJoin.vue +108 -0
- package/src/plugins/bf/BfTabMerge.vue +68 -0
- package/src/plugins/bf/BfTabReader.vue +126 -0
- package/src/plugins/bf/BfValFormat.vue +68 -0
- package/src/plugins/bf/BfValNumber.vue +68 -0
- package/src/plugins/bf/BfValProc.vue +78 -0
- package/src/plugins/bf/BfValSort.vue +78 -0
- package/src/plugins/bf/BiFlow.vue +1177 -0
- package/src/plugins/bf/IBfPlug.js +205 -0
- package/src/plugins/bf/coms/ColAdd.vue +75 -0
- package/src/plugins/bf/coms/ColEdit.vue +52 -0
- package/src/plugins/bf/coms/ColList.vue +91 -0
- package/src/plugins/bf/coms/DataGroup.vue +90 -0
- package/src/plugins/bf/coms/DataStat.vue +67 -0
- package/src/plugins/bf/coms/EditTable.vue +161 -0
- package/src/plugins/bf/coms/NodeTree.vue +105 -0
- package/src/plugins/bf/coms/PlugCmd.vue +95 -0
- package/src/plugins/bf/coms/RunParams.vue +68 -0
- package/src/plugins/bf/coms/TabCombine.vue +60 -0
- package/src/plugins/bf/coms/TabJoin.vue +69 -0
- package/src/plugins/bf/coms/ValFormat.vue +53 -0
- package/src/plugins/bf/coms/ValProc.vue +77 -0
- package/src/plugins/bf/coms/ValSort.vue +89 -0
- package/src/plugins/bf/parts/Icon.vue +105 -0
- package/src/plugins/bf/parts/Rect.vue +98 -0
- package/src/plugins/bf/parts/index.js +11 -0
- package/src/plugins/cxMixin/IAttBase.js +78 -0
- package/src/plugins/cxMixin/IAttDlg.js +45 -0
- package/src/plugins/cxMixin/IAttProc.js +98 -0
- package/src/plugins/cxMixin/IComBase.js +42 -0
- package/src/plugins/cxMixin/IContextMenu.js +74 -0
- package/src/plugins/cxMixin/IDataAcce.js +1106 -0
- package/src/plugins/cxMixin/IDataList.js +775 -0
- package/src/plugins/cxMixin/IDataMan.js +1670 -0
- package/src/plugins/cxMixin/IDataMan2.js +2561 -0
- package/src/plugins/cxMixin/IDataProc.js +379 -0
- package/src/plugins/cxMixin/IDatagrid.js +234 -0
- package/src/plugins/cxMixin/IEditableDg.js +477 -0
- package/src/plugins/cxMixin/IExpBase.js +51 -0
- package/src/plugins/cxMixin/IFormBase.js +29 -0
- package/src/plugins/cxMixin/IGridBpm.js +732 -0
- package/src/plugins/cxMixin/IGridData.js +109 -0
- package/src/plugins/cxMixin/IOperMore.js +323 -0
- package/src/plugins/cxMixin/IPlugBase.js +341 -0
- package/src/plugins/cxMixin/ISendCode.js +86 -0
- package/src/plugins/cxMixin/ISinglePage.js +112 -0
- package/src/plugins/cxMixin/ITags.js +81 -0
- package/src/plugins/cxe/CxeMap.vue +61 -0
- package/src/plugins/home/HeadNav.vue +194 -0
- package/src/plugins/home/Home.vue +59 -0
- package/src/plugins/home/HomePage.vue +237 -0
- package/src/plugins/home/Login.vue +139 -0
- package/src/plugins/zbcxCesium/coms/GraDrawBarWgt.vue +176 -0
- package/src/plugins/zbcxCesium/coms/baseMapSwitch/BaseMap.scss +42 -0
- package/src/plugins/zbcxCesium/coms/baseMapSwitch/BaseMap.vue +59 -0
- package/src/plugins/zbcxCesium/coms/dataPreview/DataPreview.vue +526 -0
- package/src/plugins/zbcxCesium/coms/dataPreview/DataPreviewPlug.vue +79 -0
- package/src/plugins/zbcxCesium/coms/dataPreview/ReadShpFile.js +42 -0
- package/src/plugins/zbcxCesium/coms/legend/Legend.vue +78 -0
- package/src/plugins/zbcxCesium/coms/popup/dialog-left-bg.png +0 -0
- package/src/plugins/zbcxCesium/coms/popup/index.js +88 -0
- package/src/plugins/zbcxCesium/coms/popup/index.vue +93 -0
- package/src/plugins/zbcxCesium/pub/LoadGeojson.js +44 -0
- package/src/plugins/zbcxCesium/pub/LoadModel.js +128 -0
- package/src/plugins/zbcxCesium/pub/LoadOgc.js +226 -0
- package/src/plugins/zbcxCesium/pub/Opacity.vue +139 -0
- package/src/plugins/zbcxCesium/pub/PubCxe.js +97 -0
- package/src/plugins/zbcxCesium/pub/SceneSet.vue +178 -0
- package/src/plugins/zbcxCesium/pub/ShowEffect.vue +216 -0
- package/src/plugins/zbcxCesium/pub/TMeasure.vue +122 -0
- package/src/plugins/zbcxCesium/pub/ToDefView3.vue +109 -0
- package/src/plugins/zbcxCesium/pub/getWmsGetCapabilities.js +127 -0
- package/src/plugins/zbcxCesium/utils/ShpToGeoJson.js +24 -0
- package/src/plugins/zbcxCesium/utils/WebProj4.js +32 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<style lang='scss' scoped>
|
|
2
|
+
.cust-border {width: 100%; height: 100%; border: 0.01rem solid var(--cx-colorBorder1); padding: 0.16rem;box-sizing:border-box}
|
|
3
|
+
.mycharts {width: 100%; height: 100%;position: relative;}
|
|
4
|
+
</style>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<cx-layout padding>
|
|
8
|
+
<cx-region region="center" >
|
|
9
|
+
<div class="mycharts" ref="mycharts"></div>
|
|
10
|
+
</cx-region>
|
|
11
|
+
<cx-region region="south" style="textAlign:center">
|
|
12
|
+
<el-button @click="exportChart">导出</el-button>
|
|
13
|
+
</cx-region>
|
|
14
|
+
</cx-layout>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 插件 - 数据分析模型-QQ/PP图
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* 修改记录:
|
|
25
|
+
* 24-05-15 张光辉 首次编写
|
|
26
|
+
*/
|
|
27
|
+
import * as echarts from 'echarts'
|
|
28
|
+
export default
|
|
29
|
+
{
|
|
30
|
+
mixins: [cx.mixin.IPlugBase],
|
|
31
|
+
|
|
32
|
+
data()
|
|
33
|
+
{
|
|
34
|
+
return {
|
|
35
|
+
qqtdatas: null,
|
|
36
|
+
myChart: null
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
mounted()
|
|
41
|
+
{
|
|
42
|
+
this.initCharts()
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
// 按功能相关性组织函数块,函数名体现功能
|
|
46
|
+
methods:
|
|
47
|
+
{
|
|
48
|
+
initCharts()
|
|
49
|
+
{
|
|
50
|
+
this.myChart = echarts.init(this.$refs.mycharts)
|
|
51
|
+
this.setOpt(this.datas)
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
setOpt(datas)
|
|
55
|
+
{
|
|
56
|
+
let option = this.getOption(datas)
|
|
57
|
+
this.myChart.clear()
|
|
58
|
+
this.myChart.setOption(option)
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
getOption(datas)
|
|
62
|
+
{
|
|
63
|
+
let self = this
|
|
64
|
+
let option = {
|
|
65
|
+
tooltip: {
|
|
66
|
+
trigger: 'xAxis', // 若需要使用默认的『显示』『隐藏』触发规则,则可以去掉trigger的配置
|
|
67
|
+
axisPointer: { type: 'cross', show: true },
|
|
68
|
+
formatter: '{a}{b}{c}'// 默认触发规则中散点展示的内容,{a}标题;{b}X坐标;{c}Y坐标
|
|
69
|
+
},
|
|
70
|
+
xAxis: {
|
|
71
|
+
type: 'category',
|
|
72
|
+
data: self.params.data.loss.map((item, index) =>
|
|
73
|
+
{
|
|
74
|
+
return index + 1
|
|
75
|
+
})
|
|
76
|
+
},
|
|
77
|
+
yAxis: [{
|
|
78
|
+
name: 'loss',
|
|
79
|
+
type: 'value'
|
|
80
|
+
}, {
|
|
81
|
+
name: 'accuracy',
|
|
82
|
+
type: 'value'
|
|
83
|
+
}],
|
|
84
|
+
series: [{
|
|
85
|
+
name: 'Line',
|
|
86
|
+
type: 'line',
|
|
87
|
+
data: self.params.data.loss
|
|
88
|
+
}, {
|
|
89
|
+
name: 'Scatter',
|
|
90
|
+
type: 'scatter',
|
|
91
|
+
yAxisIndex: 1, // 指定需要使用的Y轴
|
|
92
|
+
data: self.params.data.accuracy
|
|
93
|
+
}]
|
|
94
|
+
}
|
|
95
|
+
return option
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
onExportResult()
|
|
99
|
+
{
|
|
100
|
+
if (this.$refs.chartRef.myChart)
|
|
101
|
+
{
|
|
102
|
+
// 将图表替换为图片
|
|
103
|
+
let base = this.$refs.chartRef.myChart.getDataURL({
|
|
104
|
+
pixelRatio: 2,
|
|
105
|
+
backgroundColor: 'var(--cx-colorBg5)'
|
|
106
|
+
})
|
|
107
|
+
let a = document.createElement('a')
|
|
108
|
+
a.href = base
|
|
109
|
+
a.download = `训练效果.jpg`
|
|
110
|
+
a.style.display = 'none'
|
|
111
|
+
document.body.appendChild(a)
|
|
112
|
+
a.click()
|
|
113
|
+
a.remove()
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
exportChart()
|
|
118
|
+
{
|
|
119
|
+
// 获取图表的Base64图片URL
|
|
120
|
+
let imgUrl = this.myChart.getDataURL({
|
|
121
|
+
// 导出的格式,可以是 'png', 'jpeg'
|
|
122
|
+
type: 'png',
|
|
123
|
+
// 导出的图片分辨率比例,默认是 1
|
|
124
|
+
pixelRatio: 1,
|
|
125
|
+
// 导出的图片背景色,默认是 'white'
|
|
126
|
+
backgroundColor: 'var(--cx-colorBg5)'
|
|
127
|
+
})
|
|
128
|
+
// 创建一个a标签模拟点击进行下载
|
|
129
|
+
let a = document.createElement('a')
|
|
130
|
+
a.href = imgUrl
|
|
131
|
+
// 指定下载的文件名
|
|
132
|
+
a.download = '训练效果.png'
|
|
133
|
+
a.click()
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
</script>
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
<style lang='scss' scoped>
|
|
2
|
+
.title { padding: 0.12rem; font-size: 0.18rem; padding-bottom: 0; }
|
|
3
|
+
.content-box { display: flex; flex-direction: column; height: 100%;
|
|
4
|
+
.exp-input { padding: 0.1rem 0;
|
|
5
|
+
.btn_list { margin-left: auto; }
|
|
6
|
+
}
|
|
7
|
+
.data-grid { height: calc(100% - 0.6rem); }
|
|
8
|
+
}
|
|
9
|
+
:deep(.home-page .home-cont) { flex-direction: column !important; }
|
|
10
|
+
:deep(.el-table--fit) { height: 96%; }
|
|
11
|
+
:deep(.cx-datagrid) { height: 100%; }
|
|
12
|
+
:deep(.cx-layout .cx-region.region-south) { height: 0.5rem; }
|
|
13
|
+
:deep(.cx-expinput) { width: 100%; }
|
|
14
|
+
:deep(.cx-border.regular) { box-shadow: none; }
|
|
15
|
+
</style>
|
|
16
|
+
|
|
17
|
+
<template>
|
|
18
|
+
<div class="content-box">
|
|
19
|
+
<div class="exp-input">
|
|
20
|
+
<cx-exp-input v-bind="expAtts" v-on="expEvts" :clearable="true" :show-more="false" @exp-clear="expClear">
|
|
21
|
+
<template #default>
|
|
22
|
+
<div class="btn_list">
|
|
23
|
+
<cx-button icon="cx-fi ic-addCircle" type="primary" @click="onClickAdd"> 新建任务 </cx-button>
|
|
24
|
+
<cx-button plain icon="cx-fi ic-trash" @click="ondeleteAll"> 批量删除 </cx-button>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
</cx-exp-input>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="data-grid">
|
|
30
|
+
<cx-data-grid ref="datagrid" v-bind="dgAtts" v-on="dgEvts"></cx-data-grid>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script>
|
|
36
|
+
/**
|
|
37
|
+
* 组件名称: xx
|
|
38
|
+
* 功能说明:
|
|
39
|
+
*
|
|
40
|
+
* 参数说明:
|
|
41
|
+
* @prop 类型 参数名 参数说明
|
|
42
|
+
*
|
|
43
|
+
* 事件说明:
|
|
44
|
+
* @event 事件名 参数解构 事件和参数说明
|
|
45
|
+
*
|
|
46
|
+
* 插槽说明:
|
|
47
|
+
* @slot 插槽名 插槽prop解构 插槽和prop说明
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 维护历史:
|
|
52
|
+
* 修改时间 人员 说明
|
|
53
|
+
* 2023-12-21 梁情 成矿预测任务管理
|
|
54
|
+
*/
|
|
55
|
+
export default {
|
|
56
|
+
mixins: [cx.mixin.IPlugBase, cx.mixin.IExpBase, cx.mixin.IDataMan],
|
|
57
|
+
data()
|
|
58
|
+
{
|
|
59
|
+
return {
|
|
60
|
+
noExpDispAll: true,
|
|
61
|
+
editable: true,
|
|
62
|
+
defSceneCfg:
|
|
63
|
+
{
|
|
64
|
+
compass: false,
|
|
65
|
+
stateBar: false,
|
|
66
|
+
disLegend: false
|
|
67
|
+
},
|
|
68
|
+
dg: {
|
|
69
|
+
table: {
|
|
70
|
+
elAtts:
|
|
71
|
+
{
|
|
72
|
+
height: '100%',
|
|
73
|
+
border: true, // 是否带有纵向边框
|
|
74
|
+
stripe: false, // 是否为斑马纹 table
|
|
75
|
+
showSummary: false, // 是否在表尾显示合计行
|
|
76
|
+
'row-style': ({ row, rowIndex }) => this.onRowStyle({ row, rowIndex }), // 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。
|
|
77
|
+
'cell-style': ({ row, column, rowIndex, columnIndex }) => this.onCellStyle({ row, column, rowIndex, columnIndex }) // 单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有单元格设置一样的 Style。
|
|
78
|
+
},
|
|
79
|
+
fitWidth: true, // 宽度自适应D
|
|
80
|
+
multiple: true, // 是否支持多选
|
|
81
|
+
selectOnClick: false, // 点击某一行时会触发select选择事件,如果multiple多选模式会更新复选框的状态
|
|
82
|
+
operFix: 'right', // 操作列固定右边
|
|
83
|
+
sortable: true,
|
|
84
|
+
operCols: [],
|
|
85
|
+
list: [],
|
|
86
|
+
cols: []
|
|
87
|
+
},
|
|
88
|
+
pages: true,
|
|
89
|
+
page: {
|
|
90
|
+
total: 0, // 数据量
|
|
91
|
+
pageSize: 10, // 每页记录数
|
|
92
|
+
pageSizes: [10, 20, 40, 60, 80, 100] // 分页标准
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
selData: null
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
created()
|
|
99
|
+
{
|
|
100
|
+
this.major = window.$app.TabConst.ckycrwglb.major
|
|
101
|
+
this.minor = window.$app.TabConst.ckycrwglb.minor
|
|
102
|
+
this.fixedExp = cx.sqlexp.from([['username', '=', $g.user.id]])
|
|
103
|
+
cx.events.listen(this, 'SelData', (data) =>
|
|
104
|
+
{
|
|
105
|
+
this.selData = data
|
|
106
|
+
})
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
beforeUnmount()
|
|
110
|
+
{
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
methods:
|
|
114
|
+
{
|
|
115
|
+
/**
|
|
116
|
+
* 点击添加按钮
|
|
117
|
+
*/
|
|
118
|
+
onClickAdd()
|
|
119
|
+
{
|
|
120
|
+
let params =
|
|
121
|
+
{
|
|
122
|
+
...$app.TabConst.ckycrwglb,
|
|
123
|
+
att: { username: $g.user.id, udate: cx.formatter.dateDb(cx.datetime.now()) },
|
|
124
|
+
onOk: this.onOkAdd,
|
|
125
|
+
colNum: 1,
|
|
126
|
+
onFldChange: this.onValChange,
|
|
127
|
+
title: '新建任务'
|
|
128
|
+
}
|
|
129
|
+
cx.run.runPlug('CreateDataset', params)
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 添加基本信息表数据
|
|
134
|
+
* @param {Object} atts
|
|
135
|
+
* @param {String} plug
|
|
136
|
+
*/
|
|
137
|
+
onOkAdd(atts, plug)
|
|
138
|
+
{
|
|
139
|
+
atts.glid = this.selData.id
|
|
140
|
+
cx.svr.data.add(this.major, this.minor, atts).then(res =>
|
|
141
|
+
{
|
|
142
|
+
this.$showMsg('添加完成', 'success')
|
|
143
|
+
cx.run.closeRun('CreateDataset')
|
|
144
|
+
this.getRefresh()
|
|
145
|
+
}).catch(error =>
|
|
146
|
+
{
|
|
147
|
+
this.$showMsg(error, 'warning')
|
|
148
|
+
})
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* 批量删除
|
|
153
|
+
*/
|
|
154
|
+
ondeleteAll()
|
|
155
|
+
{
|
|
156
|
+
let selection = this.selection
|
|
157
|
+
if (selection.length === 0)
|
|
158
|
+
return this.$message.error('请先勾选!')
|
|
159
|
+
let idArrs = selection.map(item => item.id)
|
|
160
|
+
cx.svr.data.dels(this.major, this.minor, idArrs.join(','))
|
|
161
|
+
.then(res =>
|
|
162
|
+
{
|
|
163
|
+
this.getRefresh()
|
|
164
|
+
})
|
|
165
|
+
.catch(this.onError)
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* 获取操作列配置
|
|
170
|
+
*/
|
|
171
|
+
getOpers()
|
|
172
|
+
{
|
|
173
|
+
let operCol
|
|
174
|
+
// 增/删/改/查操作
|
|
175
|
+
operCol = this.getColOper()
|
|
176
|
+
this.addOperView(operCol)
|
|
177
|
+
.addOperDel(operCol)
|
|
178
|
+
.setAttOper(operCol)
|
|
179
|
+
return [operCol]
|
|
180
|
+
},
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* 获取操作列
|
|
184
|
+
* @returns {Object} 操作列配置
|
|
185
|
+
*/
|
|
186
|
+
getColOper()
|
|
187
|
+
{
|
|
188
|
+
return { colname: 'rud_', title: this.$locBase('oper'), width: 200, align: 'center', btns: [] }
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* 添加查看按钮
|
|
193
|
+
* @param {Object} operCol 操作列
|
|
194
|
+
* @returns {Object} this
|
|
195
|
+
*/
|
|
196
|
+
addOperView(operCol)
|
|
197
|
+
{
|
|
198
|
+
operCol.btns.push({ name: 'view', enable: (att) => true, show: _ => true, type: 'primary', title: '查看', onClick: this.viewData })
|
|
199
|
+
return this
|
|
200
|
+
},
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* 查看数据
|
|
204
|
+
* @param {Object} data 数据
|
|
205
|
+
*/
|
|
206
|
+
async viewData(data)
|
|
207
|
+
{
|
|
208
|
+
this.getBfFlow(data.glid).then(async(res) =>
|
|
209
|
+
{
|
|
210
|
+
let sjjres = await this.getMrSjj()
|
|
211
|
+
cx.run.runPlug('BiFlow', { bfData: res[0], isView: true, dirid: 99, flowName: data.glmodel, rwData: data, data: [{ xmin: sjjres[0].xmin1, xmax: sjjres[0].xmax1, ymin: sjjres[0].ymin1, ymax: sjjres[0].ymax1, step: sjjres[0].defprecision }] })
|
|
212
|
+
}).catch(() =>
|
|
213
|
+
{
|
|
214
|
+
this.$showMsg('数据获取失败', 'error')
|
|
215
|
+
})
|
|
216
|
+
},
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* 获取流程数据
|
|
220
|
+
* @param {Number} glid 流程ID
|
|
221
|
+
* @returns {Promise} 流程数据
|
|
222
|
+
*/
|
|
223
|
+
getBfFlow(glid)
|
|
224
|
+
{
|
|
225
|
+
return cx.svr.data.query($app.TabConst.cx_bf_flow.major, $app.TabConst.cx_bf_flow.minor, { args: [['id', '=', glid, null]] })
|
|
226
|
+
},
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* 获取默认数据集
|
|
230
|
+
* @returns {Promise} 数据集数据
|
|
231
|
+
*/
|
|
232
|
+
getMrSjj()
|
|
233
|
+
{
|
|
234
|
+
return cx.svr.data.query($app.TabConst.sjj.major, $app.TabConst.sjj.minor, { args: [['userid', '=', $g.user.id, null], ['defdata', '=', 1, 'and']] })
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* 添加运行结果按钮
|
|
239
|
+
* @param {Object} operCol 操作列
|
|
240
|
+
* @returns {Object} this
|
|
241
|
+
*/
|
|
242
|
+
setAttOper(operCol)
|
|
243
|
+
{
|
|
244
|
+
operCol.btns.push({ name: 'download', enable: (att) => true, show: _ => true, type: 'primary', title: '运行结果', onClick: this.bfRunHis })
|
|
245
|
+
return this
|
|
246
|
+
},
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* 运行结果
|
|
250
|
+
* @param {Object} data 数据
|
|
251
|
+
*/
|
|
252
|
+
bfRunHis(data)
|
|
253
|
+
{
|
|
254
|
+
cx.run.runPlug('BfRunHis', data)
|
|
255
|
+
},
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* 刷新表格数据
|
|
259
|
+
*/
|
|
260
|
+
refreshTableDats()
|
|
261
|
+
{
|
|
262
|
+
this.expAtts.flds.forEach(i =>
|
|
263
|
+
{
|
|
264
|
+
i.value = ''
|
|
265
|
+
})
|
|
266
|
+
this.getRefresh()
|
|
267
|
+
},
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* 清除搜索
|
|
271
|
+
*/
|
|
272
|
+
expClear()
|
|
273
|
+
{
|
|
274
|
+
this.getRefresh()
|
|
275
|
+
},
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* 获取刷新数据
|
|
279
|
+
*/
|
|
280
|
+
getRefresh()
|
|
281
|
+
{
|
|
282
|
+
this.dg.table.operCols = []
|
|
283
|
+
this.dg.table.list = []
|
|
284
|
+
this.dg.table.cols = []
|
|
285
|
+
this.expFlds = []
|
|
286
|
+
this.init()
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
</script>
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 接口类 - 代码发布
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 维护记录:
|
|
7
|
+
* 25-04-18 黄佳龙 首次编写
|
|
8
|
+
*/
|
|
9
|
+
class ZnycpjApi
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* 检查容器是否存在
|
|
13
|
+
* @param {Number} userid 用户id
|
|
14
|
+
* @returns Promise
|
|
15
|
+
*/
|
|
16
|
+
static checkcontainer(params)
|
|
17
|
+
{
|
|
18
|
+
return this.runSvr('codeApi/customtools/server/checkcontainer', params)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 预调试
|
|
23
|
+
* @param {Number} code 代码
|
|
24
|
+
* @param {Number} params 参数
|
|
25
|
+
* @param {Number} input 输入参数
|
|
26
|
+
* @param {Number} output 输出参数
|
|
27
|
+
* @returns Promise
|
|
28
|
+
*/
|
|
29
|
+
static predebug(params, getParams)
|
|
30
|
+
{
|
|
31
|
+
return this.runSvr('codeApi/customtools/preparetools/debug', params, getParams)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 发布
|
|
36
|
+
* @param {Number} code 代码
|
|
37
|
+
* @param {Number} params 参数
|
|
38
|
+
* @param {Number} userid 用户id
|
|
39
|
+
* @returns Promise
|
|
40
|
+
*/
|
|
41
|
+
static releasecheck(params, getParams)
|
|
42
|
+
{
|
|
43
|
+
return this.runSvr('codeApi/customtools/preparetools/releasecheck', params, getParams)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 请求转发
|
|
49
|
+
* @param {Array} files 文件路径
|
|
50
|
+
*/
|
|
51
|
+
static requestserver(params)
|
|
52
|
+
{
|
|
53
|
+
return this.runSvr('codeApi/customtools/server/requestserver', params)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 调用接口
|
|
58
|
+
* @param {Sting} url 接口
|
|
59
|
+
* @param {Object} params 接口对应的参数
|
|
60
|
+
* @returns Promise
|
|
61
|
+
*/
|
|
62
|
+
static runSvr(url, params, getParams)
|
|
63
|
+
{
|
|
64
|
+
return new Promise((resolve, reject) =>
|
|
65
|
+
{
|
|
66
|
+
if (getParams)
|
|
67
|
+
{
|
|
68
|
+
let getParamsStr = ''
|
|
69
|
+
for (let key in getParams)
|
|
70
|
+
getParamsStr += key + '=' + getParams[key] + '&'
|
|
71
|
+
url = url + '?' + getParamsStr
|
|
72
|
+
}
|
|
73
|
+
cx.http.post(url, params).then((result) =>
|
|
74
|
+
{
|
|
75
|
+
resolve(result)
|
|
76
|
+
}).catch((err) =>
|
|
77
|
+
{
|
|
78
|
+
reject(err)
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export default ZnycpjApi
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# 代码编辑器
|
|
2
|
+
|
|
3
|
+
`cx-code-editor` 代码编辑器组件
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 基础用法
|
|
7
|
+
|
|
8
|
+
<preview path="./demo/basic.vue" title="" description=""></preview>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## 属性
|
|
12
|
+
|
|
13
|
+
| 名称 | 说明 | 类型 | 可选值 | 默认值 |
|
|
14
|
+
| ----- | ----- | ----- | ----- | ----- |
|
|
15
|
+
| modelValue | 代码串,双向绑定,外层通过v-model使用即可 | String | | |
|
|
16
|
+
| language | 编辑器的语言类型 | String | JavaScript (javascript),TypeScript (typescript),JSON (json),CSS (css),SCSS (scss),Less (less),HTML (html),Markdown (markdown),Python (python),Java (java),C# (csharp),C++ (cpp),C (c),Go (go),PHP (php),Shell Script (shell),SQL (sql),Ruby (ruby),Rust (rust),Swift (swift),Kotlin (kotlin),XML (xml),YAML (yaml),Dart (dart),TypeScript React (typescriptreact),JavaScript React (javascriptreact) | javascript |
|
|
17
|
+
| readonly | 是否只读不可编辑 | Boolean | | false |
|
|
18
|
+
| option | monaco.editor.create()函数可接收的参数对象,参见 monaco-editor 插件库api | Object | | |
|
|
19
|
+
| filterTools | 自定义过滤工具按钮的函数,function(tools) {return newTools} | Function | | |
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## 事件
|
|
23
|
+
|
|
24
|
+
| 名称 | 说明 | 参数 | 参数说明 |
|
|
25
|
+
| ----- | :----- | ---- | ----- |
|
|
26
|
+
| change | 代码内容发生变化时 | code | 最新的代码字符串 |
|
|
27
|
+
|
|
28
|
+
## 插槽
|
|
29
|
+
|
|
30
|
+
| 名称 | 描述 | 参数 |
|
|
31
|
+
| ---- | --- | --- |
|
|
32
|
+
|
|
33
|
+
## 修改记录
|
|
34
|
+
```
|
|
35
|
+
25-03-26 高旭龙 首次编写
|
|
36
|
+
```
|