li.shaoyi 1 年之前
父節點
當前提交
d87f848a25
共有 28 個文件被更改,包括 1328 次插入439 次删除
  1. 2 0
      oem/zrwyt/html/cczr.files/filelist.xml
  2. 1 0
      oem/zrwyt/html/cczr.files/header.html
  3. 859 0
      oem/zrwyt/html/cczr.htm
  4. 19 104
      src/hooks/menu/index.ts
  5. 0 167
      src/hooks/menu/index@next.ts
  6. 38 17
      src/packages/mobile/views/order/inout/components/add/index.vue
  7. 31 0
      src/packages/mobile/views/order/inout/components/agreement/index.vue
  8. 20 0
      src/packages/mobile/views/order/inout/components/in/list/index.less
  9. 94 25
      src/packages/mobile/views/order/inout/components/in/list/index.vue
  10. 0 13
      src/packages/mobile/views/swap/detail/components/delisting/Index.less
  11. 0 13
      src/packages/mobile/views/swap/detail/components/listing/Index.less
  12. 2 6
      src/packages/mobile/views/user/register/Index.vue
  13. 0 13
      src/packages/mobile/views/user/register/index.less
  14. 7 4
      src/packages/pc/components/layouts/main/index.vue
  15. 5 4
      src/packages/pc/components/layouts/sidebar/index.vue
  16. 5 3
      src/packages/pc/components/layouts/sidemenu/index.vue
  17. 19 3
      src/packages/pc/router/index.ts
  18. 1 1
      src/packages/pc/views/auth/login/index.vue
  19. 6 0
      src/packages/pc/views/footer/inout/agreement/index.less
  20. 23 0
      src/packages/pc/views/footer/inout/agreement/index.vue
  21. 6 0
      src/packages/pc/views/footer/inout/in/confirm/index.less
  22. 68 17
      src/packages/pc/views/footer/inout/in/confirm/index.vue
  23. 44 22
      src/packages/pc/views/footer/inout/out/add/index.vue
  24. 0 1
      src/packages/pc/views/market/trade/presell/transfer/listing/index.vue
  25. 8 4
      src/packages/pc/views/system/menu/index.vue
  26. 4 4
      src/packages/pc/views/system/role/components/auth/index.vue
  27. 12 0
      src/stores/modules/login.ts
  28. 54 18
      src/stores/modules/menu.ts

+ 2 - 0
oem/zrwyt/html/cczr.files/filelist.xml

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xml xmlns:o="urn:schemas-microsoft-com:office:office"><o:MainFile HRef="../cczr.htm"/><o:File HRef="header.html"/><o:File HRef="filelist.xml"/></xml>

+ 1 - 0
oem/zrwyt/html/cczr.files/header.html

@@ -0,0 +1 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type  content="text/html; charset=utf-8" ><meta name=ProgId  content=Word.Document ><meta name=Generator  content="Microsoft Word 14" ><meta name=Originator  content="Microsoft Word 14" ></head><body><div style="mso-element:footer"  id="f0" ><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:'Microsoft JhengHei';font-size:9.0000pt;" ></span></p><p class=MsoNormal ></p><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:'Microsoft JhengHei';font-size:9.0000pt;" ></span></p><p class=MsoNormal ></p><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:'Microsoft JhengHei';font-size:9.0000pt;" ></span></p><p class=MsoNormal ></p><p class=MsoNormal ><span style="mso-spacerun:'yes';font-family:'Microsoft JhengHei';font-size:9.0000pt;" ></span></p><p class=MsoNormal ></p><p class=MsoFooter ><span style="mso-spacerun:'yes';font-family:'Microsoft JhengHei';font-size:9.0000pt;" ><o:p></o:p></span></p></div></body></html>

+ 859 - 0
oem/zrwyt/html/cczr.htm

@@ -0,0 +1,859 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type  content="text/html; charset=utf-8" ><meta name=ProgId  content=Word.Document ><meta name=Generator  content="Microsoft Word 14" ><meta name=Originator  content="Microsoft Word 14" ><link rel=File-List  href="cczr.files/filelist.xml" ><title></title><!--[if gte mso 9]><xml><o:DocumentProperties><o:Author>Administrator</o:Author><o:LastAuthor>Muchinfo</o:LastAuthor><o:Revision>1</o:Revision><o:Pages>1</o:Pages></o:DocumentProperties><o:CustomDocumentProperties><o:KSOProductBuildVer dt:dt="string" >2052-12.1.0.16417</o:KSOProductBuildVer><o:ICV dt:dt="string" >5D26DA7FE73648BF81C1672C91E01C06_13</o:ICV></o:CustomDocumentProperties></xml><![endif]--><!--[if gte mso 9]><xml><o:OfficeDocumentSettings></o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing><w:View>Web</w:View><w:Compatibility><w:AdjustLineHeightInTable/><w:DontGrowAutofit/><w:BalanceSingleByteDoubleByteWidth/><w:DoNotExpandShiftReturn/><w:UseFELayout/></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml><w:LatentStyles DefLockedState="false"  DefUnhideWhenUsed="true"  DefSemiHidden="true"  DefQFormat="false"  DefPriority="99"  LatentStyleCount="260" >
+<w:LsdException Locked="false"  Priority="1"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Normal" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="heading 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 7" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 8" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="heading 9" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 7" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 8" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index 9" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 7" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 8" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toc 9" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Normal Indent" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="footnote text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="annotation text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="header" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="footer" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="index heading" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  QFormat="true"  Name="caption" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="table of figures" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="envelope address" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="envelope return" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="footnote reference" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="annotation reference" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="line number" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="page number" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="endnote reference" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="endnote text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="table of authorities" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="macro" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="toa heading" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Bullet" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Number" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Bullet 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Bullet 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Bullet 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Bullet 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Number 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Number 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Number 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Number 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="1"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Title" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Closing" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Signature" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  UnhideWhenUsed="false"  QFormat="true"  Name="Default Paragraph Font" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text Indent" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Continue" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Continue 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Continue 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Continue 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="List Continue 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Message Header" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Subtitle" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Salutation" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Date" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text First Indent" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text First Indent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Note Heading" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text Indent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Body Text Indent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Block Text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Hyperlink" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="FollowedHyperlink" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Strong" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  QFormat="true"  Name="Emphasis" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Document Map" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Plain Text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="E-mail Signature" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Normal (Web)" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Acronym" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Address" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Cite" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Code" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Definition" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Keyboard" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Preformatted" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Sample" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Typewriter" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="HTML Variable" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  UnhideWhenUsed="false"  QFormat="true"  Name="Normal Table" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="annotation subject" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="No List" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="1 / a / i" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="1 / 1.1 / 1.1.1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="Article / Section" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Simple 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Simple 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Simple 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Classic 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Classic 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Classic 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Classic 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Colorful 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Colorful 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Colorful 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Columns 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Columns 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Columns 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Columns 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Columns 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 7" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid 8" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 7" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table List 8" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table 3D effects 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table 3D effects 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table 3D effects 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Contemporary" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Elegant" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Professional" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Subtle 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Subtle 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Web 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Web 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Web 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Balloon Text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Grid" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="0"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Table Theme" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="Placeholder Text" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="No Spacing" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="List Paragraph" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="Quote" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="99"  SemiHidden="false"  Name="Intense Quote" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 1" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 2" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 3" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 4" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 5" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="60"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Shading Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="61"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light List Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="62"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Light Grid Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="63"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 1 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="64"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Shading 2 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="65"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 1 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="66"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium List 2 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="67"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 1 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="68"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 2 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="69"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Medium Grid 3 Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="70"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Dark List Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="71"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Shading Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="72"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful List Accent 6" ></w:LsdException>
+<w:LsdException Locked="false"  Priority="73"  SemiHidden="false"  UnhideWhenUsed="false"  Name="Colorful Grid Accent 6" ></w:LsdException>
+</w:LatentStyles></xml><![endif]--><style>
+@font-face{
+font-family:"Times New Roman";
+}
+
+@font-face{
+font-family:"宋体";
+}
+
+@font-face{
+font-family:"Wingdings";
+}
+
+@font-face{
+font-family:"Microsoft JhengHei";
+}
+
+@font-face{
+font-family:"Calibri";
+}
+
+@list l0:level1{
+mso-level-number-format:chinese-counting;
+mso-level-suffix:space;
+mso-level-text:"第%1条";
+mso-level-tab-stop:none;
+mso-level-number-position:left;
+margin-left:0.0000pt;
+text-indent:0.0000pt;
+font-family:宋体;}
+
+p.MsoNormal{
+mso-style-name:正文;
+mso-style-parent:"";
+margin-top:0.0000pt;
+margin-right:0.0000pt;
+margin-bottom:0.0000pt;
+margin-left:0.0000pt;
+text-autospace:none;
+mso-pagination:none;
+text-align:left;
+font-family:'Microsoft JhengHei';
+font-size:11.0000pt;
+}
+
+span.10{
+font-family:'Times New Roman';
+}
+
+span.15{
+font-family:'Times New Roman';
+color:rgb(0,0,255);
+text-decoration:underline;
+text-underline:single;
+}
+
+p.MsoFooter{
+mso-style-name:页脚;
+margin-top:0.0000pt;
+margin-right:0.0000pt;
+margin-bottom:0.0000pt;
+margin-left:0.0000pt;
+layout-grid-mode:char;
+text-autospace:none;
+mso-pagination:none;
+text-align:left;
+font-family:'Microsoft JhengHei';
+font-size:9.0000pt;
+}
+
+p.MsoTitle{
+mso-style-name:标题;
+margin-top:8.2000pt;
+margin-right:62.7000pt;
+margin-bottom:0.0000pt;
+margin-left:50.8000pt;
+text-autospace:none;
+mso-pagination:none;
+text-align:center;
+font-family:'Microsoft JhengHei';
+font-weight:bold;
+font-size:18.0000pt;
+}
+
+p.MsoHeader{
+mso-style-name:页眉;
+margin-top:0.0000pt;
+margin-right:0.0000pt;
+margin-bottom:0.0000pt;
+margin-left:0.0000pt;
+border-top:none;
+mso-border-top-alt:none;
+border-right:none;
+mso-border-right-alt:none;
+border-bottom:none;
+mso-border-bottom-alt:none;
+border-left:none;
+mso-border-left-alt:none;
+padding:1pt 4pt 1pt 4pt ;
+layout-grid-mode:char;
+text-autospace:none;
+mso-pagination:none;
+text-align:justify;
+text-justify:inter-ideograph;
+font-family:'Microsoft JhengHei';
+font-size:9.0000pt;
+}
+
+p.19{
+mso-style-name:Default;
+margin:0pt;
+margin-bottom:.0001pt;
+mso-layout-grid-align:none;
+text-autospace:none;
+mso-pagination:none;
+font-family:宋体;
+mso-hansi-font-family:Calibri;
+color:rgb(0,0,0);
+font-size:12.0000pt;
+}
+
+span.msoIns{
+mso-style-type:export-only;
+mso-style-name:"";
+text-decoration:underline;
+text-underline:single;
+color:blue;
+}
+
+span.msoDel{
+mso-style-type:export-only;
+mso-style-name:"";
+text-decoration:line-through;
+color:red;
+}
+
+table.MsoNormalTable{
+mso-style-name:普通表格;
+mso-style-parent:"";
+mso-style-noshow:yes;
+mso-tstyle-rowband-size:0;
+mso-tstyle-colband-size:0;
+mso-padding-alt:0.0000pt 5.4000pt 0.0000pt 5.4000pt;
+mso-para-margin:0pt;
+mso-para-margin-bottom:.0001pt;
+mso-pagination:widow-orphan;
+font-family:'Times New Roman';
+font-size:10.0000pt;
+mso-ansi-language:#0400;
+mso-fareast-language:#0400;
+mso-bidi-language:#0400;
+}
+@page{mso-page-border-surround-header:no;
+	mso-page-border-surround-footer:no;}@page Section0{
+margin-top:72.0000pt;
+margin-bottom:72.0000pt;
+margin-left:90.0000pt;
+margin-right:90.0000pt;
+size:595.3000pt 841.9000pt;
+layout-grid:15.6000pt;
+mso-header-margin:42.5500pt;
+mso-footer-margin:49.6000pt;
+mso-page-numbers:decimal;
+mso-footer:url("cczr.files/header.html") f0;
+}
+div.Section0{page:Section0;}</style></head><body style="tab-interval:21pt;text-justify-trim:punctuation;" ><!--StartFragment--><div class="Section0"  style="layout-grid:15.6000pt;" ><p class=MsoTitle  align=center  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:center;line-height:27.0000pt;mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:18.0000pt;" ><font face="宋体" >中融文遗通</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:18.0000pt;" ><font face="宋体" >&#183;产业融合平台</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=center  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:center;line-height:27.0000pt;mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:18.0000pt;" ><font face="宋体" >文遗商品持仓转让协议</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:18.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >转让方(甲方):</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:22.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:2.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >交易账户:</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >接收方(乙方):</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >交易账户:</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >根据</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >《</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >中华人民共和国</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >民法典》和国家</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >有关法律法规</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >的规定及</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >《</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >中融文遗通</font><font face="宋体" >&#183;产业融合平台交易管理办法</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >》</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >和</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >其他相关文件</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >的</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >规定,</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >甲乙双</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >方就</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >利用《</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >中融文遗通</font><font face="宋体" >&#183;产业融合平台</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >》(以下简称</font><font face="宋体" >“中融文遗平台”)进行文遗商</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >品</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >持仓转让</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >事</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >宜</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >达成共识,并自愿签订本协议。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+line-height:27.0000pt;mso-line-height-rule:exactly;mso-list:l0 level1 lfo1;" ><![if !supportLists]><span style="font-family:宋体;mso-ansi-font-weight:bold;font-size:14.0000pt;" ><span style='mso-list:Ignore;' >第一条<span>&nbsp;</span></span></span><![endif]><b style="mso-bidi-font-weight:normal" ><span style="mso-spacerun:'yes';font-family:宋体;mso-ansi-font-weight:bold;
+font-size:14.0000pt;" >&nbsp;</span></b><b style="mso-bidi-font-weight:normal" ><span style="mso-spacerun:'yes';font-family:宋体;mso-ansi-font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >交易标的</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoNormal  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >甲方经</font><font face="宋体" >“中融文遗平台”允许</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >上市</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >交易</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >的所有</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >商品</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><o:p></o:p></span></p><p class=19  style="margin-right:0.0000pt;margin-left:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:0.0000pt;mso-char-indent-count:0.0000;
+text-autospace:none;mso-pagination:none;line-height:27.0000pt;
+mso-line-height-rule:exactly;mso-list:l0 level1 lfo1;" ><![if !supportLists]><span style="font-family:宋体;mso-ansi-font-weight:bold;font-size:14.0000pt;" ><span style='mso-list:Ignore;' >第二条<span>&nbsp;</span></span></span><![endif]><b style="mso-bidi-font-weight:normal" ><span style="mso-spacerun:'yes';font-family:宋体;mso-ansi-font-weight:bold;
+font-size:14.0000pt;" >&nbsp;</span></b><b style="mso-bidi-font-weight:normal" ><span style="mso-spacerun:'yes';font-family:宋体;mso-ansi-font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >交易时间</font></span></b><b style="mso-bidi-font-weight:normal" ><span style="mso-spacerun:'yes';font-family:宋体;mso-ansi-font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=19  style="margin-right:0.0000pt;margin-left:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >交易时间为</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >:</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >每周一至周</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >五</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >(国家法定节假日另行通知)</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >,</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >北京时间</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" >&nbsp;&nbsp;</span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >9:30-11:30、13: 00-15:00</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >;</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >如有变化,</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+font-weight:normal;font-size:14.0000pt;" ><font face="宋体" >“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+font-weight:normal;font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >可根据现货</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >交</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><font face="宋体" >易的实际需求调整交易时间。</font></span><span style="mso-spacerun:'yes';font-family:宋体;color:rgb(0,0,0);
+mso-ansi-font-weight:normal;mso-bidi-font-weight:bold;font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第三条</font> &nbsp;<font face="宋体" >交易方式</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoNormal  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;layout-grid-mode:char;text-autospace:none;
+mso-pagination:none;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >1、双方的交易方式,是甲乙双</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >方</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >自行通过网络系统</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >,利用</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”从事</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >文遗商</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >品现货协议</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >购销,进行的</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >交收交易业务。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、双方均明确,此交易方式不属于“撮合交易”;属于双方在达成协议后进行持仓转让的“定向交易”方式。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >3、甲乙双方和</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >均属于独立的法律实体,</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >仅是一个为甲乙双方提供商品购销和平台服务的场所,甲乙双方在</font><font face="宋体" >“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”买卖的商品或服务所涉及到的交易关系,仅存在于商品转让方与商品接收方之间。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >4、</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >不参与商品转让方与商品接收方之间的实际交易,也不对其承担任何形式的责任或义务。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;layout-grid-mode:char;text-autospace:none;
+mso-pagination:none;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >5、</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >双</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >方</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >约定,</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >在交易过程中形成的</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >系统交易</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><font face="宋体" >记录具有法律效力。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第四条</font> &nbsp;<font face="宋体" >交易流程</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >1、任何一方需通过</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >的交易系统终端,输入各自的交易代码及密码进行登录。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、任何一方在交易前,须存入充足的交易资金,以确保电子交易合同的履行。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >3、甲方在通过</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >交易系统发起持仓转让时,须输入相应的商品代码、价格、数量、并指定接收方,再输入资金密码,以确定发起转让。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >4、待</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >审核通过后,乙方须确认所购商品的标的、数量、价格等相关信息无误后,再输入资金密码,以确定接收转让商品。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >5、任何一方通过</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >系统登入进行的交易,均视为自己的操作,无论是否属于其自己本身的操作,</font><font face="宋体" >“中融文遗平台”不承担由此带来的一切后果。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >6、需要注意的是,在进行持仓转让时任何一方的交易资金不足,</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >将无法完成交易。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >7、甲乙双方可通过交易系统获取成交记录,各方应及时查询与核对成交情况,如有异议应及时向</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >提出。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >8、双方通过交易系统达成交易后,各方须向</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >“中融文遗平台”</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >一次性支付交易手续费:</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >(</font><font face="宋体" >1)转让价格高于市场价时,按转让价格的千分之三收取;转让价格低于市场价时,按市场价格的千分之三收取;</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >(</font><font face="宋体" >2)每一个商品合同交易手续费的收取标准,已在交易商品上市前予以公告,“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”可以根据实际情况对交易手续费的收取标准进行适当的调整。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;mso-para-margin-right:0.0000gd;
+mso-para-margin-left:0.0000gd;text-indent:28.0000pt;mso-char-indent-count:2.0000;
+text-autospace:none;mso-pagination:none;text-align:justify;
+text-justify:inter-ideograph;line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第五条</font> &nbsp;<font face="宋体" >双方声明及承诺</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >1、甲乙双方郑重声明,在“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”进行的商品交易纯属各自的自愿行为,不受任何第三方的诱导或胁迫。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal  style="margin-left:0.0000pt;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:ideograph-numeric;mso-pagination:none;
+line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、甲乙双方郑重承诺,在“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”进行商品交易的资金来源合法,属于各自的合</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >法合规资金。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><o:p></o:p></span></p><p class=MsoNormal  style="margin-left:0.0000pt;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:ideograph-numeric;mso-pagination:none;
+line-height:27.0000pt;mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-size:14.0000pt;
+mso-font-kerning:0.0000pt;" ><font face="宋体" >3、甲乙双方郑重承诺,在商品交易过程中若出现</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >违反</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >《中华人民共和国</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >反洗钱法</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >》及国家</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >相关法律</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >法</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >规的违规行为,</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >无论</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >情节</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >大小</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >,自愿承担</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >并接受</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >相应</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >的法律</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >责任和</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >经济</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >处罚。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第六条</font> &nbsp;<font face="宋体" >交易价格、费用支付、货物交收</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >1、甲方在进行持仓转让时,标注在“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”上的价格和描述均由甲方提供,“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”不参与价格和描述的制订;如出现失真、错误、违法或侵权等情形,由甲方自行承担相应的法律责任和风险。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、乙方通过“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”以此交易模式购买甲方的商品或服务时,应当根据商品或服务的实际价格在</font></span><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >线下</font></span></b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >进行交易费用的支付,线上平台仅作为票据的转让不参与货物的实际交易。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >3、双方均明确通过此方式交易的货物及货款均已在</font></span><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >线下结算</font></span></b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >,属双方线下协议成交,货物的交收与商品质量由甲方负责,线上平台均不负责此交易的后续</font></span><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >货物交接</font></span></b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >问题。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第七条</font> &nbsp;<font face="宋体" >交易纠纷处理</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >1、如甲乙双方在商品购销时出现交易纠纷,首先应当协商解决。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、如甲乙双方协商失败,则先由“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”成立的专项调解小组,根据相关证据和规定进行调解。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >3、如经“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”专项调解小组调解失败,则甲乙双方可以通过法律途径解决争议。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >第八条</font> &nbsp;<font face="宋体" >法律适用和管辖</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >1、本协议的成立、生效、履行和解释均适用中华人民共和国法律、法规、规章和政策。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.0000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >2、如因本协议履行过程中发生任何争议,可向“中融</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >文遗</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><font face="宋体" >平台</font><font face="宋体" >”公司注册地人民法院提起诉讼解决。</font></span><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p></o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:28.1000pt;
+mso-char-indent-count:2.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >注</font> <font face="宋体" >* 交易完成即代表双方均已阅读并同意此协议,本电子协议即生效。</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><span style="mso-spacerun:'yes';font-family:宋体;font-weight:normal;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >转让方(甲方):</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >年</font> &nbsp;&nbsp;<font face="宋体" >月</font> &nbsp;&nbsp;<font face="宋体" >日</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p>&nbsp;</o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >接收方(乙方):</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p><p class=MsoTitle  align=justify  style="margin-top:0.0000pt;margin-right:0.0000pt;margin-left:0.0000pt;
+mso-para-margin-right:0.0000gd;mso-para-margin-left:0.0000gd;text-indent:0.0000pt;
+mso-char-indent-count:0.0000;text-autospace:none;mso-pagination:none;
+text-align:justify;text-justify:inter-ideograph;line-height:27.0000pt;
+mso-line-height-rule:exactly;" ><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><font face="宋体" >年</font> &nbsp;&nbsp;<font face="宋体" >月</font> &nbsp;&nbsp;<font face="宋体" >日</font></span></b><b><span style="mso-spacerun:'yes';font-family:宋体;font-weight:bold;
+font-size:14.0000pt;" ><o:p></o:p></span></b></p></div><!--EndFragment--></body></html>

+ 19 - 104
src/hooks/menu/index.ts

@@ -1,116 +1,37 @@
 import { defineAsyncComponent, Component } from 'vue'
-import { useRoute, useRouter } from 'vue-router'
+import { useRoute } from 'vue-router'
 import { useMenuStore } from '@/stores'
 import { AuthType } from '@/constants/menu'
 
-// 待优化
 export function useMenu(authCode?: string) {
     const menuStore = useMenuStore()
-    const { userRoutes } = menuStore.$toRefs()
-
     const route = useRoute()
-    const router = useRouter()
     const componentMap = new Map<string, Component>()
 
-    // 过滤菜单
-    const filterMenus = (data: Model.UserRoutes[], parentPath = '') => {
-        const result: Model.UserRoutes[] = []
-        data.forEach((e) => {
-            if (!e.hidden && e.authType === AuthType.Menu) {
-                const routePath = (parentPath ? parentPath + '/' : '') + e.url
-                result.push({
-                    ...e,
-                    url: routePath,
-                    children: e.children ? filterMenus(e.children, routePath) : [],
-                })
-            }
-        })
-        return result
-    }
-
-    /**
-     * 根据 code 查找对应的子菜单
-     * @returns 
-     */
-    const findChildren = (data: Model.UserRoutes[], code?: string): Model.UserRoutes[] => {
-        const routeName = code ?? route.name?.toString()
-        for (const item of data) {
-            const { code, children } = item
-            if (code === routeName) return children ?? []
-            if (children) {
-                const res = findChildren(children, routeName)
-                if (res.length) return res
-            }
-        }
-        return []
-    }
-
-    /**
-     * 获取用户菜单(无限级)
-     * @param level 
-     * @returns 
-     */
-    const getUserMenus = (level = 0) => {
-        // 过滤层级
-        const filterLevel = (data: Model.UserRoutes[], n: number): Model.UserRoutes[] => {
-            if (level) {
-                return data.map((e) => ({ ...e, children: n <= 1 ? [] : filterLevel(e.children ?? [], n - 1) }))
-            }
-            return data
-        }
-        return filterMenus(filterLevel(userRoutes.value, level))
-    }
-
-    /**
-    * 获取路由子菜单
-    * @param code 
-    * @returns 
-    */
-    const getChildrenMenus = (code?: string) => {
-        const children = findChildren(userRoutes.value, code)
-        return filterMenus(children)
-    }
-
-    /**
-     * 获取首页地址
-     * @returns 
-     */
-    const getHomeUrl = () => {
-        const menus = getUserMenus()
-        const findNode = (tree: Model.UserRoutes[]): string => {
-            for (const node of tree) {
-                if (node.children?.length) {
-                    const res = findNode(node.children)
-                    if (res) return res
-                } else {
-                    return node.url
-                }
-            }
-            return '/404'
-        }
-        return findNode(menus)
-    }
-
     /**
      * 获取操作权限
      * @returns 
      */
     const getAuth = (authType: AuthType) => {
-        const children = findChildren(userRoutes.value, authCode)
-        return children.reduce<Model.UserRoutes[]>((res, cur) => {
-            if (!cur.hidden && cur.authType === authType) {
-                if (!componentMap.get(cur.code) && cur.component) {
-                    const componentString = cur.component.replace(/^\/+/, '') // 过滤字符串前面所有 '/' 字符
-                    const componentPath = componentString.replace(/\.\w+$/, '') // 过滤后缀名,为了让 import 加入 .vue ,不然会有警告提示...
-                    const asyncComponent = defineAsyncComponent({
-                        loader: () => import('/' + process.env.VUE_APP_ROOT + componentPath + '.vue'),
-                    })
-                    componentMap.set(cur.code, asyncComponent)
+        const routeName = authCode ?? route.name?.toString()
+        if (routeName) {
+            const children = menuStore.getChildrenRoutes(routeName)
+            return children.reduce<Model.UserRoutes[]>((res, cur) => {
+                if (!cur.hidden && cur.authType === authType) {
+                    if (!componentMap.get(cur.code) && cur.component) {
+                        const componentString = cur.component.replace(/^\/+/, '') // 过滤字符串前面所有 '/' 字符
+                        const componentPath = componentString.replace(/\.\w+$/, '') // 过滤后缀名,为了让 import 加入 .vue ,不然会有警告提示...
+                        const asyncComponent = defineAsyncComponent({
+                            loader: () => import('/' + process.env.VUE_APP_ROOT + componentPath + '.vue'),
+                        })
+                        componentMap.set(cur.code, asyncComponent)
+                    }
+                    res.push(JSON.parse(JSON.stringify(cur)))
                 }
-                res.push(JSON.parse(JSON.stringify(cur)))
-            }
-            return res
-        }, [])
+                return res
+            }, [])
+        }
+        return []
     }
 
     /**
@@ -150,13 +71,7 @@ export function useMenu(authCode?: string) {
     const getAuthComponents = (filtered: string[] = [], reverse = false) => authFilter(AuthType.Component, filtered, reverse)
 
     return {
-        route,
-        router,
-        userRoutes,
         componentMap,
-        getUserMenus,
-        getHomeUrl,
-        getChildrenMenus,
         getAuthButtons,
         getAuthComponents,
     }

+ 0 - 167
src/hooks/menu/index@next.ts

@@ -1,167 +0,0 @@
-import { defineAsyncComponent, Component } from 'vue'
-import { useRoute, useRouter } from 'vue-router'
-import { useMenuStore } from '@/stores'
-import { AuthType } from '@/constants/menu'
-
-// 待优化
-export function useMenu(authCode?: string) {
-    const menuStore = useMenuStore()
-    const { userRoutes } = menuStore.$toRefs()
-
-    const route = useRoute()
-    const router = useRouter()
-    const componentMap = new Map<string, Component>()
-
-    /**
-     * 过滤菜单
-     * @returns 
-     */
-    const filterMenus = (data: Model.UserRoutes[], parentPath = '') => {
-        return data.reduce<Model.UserRoutes[]>((pre, cur) => {
-            if (!cur.hidden && cur.authType === AuthType.Menu) {
-                const routePath = (parentPath ? parentPath + '/' : '') + cur.url
-                pre.push({
-                    ...cur,
-                    url: routePath,
-                    children: cur.children ? filterMenus(cur.children, routePath) : [],
-                })
-            }
-            return pre
-        }, [])
-    }
-
-    /**
-     * 根据 code 查找对应的子路由
-     * @returns 
-     */
-    const filterChildrenRoutes = (routeName?: string) => {
-        const findChildren = (data: Model.UserRoutes[]): Model.UserRoutes[] => {
-            for (const item of data) {
-                const { code, children } = item
-                if (code === routeName) return children ?? []
-                if (children) {
-                    const res = findChildren(children)
-                    if (res.length) return res
-                }
-            }
-            return []
-        }
-        return findChildren(userRoutes.value)
-    }
-
-    /**
-     * 获取用户菜单(无限级)
-     * @param level 
-     * @returns 
-     */
-    const getUserMenus = (level = 0) => {
-        // 过滤层级
-        const filterLevel = (data: Model.UserRoutes[], n: number): Model.UserRoutes[] => {
-            if (level) {
-                return data.map((e) => ({ ...e, children: n <= 1 ? [] : filterLevel(e.children ?? [], n - 1) }))
-            }
-            return data
-        }
-        return filterMenus(filterLevel(userRoutes.value, level))
-    }
-
-    /**
-     * 获取路由子菜单
-     * @param routeName 
-     * @returns 
-     */
-    const getChildrenMenus = (routeName: string) => {
-        const children = filterChildrenRoutes(routeName)
-        return filterMenus(children)
-    }
-
-    /**
-     * 获取首页地址
-     * @returns 
-     */
-    const getHomeUrl = () => {
-        const menus = getUserMenus()
-        const findNode = (data: Model.UserRoutes[]): string => {
-            for (const node of data) {
-                if (node.children?.length) {
-                    const res = findNode(node.children)
-                    if (res) return res
-                } else {
-                    return node.url
-                }
-            }
-            return '/404'
-        }
-        return findNode(menus)
-    }
-
-    /**
-     * 获取操作权限
-     * @returns 
-     */
-    const getAuth = (authType: AuthType) => {
-        const children = filterChildrenRoutes(authCode)
-        return children.reduce<Model.UserRoutes[]>((res, cur) => {
-            if (!cur.hidden && cur.authType === authType) {
-                if (!componentMap.get(cur.code) && cur.component) {
-                    const componentString = cur.component.replace(/^\/+/, '') // 过滤字符串前面所有 '/' 字符
-                    const componentPath = componentString.replace(/\.\w+$/, '') // 过滤后缀名,为了让 import 加入 .vue ,不然会有警告提示...
-                    const asyncComponent = defineAsyncComponent({
-                        loader: () => import('/' + process.env.VUE_APP_ROOT + componentPath + '.vue'),
-                    })
-                    componentMap.set(cur.code, asyncComponent)
-                }
-                res.push(JSON.parse(JSON.stringify(cur)))
-            }
-            return res
-        }, [])
-    }
-
-    /**
-     * 过滤操作权限
-     * @param filtered 过滤的数据项
-     * @param reverse 是否反向过滤
-     * @returns 
-     */
-    const authFilter = (authType: AuthType, filtered: string[], reverse: boolean) => {
-        const auth = getAuth(authType);
-        if (filtered.length) {
-            if (reverse) {
-                // 返回除指定的权限代码
-                return auth.filter((e) => !filtered.includes(e.code))
-            } else {
-                // 返回指定的权限代码
-                return auth.filter((e) => filtered.includes(e.code))
-            }
-        }
-        return auth
-    }
-
-    /**
-     * 获取权限按钮
-     * @param filtered 
-     * @param reverse 
-     * @returns 
-     */
-    const getAuthButtons = (filtered: string[] = [], reverse = false) => authFilter(AuthType.Operate, filtered, reverse)
-
-    /**
-     * 获取权限组件
-     * @param filtered 
-     * @param reverse 
-     * @returns 
-     */
-    const getAuthComponents = (filtered: string[] = [], reverse = false) => authFilter(AuthType.Component, filtered, reverse)
-
-    return {
-        route,
-        router,
-        userRoutes,
-        componentMap,
-        getUserMenus,
-        getHomeUrl,
-        getChildrenMenus,
-        getAuthButtons,
-        getAuthComponents,
-    }
-}

+ 38 - 17
src/packages/mobile/views/order/inout/components/add/index.vue

@@ -14,8 +14,8 @@
                     </Field>
                     <Field name="GoodsID" label="转让商品" :rules="formRules.GoodsID" is-link>
                         <template #input>
-                            <app-select v-model="formData.GoodsID" :options="goodsList" :optionProps="{ value: 'goodsid' }"
-                                @confirm="onGoodsChange" />
+                            <app-select v-model="formData.GoodsID" :options="goodsList"
+                                :optionProps="{ value: 'goodsid' }" @confirm="onGoodsChange" />
                         </template>
                     </Field>
                     <Field label="可用量">
@@ -42,6 +42,16 @@
                         </template>
                     </Field>
                 </CellGroup>
+                <CellGroup inset>
+                    <Cell>
+                        <template #title>
+                            <div style="display: flex;align-items: center;">
+                                <Checkbox shape="square" icon-size="16px" v-model="isAgree">我已阅读并同意</Checkbox>
+                                <span @click="showAgreement = true" style="color:#E92020">《持仓转让协议》</span>
+                            </div>
+                        </template>
+                    </Cell>
+                </CellGroup>
             </Form>
             <template #footer>
                 <div class="g-form__footer inset">
@@ -50,12 +60,13 @@
             </template>
         </app-view>
         <Search v-model:show="showSearch" @change="onUserChange" />
+        <Agreement v-model:show="showAgreement" />
     </app-modal>
 </template>
 
 <script lang="ts" setup>
 import { shallowRef, reactive, computed, defineAsyncComponent } from 'vue'
-import { CellGroup, Button, Field, Form, Stepper, FieldRule } from 'vant'
+import { CellGroup, Cell, Button, Checkbox, Field, Form, Stepper, FieldRule, showToast } from 'vant'
 import { fullloading } from '@/utils/vant'
 import { BuyOrSell } from '@/constants/order'
 import { holderTransferApply } from '@/services/api/trade'
@@ -65,14 +76,18 @@ import AppSelect from '@mobile/components/base/select/index.vue'
 
 // 搜索客户
 const Search = defineAsyncComponent(() => import('./search/index.vue'))
+// 持仓转让协议
+const Agreement = defineAsyncComponent(() => import('../agreement/index.vue'))
 
 const showModal = shallowRef(true)
 const showSearch = shallowRef(false) // 弹出客户搜索界面
+const showAgreement = shallowRef(false) // 弹出转让协议界面
 const refresh = shallowRef(false) // 是否刷新父组件数据
 const formRef = shallowRef()
 const loginStore = useLoginStore()
 const positionStore = usePositionStore()
 const selectedUser = shallowRef<Model.UserInfoRsp>() // 当前选择的转入客户
+const isAgree = shallowRef(false) // 是否同意协议
 
 // 可用商品列表
 const goodsList = computed(() => {
@@ -136,21 +151,25 @@ const onUserChange = (item: Model.UserInfoRsp) => {
 
 // 表单提交
 const formSubmit = () => {
-    fullloading((hideLoading) => {
-        holderTransferApply({
-            data: {
-                Header: {
-                    MarketID: selectedGoods.value?.marketid ?? 0
-                },
-                HolderTransferDetails: [formData]
-            }
-        }).then(() => {
-            hideLoading('提交成功,请稍后查询结果', 'success')
-            closed(true)
-        }).catch((err) => {
-            hideLoading(err, 'fail')
+    if (isAgree.value) {
+        fullloading((hideLoading) => {
+            holderTransferApply({
+                data: {
+                    Header: {
+                        MarketID: selectedGoods.value?.marketid ?? 0
+                    },
+                    HolderTransferDetails: [formData]
+                }
+            }).then(() => {
+                hideLoading('提交成功,请稍后查询结果', 'success')
+                closed(true)
+            }).catch((err) => {
+                hideLoading(err, 'fail')
+            })
         })
-    })
+    } else {
+        showToast('请同意持仓转让协议')
+    }
 }
 
 // 关闭弹窗
@@ -158,6 +177,8 @@ const closed = (isRefresh = false) => {
     refresh.value = isRefresh
     if (showSearch.value) {
         showSearch.value = false
+    } else if (showAgreement.value) {
+        showAgreement.value = false
     } else {
         showModal.value = false
     }

+ 31 - 0
src/packages/mobile/views/order/inout/components/agreement/index.vue

@@ -0,0 +1,31 @@
+<template>
+    <app-modal direction="right-top" height="100%" width="100%" v-model:show="showModal">
+        <app-view>
+            <template #header>
+                <app-navbar title="转让协议" />
+            </template>
+            <component :is="asyncComponent" url="/html/cczr.htm" />
+        </app-view>
+    </app-modal>
+</template>
+
+<script lang="ts" setup>
+import { defineAsyncComponent,computed } from 'vue'
+import AppModal from '@/components/base/modal/index.vue'
+
+const asyncComponent = defineAsyncComponent(() => import('@mobile/components/base/html-panel/index.vue'))
+
+const props = defineProps({
+    show: {
+        type: Boolean,
+        default: false
+    }
+})
+
+const emit = defineEmits(['update:show'])
+
+const showModal = computed({
+    get: () => props.show,
+    set: (val) => emit('update:show', val)
+})
+</script>

+ 20 - 0
src/packages/mobile/views/order/inout/components/in/list/index.less

@@ -0,0 +1,20 @@
+.inout-form {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: 20px;
+
+    &__field {
+        width: 100%;
+        margin-bottom: 20px;
+
+        .van-field {
+            border: 1px solid #dfdfdf;
+        }
+    }
+
+    &__checkbox {
+        display: flex;
+        align-items: center;
+    }
+}

+ 94 - 25
src/packages/mobile/views/order/inout/components/in/list/index.vue

@@ -42,31 +42,58 @@
                     </ul>
                 </div>
                 <div class="g-order-list__btnbar">
-                    <Button size="small" v-if="item.transferapplystatus === 2" @click="onCancelSumit(item)"
+                    <Button size="small" v-if="item.transferapplystatus === 2" @click="showComponent(item)"
                         round>确认</Button>
                 </div>
             </div>
         </div>
+        <Dialog v-model:show="showDialog" title="密码验证" confirm-button-text="确定" :close-on-popstate="false"
+            show-cancel-button :before-close="() => false" @confirm="onSubmit" @cancel="onCancel">
+            <Form ref="formRef" class="inout-form">
+                <div class="inout-form__field">
+                    <Field name="password" placeholder="请输入登录密码" type="password" v-model="formData.password" />
+                </div>
+                <div class="inout-form__checkbox">
+                    <Checkbox name="agree" shape="square" icon-size="16px" v-model="formData.agree">我已阅读并同意</Checkbox>
+                    <span @click="showAgreement = true" style="color:#E92020">《持仓转让协议》</span>
+                </div>
+            </Form>
+        </Dialog>
+        <Agreement :z-index="10000" v-model:show="showAgreement" />
     </app-pull-refresh>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef } from 'vue'
-import { Button } from 'vant'
+import { shallowRef, reactive, defineAsyncComponent } from 'vue'
+import { onBeforeRouteLeave } from 'vue-router'
+import { Form, Button, Dialog, Field, Checkbox, FormInstance, showToast } from 'vant'
 import { useRequest } from '@/hooks/request'
 import { queryInTradePositionTransfer } from '@/services/api/transfer'
 import { getTransferApplyStatusName } from '@/constants/order'
 import { handleRequestBigNumber } from '@/filters'
 import { holderTransferConfirm } from '@/services/api/trade'
-import { dialog } from '@/utils/vant'
 import { fullloading } from '@/utils/vant'
-
+import { useLoginStore } from '@/stores'
 import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
 
+// 持仓转让协议
+const Agreement = defineAsyncComponent(() => import('../../agreement/index.vue'))
+
+const loginStore = useLoginStore()
+const formRef = shallowRef<FormInstance>()
 const dataList = shallowRef<Model.InTradePositionTransferRsp[]>([])
+const selectedRow = shallowRef<Model.InTradePositionTransferRsp>()
+const showDialog = shallowRef(false)
+const showAgreement = shallowRef(false) // 弹出转让协议界面
 const error = shallowRef(false)
 const pullRefreshRef = shallowRef()
 
+// 表单对象
+const formData = reactive({
+    password: '',
+    agree: false
+})
+
 const { loading, pageIndex, pageCount, run } = useRequest(queryInTradePositionTransfer, {
     params: {
         pagesize: 20,
@@ -82,26 +109,68 @@ const { loading, pageIndex, pageCount, run } = useRequest(queryInTradePositionTr
     }
 })
 
-const onCancelSumit = (item: Model.InTradePositionTransferRsp) => {
-    dialog({
-        message: '是否确认接收此转入请求?',
-        showCancelButton: true,
-    }).then(() => {
-        fullloading((hideLoading) => {
-            holderTransferConfirm({
-                data: {
-                    Header: {
-                        MarketID: item.marketid
-                    },
-                    ApplyID: handleRequestBigNumber(item.applyid)
-                }
-            }).then(() => {
-                hideLoading('确认成功')
-                pullRefreshRef.value?.refresh()
-            }).catch((err) => {
-                hideLoading(err, 'fail')
+const showComponent = (row: Model.InTradePositionTransferRsp) => {
+    selectedRow.value = row
+    showDialog.value = true
+}
+
+const onCancel = () => {
+    formData.password = ''
+    formData.agree = false
+    showDialog.value = false
+}
+
+const onSubmit = () => {
+    if (formData.password && formData.agree) {
+        if (loginStore.checkLoginPassword(formData.password)) {
+            const { marketid = 0, applyid = '0' } = selectedRow.value ?? {}
+            fullloading((hideLoading) => {
+                holderTransferConfirm({
+                    data: {
+                        Header: {
+                            MarketID: marketid
+                        },
+                        ApplyID: handleRequestBigNumber(applyid)
+                    }
+                }).then(() => {
+                    hideLoading('确认成功', 'success')
+                    pullRefreshRef.value?.refresh()
+                }).catch((err) => {
+                    hideLoading(err, 'fail')
+                })
+            })
+        } else {
+            fullloading((hideLoading) => {
+                setTimeout(() => {
+                    hideLoading('密码验证失败', 'fail')
+                }, 1000)
             })
+        }
+        onCancel()
+    } else if (formData.password) {
+        showToast({
+            message: '请同意持仓转让协议',
+            position: 'top',
         })
-    })
+    } else {
+        showToast({
+            message: '请输入密码',
+            position: 'top',
+        })
+    }
 }
-</script>
+
+// 阻止页面离开
+onBeforeRouteLeave((to, from, next) => {
+    if (showAgreement.value) {
+        showAgreement.value = false
+        next(false)
+    } else {
+        next(true)
+    }
+})
+</script>
+
+<style lang="less">
+@import './index.less';
+</style>

+ 0 - 13
src/packages/mobile/views/swap/detail/components/delisting/Index.less

@@ -1,13 +0,0 @@
-.swap-delisting {
-  &__form {
-      .van-stepper {
-          display: flex;
-          align-items: center;
-          width: 100%;
-
-          &__input {
-              flex: 1;
-          }
-      }
-  }
-}

+ 0 - 13
src/packages/mobile/views/swap/detail/components/listing/Index.less

@@ -1,13 +0,0 @@
-.swap-listing {
-    &__form {
-        .van-stepper {
-            display: flex;
-            align-items: center;
-            width: 100%;
-
-            &__input {
-                flex: 1;
-            }
-        }
-    }
-}

+ 2 - 6
src/packages/mobile/views/user/register/Index.vue

@@ -34,7 +34,7 @@
       <CellGroup inset>
         <Cell>
           <template #title>
-            <div class="agreement">
+            <div style="display: flex;align-items: center;font-size: 12px;">
               <Checkbox shape="square" icon-size="16px" v-model="checked">我已阅读并同意</Checkbox>
               <span @click="routerTo('rules-zcxy')" style="color:#E92020">《用户注册协议》</span>
               <span @click="routerTo('rules-yhkhfxgzs')" style="color:#E92020">《风险告知书》</span>
@@ -237,8 +237,4 @@ onMounted(() => {
     formData.openmode = 6
   }
 })
-</script>
-
-<style lang="less" scoped>
-@import './index.less';
-</style>
+</script>

+ 0 - 13
src/packages/mobile/views/user/register/index.less

@@ -1,13 +0,0 @@
-.register {
-    .g-form__container {
-        .agreement {
-            display    : flex;
-            align-items: center;
-            font-size  : 12px;
-
-            .van-checkbox {
-                margin-right: 12px;
-            }
-        }
-    }
-}

+ 7 - 4
src/packages/pc/components/layouts/main/index.vue

@@ -13,16 +13,19 @@
 
 <script lang="ts" setup>
 import { shallowRef } from 'vue'
-import { useMenu } from '@/hooks/menu'
+import {useRoute, useRouter } from 'vue-router'
+import { useMenuStore } from '@/stores'
 import AppTabs from '@/components/base/tabs/index.vue'
 
-const { route, router, getChildrenMenus } = useMenu()
+const menuStore = useMenuStore()
+const route = useRoute()
+const router = useRouter()
 const parentRoute = route.matched[route.matched.length - 2] // 父级路由信息
 const threeMenus = shallowRef<Model.UserRoutes[]>([]) // 三级菜单
 const dataIndex = shallowRef(0) // 选中的标签
 
-if (parentRoute) {
-    const menus = getChildrenMenus(parentRoute.name?.toString())
+if (parentRoute.name) {
+    const menus = menuStore.getChildrenMenus(parentRoute.name?.toString())
     const index = menus.findIndex((e) => e.code === route.name)
     threeMenus.value = menus
     if (index > -1) {

+ 5 - 4
src/packages/pc/components/layouts/sidebar/index.vue

@@ -13,8 +13,8 @@
 
 <script lang="ts" setup>
 import { watch } from 'vue'
-import { useMenu } from '@/hooks/menu'
-import { useGlobalStore } from '@/stores'
+import { useRouter } from 'vue-router'
+import { useGlobalStore, useMenuStore } from '@/stores'
 import AppSidemenu from '../sidemenu/index.vue'
 
 const emit = defineEmits(['update:collapse'])
@@ -24,8 +24,9 @@ defineProps({
   collapse: Boolean,
 })
 
-const { router, getChildrenMenus } = useMenu()
+const router = useRouter()
 const globalStore = useGlobalStore()
+const menuStore = useMenuStore()
 
 const hideSidebar = () => {
   emit('update:collapse', globalStore.isMobile)
@@ -34,7 +35,7 @@ const hideSidebar = () => {
 // 菜单跳转
 const routerTo = (active: string) => {
   hideSidebar();
-  const submenus = getChildrenMenus(active)
+  const submenus = menuStore.getChildrenMenus(active)
   // 判断是否存在子菜单
   if (submenus.length) {
     router.push({ name: submenus[0].code })

+ 5 - 3
src/packages/pc/components/layouts/sidemenu/index.vue

@@ -6,12 +6,14 @@
 
 <script lang="ts" setup>
 import { computed } from 'vue'
-import { useMenu } from '@/hooks/menu'
+import { useRoute } from 'vue-router'
+import { useMenuStore } from '@/stores'
 import AppSubmenu from './submenu.vue'
 
-const { route, getUserMenus } = useMenu()
+const menuStore = useMenuStore()
+const route = useRoute()
 const level = 2 // 菜单层级
-const menus = getUserMenus(level) // 如果是无限级菜单,activeMenu 应该直接返回 route.name
+const menus = menuStore.getUserMenus(level) // 如果是无限级菜单,activeMenu 应该直接返回 route.name
 
 // 高亮菜单
 const activeMenu = computed(() => {

+ 19 - 3
src/packages/pc/router/index.ts

@@ -1,18 +1,34 @@
 import { createWebHashHistory, RouteRecordRaw } from 'vue-router'
-import { useMenu } from '@/hooks/menu'
-import { useLoginStore, useGlobalStore } from '@/stores'
+import { useGlobalStore, useLoginStore, useMenuStore } from '@/stores'
 import dynamicRouter from './dynamicRouter'
 import historyRouter from './historyRouter'
 import service from '@/services'
 
 const globalStore = useGlobalStore()
 const loginStore = useLoginStore()
+const menuStore = useMenuStore()
+
+// 获取首页地址
+const getHomeUrl = () => {
+    const menus = menuStore.getUserMenus()
+    const findNode = (tree: Model.UserRoutes[]): string => {
+        for (const node of tree) {
+            if (node.children?.length) {
+                const res = findNode(node.children)
+                if (res) return res
+            } else {
+                return node.url
+            }
+        }
+        return '/404'
+    }
+    return findNode(menus)
+}
 
 const routes: Array<RouteRecordRaw> = [
     {
         path: '/',
         redirect: () => {
-            const { getHomeUrl } = useMenu() // 待优化
             return loginStore.token ? getHomeUrl() : '/login' // 重定向到默认页面
         }
     },

+ 1 - 1
src/packages/pc/views/auth/login/index.vue

@@ -126,7 +126,7 @@ const formSubmit = () => {
           reset()
           showPasswordMidify.value = true
         } else {
-          await menuStore.getUserMenuList()
+          await menuStore.getUserRoutes()
           const redirect = route.query.redirect
           if (redirect) {
             router.replace(redirect.toString())

+ 6 - 0
src/packages/pc/views/footer/inout/agreement/index.less

@@ -0,0 +1,6 @@
+.iframe{
+    width: 100%;
+    height: 500px;
+    background-color: #fff;
+    border: 0;
+}

+ 23 - 0
src/packages/pc/views/footer/inout/agreement/index.vue

@@ -0,0 +1,23 @@
+<template>
+    <app-drawer title="持仓转让协议" :width="640" v-model:show="show">
+        <iframe class="iframe" src="/html/cczr.htm" />
+        <template #footer>
+            <el-button type="info" @click="onCancel">关闭</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { shallowRef } from 'vue'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const show = shallowRef(true)
+
+const onCancel = () => {
+    show.value = false
+}
+</script>
+
+<style lang="less" scoped>
+@import './index.less';
+</style>

+ 6 - 0
src/packages/pc/views/footer/inout/in/confirm/index.less

@@ -0,0 +1,6 @@
+.iframe{
+    width: 100%;
+    height: 500px;
+    background-color: #fff;
+    border: 0;
+}

+ 68 - 17
src/packages/pc/views/footer/inout/in/confirm/index.vue

@@ -1,21 +1,37 @@
 <!-- 持仓过户-我的转入-确认 -->
 <template>
-    <app-drawer title="提示" v-model:show="show" :loading="loading" :refresh="refresh">
-        <div class="g-text-message">是否确认接收此转入请求?</div>
+    <app-drawer title="密码验证" v-model:show="show" :loading="loading" :refresh="refresh">
+        <el-form ref="formRef" class="el-form--vertical" :model="formData" :rules="formRules" @submit.prevent>
+            <el-form-item prop="password">
+                <el-input type="password" placeholder="请输入登录密码" v-model="formData.password" />
+            </el-form-item>
+            <el-form-item prop="agree">
+                <el-checkbox v-model="formData.agree">我已阅读并同意</el-checkbox>
+                <span @click="openComponent('agreement')" style="cursor: pointer;">《持仓转让协议》</span>
+            </el-form-item>
+        </el-form>
         <template #footer>
             <el-button type="info" @click="onCancel(false)">取消</el-button>
-            <el-button type="primary" @click="onSubmit">确认</el-button>
+            <el-button type="primary" @click="onSubmit">确定</el-button>
+            <component ref="componentRef" :is="componentMap.get(componentId)" @closed="closeComponent"
+                v-if="componentId" />
         </template>
     </app-drawer>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, PropType } from 'vue'
-import { ElMessage } from 'element-plus'
+import { shallowRef, reactive, defineAsyncComponent, PropType } from 'vue'
+import { FormInstance, FormRules, ElMessage } from 'element-plus'
+import { useComponent } from '@/hooks/component'
 import { handleRequestBigNumber } from '@/filters'
 import { holderTransferConfirm } from '@/services/api/trade'
+import { useLoginStore } from '@/stores'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
+const componentMap = new Map<string, unknown>([
+    ['agreement', defineAsyncComponent(() => import('../../agreement/index.vue'))], // 持仓转让协议
+])
+
 const props = defineProps({
     selectedRow: {
         type: Object as PropType<Model.InTradePositionTransferRsp>,
@@ -23,29 +39,64 @@ const props = defineProps({
     }
 })
 
+const loginStore = useLoginStore()
+const formRef = shallowRef<FormInstance>()
 const loading = shallowRef(false)
 const show = shallowRef(true)
 const refresh = shallowRef(false)
 
+// 表单对象
+const formData = reactive({
+    password: '',
+    agree: false
+})
+
+const formRules: FormRules = {
+    password: [{
+        required: true,
+        message: '请输入密码',
+        validator: () => !!formData.password
+    }],
+    agree: [{
+        required: true,
+        message: '请同意协议',
+        validator: () => formData.agree
+    }]
+}
+
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
+
 const onCancel = (isRefresh = false) => {
     show.value = false
     refresh.value = isRefresh
 }
 
 const onSubmit = () => {
-    holderTransferConfirm({
-        data: {
-            Header: {
-                MarketID: props.selectedRow.marketid
-            },
-            ApplyID: handleRequestBigNumber(props.selectedRow.applyid)
+    formRef.value?.validate(async (valid) => {
+        if (valid) {
+            loading.value = true
+            if (loginStore.checkLoginPassword(formData.password)) {
+                holderTransferConfirm({
+                    data: {
+                        Header: {
+                            MarketID: props.selectedRow.marketid
+                        },
+                        ApplyID: handleRequestBigNumber(props.selectedRow.applyid)
+                    }
+                }).then(() => {
+                    ElMessage.success('确认成功')
+                    onCancel(true)
+                }).catch((err) => {
+                    ElMessage.error('确认失败:' + err)
+                    onCancel()
+                })
+            } else {
+                setTimeout(() => {
+                    ElMessage.warning('密码验证失败')
+                    onCancel()
+                }, 1000)
+            }
         }
-    }).then(() => {
-        ElMessage.success('确认成功')
-        onCancel(true)
-    }).catch((err) => {
-        ElMessage.error('确认失败:' + err)
-        onCancel(true)
     })
 }
 </script>

+ 44 - 22
src/packages/pc/views/footer/inout/out/add/index.vue

@@ -33,16 +33,27 @@
                 <span>{{ enableqty }}</span>
             </el-form-item>
         </el-form>
+        <div style="display: flex;justify-content: center;">
+            <el-form class="el-form--vertical">
+                <el-form-item>
+                    <el-checkbox v-model="isAgree">我已阅读并同意</el-checkbox>
+                    <span @click="openComponent('agreement')" style="cursor: pointer;">《持仓转让协议》</span>
+                </el-form-item>
+            </el-form>
+        </div>
         <template #footer>
             <el-button type="info" @click="onCancel(false)">取消</el-button>
-            <el-button type="primary" @click="onCancelSumit()">提交</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+            <component ref="componentRef" :is="componentMap.get(componentId)" @closed="closeComponent"
+                v-if="componentId" />
         </template>
     </app-drawer>
 </template>
 
 <script lang="ts" setup>
-import { shallowRef, reactive, computed } from 'vue'
+import { shallowRef, defineAsyncComponent, reactive, computed } from 'vue'
 import { FormInstance, FormRules, ElMessage } from 'element-plus'
+import { useComponent } from '@/hooks/component'
 import { BuyOrSell } from '@/constants/order'
 import { useRequest } from '@/hooks/request'
 import { holderTransferApply } from '@/services/api/trade'
@@ -50,12 +61,19 @@ import { getUserInfo } from '@/services/api/user'
 import { useLoginStore, usePositionStore } from '@/stores'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
+const componentMap = new Map<string, unknown>([
+    ['agreement', defineAsyncComponent(() => import('../../agreement/index.vue'))], // 持仓转让协议
+])
+
 const loginStore = useLoginStore()
 const positionStore = usePositionStore()
 const formRef = shallowRef<FormInstance>()
 const loading = shallowRef(false)
 const show = shallowRef(true)
 const refresh = shallowRef(false)
+const isAgree = shallowRef(false) // 是否同意协议
+
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
 
 // 可用商品列表
 const goodsList = computed(() => {
@@ -131,27 +149,31 @@ const onCancel = (isRefresh = false) => {
     refresh.value = isRefresh
 }
 
-const onCancelSumit = () => {
-    formRef.value?.validate(async (valid) => {
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
         if (valid) {
-            const { marketid, goodsid } = selectedGoods.value ?? {}
-            formData.GoodsID = goodsid
-            loading.value = true
-            holderTransferApply({
-                data: {
-                    Header: {
-                        MarketID: marketid
-                    },
-                    HolderTransferDetails: [formData]
-                }
-            }).then(() => {
-                ElMessage.success('提交成功,请稍后查询结果')
-                onCancel(true)
-            }).catch((err) => {
-                ElMessage.error('提交失败:' + err)
-            }).finally(() => {
-                loading.value = false
-            })
+            if (isAgree.value) {
+                const { marketid, goodsid } = selectedGoods.value ?? {}
+                formData.GoodsID = goodsid
+                loading.value = true
+                holderTransferApply({
+                    data: {
+                        Header: {
+                            MarketID: marketid
+                        },
+                        HolderTransferDetails: [formData]
+                    }
+                }).then(() => {
+                    ElMessage.success('提交成功,请稍后查询结果')
+                    onCancel(true)
+                }).catch((err) => {
+                    ElMessage.error('提交失败:' + err)
+                }).finally(() => {
+                    loading.value = false
+                })
+            } else {
+                ElMessage.warning('请同意持仓转让协议')
+            }
         }
     })
 }

+ 0 - 1
src/packages/pc/views/market/trade/presell/transfer/listing/index.vue

@@ -64,7 +64,6 @@
 <script lang="ts" setup>
 import { shallowRef, computed, watch, onMounted } from 'vue'
 import { ElMessage, ElMessageBox, FormInstance, FormRules } from 'element-plus'
-import { pow } from '@/filters'
 import { EPriceMode, EListingSelectType, EDelistingType, EBuildType, EValidType } from '@/constants/client'
 import { BuyOrSell, getBuyOrSellList } from '@/constants/order'
 import { useRequest } from '@/hooks/request'

+ 8 - 4
src/packages/pc/views/system/menu/index.vue

@@ -19,16 +19,15 @@
 </template>
 
 <script lang="ts" setup>
-import { ref } from 'vue'
+import { ref, onMounted } from 'vue'
 import { useDataTable } from '@/hooks/datatable'
-import { useMenu } from '@/hooks/menu'
 import { useActionMenu } from '@pc/components/modules/action-menu'
+import { useMenuStore } from '@/stores'
 import AppActionMenu from '@pc/components/modules/action-menu/index.vue'
 import AppTable from '@pc/components/base/table/index.vue'
 
-const { userRoutes } = useMenu()
 const { activeMenu, asyncComponent, getActionMenus, openComponent, closeComponent } = useActionMenu<Model.UserRoutes>()
-const { dataList = userRoutes } = useDataTable<Model.UserRoutes>()
+const { dataList } = useDataTable<Model.UserRoutes>()
 const tableRef = ref()
 const isRowExpansion = ref(false)
 
@@ -56,6 +55,11 @@ const tableExpandAll = () => {
 
     toggleRowExpansionAll(dataList.value)
 }
+
+onMounted(() => {
+    const menuStore = useMenuStore()
+    dataList.value = menuStore.userRoutes
+})
 </script>
 
 <style lang="less">

+ 4 - 4
src/packages/pc/views/system/role/components/auth/index.vue

@@ -6,8 +6,8 @@
             <el-breadcrumb-item>{{ selectedRow.roleName }}</el-breadcrumb-item>
         </el-breadcrumb>
         <el-scrollbar height="300px">
-            <el-tree :data="userRoutes" :props="{ label: 'title' }" :expand-on-click-node="false" show-checkbox
-                check-on-click-node default-expand-all />
+            <el-tree :data="menuStore.userRoutes" :props="{ label: 'title' }" :expand-on-click-node="false"
+                show-checkbox check-on-click-node default-expand-all />
         </el-scrollbar>
         <template #footer>
             <el-button @click="show = false">取消</el-button>
@@ -18,7 +18,7 @@
 
 <script lang="ts" setup>
 import { ref, PropType } from 'vue'
-import { useMenu } from '@/hooks/menu'
+import { useMenuStore } from '@/stores'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
 defineProps({
@@ -28,7 +28,7 @@ defineProps({
     }
 })
 
-const { userRoutes } = useMenu()
+const menuStore = useMenuStore()
 const show = ref(true)
 </script>
 

+ 12 - 0
src/stores/modules/login.ts

@@ -4,6 +4,7 @@ import { ClientType } from '@/constants/client'
 import { defineStore } from '../store'
 import { localData, sessionData } from '../storage'
 import plus from '@/utils/h5plus'
+import cryptojs from 'crypto-js'
 
 // 初始化登录信息
 function initLoginInfo(): Model.LoginRsp {
@@ -82,6 +83,16 @@ export const useLoginStore = defineStore(() => {
         localData.setValue('autoLoginEncryptedData', encryptedString)
     }
 
+    // 校验登录密码
+    const checkLoginPassword = (password: string) => {
+        const loginData = getAutoLoginData()
+        if (loginData) {
+            const encryptedPassword = cryptojs.SHA256(loginId.value + password).toString()
+            return loginData.password === encryptedPassword
+        }
+        return false
+    }
+
     // 清除自动登录信息
     const clearAutoLoginData = () => {
         localData.reset('autoLoginEncryptedData')
@@ -103,6 +114,7 @@ export const useLoginStore = defineStore(() => {
         setLoginInfo,
         getAutoLoginData,
         setAutoLoginData,
+        checkLoginPassword,
         clearAutoLoginData,
         clearLoginInfo,
     }

+ 54 - 18
src/stores/modules/menu.ts

@@ -1,5 +1,5 @@
 import { shallowRef } from 'vue'
-// import { AuthType } from '@/constants/menu'
+import { AuthType } from '@/constants/menu'
 import { queryAccountMenu } from '@/services/api/account'
 import { defineStore } from '../store'
 import { sessionData } from '../storage'
@@ -8,8 +8,8 @@ export const useMenuStore = defineStore(() => {
     const loading = shallowRef(false)
     const userRoutes = sessionData.getRef('userRoutes')
 
-    /** 获取用户菜单列表 */
-    const getUserMenuList = async () => {
+    // 获取用户路由表
+    const getUserRoutes = async () => {
         try {
             loading.value = true
             const res = await queryAccountMenu()
@@ -19,25 +19,61 @@ export const useMenuStore = defineStore(() => {
         }
     }
 
+    // 根据 code 查找对应的子路由
+    const getChildrenRoutes = (routeName: string) => {
+        const findChildren = (data: Model.UserRoutes[]): Model.UserRoutes[] => {
+            for (const item of data) {
+                const { code, children } = item
+                if (code === routeName) return children ?? []
+                if (children) {
+                    const res = findChildren(children)
+                    if (res.length) return res
+                }
+            }
+            return []
+        }
+        return findChildren(userRoutes.value)
+    }
+
     // 过滤菜单
-    // const filterMenu = (data: Model.UserRoutes[], parentPath = '') => {
-    //     const result: Model.UserRoutes[] = []
-    //     data.forEach((e) => {
-    //         if (!e.hidden && e.authType === AuthType.Menu) {
-    //             const routePath = (parentPath ? parentPath + '/' : '') + e.url
-    //             result.push({
-    //                 ...e,
-    //                 url: routePath,
-    //                 children: e.children ? filterMenu(e.children, routePath) : [],
-    //             })
-    //         }
-    //     })
-    //     return result
-    // }
+    const filterMenus = (data: Model.UserRoutes[], parentPath = '') => {
+        return data.reduce<Model.UserRoutes[]>((pre, cur) => {
+            if (!cur.hidden && cur.authType === AuthType.Menu) {
+                const routePath = (parentPath ? parentPath + '/' : '') + cur.url
+                pre.push({
+                    ...cur,
+                    url: routePath,
+                    children: cur.children ? filterMenus(cur.children, routePath) : [],
+                })
+            }
+            return pre
+        }, [])
+    }
+
+    // 获取用户菜单(无限级)
+    const getUserMenus = (level = 0) => {
+        // 过滤层级
+        const filterLevel = (data: Model.UserRoutes[], n: number): Model.UserRoutes[] => {
+            if (level) {
+                return data.map((e) => ({ ...e, children: n <= 1 ? [] : filterLevel(e.children ?? [], n - 1) }))
+            }
+            return data
+        }
+        return filterMenus(filterLevel(userRoutes.value, level))
+    }
+
+    // 获取子菜单
+    const getChildrenMenus = (routeName: string) => {
+        const children = getChildrenRoutes(routeName)
+        return filterMenus(children)
+    }
 
     return {
         loading,
         userRoutes,
-        getUserMenuList,
+        getUserRoutes,
+        getChildrenRoutes,
+        getUserMenus,
+        getChildrenMenus
     }
 })