Commit bad46fae authored by superman's avatar superman

update

parent 11ac5abf
......@@ -2,18 +2,31 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="ec208c71-5ff8-4642-a786-fad4f24be9b8" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Users/Additem.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Users/List.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Users/EditItem.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/dist/index.css" afterPath="$PROJECT_DIR$/dist/index.css" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/dist/index.js" afterPath="$PROJECT_DIR$/dist/index.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/proxy.config.js" afterPath="$PROJECT_DIR$/proxy.config.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/Layout/Layout.less" afterPath="$PROJECT_DIR$/src/components/Layout/Layout.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx" afterPath="$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/MainHeader/MainHeader.less" afterPath="$PROJECT_DIR$/src/components/MainHeader/MainHeader.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Announcement/List.jsx" afterPath="$PROJECT_DIR$/src/containers/Announcement/List.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/App/App.jsx" afterPath="$PROJECT_DIR$/src/containers/App/App.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/App/App.less" afterPath="$PROJECT_DIR$/src/containers/App/App.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Product/EditItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Product/EditItem.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Product/List.jsx" afterPath="$PROJECT_DIR$/src/containers/Product/List.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Users/List.jsx" afterPath="$PROJECT_DIR$/src/containers/Users/List.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/index.js" afterPath="$PROJECT_DIR$/src/containers/index.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/entries/index.less" afterPath="$PROJECT_DIR$/src/entries/index.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/reducers/announcement.js" afterPath="$PROJECT_DIR$/src/reducers/announcement.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/reducers/user.js" afterPath="$PROJECT_DIR$/src/reducers/user.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/index.js" afterPath="$PROJECT_DIR$/src/routes/index.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/sagas/announcement.js" afterPath="$PROJECT_DIR$/src/sagas/announcement.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/sagas/user.js" afterPath="$PROJECT_DIR$/src/sagas/user.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/user.js" afterPath="$PROJECT_DIR$/src/services/user.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/xFetch.js" afterPath="$PROJECT_DIR$/src/services/xFetch.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils.js" afterPath="$PROJECT_DIR$/src/utils.js" />
</list>
<ignored path="shuniu-admin.iws" />
<ignored path=".idea/workspace.xml" />
......@@ -36,116 +49,114 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="List.jsx" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/containers/Users/List.jsx">
<file leaf-file-name="utils.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/utils.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="51" column="18" selection-start-line="51" selection-start-column="18" selection-end-line="51" selection-end-column="18" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
<state relative-caret-position="249">
<caret line="148" column="37" selection-start-line="148" selection-start-column="4" selection-end-line="148" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/user.js">
<file leaf-file-name="PassItem.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="22" column="27" selection-start-line="22" selection-start-column="27" selection-end-line="22" selection-end-column="27" />
<state relative-caret-position="429">
<caret line="117" column="10" selection-start-line="97" selection-start-column="8" selection-end-line="117" selection-end-column="10" />
<folding>
<element signature="e#0#30#0" expanded="true" />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="xFetch.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/xFetch.js">
<file leaf-file-name="withdraw.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/reducers/withdraw.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="25" column="35" selection-start-line="25" selection-start-column="35" selection-end-line="25" selection-end-column="35" />
<state relative-caret-position="417">
<caret line="29" column="9" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/sagas/user.js">
<file leaf-file-name="BaseInfoForm.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="51" column="17" selection-start-line="51" selection-start-column="17" selection-end-line="51" selection-end-column="17" />
<state relative-caret-position="540">
<caret line="161" column="32" selection-start-line="154" selection-start-column="24" selection-end-line="161" selection-end-column="32" />
<folding>
<element signature="e#0#38#0" expanded="true" />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/index.js">
<file leaf-file-name="EditItem.jsx" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/containers/Product/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360">
<caret line="24" column="16" selection-start-line="24" selection-start-column="7" selection-end-line="24" selection-end-column="16" />
<folding />
<state relative-caret-position="-18">
<caret line="95" column="0" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="index.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/index.js">
<file leaf-file-name="product.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/sagas/product.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<caret line="80" column="72" selection-start-line="80" selection-start-column="72" selection-end-line="80" selection-end-column="72" />
<state relative-caret-position="-1323">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="App.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/App/App.jsx">
<file leaf-file-name="product.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/reducers/product.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="447">
<caret line="110" column="70" selection-start-line="110" selection-start-column="70" selection-end-line="110" selection-end-column="70" />
<state relative-caret-position="522">
<caret line="50" column="16" selection-start-line="50" selection-start-column="16" selection-end-line="50" selection-end-column="16" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#44#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="App.less" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/App/App.less">
<file leaf-file-name="proxy.config.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/proxy.config.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="423">
<caret line="31" column="23" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
<state relative-caret-position="75">
<caret line="6" column="2" selection-start-line="6" selection-start-column="2" selection-end-line="6" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="user.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/reducers/user.js">
<file leaf-file-name="EditItem.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Users/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="447">
<caret line="39" column="83" selection-start-line="39" selection-start-column="83" selection-end-line="39" selection-end-column="83" />
<state relative-caret-position="-615">
<caret line="87" column="29" selection-start-line="87" selection-start-column="29" selection-end-line="87" selection-end-column="29" />
<folding>
<element signature="e#0#44#0" expanded="true" />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="trade.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/sagas/trade.js">
<file leaf-file-name="EditItem.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="147">
<caret line="11" column="19" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
<state relative-caret-position="-468">
<caret line="80" column="107" selection-start-line="79" selection-start-column="24" selection-end-line="80" selection-end-column="107" />
<folding />
</state>
</provider>
</entry>
......@@ -163,11 +174,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/containers/Remittance/Audit/PassItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Withdraw/PassItem.jsx" />
<option value="$PROJECT_DIR$/src/sagas/withdraw.js" />
<option value="$PROJECT_DIR$/src/reducers/withdraw.js" />
<option value="$PROJECT_DIR$/src/reducers/__tests__/todos-test.js" />
<option value="$PROJECT_DIR$/src/reducers/costomMessage.js" />
<option value="$PROJECT_DIR$/src/services/customMessage.js" />
......@@ -181,39 +187,44 @@
<option value="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx" />
<option value="$PROJECT_DIR$/src/utils.js" />
<option value="$PROJECT_DIR$/src/containers/Product/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/reducers/product.js" />
<option value="$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx" />
<option value="$PROJECT_DIR$/src/components/MainHeader.jsx" />
<option value="$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/List.jsx" />
<option value="$PROJECT_DIR$/src/variable.less" />
<option value="$PROJECT_DIR$/src/containers/Withdraw/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/CustomMessage/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/components/Layout/Layout.less" />
<option value="$PROJECT_DIR$/src/components/MainHeader/MainHeader.less" />
<option value="$PROJECT_DIR$/src/containers/Announcement/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Product/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/containers/Product/Product.less" />
<option value="$PROJECT_DIR$/src/containers/Trade/List.jsx" />
<option value="$PROJECT_DIR$/src/entries/index.less" />
<option value="$PROJECT_DIR$/proxy.config.js" />
<option value="$PROJECT_DIR$/src/containers/Users/Additem.jsx" />
<option value="$PROJECT_DIR$/src/reducers/user.js" />
<option value="$PROJECT_DIR$/src/sagas/user.js" />
<option value="$PROJECT_DIR$/src/containers/index.js" />
<option value="$PROJECT_DIR$/src/routes/index.js" />
<option value="$PROJECT_DIR$/src/containers/App/App.less" />
<option value="$PROJECT_DIR$/src/containers/App/App.jsx" />
<option value="$PROJECT_DIR$/src/services/xFetch.js" />
<option value="$PROJECT_DIR$/src/containers/index.js" />
<option value="$PROJECT_DIR$/src/services/user.js" />
<option value="$PROJECT_DIR$/src/sagas/user.js" />
<option value="$PROJECT_DIR$/src/reducers/user.js" />
<option value="$PROJECT_DIR$/src/containers/Users/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Users/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx" />
<option value="$PROJECT_DIR$/src/components/Layout/Layout.less" />
<option value="$PROJECT_DIR$/src/components/MainHeader/MainHeader.less" />
<option value="$PROJECT_DIR$/src/containers/Product/List.jsx" />
<option value="$PROJECT_DIR$/src/routes/index.js" />
<option value="$PROJECT_DIR$/src/containers/Announcement/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/sagas/announcement.js" />
<option value="$PROJECT_DIR$/src/reducers/announcement.js" />
<option value="$PROJECT_DIR$/src/utils.js" />
<option value="$PROJECT_DIR$/src/entries/index.less" />
<option value="$PROJECT_DIR$/proxy.config.js" />
<option value="$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Product/EditItem.jsx" />
</list>
</option>
</component>
......@@ -436,6 +447,72 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="containers" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Remittance" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="containers" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Product" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="containers" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="CustomMessage" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="shuniu-admin" />
......@@ -1055,12 +1132,12 @@
<workItem from="1468394206076" duration="1879000" />
<workItem from="1468396235889" duration="33823000" />
<workItem from="1468540294765" duration="94258000" />
<workItem from="1468995021353" duration="168772000" />
<workItem from="1468995021353" duration="188124000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="298732000" />
<option name="totallyTimeSpent" value="318084000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -1073,7 +1150,7 @@
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1280" height="800" extended-state="0" />
<editor active="true" />
<editor active="false" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329235" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
......@@ -1083,7 +1160,7 @@
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32876712" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32739726" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32739726" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24071082" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
......@@ -1145,454 +1222,458 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.less">
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/DateTimeStatusForm.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="27" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" />
<folding />
<state relative-caret-position="192">
<caret line="44" column="58" selection-start-line="44" selection-start-column="8" selection-end-line="44" selection-end-column="58" />
<folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.jsx">
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267">
<caret line="49" column="12" selection-start-line="49" selection-start-column="12" selection-end-line="49" selection-end-column="12" />
<folding />
<state relative-caret-position="570">
<caret line="154" column="114" selection-start-line="154" selection-start-column="114" selection-end-line="154" selection-end-column="114" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less">
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
<folding />
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/Table.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<state relative-caret-position="-1140">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225">
<caret line="79" column="16" selection-start-line="79" selection-start-column="16" selection-end-line="79" selection-end-column="16" />
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/style/index.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" />
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/dist/index.html">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/components.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="16" column="0" selection-start-line="16" selection-start-column="0" selection-end-line="16" selection-end-column="0" />
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/Item.jsx">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/themes/default.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="237">
<caret line="121" column="86" selection-start-line="121" selection-start-column="37" selection-end-line="121" selection-end-column="86" />
<state relative-caret-position="15">
<caret line="1" column="0" selection-start-line="1" selection-start-column="0" selection-end-line="5" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/entries/index.js">
<entry file="file://$PROJECT_DIR$/src/variable.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#22#0" expanded="true" />
</folding>
<state relative-caret-position="90">
<caret line="6" column="1" selection-start-line="6" selection-start-column="1" selection-end-line="6" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.js">
<entry file="file://$PROJECT_DIR$/src/containers/Withdraw/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="447">
<caret line="142" column="33" selection-start-line="142" selection-start-column="13" selection-end-line="142" selection-end-column="33" />
<state relative-caret-position="462">
<caret line="126" column="94" selection-start-line="126" selection-start-column="23" selection-end-line="126" selection-end-column="94" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/EditItem.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Trade/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="327">
<caret line="122" column="12" selection-start-line="122" selection-start-column="12" selection-end-line="124" selection-end-column="99" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/AddItem.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="615">
<caret line="104" column="6" selection-start-line="100" selection-start-column="4" selection-end-line="104" selection-end-column="6" />
<state relative-caret-position="162">
<caret line="53" column="33" selection-start-line="53" selection-start-column="33" selection-end-line="53" selection-end-column="33" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/reducers/product.js">
<entry file="file://$PROJECT_DIR$/src/containers/Product/Product.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="522">
<caret line="50" column="6" selection-start-line="50" selection-start-column="6" selection-end-line="50" selection-end-column="6" />
<folding>
<element signature="e#0#44#0" expanded="true" />
</folding>
<state relative-caret-position="420">
<caret line="28" column="38" selection-start-line="28" selection-start-column="38" selection-end-line="28" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/DateTimeStatusForm.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="192">
<caret line="44" column="58" selection-start-line="44" selection-start-column="8" selection-end-line="44" selection-end-column="58" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
<state relative-caret-position="387">
<caret line="58" column="10" selection-start-line="0" selection-start-column="0" selection-end-line="90" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Users/Additem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<caret line="154" column="114" selection-start-line="154" selection-start-column="114" selection-end-line="154" selection-end-column="114" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
<state relative-caret-position="0">
<caret line="38" column="54" selection-start-line="38" selection-start-column="54" selection-end-line="38" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Trade/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="510">
<caret line="98" column="22" selection-start-line="0" selection-start-column="0" selection-end-line="238" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx">
<entry file="file://$PROJECT_DIR$/src/sagas/trade.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="32" column="26" selection-start-line="32" selection-start-column="26" selection-end-line="32" selection-end-column="26" />
<state relative-caret-position="147">
<caret line="11" column="19" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#38#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/Table.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1140">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/index.js">
<entry file="file://$PROJECT_DIR$/src/containers/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state relative-caret-position="375">
<caret line="25" column="16" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/table/style/index.less">
<entry file="file://$PROJECT_DIR$/src/containers/App/App.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
<state relative-caret-position="657">
<caret line="126" column="71" selection-start-line="126" selection-start-column="71" selection-end-line="126" selection-end-column="71" />
<folding>
<element signature="e#0#50#0" expanded="false" />
<element signature="e#795#2705#0" expanded="false" />
<element signature="e#2809#3173#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/components.less">
<entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
<state relative-caret-position="1257">
<caret line="101" column="80" selection-start-line="101" selection-start-column="67" selection-end-line="101" selection-end-column="80" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/themes/default.less">
<entry file="file://$PROJECT_DIR$/src/services/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15">
<caret line="1" column="0" selection-start-line="1" selection-start-column="0" selection-end-line="5" selection-end-column="31" />
<folding />
<state relative-caret-position="375">
<caret line="25" column="32" selection-start-line="25" selection-start-column="22" selection-end-line="25" selection-end-column="32" />
<folding>
<element signature="e#0#30#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/List.jsx">
<entry file="file://$PROJECT_DIR$/src/sagas/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="78" column="32" selection-start-line="78" selection-start-column="32" selection-end-line="78" selection-end-column="32" />
<folding />
<state relative-caret-position="282">
<caret line="97" column="0" selection-start-line="97" selection-start-column="0" selection-end-line="97" selection-end-column="0" />
<folding>
<element signature="e#0#38#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/variable.less">
<entry file="file://$PROJECT_DIR$/src/reducers/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="6" column="1" selection-start-line="6" selection-start-column="1" selection-end-line="6" selection-end-column="1" />
<folding />
<state relative-caret-position="432">
<caret line="59" column="81" selection-start-line="59" selection-start-column="81" selection-end-line="59" selection-end-column="81" />
<folding>
<element signature="e#0#44#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Withdraw/List.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/App/App.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462">
<caret line="126" column="94" selection-start-line="126" selection-start-column="23" selection-end-line="126" selection-end-column="94" />
<state relative-caret-position="-732">
<caret line="31" column="23" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/List.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Users/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462">
<caret line="101" column="80" selection-start-line="101" selection-start-column="67" selection-end-line="101" selection-end-column="80" />
<state relative-caret-position="57">
<caret line="55" column="5" selection-start-line="55" selection-start-column="5" selection-end-line="55" selection-end-column="5" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.less">
<entry file="file://$PROJECT_DIR$/src/components/MainHeader/MainHeader.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="20" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" />
<state relative-caret-position="90">
<caret line="6" column="4" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/MainHeader/MainHeader.less">
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="16" selection-start-line="3" selection-start-column="16" selection-end-line="3" selection-end-column="16" />
<state relative-caret-position="0">
<caret line="0" column="9" selection-start-line="0" selection-start-column="9" selection-end-line="0" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/AddItem.jsx">
<entry file="file://$PROJECT_DIR$/src/components/MainHeader/MainHeader.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="327">
<caret line="122" column="12" selection-start-line="122" selection-start-column="12" selection-end-line="124" selection-end-column="99" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
<state relative-caret-position="438">
<caret line="32" column="32" selection-start-line="32" selection-start-column="32" selection-end-line="32" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Product/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="69" column="99" selection-start-line="67" selection-start-column="12" selection-end-line="69" selection-end-column="99" />
<state relative-caret-position="165">
<caret line="216" column="102" selection-start-line="216" selection-start-column="102" selection-end-line="216" selection-end-column="102" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx">
<entry file="file://$PROJECT_DIR$/src/routes/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="53" column="33" selection-start-line="53" selection-start-column="33" selection-end-line="53" selection-end-column="33" />
<state relative-caret-position="237">
<caret line="58" column="36" selection-start-line="58" selection-start-column="36" selection-end-line="58" selection-end-column="36" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="297">
<caret line="138" column="10" selection-start-line="122" selection-start-column="8" selection-end-line="138" selection-end-column="10" />
<state relative-caret-position="-1398">
<caret line="35" column="54" selection-start-line="35" selection-start-column="54" selection-end-line="35" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx">
<entry file="file://$PROJECT_DIR$/src/sagas/announcement.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="567">
<caret line="85" column="50" selection-start-line="85" selection-start-column="50" selection-end-line="85" selection-end-column="50" />
<state relative-caret-position="255">
<caret line="82" column="37" selection-start-line="82" selection-start-column="37" selection-end-line="82" selection-end-column="37" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx">
<entry file="file://$PROJECT_DIR$/src/reducers/announcement.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375">
<caret line="104" column="21" selection-start-line="104" selection-start-column="21" selection-end-line="104" selection-end-column="21" />
<state relative-caret-position="525">
<caret line="35" column="79" selection-start-line="35" selection-start-column="79" selection-end-line="35" selection-end-column="79" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#44#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/Product.less">
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/List.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="28" column="38" selection-start-line="28" selection-start-column="38" selection-end-line="28" selection-end-column="38" />
<state relative-caret-position="570">
<caret line="49" column="77" selection-start-line="49" selection-start-column="77" selection-end-line="49" selection-end-column="77" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/List.jsx">
<entry file="file://$PROJECT_DIR$/src/services/xFetch.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="82" />
<state relative-caret-position="345">
<caret line="23" column="108" selection-start-line="23" selection-start-column="108" selection-end-line="23" selection-end-column="108" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/entries/index.less">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/modal/style/index.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="510">
<caret line="118" column="50" selection-start-line="118" selection-start-column="50" selection-end-line="118" selection-end-column="50" />
<state relative-caret-position="-417">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/popover/style/index.css">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="387">
<caret line="58" column="10" selection-start-line="0" selection-start-column="0" selection-end-line="90" selection-end-column="0" />
<state relative-caret-position="-2472">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/proxy.config.js">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/core/motion/fade.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="3" column="18" selection-start-line="3" selection-start-column="18" selection-end-line="3" selection-end-column="18" />
<folding>
<element signature="n#!!doc" expanded="true" />
</folding>
<state relative-caret-position="270">
<caret line="18" column="8" selection-start-line="18" selection-start-column="8" selection-end-line="18" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Users/Additem.jsx">
<entry file="file://$PROJECT_DIR$/src/entries/index.less">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="38" column="54" selection-start-line="38" selection-start-column="54" selection-end-line="38" selection-end-column="54" />
<state relative-caret-position="93">
<caret line="154" column="49" selection-start-line="154" selection-start-column="49" selection-end-line="154" selection-end-column="49" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/List.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/Item.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="510">
<caret line="98" column="22" selection-start-line="0" selection-start-column="0" selection-end-line="238" selection-end-column="0" />
<state relative-caret-position="-135">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/reducers/user.js">
<entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="447">
<caret line="39" column="83" selection-start-line="39" selection-start-column="83" selection-end-line="39" selection-end-column="83" />
<folding>
<element signature="e#0#44#0" expanded="true" />
</folding>
<state relative-caret-position="342">
<caret line="69" column="99" selection-start-line="67" selection-start-column="12" selection-end-line="69" selection-end-column="99" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/sagas/trade.js">
<entry file="file://$PROJECT_DIR$/src/reducers/withdraw.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="147">
<caret line="11" column="19" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
<state relative-caret-position="417">
<caret line="29" column="9" selection-start-line="29" selection-start-column="9" selection-end-line="29" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/sagas/user.js">
<entry file="file://$PROJECT_DIR$/src/utils.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="51" column="17" selection-start-line="51" selection-start-column="17" selection-end-line="51" selection-end-column="17" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
<state relative-caret-position="249">
<caret line="148" column="37" selection-start-line="148" selection-start-column="4" selection-end-line="148" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/index.js">
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360">
<caret line="24" column="16" selection-start-line="24" selection-start-column="7" selection-end-line="24" selection-end-column="16" />
<state relative-caret-position="-468">
<caret line="80" column="107" selection-start-line="79" selection-start-column="24" selection-end-line="80" selection-end-column="107" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/index.js">
<entry file="file://$PROJECT_DIR$/src/containers/Users/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="570">
<caret line="80" column="72" selection-start-line="80" selection-start-column="72" selection-end-line="80" selection-end-column="72" />
<state relative-caret-position="-615">
<caret line="87" column="29" selection-start-line="87" selection-start-column="29" selection-end-line="87" selection-end-column="29" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/App/App.less">
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="423">
<caret line="31" column="23" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
<state relative-caret-position="540">
<caret line="161" column="32" selection-start-line="154" selection-start-column="24" selection-end-line="161" selection-end-column="32" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/proxy.config.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="75">
<caret line="6" column="2" selection-start-line="6" selection-start-column="2" selection-end-line="6" selection-end-column="2" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/App/App.jsx">
<entry file="file://$PROJECT_DIR$/src/sagas/product.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="447">
<caret line="110" column="70" selection-start-line="110" selection-start-column="70" selection-end-line="110" selection-end-column="70" />
<state relative-caret-position="-1323">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/xFetch.js">
<entry file="file://$PROJECT_DIR$/src/reducers/product.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165">
<caret line="25" column="35" selection-start-line="25" selection-start-column="35" selection-end-line="25" selection-end-column="35" />
<folding />
<state relative-caret-position="522">
<caret line="50" column="16" selection-start-line="50" selection-start-column="16" selection-end-line="50" selection-end-column="16" />
<folding>
<element signature="e#0#44#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/user.js">
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330">
<caret line="22" column="27" selection-start-line="22" selection-start-column="27" selection-end-line="22" selection-end-column="27" />
<state relative-caret-position="429">
<caret line="117" column="10" selection-start-line="97" selection-start-column="8" selection-end-line="117" selection-end-column="10" />
<folding>
<element signature="e#0#30#0" expanded="true" />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Users/List.jsx">
<entry file="file://$PROJECT_DIR$/src/containers/Product/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="51" column="18" selection-start-line="51" selection-start-column="18" selection-end-line="51" selection-end-column="18" />
<state relative-caret-position="-18">
<caret line="95" column="0" selection-start-line="95" selection-start-column="0" selection-end-line="95" selection-end-column="0" />
<folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -2,6 +2,6 @@
// - https://github.com/dora-js/dora-plugin-proxy#规则定义
module.exports = {
// '/api/*': 'http://react.yanky.cn/',
'/api/*': 'http://192.168.1.126:8080/'
'/api/*': 'http://react.yanky.cn/',
// '/api/*': 'http://192.168.1.126:8080/'
};
.layout {
font-size: 14px;
display: flex;
flex-direction: column;
height: 100%;
......@@ -11,6 +10,18 @@
width: 100%;
& > div {
height: 100%;
&:global(.ant-spin.ant-spin-spinning) {
width: 100%;
position: relative;
:global {
.ant-spin-dot {
position: absolute;
top: 50%;
left: 50%;
margin: -25px 0 0 -25px;
}
}
}
& > :global(.ant-spin-container) {
height: 100%;
& > :global(.ant-form-horizontal) {
......
......@@ -3,7 +3,8 @@ import React, {Component, PropTypes} from 'react';
import {
Row,
Col,
Breadcrumb
Breadcrumb,
Icon
} from 'antd';
......@@ -24,6 +25,7 @@ export default class MainHeader extends Component {
<Row className={styles.header} type="flex" justify="space-around" align="middle">
<Col span="16" style={{paddingLeft: 20}}>
<h1>{title}</h1>
<Icon type="heart"/>
<Breadcrumb>
{ breadcrumb.map((b, i)=><Breadcrumb.Item key={i}>{b}</Breadcrumb.Item>) }
</Breadcrumb>
......
......@@ -17,14 +17,21 @@
font-size: 18px;
margin-top: 5px;
}
:global {
.ant-breadcrumb {
color: #ccc;
font-weight: 300;
display: inline-block;
& > span:last-child {
color: #aaa;
}
}
.anticon.anticon-heart {
color: #93cc93;
margin-right: 5px;
font-size: 10px;
}
}
}
......@@ -32,4 +39,5 @@
padding: 10px 20px;
.borderBottom;
}
}
......@@ -27,12 +27,15 @@ import {formItemLayout, footerFormSubmitLayout} from '../../utils';
@connect(state=>({
loading: state.announcement.loading,
announcement: state.announcement.item,
item: state.announcement.item,
}))
@Form.create()
export default class EditItem extends Component {
constructor() {
super(...arguments);
this.state = {
isEdit: false
}
}
......@@ -40,6 +43,10 @@ export default class EditItem extends Component {
this.fetchItem(this.props.params.id);
};
componentWillReceiveProps(nextProps){
}
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_ANNOUNCEMENT_ITEM',
......@@ -50,7 +57,7 @@ export default class EditItem extends Component {
handleSubmit(e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.id = this.props.announcement.id;
data.id = this.props.item.id;
console.log(data);
this.props.dispatch({
type: 'UPDATE_ANNOUNCEMENT_ITEM',
......@@ -59,48 +66,80 @@ export default class EditItem extends Component {
}
render() {
const {announcement, loading, form:{getFieldProps}, location:{query}} = this.props;
const {item, loading, form:{getFieldProps}, location:{query}} = this.props;
const {isEdit} = this.state;
const operation = (
<div style={{textAlign:'right'}}>
<Button.Group>
<Button type="ghost" onClick={e=>{e.preventDefault(); this.props.history.goBack();}}>
<Button type="ghost" onClick={e=>{e.preventDefault(); this.setState({isEdit: !this.state.isEdit})}}>
<Icon type="edit"/>
</Button>
<Button type="ghost" onClick={e=>{
e.preventDefault();
isEdit ? this.setState({isEdit: !this.state.isEdit}) : this.props.history.goBack();
}}>
<Icon type="rollback"/>
</Button>
</Button.Group>
</div>
);
const breadcrumb = ['产品管理', '产品详情'];
const titlePart = isEdit ? '修改公告' : '公告详情';
const title = (item && item.title ? item.title + ' - ' : '') + titlePart;
breadcrumb.push(titlePart);
const header = (
<MainHeader breadcrumb={['产品管理', '产品详情', '修改公告']}
title={(query && query.title ? query.title + ' - ' : '') + '修改公告'}
operation={operation}
/>
<MainHeader breadcrumb={breadcrumb} title={title} operation={operation}/>
);
return (
<Layout header={header}>
<Spin spinning={loading}>
{
announcement &&
item &&
<Form className="main-form" horizontal onSubmit={this.handleSubmit.bind(this)}>
<Form.Item label="标题" {...formItemLayout}>
{
isEdit ?
<Input placeholder="公告标题"
{...getFieldProps('title', {
initialValue: announcement.title
initialValue: item.title
})} />
:
item.title
}
</Form.Item>
<Form.Item label="内容" {...formItemLayout}>
{
isEdit ?
<Input placeholder="公告内容" autosize={{ minRows: 5 }} type="textarea"
{...getFieldProps('announcement', {
initialValue: announcement.announcement
initialValue: item.announcement
})} />
: item.announcement
}
</Form.Item>
<Form.Item {...footerFormSubmitLayout} style={{marginTop:30}}>
<Button type="primary" htmlType="submit" loading={loading}><Icon
type="save"/>修改</Button>
<Button onClick={e=>{e.preventDefault(); this.props.history.goBack();}}
style={{marginLeft:'1em'}}>
{
isEdit ?
<Button type="primary" htmlType="submit" loading={loading}>
<Icon type="save"/>修改
</Button>
:
<Button type="primary"
onClick={e=>{e.preventDefault(); this.setState({isEdit: !this.state.isEdit})}}>
<Icon type="edit"/>编辑
</Button>
}
<Button style={{marginLeft:'1em'}} onClick={e=>{
e.preventDefault();
isEdit ? this.setState({isEdit: !this.state.isEdit}) : this.props.history.goBack();
}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
......
......@@ -33,7 +33,7 @@ export default class List extends Component {
};
handleRowClick({id}) {
this.props.history.push('/announcement/' + id + '/edit');
this.props.history.push('/announcement/' + id );
}
handleFilterVisible() {
......
......@@ -23,7 +23,11 @@ export default class App extends Component {
render() {
const styles = require('./App.less');
const mainMenu = [
const menu = [
{
title: '业务管理',
icon: 'mail',
items: [
{
title: '产品管理',
items: [
......@@ -73,7 +77,42 @@ export default class App extends Component {
}
]
}
];
]
}, {
title: '基础功能',
icon: 'folder',
items: [
{
title: '文件管理',
items: [
{
to: '/upload',
cn: '图片上传',
en: 'Upload Images'
}
]
}
]
}, {
title: '管理员',
icon: 'folder',
items: [
{
title: '用户管理',
items: [
{
to: '/admin/users',
cn: '用户列表',
en: 'Users'
}, {
to: '/admin/users/create',
cn: '创建用户',
en: 'Create user'
}
]
}
]
}];
const {user} = this.props;
......@@ -86,37 +125,22 @@ export default class App extends Component {
</header>
<section>
<Menu mode="inline" defaultOpenKeys={['sub1']}>
<SubMenu key="sub1" title={<span><Icon type="mail" /><span>业务管理</span></span>}>
{
user && user.token &&
mainMenu.map((menu, mi)=>
<MenuItemGroup title={menu.title} key={mi}>
{
menu.items.map((item, ii)=>
<Menu.Item key={[mi,ii].join('-')}>
{user && user.token &&
menu.map((submenu, si)=>
<SubMenu key={'submenu'+si} title={
<span><Icon type={submenu.icon} /><span>{submenu.title}</span></span>
}>
{submenu.items.map((menus, mi)=>
<MenuItemGroup key={'menu-item-group-'+si+'-'+ mi} title={menus.title}>
{menus.items.map((item, ii)=>
<Menu.Item key={[si, mi,ii].join('-')}>
<MenuItemContent {...item}/>
</Menu.Item>
)
}
</MenuItemGroup>
)
}
</SubMenu>
<SubMenu key="sub2" title={<span><Icon type="folder" /><span>基本功能</span></span>}>
<Menu.Item>
<MenuItemContent to="/upload" cn="图片上传" en="Upload Images"/>
</Menu.Item>
</SubMenu>
<SubMenu key="sub3" title={<span><Icon type="folder" /><span>管理员</span></span>}>
<MenuItemGroup title='用户管理' key='users'>
<Menu.Item>
<MenuItemContent to="/admin/users" cn="用户列表" en="Users"/>
</Menu.Item>
<Menu.Item>
<MenuItemContent to="/admin/users/create" cn="创建用户" en="Create users"/>
</Menu.Item>
)}
</MenuItemGroup>
)}
</SubMenu>
)}
</Menu>
</section>
<footer>
......@@ -173,6 +197,37 @@ class MenuItemContent extends Component {
//<div className={styles.normal}></div>
// <SubMenu key="sub1" title={<span><Icon type="mail" /><span>业务管理</span></span>}>
// {
// user && user.token &&
// mainMenu.map((menu, mi)=>
// <MenuItemGroup title={menu.title} key={mi}>
// {
// menu.items.map((item, ii)=>
// <Menu.Item key={[mi,ii].join('-')}>
// <MenuItemContent {...item}/>
// </Menu.Item>
// )
// }
// </MenuItemGroup>
// )
// }
// </SubMenu>
// <SubMenu key="sub2" title={<span><Icon type="folder" /><span>基本功能</span></span>}>
// <Menu.Item>
// <MenuItemContent to="/upload" cn="图片上传" en="Upload Images"/>
// </Menu.Item>
// </SubMenu>
// <SubMenu key="sub3" title={<span><Icon type="folder" /><span>管理员</span></span>}>
// <MenuItemGroup title='用户管理' key='users'>
// <Menu.Item>
// <MenuItemContent to="/admin/users" cn="用户列表" en="Users"/>
// </Menu.Item>
// <Menu.Item>
// <MenuItemContent to="/admin/users/create" cn="创建用户" en="Create users"/>
// </Menu.Item>
// </MenuItemGroup>
// </SubMenu>
......
......@@ -48,11 +48,14 @@ export default class EditItem extends Component {
constructor() {
super(...arguments);
this.state = {
isEdit: false
}
}
componentWillMount() {
if (!this.props.cates.length) {
componentDidMount() {
if (!(this.props.cates && this.props.cates.length)) {
this.fetchCates();
}
this.fetchItem(this.props.params.id);
......@@ -78,43 +81,53 @@ export default class EditItem extends Component {
const styles = require('./Product.less');
const tabs = [{
tab: '基本信息',
children: BaseInfoForm
}, {
tab: '收益佣金',
children: ShouyiYongjingForm
}, {
tab: '汇款账号',
children: HuikuanInfoForm
}, {
tab: '基本要素',
children: ElementForm
}, {
tab: '时间状态',
children: DateTimeStatusForm
}, {
tab: '相关附件',
children: DocumentsForm
}, {
tab: '服务经理',
children: ContactForm
}].map((tabPane, index)=> {
const tabs = [
{ tab: '基本信息', children: BaseInfoForm },
{ tab: '收益佣金', children: ShouyiYongjingForm },
{ tab: '汇款账号', children: HuikuanInfoForm },
{ tab: '基本要素', children: ElementForm },
{ tab: '时间状态', children: DateTimeStatusForm },
{ tab: '相关附件', children: DocumentsForm },
{ tab: '服务经理', children: ContactForm }
].map((tabPane, index)=> {
tabPane.key = 'tabs-pane-' + (index + 1);
return tabPane;
});
const {isEdit} = this.state;
const operation = (
<div style={{textAlign:'right'}}>
<Button.Group>
{
product &&
<Button type="ghost"
onClick={e=>{e.preventDefault(); this.setState({isEdit: !this.state.isEdit})}}>
<Icon type="edit"/>
</Button>
}
<Button type="ghost" onClick={e=>{
e.preventDefault();
isEdit ?
this.setState({isEdit: !this.state.isEdit}) :
this.props.history.goBack();
}}>
<Icon type="rollback"/>
</Button>
</Button.Group>
</div>
);
const header = (<MainHeader breadcrumb={['产品管理', '产品详情']}
title={(product && product.itemShortTitle ? product.itemShortTitle + ' - ' : '') + '产品详情'}/>);
const title = (product && product.itemShortTitle ? product.itemShortTitle + ' - ' : '') + '产品详情';
const header = (<MainHeader breadcrumb={['产品管理', '产品详情']} title={title} operation={operation}/>);
return (
<Layout header={header}>
<Tabs className={styles.tabs} tabPosition="left">
{ tabs.map(tp=>
<Tabs.TabPane tab={tp.tab} key={tp.key}>
{product && <tp.children {...this.props} /> }
{product && <tp.children {...this.props} isEdit={isEdit} /> }
</Tabs.TabPane>
)}
</Tabs>
......
......@@ -12,7 +12,8 @@ import {
footerFormSubmitLayout,
handleUpload,
filterFormItemLayout,
PRODUCT_STATUS
PRODUCT_STATUS,
filterFormItemStyle
} from '../../utils';
import {Link} from 'react-router';
......@@ -197,10 +198,7 @@ export default class List extends Component {
</div>
);
const searchStyle = {
size: 'default',
style: {width: 100}
}
const header = (
<MainHeader breadcrumb={['产品管理', '产品列表']}
......@@ -211,21 +209,21 @@ export default class List extends Component {
this.state.filterVisible &&
<Form className="filterForm" inline onSubmit={this.handleFilterSubmit.bind(this)}>
<Form.Item label="ID">
<Input placeholder="请输入搜索ID" {...searchStyle} {...getFieldProps('id')}/>
<Input placeholder="请输入搜索ID" {...filterFormItemStyle} {...getFieldProps('id')}/>
</Form.Item>
<Form.Item label="类目">
{
cates &&
<Cascader options={cates} placeholder="请选产品类目" {...searchStyle}
<Cascader options={cates} placeholder="请选产品类目" {...filterFormItemStyle}
{...getFieldProps('categoryId')}
/>
}
</Form.Item>
<Form.Item label="标题">
<Input placeholder="请输入搜索标题" {...searchStyle} {...getFieldProps('title')}/>
<Input placeholder="请输入搜索标题" {...filterFormItemStyle} {...getFieldProps('title')}/>
</Form.Item>
<Form.Item label="状态">
<Select placeholder="请选择状态" {...searchStyle} {...getFieldProps('status')}>
<Select placeholder="请选择状态" {...filterFormItemStyle} {...getFieldProps('status')}>
<Select.Option key="status-option-default"
value={null}>请选择</Select.Option>
{
......
......@@ -39,8 +39,12 @@ import {
export default class PassItem extends Component {
constructor() {
super(...arguments);
this.state = {
isEdit: false,
priviewVisible: false,
priviewImage: ''
}
}
componentDidMount() {
this.fetchItem(this.props.params.id);
......@@ -73,13 +77,13 @@ export default class PassItem extends Component {
let title = (audit && audit.itemShortTitle ? audit.itemShortTitle + ' - ' : '');
let readOnly = true;
const isEdit = audit && audit.status == 1 && this.state.isEdit;
if (audit) {
switch (audit.status) {
case 1:
title += '报单审核详情';
readOnly = false;
break;
case 5:
title += '审核失败';
......@@ -91,9 +95,43 @@ export default class PassItem extends Component {
title += '报单审核详情';
}
const header = (<MainHeader breadcrumb={['审核管理', '报单审核','审核详情']} title={title}/>);
const operation = (
<div style={{textAlign:'right'}}>
<Button.Group>
{
audit && audit.status == 1 &&
<Button type="ghost"
onClick={e=>{e.preventDefault(); this.setState({isEdit: !this.state.isEdit})}}>
<Icon type="edit"/>
</Button>
}
<Button type="ghost" onClick={e=>{
e.preventDefault();
isEdit ?
this.setState({isEdit: !this.state.isEdit}) :
this.props.history.goBack();
}}>
<Icon type="rollback"/>
</Button>
</Button.Group>
</div>
);
const header = (<MainHeader breadcrumb={['审核管理', '报单审核','审核详情']} title={title} operation={operation}/>);
const imgStyle = {maxWidth: '400px'};
const filayout = {...formItemLayout, labelCol: {span: 6}};
const imgProps = (src)=>({
src: src + '!t',
style: {maxWidth: 200, maxHeight: 160},
onClick: e => {
e.preventDefault();
this.setState({
priviewVisible: true,
priviewImage: src
});
}
});
return (
......@@ -101,65 +139,131 @@ export default class PassItem extends Component {
<Spin spinning={loading}>
{
audit &&
<Form horizontal>
<Form.Item label="报单时间" {...smallFormItemLayout}>
<Input placeholder="报单时间" readOnly
defaultValue={audit.dateCreated && formatDateTime(audit.dateCreated) || '错误的时间'}
/>
</Form.Item>
<Form.Item label="产品募集情况" {...smallFormItemLayout}>
<Input placeholder="产品募集情况" readOnly
defaultValue={'已募集:'+audit.fundRaisedOver+'、募集目标:'+audit.fundRaisedTarget}
/>
</Form.Item>
<Form.Item label="预约金额" {...smallFormItemLayout}>
<Input placeholder="预约金额" readOnly defaultValue={audit.reservationAmount}/>
</Form.Item>
<Form.Item label="实际入账金额" help="实际入账金额,请核对打款凭条" {...smallFormItemLayout}>
<Input placeholder="实际入账金额" readOnly={readOnly}
<Form className="main-form" horizontal>
<Row style={{padding:'0 20px'}}>
<Col span="12">
<Form.Item label="报单时间" {...filayout}>
{audit.dateCreated && formatDateTime(audit.dateCreated) || '错误的时间'}
</Form.Item>
<Form.Item label="产品募集情况" {...filayout}>
{'已募集:' + audit.fundRaisedOver + '、募集目标:' + audit.fundRaisedTarget}
</Form.Item>
<Form.Item label="预约姓名" {...filayout}>
{audit.buyerName}
</Form.Item>
<Form.Item label="预约金额" {...filayout}>
{audit.reservationAmount}
</Form.Item>
{
isEdit ?
<Form.Item label="实际入账金额" help="实际入账金额,请核对打款凭条" {...filayout}>
<Input placeholder="实际入账金额"
{...getFieldProps('remittanceAmount', {
initialValue: audit.remittanceAmount
})} />
</Form.Item>
<Form.Item label="预约姓名" {...smallFormItemLayout}>
<Input placeholder="预约姓名" readOnly defaultValue={audit.buyerName}/>
:
<Form.Item label="实际入账金额" {...filayout}>
{audit.remittanceAmount}
</Form.Item>
<Form.Item label="投资人姓名" help="真实的投资人姓名,请核对身份证照片上的姓名" {...smallFormItemLayout}>
<Input placeholder="投资人姓名" readOnly={readOnly}
}
{
isEdit ?
<Form.Item label="投资人姓名" help="真实的投资人姓名,请核对身份证照片上的姓名" {...filayout}>
<Input placeholder="投资人姓名"
{...getFieldProps('realName', {
initialValue: audit.realName
})} />
</Form.Item>
<Form.Item label="投资人身份证号码" help="真实的投资人身份证号码,请核对身份证照片上的号码" {...smallFormItemLayout}>
<Input placeholder="投资人身份证号码" readOnly={readOnly}
:
<Form.Item label="投资人姓名" {...filayout}>
{audit.realName}
</Form.Item>
}
{
isEdit ?
<Form.Item label="投资人身份证号码" help="真实的投资人身份证号码,请核对身份证照片上的号码" {...filayout}>
<Input placeholder="投资人身份证号码"
{...getFieldProps('identityCardNumber', {
initialValue: audit.identityCardNumber
})} />
</Form.Item>
<Form.Item label="投资人身份证照片" {...smallFormItemLayout}>
:
<Form.Item label="投资人身份证号码" {...filayout}>
{audit.identityCardNumber}
</Form.Item>
}
{
isEdit &&
<Form.Item label="拒绝理由" {...filayout}>
<Input placeholder="拒绝理由"
{...getFieldProps('memo', {
initialValue: audit.memo
})} />
</Form.Item>
}
<Form.Item wrapperCol={{span: 16, offset: 6}} style={{marginTop:30}}>
{
audit.identityCardFront && audit.identityCardBack ?
<p>
<a href={audit.identityCardFront} target="_blank">
<img src={audit.identityCardFront} style={imgStyle}/>
</a>
<a href={audit.identityCardBack} target="_blank">
<img src={audit.identityCardBack} style={imgStyle}/>
</a>
audit.status == 1 && (
isEdit ?
<span>
<Button size="large" type="primary"
onClick={this.handleSubmit.bind(this, 9)}>
<Icon type="check-circle-o"/>通过
</Button>
<Button size="large" type="ghost"
onClick={this.handleSubmit.bind(this, 5)}
style={{margin:'auto 1em' }}>
<Icon type="cross-circle-o"/>拒绝
</Button>
</span>
:
<Button type="primary"
style={{marginRight:'1em'}}
onClick={ e=>{
e.preventDefault();
this.setState({isEdit: !this.state.isEdit})
}}>
<Icon type="edit"/>审核
</Button>
)
}
<Button onClick={e=>{
e.preventDefault();
isEdit ?
this.setState({isEdit: !this.state.isEdit}) :
this.props.history.goBack();
}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
</Col>
<Col span="12">
<Form.Item label="投资人身份证照片">
{
audit.identityCardFront ?
<img {...imgProps(audit.identityCardFront)}/>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
身份证正面照片未上传,请拒绝!
</p>
}
{
audit.identityCardBack ?
<img {...imgProps(audit.identityCardBack)}/>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
身份证照片未上传,请拒绝!
身份证反面照片未上传,请拒绝!
</p>
}
</Form.Item>
<Form.Item label="投资人银行卡照片" {...smallFormItemLayout}>
<Form.Item label="投资人银行卡照片">
{
audit.bankCardPic ?
<a href={audit.bankCardPic} target="_blank">
<img src={audit.bankCardPic} style={imgStyle}/>
</a>
<img {...imgProps(audit.bankCardPic)}/>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
......@@ -167,12 +271,10 @@ export default class PassItem extends Component {
</p>
}
</Form.Item>
<Form.Item label="投资人打款凭条" {...smallFormItemLayout}>
<Form.Item label="投资人打款凭条">
{
audit.remittanceReceipt ?
<a href={audit.remittanceReceipt} target="_blank">
<img src={audit.remittanceReceipt} style={imgStyle}/>
</a>
<img {...imgProps(audit.remittanceReceipt)}/>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
......@@ -181,13 +283,11 @@ export default class PassItem extends Component {
}
</Form.Item>
<Form.Item label="投资人签字页" {...smallFormItemLayout}>
<Form.Item label="投资人签字页">
{
audit.signaturePages.length ?
audit.signaturePages.map((img, index)=>
<a href={img} target="_blank">
<img key={index} src={img} style={imgStyle}/>
</a>
<img key={index} {...imgProps(img)}/>
)
:
<p style={{color:'#f00'}}>
......@@ -196,29 +296,13 @@ export default class PassItem extends Component {
</p>
}
</Form.Item>
<Form.Item label="拒绝理由" {...smallFormItemLayout}>
<Input placeholder="拒绝理由" readOnly={readOnly}
{...getFieldProps('memo', {
initialValue: audit.memo
})} />
</Form.Item>
<Form.Item {...footerFormSubmitLayout} style={{marginTop:30}}>
{
audit.status == 1 &&
<span>
<Button size="large" type="primary" onClick={this.handleSubmit.bind(this, 9)}>
<Icon type="check-circle-o" />通过
</Button>
<Button size="large" type="ghost" onClick={this.handleSubmit.bind(this, 5)}
style={{margin:'auto 1em' }}>
<Icon type="cross-circle-o" />拒绝
</Button>
</span>
}
<Button onClick={e=>{e.preventDefault(); this.props.history.goBack();}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
</Col>
</Row>
<Modal className="img-priview-dialog" footer={null}
visible={this.state.priviewVisible}
onCancel={()=>this.setState({ priviewVisible: false })}>
<img src={this.state.priviewImage}/>
</Modal>
</Form>
}
</Spin>
......
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {
Row,
Col,
Form,
Input,
Button,
Checkbox,
Select,
message,
Tabs,
Cascader,
Radio,
Upload,
Icon,
Modal,
DatePicker,
Table,
Spin
} from 'antd';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader/MainHeader';
import {
formItemLayout,
smallFormItemLayout,
footerFormSubmitLayout,
userStatusToString,
formatDateTime
} from '../../utils';
@connect(state=>({
loading: state.user.loading,
item: state.user.item,
}))
@Form.create()
export default class EditItem extends Component {
constructor() {
super(...arguments);
this.state = {
isEdit: false
}
}
componentDidMount() {
this.fetchItem(this.props.params.id);
};
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_USER_ITEM',
id
});
};
handleSubmit(status, e) {
e.preventDefault();
let data = {};
if (status == 1 || status == 0) {
data.status = status;
} else {
data = this.props.form.getFieldsValue();
}
data.id = this.props.params.id;
console.log(data);
this.props.dispatch({
type: 'UPDATE_USER_ITEM',
data
});
}
render() {
const {item, loading, form:{getFieldProps}, location:{query}} = this.props;
const {isEdit} = this.state;
const operation = (
<div style={{textAlign:'right'}}>
<Button.Group>
<Button type="ghost" onClick={e=>{e.preventDefault(); this.setState({isEdit: !this.state.isEdit})}}>
<Icon type="edit"/>
</Button>
<Button type="ghost" onClick={e=>{e.preventDefault(); this.props.history.goBack();}}>
<Icon type="rollback"/>
</Button>
</Button.Group>
</div>
);
const header = (
<MainHeader breadcrumb={['用户管理', '用户详情']}
title={(query && query.title ? query.title + ' - ' : '') + '用户详情'}
operation={operation}
/>
);
return (
<Layout header={header}>
<Spin spinning={loading}>
{
item &&
<Form className="main-form" horizontal>
<Form.Item label="用户名" {...smallFormItemLayout}>
{ item.username }
</Form.Item>
<Form.Item label="状态" {...smallFormItemLayout}>
{userStatusToString(item.status)}
</Form.Item>
<Form.Item label="昵称" {...smallFormItemLayout}>
{
isEdit ?
<Input {...getFieldProps('nick', {initialValue: item.nick})} />
:
item.nick
}
</Form.Item>
<Form.Item label="E-mail" {...smallFormItemLayout}>
{
isEdit ?
<Input {...getFieldProps('email', {initialValue: item.email})} />
:
item.email
}
</Form.Item>
<Form.Item label="手机号" {...smallFormItemLayout}>
{
isEdit ?
<Input {...getFieldProps('mobile', {initialValue: item.mobile})} />
:
item.mobile
}
</Form.Item>
<Form.Item label="注册时间" {...smallFormItemLayout}>
{item.dateCreated && formatDateTime(item.dateCreated)}
</Form.Item>
<Form.Item {...footerFormSubmitLayout} style={{marginTop:30}}>
{
isEdit ?
<Button type="primary" onClick={this.handleSubmit.bind(this, -1)}
loading={loading}>
<Icon type="save"/>修改
</Button>
:
item.status ?
<Button type="primary" onClick={this.handleSubmit.bind(this, 0)}
loading={loading}>
<Icon type="save"/>禁用
</Button>
:
<Button type="primary" onClick={this.handleSubmit.bind(this, 1)}
loading={loading}>
<Icon type="save"/>激活
</Button>
}
<Button onClick={e=>{e.preventDefault(); this.props.history.goBack();}}
style={{marginLeft:'1em'}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
</Form>
}
</Spin>
</Layout>
);
}
}
......@@ -2,78 +2,57 @@ import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {Table, Icon, Row, Col, Button, Form, Input, Cascader, Select} from 'antd';
import {Link} from 'react-router';
import {serialize, formatDateTime, tradeStatusToString} from '../../utils';
import {serialize, formatDateTime, userStatusToString, filterFormItemStyle} from '../../utils';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader/MainHeader';
const columns = [
{
title: '用户ID',
title: 'ID',
dataIndex: 'id',
key: 'id',
width: 70,
// fixed:'left'
}, {
title: '用户名',
dataIndex: 'shortTitle',
key: 'shortTitle',
render: (shortTitle, record)=>(<span title={shortTitle}>{(shortTitle + '').substring(0, 15)}</span>)
dataIndex: 'username',
key: 'username',
width:100,
}, {
title: '预约时间',
dataIndex: 'reservationTime',
key: 'reservationTime',
title: '注册时间',
dataIndex: 'dateCreated',
key: 'dateCreated',
width: 150,
className: 'tac',
render: (reservationTime, record)=>(
render: (dateCreated, record)=>(
<span>
{reservationTime && formatDateTime(reservationTime)}
{dateCreated && formatDateTime(dateCreated)}
</span>
)
}, {
title: '投资人',
title: '角色',
dataIndex: 'buyerName',
key: 'buyerName',
width: 80,
width: 200,
className: 'tac',
}, {
title: '预约额度',
dataIndex: 'reservationAmount',
key: 'reservationAmount',
width: 100,
className: 'tac',
title: 'E-mail',
dataIndex: 'email',
key: 'email',
width: 200,
}, {
title: '实际打款',
dataIndex: 'remittanceAmount',
key: 'remittanceAmount',
width: 100,
title: '手机号',
dataIndex: 'mobile',
key: 'mobile',
width: 80,
className: 'tac',
}, {
title: '状态',
dataIndex: 'status',
key: 'status',
width: 160,
className: 'tac',
render: (status, record)=>(<span data-status={status}>{tradeStatusToString(status)}</span>)
}, {
title: '操作',
key: 'operation',
width: 140,
// fixed:'right',
width: 60,
className: 'tac',
render: (text, record)=>(
<span>
<Link to={'/trades/contract/'+ record.id} onClick={e=>e.stopPropagation()}>合同</Link>
{
(record.status == 11 || record.status == 21) &&
<span>
<span className="ant-divider"></span>
<Link to={'/trades/commission/'+ record.id} onClick={e=>e.stopPropagation()}>佣金</Link>
</span>
}
</span>
)
render: (status, record)=>(<span data-status={status}>{userStatusToString(status)}</span>)
}
];
......@@ -186,21 +165,13 @@ export default class List extends Component {
this.state.filterVisible &&
<Form className="filterForm" inline onSubmit={this.handleFilterSubmit.bind(this)}>
<Form.Item label="ID">
<Input placeholder="请输入搜索ID" {...searchStyle} {...getFieldProps('id')}/>
</Form.Item>
<Form.Item label="类目">
{
cates &&
<Cascader options={cates} placeholder="请选产品类目" {...searchStyle}
{...getFieldProps('categoryId')}
/>
}
<Input placeholder="请输入搜索ID" {...filterFormItemStyle} {...getFieldProps('id')}/>
</Form.Item>
<Form.Item label="标题">
<Input placeholder="请输入搜索标题" {...searchStyle} {...getFieldProps('title')}/>
<Form.Item label="用户名">
<Input placeholder="请输入搜索用户名" {...filterFormItemStyle} {...getFieldProps('title')}/>
</Form.Item>
<Form.Item label="状态">
<Select placeholder="请选择状态" {...searchStyle} {...getFieldProps('status')}>
<Select placeholder="请选择状态" {...filterFormItemStyle} {...getFieldProps('status')}>
<Select.Option key="status-option-default"
value={null}>请选择</Select.Option>
......@@ -220,6 +191,8 @@ export default class List extends Component {
</MainHeader>
);
return (
<Layout header={header}>
<Table className="list-table" columns={columns}
......
......@@ -23,4 +23,5 @@ export CustomMessageItem from './CustomMessage/Item';
export BaseUpload from './BaseFunction/BaseUpload';
export UsersAddItem from './Users/Additem';
export UsersList from './Users/List';
export UsersItem from './Users/EditItem';
......@@ -84,6 +84,15 @@
margin: 5px 0;
}
.ant-menu-vertical > .ant-menu-item,
.ant-menu-inline > .ant-menu-item,
.ant-menu-item-group-list > .ant-menu-item,
.ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title,
.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title,
.ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title {
line-height: 36px;
height: 36px;
}
.list-table {
display: flex;
flex-direction: column;
......@@ -115,13 +124,12 @@
background-color: #fcfcfc;
}
&.ant-table-row-hover,
&:hover{
&:hover {
background-color: #eaf8fe;
}
}
}
& > div {
&:first-child {
flex: 1;
......@@ -136,16 +144,49 @@
.tac {
text-align: center !important;
}
}
body {
.ant-modal-mask{
animation-duration: 300ms !important;
}
.img-priview-dialog {
animation-duration: 300ms !important;
height: 100vh;
width: 100vw;
display: flex;
top: 0;
align-items: center;
justify-content: center;
.ant-modal-content {
background-color: transparent;
padding-bottom: 0;
img {
margin: auto;
display: block;
max-width: 100vw !important;
max-height: 100vh !important;
}
.ant-modal-close {
background: rgba(255, 255, 255, .25);
border-radius: 50%;
width: 20px;
height: 20px;
padding: 3px;
top: -10px;
right: -10px;
}
.ant-modal-body {
display: flex;
align-items: center;
justify-content: center;
padding: 0;
}
}
}
}
}
......@@ -33,7 +33,7 @@ const announcement = handleActions({
return {...state, loading: true}
},
['UPDATE_ANNOUNCEMENT_ITEM_SUCCESS'](state, action){
return {...state, loading: false, item: action.item}
return {...state, loading: false, item: {...state.item, ...action.item}}
},
['UPDATE_ANNOUNCEMENT_ITEM_FAILED'](state, action){
return {...state, err: action.err, loading: false}
......
......@@ -41,7 +41,28 @@ const user = handleActions({
},
['FETCH_USER_LIST_FAILED'](state, action){
return {...state, loading: false, err: action.err};
}
},
['FETCH_USER_ITEM'](state){
return {...state, loading:true};
},
['FETCH_USER_ITEM_SUCCESS'](state, action){
return {...state, loading: false, item: action.item};
},
['FETCH_USER_ITEM_FAILED'](state, action){
return {...state, loading: false, err: action.err};
},
['UPDATE_USER_ITEM'](state){
return {...state, loading:true};
},
['UPDATE_USER_ITEM_SUCCESS'](state, action){
return {...state, loading: false, item: {...state.item, ...action.item}};
},
['UPDATE_USER_ITEM_FAILED'](state, action){
return {...state, loading: false, err: action.err};
},
}, {
..._user,
loading: false,
......
......@@ -25,7 +25,8 @@ import {
CustomMessageItem,
BaseUpload,
UsersAddItem,
UsersList
UsersList,
UsersItem
} from '../containers/index';
export default (store)=> {
......@@ -55,7 +56,7 @@ export default (store)=> {
<Route path="announcement">
<IndexRoute component={AnnouncementList}/>
<Route path="create" component={AnnouncementAddItem}/>
<Route path=":id/edit" component={AnnouncementEditItem}/>
<Route path=":id" component={AnnouncementEditItem}/>
</Route>
<Route path="remittance">
<Route path="audits">
......@@ -79,6 +80,7 @@ export default (store)=> {
<Route path="users">
<IndexRoute component={UsersList} />
<Route path="create" component={UsersAddItem} />
<Route path=":id" component={UsersItem} />
</Route>
</Route>
</Route>
......
......@@ -80,10 +80,10 @@ function* watchAdd() {
function* editItem(data) {
try{
const item = yield call(updateItem, data);
yield call(updateItem, data);
yield put({
type: 'UPDATE_ANNOUNCEMENT_ITEM_SUCCESS',
item
item: data
});
}catch(err){
console.log(err);
......
import {takeLatest} from 'redux-saga';
import {take, call, put, fork, cancel} from 'redux-saga/effects';
import {fetch, clear, save, create, fetchList} from '../services/user';
import {fetch, clear, save, create, fetchList, fetchItem, updateItem} from '../services/user';
import {message} from 'antd';
function* authorize(username, password, push) {
......@@ -26,32 +26,32 @@ function* loginFlow() {
}
function* addItem(data) {
try{
try {
yield call(create, data);
yield put({type: 'CREATE_USER_ITEM_SUCCESS'});
}catch(err){
} catch (err) {
console.log(err);
message.error(err);
yield put({type: 'CREATE_USER_ITEM_FAILED', err});
}
}
function* watchAddItem(){
while(true){
function* watchAddItem() {
while (true) {
const {data} = yield take('CREATE_USER_ITEM');
yield fork(addItem, data);
}
}
function* getList(query){
try{
const {items, total} = yield call(fetchList, query);
function* getList(query) {
try {
const {users, total} = yield call(fetchList, query);
yield put({
type:'FETCH_USER_LIST_SUCCESS',
items: items,
type: 'FETCH_USER_LIST_SUCCESS',
items: users,
total
});
}catch(err){
} catch (err) {
console.log(err);
message.error(err);
yield put({type: 'FETCH_USER_LIST_FAILED', err});
......@@ -59,15 +59,66 @@ function* getList(query){
}
function* watchList() {
while(true){
while (true) {
const {query} = yield take('FETCH_USER_LIST');
yield fork(getList, query);
}
}
export default function* () {
function* getItem(id) {
try {
const item = yield call(fetchItem, id);
yield put({
type: 'FETCH_USER_ITEM_SUCCESS',
item: item
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'FETCH_USER_ITEM_FAILED',
err
});
}
}
function* watchItem() {
while (true) {
const {id} = yield take('FETCH_USER_ITEM');
yield fork(getItem, id);
}
}
function* modifyItem(data) {
try {
yield call(updateItem, data);
yield put({
type: 'UPDATE_USER_ITEM_SUCCESS',
item: data
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'UPDATE_USER_ITEM_FAILED',
err
});
}
}
function* watchMidfiyItem(){
while(true){
const {data} = yield take('UPDATE_USER_ITEM');
yield fork(modifyItem, data);
}
}
export default function*() {
yield fork(loginFlow);
yield fork(watchAddItem);
yield fork(watchList);
yield fork(watchItem);
yield fork(watchMidfiyItem);
}
......@@ -10,15 +10,26 @@ export async function fetch(username, password) {
export async function create(data) {
return xFetch('/api/users', {
method:'POST',
method: 'POST',
body: serialize(data)
});
}
export async function fetchList(query){
export async function fetchList(query) {
return xFetch('/api/admin/users' + '?' + serialize(query));
}
export async function fetchItem(id) {
return xFetch('/api/admin/users/' + id);
}
export async function updateItem(data) {
return xFetch('/api/admin/users/' + data.id, {
method: 'PUT',
body: serialize(data)
})
}
export async function clear() {
sessionStorage.clear();
return Promise.resolve();
......
......@@ -20,11 +20,9 @@ function check404(res) {
}
function jsonParse(res) {
try {
return res.json().then(json => ({...res, json}));
}catch(err){
return Promise.reject(err);
}
return res.json().then(json => ({...res, json})).catch(err=> ({...res, json:{status:0, message: '数据加载错误!'}}));
}
function errorMessageParse(res) {
......
......@@ -59,7 +59,16 @@ export const productStatusToString = status => {
export const productEnableCreateTrade = status => {
return status > 1 && status < 17;
}
};
export const USER_STATUS = {
0: '未激活',
1: '正常'
};
export const userStatusToString = status => {
return USER_STATUS[status] || '未定义';
};
export const tradeStatusToString = status => {
......@@ -141,9 +150,14 @@ export const footerFormSubmitLayout = {
};
export const filterFormItemLayout = {
labelCol:{ span: 10 },
wrapperCol:{ span: 14 }
}
labelCol: {span: 10},
wrapperCol: {span: 14}
};
export const filterFormItemStyle = {
size: 'default',
style: {width: 100}
};
export function filterUploadSuccess(fileList) {
......@@ -171,17 +185,17 @@ export function transformUploadThumbUrl(fileList) {
type: file.type,
url: file.url,
thumbUrl: file.thumbUrl,
name:file.name,
size:file.size
name: file.name,
size: file.size
}
}
return file;
});
}
export function handleUpload(info, limit){
export function handleUpload(info, limit) {
let fileList = filterUploadSuccess(info.fileList);
if(limit){
if (limit) {
fileList = fileList.slice(-1 * limit);
}
return transformUploadThumbUrl(fileList);
......@@ -189,7 +203,9 @@ export function handleUpload(info, limit){
export function remittanceAuditStatusToString(status) {
switch (status){
switch (status) {
case 0:
return '已删除';
case 1:
return '待审核';
case 5:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment