数据集上传,数据预览
This commit is contained in:
Generated
+375
-108
@@ -2,8 +2,17 @@
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="8d242b82-cb9f-402f-b127-e24c2f7034a5" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/vue_study.md" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/config/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/config/index.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/App.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/api/api.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/api/api.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/mock/mock.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/mock/mock.js" 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/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>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
@@ -11,51 +20,166 @@
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="DatabaseView">
|
||||
<option name="SHOW_INTERMEDIATE" value="true" />
|
||||
<option name="GROUP_DATA_SOURCES" value="true" />
|
||||
<option name="GROUP_SCHEMA" value="true" />
|
||||
<option name="GROUP_CONTENTS" value="false" />
|
||||
<option name="SORT_POSITIONED" value="false" />
|
||||
<option name="SHOW_EMPTY_GROUPS" value="false" />
|
||||
<option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
|
||||
<option name="HIDDEN_KINDS">
|
||||
<set />
|
||||
</option>
|
||||
<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="548">
|
||||
<caret line="157" column="17" selection-start-line="157" selection-start-column="17" selection-end-line="157" selection-end-column="17" />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</state>
|
||||
</content>
|
||||
</window>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<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="115">
|
||||
<caret line="5" selection-start-line="5" selection-end-line="5" />
|
||||
</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="138">
|
||||
<caret line="15" column="21" selection-start-line="15" selection-start-column="21" selection-end-line="15" selection-end-column="21" />
|
||||
<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/views/Login.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-23">
|
||||
<caret line="20" column="17" selection-start-line="20" selection-start-column="17" selection-end-line="20" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/main.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="299">
|
||||
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
<splitter split-orientation="horizontal" split-proportion="0.71924293">
|
||||
<split-first>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<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="121">
|
||||
<caret line="45" column="12" selection-start-line="45" selection-start-column="12" selection-end-line="45" selection-end-column="12" />
|
||||
<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="e#1086#1130#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/App.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="46">
|
||||
<caret line="11" column="16" lean-forward="true" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="16" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/dist/static/js/vendor.0f1354d86ff9bd2ab3e5.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="158">
|
||||
<caret line="38" column="63098" selection-start-line="38" selection-start-column="63098" selection-end-line="38" selection-end-column="63098" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/main.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="213">
|
||||
<caret line="17" column="46" selection-start-line="17" selection-start-column="46" selection-end-line="17" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/common/js/util.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-69" />
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<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="184">
|
||||
<caret line="117" column="39" lean-forward="true" selection-start-line="117" selection-start-column="39" selection-end-line="117" selection-end-column="39" />
|
||||
<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" />
|
||||
</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="497">
|
||||
<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="74">
|
||||
<caret line="93" column="18" selection-start-line="93" selection-start-column="18" selection-end-line="93" selection-end-column="18" />
|
||||
</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="315">
|
||||
<caret line="57" column="8" selection-start-line="57" selection-start-column="8" selection-end-line="57" selection-end-column="8" />
|
||||
</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="92">
|
||||
<caret line="4" column="42" lean-forward="true" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="42" />
|
||||
</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" lean-forward="true" selection-start-line="8" selection-end-line="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</split-second>
|
||||
</splitter>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>查询</find>
|
||||
</findStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
@@ -70,21 +194,31 @@
|
||||
<option value="$PROJECT_DIR$/src/views/nav1/Form.vue" />
|
||||
<option value="$PROJECT_DIR$/README.md" />
|
||||
<option value="$PROJECT_DIR$/dist/index.html" />
|
||||
<option value="$PROJECT_DIR$/src/mock/mock.js" />
|
||||
<option value="$PROJECT_DIR$/src/main.js" />
|
||||
<option value="$PROJECT_DIR$/config/index.js" />
|
||||
<option value="$PROJECT_DIR$/src/api/api.js" />
|
||||
<option value="$PROJECT_DIR$/vue_study.md" />
|
||||
<option value="$PROJECT_DIR$/src/App.vue" />
|
||||
<option value="$PROJECT_DIR$/src/views/Login.vue" />
|
||||
<option value="$PROJECT_DIR$/src/views/Home.vue" />
|
||||
<option value="$PROJECT_DIR$/src/views/nav1/Table.vue" />
|
||||
<option value="$PROJECT_DIR$/src/views/nav1/user.vue" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="-138" />
|
||||
<option name="y" value="233" />
|
||||
<option name="width" value="1625" />
|
||||
<option name="height" value="1220" />
|
||||
<option name="x" value="-9" />
|
||||
<option name="y" value="-9" />
|
||||
<option name="width" value="1938" />
|
||||
<option name="height" value="1048" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
@@ -97,17 +231,10 @@
|
||||
<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>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
@@ -123,6 +250,8 @@
|
||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||
<property name="nodejs_package_manager_path" value="npm" />
|
||||
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
|
||||
<property name="ts.external.directory.path" value="E:\PyCharm 2019.1.3\plugins\JavaScriptLanguage\jsLanguageServicesImpl\external" />
|
||||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
@@ -176,7 +305,11 @@
|
||||
<workItem from="1610599073204" duration="780000" />
|
||||
<workItem from="1611143220514" duration="3770000" />
|
||||
<workItem from="1611321289369" duration="599000" />
|
||||
<workItem from="1611490729654" duration="2333000" />
|
||||
<workItem from="1611490729654" duration="6105000" />
|
||||
<workItem from="1613019351924" duration="19249000" />
|
||||
<workItem from="1613109888235" duration="8752000" />
|
||||
<workItem from="1613193364112" duration="15888000" />
|
||||
<workItem from="1613276072538" duration="27018000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="自动机器学习前端组件">
|
||||
<created>1601387458948</created>
|
||||
@@ -199,38 +332,69 @@
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1608984900939</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="4" />
|
||||
<task id="LOCAL-00004" summary="修改main.js">
|
||||
<created>1611496809086</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1611496809086</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="30787000" />
|
||||
<option name="totallyTimeSpent" value="105466000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-7" y="-7" width="1550" height="838" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25268096" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info content_ui="combo" id="Project" order="0" sideWeight="0.4979757" visible="true" weight="0.15013404" />
|
||||
<window_info id="Structure" order="1" sideWeight="0.5020243" side_tool="true" weight="0.18096514" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="TypeScript" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
<window_info anchor="bottom" id="Run" order="2" weight="0.32991204" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Version Control" order="8" weight="0.32884097" />
|
||||
<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 anchor="bottom" id="Terminal" order="11" visible="true" weight="0.27565983" />
|
||||
<window_info anchor="bottom" id="Python Console" order="12" />
|
||||
<window_info anchor="bottom" id="Terminal" order="11" weight="0.3328446" />
|
||||
<window_info active="true" anchor="bottom" id="Python Console" order="12" visible="true" weight="0.38856304" />
|
||||
<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" />
|
||||
<window_info anchor="right" id="SciView" order="3" />
|
||||
<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 id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" weight="0.32991204" />
|
||||
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||
<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="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" />
|
||||
<window_info anchor="right" id="SciView" order="3" />
|
||||
<window_info anchor="right" id="Database" order="4" />
|
||||
</layout-to-restore>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="1" />
|
||||
@@ -238,40 +402,16 @@
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="自动机器学习前端组件" />
|
||||
<MESSAGE value="更新readme,添加真实数据json" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="更新readme,添加真实数据json" />
|
||||
<MESSAGE value="修改main.js" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="修改main.js" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/views/nav1/user.vue" />
|
||||
<entry file="file://$PROJECT_DIR$/src/views/nav1/Table.vue" />
|
||||
<entry file="file://$PROJECT_DIR$/src/views/nav1/Form.vue" />
|
||||
<entry file="file://$PROJECT_DIR$/src/api/api.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="368">
|
||||
<caret line="16" column="93" selection-start-line="16" selection-start-column="93" selection-end-line="16" selection-end-column="93" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<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>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/README.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="1173">
|
||||
<caret line="51" column="21" selection-start-line="51" selection-start-column="21" selection-end-line="51" selection-end-column="21" />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/App.vue">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/Home.vue">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
<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" />
|
||||
@@ -295,46 +435,173 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/charts/echarts.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="138">
|
||||
<caret line="6" column="31" selection-start-line="6" selection-start-column="31" selection-end-line="6" selection-end-column="31" />
|
||||
<entry file="file://$PROJECT_DIR$/README.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="-65">
|
||||
<caret line="51" column="21" selection-start-line="51" selection-start-column="21" selection-end-line="51" selection-end-column="21" />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/Main.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="115">
|
||||
<caret line="5" selection-start-line="5" selection-end-line="5" />
|
||||
<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/routes.js">
|
||||
<entry file="file://$PROJECT_DIR$/config/prod.env.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build/webpack.dev.conf.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build/webpack.prod.conf.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build/webpack.base.conf.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/mock/mock.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="138">
|
||||
<caret line="15" column="21" selection-start-line="15" selection-start-column="21" selection-end-line="15" selection-end-column="21" />
|
||||
<folding>
|
||||
<element signature="e#0#37#0" expanded="true" />
|
||||
</folding>
|
||||
<state relative-caret-position="184">
|
||||
<caret line="41" column="20" lean-forward="true" selection-start-line="41" selection-start-column="20" selection-end-line="41" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/Login.vue">
|
||||
<entry file="file://$PROJECT_DIR$/src/views/charts/echarts.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-23">
|
||||
<caret line="20" column="17" selection-start-line="20" selection-start-column="17" selection-end-line="20" selection-end-column="17" />
|
||||
<state relative-caret-position="23">
|
||||
<caret line="6" column="31" selection-start-line="6" selection-start-column="31" selection-end-line="6" selection-end-column="31" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/config/dev.env.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="23">
|
||||
<caret line="1" column="28" selection-start-line="1" selection-start-column="28" selection-end-line="1" selection-end-column="28" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.dom.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="23">
|
||||
<caret line="9573" column="4" selection-start-line="9573" selection-start-column="4" selection-end-line="9573" selection-end-column="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<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="548">
|
||||
<caret line="157" column="17" selection-start-line="157" selection-start-column="17" selection-end-line="157" selection-end-column="17" />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
<provider editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/main.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="299">
|
||||
<caret line="16" column="18" lean-forward="true" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
|
||||
<state relative-caret-position="213">
|
||||
<caret line="17" column="46" selection-start-line="17" selection-start-column="46" selection-end-line="17" selection-end-column="46" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/config/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="497">
|
||||
<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$/dist/static/js/vendor.0f1354d86ff9bd2ab3e5.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="158">
|
||||
<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/App.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="46">
|
||||
<caret line="11" column="16" lean-forward="true" selection-start-line="11" selection-start-column="16" selection-end-line="11" selection-end-column="16" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/node_modules/_axios@0.15.3@axios/index.d.ts">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="26">
|
||||
<caret line="122" column="20" selection-start-line="122" selection-start-column="20" selection-end-line="122" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/common/js/util.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-69" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/Home.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="74">
|
||||
<caret line="93" column="18" selection-start-line="93" selection-start-column="18" selection-end-line="93" selection-end-column="18" />
|
||||
</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" lean-forward="true" selection-start-line="8" selection-end-line="9" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/routes.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="92">
|
||||
<caret line="4" column="42" lean-forward="true" selection-start-line="4" selection-start-column="13" selection-end-line="4" selection-end-column="42" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://E:/anaconda3/Lib/site-packages/notebook/static/components/codemirror/mode/coffeescript/coffeescript.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="266">
|
||||
<caret line="314" column="8" selection-start-line="314" selection-start-column="8" selection-end-line="314" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/Login.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="315">
|
||||
<caret line="57" column="8" selection-start-line="57" selection-start-column="8" selection-end-line="57" selection-end-column="8" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/nav1/Table.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="184">
|
||||
<caret line="117" column="39" lean-forward="true" selection-start-line="117" selection-start-column="39" selection-end-line="117" selection-end-column="39" />
|
||||
<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" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/views/nav1/user.vue">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="121">
|
||||
<caret line="45" column="12" selection-start-line="45" selection-start-column="12" selection-end-line="45" selection-end-column="12" />
|
||||
<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="e#1086#1130#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
+10
-2
@@ -7,7 +7,7 @@ module.exports = {
|
||||
index: path.resolve(__dirname, '../dist/index.html'),
|
||||
assetsRoot: path.resolve(__dirname, '../dist'),
|
||||
assetsSubDirectory: 'static',
|
||||
assetsPublicPath: '/vue-admin/',
|
||||
assetsPublicPath: '/AML_fronted/',
|
||||
productionSourceMap: true,
|
||||
// Gzip off by default as many popular static hosts such as
|
||||
// Surge or Netlify already gzip all static assets for you.
|
||||
@@ -27,7 +27,15 @@ module.exports = {
|
||||
autoOpenBrowser: true,
|
||||
assetsSubDirectory: 'static',
|
||||
assetsPublicPath: '/',
|
||||
proxyTable: {},
|
||||
proxyTable: {
|
||||
'/api': {
|
||||
target: 'http://localhost:8000', //开发环境,设置调用接口域名和端口号
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/api': '' //这里理解成用‘/api’代替target里面的地址,组件中我们调接口时直接用/api代替
|
||||
// 比如我要调用'http://0.0.0.0:3000/user/add',直接写‘/api/user/add’即可 代理后地址栏显示/
|
||||
}
|
||||
}},
|
||||
// CSS Sourcemaps off by default because relative paths are "buggy"
|
||||
// with this option, according to the CSS-Loader README
|
||||
// (https://github.com/webpack/css-loader#sourcemaps)
|
||||
|
||||
+5
-2
@@ -25,11 +25,12 @@
|
||||
"babel-core": "^6.22.1",
|
||||
"babel-loader": "^6.2.10",
|
||||
"babel-plugin-transform-runtime": "^6.22.0",
|
||||
"babel-preset-env": "^1.2.1",
|
||||
"babel-polyfill": "^6.16.0",
|
||||
"babel-preset-env": "^1.2.1",
|
||||
"babel-preset-es2015": "^6.0.0",
|
||||
"babel-preset-stage-2": "^6.22.0",
|
||||
"babel-register": "^6.22.0",
|
||||
"bootstrap": "^4.6.0",
|
||||
"chalk": "^1.1.3",
|
||||
"connect-history-api-fallback": "^1.3.0",
|
||||
"copy-webpack-plugin": "^4.0.1",
|
||||
@@ -42,13 +43,14 @@
|
||||
"function-bind": "^1.0.2",
|
||||
"html-webpack-plugin": "^2.28.0",
|
||||
"http-proxy-middleware": "^0.17.3",
|
||||
"webpack-bundle-analyzer": "^2.2.1",
|
||||
"jquery": "^3.5.1",
|
||||
"json-loader": "^0.5.4",
|
||||
"mockjs": "^1.0.1-beta3",
|
||||
"node-sass": "^4.5.0",
|
||||
"opn": "^4.0.2",
|
||||
"optimize-css-assets-webpack-plugin": "^1.3.0",
|
||||
"ora": "^1.0.0",
|
||||
"popper.js": "^1.16.1",
|
||||
"rimraf": "^2.6.0",
|
||||
"sass-loader": "^6.0.0",
|
||||
"semver": "^5.3.0",
|
||||
@@ -58,6 +60,7 @@
|
||||
"vue-style-loader": "^2.0.0",
|
||||
"vue-template-compiler": "^2.2.4",
|
||||
"webpack": "^2.2.1",
|
||||
"webpack-bundle-analyzer": "^2.2.1",
|
||||
"webpack-dev-middleware": "^1.10.0",
|
||||
"webpack-hot-middleware": "^2.16.1",
|
||||
"webpack-merge": "^2.6.1"
|
||||
|
||||
+20
-2
@@ -2,7 +2,7 @@
|
||||
<div id="app">
|
||||
<transition name="fade"
|
||||
mode="out-in">
|
||||
<router-view></router-view>
|
||||
<router-view v-if="isRouterAlive"></router-view>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
@@ -11,7 +11,25 @@
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
}
|
||||
},
|
||||
provide () {
|
||||
return {
|
||||
reload: this.reload
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isRouterAlive: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
reload () {
|
||||
this.isRouterAlive = false
|
||||
this.$nextTick(function () {
|
||||
this.isRouterAlive = true
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
+12
-2
@@ -2,7 +2,9 @@ import axios from 'axios';
|
||||
|
||||
let base = '';
|
||||
|
||||
export const requestLogin = params => { return axios.post(`${base}/login`, params).then(res => res.data); };
|
||||
export const requestLogin ={mag:"success",
|
||||
code:200,
|
||||
user:"lzh"};
|
||||
|
||||
export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); };
|
||||
|
||||
@@ -14,4 +16,12 @@ export const batchRemoveUser = params => { return axios.get(`${base}/user/batchr
|
||||
|
||||
export const editUser = params => { return axios.get(`${base}/user/edit`, { params: params }); };
|
||||
|
||||
export const addUser = params => { return axios.get(`${base}/user/add`, { params: params }); };
|
||||
export const addUser = params => { return axios.get(`${base}/user/add`, { params: params }); };
|
||||
|
||||
export const getDataList=params=>{
|
||||
return axios.get(
|
||||
"/dev/api/get_data_list",
|
||||
).then(function (response) {
|
||||
console.log(response)
|
||||
})
|
||||
}
|
||||
+5
-2
@@ -3,6 +3,8 @@ import Vue from 'vue'
|
||||
import App from './App'
|
||||
import ElementUI from 'element-ui'
|
||||
import 'element-ui/lib/theme-default/index.css'
|
||||
import 'bootstrap'
|
||||
import $ from 'jquery'
|
||||
//import './assets/theme/theme-green/index.css'
|
||||
import VueRouter from 'vue-router'
|
||||
import store from './vuex/store'
|
||||
@@ -10,8 +12,9 @@ import Vuex from 'vuex'
|
||||
//import NProgress from 'nprogress'
|
||||
//import 'nprogress/nprogress.css'
|
||||
import routes from './routes'
|
||||
import Mock from './mock'
|
||||
Mock.bootstrap();
|
||||
// import Mock from './mock'
|
||||
//
|
||||
// Mock.bootstrap();
|
||||
import 'font-awesome/css/font-awesome.min.css'
|
||||
Vue.config.devtools = true;
|
||||
Vue.use(ElementUI)
|
||||
|
||||
+154
-154
@@ -1,154 +1,154 @@
|
||||
import axios from 'axios';
|
||||
import MockAdapter from 'axios-mock-adapter';
|
||||
import { LoginUsers, Users } from './data/user';
|
||||
let _Users = Users;
|
||||
|
||||
export default {
|
||||
/**
|
||||
* mock bootstrap
|
||||
*/
|
||||
bootstrap() {
|
||||
let mock = new MockAdapter(axios);
|
||||
|
||||
// mock success request
|
||||
mock.onGet('/success').reply(200, {
|
||||
msg: 'success'
|
||||
});
|
||||
|
||||
// mock error request
|
||||
mock.onGet('/error').reply(500, {
|
||||
msg: 'failure'
|
||||
});
|
||||
|
||||
//登录
|
||||
mock.onPost('/login').reply(config => {
|
||||
let {username, password} = JSON.parse(config.data);
|
||||
return new Promise((resolve, reject) => {
|
||||
let user = null;
|
||||
setTimeout(() => {
|
||||
let hasUser = LoginUsers.some(u => {
|
||||
if (u.username === username && u.password === password) {
|
||||
user = JSON.parse(JSON.stringify(u));
|
||||
user.password = undefined;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
if (hasUser) {
|
||||
resolve([200, { code: 200, msg: '请求成功', user }]);
|
||||
} else {
|
||||
resolve([200, { code: 500, msg: '账号或密码错误' }]);
|
||||
}
|
||||
}, 1000);
|
||||
});
|
||||
});
|
||||
|
||||
//获取用户列表
|
||||
mock.onGet('/user/list').reply(config => {
|
||||
let {name} = config.params;
|
||||
let mockUsers = _Users.filter(user => {
|
||||
if (name && user.name.indexOf(name) == -1) return false;
|
||||
return true;
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
users: mockUsers
|
||||
}]);
|
||||
}, 1000);
|
||||
});
|
||||
});
|
||||
|
||||
//获取用户列表(分页)
|
||||
mock.onGet('/user/listpage').reply(config => {
|
||||
let {page, name} = config.params;
|
||||
let mockUsers = _Users.filter(user => {
|
||||
if (name && user.name.indexOf(name) == -1) return false;
|
||||
return true;
|
||||
});
|
||||
let total = mockUsers.length;
|
||||
mockUsers = mockUsers.filter((u, index) => index < 20 * page && index >= 20 * (page - 1));
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
total: total,
|
||||
users: mockUsers
|
||||
}]);
|
||||
}, 1000);
|
||||
});
|
||||
});
|
||||
|
||||
//删除用户
|
||||
mock.onGet('/user/remove').reply(config => {
|
||||
let { id } = config.params;
|
||||
_Users = _Users.filter(u => u.id !== id);
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
code: 200,
|
||||
msg: '删除成功'
|
||||
}]);
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
|
||||
//批量删除用户
|
||||
mock.onGet('/user/batchremove').reply(config => {
|
||||
let { ids } = config.params;
|
||||
ids = ids.split(',');
|
||||
_Users = _Users.filter(u => !ids.includes(u.id));
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
code: 200,
|
||||
msg: '删除成功'
|
||||
}]);
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
|
||||
//编辑用户
|
||||
mock.onGet('/user/edit').reply(config => {
|
||||
let { id, name, addr, age, birth, sex } = config.params;
|
||||
_Users.some(u => {
|
||||
if (u.id === id) {
|
||||
u.name = name;
|
||||
u.addr = addr;
|
||||
u.age = age;
|
||||
u.birth = birth;
|
||||
u.sex = sex;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
code: 200,
|
||||
msg: '编辑成功'
|
||||
}]);
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
|
||||
//新增用户
|
||||
mock.onGet('/user/add').reply(config => {
|
||||
let { name, addr, age, birth, sex } = config.params;
|
||||
_Users.push({
|
||||
name: name,
|
||||
addr: addr,
|
||||
age: age,
|
||||
birth: birth,
|
||||
sex: sex
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
resolve([200, {
|
||||
code: 200,
|
||||
msg: '新增成功'
|
||||
}]);
|
||||
}, 500);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
// import axios from 'axios';
|
||||
// import MockAdapter from 'axios-mock-adapter';
|
||||
// import { LoginUsers, Users } from './data/user';
|
||||
// let _Users = Users;
|
||||
//
|
||||
// export default {
|
||||
// /**
|
||||
// * mock bootstrap
|
||||
// */
|
||||
// bootstrap() {
|
||||
// let mock = new MockAdapter(axios);
|
||||
//
|
||||
// // mock success request
|
||||
// mock.onGet('/success').reply(200, {
|
||||
// msg: 'success'
|
||||
// });
|
||||
//
|
||||
// // mock error request
|
||||
// mock.onGet('/error').reply(500, {
|
||||
// msg: 'failure'
|
||||
// });
|
||||
//
|
||||
// //登录
|
||||
// mock.onPost('/login').reply(config => {
|
||||
// let {username, password} = JSON.parse(config.data);
|
||||
// return new Promise((resolve, reject) => {
|
||||
// let user = null;
|
||||
// setTimeout(() => {
|
||||
// let hasUser = LoginUsers.some(u => {
|
||||
// if (u.username === username && u.password === password) {
|
||||
// user = JSON.parse(JSON.stringify(u));
|
||||
// user.password = undefined;
|
||||
// return true;
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// if (hasUser) {
|
||||
// resolve([200, { code: 200, msg: '请求成功', user }]);
|
||||
// } else {
|
||||
// resolve([200, { code: 500, msg: '账号或密码错误' }]);
|
||||
// }
|
||||
// }, 1000);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //获取用户列表
|
||||
// mock.onGet('/user/list').reply(config => {
|
||||
// let {name} = config.params;
|
||||
// let mockUsers = _Users.filter(user => {
|
||||
// if (name && user.name.indexOf(name) == -1) return false;
|
||||
// return true;
|
||||
// });
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// users: mockUsers
|
||||
// }]);
|
||||
// }, 1000);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //获取用户列表(分页)
|
||||
// mock.onGet('/user/listpage').reply(config => {
|
||||
// let {page, name} = config.params;
|
||||
// let mockUsers = _Users.filter(user => {
|
||||
// if (name && user.name.indexOf(name) == -1) return false;
|
||||
// return true;
|
||||
// });
|
||||
// let total = mockUsers.length;
|
||||
// mockUsers = mockUsers.filter((u, index) => index < 20 * page && index >= 20 * (page - 1));
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// total: total,
|
||||
// users: mockUsers
|
||||
// }]);
|
||||
// }, 1000);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //删除用户
|
||||
// mock.onGet('/user/remove').reply(config => {
|
||||
// let { id } = config.params;
|
||||
// _Users = _Users.filter(u => u.id !== id);
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// code: 200,
|
||||
// msg: '删除成功'
|
||||
// }]);
|
||||
// }, 500);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //批量删除用户
|
||||
// mock.onGet('/user/batchremove').reply(config => {
|
||||
// let { ids } = config.params;
|
||||
// ids = ids.split(',');
|
||||
// _Users = _Users.filter(u => !ids.includes(u.id));
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// code: 200,
|
||||
// msg: '删除成功'
|
||||
// }]);
|
||||
// }, 500);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //编辑用户
|
||||
// mock.onGet('/user/edit').reply(config => {
|
||||
// let { id, name, addr, age, birth, sex } = config.params;
|
||||
// _Users.some(u => {
|
||||
// if (u.id === id) {
|
||||
// u.name = name;
|
||||
// u.addr = addr;
|
||||
// u.age = age;
|
||||
// u.birth = birth;
|
||||
// u.sex = sex;
|
||||
// return true;
|
||||
// }
|
||||
// });
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// code: 200,
|
||||
// msg: '编辑成功'
|
||||
// }]);
|
||||
// }, 500);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// //新增用户
|
||||
// mock.onGet('/user/add').reply(config => {
|
||||
// let { name, addr, age, birth, sex } = config.params;
|
||||
// _Users.push({
|
||||
// name: name,
|
||||
// addr: addr,
|
||||
// age: age,
|
||||
// birth: birth,
|
||||
// sex: sex
|
||||
// });
|
||||
// return new Promise((resolve, reject) => {
|
||||
// setTimeout(() => {
|
||||
// resolve([200, {
|
||||
// code: 200,
|
||||
// msg: '新增成功'
|
||||
// }]);
|
||||
// }, 500);
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// };
|
||||
+10
-17
@@ -16,12 +16,12 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { requestLogin } from '../api/api';
|
||||
|
||||
//import NProgress from 'nprogress'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
logining: false,
|
||||
logining:false,
|
||||
ruleForm2: {
|
||||
account: 'admin',
|
||||
checkPass: '123456'
|
||||
@@ -36,7 +36,7 @@
|
||||
//{ validator: validaePass2 }
|
||||
]
|
||||
},
|
||||
checked: true
|
||||
checked: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
@@ -51,20 +51,13 @@
|
||||
this.logining = true;
|
||||
//NProgress.start();
|
||||
var loginParams = { username: this.ruleForm2.account, password: this.ruleForm2.checkPass };
|
||||
requestLogin(loginParams).then(data => {
|
||||
this.logining = false;
|
||||
//NProgress.done();
|
||||
let { msg, code, user } = data;
|
||||
if (code !== 200) {
|
||||
this.$message({
|
||||
message: msg,
|
||||
type: 'error'
|
||||
});
|
||||
} else {
|
||||
sessionStorage.setItem('user', JSON.stringify(user));
|
||||
this.$router.push({ path: '/table' });
|
||||
}
|
||||
});
|
||||
|
||||
this.logining = false;
|
||||
var user='admin'
|
||||
sessionStorage.setItem('user', JSON.stringify(user));
|
||||
this.$router.push({ path: '/table' });
|
||||
|
||||
;//fengexian
|
||||
} else {
|
||||
console.log('error submit!!');
|
||||
return false;
|
||||
|
||||
+123
-274
@@ -1,303 +1,152 @@
|
||||
<template>
|
||||
<section>
|
||||
<!--工具条-->
|
||||
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
|
||||
<el-form :inline="true" :model="filters">
|
||||
<el-form-item>
|
||||
<el-input v-model="filters.name" placeholder="姓名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" v-on:click="getUsers">查询</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleAdd">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
|
||||
<!--列表-->
|
||||
<el-table :data="users" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
|
||||
<el-table-column type="selection" width="55">
|
||||
</el-table-column>
|
||||
<el-table-column type="index" width="60">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" width="120" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="age" label="年龄" width="100" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="birth" label="生日" width="120" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="addr" label="地址" min-width="180" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150">
|
||||
<template scope="scope">
|
||||
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
|
||||
<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
|
||||
<el-upload
|
||||
drag
|
||||
accept=".csv, .txt, .xls, .xlsx"
|
||||
action="/api/upload_dataset"
|
||||
:limit="1"
|
||||
:before-upload="beforeUpload"
|
||||
:on-success="handleAvatarSuccess"
|
||||
:on-error="handleError"
|
||||
|
||||
>
|
||||
<el-button size="small" type="primary">
|
||||
<span class="iconfont icon-shangchuan" />上传文件
|
||||
</el-button>
|
||||
</el-upload>
|
||||
<span style="color: orange">上传文件仅支持 csv,txt,xls、xlsx类型</span>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%">
|
||||
<el-table-column prop="date" label="日期" width="180"></el-table-column>
|
||||
<el-table-column prop="name" label="姓名" width="180"></el-table-column>
|
||||
<el-table-column prop="address" label="地址" width="180"></el-table-column>
|
||||
<el-table-column label="操作" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="danger" @click="del(scope.row, scope.$index)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="数据预览" width="180">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" @click="jump(scope.row, scope.$index)">预览</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!--工具条-->
|
||||
<el-col :span="24" class="toolbar">
|
||||
<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
|
||||
<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="20" :total="total" style="float:right;">
|
||||
</el-pagination>
|
||||
</el-col>
|
||||
|
||||
<!--编辑界面-->
|
||||
<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
|
||||
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="editForm.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
<el-radio-group v-model="editForm.sex">
|
||||
<el-radio class="radio" :label="1">男</el-radio>
|
||||
<el-radio class="radio" :label="0">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄">
|
||||
<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="生日">
|
||||
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址">
|
||||
<el-input type="textarea" v-model="editForm.addr"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click.native="editFormVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!--新增界面-->
|
||||
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
|
||||
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input v-model="addForm.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
<el-radio-group v-model="addForm.sex">
|
||||
<el-radio class="radio" :label="1">男</el-radio>
|
||||
<el-radio class="radio" :label="0">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="年龄">
|
||||
<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="生日">
|
||||
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址">
|
||||
<el-input type="textarea" v-model="addForm.addr"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click.native="addFormVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- <div v-for="i in list">-->
|
||||
<!-- <h1>{{i}}</h1>-->
|
||||
<!-- </div>-->
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import util from '../../common/js/util'
|
||||
//import NProgress from 'nprogress'
|
||||
import { getUserListPage, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
|
||||
import axios from 'axios';
|
||||
// import { getDataList } from '../../api/api';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
data(){
|
||||
return {
|
||||
filters: {
|
||||
name: ''
|
||||
},
|
||||
users: [],
|
||||
total: 0,
|
||||
page: 1,
|
||||
listLoading: false,
|
||||
sels: [],//列表选中列
|
||||
|
||||
editFormVisible: false,//编辑界面是否显示
|
||||
editLoading: false,
|
||||
editFormRules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入姓名', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
//编辑界面数据
|
||||
editForm: {
|
||||
id: 0,
|
||||
name: '',
|
||||
sex: -1,
|
||||
age: 0,
|
||||
birth: '',
|
||||
addr: ''
|
||||
},
|
||||
|
||||
addFormVisible: false,//新增界面是否显示
|
||||
addLoading: false,
|
||||
addFormRules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入姓名', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
//新增界面数据
|
||||
addForm: {
|
||||
name: '',
|
||||
sex: -1,
|
||||
age: 0,
|
||||
birth: '',
|
||||
addr: ''
|
||||
}
|
||||
tableData: [],
|
||||
list:"name",
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//性别显示转换
|
||||
formatSex: function (row, column) {
|
||||
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page = val;
|
||||
this.getUsers();
|
||||
},
|
||||
//获取用户列表
|
||||
getUsers() {
|
||||
let para = {
|
||||
page: this.page,
|
||||
name: this.filters.name
|
||||
};
|
||||
this.listLoading = true;
|
||||
//NProgress.start();
|
||||
getUserListPage(para).then((res) => {
|
||||
this.total = res.data.total;
|
||||
this.users = res.data.users;
|
||||
this.listLoading = false;
|
||||
//NProgress.done();
|
||||
});
|
||||
},
|
||||
//删除
|
||||
handleDel: function (index, row) {
|
||||
this.$confirm('确认删除该记录吗?', '提示', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true;
|
||||
//NProgress.start();
|
||||
let para = { id: row.id };
|
||||
removeUser(para).then((res) => {
|
||||
this.listLoading = false;
|
||||
//NProgress.done();
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.getUsers();
|
||||
});
|
||||
}).catch(() => {
|
||||
|
||||
});
|
||||
},
|
||||
//显示编辑界面
|
||||
handleEdit: function (index, row) {
|
||||
this.editFormVisible = true;
|
||||
this.editForm = Object.assign({}, row);
|
||||
},
|
||||
//显示新增界面
|
||||
handleAdd: function () {
|
||||
this.addFormVisible = true;
|
||||
this.addForm = {
|
||||
name: '',
|
||||
sex: -1,
|
||||
age: 0,
|
||||
birth: '',
|
||||
addr: ''
|
||||
};
|
||||
},
|
||||
//编辑
|
||||
editSubmit: function () {
|
||||
this.$refs.editForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm('确认提交吗?', '提示', {}).then(() => {
|
||||
this.editLoading = true;
|
||||
//NProgress.start();
|
||||
let para = Object.assign({}, this.editForm);
|
||||
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
|
||||
editUser(para).then((res) => {
|
||||
this.editLoading = false;
|
||||
//NProgress.done();
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.$refs['editForm'].resetFields();
|
||||
this.editFormVisible = false;
|
||||
this.getUsers();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
//新增
|
||||
addSubmit: function () {
|
||||
this.$refs.addForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$confirm('确认提交吗?', '提示', {}).then(() => {
|
||||
this.addLoading = true;
|
||||
//NProgress.start();
|
||||
let para = Object.assign({}, this.addForm);
|
||||
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
|
||||
addUser(para).then((res) => {
|
||||
this.addLoading = false;
|
||||
//NProgress.done();
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.$refs['addForm'].resetFields();
|
||||
this.addFormVisible = false;
|
||||
this.getUsers();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
selsChange: function (sels) {
|
||||
this.sels = sels;
|
||||
},
|
||||
//批量删除
|
||||
batchRemove: function () {
|
||||
var ids = this.sels.map(item => item.id).toString();
|
||||
this.$confirm('确认删除选中记录吗?', '提示', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true;
|
||||
//NProgress.start();
|
||||
let para = { ids: ids };
|
||||
batchRemoveUser(para).then((res) => {
|
||||
this.listLoading = false;
|
||||
//NProgress.done();
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
});
|
||||
this.getUsers();
|
||||
});
|
||||
}).catch(() => {
|
||||
mounted () {
|
||||
|
||||
});
|
||||
var body=this.data_list()
|
||||
console.log(body)
|
||||
|
||||
},
|
||||
|
||||
inject:['reload'],
|
||||
methods:{
|
||||
//获取用户的所有数据集
|
||||
data_list(){
|
||||
axios.get('/api/get_data_list')
|
||||
.then((response)=>{
|
||||
for (var dataset of response.data.data){
|
||||
this.tableData.push({
|
||||
date:2,
|
||||
name:dataset,
|
||||
address:dataset
|
||||
})}
|
||||
})
|
||||
},
|
||||
//文件上传检验
|
||||
beforeUpload(file) {
|
||||
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
|
||||
|
||||
const whiteList = ["csv","txt","xls", "xlsx"];
|
||||
|
||||
if (whiteList.indexOf(fileSuffix) === -1) {
|
||||
this.$message("上传文件只能是 csv、txt、xls、xlsx格式", "error");
|
||||
return false;
|
||||
}
|
||||
|
||||
const isLt10M = file.size / 1024 / 1024 < 10;
|
||||
|
||||
if (!isLt10M) {
|
||||
this.$message("上传文件大小不能超过 15MB", "error");
|
||||
return false;
|
||||
}
|
||||
},
|
||||
//上传成功回调
|
||||
handleAvatarSuccess(response, file,fileList) {
|
||||
console.log("上传成功!")
|
||||
this.$message("上传成功!",'info')
|
||||
//清空上传列表
|
||||
this.reload()
|
||||
|
||||
},
|
||||
//上传失败回调
|
||||
handleError(err, file, fileList) {
|
||||
console.log("上传失败")
|
||||
var message = err.message
|
||||
var body = message.substring(4, message.length)
|
||||
var erro = JSON.parse(body)
|
||||
console.log(erro)
|
||||
this.$message("上传失败! " + erro.msg, 'warning')
|
||||
|
||||
|
||||
},
|
||||
//删除指定数据集文件
|
||||
del(row,i){
|
||||
console.log(row.name,i)
|
||||
axios.post('/api/del_dataset',{
|
||||
username:"admin",
|
||||
dataset_name:row.name
|
||||
}).then((response)=> {
|
||||
console.log("查看返回值:",response.data)
|
||||
var body=response.data
|
||||
if (body.code==200)
|
||||
this.$message("删除成功","info")
|
||||
else
|
||||
this.$message("删除失败","error")
|
||||
this.reload()
|
||||
}
|
||||
)
|
||||
},
|
||||
//跳转到数据预览页面
|
||||
jump(dataset_name){
|
||||
this.$router.push({ path: '/user' });
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
mounted() {
|
||||
this.getUsers();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.el-col {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
</style>
|
||||
+78
-46
@@ -2,72 +2,104 @@
|
||||
<section>
|
||||
<!--工具条-->
|
||||
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
|
||||
<el-form :inline="true" :model="filters">
|
||||
<el-form-item>
|
||||
<el-input v-model="filters.name" placeholder="姓名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" v-on:click="getUser">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<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="show_dataset">查看</el-button>
|
||||
</el-col>
|
||||
|
||||
<!--列表-->
|
||||
<template>
|
||||
<el-table :data="users" highlight-current-row v-loading="loading" style="width: 100%;">
|
||||
<el-table-column type="index" width="60">
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" width="120" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="age" label="年龄" width="100" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="birth" label="生日" width="120" sortable>
|
||||
</el-table-column>
|
||||
<el-table-column prop="addr" label="地址" min-width="180" sortable>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table class="tb-edit" highlight-current-row :data="tableData" style="width: 100%">
|
||||
|
||||
<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>
|
||||
</template>
|
||||
</el-table>
|
||||
|
||||
</template>
|
||||
|
||||
</section>
|
||||
</template>
|
||||
<script>
|
||||
import { getUserList } from '../../api/api';
|
||||
import axios from 'axios'
|
||||
import Table from './Table.vue'
|
||||
|
||||
//import NProgress from 'nprogress'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
filters: {
|
||||
name: ''
|
||||
},
|
||||
loading: false,
|
||||
users: [
|
||||
]
|
||||
options:[],
|
||||
value:"",
|
||||
cols: [],
|
||||
tableData: []
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
inject:['reload'],
|
||||
mounted() {
|
||||
this.get_datasets()
|
||||
},
|
||||
methods: {
|
||||
//性别显示转换
|
||||
formatSex: function (row, column) {
|
||||
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
|
||||
get_datasets(){
|
||||
axios.get('/api/get_data_list')
|
||||
.then((response)=>{
|
||||
for (var dataset of response.data.data){
|
||||
this.options.push({
|
||||
label:dataset,
|
||||
value:dataset
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//获取用户列表
|
||||
getUser: function () {
|
||||
let para = {
|
||||
name: this.filters.name
|
||||
};
|
||||
this.loading = true;
|
||||
//NProgress.start();
|
||||
getUserList(para).then((res) => {
|
||||
this.users = res.data.users;
|
||||
this.loading = false;
|
||||
//NProgress.done();
|
||||
});
|
||||
show_dataset(){
|
||||
this.cols=[]
|
||||
this.tableData=[]
|
||||
axios.get('api/show_dataset?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){
|
||||
this.cols.push({
|
||||
label:column,
|
||||
prop:column,
|
||||
type:"sort"
|
||||
})
|
||||
}
|
||||
//计算数据长度,循环添加
|
||||
|
||||
console.log(columns,columns[0])
|
||||
console.log(body_data)
|
||||
var data_length=body_data[columns[0]].length
|
||||
for(var i=0;i<data_length;i++){
|
||||
//按行添加
|
||||
var row={}
|
||||
for(var column of columns){
|
||||
row[column]=body_data[column][i]
|
||||
}
|
||||
console.log(row)
|
||||
this.tableData.push(row)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getUser();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
+158
@@ -0,0 +1,158 @@
|
||||
# 1、循环v-for
|
||||
## 1.1 循环数组
|
||||
```vue
|
||||
<div id="app">
|
||||
<ol>
|
||||
<li v-for="site in sites">
|
||||
{{ site.name }}
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: {
|
||||
sites: [
|
||||
{ name: 'Runoob' },
|
||||
{ name: 'Google' },
|
||||
{ name: 'Taobao' }
|
||||
]
|
||||
}
|
||||
})
|
||||
</script>
|
||||
```
|
||||
|
||||
## 1.2 迭代对象
|
||||
主要三种方法迭代
|
||||
- 迭代对象中的value `value in opject`
|
||||
- 迭代对象中的key,value `(value,key) in object`
|
||||
- 迭代对象中的key,value,index `(value,key,index) in object`
|
||||
```vue
|
||||
<div id="app">
|
||||
<ul>
|
||||
<li v-for="value in object">
|
||||
{{ value }}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
data: {
|
||||
object: {
|
||||
name: '菜鸟教程',
|
||||
url: 'http://www.runoob.com',
|
||||
slogan: '学的不仅是技术,更是梦想!'
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
```
|
||||
|
||||
# 2、监听属性watch
|
||||
通过wacth响应数据变化。$watch是一个实例化的对象,通过两个参数`监听的变量,变量数据改变的回调函数`
|
||||
- 实例
|
||||
data 属性中, kilometers 和 meters 初始值都为 0。watch 对象创建了两个方法 kilometers 和 meters。
|
||||
|
||||
当我们再输入框输入数据时,watch 会实时监听数据变化并改变自身的值
|
||||
```vue
|
||||
<div id = "computed_props">
|
||||
千米 : <input type = "text" v-model = "kilometers">
|
||||
米 : <input type = "text" v-model = "meters">
|
||||
</div>
|
||||
<p id="info"></p>
|
||||
<script type = "text/javascript">
|
||||
var vm = new Vue({
|
||||
el: '#computed_props',
|
||||
data: {
|
||||
kilometers : 0,
|
||||
meters:0
|
||||
},
|
||||
methods: {
|
||||
},
|
||||
computed :{
|
||||
},
|
||||
watch : {
|
||||
kilometers:function(val) {
|
||||
this.kilometers = val;
|
||||
this.meters = this.kilometers * 1000
|
||||
},
|
||||
meters : function (val) {
|
||||
this.kilometers = val/ 1000;
|
||||
this.meters = val;
|
||||
}
|
||||
}
|
||||
});
|
||||
// $watch 是一个实例方法
|
||||
vm.$watch('kilometers', function (newValue, oldValue) {
|
||||
// 这个回调将在 vm.kilometers 改变后调用
|
||||
document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
|
||||
})
|
||||
</script>
|
||||
```
|
||||
|
||||
# 3、表单
|
||||
## 3.1 v-model
|
||||
修饰符
|
||||
- .lazy
|
||||
.lazy在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:
|
||||
|
||||
- .number
|
||||
如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:
|
||||
`<input v-model.number="age" type="number">`
|
||||
|
||||
- .trim
|
||||
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:
|
||||
`<input v-model.trim="msg">`
|
||||
|
||||
# 4、Element UI
|
||||
## 4.1 表格el_table
|
||||
当`el-table`元素中注入`data`对象数组后,
|
||||
在`el-table-column`中用`prop`属性来对应对象中的键名即可填入数据,用`label`属性来定义表格的列名。可以使用`width`属性来定义列宽。
|
||||
## 4.2 文件上传按钮el-upload
|
||||
#### ①基本操作
|
||||
```html
|
||||
<el-upload :action="uploadActionUrl">
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
</el-upload>
|
||||
```
|
||||
`:action`是执行上传动作的后台接口
|
||||
`el-button`是触发上传的按钮
|
||||
|
||||
#### ②文件上传数量限制
|
||||
```html
|
||||
<el-upload
|
||||
:action="uploadActionUrl"
|
||||
multiple
|
||||
:limit="3"
|
||||
:on-exceed="handleExceed">
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
</el-upload>
|
||||
```
|
||||
`multiple`设置是否同时选中多个文件
|
||||
`:limit` 设置最多上传文件数量
|
||||
`on-exceed` 绑定方法处理超出数量后的动作
|
||||
#### 上传格式+大小限制
|
||||
```html
|
||||
<el-upload
|
||||
:action="uploadActionUrl"
|
||||
accept="image/jpeg,image/gif,image/png"
|
||||
:before-upload="onBeforeUpload"
|
||||
multiple
|
||||
:limit="3"
|
||||
:on-exceed="handleExceed">
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">请上传图片格式文件</div>
|
||||
</el-upload>
|
||||
```
|
||||
---
|
||||
## 附录 排除记录
|
||||
1、axios请求后端接口(代理已配置无误)前端报错
|
||||
原因:使用mock会拦截所有的ajax请求,因此浏览器无法从后端服务器找到路径
|
||||
|
||||
2、vue在页面加载时this显示为空
|
||||
- 原因:混合使用了普通函数和箭头函数(具体错误原因在axios的回调函数中使用了箭头函数)使得this的指向发生了变化
|
||||
- 解决方法:将回调函数以匿名函数的形式使用,methods中尽量通过普通函数定义,避免箭头函数的使用
|
||||
Reference in New Issue
Block a user