Commit aee64065 authored by superman's avatar superman

publish 0.0.1

parent 7dd98321
...@@ -2,61 +2,45 @@ ...@@ -2,61 +2,45 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ec208c71-5ff8-4642-a786-fad4f24be9b8" name="Default" comment=""> <list default="true" id="ec208c71-5ff8-4642-a786-fad4f24be9b8" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/Layout/Layout.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/Layout/Layout.less" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.less" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/MainHeader.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/ProductForm/ContactForm.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/ProductForm/DateTimeStatusForm.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/ProductForm/ElementForm.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/CustomMessage/Item.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/CustomMessage/List.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Withdraw/List.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Remittance/Audit/List.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Withdraw/PassItem.jsx" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/Trade/EditItem.jsx" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/reducers/customMessage.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/containers/index.js" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/reducers/withdraw.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/reducers/contract.js" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/sagas/customMessage.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/reducers/remittance.js" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/sagas/withdraw.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/sagas/contract.js" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/services/customMessage.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/sagas/remittance.js" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/services/withdraw.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/services/contract.js" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx" afterPath="" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/services/remittance.js" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Todos/Todo.jsx" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/HuikuanInfoForm/HuikuanInfoForm.jsx" afterPath="" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Todos/Todo.less" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/ProductBaseInfoForm/ProductBaseInfoForm.less" afterPath="" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Todos/Todos.jsx" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/ProductContactForm/ProductContactForm.jsx" afterPath="" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Todos/Todos.less" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/ProductDateTimeForm/ProductDateTimeForm.jsx" afterPath="" /> <change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Trade/EditItem.jsx" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/ProductElementForm/ProductElementForm.jsx" afterPath="" /> <change type="MOVED" beforePath="$PROJECT_DIR$/src/containers/Remittance/Audit/List.jsx" afterPath="$PROJECT_DIR$/src/containers/Remittance/List.jsx" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/ShouyiYongjingForm/ShouyiYongjingForm.jsx" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/containers/Product/Item.jsx" afterPath="" />
<change type="MOVED" beforePath="$PROJECT_DIR$/src/components/ProductBaseInfoForm/ProductBaseInfoForm.jsx" afterPath="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" />
<change type="MOVED" beforePath="$PROJECT_DIR$/src/components/ProductDocumentsForm/ProductDocumentsForm.jsx" afterPath="$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" afterPath="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/proxy.config.js" afterPath="$PROJECT_DIR$/proxy.config.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx" afterPath="$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" />
<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/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.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/AddItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Product/AddItem.jsx" />
<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/Product/Product.less" afterPath="$PROJECT_DIR$/src/containers/Product/Product.less" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/Commission.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/Commission.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/Contract.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/Contract.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/Item.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/Item.jsx" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/Item.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/Item.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/Item.less" afterPath="$PROJECT_DIR$/src/containers/Trade/Item.less" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/index.js" afterPath="$PROJECT_DIR$/src/containers/index.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/containers/Trade/List.jsx" afterPath="$PROJECT_DIR$/src/containers/Trade/List.jsx" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/entries/index.less" afterPath="$PROJECT_DIR$/src/entries/index.less" /> <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/remittance.js" afterPath="$PROJECT_DIR$/src/reducers/remittance.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/reducers/trade.js" afterPath="$PROJECT_DIR$/src/reducers/trade.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/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/remittance.js" afterPath="$PROJECT_DIR$/src/sagas/remittance.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/sagas/trade.js" afterPath="$PROJECT_DIR$/src/sagas/trade.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/announcement.js" afterPath="$PROJECT_DIR$/src/services/announcement.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/announcement.js" afterPath="$PROJECT_DIR$/src/services/announcement.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/product.js" afterPath="$PROJECT_DIR$/src/services/product.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/remittance.js" afterPath="$PROJECT_DIR$/src/services/remittance.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/trade.js" afterPath="$PROJECT_DIR$/src/services/trade.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" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils.js" afterPath="$PROJECT_DIR$/src/utils.js" />
</list> </list>
<ignored path="shuniu-admin.iws" /> <ignored path="shuniu-admin.iws" />
...@@ -80,113 +64,107 @@ ...@@ -80,113 +64,107 @@
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="EditItem.jsx" pinned="false" current-in-tab="false"> <file leaf-file-name="utils.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/utils.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480"> <state relative-caret-position="417">
<caret line="32" column="49" selection-start-line="0" selection-start-column="0" selection-end-line="99" selection-end-column="0" /> <caret line="168" column="31" selection-start-line="168" selection-start-column="31" selection-end-line="168" selection-end-column="31" />
<folding> <folding />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="List.jsx" pinned="false" current-in-tab="false"> <file leaf-file-name="CopyToClipboard.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/Audit/List.jsx"> <entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="990"> <state relative-caret-position="267">
<caret line="115" column="63" selection-start-line="115" selection-start-column="49" selection-end-line="115" selection-end-column="63" /> <caret line="49" column="12" selection-start-line="49" selection-start-column="12" selection-end-line="49" selection-end-column="12" />
<folding> <folding />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="xFetch.js" pinned="false" current-in-tab="false"> <file leaf-file-name="CopyToClipboard.less" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/xFetch.js"> <entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330"> <state relative-caret-position="210">
<caret line="22" column="53" selection-start-line="22" selection-start-column="53" selection-end-line="22" selection-end-column="53" /> <caret line="14" column="27" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="remittance.js" pinned="false" current-in-tab="false"> <file leaf-file-name="MainHeader.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/remittance.js"> <entry file="file://$PROJECT_DIR$/src/components/MainHeader.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105"> <state relative-caret-position="0">
<caret line="7" column="48" selection-start-line="7" selection-start-column="48" selection-end-line="7" selection-end-column="48" /> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="50" />
<folding> <folding>
<element signature="e#0#30#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="remittance.js" pinned="false" current-in-tab="false"> <file leaf-file-name="BaseInfoForm.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/reducers/remittance.js"> <entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240"> <state relative-caret-position="345">
<caret line="17" column="60" selection-start-line="17" selection-start-column="60" selection-end-line="17" selection-end-column="60" /> <caret line="135" column="87" selection-start-line="135" selection-start-column="64" selection-end-line="135" selection-end-column="87" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="remittance.js" pinned="false" current-in-tab="false"> <file leaf-file-name="BaseUpload.jsx" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/sagas/remittance.js"> <entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="492"> <state relative-caret-position="462">
<caret line="49" column="44" selection-start-line="49" selection-start-column="44" selection-end-line="49" selection-end-column="44" /> <caret line="77" column="61" selection-start-line="77" selection-start-column="61" selection-end-line="77" selection-end-column="61" />
<folding> <folding>
<element signature="e#0#38#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="announcement.js" pinned="false" current-in-tab="false"> <file leaf-file-name="BaseUpload.less" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/announcement.js"> <entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="15">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
<folding> <folding />
<element signature="e#0#30#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="announcement.js" pinned="false" current-in-tab="false"> <file leaf-file-name="README.md" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/sagas/announcement.js"> <entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135"> <state relative-caret-position="0">
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="52" selection-end-column="1" /> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding> <folding />
<element signature="e#0#38#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="index.js" pinned="false" current-in-tab="false"> <file leaf-file-name="DocumentsForm.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/index.js"> <entry file="file://$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225"> <state relative-caret-position="225">
<caret line="15" column="35" selection-start-line="15" selection-start-column="35" selection-end-line="15" selection-end-column="35" /> <caret line="79" column="16" selection-start-line="79" selection-start-column="16" selection-end-line="79" selection-end-column="16" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="EditItem.jsx" pinned="false" current-in-tab="true"> <file leaf-file-name="List.jsx" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-15"> <state relative-caret-position="342">
<caret line="38" column="21" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="21" /> <caret line="91" column="82" selection-start-line="91" selection-start-column="8" selection-end-line="91" selection-end-column="82" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
...@@ -207,57 +185,57 @@ ...@@ -207,57 +185,57 @@
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/src/containers/App/App.jsx" />
<option value="$PROJECT_DIR$/src/containers/Layout/Layout.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductBaseInfoForm/ProductBaseInfoForm.less" />
<option value="$PROJECT_DIR$/src/containers/Product/Product.less" />
<option value="$PROJECT_DIR$/src/containers/App/App.less" />
<option value="$PROJECT_DIR$/src/components/ShouyiYongjingForm/ShouyiYongjingForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductBaseInfoForm/ProductBaseInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/components/HuikuanInfoForm/HuikuanInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductElementForm/ProductElementForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductDateTimeForm/ProductDateTimeForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductDocumentsForm/ProductDocumentsForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductContactForm/ProductContactForm.jsx" />
<option value="$PROJECT_DIR$/src/sagas/trade.js" />
<option value="$PROJECT_DIR$/src/components/BackButton.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/ElementForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/ContactForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/DateTimeStatusForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/List.jsx" />
<option value="$PROJECT_DIR$/src/utils.js" />
<option value="$PROJECT_DIR$/src/components/MainHeader.jsx" />
<option value="$PROJECT_DIR$/src/containers/Product/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/Contract.jsx" />
<option value="$PROJECT_DIR$/src/containers/Layout/Layout.less" />
<option value="$PROJECT_DIR$/src/containers/Trade/Commission.jsx" />
<option value="$PROJECT_DIR$/src/entries/index.less" />
<option value="$PROJECT_DIR$/src/reducers/trade.js" />
<option value="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/Item.less" /> <option value="$PROJECT_DIR$/src/containers/Trade/Item.less" />
<option value="$PROJECT_DIR$/src/containers/Product/EditItem.jsx" /> <option value="$PROJECT_DIR$/src/containers/Product/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/Item.jsx" />
<option value="$PROJECT_DIR$/src/containers/Product/List.jsx" /> <option value="$PROJECT_DIR$/src/containers/Product/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" /> <option value="$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/AuditList.jsx" /> <option value="$PROJECT_DIR$/src/containers/Remittance/AuditList.jsx" />
<option value="$PROJECT_DIR$/src/containers/Audit/Remittance/List.jsx" /> <option value="$PROJECT_DIR$/src/containers/Audit/Remittance/List.jsx" />
<option value="$PROJECT_DIR$/src/routes/index.js" />
<option value="$PROJECT_DIR$/src/containers/Audit/Remittance/EditItem.jsx" /> <option value="$PROJECT_DIR$/src/containers/Audit/Remittance/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/reducers/audit.js" /> <option value="$PROJECT_DIR$/src/reducers/audit.js" />
<option value="$PROJECT_DIR$/src/sagas/audit.js" /> <option value="$PROJECT_DIR$/src/sagas/audit.js" />
<option value="$PROJECT_DIR$/src/containers/index.js" />
<option value="$PROJECT_DIR$/src/services/xFetch.js" /> <option value="$PROJECT_DIR$/src/services/xFetch.js" />
<option value="$PROJECT_DIR$/src/services/announcement.js" />
<option value="$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/DrawMoney/PassItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/DrawMoney/List.jsx" />
<option value="$PROJECT_DIR$/src/services/withdraw.js" />
<option value="$PROJECT_DIR$/src/services/remittance.js" /> <option value="$PROJECT_DIR$/src/services/remittance.js" />
<option value="$PROJECT_DIR$/src/sagas/remittance.js" /> <option value="$PROJECT_DIR$/src/sagas/remittance.js" />
<option value="$PROJECT_DIR$/src/reducers/remittance.js" /> <option value="$PROJECT_DIR$/src/reducers/remittance.js" />
<option value="$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx" /> <option value="$PROJECT_DIR$/src/containers/Remittance/Audit/List.jsx" />
<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/services/user.js" />
<option value="$PROJECT_DIR$/src/reducers/__tests__/todos-test.js" />
<option value="$PROJECT_DIR$/src/reducers/costomMessage.js" />
<option value="$PROJECT_DIR$/proxy.config.js" />
<option value="$PROJECT_DIR$/src/services/customMessage.js" />
<option value="$PROJECT_DIR$/src/sagas/customMessage.js" />
<option value="$PROJECT_DIR$/src/containers/CustomMessage/List.jsx" />
<option value="$PROJECT_DIR$/src/entries/index.less" />
<option value="$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Announcement/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx" />
<option value="$PROJECT_DIR$/src/containers/Withdraw/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/Remittance/List.jsx" />
<option value="$PROJECT_DIR$/src/containers/CustomMessage/Item.jsx" />
<option value="$PROJECT_DIR$/src/containers/Trade/Item.jsx" />
<option value="$PROJECT_DIR$/src/containers/index.js" />
<option value="$PROJECT_DIR$/src/routes/index.js" />
<option value="$PROJECT_DIR$/src/containers/App/App.jsx" />
<option value="$PROJECT_DIR$/src/utils.js" />
<option value="$PROJECT_DIR$/src/components/CopyToClipboard.jsx" />
<option value="$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.less" />
<option value="$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.jsx" />
<option value="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less" />
<option value="$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx" />
</list> </list>
</option> </option>
</component> </component>
...@@ -454,11 +432,29 @@ ...@@ -454,11 +432,29 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="Remittance" /> <option name="myItemId" value="CustomMessage" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </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> <PATH_ELEMENT>
<option name="myItemId" value="Audit" /> <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="BaseFunction" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
...@@ -480,7 +476,7 @@ ...@@ -480,7 +476,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="Announcement" /> <option name="myItemId" value="App" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
...@@ -502,6 +498,50 @@ ...@@ -502,6 +498,50 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </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="components" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ProductForm" />
<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="components" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="CopyToClipboard" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane> </subPane>
</pane> </pane>
<pane id="PackagesPane" /> <pane id="PackagesPane" />
...@@ -543,11 +583,11 @@ ...@@ -543,11 +583,11 @@
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/containers/Remittance/Audit" /> <recent name="$PROJECT_DIR$/src/components/CopyToClipboard" />
<recent name="$PROJECT_DIR$/src/containers/Remittance" /> <recent name="$PROJECT_DIR$/src/containers/Remittance" />
<recent name="$PROJECT_DIR$/src/containers" />
<recent name="$PROJECT_DIR$/src/containers/Remittance/Audit" />
<recent name="$PROJECT_DIR$/src/containers/Audit" /> <recent name="$PROJECT_DIR$/src/containers/Audit" />
<recent name="$PROJECT_DIR$/src/components" />
<recent name="$PROJECT_DIR$/src/containers/Audit/Remittance" />
</key> </key>
</component> </component>
<component name="RunManager"> <component name="RunManager">
...@@ -979,12 +1019,12 @@ ...@@ -979,12 +1019,12 @@
<workItem from="1468394206076" duration="1879000" /> <workItem from="1468394206076" duration="1879000" />
<workItem from="1468396235889" duration="33823000" /> <workItem from="1468396235889" duration="33823000" />
<workItem from="1468540294765" duration="94258000" /> <workItem from="1468540294765" duration="94258000" />
<workItem from="1468995021353" duration="106735000" /> <workItem from="1468995021353" duration="139768000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="236695000" /> <option name="totallyTimeSpent" value="269728000" />
</component> </component>
<component name="TodoView"> <component name="TodoView">
<todo-panel id="selected-file"> <todo-panel id="selected-file">
...@@ -1069,468 +1109,482 @@ ...@@ -1069,468 +1109,482 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/themes/default.less"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/Commission.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1121"> <state relative-caret-position="387">
<caret line="61" column="0" selection-start-line="61" selection-start-column="0" selection-end-line="61" selection-end-column="0" /> <caret line="72" column="24" selection-start-line="72" selection-start-column="24" selection-end-line="72" selection-end-column="24" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/package.json"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3285"> <state relative-caret-position="357">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="196" column="41" selection-start-line="193" selection-start-column="32" selection-end-line="196" selection-end-column="41" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/index.css"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/Item.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-6491"> <state relative-caret-position="210">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/index.less"> <entry file="file://$PROJECT_DIR$/src/containers/Product/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="402">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="108" column="103" selection-start-line="108" selection-start-column="103" selection-end-line="108" selection-end-column="103" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/index.js"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/Contract.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="267">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="64" column="8" selection-start-line="64" selection-start-column="8" selection-end-line="64" selection-end-column="94" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/node_modules/antd/lib/style/css.js"> <entry file="file://$PROJECT_DIR$/src/reducers/trade.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="-45">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="3" column="19" selection-start-line="3" selection-start-column="19" selection-end-line="3" selection-end-column="19" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/webpack.config.js"> <entry file="file://$PROJECT_DIR$/src/sagas/trade.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165"> <state relative-caret-position="495">
<caret line="11" column="15" selection-start-line="11" selection-start-column="15" selection-end-line="11" selection-end-column="15" /> <caret line="75" column="32" selection-start-line="75" selection-start-column="32" selection-end-line="75" selection-end-column="32" />
<folding> <folding>
<element signature="n#!!doc" expanded="true" /> <element signature="e#0#38#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/package.json"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="184"> <state relative-caret-position="432">
<caret line="48" column="6" selection-start-line="48" selection-start-column="6" selection-end-line="48" selection-end-column="6" /> <caret line="54" column="33" selection-start-line="54" selection-start-column="33" selection-end-line="54" selection-end-column="33" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/App/App.jsx"> <entry file="file://$PROJECT_DIR$/src/services/remittance.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1215"> <state relative-caret-position="135">
<caret line="82" column="26" selection-start-line="82" selection-start-column="26" selection-end-line="82" selection-end-column="26" /> <caret line="9" column="26" selection-start-line="9" selection-start-column="26" selection-end-line="9" selection-end-column="26" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#30#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.jsx"> <entry file="file://$PROJECT_DIR$/src/sagas/remittance.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="255"> <state relative-caret-position="279">
<caret line="17" column="7" selection-start-line="17" selection-start-column="7" selection-end-line="17" selection-end-column="7" /> <caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="35" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#38#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductBaseInfoForm/ProductBaseInfoForm.less"> <entry file="file://$PROJECT_DIR$/src/containers/Withdraw/PassItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="1005">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="118" column="31" selection-start-line="118" selection-start-column="31" selection-end-line="118" selection-end-column="31" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/Product.less"> <entry file="file://$PROJECT_DIR$/src/reducers/remittance.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="165"> <state relative-caret-position="394">
<caret line="11" column="28" selection-start-line="11" selection-start-column="28" selection-end-line="11" selection-end-column="28" /> <caret line="29" column="21" selection-start-line="29" selection-start-column="11" selection-end-line="29" selection-end-column="21" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/App/App.less"> <entry file="file://$PROJECT_DIR$/src/services/withdraw.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-402"> <state relative-caret-position="150">
<caret line="75" column="25" selection-start-line="75" selection-start-column="25" selection-end-line="75" selection-end-column="25" /> <caret line="10" column="26" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
<folding /> <folding>
<element signature="e#0#30#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Login/Login.jsx"> <entry file="file://$PROJECT_DIR$/src/sagas/withdraw.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225"> <state relative-caret-position="282">
<caret line="22" column="42" selection-start-line="22" selection-start-column="11" selection-end-line="22" selection-end-column="42" /> <caret line="60" column="23" selection-start-line="60" selection-start-column="23" selection-end-line="60" selection-end-column="23" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#38#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </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"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="495"> <state relative-caret-position="420">
<caret line="75" column="32" selection-start-line="75" selection-start-column="32" selection-end-line="75" selection-end-column="32" /> <caret line="28" column="37" selection-start-line="28" selection-start-column="37" selection-end-line="28" selection-end-column="37" />
<folding> <folding>
<element signature="e#0#38#0" expanded="true" /> <element signature="e#0#44#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/BackButton.jsx"> <entry file="file://$PROJECT_DIR$/src/services/user.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225"> <state relative-caret-position="180">
<caret line="15" column="1" selection-start-line="15" selection-start-column="1" selection-end-line="15" selection-end-column="1" /> <caret line="12" column="29" selection-start-line="12" selection-start-column="29" selection-end-line="12" selection-end-column="29" />
<folding /> <folding>
<element signature="e#0#30#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/ContactForm.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/Remittance/PassItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612"> <state relative-caret-position="134">
<caret line="128" column="25" selection-start-line="128" selection-start-column="25" selection-end-line="128" selection-end-column="25" /> <caret line="38" column="29" selection-start-line="38" selection-start-column="29" selection-end-line="38" selection-end-column="29" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/DateTimeStatusForm.jsx"> <entry file="file://$PROJECT_DIR$/src/reducers/todos.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612"> <state relative-caret-position="225">
<caret line="148" column="25" selection-start-line="148" selection-start-column="25" selection-end-line="148" selection-end-column="25" /> <caret line="15" column="66" selection-start-line="15" selection-start-column="66" selection-end-line="15" selection-end-column="66" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#44#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/ElementForm.jsx"> <entry file="file://$PROJECT_DIR$/src/reducers/__tests__/todos-test.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612"> <state relative-caret-position="270">
<caret line="145" column="25" selection-start-line="139" selection-start-column="24" selection-end-line="145" selection-end-column="25" /> <caret line="18" column="0" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#28#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx"> <entry file="file://$PROJECT_DIR$/src/services/announcement.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612"> <state relative-caret-position="210">
<caret line="91" column="25" selection-start-line="91" selection-start-column="25" selection-end-line="91" selection-end-column="25" /> <caret line="14" column="37" selection-start-line="0" selection-start-column="0" selection-end-line="26" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#30#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/ShouyiYongjingForm.jsx"> <entry file="file://$PROJECT_DIR$/src/sagas/announcement.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462"> <state relative-caret-position="375">
<caret line="162" column="54" selection-start-line="162" selection-start-column="54" selection-end-line="162" selection-end-column="54" /> <caret line="46" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="110" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#38#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx"> <entry file="file://$PROJECT_DIR$/src/reducers/announcement.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="375"> <state relative-caret-position="495">
<caret line="52" column="8" selection-start-line="52" selection-start-column="8" selection-end-line="52" selection-end-column="8" /> <caret line="33" column="6" selection-start-line="0" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#44#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/List.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/Product/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="312"> <state relative-caret-position="462">
<caret line="35" column="17" selection-start-line="35" selection-start-column="17" selection-end-line="35" selection-end-column="17" /> <caret line="142" column="61" selection-start-line="142" selection-start-column="22" selection-end-line="142" selection-end-column="61" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/utils.js"> <entry file="file://$PROJECT_DIR$/proxy.config.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="27"> <state relative-caret-position="642">
<caret line="59" column="51" selection-start-line="59" selection-start-column="51" selection-end-line="59" selection-end-column="51" /> <caret line="78" column="2" selection-start-line="78" selection-start-column="2" selection-end-line="78" selection-end-column="2" />
<folding /> <folding>
<element signature="n#!!doc" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/MainHeader.jsx"> <entry file="file://$PROJECT_DIR$/src/services/xFetch.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60"> <state relative-caret-position="330">
<caret line="4" column="8" selection-start-line="4" selection-start-column="8" selection-end-line="4" selection-end-column="8" /> <caret line="22" column="53" selection-start-line="22" selection-start-column="53" selection-end-line="22" selection-end-column="53" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/AddItem.jsx"> <entry file="file://$PROJECT_DIR$/src/services/customMessage.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210"> <state relative-caret-position="60">
<caret line="143" column="8" selection-start-line="143" selection-start-column="8" selection-end-line="143" selection-end-column="80" /> <caret line="4" column="28" selection-start-line="4" selection-start-column="28" selection-end-line="4" selection-end-column="28" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#30#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/Layout/Layout.less"> <entry file="file://$PROJECT_DIR$/src/entries/index.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="15"> <state relative-caret-position="210">
<caret line="1" column="20" selection-start-line="1" selection-start-column="20" selection-end-line="1" selection-end-column="20" /> <caret line="15" column="20" selection-start-line="15" selection-start-column="20" selection-end-line="15" selection-end-column="20" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/Commission.jsx"> <entry file="file://$PROJECT_DIR$/src/components/ProductForm/HuikuanInfoForm.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="402">
<caret line="77" column="79" selection-start-line="77" selection-start-column="79" selection-end-line="77" selection-end-column="79" />
<folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="387"> <state relative-caret-position="387">
<caret line="72" column="24" selection-start-line="72" selection-start-column="24" selection-end-line="72" selection-end-column="24" /> <caret line="60" column="102" selection-start-line="60" selection-start-column="102" selection-end-line="60" selection-end-column="102" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/entries/index.less"> <entry file="file://$PROJECT_DIR$/src/sagas/customMessage.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150"> <state relative-caret-position="15">
<caret line="11" column="28" selection-start-line="11" selection-start-column="28" selection-end-line="11" selection-end-column="28" /> <caret line="11" column="39" selection-start-line="11" selection-start-column="39" selection-end-line="11" selection-end-column="39" />
<folding /> <folding>
<element signature="e#0#38#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/reducers/trade.js"> <entry file="file://$PROJECT_DIR$/src/reducers/customMessage.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30"> <state relative-caret-position="480">
<caret line="3" column="19" selection-start-line="3" selection-start-column="19" selection-end-line="3" selection-end-column="19" /> <caret line="32" column="14" selection-start-line="32" selection-start-column="14" selection-end-line="32" selection-end-column="14" />
<folding /> <folding>
<element signature="e#0#44#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/AddItem.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="357"> <state relative-caret-position="207">
<caret line="196" column="41" selection-start-line="193" selection-start-column="32" selection-end-line="196" selection-end-column="41" /> <caret line="60" column="86" selection-start-line="60" selection-start-column="86" selection-end-line="60" selection-end-column="86" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/Item.less"> <entry file="file://$PROJECT_DIR$/src/containers/Withdraw/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210"> <state relative-caret-position="75">
<caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" /> <caret line="54" column="48" selection-start-line="54" selection-start-column="48" selection-end-line="54" selection-end-column="48" />
<folding /> <folding>
<element signature="e#0#50#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/Remittance/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="402"> <state relative-caret-position="449">
<caret line="108" column="103" selection-start-line="108" selection-start-column="103" selection-end-line="108" selection-end-column="103" /> <caret line="120" column="45" selection-start-line="120" selection-start-column="45" selection-end-line="120" selection-end-column="45" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/Item.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="465"> <state relative-caret-position="1500">
<caret line="115" column="69" selection-start-line="115" selection-start-column="69" selection-end-line="115" selection-end-column="69" /> <caret line="100" column="38" selection-start-line="100" selection-start-column="30" selection-end-line="100" selection-end-column="38" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-573">
<caret line="20" column="14" selection-start-line="20" selection-start-column="14" selection-end-line="20" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/Item.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/Trade/Item.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="381"> <state relative-caret-position="507">
<caret line="38" column="95" selection-start-line="38" selection-start-column="95" selection-end-line="38" selection-end-column="95" /> <caret line="139" column="38" selection-start-line="139" selection-start-column="38" selection-end-line="139" selection-end-column="38" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/Contract.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/Announcement/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267"> <state relative-caret-position="-1413">
<caret line="64" column="8" selection-start-line="64" selection-start-column="8" selection-end-line="64" selection-end-column="94" /> <caret line="9" column="0" selection-start-line="9" selection-start-column="0" selection-end-line="13" selection-end-column="3" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Product/List.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342"> <state relative-caret-position="330">
<caret line="134" column="52" selection-start-line="133" selection-start-column="8" selection-end-line="134" selection-end-column="52" /> <caret line="22" column="17" selection-start-line="22" selection-start-column="7" selection-end-line="22" selection-end-column="17" />
<folding> <folding />
<element signature="e#0#50#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Trade/AddItem.jsx"> <entry file="file://$PROJECT_DIR$/src/routes/index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="522"> <state relative-caret-position="492">
<caret line="87" column="101" selection-start-line="87" selection-start-column="20" selection-end-line="87" selection-end-column="101" /> <caret line="74" column="58" selection-start-line="74" selection-start-column="58" selection-end-line="74" selection-end-column="58" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/List.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/App/App.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462"> <state relative-caret-position="-180">
<caret line="129" column="33" selection-start-line="126" selection-start-column="24" selection-end-line="129" selection-end-column="33" /> <caret line="74" column="13" selection-start-line="74" selection-start-column="13" selection-end-line="74" selection-end-column="13" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/AddItem.jsx"> <entry file="file://$PROJECT_DIR$/src/components/ProductForm/BaseInfoForm.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252"> <state relative-caret-position="345">
<caret line="51" column="97" selection-start-line="50" selection-start-column="8" selection-end-line="51" selection-end-column="97" /> <caret line="135" column="87" selection-start-line="135" selection-start-column="64" selection-end-line="135" selection-end-column="87" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/index.js"> <entry file="file://$PROJECT_DIR$/src/utils.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="30"> <state relative-caret-position="417">
<caret line="2" column="0" selection-start-line="2" selection-start-column="0" selection-end-line="2" selection-end-column="0" /> <caret line="168" column="31" selection-start-line="168" selection-start-column="31" selection-end-line="168" selection-end-column="31" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Announcement/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/components/MainHeader.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480"> <state relative-caret-position="0">
<caret line="32" column="49" selection-start-line="0" selection-start-column="0" selection-end-line="99" selection-end-column="0" /> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="50" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/index.js"> <entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="225"> <state relative-caret-position="210">
<caret line="15" column="35" selection-start-line="15" selection-start-column="35" selection-end-line="15" selection-end-column="35" /> <caret line="14" column="27" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/xFetch.js"> <entry file="file://$PROJECT_DIR$/src/components/CopyToClipboard/CopyToClipboard.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="330"> <state relative-caret-position="267">
<caret line="22" column="53" selection-start-line="22" selection-start-column="53" selection-end-line="22" selection-end-column="53" /> <caret line="49" column="12" selection-start-line="49" selection-start-column="12" selection-end-line="49" selection-end-column="12" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/remittance.js"> <entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.less">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105"> <state relative-caret-position="15">
<caret line="7" column="48" selection-start-line="7" selection-start-column="48" selection-end-line="7" selection-end-column="48" /> <caret line="1" column="21" selection-start-line="1" selection-start-column="21" selection-end-line="1" selection-end-column="21" />
<folding> <folding />
<element signature="e#0#30#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/services/announcement.js"> <entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="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" /> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding> <folding />
<element signature="e#0#30#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/sagas/announcement.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="135">
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="52" selection-end-column="1" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/sagas/remittance.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="492">
<caret line="49" column="44" selection-start-line="49" selection-start-column="44" selection-end-line="49" selection-end-column="44" />
<folding>
<element signature="e#0#38#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/reducers/remittance.js"> <entry file="file://$PROJECT_DIR$/src/components/ProductForm/DocumentsForm.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240"> <state relative-caret-position="225">
<caret line="17" column="60" selection-start-line="17" selection-start-column="60" selection-end-line="17" selection-end-column="60" /> <caret line="79" column="16" selection-start-line="79" selection-start-column="16" selection-end-line="79" selection-end-column="16" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/Audit/List.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/CustomMessage/List.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="990"> <state relative-caret-position="342">
<caret line="115" column="63" selection-start-line="115" selection-start-column="49" selection-end-line="115" selection-end-column="63" /> <caret line="91" column="82" selection-start-line="91" selection-start-column="8" selection-end-line="91" selection-end-column="82" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/containers/Remittance/Audit/EditItem.jsx"> <entry file="file://$PROJECT_DIR$/src/containers/BaseFunction/BaseUpload.jsx">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-15"> <state relative-caret-position="462">
<caret line="38" column="21" selection-start-line="38" selection-start-column="4" selection-end-line="38" selection-end-column="21" /> <caret line="77" column="61" selection-start-line="77" selection-start-column="61" selection-end-line="77" selection-end-column="61" />
<folding> <folding>
<element signature="e#0#50#0" expanded="true" /> <element signature="e#0#50#0" expanded="true" />
</folding> </folding>
......
import React, {Component, PropTypes} from 'react';
export default class CopyToClipboard extends Component {
constructor(props, context) {
super(props, context);
this.state = {
success: false
};
}
static propType = {
copyText: PropTypes.string
};
handleClick() {
const targetId = '_hiddenCopyText_';
let target = document.getElementById(targetId);
if (!target) {
target = document.createElement("textarea");
target.style.position = "absolute";
target.style.left = "-9999px";
target.style.top = "0";
target.id = targetId;
document.body.appendChild(target);
}
target.textContent = this.props.copyText || '';
// select the content
let currentFocus = document.activeElement;
target.focus();
target.setSelectionRange(0, target.value.length);
// copy the selection
let success;
try {
success = document.execCommand("copy");
} catch (e) {
success = false;
}
// restore original focus
if (currentFocus && typeof currentFocus.focus === "function") {
currentFocus.focus();
}
// clear temporary content
target.textContent = "";
if (success) {
this.setState({success});
setTimeout(()=> {
this.setState({success: false});
}, 1500);
}
}
render() {
const styles = require('./CopyToClipboard.less');
return (
<div className={styles.copybox} onClick={this.handleClick.bind(this)}>
{this.props.children}
{
this.state.success &&
<div className={styles.success}>
Copied!
</div>
}
</div>
);
}
}
.copybox {
position: relative;
.success {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
background-color: rgba(75, 184, 255, .75);
color: #fff;
display: table;
vertical-align: middle;
text-align: center;
}
}
...@@ -125,7 +125,7 @@ export default class BaseInfoForm extends Component { ...@@ -125,7 +125,7 @@ export default class BaseInfoForm extends Component {
/> />
</Form.Item> </Form.Item>
<Form.Item label="产品简介" {...formItemLayout}> <Form.Item label="产品简介" {...formItemLayout}>
<Input type="textarea" rows={5} placeholder="产品简介" <Input type="textarea" autosize={{minRows:5, maxRows:20}} placeholder="产品简介"
{...getFieldProps('summary', { {...getFieldProps('summary', {
initialValue: product.summary initialValue: product.summary
})} })}
......
...@@ -75,7 +75,7 @@ export default class HuikuanInfoForm extends Component { ...@@ -75,7 +75,7 @@ export default class HuikuanInfoForm extends Component {
/> />
</Form.Item> </Form.Item>
<Form.Item label="打款须知" help="接收打款的一些必要告知信息" {...formItemLayout}> <Form.Item label="打款须知" help="接收打款的一些必要告知信息" {...formItemLayout}>
<Input type="textarea" rows={10} placeholder="" <Input type="textarea" autosize={{minRows:5, maxRows:20}} placeholder=""
{...getFieldProps('fundRaisedAccount.memo', { {...getFieldProps('fundRaisedAccount.memo', {
initialValue: fundRaisedAccount.memo initialValue: fundRaisedAccount.memo
})} })}
......
...@@ -58,7 +58,7 @@ export default class AddItem extends Component { ...@@ -58,7 +58,7 @@ export default class AddItem extends Component {
<Input placeholder="公告标题" {...getFieldProps('title')} /> <Input placeholder="公告标题" {...getFieldProps('title')} />
</Form.Item> </Form.Item>
<Form.Item label="内容" {...formItemLayout}> <Form.Item label="内容" {...formItemLayout}>
<Input placeholder="公告内容" type="textarea" {...getFieldProps('announcement')} /> <Input placeholder="公告内容" type="textarea" autosize={{minRows:5, maxRows:20}} {...getFieldProps('announcement')} />
</Form.Item> </Form.Item>
<Form.Item {...footerFormSubmitLayout} style={{marginTop:30}}> <Form.Item {...footerFormSubmitLayout} style={{marginTop:30}}>
<Button type="primary" htmlType="submit" loading={loading}><Icon type="save"/>创建</Button> <Button type="primary" htmlType="submit" loading={loading}><Icon type="save"/>创建</Button>
......
...@@ -72,7 +72,12 @@ export default class List extends Component { ...@@ -72,7 +72,12 @@ export default class List extends Component {
}, { }, {
title: '内容', title: '内容',
dataIndex: 'announcement', dataIndex: 'announcement',
key: 'announcement' key: 'announcement',
render: (announcement, record)=>(
<span title={announcement}>
{announcement && (announcement.length > 20 ? announcement.substr(0,20)+'...' : announcement)}
</span>
)
}, { }, {
title: '创建时间', title: '创建时间',
dataIndex: 'dateCreated', dataIndex: 'dateCreated',
......
import React, {Component, PropTypes} from 'react'; import React, {Component, PropTypes} from 'react';
import {Router, Route, IndexRoute, Link} from 'react-router'; import {Router, Route, IndexRoute, Link} from 'react-router';
import Layout from '../../components/Layout/Layout'; import Layout from '../../components/Layout/Layout';
import {connect} from 'react-redux';
import {Collapse, Menu, Icon, Upload} from 'antd';
import {Collapse, Menu, Icon} from 'antd';
const Panel = Collapse.Panel; const Panel = Collapse.Panel;
const SubMenu = Menu.SubMenu; const SubMenu = Menu.SubMenu;
const MenuItemGroup = Menu.ItemGroup; const MenuItemGroup = Menu.ItemGroup;
@connect(state=>({
user: state.user
}))
export default class App extends Component { export default class App extends Component {
static propTypes = { static propTypes = {
children: PropTypes.object.isRequired, children: PropTypes.object.isRequired,
...@@ -51,10 +53,30 @@ export default class App extends Component { ...@@ -51,10 +53,30 @@ export default class App extends Component {
to: '/remittance/audits', to: '/remittance/audits',
cn: '报单审核', cn: '报单审核',
en: 'Remittance Audits' en: 'Remittance Audits'
},{
to: '/withdraw/audits',
cn: '提现审核',
en: 'Withdraw Money'
}
]
},{
title:'消息管理',
items:[
{
to: '/customMessages',
cn: '消息列表',
en: 'Messages'
},{
to: '/customMessages/create',
cn: '推送消息',
en: 'Send Message'
} }
] ]
} }
]; ];
const {user} = this.props;
const logo = require('./images/logo.png'); const logo = require('./images/logo.png');
return ( return (
<div className={styles.normal}> <div className={styles.normal}>
...@@ -63,9 +85,11 @@ export default class App extends Component { ...@@ -63,9 +85,11 @@ export default class App extends Component {
</div> </div>
<div className={styles.content}> <div className={styles.content}>
<div className={styles.side}> <div className={styles.side}>
<Menu mode="inline" defaultOpenKeys={['sub1']}> <Menu mode="inline" defaultOpenKeys={['sub1']}>
<SubMenu key="sub1" title={<span><Icon type="mail" /><span>业务管理</span></span>}> <SubMenu key="sub1" title={<span><Icon type="mail" /><span>业务管理</span></span>}>
{ {
user && user.token &&
mainMenu.map((menu, mi)=> mainMenu.map((menu, mi)=>
<MenuItemGroup title={menu.title} key={mi}> <MenuItemGroup title={menu.title} key={mi}>
{ {
...@@ -79,10 +103,15 @@ export default class App extends Component { ...@@ -79,10 +103,15 @@ export default class App extends Component {
) )
} }
</SubMenu> </SubMenu>
<SubMenu key="sub2" title={<span><Icon type="folder" /><span>基本功能</span></span>}>
<Menu.Item>
<MenuItemContent to="/upload" cn="图片上传" en="Upload Images" />
</Menu.Item>
</SubMenu>
</Menu> </Menu>
</div> </div>
<div className={styles.main}> <div className={styles.main}>
{this.props.children} {user && user.token && this.props.children}
</div> </div>
</div> </div>
<div className={styles.foot}> <div className={styles.foot}>
......
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 Copy from '../../components/CopyToClipboard/CopyToClipboard';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader';
import {
handleUpload
} from '../../utils';
@connect(state=>({
user: state.user
}))
@Form.create()
export default class BaseUpload extends Component {
constructor(props, context) {
super(props, context);
this.state = {
fileList: []
};
}
render() {
const {user} = this.props;
const styles = require('./BaseUpload.less');
const header = (<MainHeader breadcrumb={['基本功能', '图片上传']} title="图片上传"/>);
return (
<Layout header={header}>
<Row>
<Col span="20">
<Upload.Dragger action="/api/fileUpload/upload"
multiple={true}
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({fileList: handleUpload(info)})}
showUploadList={false}
onPreview={(e)=>console.log(e)}
>
<p className="ant-upload-drag-icon">
<Icon type="inbox"/>
</p>
<p className="ant-upload-text">点击或将图片拖拽到此区域上传</p>
<p className="ant-upload-hint">支持单个或批量上传,严禁上传公司内部资料及其他违禁文件</p>
</Upload.Dragger>
<ul className={styles.fileList}>
{
this.state.fileList.map(file=>
<li key={file.uid}>
<Copy copyText={file.url}>
<Row>
<Col span="4"><Icon type="paper-clip"
style={{marginRight:'.3em'}}/>{file.name}</Col>
<Col span="20">{file.url ? file.url : '正在上传...'}</Col>
</Row>
</Copy>
</li>
)
}
</ul>
</Col>
</Row>
</Layout>
);
}
}
.fileList {
margin-top: 30px;
li {
margin: 10px 0;
}
}
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';
import {formItemLayout, footerFormSubmitLayout} from '../../utils';
@connect(state=>({
loading: state.customMessage.loading,
}))
@Form.create()
export default class AddItem extends Component {
constructor(props, content) {
super(props, content);
this.state = {
redirectName: '请选择',
sendName: '请选择'
}
}
handleSubmit(e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.customMessage.redirectType = this.state.redirectName;
data.customMessage.sendType = this.state.sendName;
console.log(data);
this.props.dispatch({
type: 'CREATE_MESSAGE_ITEM',
data
});
}
render = ()=> {
const {loading, form:{getFieldProps}, location:{query}} = this.props;
const header = (<MainHeader breadcrumb={['消息管理', '推送消息']}
title="推送消息"/>);
const redirectNamePlaceholder = {0:'无需填写', 1:'请输入一个产品ID', 2:'请输入消息跳转指定的URL地址'};
const sendNamePlaceholder = {1:'无需填写', 2:'请输入一个产品ID', 3:'请输入接收消息的人员的手机号码'};
return (
<Layout header={header}>
<Spin spinning={loading}>
<Form horizontal onSubmit={this.handleSubmit.bind(this)}>
<Form.Item label="推送渠道" {...formItemLayout}>
<Row>
<Col span="6">
<Select placeholder="请选择" {...getFieldProps('customMessage.channelType')} >
<Select.Option value="1">微信</Select.Option>
<Select.Option value="3">APP</Select.Option>
</Select>
</Col>
</Row>
</Form.Item>
<Form.Item label="消息跳转" {...formItemLayout}>
<Row>
<Col span="6">
<Select placeholder="请选择"
value={this.state.redirectName}
onChange={value=>this.setState({redirectName: value})}>
<Select.Option value="0"></Select.Option>
<Select.Option value="1">产品ID</Select.Option>
<Select.Option value="2">URL</Select.Option>
</Select>
</Col>
<Col span="18" style={{paddingLeft:'.5em'}}>
<Input placeholder={redirectNamePlaceholder[this.state.redirectName]}
{...getFieldProps('customMessage.redirect')} />
</Col>
</Row>
</Form.Item>
<Form.Item label="推送对象" {...formItemLayout}>
<Row>
<Col span="6">
<Select placeholder="请选择"
value={this.state.sendName}
onChange={value=>this.setState({sendName: value})}>
<Select.Option value="1">全局推送</Select.Option>
<Select.Option value="2">产品ID</Select.Option>
<Select.Option value="3">手动导入</Select.Option>
</Select>
</Col>
<Col span="18" style={{paddingLeft:'.5em'}}>
<Input placeholder={sendNamePlaceholder[this.state.sendName]}
{...getFieldProps('customMessage.send')} />
</Col>
</Row>
</Form.Item>
<Form.Item label="消息标题" {...formItemLayout}>
<Input placeholder="消息标题" {...getFieldProps('customMessage.title')} />
</Form.Item>
<Form.Item label="消息摘要" {...formItemLayout}>
<Input placeholder="消息摘要" type="textarea"
autosize={{minRows:3, maxRows:10}} {...getFieldProps('customMessage.abstracts')} />
</Form.Item>
<Form.Item label="消息正文" {...formItemLayout}>
<Input placeholder="消息正文" type="textarea"
autosize={{minRows:3, maxRows:10}} {...getFieldProps('customMessage.contents')} />
</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'}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
</Form>
</Spin>
</Layout>
);
}
}
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {Link} from 'react-router';
import {Form, Input, Button, Checkbox, message, Row, Col, Spin, Icon} from 'antd';
import {
formatDateTime,
tradeStatusToString,
tradeCreateTypeToString
} from '../../utils';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader';
@connect(state=>({
loading: state.customMessage.loading,
item: state.customMessage.item
}))
export default class Item extends Component {
componentDidMount() {
const {dispatch, params:{id}} = this.props;
dispatch({
type: 'FETCH_MESSAGE_ITEM',
id
});
};
render() {
const {item, loading} = this.props;
const styles = require('../Trade/Item.less');
const tw = 8;
const vw = 16;
const header = (<MainHeader breadcrumb={['消息管理', '消息详情']}
title={((item && item.title) ? item.title + ' - ' : '') + '消息详情'}/>);
return (
<Layout header={header}>
{
item ?
<div className={styles.trade}>
<div className={styles.tradeTable}>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>消息ID</Col>
<Col span={vw}>{item.id}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>消息标题</Col>
<Col span={vw}>{item.title}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>消息摘要</Col>
<Col span={vw}>{item.abstracts}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>消息正文</Col>
<Col span={vw}>{item.contents}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>跳转内容</Col>
<Col span={vw}>
<span>{'类型:'+(item.redirectName||'')}</span>
{
item.redirect &&
<span style={{marginLeft:'1em'}}>{'内容:'+item.redirect}</span>
}
</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>推送渠道</Col>
<Col
span={vw}>{item.channelName}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>推送时间</Col>
<Col
span={vw}>{item.dateCreated && item.dateCreated.replace(/[年月]/g, '-').replace(/日/g, '')}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>推送人数</Col>
<Col span={vw}>{item.count}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>推送类型</Col>
<Col span={vw}>{item.sendName}</Col>
</Row>
<Row type="flex" justify="space-around" align="middle">
<Col span={tw}>推送对象</Col>
<Col span={vw}>{item.send}</Col>
</Row>
</div>
<p>
<Button onClick={e=>{e.preventDefault(); this.props.history.goBack();}}
style={{marginLeft:'1em'}}>
<Icon type="rollback"/>返回
</Button>
</p>
</div>
:
<Spin spinning={loading}/>
}
</Layout>
);
}
};
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {Table, Icon, Button, Switch, Form} from 'antd';
import {serialize, formatDateTime, productStatusToString, footerFormSubmitLayout} from '../../utils';
import {Link} from 'react-router';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader';
@connect(state=>({
items: state.customMessage.items,
loading: state.customMessage.loading,
total: state.customMessage.total,
}))
export default class List extends Component {
constructor(props, context) {
super(props, context);
}
componentDidMount() {
this.fetchList(this.props.location.query);
};
fetchList(query) {
this.props.dispatch({
type: 'FETCH_MESSAGE_LIST',
query
});
};
handleRowClick({id}) {
this.props.history.push('/customMessages/' + id);
}
render() {
const {total, items, loading, history:{replace}, location:{pathname, query}} = this.props;
const pagination = {
total: total,
pageSize: parseInt(query.s, 10) || 10,
current: parseInt(query.p, 10) || 1,
showSizeChanger: true,
onShowSizeChange: (current, pageSize)=> {
console.log('Current: ', current, '; PageSize: ', pageSize);
query.p = current;
query.s = pageSize;
replace(pathname + '?' + serialize(query));
this.fetchList(query);
},
onChange: (current)=> {
console.log('Current: ', current);
query.p = current;
replace(pathname + '?' + serialize(query));
this.fetchList(query);
}
};
const columns = [
{
title: 'ID',
dataIndex: 'id',
key: 'id',
width: 50
}, {
title: '推送时间',
dataIndex: 'dateCreated',
key: 'dateCreated',
width: 150,
className: 'tac',
render: (dateCreated, record)=>(
<span>
{dateCreated && dateCreated.replace(/[年|月]/g, '-').replace(/日/g, '')}
</span>
)
}, {
title: '推送渠道',
dataIndex: 'channelName',
key: 'channelName',
className: 'tac',
width: 120
}, {
title: '标题',
dataIndex: 'title',
key: 'title'
}
];
const header = (<MainHeader breadcrumb={['消息管理', '消息列表']} title="消息列表"/>);
return (
<Layout header={header}>
<Table className="ant-table" columns={columns}
dataSource={Array.isArray(items)?items:[]}
loading={loading}
pagination={pagination}
scroll={{ y: window.innerHeight-380 }}
onRowClick={this.handleRowClick.bind(this)}
/>
</Layout>
);
}
}
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';
import {formItemLayout, footerFormSubmitLayout} from '../../utils';
@connect(state=>({
loading: state.remittance.loading,
audit: state.remittance.audit,
}))
@Form.create()
export default class EditItem extends Component {
constructor() {
super(...arguments);
}
componentDidMount() {
this.fetchItem(this.props.params.id);
};
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_AUDIT_ITEM',
id
});
};
handleSubmit(e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.id = this.props.audit.id;
console.log(data);
// this.props.dispatch({
// type: 'UPDATE_AUDIT_ITEM',
// data
// });
}
render() {
const {audit, loading, form:{getFieldProps}, location:{query}} = this.props;
const header = (<MainHeader breadcrumb={['审核管理', '报单审核','审核详情']}
title={(audit && audit.title ? audit.title + ' - ' : '') + '审核详情'}/>);
return (
<Layout header={header}>
<Spin spinning={loading}>
{
audit &&
<Form horizontal onSubmit={this.handleSubmit.bind(this)}>
<Form.Item label="产品募集情况" {...formItemLayout}>
<Input placeholder="公告标题"
{...getFieldProps('title', {
initialValue: audit.title
})} />
</Form.Item>
<Form.Item label="内容" {...formItemLayout}>
<Input placeholder="公告内容" autosize={{ minRows: 5 }} type="textarea"
{...getFieldProps('announcement', {
initialValue: audit.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'}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
</Form>
}
</Spin>
</Layout>
);
}
}
...@@ -2,9 +2,9 @@ import React, {Component, PropTypes} from 'react'; ...@@ -2,9 +2,9 @@ import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux'; import {connect} from 'react-redux';
import {Table, Icon} from 'antd'; import {Table, Icon} from 'antd';
import {Link} from 'react-router'; import {Link} from 'react-router';
import {serialize, formatDateTime, tradeStatusToString} from '../../../utils'; import {serialize, formatDateTime, remittanceAuditStatusToString} from '../../utils';
import Layout from '../../../components/Layout/Layout'; import Layout from '../../components/Layout/Layout';
import MainHeader from '../../../components/MainHeader'; import MainHeader from '../../components/MainHeader';
const columns = [ const columns = [
{ {
...@@ -47,7 +47,7 @@ const columns = [ ...@@ -47,7 +47,7 @@ const columns = [
key: 'status', key: 'status',
width: 120, width: 120,
className: 'tac', className: 'tac',
render: (status, record)=>(<span data-status={status}>{tradeStatusToString(status)}</span>) render: (status, record)=>(<span data-status={status}>{remittanceAuditStatusToString(status)}</span>)
}, { }, {
title: '操作', title: '操作',
key: 'operation', key: 'operation',
...@@ -56,8 +56,12 @@ const columns = [ ...@@ -56,8 +56,12 @@ const columns = [
className: 'tac', className: 'tac',
render: (text, record)=>( render: (text, record)=>(
<span> <span>
<Link to={'/trades/contract/'+ record.id} onClick={e=>e.stopPropagation()}>审核</Link> {
record.status == 1 &&
<Link to={'/remittance/audits/'+ record.id} onClick={e=>e.stopPropagation()}>审核</Link>
}
</span> </span>
) )
} }
]; ];
...@@ -80,7 +84,7 @@ export default class List extends Component { ...@@ -80,7 +84,7 @@ export default class List extends Component {
fetchList(query) { fetchList(query) {
this.props.dispatch({ this.props.dispatch({
type: 'FETCH_AUDIT_LIST', type: 'FETCH_REMITTANCE_LIST',
query query
}); });
} }
...@@ -114,15 +118,15 @@ export default class List extends Component { ...@@ -114,15 +118,15 @@ export default class List extends Component {
}; };
const header = (<MainHeader breadcrumb={['审核管理', '报单审核']} const header = (<MainHeader breadcrumb={['审核管理', '报单审核']}
title="审核列表"/>); title="报单审核列表"/>);
return ( return (
<Layout header={header}> <Layout header={header}>
<Table className="ant-table" columns={columns} <Table className="ant-table" columns={columns}
dataSource={Array.isArray(items)?items:[]} dataSource={Array.isArray(items) ? items : []}
loading={loading} loading={loading}
pagination={pagination} pagination={pagination}
scroll={{ y: window.innerHeight-380 }} scroll={{y: window.innerHeight - 380}}
onRowClick={this.handleRowClick.bind(this)} onRowClick={this.handleRowClick.bind(this)}
/> />
</Layout> </Layout>
......
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';
import {
formatDateTime,
formItemLayout,
smallFormItemLayout,
footerFormSubmitLayout,
remittanceAuditStatusToString
} from '../../utils';
@connect(state=>({
loading: state.remittance.loading,
audit: state.remittance.audit,
}))
@Form.create()
export default class PassItem extends Component {
constructor() {
super(...arguments);
}
componentDidMount() {
this.fetchItem(this.props.params.id);
};
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_REMITTANCE_ITEM',
id
});
};
handleSubmit(status, e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.id = this.props.params.id;
data.status = status;
console.log(data);
if (status == 9) {
delete data.memo;
}
this.props.dispatch({
type: 'PASS_REMITTANCE_ITEM',
data
});
}
render() {
const {audit, loading, form:{getFieldProps}, location:{query}} = this.props;
let title = (audit && audit.itemShortTitle ? audit.itemShortTitle + ' - ' : '');
let readOnly = true;
if (audit) {
switch (audit.status) {
case 1:
title += '报单审核详情';
readOnly = false;
break;
case 5:
title += '审核失败';
break;
case 9:
title += '审核成功';
}
} else {
title += '报单审核详情';
}
const header = (<MainHeader breadcrumb={['审核管理', '报单审核','审核详情']} title={title}/>);
const imgStyle = {maxWidth: '400px'};
return (
<Layout header={header}>
<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}
{...getFieldProps('remittanceAmount', {
initialValue: audit.remittanceAmount
})} />
</Form.Item>
<Form.Item label="预约姓名" {...smallFormItemLayout}>
<Input placeholder="预约姓名" readOnly defaultValue={audit.buyerName}/>
</Form.Item>
<Form.Item label="投资人姓名" help="真实的投资人姓名,请核对身份证照片上的姓名" {...smallFormItemLayout}>
<Input placeholder="投资人姓名" readOnly={readOnly}
{...getFieldProps('realName', {
initialValue: audit.realName
})} />
</Form.Item>
<Form.Item label="投资人身份证号码" help="真实的投资人身份证号码,请核对身份证照片上的号码" {...smallFormItemLayout}>
<Input placeholder="投资人身份证号码" readOnly={readOnly}
{...getFieldProps('identityCardNumber', {
initialValue: audit.identityCardNumber
})} />
</Form.Item>
<Form.Item label="投资人身份证照片" {...smallFormItemLayout}>
{
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>
</p>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
身份证照片未上传,请拒绝!
</p>
}
</Form.Item>
<Form.Item label="投资人银行卡照片" {...smallFormItemLayout}>
{
audit.bankCardPic ?
<a href={audit.bankCardPic} target="_blank">
<img src={audit.bankCardPic} style={imgStyle}/>
</a>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
银行卡照片未上传,请拒绝!
</p>
}
</Form.Item>
<Form.Item label="投资人打款凭条" {...smallFormItemLayout}>
{
audit.remittanceReceipt ?
<a href={audit.remittanceReceipt} target="_blank">
<img src={audit.remittanceReceipt} style={imgStyle}/>
</a>
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
打款凭条照片未上传,请拒绝!
</p>
}
</Form.Item>
<Form.Item label="投资人签字页" {...smallFormItemLayout}>
{
audit.signaturePages.length ?
audit.signaturePages.map((img, index)=>
<a href={img} target="_blank">
<img key={index} src={img} style={imgStyle}/>
</a>
)
:
<p style={{color:'#f00'}}>
<Icon type="cross-circle-o" style={{ marginRight:'.5em'}}/>
签字页照片未上传,请拒绝!
</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>
</Form>
}
</Spin>
</Layout>
);
}
}
import React, { Component, PropTypes } from 'react';
import classnames from 'classnames';
import styles from './Todo.less';
const Todo = ({ data, onToggleComplete }) => {
const { text, isComplete } = data;
const todoCls = classnames({
[styles.normal]: true,
[styles.isComplete]: isComplete,
});
return (
<div className={todoCls}>
<div className={styles.checkbox}>
<input
type="checkbox"
value=""
checked={isComplete}
onChange={onToggleComplete.bind(this)}
/>
</div>
<div className={styles.text}>
{text}
</div>
</div>
);
};
Todo.propTypes = {
data: PropTypes.object.isRequired,
onToggleComplete: PropTypes.func.isRequired,
};
export default Todo;
.normal {
display: flex;
}
.checkbox {
margin-right: 6px;
}
.isComplete {
color: #ccc;
text-decoration: line-through;
}
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {Spin} from 'antd';
import Todo from './Todo';
import styles from './Todos.less';
const Todos = ({todos, dispatch}) => {
const handleToggleComplete = (id) => {
dispatch({
type: 'todos/toggleComplete',
payload: id,
});
};
const renderList = () => {
const {list, loading} = todos;
if (loading) {
return <Spin />;
}
return (
<div className={styles.list}>
{list.map(item => <Todo
key={item.id}
data={item}
onToggleComplete={handleToggleComplete.bind(this, item.id)}
/>
)}
</div>
);
};
return (
<div className={styles.normal}>
{renderList()}
</div>
);
};
Todos.propTypes = {};
function filter(todos, pathname) {
const newList = todos.list.filter(todo => {
if (pathname === '/actived') {
return !todo.isComplete;
}
if (pathname === '/completed') {
return todo.isComplete;
}
return true;
});
return {...todos, list: newList};
}
function mapStateToProps({todos}, {location}) {
return {
todos: filter(todos, location.pathname),
};
}
export default connect(mapStateToProps)(Todos);
...@@ -49,6 +49,15 @@ export default class AddItem extends Component { ...@@ -49,6 +49,15 @@ export default class AddItem extends Component {
}; };
} }
componentDidMount(){
const {item} = this.props;
if (item && item.id) {
this.props.dispatch({
type: 'INIT_TRADE'
});
}
}
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
const {item} = nextProps; const {item} = nextProps;
if (item && item.id) { if (item && item.id) {
...@@ -64,10 +73,38 @@ export default class AddItem extends Component { ...@@ -64,10 +73,38 @@ export default class AddItem extends Component {
e.preventDefault(); e.preventDefault();
const data = this.props.form.getFieldsValue(); const data = this.props.form.getFieldsValue();
data.itemId = this.props.location.query.itemId; data.itemId = this.props.location.query.itemId;
console.log(data);
if(!data.itemId){
message.warning('未知的产品ID');
return;
}
if (data.remittance.remittanceTime) { if (data.remittance.remittanceTime) {
data.remittance.remittanceTime = formatDateTime(data.remittance.remittanceTime); data.remittance.remittanceTime = formatDateTime(data.remittance.remittanceTime);
} }
const {identityCardList, bankCardList, receiptList, signaturePages} = this.state;
if(Array.isArray(identityCardList) && identityCardList.length){
data.remittance.identityCardFront = identityCardList[0] && identityCardList[0].url;
data.remittance.identityCardBack = identityCardList[1] && identityCardList[1].url;
}
if(Array.isArray(bankCardList) && bankCardList.length){
data.remittance.bankCardPic = bankCardList[0] && bankCardList[0].url;
}
if(Array.isArray(receiptList) && receiptList.length){
data.remittance.remittanceReceipt = receiptList[0] && receiptList[0].url;
}
if(Array.isArray(signaturePages) && signaturePages.length){
let tmp = [];
signaturePages.forEach(file=>{
tmp.push(file.url);
})
data.remittance.signaturePages = JSON.stringify(tmp);
}
console.log(data);
this.props.dispatch({ this.props.dispatch({
type: 'CREATE_TRADE_ITEM', type: 'CREATE_TRADE_ITEM',
data, data,
...@@ -95,7 +132,7 @@ export default class AddItem extends Component { ...@@ -95,7 +132,7 @@ export default class AddItem extends Component {
<Form.Item {...smallFormItemLayout} label="投资人身份证号码" help="请如实填写投资人18位身份证号码"> <Form.Item {...smallFormItemLayout} label="投资人身份证号码" help="请如实填写投资人18位身份证号码">
<Input placeholder="" {...getFieldProps('buyer.identityCardNumber')} /> <Input placeholder="" {...getFieldProps('buyer.identityCardNumber')} />
</Form.Item> </Form.Item>
<Form.Item {...formItemLayout} label="投资人身份证正反面照片"> <Form.Item {...formItemLayout} label="投资人身份证照片" help="投资人身份证正反面照片">
<Upload action="/api/fileUpload/upload" listType="picture-card" <Upload action="/api/fileUpload/upload" listType="picture-card"
multiple={true} multiple={true}
headers={{ headers={{
......
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {
Form,
Input,
Button,
Checkbox,
message,
Tabs,
DatePicker,
Upload,
Icon,
Modal,
Breadcrumb,
Row,
Col,
Spin
} from 'antd';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader';
import {
formatDateTime,
formItemLayout,
smallFormItemLayout,
footerFormSubmitLayout
} from '../../utils';
@connect(state=>({
loading: state.trade.loading,
user: state.user,
item: state.trade.item
}))
@Form.create()
export default class EditItem extends Component {
constructor() {
super(...arguments);
this.state = {
priviewVisible: false,
priviewImage: '',
identityCardList: [],
bankCardList: [],
receiptList: [],
signaturePages: []
};
}
componentDidMount() {
const {dispatch, params:{id}} = this.props;
dispatch({
type: 'FETCH_TRADE_ITEM',
id
});
};
componentWillReceiveProps(nextProps) {
console.log(nextProps);
}
handleSubmit(e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.itemId = this.props.location.query.itemId;
console.log(data);
if (data.remittance.remittanceTime) {
data.remittance.remittanceTime = formatDateTime(data.remittance.remittanceTime);
}
// this.props.dispatch({
// type: 'CREATE_TRADE_ITEM',
// data,
// push: this.props.history.push,
// });
}
render() {
const {item, loading, form:{getFieldProps}, location:{query}, user} = this.props;
const header = (<MainHeader breadcrumb={['订单管理', '订单详情']}
title={((item && item.title) ? item.title + ' - ' : '') + '订单详情'}/>);
return (
<Layout header={header}>
<Spin spinning={loading}>
{
item &&
<Form horizontal onSubmit={this.handleSubmit.bind(this)} style={{height:'100%'}}>
<Form.Item {...smallFormItemLayout} label="理财师手机号" help="请准确核对理财师手机号码">
<Input {...getFieldProps('user.mobile', {
initialValue: ''
})} />
</Form.Item>
<Form.Item {...smallFormItemLayout} label="投资人姓名" help="请如实填写投资人姓名">
<Input {...getFieldProps('buyer.name', {
initialValue: item.buyerName
})} />
</Form.Item>
<Form.Item {...smallFormItemLayout} label="投资人身份证号码" help="请如实填写投资人18位身份证号码">
<Input placeholder="" {...getFieldProps('buyer.identityCardNumber', {
initialValue: item.buyerIdentityCardNumber
})} />
</Form.Item>
<Form.Item {...formItemLayout} label="投资人身份证照片" help="投资人身份证正反面照片">
<Upload action="/api/fileUpload/upload" listType="picture-card"
multiple={true}
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({identityCardList: handleUpload(info, 2)})}
onPreview={file => {
this.setState({
priviewImage: file.url,
priviewVisible: true
});
}}
fileList={this.state.identityCardList}>
<Icon type="upload"/>
<div className="ant-upload-text">上传照片</div>
</Upload>
</Form.Item>
<Form.Item {...smallFormItemLayout} label="投资人实际打款金额" help="请如实填写投资人实际打款金额">
<Input placeholder="520万" {...getFieldProps('remittance.remittanceAmount')} />
</Form.Item>
<Form.Item {...formItemLayout} label="投资人实际打款时间">
<DatePicker showTime
format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择时间"
{...getFieldProps('remittance.remittanceTime')}
/>
</Form.Item>
<Form.Item {...formItemLayout} label="投资人银行卡开户行">
<Input placeholder="中国工商银行杭州文一西路支行" {...getFieldProps('remittance.bankBranch')} />
</Form.Item>
<Form.Item {...formItemLayout} label="投资人银行卡照片">
<Upload action="/api/fileUpload/upload" listType="picture-card"
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({bankCardList: handleUpload(info, 1)})}
onPreview={file => {
this.setState({
priviewImage: file.url,
priviewVisible: true
});
}}
fileList={this.state.bankCardList}>
<Icon type="upload"/>
<div className="ant-upload-text">上传照片</div>
</Upload>
</Form.Item>
<Form.Item {...formItemLayout} label="投资人打款凭条照片">
<Upload action="/api/fileUpload/upload" listType="picture-card"
multiple={true}
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({receiptList: handleUpload(info)})}
onPreview={file => {
this.setState({
priviewImage: file.url,
priviewVisible: true
});
}}
fileList={this.state.receiptList}>
<Icon type="upload"/>
<div className="ant-upload-text">上传照片</div>
</Upload>
</Form.Item>
<Form.Item {...formItemLayout} className="clearfix" label="投资人合同签字页照片">
<Upload action="/api/fileUpload/upload" listType="picture-card"
multiple={true}
headers={{
authorization: user && user.token,
}}
onChange={info=>this.setState({signaturePages: handleUpload(info)})}
onPreview={file => {
this.setState({
priviewImage: file.url,
priviewVisible: true
});
}}
fileList={this.state.signaturePages}>
<Icon type="upload"/>
<div className="ant-upload-text">上传照片</div>
</Upload>
</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'}}>
<Icon type="rollback"/>返回
</Button>
</Form.Item>
<Modal footer={null}
width="100vw"
visible={this.state.priviewVisible}
className="img-priview-dialog"
style={{height:'100vh', background:'transparent'}}
onCancel={()=>this.setState({ priviewVisible: false })}>
<img src={this.state.priviewImage} style={{maxWidth:'100%'}}/>
</Modal>
</Form>
}
</Spin>
</Layout>
);
}
}
...@@ -25,10 +25,7 @@ export default class Item extends Component { ...@@ -25,10 +25,7 @@ export default class Item extends Component {
}); });
}; };
handleGoBack(e) {
e.preventDefault();
this.props.history.goBack();
};
render() { render() {
const {item, loading} = this.props; const {item, loading} = this.props;
...@@ -140,7 +137,7 @@ export default class Item extends Component { ...@@ -140,7 +137,7 @@ export default class Item extends Component {
</p> </p>
</div> </div>
: :
<Spin loading={loading}/> <Spin spinning={loading}/>
} }
</Layout> </Layout>
); );
......
import React, {Component, PropTypes} from 'react';
import {connect} from 'react-redux';
import {Table, Icon} from 'antd';
import {Link} from 'react-router';
import {serialize, formatDateTime, remittanceAuditStatusToString} from '../../utils';
import Layout from '../../components/Layout/Layout';
import MainHeader from '../../components/MainHeader';
const columns = [
{
title: 'ID',
dataIndex: 'id',
key: 'id',
width: 70
}, {
title: '提款人',
dataIndex: 'bankCard',
key: 'bankCard',
render: (bankCard, record)=>(<span>{bankCard.userName}</span>)
}, {
title: '提现金额',
dataIndex: 'amount',
key: 'amount',
width: 100,
className: 'tac',
}, {
title: '申请时间',
dataIndex: 'dateCreated',
key: 'dateCreated',
width: 150,
className: 'tac',
render: (dateCreated, record)=>(
<span>
{dateCreated && formatDateTime(dateCreated)}
</span>
)
}, {
title: '状态',
dataIndex: 'status',
key: 'status',
width: 120,
className: 'tac',
render: (status, record)=>(<span data-status={status}>{remittanceAuditStatusToString(status)}</span>)
}, {
title: '操作',
key: 'operation',
width: 60,
// fixed:'right',
className: 'tac',
render: (text, record)=>(
<span>
{
record.status == 1 &&
<Link to={'/withdraw/audits/'+ record.id} onClick={e=>e.stopPropagation()}>审核</Link>
}
</span>
)
}
];
@connect(state=>({
items: state.withdraw.audits,
loading: state.withdraw.loading,
total: state.withdraw.total,
}))
export default class List extends Component {
constructor(props, context) {
super(props, context);
}
componentDidMount() {
this.fetchList(this.props.location.query);
};
fetchList(query) {
this.props.dispatch({
type: 'FETCH_WITHDRAW_LIST',
query
});
}
handleRowClick({id}) {
this.props.history.push('/withdraw/audits/' + id);
}
render() {
const {total, items, loading, history:{replace}, location:{pathname, query}} = this.props;
const pagination = {
total: total,
pageSize: parseInt(query.s, 10) || 10,
current: parseInt(query.p, 10) || 1,
showSizeChanger: true,
onShowSizeChange: (current, pageSize)=> {
console.log('Current: ', current, '; PageSize: ', pageSize);
query.p = current;
query.s = pageSize;
replace(pathname + '?' + serialize(query));
this.fetchList(query);
},
onChange: (current) => {
console.log('Current: ', current);
query.p = current;
replace(pathname + '?' + serialize(query));
this.fetchList(query);
}
};
const header = (<MainHeader breadcrumb={['审核管理', '提现审核']}
title="提现审核列表"/>);
return (
<Layout header={header}>
<Table className="ant-table" columns={columns}
dataSource={Array.isArray(items) ? items : []}
loading={loading}
pagination={pagination}
scroll={{y: window.innerHeight - 380}}
onRowClick={this.handleRowClick.bind(this)}
/>
</Layout>
);
}
}
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';
import {
formatDateTime,
formItemLayout,
smallFormItemLayout,
footerFormSubmitLayout,
remittanceAuditStatusToString
} from '../../utils';
@connect(state=>({
loading: state.withdraw.loading,
audit: state.withdraw.audit,
}))
@Form.create()
export default class PassItem extends Component {
constructor() {
super(...arguments);
}
componentDidMount() {
this.fetchItem(this.props.params.id);
};
fetchItem(id) {
this.props.dispatch({
type: 'FETCH_WITHDRAW_ITEM',
id
});
};
handleSubmit(status, e) {
e.preventDefault();
const data = this.props.form.getFieldsValue();
data.id = this.props.params.id;
data.status = status;
console.log(data);
if (status == 9) {
delete data.memo;
}
this.props.dispatch({
type: 'PASS_WITHDRAW_ITEM',
data
});
}
render() {
const {audit, loading, form:{getFieldProps}, location:{query}} = this.props;
let title = (audit && audit.nickname ? audit.nickname + ' - ' : '');
let readOnly = true;
if (audit) {
switch (audit.status) {
case 1:
title += '报单审核详情';
readOnly = false;
break;
case 5:
title += '审核失败';
break;
case 9:
title += '审核成功';
}
} else {
title += '提现审核详情';
}
const header = (<MainHeader breadcrumb={['审核管理', '提现审核','审核详情']} title={title}/>);
let memo = [];
if (audit) {
if (audit.status == 1) {
const {bankCard, balance, balanceLong, amountLong} = audit;
if (!balance) {
memo.push('无余额可用');
} else if (balanceLong < amountLong) {
memo.push('余额不足');
}
const {name, bank, bankBranch, num} = bankCard;
if (!name) {
memo.push('无持卡人');
}
if (!num) {
memo.push('无银行卡号');
}
if (!bank || !bankBranch) {
memo.push('无开户行信息');
}
} else {
memo.push(audit.memo);
}
}
memo = memo.join('\n');
return (
<Layout header={header}>
<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.balance}/>
</Form.Item>
<Form.Item label="持卡人信息" {...smallFormItemLayout}>
<Input placeholder="持卡人信息" readOnly
defaultValue={'持卡人:'+(audit.name || '') + ' 卡号:'+(audit.number || '')}/>
</Form.Item>
<Form.Item label="银行卡信息" {...smallFormItemLayout}>
<Input placeholder="银行卡信息" readOnly
defaultValue={(audit.bankCard.bank || '') + ( audit.bankCard.bankBranch || '') }/>
</Form.Item>
<Form.Item label="提现金额" {...smallFormItemLayout}>
<Input placeholder="实际入账金额" readOnly defaultValue={audit.amount}/>
</Form.Item>
<Form.Item label="拒绝理由" {...smallFormItemLayout}>
<Input placeholder="拒绝理由" readOnly={readOnly} type="textarea" autosize
{...getFieldProps('memo', {
initialValue: 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>
</Form>
}
</Spin>
</Layout>
);
}
}
...@@ -13,4 +13,11 @@ export TradeAddItem from './Trade/AddItem'; ...@@ -13,4 +13,11 @@ export TradeAddItem from './Trade/AddItem';
export AnnouncementList from './Announcement/List'; export AnnouncementList from './Announcement/List';
export AnnouncementEditItem from './Announcement/EditItem'; export AnnouncementEditItem from './Announcement/EditItem';
export AnnouncementAddItem from './Announcement/AddItem'; export AnnouncementAddItem from './Announcement/AddItem';
export RemittanceAuditList from './Remittance/Audit/List'; export RemittanceAuditList from './Remittance/List';
export RemittanceAuditPassItem from './Remittance/PassItem';
export WithDrawList from './Withdraw/List';
export PassWithDrawItem from './Withdraw/PassItem';
export CustomMessageList from './CustomMessage/List';
export CustomMessageAddItem from './CustomMessage/AddItem';
export CustomMessageItem from './CustomMessage/Item';
export BaseUpload from './BaseFunction/BaseUpload';
...@@ -5,6 +5,13 @@ ...@@ -5,6 +5,13 @@
font-size: 14px; font-size: 14px;
background-color: #e9ecf3; background-color: #e9ecf3;
} }
//input[type="text"][readonly],
//textarea[readonly]{
// background-color: #fafafa !important;
//}
//.ant-cascader-input[type="text"][readonly]{
// background-color: #fff !important;
//}
label, label,
.ant-form-item { .ant-form-item {
font-size: 14px !important; font-size: 14px !important;
......
import {handleActions} from 'redux-actions';
import {combineReducer} from 'redux';
const message = handleActions({
['FETCH_MESSAGE_LIST'](state) {
return {...state, loading: true};
},
['FETCH_MESSAGE_LIST_SUCCESS'](state, action) {
return {...state, loading: false, items: action.items, total: action.total};
},
['FETCH_MESSAGE_LIST_FAILED'](state, action) {
return {...state, err: action.err, loading: false};
},
['FETCH_MESSAGE_ITEM'](state){
return {...state, loading: true}
},
['FETCH_MESSAGE_ITEM_SUCCESS'](state, action){
return {...state, loading: false, item: action.item}
},
['FETCH_MESSAGE_ITEM_FAILED'](state, action){
return {...state, err: action.err, loading: false}
},
['CREATE_MESSAGE_ITEM'](state){
return {...state, loading: true}
},
['CREATE_MESSAGE_ITEM_SUCCESS'](state, action){
return {...state, loading: false, item: action.item}
},
['CREATE_MESSAGE_ITEM_FAILED'](state, action){
return {...state, err: action.err, loading: false}
}
}, {
items: [],
loading: false,
});
export default message;
import {handleActions} from 'redux-actions'; import {handleActions} from 'redux-actions';
import {combineReducer} from 'redux'; import {combineReducer} from 'redux';
const audit = handleActions({ const remittance = handleActions({
['FETCH_AUDIT_LIST'](state) { ['FETCH_REMITTANCE_LIST'](state) {
return {...state, loading: true,}; return {...state, loading: true,};
}, },
['FETCH_AUDIT_LIST_SUCCESS'](state, action) { ['FETCH_REMITTANCE_LIST_SUCCESS'](state, action) {
return {...state, loading: false, audits: action.items, total: action.total}; return {...state, loading: false, audits: action.items, total: action.total};
}, },
['FETCH_AUDIT_LIST_FAILED'](state, action) { ['FETCH_REMITTANCE_LIST_FAILED'](state, action) {
return {...state, err: action.err, loading: false}; return {...state, err: action.err, loading: false};
}, },
['FETCH_AUDIT_ITEM'](state) { ['FETCH_REMITTANCE_ITEM'](state) {
return {...state, loading: true,}; return {...state, loading: true,};
}, },
['FETCH_AUDIT_ITEM_SUCCESS'](state, action) { ['FETCH_REMITTANCE_ITEM_SUCCESS'](state, action) {
return {...state, loading: false, audit: action.item}; return {...state, loading: false, audit: action.item};
}, },
['FETCH_AUDIT_ITEM_FAILED'](state, action) { ['FETCH_REMITTANCE_ITEM_FAILED'](state, action) {
return {...state, err: action.err, loading: false}; return {...state, err: action.err, loading: false};
}, },
['PASS_REMITTANCE_ITEM'](state){
return {...state, loading: true};
},
['PASS_REMITTANCE_ITEM_SUCCESS'](state, action){
const audit = {...state.audit, status: action.status};
return {...state, loading: false, audit};
},
['PASS_REMITTANCE_ITEM_FAILED'](state, action){
return {...state, loading: false, err: action.err};
}
}, { }, {
drawMoneys:[],
audits: [], audits: [],
loading: false, loading: false,
}); });
export default audit; export default remittance;
import {handleActions} from 'redux-actions';
import {combineReducer} from 'redux';
const withdraw = handleActions({
['FETCH_WITHDRAW_LIST'](state) {
return {...state, loading: true};
},
['FETCH_WITHDRAW_LIST_SUCCESS'](state, action) {
return {...state, loading: false, audits: action.items, total: action.total};
},
['FETCH_WITHDRAW_LIST_FAILED'](state, action) {
return {...state, err: action.err, loading: false};
},
['FETCH_WITHDRAW_ITEM'](state) {
return {...state, loading: true};
},
['FETCH_WITHDRAW_ITEM_SUCCESS'](state, action) {
return {...state, loading: false, audit: action.item};
},
['FETCH_WITHDRAW_ITEM_FAILED'](state, action) {
return {...state, err: action.err, loading: false};
},
['PASS_WITHDRAW_ITEM'](state){
return {...state, loading: true};
},
['PASS_WITHDRAW_ITEM_SUCCESS'](state, action){
const audit = {...state.audit, status: action.status};
if(action.status == 5){
audit.memo = action.memo;
}
return {...state, loading: false, audit};
},
['PASS_WITHDRAW_ITEM_FAILED'](state, action){
return {...state, loading: false, err: action.err};
}
}, {
audits: [],
loading: false,
});
export default withdraw;
...@@ -16,7 +16,14 @@ import { ...@@ -16,7 +16,14 @@ import {
AnnouncementList, AnnouncementList,
AnnouncementEditItem, AnnouncementEditItem,
AnnouncementAddItem, AnnouncementAddItem,
RemittanceAuditList , RemittanceAuditList,
RemittanceAuditPassItem,
WithDrawList,
PassWithDrawItem,
CustomMessageList,
CustomMessageAddItem,
CustomMessageItem,
BaseUpload
} from '../containers/index'; } from '../containers/index';
export default (store)=> { export default (store)=> {
...@@ -50,11 +57,22 @@ export default (store)=> { ...@@ -50,11 +57,22 @@ export default (store)=> {
</Route> </Route>
<Route path="remittance"> <Route path="remittance">
<Route path="audits"> <Route path="audits">
<IndexRoute component={RemittanceAuditList} /> <IndexRoute component={RemittanceAuditList}/>
<Route path=":id" component={RemittanceAuditPassItem}/>
</Route> </Route>
</Route> </Route>
<Route path="/actived" component={Home}/> <Route path="withdraw">
<Route path="/completed" component={Home}/> <Route path="audits">
<IndexRoute component={WithDrawList}/>
<Route path=":id" component={PassWithDrawItem}/>
</Route>
</Route>
<Route path="customMessages">
<IndexRoute component={CustomMessageList}/>
<Route path="create" component={CustomMessageAddItem}/>
<Route path=":id" component={CustomMessageItem}/>
</Route>
<Route path="upload" component={BaseUpload} />
</Route> </Route>
<Route path="/login" component={Login}/> <Route path="/login" component={Login}/>
<Route path="*" component={NotFound}/> <Route path="*" component={NotFound}/>
......
import {takeLatest} from 'redux-saga';
import {take, call, put, fork, cancel, select} from 'redux-saga/effects';
import {fetchList, fetchItem, createItem} from '../services/customMessage';
import {message} from 'antd';
function* getList(query) {
try {
const {total, customMessageViewDOs} = yield call(fetchList, query);
yield put({
type: 'FETCH_MESSAGE_LIST_SUCCESS',
total,
items: customMessageViewDOs
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'FETCH_MESSAGE_LIST_FAILED',
err,
});
}
}
function* watchList() {
while (true) {
const {query} = yield take('FETCH_MESSAGE_LIST');
yield fork(getList, query);
}
}
function* getItem(id) {
try {
const item = yield call(fetchItem, id);
yield put({
type: 'FETCH_MESSAGE_ITEM_SUCCESS',
item
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'FETCH_MESSAGE_ITEM_FAILED',
err
});
}
}
function* watchItem() {
while (true) {
const {id} = yield take('FETCH_MESSAGE_ITEM');
yield fork(getItem, id);
}
}
function* addItem(data) {
try{
const item = yield call(createItem, data);
message.success('创建成功!');
yield put({
type: 'CREATE_MESSAGE_ITEM_SUCCESS',
item: {...item, ...data}
});
}catch(err){
console.log(err);
message.error(err);
yield put({
type:'CREATE_MESSAGE_ITEM_FAILED',
err
});
}
}
function* watchAdd() {
while (true) {
const {data} = yield take('CREATE_MESSAGE_ITEM');
yield fork(addItem, data);
}
}
export default function*() {
yield fork(watchList);
yield fork(watchItem);
yield fork(watchAdd);
}
import {takeLatest} from 'redux-saga'; import {takeLatest} from 'redux-saga';
import {take, call, put, fork, cancel, select} from 'redux-saga/effects'; import {take, call, put, fork, cancel, select} from 'redux-saga/effects';
import {fetchAuditList, fetchAuditItem} from '../services/remittance'; import {
fetchList, fetchItem, pass,
} from '../services/remittance';
import {message} from 'antd'; import {message} from 'antd';
function* getAuditList(query) { function* getList(query) {
try { try {
const {total, audits} = yield call(fetchAuditList, query); const {total, audits} = yield call(fetchList, query);
yield put({ yield put({
type: 'FETCH_AUDIT_LIST_SUCCESS', type: 'FETCH_REMITTANCE_LIST_SUCCESS',
total, total,
items: audits items: audits
}); });
...@@ -15,46 +17,70 @@ function* getAuditList(query) { ...@@ -15,46 +17,70 @@ function* getAuditList(query) {
console.log(err); console.log(err);
message.error(err); message.error(err);
yield put({ yield put({
type: 'FETCH_AUDIT_LIST_FAILED', type: 'FETCH_REMITTANCE_LIST_FAILED',
err, err,
}); });
} }
} }
function* watchAuditList() { function* watchList() {
while (true) { while (true) {
const {query} = yield take('FETCH_AUDIT_LIST'); const {query} = yield take('FETCH_REMITTANCE_LIST');
yield fork(getAuditList, query); yield fork(getList, query);
} }
} }
function* getAuditItem(id) { function* getItem(id) {
try { try {
const item = yield call(fetchAuditItem, id); const item = yield call(fetchItem, id);
yield put({ yield put({
type: 'FETCH_AUDIT_ITEM_SUCCESS', type: 'FETCH_REMITTANCE_ITEM_SUCCESS',
item item
}); });
} catch (err) { } catch (err) {
console.log(err); console.log(err);
message.error(err); message.error(err);
yield put({ yield put({
type: 'FETCH_AUDIT_ITEM_FAILED', type: 'FETCH_REMITTANCE_ITEM_FAILED',
err err
}); });
} }
} }
function* watchAuditItem() { function* watchItem() {
while (true) { while (true) {
const {id} = yield take('FETCH_AUDIT_ITEM'); const {id} = yield take('FETCH_REMITTANCE_ITEM');
yield fork(getAuditItem, id); yield fork(getItem, id);
} }
} }
function* passItem(data){
try {
yield call(pass, data);
yield put({
type: 'PASS_REMITTANCE_ITEM_SUCCESS',
status: data.status
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'PASS_REMITTANCE_ITEM_FAILED',
err
});
}
}
function* watchPassItem() {
while (true) {
const {data} = yield take('PASS_REMITTANCE_ITEM');
yield fork(passItem, data);
}
}
export default function*() { export default function*() {
yield fork(watchAuditList); yield fork(watchList);
yield fork(watchAuditItem); yield fork(watchItem);
// yield fork(watchAdd); yield fork(watchPassItem);
// yield fork(watchEdit);
} }
import {takeLatest} from 'redux-saga';
import {take, call, put, fork, cancel, select} from 'redux-saga/effects';
import { fetchList, fetchItem, pass } from '../services/withdraw';
import {message} from 'antd';
function* getList(query) {
try {
const {total, audits} = yield call(fetchList, query);
yield put({
type: 'FETCH_WITHDRAW_LIST_SUCCESS',
total,
items: audits
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'FETCH_WITHDRAW_LIST_FAILED',
err,
});
}
}
function* watchList() {
while (true) {
const {query} = yield take('FETCH_WITHDRAW_LIST');
yield fork(getList, query);
}
}
function* getItem(id) {
try {
const item = yield call(fetchItem, id);
yield put({
type: 'FETCH_WITHDRAW_ITEM_SUCCESS',
item
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'FETCH_WITHDRAW_ITEM_FAILED',
err
});
}
}
function* watchItem() {
while (true) {
const {id} = yield take('FETCH_WITHDRAW_ITEM');
yield fork(getItem, id);
}
}
function* passItem(data){
try {
yield call(pass, data);
yield put({
type: 'PASS_WITHDRAW_ITEM_SUCCESS',
status: data.status,
memo: data.memo
});
} catch (err) {
console.log(err);
message.error(err);
yield put({
type: 'PASS_WITHDRAW_ITEM_FAILED',
err
});
}
}
function* watchPassItem() {
while (true) {
const {data} = yield take('PASS_WITHDRAW_ITEM');
yield fork(passItem, data);
}
}
export default function*() {
yield fork(watchList);
yield fork(watchItem);
yield fork(watchPassItem);
}
...@@ -12,7 +12,7 @@ export async function fetchItem(id) { ...@@ -12,7 +12,7 @@ export async function fetchItem(id) {
} }
export async function createItem(item) { export async function createItem(item) {
return xFetch('/api/announcements/save', { return xFetch('/api/announcements', {
method: 'POST', method: 'POST',
body: serialize(item) body: serialize(item)
}); });
......
import xFetch from './xFetch';
import {serialize} from '../utils';
export async function fetchList(query) {
const data = {...query};
return xFetch('/api/customMessages' + '?' + serialize(data));
}
export async function fetchItem(id) {
return xFetch('/api/customMessages/' + id);
}
export async function createItem(item) {
return xFetch('/api/customMessages', {
method: 'POST',
body: serialize(item)
});
}
import xFetch from './xFetch'; import xFetch from './xFetch';
import {serialize} from '../utils'; import {serialize} from '../utils';
export async function fetchAuditList(query) { export async function fetchList(query) {
return xFetch('/api/remittance/audits' +'?' + serialize(query)); return xFetch('/api/remittance/audits' + '?' + serialize(query));
} }
export async function fetchAuditItem(id) { export async function fetchItem(id) {
return xFetch('/api/remittance/audits/'+id); return xFetch('/api/remittance/audits/' + id);
} }
// export async function fetchItem(id) { export async function pass(data) {
// return xFetch('/api/trades/'+ id); return xFetch('/api/remittance/audits/op/' + data.id, {
// } method: 'POST',
// body: serialize(data)
// export async function createItem(data){ });
// return xFetch('/api/trades', { }
// method:'POST',
// body: serialize(data)
// });
// }
//
// export async function settlementItem(id){
// return xFetch('/api/trade/commission/settlement/'+id);
// }
...@@ -2,9 +2,6 @@ import xFetch from './xFetch'; ...@@ -2,9 +2,6 @@ import xFetch from './xFetch';
import {serialize} from '../utils'; import {serialize} from '../utils';
export async function fetch(username, password) { export async function fetch(username, password) {
// let form = new FormData();
// form.append('username', username);
// form.append('password', password);
return xFetch('/api/authenticate', { return xFetch('/api/authenticate', {
method: 'POST', method: 'POST',
body: serialize({username, password}) body: serialize({username, password})
......
import xFetch from './xFetch';
import {serialize} from '../utils';
export async function fetchList(query) {
return xFetch('/api/withdraw/audits' + '?' + serialize(query));
}
export async function fetchItem(id) {
return xFetch('/api/withdraw/audits/' + id);
}
export async function pass(data) {
return xFetch('/api/withdraw/audits/op/' + data.id, {
method: 'POST',
body: serialize(data)
});
}
...@@ -160,6 +160,15 @@ export function transformUploadThumbUrl(fileList) { ...@@ -160,6 +160,15 @@ export function transformUploadThumbUrl(fileList) {
file.url = result[0].url; file.url = result[0].url;
file.thumbUrl = result[0].url + '!t'; file.thumbUrl = result[0].url + '!t';
} }
return {
uid: file.uid,
status: file.status,
type: file.type,
url: file.url,
thumbUrl: file.thumbUrl,
name:file.name,
size:file.size
}
} }
return file; return file;
}); });
...@@ -173,3 +182,16 @@ export function handleUpload(info, limit){ ...@@ -173,3 +182,16 @@ export function handleUpload(info, limit){
return transformUploadThumbUrl(fileList); return transformUploadThumbUrl(fileList);
} }
export function remittanceAuditStatusToString(status) {
switch (status){
case 1:
return '待审核';
case 5:
return '审核失败';
case 9:
return '审核成功';
default:
return '未定义';
}
}
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