结构化数据建模/数据预览 新增报告生成功能

This commit is contained in:
lzh
2021-03-15 23:43:19 +08:00
parent 7069a2e785
commit 832bca4723
10 changed files with 698 additions and 352 deletions
+283 -190
View File
@@ -2,9 +2,14 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="8d242b82-cb9f-402f-b127-e24c2f7034a5" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/views/nav1/Clean.vue" afterDir="false" />
<change afterPath="$PROJECT_DIR$/static/AMLlogo.png" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/routes.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/routes.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/Home.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Home.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/Login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Login.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/nav1/Form.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/nav1/Form.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/nav1/Form.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/nav1/MLmodel.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/nav1/Table.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/nav1/Table.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/views/nav1/user.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/nav1/user.vue" afterDir="false" />
</list>
@@ -28,30 +33,8 @@
<expand />
<select />
</component>
<component name="DockManager">
<window id="1">
<content type="file-editors">
<state>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/vue_study.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="56">
<caret line="113" column="12" selection-start-line="113" selection-start-column="12" selection-end-line="113" selection-end-column="12" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
</leaf>
</state>
</content>
</window>
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.41442156">
<splitter split-orientation="horizontal" split-proportion="0.6565401">
<split-first>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
@@ -75,27 +58,108 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/views/nav1/Form.vue">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/Login.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="230">
<caret line="154" column="23" lean-forward="true" selection-start-line="154" selection-start-column="23" selection-end-line="154" selection-end-column="23" />
<state relative-caret-position="1104">
<caret line="48" selection-start-line="48" selection-end-line="48" />
<folding>
<element signature="n#style#0;n#a#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-form-item#2;n#el-form#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/Main.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" selection-start-line="11" selection-end-line="11" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/Home.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="483">
<caret line="21" column="72" selection-start-line="21" selection-start-column="72" selection-end-line="21" selection-end-column="72" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/views/nav1/user.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="109">
<caret line="94" column="44" lean-forward="true" selection-start-line="94" selection-start-column="44" selection-end-line="94" selection-end-column="44" />
<folding>
<element signature="n#style#0;n#el-table#0;n#template#0;n#section#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#iframe#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/LICENSE">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/fesfe.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="332">
<caret line="45" selection-start-line="45" selection-end-line="52" selection-end-column="50" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/nav1/MLmodel.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3220">
<caret line="140" column="34" selection-start-line="140" selection-start-column="34" selection-end-line="140" selection-end-column="34" />
<folding>
<element signature="n#style#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-col#0;n#el-dialog#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/nav1/Clean.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" column="16" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/nav1/MLmodel.vue">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret line="79" column="3" selection-start-line="79" selection-start-column="3" selection-end-line="85" selection-end-column="21" />
<folding>
<element signature="n#style#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-col#0;n#el-dialog#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/views/nav1/Table.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="96" column="95" selection-start-line="96" selection-start-column="95" selection-end-line="96" selection-end-column="95" />
<state relative-caret-position="895">
<caret line="104" selection-start-line="103" selection-end-line="104" />
<folding>
<element signature="n#style#0;n#span#0;n#section#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-table#0;n#section#0;n#template#0;n#!!top" expanded="true" />
@@ -104,71 +168,19 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/nav1/user.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="60" column="75" selection-start-line="60" selection-start-column="75" selection-end-line="60" selection-end-column="75" />
<state relative-caret-position="-23">
<caret line="5" column="56" selection-start-line="5" selection-start-column="56" selection-end-line="5" selection-end-column="56" />
<folding>
<element signature="n#style#0;n#el-table#0;n#template#0;n#section#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#iframe#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="782">
<caret line="34" column="20" selection-start-line="34" selection-start-column="20" selection-end-line="34" selection-end-column="20" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/Home.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="966">
<caret line="75" column="16" selection-start-line="75" selection-start-column="16" selection-end-line="75" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/views/Login.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434">
<caret line="64" column="32" selection-start-line="64" selection-start-column="32" selection-end-line="64" selection-end-column="32" />
<folding>
<element signature="n#style#0;n#a#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-form-item#2;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#el-form-item#2;n#el-form#0;n#template#0;n#!!top" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1035">
<caret line="55" column="19" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" />
<folding>
<element signature="e#0#37#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/api/api.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="20" column="34" selection-start-line="8" selection-end-line="9" />
</state>
</provider>
</entry>
</file>
</leaf>
</split-second>
</splitter>
@@ -177,6 +189,7 @@
<option name="RECENT_TEMPLATES">
<list>
<option value="Vue Single File Component" />
<option value="Python Script" />
</list>
</option>
</component>
@@ -184,7 +197,18 @@
<findStrings>
<find>查询</find>
<find>导航</find>
<find>mod</find>
<find>mode</find>
<find>v-show</find>
<find>img</find>
<find>系统</find>
<find>icon</find>
<find>ele</find>
<find>Form</find>
</findStrings>
<replaceStrings>
<replace>MLmodel</replace>
</replaceStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
@@ -202,29 +226,31 @@
<option value="$PROJECT_DIR$/config/index.js" />
<option value="$PROJECT_DIR$/src/api/api.js" />
<option value="$PROJECT_DIR$/src/App.vue" />
<option value="$PROJECT_DIR$/src/routes.js" />
<option value="$PROJECT_DIR$/src/views/Home.vue" />
<option value="$PROJECT_DIR$/vue_study.md" />
<option value="$PROJECT_DIR$/src/views/nav1/dailog.vue" />
<option value="$PROJECT_DIR$/src/views/Login.vue" />
<option value="$PROJECT_DIR$/src/views/nav1/Table.vue" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/src/views/Home.vue" />
<option value="$PROJECT_DIR$/src/views/Login.vue" />
<option value="$PROJECT_DIR$/src/views/nav1/Form.vue" />
<option value="$PROJECT_DIR$/src/routes.js" />
<option value="$PROJECT_DIR$/src/views/nav1/Clean.vue" />
<option value="$PROJECT_DIR$/src/views/nav1/MLmodel.vue" />
<option value="$PROJECT_DIR$/fesfe.py" />
<option value="$PROJECT_DIR$/src/views/nav1/user.vue" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-268" />
<option name="y" value="27" />
<option name="width" value="1938" />
<option name="height" value="1048" />
<component name="ProjectFrameBounds">
<option name="x" value="-8" />
<option name="width" value="1933" />
<option name="height" value="1038" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
@@ -235,31 +261,19 @@
<path>
<item name="AML-frontend" type="b2602c69:ProjectViewProjectNode" />
<item name="AML_frontend" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="AML-frontend" type="b2602c69:ProjectViewProjectNode" />
<item name="AML_frontend" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="AML-frontend" type="b2602c69:ProjectViewProjectNode" />
<item name="AML_frontend" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="views" type="462c0819:PsiDirectoryNode" />
<item name="nav1" type="462c0819:PsiDirectoryNode" />
<item name="static" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/Test_Dataset" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/static" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.detected.package.tslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
@@ -274,9 +288,12 @@
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="E:\study\项目\AML_frontend\static" />
<recent name="E:\study\项目\AML_frontend\src\assets" />
<recent name="E:\study\项目\AML_frontend\Test_Dataset" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="E:\study\项目\AML_frontend\static" />
<recent name="E:\study\项目\AML_frontend\Test_Dataset" />
<recent name="E:\study\项目\AML_frontend" />
</key>
@@ -330,7 +347,17 @@
<workItem from="1613193364112" duration="15888000" />
<workItem from="1613276072538" duration="27499000" />
<workItem from="1613365982541" duration="40722000" />
<workItem from="1613567554397" duration="3910000" />
<workItem from="1613567554397" duration="4149000" />
<workItem from="1613618107192" duration="19458000" />
<workItem from="1613707910563" duration="18185000" />
<workItem from="1613913711701" duration="1211000" />
<workItem from="1614066878978" duration="852000" />
<workItem from="1614263716698" duration="2323000" />
<workItem from="1614308683158" duration="6938000" />
<workItem from="1614862502603" duration="1191000" />
<workItem from="1614936442788" duration="10786000" />
<workItem from="1615182490589" duration="591000" />
<workItem from="1615783114596" duration="8893000" />
</task>
<task id="LOCAL-00001" summary="自动机器学习前端组件">
<created>1601387458948</created>
@@ -374,18 +401,25 @@
<option name="project" value="LOCAL" />
<updated>1613465088906</updated>
</task>
<option name="localTasksCounter" value="7" />
<task id="LOCAL-00007" summary="过渡动画,数据集列表session存储">
<created>1613577068786</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1613577068786</updated>
</task>
<option name="localTasksCounter" value="8" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="150579000" />
<option name="totallyTimeSpent" value="221246000" />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
<frame x="-6" y="0" width="1546" height="830" extended-state="0" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.49325627" visible="true" weight="0.1541555" />
<window_info id="Structure" order="1" sideWeight="0.5067437" side_tool="true" visible="true" weight="0.1541555" />
<window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.44071588" visible="true" weight="0.20362903" />
<window_info id="Structure" order="1" sideWeight="0.5592841" side_tool="true" visible="true" weight="0.20362903" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
@@ -398,9 +432,9 @@
<window_info anchor="bottom" id="Version Control" order="8" weight="0.32844576" />
<window_info anchor="bottom" id="Database Changes" order="9" />
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
<window_info active="true" anchor="bottom" id="Terminal" order="11" visible="true" weight="0.23900293" />
<window_info anchor="bottom" id="Terminal" order="11" visible="true" weight="0.33679524" />
<window_info anchor="bottom" id="Python Console" order="12" weight="0.38709676" />
<window_info anchor="bottom" id="TypeScript" order="13" />
<window_info anchor="bottom" id="TypeScript" order="13" weight="0.32991204" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@@ -408,8 +442,8 @@
<window_info anchor="right" id="Database" order="4" />
</layout>
<layout-to-restore>
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.4979757" visible="true" weight="0.103217155" />
<window_info id="Structure" order="1" sideWeight="0.5020243" side_tool="true" weight="0.18096514" />
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.6086956" visible="true" weight="0.20509383" />
<window_info active="true" id="Structure" order="1" sideWeight="0.39130434" side_tool="true" visible="true" weight="0.20509383" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
@@ -422,8 +456,9 @@
<window_info anchor="bottom" id="Version Control" order="8" weight="0.32844576" />
<window_info anchor="bottom" id="Database Changes" order="9" />
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
<window_info active="true" anchor="bottom" id="Terminal" order="11" visible="true" weight="0.27419356" />
<window_info anchor="bottom" id="Python Console" order="12" weight="0.22727273" />
<window_info anchor="bottom" id="Terminal" order="11" visible="true" weight="0.29178885" />
<window_info anchor="bottom" id="Python Console" order="12" weight="0.38709676" />
<window_info anchor="bottom" id="TypeScript" order="13" weight="0.32991204" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@@ -440,13 +475,14 @@
<MESSAGE value="修改main.js" />
<MESSAGE value="数据集上传,数据预览" />
<MESSAGE value="数据建模页面响应功能完成" />
<option name="LAST_COMMIT_MESSAGE" value="数据建模页面响应功能完成" />
<MESSAGE value="过渡动画,数据集列表session存储" />
<option name="LAST_COMMIT_MESSAGE" value="过渡动画,数据集列表session存储" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="javascript">
<url>file://$PROJECT_DIR$/src/views/nav1/Form.vue</url>
<url>file://$PROJECT_DIR$/src/views/nav1/MLmodel.vue</url>
<line>4</line>
<option name="timeStamp" value="2" />
</line-breakpoint>
@@ -455,10 +491,10 @@
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/Test_Dataset/day.csv">
<provider selected="true" editor-type-id="csv-text-editor" />
<provider editor-type-id="csv-table-editor">
<state showInfoPanel="true" fixedHeaders="false" rowLines="3" />
</provider>
<provider selected="true" editor-type-id="csv-text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/styles/vars.scss">
<provider selected="true" editor-type-id="text-editor" />
@@ -539,13 +575,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/dist/static/js/vendor.0f1354d86ff9bd2ab3e5.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15456">
<caret line="38" column="63098" selection-start-line="38" selection-start-column="63098" selection-end-line="38" selection-end-column="63098" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/common/js/util.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@@ -556,14 +585,85 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/Main.vue">
<entry file="file://$PROJECT_DIR$/src/views/nav1/dailog.vue" />
<entry file="file://$PROJECT_DIR$/node_modules/_js-base64@3.6.0@js-base64/base64.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" selection-start-line="11" selection-end-line="11" />
<state relative-caret-position="163">
<caret line="92" column="14" selection-start-line="92" selection-start-column="14" selection-end-line="92" selection-end-column="14" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/dist/static/js/vendor.0f1354d86ff9bd2ab3e5.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="343">
<caret line="38" column="420879" selection-start-line="38" selection-start-column="420879" selection-end-line="38" selection-end-column="420879" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="782">
<caret line="34" column="20" selection-start-line="34" selection-start-column="20" selection-end-line="34" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/api/api.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="20" column="34" selection-start-line="8" selection-end-line="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/assets/logo.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/dist/static/img/fontawesome-webfont.912ec66.svg">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/static/AMLlogo.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/src/assets/user.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/src/assets/logo4.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/src/assets/bg1.jpg">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://E:/anaconda3/Lib/site-packages/anaconda_navigator/static/css/styles.scss">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="129">
<caret line="18" column="1" selection-start-line="18" selection-start-column="1" selection-end-line="18" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="112">
<caret line="14" column="21" selection-start-line="14" selection-start-column="21" selection-end-line="14" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vue_study.md">
<provider editor-type-id="text-editor" />
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="23">
<caret line="1" selection-start-line="1" selection-end-line="1" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="43">
<caret line="7" column="12" selection-start-line="7" selection-start-column="12" selection-end-line="7" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/dailog.vue" />
<entry file="file://$PROJECT_DIR$/src/App.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
@@ -581,64 +681,66 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="782">
<caret line="34" column="20" selection-start-line="34" selection-start-column="20" selection-end-line="34" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1035">
<caret line="55" column="19" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" />
<folding>
<element signature="e#0#37#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/api/api.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="20" column="34" selection-start-line="8" selection-end-line="9" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vue_study.md">
<provider editor-type-id="text-editor" />
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="56">
<caret line="113" column="12" selection-start-line="113" selection-start-column="12" selection-end-line="113" selection-end-column="12" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/Login.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="434">
<caret line="64" column="32" selection-start-line="64" selection-start-column="32" selection-end-line="64" selection-end-column="32" />
<state relative-caret-position="1104">
<caret line="48" selection-start-line="48" selection-end-line="48" />
<folding>
<element signature="n#style#0;n#a#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-form-item#2;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#el-form-item#2;n#el-form#0;n#template#0;n#!!top" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/Main.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" selection-start-line="11" selection-end-line="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/Home.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="966">
<caret line="75" column="16" selection-start-line="75" selection-start-column="16" selection-end-line="75" selection-end-column="16" />
<state relative-caret-position="483">
<caret line="21" column="72" selection-start-line="21" selection-start-column="72" selection-end-line="21" selection-end-column="72" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/LICENSE">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/Clean.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="253">
<caret line="11" column="16" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/fesfe.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="332">
<caret line="45" selection-start-line="45" selection-end-line="52" selection-end-column="50" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/MLmodel.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3220">
<caret line="140" column="34" selection-start-line="140" selection-start-column="34" selection-end-line="140" selection-end-column="34" />
<folding>
<element signature="n#style#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-col#0;n#el-dialog#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/static/lzh3_day_csv.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/Table.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="323">
<caret line="96" column="95" selection-start-line="96" selection-start-column="95" selection-end-line="96" selection-end-column="95" />
<state relative-caret-position="895">
<caret line="104" selection-start-line="103" selection-end-line="104" />
<folding>
<element signature="n#style#0;n#span#0;n#section#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#el-table#0;n#section#0;n#template#0;n#!!top" expanded="true" />
@@ -648,20 +750,11 @@
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/user.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="201">
<caret line="60" column="75" selection-start-line="60" selection-start-column="75" selection-end-line="60" selection-end-column="75" />
<state relative-caret-position="109">
<caret line="94" column="44" lean-forward="true" selection-start-line="94" selection-start-column="44" selection-end-line="94" selection-end-column="44" />
<folding>
<element signature="n#style#0;n#el-table#0;n#template#0;n#section#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/views/nav1/Form.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="230">
<caret line="154" column="23" lean-forward="true" selection-start-line="154" selection-start-column="23" selection-end-line="154" selection-end-column="23" />
<folding>
<element signature="n#style#0;n#el-col#0;n#el-dialog#0;n#el-form#0;n#template#0;n#!!top" expanded="true" />
<element signature="n#style#0;n#iframe#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
+1
View File
@@ -14,6 +14,7 @@
"echarts": "^3.3.2",
"element-ui": "^1.2.8",
"font-awesome": "^4.7.0",
"js-base64": "^3.6.0",
"nprogress": "^0.2.0",
"vue": "^2.2.2",
"vue-router": "^2.3.0",
+4 -2
View File
@@ -3,8 +3,9 @@ import NotFound from './views/404.vue'
import Home from './views/Home.vue'
import Main from './views/Main.vue'
import Table from './views/nav1/Table.vue'
import Form from './views/nav1/Form.vue'
import MLmodel from './views/nav1/MLmodel.vue'
import user from './views/nav1/user.vue'
import Clean from './views/nav1/Clean.vue'
import Page4 from './views/nav2/Page4.vue'
import Page5 from './views/nav2/Page5.vue'
import Page6 from './views/nav3/Page6.vue'
@@ -33,7 +34,8 @@ let routes = [
{ path: '/main', component: Main, name: '主页', hidden: true },
{ path: '/table', component: Table, name: '我的数据集' },
{ path: '/user', component: user, name: '数据预览' },
{ path: '/form', component: Form, name: '快速建模' },
{ path:'/clean', component: Clean, name:'数据清洗'},
{ path: '/MLmodel', component: MLmodel, name: '快速建模' },
]
},
+25 -9
View File
@@ -1,7 +1,8 @@
<template>
<el-row class="container">
<!-- header-->
<el-col :span="24" class="header">
<el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
<el-col :span="10" class="logo" :class="collapsed? 'logo-collapse-width':'logo-width'">
{{collapsed?'':sysName}}
</el-col>
<el-col :span="10">
@@ -10,21 +11,26 @@
</div>
</el-col>
<el-col :span="4" class="userinfo">
<el-dropdown trigger="hover">
<span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
<span class="el-dropdown-link userinfo-inner">
<i class="el-icon-setting">&nbsp;&nbsp;欢迎{{sysUserName}}</i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>我的消息</el-dropdown-item>
<el-dropdown-item>设置</el-dropdown-item>
<el-dropdown-item>升级VIP</el-dropdown-item>
<el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
</el-col>
<!-- 侧边栏-->
<el-col :span="24" class="main">
<aside :class="collapsed?'menu-collapsed':'menu-expanded'">
<!--导航菜单-->
<el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect"
unique-opened router v-show="!collapsed">
unique-opened router v-if="!collapsed">
<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
<el-submenu :index="index+''" v-if="!item.leaf">
<template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
@@ -34,7 +40,7 @@
</template>
</el-menu>
<!--导航菜单-折叠后-->
<ul class="el-menu el-menu-vertical-demo collapsed" v-show="collapsed" ref="menuCollapsed">
<ul class="el-menu el-menu-vertical-demo collapsed" v-if="collapsed" ref="menuCollapsed">
<li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item">
<template v-if="!item.leaf">
<div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)"><i :class="item.iconCls"></i></div>
@@ -44,7 +50,9 @@
</template>
<template v-else>
<li class="el-submenu">
<div class="el-submenu__title el-menu-item" style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;" :class="$route.path==item.children[0].path?'is-active':''" @click="$router.push(item.children[0].path)"><i :class="item.iconCls"></i></div>
<div class="el-submenu__title el-menu-item" style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;" :class="$route.path==item.children[0].path?'is-active':''" @click="$router.push(item.children[0].path)">
<i :class="item.iconCls"></i>
</div>
</li>
</template>
</li>
@@ -77,7 +85,7 @@
return {
sysName:'ML代码生成平台',
collapsed:false,
sysUserName: '',
sysUserName:sessionStorage.getItem('user'),
sysUserAvatar: '',
form: {
name: '',
@@ -127,10 +135,11 @@
},
mounted() {
var user = sessionStorage.getItem('user');
console.log("user:"+user)
if (user) {
user = JSON.parse(user);
this.sysUserName = user.name || '';
this.sysUserAvatar = user.avatar || '';
console.log(user)
this.sysUserName = user
}
}
@@ -151,10 +160,17 @@
line-height: 60px;
background: $color-primary;
color:#fff;
.username{
text-align: right;
padding-right: 35px;
float:left;
}
.userinfo {
text-align: right;
padding-right: 35px;
float: right;
.userinfo-inner {
cursor: pointer;
color:#fff;
+141 -35
View File
@@ -1,7 +1,7 @@
<template>
<el-form :model="ruleForm2" :rules="rulesLogin" ref="ruleForm2" label-position="left" label-width="0px"
class="demo-ruleForm login-container">
<h3 class="title">系统登录</h3>
<h3 class="title">机器学习代码生成器-登录</h3>
<el-form-item prop="account">
<el-input type="text" v-model="ruleForm2.account" auto-complete="off" placeholder="账号"></el-input>
</el-form-item>
@@ -10,7 +10,6 @@
</el-form-item>
<el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox>
<a href="#" @click="handleRegist" style="margin-left:25%">没有账号立即注册</a>
<el-form-item style="width:100%;">
<el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit2" :loading="logining">登录
@@ -21,27 +20,27 @@
<!-- 注册弹框-->
<el-dialog title="注册" :visible.sync="dialogVisible" :close-on-click-modal="true" :modal="true"
:show-close="true" :center="true">
<el-form :model="registform" :rules="rulesRegist" :label-position="left">
<el-form-item label="用户名">
<el-form :model="registform" :rules="rulesRegist" ref="registform" label-position="left">
<el-form-item label="用户名" prop="username">
<el-input v-model="registform.username" type="text"></el-input>
</el-form-item>
<el-form-item label="密码">
<el-form-item label="密码" prop="password">
<el-input v-model="registform.password" type="password"></el-input>
</el-form-item>
<el-form-item label="确认密码">
<el-form-item label="确认密码" prop="checkpassword">
<el-input v-model="registform.checkpassword" type="password"></el-input>
</el-form-item>
<el-form-item label="注册邮箱">
<el-form-item label="注册邮箱" prop="email">
<el-input v-model="registform.email" type="email"></el-input>
</el-form-item>
<el-form-item label="验证码">
<el-input v-mode="registform.checkcode"></el-input>
<el-button type="original">获取验证码</el-button>
<el-form-item label="验证码" prop="checkcode">
<el-input v-model="registform.checkcode"></el-input>
<el-button type="original" @click="getCode" :disabled="isDiabled">{{buttonName}}</el-button>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false">立即注册</el-button>
<el-button type="primary" @click.native.prevent="handleRegistSubmit">立即注册</el-button>
</span>
</el-dialog>
</el-form>
@@ -51,21 +50,61 @@
</template>
<script>
import axios from 'axios'
axios.defaults.withCredentials=true;
//import NProgress from 'nprogress'
let Base64 = require('js-base64').Base64
export default {
data() {
var validateNull=(rule,value,callback)=>{
var validatePassword=(rule,value,callback)=>{
if (value===''){
callback(new Error("输入不能为空!"))
}else if (this.registform.password!=value){
callback(new Error("两次密码输入不一致"))
} else {
callback()
}
};
var validateUserExist=(rule,value,callback)=>{
if (value===''){
callback(new Error("输入不能为空!"))
}
axios.post("/api/check_exist",{
"query_dict":{"username":value}
}).then((response)=>{
var data=response.data
if (data.msg===true){
callback(new Error("该用户名已存在"))
}
else
callback()
})
};
var validateEmailExist=(rule,value,callback)=>{
if (value===''){
callback(new Error("输入不能为空!"))
}
axios.post("/api/check_exist",{
"query_dict":{"email":value}
}).then((response)=>{
var data=response.data
if (data.msg){
callback(new Error("该邮箱号已注册"))
}else
callback()
})
}
return {
logining: false,
ruleForm2: {
account: 'admin',
checkPass: '123456'
account: '',
checkPass: ''
},
rulesLogin: {
account: [
@@ -74,20 +113,9 @@
],
checkPass: [
{required: true, message: '请输入密码', trigger: 'blur'},
//{ validator: validaePass2 }
]
},
rulesRegist:{
username:[
{required:true,message:'请输入用户名',trigger:'blur'},
{min:1,max:16,message:"长度在1-16个字符",trigger:'blur'}
],
password:[
{required:true,message:'请输入密码',trigger:'blur'},
{min:6,max:16,message:"长度在6-16个字符",trigger:'blur'}
]
},
checked: false,
registform: {
username: '',
password: '',
@@ -95,6 +123,31 @@
email: '',
checkcode: ''
},
rulesRegist:{
username:[
{required: true, message:'请输入用户名', trigger:'blur'},
{min:1, max:16, message:"长度在1-16个字符", trigger:'blur'},
{validator:validateUserExist,trigger:'blur'}
],
password:[
{required:true,message:'请输入密码',trigger:'blur'},
{min:6,max:16,message:"长度在6-16个字符",trigger:'blur'}
],
checkpassword:[
{validator:validatePassword}
],
email:[
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] },
{validator:validateEmailExist,trigger:'blur'}
],
checkcode:[
{required: true, message: '请输入验证码', trigger: 'blur'}
]
},
checked: false,
isDiabled:false,//验证码发送按钮
buttonName:"获取验证码",
dialogVisible: false
};
},
@@ -105,29 +158,82 @@
handleReset2() {
this.$refs.ruleForm2.resetFields();
},
handleSubmit2: function (ev) {
handleSubmit2(ev) {
var _this = this;
this.$refs.ruleForm2.validate((valid) => {
if (valid) {
//_this.$router.replace('/table');
this.logining = true;
//NProgress.start();
var loginParams = {
axios.post("/api/login",{
username: this.ruleForm2.account,
password: this.ruleForm2.checkPass
};
password: Base64.encode(this.ruleForm2.checkPass)
}).then((response)=>{
var data=response.data
if (data.msg===true) {
this.logining = false;
var user = 'admin'
var user =this.ruleForm2.account
console.log(user)
sessionStorage.setItem('user', JSON.stringify(user));
sessionStorage.setItem('dataset_name', '')
this.$router.push({path: '/table'});
this.$message.success("登录成功")
}else {
this.logining = false;
this.$message.error("用户名或密码错误,登录失败")
}
})
} else {
console.log('error submit!!');
this.$message.error("用户名或密码错误,登录失败")
return false;
}
});
})},
handleRegistSubmit(){
var _this = this;
var flag=false
this.$refs.registform.validate((valid) => {
if (valid) {
console.log("表单校验通过!")
flag=true
axios.post('/api/regist',{
username:this.registform.username,
password:Base64.encode(this.registform.password),
email:this.registform.email,
checkcode:this.registform.checkcode
}).then((response)=> {
var data=response.data
this.$refs['registform'].resetFields()
this.dialogVisible=false
this.$message.success(data.msg)
}).catch((error)=>{
console.log(error.response.data)
var data=error.response.data
this.$message.error(data.msg)
})
} else {
this.$message.error("请先正确填写表单")
}
})
},
getCode(){
let me = this;
this.isDiabled=true
axios.post('api/send_code',{
"email":this.registform.email
})
var totalTime=60
let clock=window.setInterval(()=>{
totalTime--
this.buttonName=totalTime+ "s后重新发送"
if (totalTime < 0) { //当倒计时小于0时清除定时器
window.clearInterval(clock)
this.buttonName= '重新获取验证码'
totalTime = 60
this.isDiabled=false
}
},1000)
}
}
}
+64
View File
@@ -0,0 +1,64 @@
<template>
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button type="primary" @click="add_step">添加步骤</el-button>
</el-col>
</template>
<script>
export default {
name: "Clean",
data(){
return{
options:[],
value:"",
cols: [],
tableData: [],
isloading:false
}
},
created(){
this.get_datasets()
},
methods:{
get_datasets(){
var original=JSON.parse(sessionStorage.getItem("dataset_list"))
console.log(original)
for (var dataset of original){
this.options.push({
label:dataset,
value:dataset
})
}
},
get_dataset_cols(dataset_name){
axios.get('api/show_dataset?username='+sessionStorage.getItem('user')+'&dataset_name='+dataset_name)
.then((response)=>{
var body_data= response.data.data
var columns=body_data.cols
sessionStorage.setItem("dataset_cols",JSON.stringify(columns))
sessionStorage.setItem("dataset_name",dataset_name)
})
},
add_step(){
}
}
}
</script>
<style scoped>
</style>
@@ -81,7 +81,7 @@
<el-col style="white-space: pre-wrap;">{{original_code}}</el-col>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false">导出文件</el-button>
<el-button type="primary" @click="onExportCode">导出文件</el-button>
</span>
</el-dialog>
</el-form>
@@ -89,6 +89,7 @@
<script>
import axios from 'axios'
axios.defaults.withCredentials=true;
export default {
inject:['reload'],
@@ -136,7 +137,7 @@
onSubmit() {
console.log('submit!');
axios.post('/api/generate_code',{
username:"admin",
username:JSON.parse(sessionStorage.getItem('user')),
data:this.form
}).then((response)=>{
var code=response.data.data
@@ -159,8 +160,9 @@
this.dataset_cols=[]
this.target_cols=[]
this.tableData=[]
axios.get('api/show_dataset?dataset_name='+dataset_name)
axios.get('api/show_dataset?username='+sessionStorage.getItem('user')+'&dataset_name='+dataset_name)
.then((response)=>{
var body_data= response.data.data
var columns=body_data.cols
for(var column of columns){
@@ -204,6 +206,32 @@
}
}
},
//
onExportCode(){
axios.get('/api/export_code',{
params: {
username: JSON.parse(sessionStorage.getItem('user')),
name: this.form.name,
dataset_name: this.form.dataset_name
},
}).then((response)=>{
let url = window.URL.createObjectURL(new Blob([response.data]));
// a
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
//
let timestamp=new Date().getTime();
link.download = "generate_"+JSON.parse(sessionStorage.getItem('user'))+"_"+this.form.name + ".py";
document.body.appendChild(link);
link.click();
}).catch(error => {
this.$message.error("下载失败")
})
}
}
}
+9 -4
View File
@@ -5,6 +5,7 @@
drag
accept=".csv, .txt, .xls, .xlsx"
action="/api/upload_dataset"
:data="user_info"
:limit="1"
:before-upload="beforeUpload"
:on-success="handleAvatarSuccess"
@@ -52,7 +53,10 @@
return {
tableData: [],
list:"name",
isloading:false
isloading:false,
user_info:{
"username":sessionStorage.getItem('user')
}
}
},
@@ -78,7 +82,8 @@
//获取用户的所有数据集
data_list(){
var dataset_list=[]
axios.get('/api/get_data_list')
var username=sessionStorage.getItem('user')
axios.get('/api/get_data_list?username='+username)
.then((response)=>{
this.isloading=true
var original=response.data.data
@@ -142,8 +147,8 @@
del(row,i){
console.log(row.name,i)
axios.post('/api/del_dataset',{
username:"admin",
dataset_name:row.name
dataset_name:row.name,
username:sessionStorage.getItem('user')
}).then((response)=> {
console.log("查看返回值:",response.data)
var body=response.data
+78 -47
View File
@@ -3,7 +3,7 @@
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-select v-model="value" placeholder="请选择">
<el-select v-model="value" placeholder="请选择" @change="on_dataset_change">
<el-option
v-for="item in options"
:key="item.value"
@@ -13,6 +13,10 @@
</el-select>
<el-button type="primary" @click="show_dataset">查看</el-button>
<el-button type="" @click="show_dataset_report" :loading="isloading" plain>生成报告</el-button>
<!-- 数据分析报告展示区域-->
<el-col v-html="frame"></el-col>
</el-col>
<!--列表-->
@@ -21,7 +25,8 @@
v-loading="isloading"
element-loading-text="正在拼命加载">
<template v-for="(col ,index) in cols">
<el-table-column v-if="col.type==='sort'" :prop="col.prop" sortable :label="col.label"></el-table-column>
<el-table-column v-if="col.type==='sort'" :prop="col.prop" sortable
:label="col.label"></el-table-column>
</template>
</el-table>
@@ -30,84 +35,110 @@
</section>
</template>
<script>
import { getUserList } from '../../api/api';
import axios from 'axios'
import Table from './Table.vue'
axios.defaults.withCredentials = true;
//import NProgress from 'nprogress'
export default {
data() {
return {
options:[],
value:"",
options: [],
value: "",
cols: [],
tableData: [],
isloading:true
isloading: false,
dialogVisible: false,
content: "",
frame: ''
}
},
inject:['reload'],
inject: ['reload'],
created() {
this.get_datasets()
var datasetName=sessionStorage.getItem('dataset_name')
if (datasetName!='') {
this.value=datasetName
var datasetName = sessionStorage.getItem('dataset_name')
if (datasetName != '') {
this.value = datasetName
this.show_dataset()
}
},
methods: {
get_datasets(){
var original=JSON.parse(sessionStorage.getItem("dataset_list"))
get_datasets() {
var original = JSON.parse(sessionStorage.getItem("dataset_list"))
console.log(original)
for (var dataset of original){
for (var dataset of original) {
this.options.push({
label:dataset,
value:dataset
label: dataset,
value: dataset
})
}
},
show_dataset(){
this.cols=[]
this.tableData=[]
this.isloading=true
axios.get('api/show_dataset?dataset_name='+this.value)
.then((response)=>{
this.isloading=true
var body=response.data
var body_data= response.data.data
var columns=body_data.cols
//数据集发生变化时,隐藏生成报告的iframe
on_dataset_change(){
this.frame=""
sessionStorage.setItem("dataset_name",this.value)
this.show_dataset()
},
show_dataset() {
this.cols = []
this.tableData = []
var username = sessionStorage.getItem('user')
this.isloading = true
axios.get('api/show_dataset?username=' + username + "&dataset_name=" + this.value)
.then((response) => {
var body = response.data
var body_data = response.data.data
var columns = body_data.cols
console.log(body)
//添加表头
for (var column of columns){
for (var column of columns) {
this.cols.push({
label:column,
prop:column,
type:"sort"
label: column,
prop: column,
type: "sort"
})
}
//计算数据长度,循环添加
var data_length=body_data[columns[0]].length
if (data_length>100){
var text="当前数据集共有"+data_length+"条数据,预览仅显示前100条"
data_length=100
this.$message(text,'info')
var data_length = body_data[columns[0]].length
if (data_length > 100) {
var text = "当前数据集共有" + data_length + "条数据,预览仅显示前100条"
data_length = 100
this.$message(text, 'info')
}
for(var i=0;i<data_length;i++){
for (var i = 0; i < data_length; i++) {
//按行添加
var row={}
for(var column of columns){
row[column]=body_data[column][i]
var row = {}
for (var column of columns) {
var cell = body_data[column][i]
row[column] = cell ? cell: ""
}
this.tableData.push(row)
}
sessionStorage.setItem("dataset_name",this.value)
this.isloading=false
}).catch((error)=>{
this.isloading=false
sessionStorage.setItem("dataset_name", this.value)
this.isloading = false
}).catch((error) => {
this.isloading = false
console.log(error)
})
}
},
show_dataset_report() {
this.dialogVisible = false
this.isloading = true
var username = sessionStorage.getItem('user')
axios.get('api/show_dataset_report?username=' + username + "&dataset_name=" + this.value)
.then((response) => {
var html_name = response.data.data
var insert_iframe = '<iframe src="../../../static/'+html_name+
'" scrolling="yes" style="width: 100%;height: 500px;" frameborder="0"></iframe>'
this.frame=insert_iframe
console.log("生成成功")
this.dialogVisible = true
this.isloading = false
}).catch((error) => {
console.log("报告生成失败")
this.isloading = false
})
},
},
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB