瀏覽代碼

Initial Commit

kulley 7 年之前
當前提交
8317be3007
共有 100 個文件被更改,包括 3329 次插入0 次删除
  1. 14 0
      .gitignore
  2. 12 0
      .idea/appointment-mp.iml
  3. 4 0
      .idea/deployment.xml
  4. 3 0
      .idea/dictionaries/kulley.xml
  5. 44 0
      .idea/inspectionProfiles/Project_Default.xml
  6. 78 0
      .idea/markdown-navigator.xml
  7. 3 0
      .idea/markdown-navigator/profiles_settings.xml
  8. 6 0
      .idea/misc.xml
  9. 8 0
      .idea/modules.xml
  10. 717 0
      .idea/workspace.xml
  11. 39 0
      app.js
  12. 38 0
      app.json
  13. 10 0
      app.wxss
  14. 196 0
      config/gql.js
  15. 42 0
      dist/action-sheet/index.js
  16. 8 0
      dist/action-sheet/index.json
  17. 44 0
      dist/action-sheet/index.wxml
  18. 1 0
      dist/action-sheet/index.wxss
  19. 193 0
      dist/area/index.js
  20. 6 0
      dist/area/index.json
  21. 35 0
      dist/area/index.wxml
  22. 1 0
      dist/area/index.wxss
  23. 55 0
      dist/badge-group/index.js
  24. 3 0
      dist/badge-group/index.json
  25. 3 0
      dist/badge-group/index.wxml
  26. 1 0
      dist/badge-group/index.wxss
  27. 25 0
      dist/badge/index.js
  28. 6 0
      dist/badge/index.json
  29. 10 0
      dist/badge/index.wxml
  30. 1 0
      dist/badge/index.wxss
  31. 30 0
      dist/button/index.js
  32. 6 0
      dist/button/index.json
  33. 28 0
      dist/button/index.wxml
  34. 1 0
      dist/button/index.wxss
  35. 31 0
      dist/card/index.js
  36. 6 0
      dist/card/index.json
  37. 40 0
      dist/card/index.wxml
  38. 1 0
      dist/card/index.wxss
  39. 9 0
      dist/cell-group/index.js
  40. 3 0
      dist/cell-group/index.json
  41. 3 0
      dist/cell-group/index.wxml
  42. 1 0
      dist/cell-group/index.wxss
  43. 30 0
      dist/cell/index.js
  44. 6 0
      dist/cell/index.json
  45. 41 0
      dist/cell/index.wxml
  46. 1 0
      dist/cell/index.wxss
  47. 40 0
      dist/checkbox-group/index.js
  48. 6 0
      dist/checkbox-group/index.json
  49. 1 0
      dist/checkbox-group/index.wxml
  50. 1 0
      dist/checkbox-group/index.wxss
  51. 70 0
      dist/checkbox/index.js
  52. 6 0
      dist/checkbox/index.json
  53. 18 0
      dist/checkbox/index.wxml
  54. 1 0
      dist/checkbox/index.wxss
  55. 26 0
      dist/col/index.js
  56. 3 0
      dist/col/index.json
  57. 8 0
      dist/col/index.wxml
  58. 1 0
      dist/col/index.wxss
  59. 105 0
      dist/collapse-item/index.js
  60. 6 0
      dist/collapse-item/index.json
  61. 42 0
      dist/collapse-item/index.wxml
  62. 1 0
      dist/collapse-item/index.wxss
  63. 51 0
      dist/collapse/index.js
  64. 3 0
      dist/collapse/index.json
  65. 3 0
      dist/collapse/index.wxml
  66. 3 0
      dist/common/color.js
  67. 59 0
      dist/common/component.js
  68. 1 0
      dist/common/index.wxss
  69. 1 0
      dist/common/style/clearfix.wxss
  70. 1 0
      dist/common/style/ellipsis.wxss
  71. 1 0
      dist/common/style/hairline.wxss
  72. 0 0
      dist/common/style/mixins/clearfix.wxss
  73. 0 0
      dist/common/style/mixins/ellipsis.wxss
  74. 0 0
      dist/common/style/mixins/hairline.wxss
  75. 0 0
      dist/common/style/var.wxss
  76. 18 0
      dist/common/utils.js
  77. 379 0
      dist/datetime-picker/index.js
  78. 6 0
      dist/datetime-picker/index.json
  79. 34 0
      dist/datetime-picker/index.wxml
  80. 1 0
      dist/datetime-picker/index.wxss
  81. 76 0
      dist/dialog/dialog.js
  82. 100 0
      dist/dialog/index.js
  83. 7 0
      dist/dialog/index.json
  84. 53 0
      dist/dialog/index.wxml
  85. 1 0
      dist/dialog/index.wxss
  86. 139 0
      dist/field/index.js
  87. 7 0
      dist/field/index.json
  88. 81 0
      dist/field/index.wxml
  89. 1 0
      dist/field/index.wxss
  90. 22 0
      dist/goods-action-button/index.js
  91. 6 0
      dist/goods-action-button/index.json
  92. 25 0
      dist/goods-action-button/index.wxml
  93. 1 0
      dist/goods-action-button/index.wxss
  94. 18 0
      dist/goods-action-icon/index.js
  95. 7 0
      dist/goods-action-icon/index.json
  96. 32 0
      dist/goods-action-icon/index.wxml
  97. 1 0
      dist/goods-action-icon/index.wxss
  98. 5 0
      dist/goods-action/index.js
  99. 3 0
      dist/goods-action/index.json
  100. 5 0
      dist/goods-action/index.wxml

+ 14 - 0
.gitignore

@@ -0,0 +1,14 @@
+# Windows
+[Dd]esktop.ini
+Thumbs.db
+$RECYCLE.BIN/
+
+# macOS
+.DS_Store
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+
+# Node.js
+node_modules/

+ 12 - 0
.idea/appointment-mp.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 4 - 0
.idea/deployment.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData" exclude=".svn;.cvs;.idea;.DS_Store;.git;.hg;node_modules" />
+</project>

+ 3 - 0
.idea/dictionaries/kulley.xml

@@ -0,0 +1,3 @@
+<component name="ProjectDictionaryState">
+  <dictionary name="kulley" />
+</component>

+ 44 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,44 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="HtmlUnknownAttribute" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="myValues">
+        <value>
+          <list size="9">
+            <item index="0" class="java.lang.String" itemvalue="wx:if" />
+            <item index="1" class="java.lang.String" itemvalue="bind:tap" />
+            <item index="2" class="java.lang.String" itemvalue="wx:else" />
+            <item index="3" class="java.lang.String" itemvalue="class" />
+            <item index="4" class="java.lang.String" itemvalue="bindtap" />
+            <item index="5" class="java.lang.String" itemvalue="open-type" />
+            <item index="6" class="java.lang.String" itemvalue="bindgetuserinfo" />
+            <item index="7" class="java.lang.String" itemvalue="src" />
+            <item index="8" class="java.lang.String" itemvalue="mode" />
+          </list>
+        </value>
+      </option>
+      <option name="myCustomValuesEnabled" value="true" />
+    </inspection_tool>
+    <inspection_tool class="HtmlUnknownTag" enabled="true" level="WARNING" enabled_by_default="true">
+      <option name="myValues">
+        <value>
+          <list size="12">
+            <item index="0" class="java.lang.String" itemvalue="nobr" />
+            <item index="1" class="java.lang.String" itemvalue="noembed" />
+            <item index="2" class="java.lang.String" itemvalue="comment" />
+            <item index="3" class="java.lang.String" itemvalue="noscript" />
+            <item index="4" class="java.lang.String" itemvalue="embed" />
+            <item index="5" class="java.lang.String" itemvalue="script" />
+            <item index="6" class="java.lang.String" itemvalue="view" />
+            <item index="7" class="java.lang.String" itemvalue="button" />
+            <item index="8" class="java.lang.String" itemvalue="block" />
+            <item index="9" class="java.lang.String" itemvalue="text" />
+            <item index="10" class="java.lang.String" itemvalue="van-stepper" />
+            <item index="11" class="java.lang.String" itemvalue="van-cell" />
+          </list>
+        </value>
+      </option>
+      <option name="myCustomValuesEnabled" value="true" />
+    </inspection_tool>
+  </profile>
+</component>

+ 78 - 0
.idea/markdown-navigator.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MarkdownProjectSettings" wasCopied="true">
+    <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false">
+      <PanelProvider>
+        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
+      </PanelProvider>
+    </PreviewSettings>
+    <ParserSettings gitHubSyntaxChange="false" emojiShortcuts="0" emojiImages="0">
+      <PegdownExtensions>
+        <option name="ABBREVIATIONS" value="false" />
+        <option name="ANCHORLINKS" value="true" />
+        <option name="ASIDE" value="false" />
+        <option name="ATXHEADERSPACE" value="true" />
+        <option name="AUTOLINKS" value="true" />
+        <option name="DEFINITIONS" value="false" />
+        <option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
+        <option name="FENCED_CODE_BLOCKS" value="true" />
+        <option name="FOOTNOTES" value="false" />
+        <option name="HARDWRAPS" value="false" />
+        <option name="HTML_DEEP_PARSER" value="false" />
+        <option name="INSERTED" value="false" />
+        <option name="QUOTES" value="false" />
+        <option name="RELAXEDHRULES" value="true" />
+        <option name="SMARTS" value="false" />
+        <option name="STRIKETHROUGH" value="true" />
+        <option name="SUBSCRIPT" value="false" />
+        <option name="SUPERSCRIPT" value="false" />
+        <option name="SUPPRESS_HTML_BLOCKS" value="false" />
+        <option name="SUPPRESS_INLINE_HTML" value="false" />
+        <option name="TABLES" value="true" />
+        <option name="TASKLISTITEMS" value="true" />
+        <option name="TOC" value="false" />
+        <option name="WIKILINKS" value="true" />
+      </PegdownExtensions>
+      <ParserOptions>
+        <option name="ADMONITION_EXT" value="false" />
+        <option name="ATTRIBUTES_EXT" value="false" />
+        <option name="COMMONMARK_LISTS" value="true" />
+        <option name="DUMMY" value="false" />
+        <option name="EMOJI_SHORTCUTS" value="true" />
+        <option name="ENUMERATED_REFERENCES_EXT" value="false" />
+        <option name="FLEXMARK_FRONT_MATTER" value="false" />
+        <option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
+        <option name="GFM_TABLE_RENDERING" value="true" />
+        <option name="GITBOOK_URL_ENCODING" value="false" />
+        <option name="GITHUB_LISTS" value="false" />
+        <option name="GITHUB_WIKI_LINKS" value="true" />
+        <option name="HEADER_ID_NO_DUPED_DASHES" value="false" />
+        <option name="JEKYLL_FRONT_MATTER" value="false" />
+        <option name="NO_TEXT_ATTRIBUTES" value="false" />
+        <option name="PARSE_HTML_ANCHOR_ID" value="false" />
+        <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
+      </ParserOptions>
+    </ParserSettings>
+    <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false">
+      <GeneratorProvider>
+        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
+      </GeneratorProvider>
+      <headerTop />
+      <headerBottom />
+      <bodyTop />
+      <bodyBottom />
+    </HtmlSettings>
+    <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="false" isCssTextEnabled="false" isDynamicPageWidth="true">
+      <StylesheetProvider>
+        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
+      </StylesheetProvider>
+      <ScriptProviders />
+      <cssText />
+      <cssUriHistory />
+    </CssSettings>
+    <HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
+    <LinkMapSettings>
+      <textMaps />
+    </LinkMapSettings>
+  </component>
+</project>

+ 3 - 0
.idea/markdown-navigator/profiles_settings.xml

@@ -0,0 +1,3 @@
+<component name="MarkdownNavigator.ProfileManager">
+  <settings default="" pdf-export="" />
+</component>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/appointment-mp.iml" filepath="$PROJECT_DIR$/.idea/appointment-mp.iml" />
+    </modules>
+  </component>
+</project>

+ 717 - 0
.idea/workspace.xml

@@ -0,0 +1,717 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="d21073ef-a197-4518-8589-ea67fe7efb11" name="Default Changelist" comment="" />
+    <ignored path="$PROJECT_DIR$/.tmp/" />
+    <ignored path="$PROJECT_DIR$/temp/" />
+    <ignored path="$PROJECT_DIR$/tmp/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FUSProjectUsageTrigger">
+    <session id="-600201672">
+      <usages-collector id="statistics.lifecycle.project">
+        <counts>
+          <entry key="project.closed" value="2" />
+          <entry key="project.open.time.14" value="1" />
+          <entry key="project.open.time.2" value="1" />
+          <entry key="project.open.time.21" value="1" />
+          <entry key="project.opened" value="3" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.open">
+        <counts>
+          <entry key="js" value="54" />
+          <entry key="json" value="34" />
+          <entry key="wxml" value="31" />
+          <entry key="wxss" value="25" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.open">
+        <counts>
+          <entry key="HTML" value="29" />
+          <entry key="JSON" value="34" />
+          <entry key="JavaScript" value="54" />
+          <entry key="PLAIN_TEXT" value="3" />
+          <entry key="Wxss" value="24" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.extensions.edit">
+        <counts>
+          <entry key="js" value="556" />
+          <entry key="json" value="235" />
+          <entry key="wxml" value="466" />
+          <entry key="wxss" value="79" />
+        </counts>
+      </usages-collector>
+      <usages-collector id="statistics.file.types.edit">
+        <counts>
+          <entry key="HTML" value="466" />
+          <entry key="JSON" value="235" />
+          <entry key="JavaScript" value="556" />
+          <entry key="Wxss" value="79" />
+        </counts>
+      </usages-collector>
+    </session>
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/manage/release/release.wxml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="690">
+              <caret line="30" column="6" lean-forward="true" selection-start-line="30" selection-start-column="6" selection-end-line="30" selection-end-column="6" />
+              <folding>
+                <element signature="n#style#0;n#view#0;n#view#0;n#van-cell#0;n#van-cell-group#0;n#!!top" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxss">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="805">
+              <caret line="35" column="24" lean-forward="true" selection-start-line="35" selection-start-column="24" selection-end-line="35" selection-end-column="24" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.json">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="138">
+              <caret line="6" column="5" lean-forward="true" selection-start-line="6" selection-start-column="5" selection-end-line="6" selection-end-column="5" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/home/contact/contact.wxml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="115">
+              <caret line="5" selection-start-line="5" selection-end-line="26" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/home/contact/contact.wxss">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="299">
+              <caret line="13" selection-start-line="13" selection-end-line="20" selection-end-column="1" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="299">
+              <caret line="13" column="27" lean-forward="true" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/config/gql.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="578">
+              <caret line="176" column="25" lean-forward="true" selection-start-line="176" selection-start-column="25" selection-end-line="176" selection-end-column="25" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/utils/util.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="115">
+              <caret line="5" column="24" selection-start-line="5" selection-start-column="24" selection-end-line="5" selection-end-column="24" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/message/message.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="23">
+              <caret line="40" selection-start-line="40" selection-end-line="40" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/pages/message/message.wxml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="667">
+              <caret line="29" column="18" lean-forward="true" selection-start-line="29" selection-start-column="18" selection-end-line="29" selection-end-column="18" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/pages/message/message.json" />
+        <option value="$PROJECT_DIR$/pages/index/index.js" />
+        <option value="$PROJECT_DIR$/utils/gql.js" />
+        <option value="$PROJECT_DIR$/pages/index/index.wxml" />
+        <option value="$PROJECT_DIR$/pages/manage/manage.wxss" />
+        <option value="$PROJECT_DIR$/pages/home/home.json" />
+        <option value="$PROJECT_DIR$/pages/server/server.json" />
+        <option value="$PROJECT_DIR$/pages/service/service.json" />
+        <option value="$PROJECT_DIR$/pages/service/service.wxml" />
+        <option value="$PROJECT_DIR$/dist/loading/index.wxss" />
+        <option value="$PROJECT_DIR$/pages/service/service.wxss" />
+        <option value="$PROJECT_DIR$/pages/service/service.js" />
+        <option value="$PROJECT_DIR$/app.js" />
+        <option value="$PROJECT_DIR$/pages/message/message.wxml" />
+        <option value="$PROJECT_DIR$/pages/home/home.wxml" />
+        <option value="$PROJECT_DIR$/pages/home/showMy/showMy.js" />
+        <option value="$PROJECT_DIR$/pages/manage/manage.json" />
+        <option value="$PROJECT_DIR$/pages/manage/manage.wxml" />
+        <option value="$PROJECT_DIR$/pages/message/message.js" />
+        <option value="$PROJECT_DIR$/pages/home/home.js" />
+        <option value="$PROJECT_DIR$/pages/manage/manage.js" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/allOrders.json" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/allOrders.wxml" />
+        <option value="$PROJECT_DIR$/config/gql.js" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/allOrders.js" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.wxml" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.json" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.wxss" />
+        <option value="$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.js" />
+        <option value="$PROJECT_DIR$/pages/server/server.js" />
+        <option value="$PROJECT_DIR$/pages/server/server.wxml" />
+        <option value="$PROJECT_DIR$/pages/manage/release/release.wxss" />
+        <option value="$PROJECT_DIR$/pages/manage/release/release.js" />
+        <option value="$PROJECT_DIR$/pages/manage/release/serviceRelease/serviceRelease.js" />
+        <option value="$PROJECT_DIR$/pages/manage/release/release.json" />
+        <option value="$PROJECT_DIR$/pages/manage/release/release.wxml" />
+        <option value="$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.js" />
+        <option value="$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxss" />
+        <option value="$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.json" />
+        <option value="$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxml" />
+        <option value="$PROJECT_DIR$/utils/util.js" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsFlowSettings">
+    <service-enabled>true</service-enabled>
+    <exe-path />
+    <annotation-enable>false</annotation-enable>
+    <other-services-enabled>true</other-services-enabled>
+  </component>
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="162" />
+    <option name="y" value="56" />
+    <option name="width" value="2237" />
+    <option name="height" value="1335" />
+  </component>
+  <component name="ProjectInspectionProfilesVisibleTreeState">
+    <entry key="Project Default">
+      <profile-state>
+        <expanded-state>
+          <State>
+            <id />
+          </State>
+        </expanded-state>
+        <selected-state>
+          <State>
+            <id>AngularJS</id>
+          </State>
+        </selected-state>
+      </profile-state>
+    </entry>
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="config" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="home" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="manage" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="manage" type="462c0819:PsiDirectoryNode" />
+              <item name="release" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="manage" type="462c0819:PsiDirectoryNode" />
+              <item name="release" type="462c0819:PsiDirectoryNode" />
+              <item name="serverAdd" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="message" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="pages" type="462c0819:PsiDirectoryNode" />
+              <item name="server" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="appointment-mp" type="b2602c69:ProjectViewProjectNode" />
+              <item name="appointment-mp" type="462c0819:PsiDirectoryNode" />
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="JavaScriptWeakerCompletionTypeGuess" value="true" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="/usr/local/bin/node" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+    <property name="settings.editor.selected.configurable" value="preferences.sourceCode.JavaScript" />
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/config" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="d21073ef-a197-4518-8589-ea67fe7efb11" name="Default Changelist" comment="" />
+      <created>1546420580079</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1546420580079</updated>
+      <workItem from="1546420581702" duration="979000" />
+      <workItem from="1546422382377" duration="6794000" />
+      <workItem from="1546494083975" duration="17681000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="25454000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="162" y="56" width="2237" height="1335" extended-state="0" />
+    <editor active="true" />
+    <layout>
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24966079" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info id="Favorites" order="2" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Version Control" order="8" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Terminal" order="9" />
+      <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
+      <window_info anchor="right" id="Commander" order="0" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/dist/info/index.js">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/dist/common/component.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="506">
+          <caret line="23" column="24" lean-forward="true" selection-start-line="23" selection-start-column="24" selection-end-line="23" selection-end-column="24" />
+          <folding>
+            <element signature="e#0#40#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/dist/loading/index.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="161">
+          <caret line="7" column="27" selection-start-line="7" selection-start-column="27" selection-end-line="7" selection-end-column="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/service/service.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="575">
+          <caret line="25" selection-start-line="25" selection-end-line="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app.wxss">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="851">
+          <caret line="37" column="1" selection-start-line="37" selection-start-column="1" selection-end-line="37" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/app.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="506">
+          <caret line="22" column="41" selection-start-line="22" selection-start-column="41" selection-end-line="22" selection-end-column="41" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/service/service.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="127">
+          <caret line="37" column="27" selection-start-line="37" selection-start-column="27" selection-end-line="37" selection-end-column="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/home.wxss">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/home.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="23">
+          <caret line="1" lean-forward="true" selection-start-line="1" selection-end-line="14" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/message/message.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="184">
+          <caret line="8" column="3" lean-forward="true" selection-start-line="8" selection-start-column="3" selection-end-line="8" selection-end-column="3" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/manage.wxss">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/allOrders.wxss">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/manage.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="16" selection-start-line="16" selection-end-line="16" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/manage.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="184">
+          <caret line="8" column="38" lean-forward="true" selection-start-line="8" selection-start-column="38" selection-end-line="8" selection-end-column="38" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/allOrders.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="161">
+          <caret line="7" column="23" selection-start-line="7" selection-start-column="9" selection-end-line="7" selection-end-column="23" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/allOrders.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="644">
+          <caret line="28" column="33" lean-forward="true" selection-start-line="28" selection-start-column="33" selection-end-line="28" selection-end-column="33" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/home.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="115">
+          <caret line="5" column="1" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/home.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="184">
+          <caret line="8" column="20" selection-start-line="8" selection-start-column="20" selection-end-line="8" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/allOrders.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="474">
+          <caret line="32" column="42" lean-forward="true" selection-start-line="32" selection-start-column="42" selection-end-line="32" selection-end-column="42" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/showMy/showMy.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="23">
+          <caret line="1" selection-start-line="1" selection-end-line="11" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="184">
+          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="69">
+          <caret line="3" column="33" selection-start-line="3" selection-start-column="33" selection-end-line="3" selection-end-column="33" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/allOrders/selectedOrders/selectedOrders.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="545">
+          <caret line="36" column="17" lean-forward="true" selection-start-line="36" selection-start-column="17" selection-end-line="36" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/server/server.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="11" column="26" selection-start-line="11" selection-start-column="26" selection-end-line="11" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/server/server.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="46">
+          <caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/server/server.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="506">
+          <caret line="22" column="2" selection-start-line="22" selection-start-column="2" selection-end-line="22" selection-end-column="72" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/server/server.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="644">
+          <caret line="28" column="1" lean-forward="true" selection-start-line="28" selection-start-column="1" selection-end-line="28" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/showMy/showMy.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="322">
+          <caret line="14" column="46" lean-forward="true" selection-start-line="14" selection-start-column="46" selection-end-line="14" selection-end-column="46" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/showMy/showMy.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="69">
+          <caret line="3" column="8" lean-forward="true" selection-start-line="3" selection-start-column="8" selection-end-line="3" selection-end-column="53" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/showMy/showMy.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="306">
+          <caret line="35" selection-start-line="35" selection-end-line="53" selection-end-column="6" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/manage.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="16" column="3" lean-forward="true" selection-start-line="16" selection-start-column="3" selection-end-line="16" selection-end-column="3" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/release.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="690">
+          <caret line="30" column="21" lean-forward="true" selection-start-line="30" selection-start-column="21" selection-end-line="30" selection-end-column="21" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serviceRelease/serviceRelease.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="529">
+          <caret line="23" lean-forward="true" selection-start-line="23" selection-end-line="23" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serviceRelease/serviceRelease.json">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serviceRelease/serviceRelease.wxml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serviceRelease/serviceRelease.wxss">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/release.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1053">
+          <caret line="52" column="35" lean-forward="true" selection-start-line="52" selection-start-column="35" selection-end-line="52" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/release.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="207">
+          <caret line="9" column="1" lean-forward="true" selection-start-line="9" selection-start-column="1" selection-end-line="9" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="506">
+          <caret line="22" column="3" selection-start-line="22" selection-start-column="3" selection-end-line="22" selection-end-column="3" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/contact/contact.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="115">
+          <caret line="5" selection-start-line="5" selection-end-line="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/home/contact/contact.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="299">
+          <caret line="13" selection-start-line="13" selection-end-line="20" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="138">
+          <caret line="6" column="5" lean-forward="true" selection-start-line="6" selection-start-column="5" selection-end-line="6" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/message/message.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="23">
+          <caret line="40" selection-start-line="40" selection-end-line="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/message/message.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="667">
+          <caret line="29" column="18" lean-forward="true" selection-start-line="29" selection-start-column="18" selection-end-line="29" selection-end-column="18" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/release.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="690">
+          <caret line="30" column="6" lean-forward="true" selection-start-line="30" selection-start-column="6" selection-end-line="30" selection-end-column="6" />
+          <folding>
+            <element signature="n#style#0;n#view#0;n#view#0;n#van-cell#0;n#van-cell-group#0;n#!!top" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxss">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="805">
+          <caret line="35" column="24" lean-forward="true" selection-start-line="35" selection-start-column="24" selection-end-line="35" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pages/manage/release/serverAdd/serverAdd.wxml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="299">
+          <caret line="13" column="27" lean-forward="true" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/config/gql.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="578">
+          <caret line="176" column="25" lean-forward="true" selection-start-line="176" selection-start-column="25" selection-end-line="176" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/utils/util.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="115">
+          <caret line="5" column="24" selection-start-line="5" selection-start-column="24" selection-end-line="5" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>

+ 39 - 0
app.js

@@ -0,0 +1,39 @@
+//app.js
+App({
+  onLaunch: function () {
+    // 展示本地存储能力
+    var logs = wx.getStorageSync('logs') || [];
+    logs.unshift(Date.now());
+    wx.setStorageSync('logs', logs);
+
+    // 登录
+    wx.login({
+      success: res => {
+        // 发送 res.code 到后台换取 openId, sessionKey, unionId
+      }
+    });
+    // 获取用户信息
+    wx.getSetting({
+      success: res => {
+        if (res.authSetting['scope.userInfo']) {
+          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
+          wx.getUserInfo({
+            success: res => {
+              // 可以将 res 发送给后台解码出 unionId
+              this.globalData.userInfo = res.userInfo
+
+              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
+              // 所以此处加入 callback 以防止这种情况
+              if (this.userInfoReadyCallback) {
+                this.userInfoReadyCallback(res)
+              }
+            }
+          })
+        }
+      }
+    })
+  },
+  globalData: {
+    userID: 'handsome'
+  }
+});

+ 38 - 0
app.json

@@ -0,0 +1,38 @@
+{
+  "pages": [
+    "pages/server/server",
+    "pages/home/home",
+    "pages/manage/manage",
+    "pages/service/service",
+    "pages/message/message"
+  ],
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#fff",
+    "navigationBarTitleText": "WeChat",
+    "navigationBarTextStyle": "black"
+  },
+  "tabBar": {
+    "selectedColor": "#353535",
+    "list": [
+      {
+        "pagePath": "pages/server/server",
+        "text": "预约",
+        "iconPath": "images/timeline.png",
+        "selectedIconPath": "images/timeline_s.png"
+      },
+      {
+        "pagePath": "pages/home/home",
+        "text": "我的",
+        "iconPath": "images/home.png",
+        "selectedIconPath": "images/home_s.png"
+      },
+      {
+        "pagePath": "pages/manage/manage",
+        "text": "管理",
+        "iconPath": "images/settings.png",
+        "selectedIconPath": "images/settings_s.png"
+      }
+    ]
+  }
+}

+ 10 - 0
app.wxss

@@ -0,0 +1,10 @@
+/**app.wxss**/
+.container {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: space-between;
+  padding: 200rpx 0;
+  box-sizing: border-box;
+} 

+ 196 - 0
config/gql.js

@@ -0,0 +1,196 @@
+const serverbyprops = `
+  query serverbyprops($name: String) {
+    serverbyprops: server_by_props(name: $name) {
+      id
+      name
+      description
+      img
+      createdAt
+      updatedAt
+    }
+  }
+`;
+
+const servicebyprops = `
+  query servicebyprops($server_id: ID) {
+    servicebyprops: service_by_props(server_id: $server_id) {
+      id
+      server_id {
+        id
+        name
+        description
+        img
+        createdAt
+        updatedAt
+      }
+      repertory_id {
+        id
+        count
+        createdAt
+        updatedAt
+      }
+      description
+      price
+      startTime
+      lastTime
+    }
+  }
+`;
+
+const createorderAndupdaterepertory = `
+  mutation createorderAndupdaterepertory ($order_id: ID!, $contactTelephone: String, $contactName: String, $payStatus: String, $remark: String, $payCount: String, $payTime: String, $createdAt: String, $orderStatus: String, $user_id: ID, $service_id: ID, $customerNumber: Int, $repertory_id: ID, $updatedAt: String, $count: Int) {
+    updaterepertory: update_repertory(id: $repertory_id count: $count updatedAt: $updatedAt) {
+      id
+      count
+      updatedAt
+    }
+
+    createorder: create_order(id: $order_id contactTelephone: $contactTelephone contactName: $contactName payStatus: $payStatus remark: $remark payCount: $payCount createdAt: $createdAt updatedAt: $updatedAt payTime: $payTime createdAt: $createdAt orderStatus: $orderStatus user_id: $user_id service_id: $service_id customerNumber: $customerNumber) {
+        payStatus
+        remark
+        payCount
+        updatedAt
+        payTime
+        createdAt
+        updatedAt
+        orderStatus
+        id
+        customerNumber
+        contactTelephone
+        contactName
+      }  
+    }
+`;
+
+const userbyid = `
+  query userbyid($id: ID) {
+    userbyid: user_by_id(id: $id) {
+      id
+      openid
+      admin
+      username
+      nickname
+      password
+      telephone
+      email
+      createdAt
+      updatedAt
+    }
+  }
+`;
+
+const orderbyprops = `
+    query orderbyprops($orderStatus: String, $user_id: ID) {
+      orderbyprops: order_by_props(orderStatus: $orderStatus user_id: $user_id) {
+        payStatus
+        remark
+        payCount
+        updatedAt
+        payTime
+        createdAt
+        orderStatus
+        id
+        contactTelephone
+        contactName
+        user_id {
+          id
+          openid
+          admin
+          username
+          nickname
+          password
+          telephone
+          email
+          createdAt
+          updatedAt
+        }
+        service_id {
+          id
+          description
+          price
+          startTime
+          lastTime
+          createdAt
+          updatedAt
+          repertory_id {
+              id
+              count
+              createdAt
+              updatedAt
+            }
+          server_id {
+              id
+              name
+              description
+              img
+              createdAt
+              updatedAt
+           }
+        }
+        customerNumber
+      }
+    }
+`;
+
+const adminorderbyprops = `
+    query adminorderbyprops($orderStatus: String) {
+      adminorderbyprops: order_by_props(orderStatus: $orderStatus) {
+        payStatus
+        remark
+        payCount
+        updatedAt
+        payTime
+        createdAt
+        orderStatus
+        id
+        contactTelephone
+        contactName
+        user_id {
+          id
+          openid
+          admin
+          username
+          nickname
+          password
+          telephone
+          email
+          createdAt
+          updatedAt
+        }
+        service_id {
+          id
+          description
+          price
+          startTime
+          lastTime
+          createdAt
+          updatedAt
+          repertory_id {
+              id
+              count
+              createdAt
+              updatedAt
+            }
+          server_id {
+              id
+              name
+              description
+              img
+              createdAt
+              updatedAt
+           }
+        }
+        customerNumber
+      }
+    }
+`;
+
+
+module.exports = {
+    serverbyprops: serverbyprops,
+    servicebyprops: servicebyprops,
+    createorderAndupdaterepertory: createorderAndupdaterepertory,
+    userbyid: userbyid,
+    orderbyprops: orderbyprops,
+    adminorderbyprops: adminorderbyprops
+};

+ 42 - 0
dist/action-sheet/index.js

@@ -0,0 +1,42 @@
+import { VantComponent } from '../common/component';
+import { iphonex } from '../mixins/iphonex';
+VantComponent({
+  mixins: [iphonex],
+  props: {
+    show: Boolean,
+    title: String,
+    cancelText: String,
+    zIndex: {
+      type: Number,
+      value: 100
+    },
+    actions: {
+      type: Array,
+      value: []
+    },
+    overlay: {
+      type: Boolean,
+      value: true
+    },
+    closeOnClickOverlay: {
+      type: Boolean,
+      value: true
+    }
+  },
+  methods: {
+    onSelect: function onSelect(event) {
+      var index = event.currentTarget.dataset.index;
+      var item = this.data.actions[index];
+
+      if (item && !item.disabled && !item.loading) {
+        this.$emit('select', item);
+      }
+    },
+    onCancel: function onCancel() {
+      this.$emit('cancel');
+    },
+    onClose: function onClose() {
+      this.$emit('close');
+    }
+  }
+});

+ 8 - 0
dist/action-sheet/index.json

@@ -0,0 +1,8 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index",
+    "van-popup": "../popup/index",
+    "van-loading": "../loading/index"
+  }
+}

+ 44 - 0
dist/action-sheet/index.wxml

@@ -0,0 +1,44 @@
+<van-popup
+  show="{{ show }}"
+  position="bottom"
+  z-index="{{ zIndex }}"
+  overlay="{{ overlay }}"
+  custom-class="van-action-sheet"
+  safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:close="onClose"
+>
+  <view wx:if="{{ title }}" class="van-hairline--bottom van-action-sheet__header">
+    {{ title }}
+    <van-icon
+      name="close"
+      custom-class="van-action-sheet__close"
+      bind:click="onClose"
+    />
+  </view>
+  <view wx:if="{{ actions && actions.length }}">
+    <!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
+    <button
+      wx:for="{{ actions }}"
+      wx:key="index"
+      open-type="{{ item.openType }}"
+      class="van-action-sheet__item van-hairline--top {{ item.disabled || item.loading ? 'van-action-sheet__item--disabled' : '' }} {{ item.className || '' }}"
+      data-index="{{ index }}"
+      bind:tap="onSelect"
+    >
+      <block wx:if="{{ !item.loading }}">
+        {{ item.name }}
+        <text wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</text>
+      </block>
+      <van-loading wx:else size="20px" />
+    </button>
+  </view>
+  <view
+    wx:if="{{ cancelText }}"
+    class="van-action-sheet__cancel"
+    bind:tap="onCancel"
+  >
+    {{ cancelText }}
+  </view>
+  <slot />
+</van-popup>

+ 1 - 0
dist/action-sheet/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-action-sheet{max-height:90%!important;color:#333}.van-action-sheet__cancel,.van-action-sheet__item{height:50px;font-size:16px;line-height:50px;text-align:center;background-color:#fff}.van-action-sheet__cancel:active,.van-action-sheet__item:active{background-color:#e8e8e8}.van-action-sheet__cancel{height:60px}.van-action-sheet__cancel::before{display:block;content:' ';height:10px;background-color:#f8f8f8}.van-action-sheet__item--disabled{color:#c9c9c9}.van-action-sheet__item--disabled:active{background-color:#fff}.van-action-sheet__subname{margin-left:5px;font-size:12px;color:#7d7e80}.van-action-sheet__header{font-size:16px;font-weight:500;line-height:44px;text-align:center}.van-action-sheet__close{position:absolute!important;top:0;right:0;padding:0 15px;font-size:18px!important;line-height:inherit!important;color:#999}

+ 193 - 0
dist/area/index.js

@@ -0,0 +1,193 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  props: {
+    title: String,
+    value: String,
+    loading: Boolean,
+    itemHeight: {
+      type: Number,
+      value: 44
+    },
+    visibleItemCount: {
+      type: Number,
+      value: 5
+    },
+    columnsNum: {
+      type: [String, Number],
+      value: 3
+    },
+    areaList: {
+      type: Object,
+      value: {}
+    }
+  },
+  data: {
+    pickerValue: [0, 0, 0],
+    columns: []
+  },
+  watch: {
+    value: function value(_value) {
+      this.code = _value;
+      this.setValues();
+    },
+    areaList: 'setValues'
+  },
+  methods: {
+    onCancel: function onCancel() {
+      this.$emit('cancel', {
+        values: this.getValues(),
+        indexs: this.getIndexs(),
+        detail: this.getDetail()
+      });
+    },
+    onConfirm: function onConfirm() {
+      this.$emit('confirm', {
+        values: this.getValues(),
+        indexs: this.getIndexs(),
+        detail: this.getDetail()
+      });
+    },
+    onChange: function onChange(event) {
+      var value = event.detail.value;
+      var pickerValue = this.data.pickerValue;
+      var displayColumns = this.getDisplayColumns();
+      var index = pickerValue.findIndex(function (item, index) {
+        return item !== value[index];
+      });
+      var values = displayColumns[index];
+
+      if (index < 0 || value[index] < 0 || !values[value[index]]) {
+        return;
+      }
+
+      this.code = values[value[index]].code;
+      this.setValues();
+      this.$emit('change', {
+        picker: this,
+        values: this.getValues(),
+        index: index
+      });
+    },
+    getList: function getList(type, code) {
+      var result = [];
+
+      if (type !== 'province' && !code) {
+        return result;
+      }
+
+      var list = this.data.areaList && this.data.areaList[type + "_list"] || {};
+      result = Object.keys(list).map(function (code) {
+        return {
+          code: code,
+          name: list[code]
+        };
+      });
+
+      if (code) {
+        // oversea code
+        if (code[0] === '9' && type === 'city') {
+          code = '9';
+        }
+
+        result = result.filter(function (item) {
+          return item.code.indexOf(code) === 0;
+        });
+      }
+
+      return result;
+    },
+    getIndex: function getIndex(type, code) {
+      var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
+      var list = this.getList(type, code.slice(0, compareNum - 2)); // oversea code
+
+      if (code[0] === '9' && type === 'province') {
+        compareNum = 1;
+      }
+
+      code = code.slice(0, compareNum);
+
+      for (var i = 0; i < list.length; i++) {
+        if (list[i].code.slice(0, compareNum) === code) {
+          return i;
+        }
+      }
+
+      return 0;
+    },
+    setValues: function setValues() {
+      var code = this.code || this.data.areaList && Object.keys(this.data.areaList.county_list || {})[0] || '';
+      var province = this.getList('province');
+      var city = this.getList('city', code.slice(0, 2));
+      this.set({
+        'columns[0]': province,
+        'columns[1]': city
+      });
+
+      if (city.length && code.slice(2, 4) === '00') {
+        code = city[0].code;
+      }
+
+      this.set({
+        'columns[2]': this.getList('county', code.slice(0, 4)),
+        pickerValue: [this.getIndex('province', code), this.getIndex('city', code), this.getIndex('county', code)]
+      });
+    },
+    getValues: function getValues() {
+      var _this$data$pickerValu = this.data.pickerValue,
+          pickerValue = _this$data$pickerValu === void 0 ? [] : _this$data$pickerValu;
+      var displayColumns = this.getDisplayColumns();
+      return displayColumns.map(function (option, index) {
+        return option[pickerValue[index]];
+      }).filter(function (value) {
+        return !!value;
+      });
+    },
+    getIndexs: function getIndexs() {
+      var _this$data = this.data,
+          pickerValue = _this$data.pickerValue,
+          columnsNum = _this$data.columnsNum;
+      return pickerValue.slice(0, columnsNum);
+    },
+    getDetail: function getDetail() {
+      var values = this.getValues();
+      var area = {
+        code: '',
+        country: '',
+        province: '',
+        city: '',
+        county: ''
+      };
+
+      if (!values.length) {
+        return area;
+      }
+
+      var names = values.map(function (item) {
+        return item.name;
+      });
+      area.code = values[values.length - 1].code;
+
+      if (area.code[0] === '9') {
+        area.country = names[1] || '';
+        area.province = names[2] || '';
+      } else {
+        area.province = names[0] || '';
+        area.city = names[1] || '';
+        area.county = names[2] || '';
+      }
+
+      return area;
+    },
+    reset: function reset() {
+      this.code = '';
+      this.setValues();
+    },
+    getDisplayColumns: function getDisplayColumns() {
+      var _this$data2 = this.data,
+          _this$data2$columns = _this$data2.columns,
+          columns = _this$data2$columns === void 0 ? [] : _this$data2$columns,
+          columnsNum = _this$data2.columnsNum;
+      return columns.slice(0, +columnsNum);
+    }
+  }
+});

+ 6 - 0
dist/area/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-loading": "../loading/index"
+  }
+}

+ 35 - 0
dist/area/index.wxml

@@ -0,0 +1,35 @@
+<view class="van-picker">
+  <view class="van-picker__toolbar van-hairline--bottom">
+    <view class="van-picker__cancel" bindtap="onCancel">取消</view>
+    <view class="van-picker__title">{{ title }}</view>
+    <view class="van-picker__confirm" bindtap="onConfirm">确定</view>
+  </view>
+
+  <view wx:if="{{ loading }}" class="van-picker__loading">
+    <van-loading color="#1989fa"/>
+  </view>
+
+  <picker-view
+    indicator-style="height: {{ itemHeight }}px;"
+    style="width: 100%; height: {{ itemHeight * visibleItemCount + 'px' }}"
+    bindchange="onChange"
+    value="{{ pickerValue }}"
+    class="van-picker__columns"
+  >
+    <picker-view-column
+      wx:if="{{ rowIndex < columnsNum }}"
+      wx:for="{{ columns }}"
+      wx:for-item="row"
+      wx:for-index="rowIndex"
+      wx:key="rowIndex"
+      class="van-picker-column"
+    >
+      <view
+        wx:for="{{ row }}"
+        wx:key="{{ item.code }}"
+        style="line-height: {{ itemHeight }}px;"
+        class="van-picker-column__item {{ index === pickerValue[rowIndex] ? 'van-picker-column__item--selected' : '' }}"
+      >{{ item.name }}</view>
+    </picker-view-column>
+  </picker-view>
+</view>

+ 1 - 0
dist/area/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-picker{-webkit-text-size-adjust:100%;position:relative;overflow:hidden;background-color:#fff;-webkit-user-select:none;user-select:none}.van-picker__toolbar{display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;height:44px;line-height:44px}.van-picker__cancel,.van-picker__confirm{color:#1989fa;padding:0 15px;font-size:14px}.van-picker__cancel:active,.van-picker__confirm:active{background-color:#e8e8e8}.van-picker__title{max-width:50%;font-size:16px;font-weight:500;text-align:center}.van-picker__columns{position:relative}.van-picker__loading{display:-webkit-flex;display:flex;z-index:4;position:absolute;top:0;right:0;bottom:0;left:0;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;background-color:rgba(255,255,255,.9)}.van-picker-column{-webkit-flex:1;flex:1;overflow:hidden;font-size:16px;text-align:center}.van-picker-column__item{padding:0 5px;color:#333}.van-picker-column__item--selected{font-weight:500}.van-picker-column__item--disabled{opacity:.3}

+ 55 - 0
dist/badge-group/index.js

@@ -0,0 +1,55 @@
+import { VantComponent } from '../common/component';
+import { isNumber } from '../common/utils';
+VantComponent({
+  relation: {
+    name: 'badge',
+    type: 'descendant',
+    linked: function linked(target) {
+      this.badges.push(target);
+      this.setActive();
+    },
+    unlinked: function unlinked(target) {
+      this.badges = this.badges.filter(function (item) {
+        return item !== target;
+      });
+      this.setActive();
+    }
+  },
+  props: {
+    active: {
+      type: Number,
+      value: 0
+    }
+  },
+  watch: {
+    active: 'setActive'
+  },
+  beforeCreate: function beforeCreate() {
+    this.badges = [];
+    this.currentActive = -1;
+  },
+  methods: {
+    setActive: function setActive(badge) {
+      var active = this.data.active;
+      var badges = this.badges;
+
+      if (badge && !isNumber(badge)) {
+        active = badges.indexOf(badge);
+      }
+
+      if (active === this.currentActive) {
+        return;
+      }
+
+      if (this.currentActive !== -1 && badges[this.currentActive]) {
+        this.$emit('change', active);
+        badges[this.currentActive].setActive(false);
+      }
+
+      if (badges[active]) {
+        badges[active].setActive(true);
+        this.currentActive = active;
+      }
+    }
+  }
+});

+ 3 - 0
dist/badge-group/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 3 - 0
dist/badge-group/index.wxml

@@ -0,0 +1,3 @@
+<view class="van-badge-group van-hairline--top-bottom custom-class">
+  <slot />
+</view>

+ 1 - 0
dist/badge-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-badge-group{width:85px}

+ 25 - 0
dist/badge/index.js

@@ -0,0 +1,25 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  relation: {
+    type: 'ancestor',
+    name: 'badge-group'
+  },
+  props: {
+    info: null,
+    title: String
+  },
+  methods: {
+    onClick: function onClick() {
+      var group = this.getRelationNodes('../badge-group/index')[0];
+
+      if (group) {
+        group.setActive(this);
+      }
+    },
+    setActive: function setActive(active) {
+      this.set({
+        active: active
+      });
+    }
+  }
+});

+ 6 - 0
dist/badge/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-info": "../info/index"
+  }
+}

+ 10 - 0
dist/badge/index.wxml

@@ -0,0 +1,10 @@
+<view class="van-badge van-hairline custom-class {{ active ? 'van-badge--active' : '' }}" bind:tap="onClick">
+  <view class="van-badge__text">
+    <van-info
+      wx:if="{{ info !== null }}"
+      info="{{ info }}"
+      custom-style="right: 4px"
+    />
+    {{ title }}
+  </view>
+</view>

+ 1 - 0
dist/badge/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-badge{display:block;overflow:hidden;font-size:14px;line-height:1.4;-webkit-user-select:none;user-select:none;color:#7d7e80;word-break:break-all;box-sizing:border-box;padding:20px 12px 20px 9px;background-color:#f8f8f8;border-left:3px solid transparent}.van-badge:active{background-color:#e8e8e8}.van-badge::after{border-bottom-width:1px}.van-badge--active{font-weight:700;color:#333;border-color:#f44}.van-badge--active::after{border-right-width:1px}.van-badge--active,.van-badge--active:active{background-color:#fff}.van-badge__text{position:relative}

+ 30 - 0
dist/button/index.js

@@ -0,0 +1,30 @@
+import { VantComponent } from '../common/component';
+import { button } from '../mixins/button';
+import { openType } from '../mixins/open-type';
+VantComponent({
+  classes: ['loading-class'],
+  mixins: [button, openType],
+  props: {
+    plain: Boolean,
+    block: Boolean,
+    round: Boolean,
+    square: Boolean,
+    loading: Boolean,
+    disabled: Boolean,
+    type: {
+      type: String,
+      value: 'default'
+    },
+    size: {
+      type: String,
+      value: 'normal'
+    }
+  },
+  methods: {
+    onClick: function onClick() {
+      if (!this.data.disabled && !this.data.loading) {
+        this.$emit('click');
+      }
+    }
+  }
+});

+ 6 - 0
dist/button/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-loading": "../loading/index"
+  }
+}

+ 28 - 0
dist/button/index.wxml

@@ -0,0 +1,28 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<button
+  id="{{ id }}"
+  lang="{{ lang }}"
+  class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, unclickable: disabled || loading }]) }}"
+  open-type="{{ openType }}"
+  session-from="{{ sessionFrom }}"
+  app-parameter="{{ appParameter }}"
+  send-message-img="{{ sendMessageImg }}"
+  send-message-path="{{ sendMessagePath }}"
+  show-message-card="{{ showMessageCard }}"
+  send-message-title="{{ sendMessageTitle }}"
+  bind:tap="onClick"
+  binderror="bindError"
+  bindcontact="bindContact"
+  bindopensetting="bindOpenSetting"
+  bindgetuserinfo="bindGetUserInfo"
+  bindgetphonenumber="bindGetPhoneNumber"
+>
+  <van-loading
+    wx:if="{{ loading }}"
+    custom-class="loading-class"
+    size="{{ size === 'mini' ? '14px' : '20px' }}"
+    color="{{ type === 'default' ? '#c9c9c9' : '' }}"
+  />
+  <slot wx:else />
+</button>

+ 1 - 0
dist/button/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-button{position:relative;padding:0;display:inline-block;height:44px;line-height:42px;border-radius:2px;box-sizing:border-box;font-size:16px;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%}.van-button::after{content:" ";position:absolute;top:50%;left:50%;opacity:0;width:100%;height:100%;border:inherit;border-color:#000;background-color:#000;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.van-button:active::after{opacity:.15}.van-button--unclickable::after{display:none}.van-button--default{color:#333;background-color:#fff;border:1px solid #eee}.van-button--primary{color:#fff;background-color:#4b0;border:1px solid #4b0}.van-button--danger{color:#fff;background-color:#f44;border:1px solid #f44}.van-button--warning{color:#fff;background-color:#ff976a;border:1px solid #ff976a}.van-button--plain{background-color:#fff}.van-button--plain.van-button--primary{color:#4b0}.van-button--plain.van-button--danger{color:#f44}.van-button--plain.van-button--warning{color:#ff976a}.van-button--large{width:100%;height:50px;line-height:48px}.van-button--normal{padding:0 15px;font-size:14px}.van-button--small{height:30px;padding:0 8px;min-width:60px;font-size:12px;line-height:28px}.van-button--mini{display:inline-block;width:50px;height:22px;line-height:20px;font-size:10px}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{width:100%;display:block}.van-button--round{border-radius:10em}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5}

+ 31 - 0
dist/card/index.js

@@ -0,0 +1,31 @@
+import { link } from '../mixins/link';
+import { VantComponent } from '../common/component';
+VantComponent({
+  classes: ['num-class', 'desc-class', 'thumb-class', 'title-class', 'price-class', 'origin-price-class'],
+  mixins: [link],
+  props: {
+    tag: String,
+    num: String,
+    desc: String,
+    thumb: String,
+    title: String,
+    price: String,
+    centered: Boolean,
+    lazyLoad: Boolean,
+    thumbLink: String,
+    originPrice: String,
+    thumbMode: {
+      type: String,
+      value: 'aspectFit'
+    },
+    currency: {
+      type: String,
+      value: '¥'
+    }
+  },
+  methods: {
+    onClickThumb: function onClickThumb() {
+      this.jumpLink('thumbLink');
+    }
+  }
+});

+ 6 - 0
dist/card/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-tag": "../tag/index"
+  }
+}

+ 40 - 0
dist/card/index.wxml

@@ -0,0 +1,40 @@
+<view class="custom-class van-card {{ centered ? 'van-card--center' : '' }}">
+  <view class="van-card__thumb" bind:tap="onClickThumb">
+    <image
+      wx:if="{{ thumb }}"
+      src="{{ thumb }}"
+      mode="{{ thumbMode }}"
+      lazy-load="{{ lazyLoad }}"
+      class="van-card__img thumb-class"
+    />
+    <slot name="thumb" />
+    <van-tag
+      wx:if="{{ tag }}"
+      mark
+      type="danger"
+      custom-class="van-card__tag"
+    >
+      {{ tag }}
+    </van-tag>
+  </view>
+
+  <view class="van-card__content">
+    <view wx:if="{{ title }}" class="van-card__title van-multi-ellipsis--l2 title-class">{{ title }}</view>
+    <slot wx:else name="title" />
+
+    <view wx:if="{{ desc }}" class="van-card__desc van-ellipsis desc-class">{{ desc }}</view>
+    <slot wx:else name="desc" />
+
+    <slot name="tags" />
+
+    <view class="van-card__bottom">
+      <view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">{{ currency }} {{ price }}</view>
+      <view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
+      <view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
+    </view>
+  </view>
+
+  <view class="van-card__footer">
+    <slot name="footer" />
+  </view>
+</view>

+ 1 - 0
dist/card/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-card{position:relative;display:-webkit-flex;display:flex;padding:5px 15px;font-size:12px;color:#333;background:#fafafa;box-sizing:border-box;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-card--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;width:90px;height:90px;margin-right:10px;-webkit-flex:none;flex:none}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%}.van-card__content{position:relative;height:90px;-webkit-flex:1;flex:1}.van-card__desc,.van-card__title{line-height:17px;word-break:break-all}.van-card__title{max-height:34px;font-weight:700}.van-card__desc{max-height:17px;color:#7d7e80}.van-card__bottom{position:absolute;bottom:0;left:0;width:100%;line-height:17px}.van-card__price{display:inline-block;font-weight:700;color:#f44}.van-card__origin-price{display:inline-block;margin-left:5px;font-size:10px;color:#7d7e80;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{width:100%;text-align:right;-webkit-flex:none;flex:none}

+ 9 - 0
dist/cell-group/index.js

@@ -0,0 +1,9 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  props: {
+    border: {
+      type: Boolean,
+      value: true
+    }
+  }
+});

+ 3 - 0
dist/cell-group/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 3 - 0
dist/cell-group/index.wxml

@@ -0,0 +1,3 @@
+<view class="custom-class van-cell-group {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
dist/cell-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 30 - 0
dist/cell/index.js

@@ -0,0 +1,30 @@
+import { link } from '../mixins/link';
+import { VantComponent } from '../common/component';
+VantComponent({
+  classes: ['title-class', 'label-class', 'value-class', 'right-icon-class'],
+  mixins: [link],
+  props: {
+    title: null,
+    value: null,
+    icon: String,
+    size: String,
+    label: String,
+    center: Boolean,
+    isLink: Boolean,
+    required: Boolean,
+    clickable: Boolean,
+    titleWidth: String,
+    customStyle: String,
+    arrowDirection: String,
+    border: {
+      type: Boolean,
+      value: true
+    }
+  },
+  methods: {
+    onClick: function onClick(event) {
+      this.$emit('click', event.detail);
+      this.jumpLink();
+    }
+  }
+});

+ 6 - 0
dist/cell/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index"
+  }
+}

+ 41 - 0
dist/cell/index.wxml

@@ -0,0 +1,41 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
+  style="{{ customStyle }}"
+  bind:tap="onClick"
+>
+  <van-icon
+    wx:if="{{ icon }}"
+    name="{{ icon }}"
+    class="van-cell__left-icon-wrap"
+    custom-class="van-cell__left-icon"
+  />
+  <slot wx:else name="icon" />
+
+  <view
+    style="{{ titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth : '' }}"
+    class="van-cell__title title-class"
+  >
+    <block wx:if="{{ title }}">
+      {{ title }}
+      <view wx:if="{{ label }}" class="van-cell__label label-class">{{ label }}</view>
+    </block>
+    <slot wx:else name="title" />
+  </view>
+
+  <view class="van-cell__value value-class">
+    <block wx:if="{{ value || value === 0 }}">{{ value }}</block>
+    <slot wx:else />
+  </view>
+
+  <van-icon
+    wx:if="{{ isLink }}"
+    name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
+    class="van-cell__right-icon-wrap right-icon-class"
+    custom-class="van-cell__right-icon"
+  />
+  <slot wx:else name="right-icon" />
+
+  <slot name="extra" />
+</view>

+ 1 - 0
dist/cell/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-cell{width:100%;display:-webkit-flex;display:flex;padding:10px 15px;box-sizing:border-box;line-height:24px;position:relative;background-color:#fff;color:#333;font-size:14px}.van-cell::after{content:' ';position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:auto;left:15px;right:0;bottom:0;-webkit-transform:scaleY(.5);transform:scaleY(.5);border-bottom:1px solid #eee}.van-cell--borderless::after{display:none}.van-cell-group{background-color:#fff}.van-cell__label{color:#999;font-size:12px;margin-top:3px;line-height:18px}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__value{color:#999;overflow:hidden;text-align:right;vertical-align:middle}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;font-size:16px}.van-cell__left-icon-wrap{margin-right:5px}.van-cell__right-icon-wrap{margin-left:5px;color:#999}.van-cell__left-icon{line-height:24px;vertical-align:middle}.van-cell__right-icon{line-height:24px}.van-cell--clickable:active{background-color:#e8e8e8}.van-cell--required{overflow:visible}.van-cell--required::before{content:'*';position:absolute;left:7px;font-size:14px;color:#f44}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-bottom:12px}.van-cell--large .van-cell__title{font-size:16px}.van-cell--large .van-cell__label{font-size:14px}

+ 40 - 0
dist/checkbox-group/index.js

@@ -0,0 +1,40 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  field: true,
+  relation: {
+    name: 'checkbox',
+    type: 'descendant',
+    linked: function linked(target) {
+      var _this$data = this.data,
+          value = _this$data.value,
+          disabled = _this$data.disabled;
+      target.set({
+        value: value.indexOf(target.data.name) !== -1,
+        disabled: disabled || target.data.disabled
+      });
+    }
+  },
+  props: {
+    max: Number,
+    value: Array,
+    disabled: Boolean
+  },
+  watch: {
+    value: function value(_value) {
+      var children = this.getRelationNodes('../checkbox/index');
+      children.forEach(function (child) {
+        child.set({
+          value: _value.indexOf(child.data.name) !== -1
+        });
+      });
+    },
+    disabled: function disabled(_disabled) {
+      var children = this.getRelationNodes('../checkbox/index');
+      children.forEach(function (child) {
+        child.set({
+          disabled: _disabled || child.data.disabled
+        });
+      });
+    }
+  }
+});

+ 6 - 0
dist/checkbox-group/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index"
+  }
+}

+ 1 - 0
dist/checkbox-group/index.wxml

@@ -0,0 +1 @@
+<slot />

+ 1 - 0
dist/checkbox-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 70 - 0
dist/checkbox/index.js

@@ -0,0 +1,70 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  field: true,
+  relation: {
+    name: 'checkbox-group',
+    type: 'ancestor'
+  },
+  classes: ['icon-class', 'label-class'],
+  props: {
+    value: null,
+    disabled: Boolean,
+    useIconSlot: Boolean,
+    checkedColor: String,
+    labelPosition: String,
+    labelDisabled: Boolean,
+    shape: {
+      type: String,
+      value: 'round'
+    }
+  },
+  methods: {
+    emitChange: function emitChange(value) {
+      var parent = this.getRelationNodes('../checkbox-group/index')[0];
+
+      if (parent) {
+        this.setParentValue(parent, value);
+      } else {
+        this.$emit('input', value);
+        this.$emit('change', value);
+      }
+    },
+    toggle: function toggle() {
+      if (!this.data.disabled) {
+        this.emitChange(!this.data.value);
+      }
+    },
+    onClickLabel: function onClickLabel() {
+      if (!this.data.disabled && !this.data.labelDisabled) {
+        this.emitChange(!this.data.value);
+      }
+    },
+    setParentValue: function setParentValue(parent, value) {
+      var parentValue = parent.data.value.slice();
+      var name = this.data.name;
+
+      if (value) {
+        if (parent.data.max && parentValue.length >= parent.data.max) {
+          return;
+        }
+        /* istanbul ignore else */
+
+
+        if (parentValue.indexOf(name) === -1) {
+          parentValue.push(name);
+          parent.$emit('input', parentValue);
+          parent.$emit('change', parentValue);
+        }
+      } else {
+        var index = parentValue.indexOf(name);
+        /* istanbul ignore else */
+
+        if (index !== -1) {
+          parentValue.splice(index, 1);
+          parent.$emit('input', parentValue);
+          parent.$emit('change', parentValue);
+        }
+      }
+    }
+  }
+});

+ 6 - 0
dist/checkbox/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index"
+  }
+}

+ 18 - 0
dist/checkbox/index.wxml

@@ -0,0 +1,18 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-checkbox custom-class">
+  <view class="van-checkbox__icon-wrap" bindtap="toggle">
+    <slot wx:if="{{ useIconSlot }}" name="icon" />
+    <van-icon
+      wx:else
+      name="success"
+      class="{{ utils.bem('checkbox__icon', [shape, { disabled, checked: value }]) }}"
+      style="{{ checkedColor && value && !disabled ? 'border-color:' + checkedColor + '; background-color:' + checkedColor : '' }}"
+      custom-class="icon-class"
+      custom-style="line-height: 20px;"
+    />
+  </view>
+  <view class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled }]) }}" bindtap="onClickLabel">
+    <slot />
+  </view>
+</view>

+ 1 - 0
dist/checkbox/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-checkbox{overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{display:inline-block;line-height:20px;vertical-align:middle}.van-checkbox__icon{display:block;font-size:14px;width:20px;height:20px;color:transparent;text-align:center;box-sizing:border-box;border:1px solid #e5e5e5;transition:.2s}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;border-color:#1989fa;background-color:#1989fa}.van-checkbox__icon--disabled{border-color:#c9c9c9;background-color:#eee}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c9c9c9}.van-checkbox__label{color:#333;margin-left:10px}.van-checkbox__label--left{float:left;margin:0 10px 0 0}.van-checkbox__label--disabled{color:#c9c9c9}.van-checkbox__label:empty{margin:0}

+ 26 - 0
dist/col/index.js

@@ -0,0 +1,26 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  relation: {
+    name: 'row',
+    type: 'ancestor'
+  },
+  props: {
+    span: Number,
+    offset: Number
+  },
+  data: {
+    style: ''
+  },
+  methods: {
+    setGutter: function setGutter(gutter) {
+      var padding = gutter / 2 + "px";
+      var style = gutter ? "padding-left: " + padding + "; padding-right: " + padding + ";" : '';
+
+      if (style !== this.data.style) {
+        this.set({
+          style: style
+        });
+      }
+    }
+  }
+});

+ 3 - 0
dist/col/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 8 - 0
dist/col/index.wxml

@@ -0,0 +1,8 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('col', [span]) }} {{ offset ? 'van-col--offset-' + offset : '' }}"
+  style="{{ style }}"
+>
+  <slot />
+</view>

+ 1 - 0
dist/col/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}

+ 105 - 0
dist/collapse-item/index.js

@@ -0,0 +1,105 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  classes: ['content-class'],
+  relation: {
+    name: 'collapse',
+    type: 'ancestor',
+    linked: function linked(parent) {
+      this.parent = parent;
+    }
+  },
+  props: {
+    name: null,
+    title: null,
+    value: null,
+    icon: String,
+    label: String,
+    disabled: Boolean,
+    border: {
+      type: Boolean,
+      value: true
+    },
+    isLink: {
+      type: Boolean,
+      value: true
+    }
+  },
+  data: {
+    contentHeight: 0,
+    expanded: false
+  },
+  beforeCreate: function beforeCreate() {
+    this.animation = wx.createAnimation({
+      duration: 300,
+      timingFunction: 'ease-in-out'
+    });
+  },
+  methods: {
+    updateExpanded: function updateExpanded() {
+      if (!this.parent) {
+        return null;
+      }
+
+      var _this$parent$data = this.parent.data,
+          value = _this$parent$data.value,
+          accordion = _this$parent$data.accordion,
+          items = _this$parent$data.items;
+      var name = this.data.name;
+      var index = items.indexOf(this);
+      var currentName = name == null ? index : name;
+      var expanded = accordion ? value === currentName : value.some(function (name) {
+        return name === currentName;
+      });
+
+      if (expanded !== this.data.expanded) {
+        this.updateStyle(expanded);
+      }
+
+      this.set({
+        expanded: expanded
+      });
+    },
+    updateStyle: function updateStyle(expanded) {
+      var _this = this;
+
+      this.getRect('.van-collapse-item__content').then(function (res) {
+        var animationData = _this.animation.height(expanded ? res.height : 0).step().export();
+
+        if (expanded) {
+          _this.set({
+            animationData: animationData
+          });
+        } else {
+          _this.set({
+            contentHeight: res.height + 'px'
+          }, function () {
+            setTimeout(function () {
+              _this.set({
+                animationData: animationData
+              });
+            }, 20);
+          });
+        }
+      });
+    },
+    onClick: function onClick() {
+      if (this.data.disabled) {
+        return;
+      }
+
+      var _this$data = this.data,
+          name = _this$data.name,
+          expanded = _this$data.expanded;
+      var index = this.parent.data.items.indexOf(this);
+      var currentName = name == null ? index : name;
+      this.parent.switch(currentName, !expanded);
+    },
+    onTransitionEnd: function onTransitionEnd() {
+      if (this.data.expanded) {
+        this.set({
+          contentHeight: 'auto'
+        });
+      }
+    }
+  }
+});

+ 6 - 0
dist/collapse-item/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-cell": "../cell/index"
+  }
+}

+ 42 - 0
dist/collapse-item/index.wxml

@@ -0,0 +1,42 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-collapse-item van-hairline--top custom-class">
+  <van-cell
+    title="{{ title }}"
+    icon="{{ icon }}"
+    is-link="{{ isLink }}"
+    value="{{ value }}"
+    label="{{ label }}"
+    border="{{ border && expanded }}"
+    class="{{ utils.bem('collapse-item__title', { disabled, expanded }) }}"
+    right-icon-class="van-cell__right-icon"
+    custom-class="van-cell"
+    bind:click="onClick"
+  >
+    <slot
+      name="title"
+      slot="title"
+    />
+    <slot
+      name="icon"
+      slot="icon"
+    />
+    <slot name="value" />
+    <slot
+      name="right-icon"
+      slot="right-icon"
+    />
+  </van-cell>
+  <view
+    class="van-collapse-item__wrapper"
+    style="height: {{ contentHeight }};"
+    animation="{{ animationData }}"
+    bind:transitionend="onTransitionEnd"
+  >
+    <view
+      class="van-collapse-item__content content-class"
+    >
+      <slot />
+    </view>
+  </view>
+</view>

+ 1 - 0
dist/collapse-item/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:.3s}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c9c9c9!important}.van-collapse-item__title--disabled .van-cell:active{background-color:#fff!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{color:#999;padding:15px;font-size:13px;line-height:1.5;background-color:#fff}

+ 51 - 0
dist/collapse/index.js

@@ -0,0 +1,51 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  relation: {
+    name: 'collapse-item',
+    type: 'descendant',
+    linked: function linked(child) {
+      this.set({
+        items: this.data.items.concat([child])
+      }, function () {
+        child.updateExpanded();
+      });
+    }
+  },
+  props: {
+    accordion: Boolean,
+    value: null
+  },
+  data: {
+    items: []
+  },
+  watch: {
+    value: function value() {
+      this.data.items.forEach(function (child) {
+        child.updateExpanded();
+      });
+    },
+    accordion: function accordion() {
+      this.data.items.forEach(function (child) {
+        child.updateExpanded();
+      });
+    }
+  },
+  methods: {
+    switch: function _switch(name, expanded) {
+      var _this$data = this.data,
+          accordion = _this$data.accordion,
+          value = _this$data.value;
+
+      if (!accordion) {
+        name = expanded ? value.concat(name) : value.filter(function (activeName) {
+          return activeName !== name;
+        });
+      } else {
+        name = expanded ? name : '';
+      }
+
+      this.$emit('change', name);
+      this.$emit('input', name);
+    }
+  }
+});

+ 3 - 0
dist/collapse/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 3 - 0
dist/collapse/index.wxml

@@ -0,0 +1,3 @@
+<view class="van-collapse van-hairline--top-bottom custom-class">
+  <slot />
+</view>

+ 3 - 0
dist/common/color.js

@@ -0,0 +1,3 @@
+export var RED = '#f44';
+export var BLUE = '#1989fa';
+export var GREEN = '#4b0';

+ 59 - 0
dist/common/component.js

@@ -0,0 +1,59 @@
+import { basic } from '../mixins/basic';
+import { observe } from '../mixins/observer/index';
+
+function mapKeys(source, target, map) {
+  Object.keys(map).forEach(function (key) {
+    if (source[key]) {
+      target[map[key]] = source[key];
+    }
+  });
+}
+
+function VantComponent(vantOptions) {
+  if (vantOptions === void 0) {
+    vantOptions = {};
+  }
+
+  var options = {};
+  mapKeys(vantOptions, options, {
+    data: 'data',
+    props: 'properties',
+    mixins: 'behaviors',
+    methods: 'methods',
+    beforeCreate: 'created',
+    created: 'attached',
+    mounted: 'ready',
+    relations: 'relations',
+    destroyed: 'detached',
+    classes: 'externalClasses'
+  });
+  var _vantOptions = vantOptions,
+      relation = _vantOptions.relation;
+
+  if (relation) {
+    options.relations = Object.assign(options.relations || {}, {
+      ["../" + relation.name + "/index"]: relation
+    });
+  } // add default externalClasses
+
+
+  options.externalClasses = options.externalClasses || [];
+  options.externalClasses.push('custom-class'); // add default behaviors
+
+  options.behaviors = options.behaviors || [];
+  options.behaviors.push(basic); // map field to form-field behavior
+
+  if (vantOptions.field) {
+    options.behaviors.push('wx://form-field');
+  } // add default options
+
+
+  options.options = {
+    multipleSlots: true,
+    addGlobalClass: true
+  };
+  observe(vantOptions, options);
+  Component(options);
+}
+
+export { VantComponent };

+ 1 - 0
dist/common/index.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.van-clearfix::after{content:'';display:table;clear:both}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom::after,.van-hairline--left::after,.van-hairline--right::after,.van-hairline--surround::after,.van-hairline--top-bottom::after,.van-hairline--top::after,.van-hairline::after{content:' ';position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:-50%;left:-50%;right:-50%;bottom:-50%;-webkit-transform:scale(.5);transform:scale(.5);border:0 solid #eee}.van-hairline--top::after{border-top-width:1px}.van-hairline--left::after{border-left-width:1px}.van-hairline--right::after{border-right-width:1px}.van-hairline--bottom::after{border-bottom-width:1px}.van-hairline--top-bottom::after{border-width:1px 0}.van-hairline--surround::after{border-width:1px}

+ 1 - 0
dist/common/style/clearfix.wxss

@@ -0,0 +1 @@
+.van-clearfix::after{content:'';display:table;clear:both}

+ 1 - 0
dist/common/style/ellipsis.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}

+ 1 - 0
dist/common/style/hairline.wxss

@@ -0,0 +1 @@
+.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom::after,.van-hairline--left::after,.van-hairline--right::after,.van-hairline--surround::after,.van-hairline--top-bottom::after,.van-hairline--top::after,.van-hairline::after{content:' ';position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:-50%;left:-50%;right:-50%;bottom:-50%;-webkit-transform:scale(.5);transform:scale(.5);border:0 solid #eee}.van-hairline--top::after{border-top-width:1px}.van-hairline--left::after{border-left-width:1px}.van-hairline--right::after{border-right-width:1px}.van-hairline--bottom::after{border-bottom-width:1px}.van-hairline--top-bottom::after{border-width:1px 0}.van-hairline--surround::after{border-width:1px}

+ 0 - 0
dist/common/style/mixins/clearfix.wxss


+ 0 - 0
dist/common/style/mixins/ellipsis.wxss


+ 0 - 0
dist/common/style/mixins/hairline.wxss


+ 0 - 0
dist/common/style/var.wxss


+ 18 - 0
dist/common/utils.js

@@ -0,0 +1,18 @@
+function isDef(value) {
+  return value !== undefined && value !== null;
+}
+
+function isObj(x) {
+  var type = typeof x;
+  return x !== null && (type === 'object' || type === 'function');
+}
+
+function isNumber(value) {
+  return /^\d+$/.test(value);
+}
+
+function range(num, min, max) {
+  return Math.min(Math.max(num, min), max);
+}
+
+export { isObj, isDef, isNumber, range };

+ 379 - 0
dist/datetime-picker/index.js

@@ -0,0 +1,379 @@
+import { VantComponent } from '../common/component';
+import { isDef } from '../common/utils';
+var currentYear = new Date().getFullYear();
+
+function isValidDate(date) {
+  return isDef(date) && !isNaN(new Date(date).getTime());
+}
+
+;
+
+function range(num, min, max) {
+  return Math.min(Math.max(num, min), max);
+}
+
+function padZero(val) {
+  return ("00" + val).slice(-2);
+}
+
+function times(n, iteratee) {
+  var index = -1;
+  var result = Array(n);
+
+  while (++index < n) {
+    result[index] = iteratee(index);
+  }
+
+  return result;
+}
+
+function getTrueValue(formattedValue) {
+  if (!formattedValue) return;
+
+  while (isNaN(parseInt(formattedValue, 10))) {
+    formattedValue = formattedValue.slice(1);
+  }
+
+  return parseInt(formattedValue, 10);
+}
+
+function getMonthEndDay(year, month) {
+  return 32 - new Date(year, month - 1, 32).getDate();
+}
+
+VantComponent({
+  props: {
+    value: null,
+    title: String,
+    loading: Boolean,
+    itemHeight: {
+      type: Number,
+      value: 44
+    },
+    visibleItemCount: {
+      type: Number,
+      value: 5
+    },
+    confirmButtonText: {
+      type: String,
+      value: '确认'
+    },
+    cancelButtonText: {
+      type: String,
+      value: '取消'
+    },
+    type: {
+      type: String,
+      value: 'datetime'
+    },
+    showToolbar: {
+      type: Boolean,
+      value: true
+    },
+    minDate: {
+      type: Number,
+      value: new Date(currentYear - 10, 0, 1).getTime()
+    },
+    maxDate: {
+      type: Number,
+      value: new Date(currentYear + 10, 11, 31).getTime()
+    },
+    minHour: {
+      type: Number,
+      value: 0
+    },
+    maxHour: {
+      type: Number,
+      value: 23
+    },
+    minMinute: {
+      type: Number,
+      value: 0
+    },
+    maxMinute: {
+      type: Number,
+      value: 59
+    }
+  },
+  data: {
+    pickerValue: [],
+    innerValue: Date.now()
+  },
+  computed: {
+    columns: function columns() {
+      var results = this.getRanges().map(function (_ref) {
+        var type = _ref.type,
+            range = _ref.range;
+        var values = times(range[1] - range[0] + 1, function (index) {
+          var value = range[0] + index;
+          value = type === 'year' ? "" + value : padZero(value);
+          return value;
+        });
+        return values;
+      });
+      return results;
+    }
+  },
+  watch: {
+    value: function value(val) {
+      var _this = this;
+
+      var data = this.data;
+      val = this.correctValue(val);
+      var isEqual = val === data.innerValue;
+
+      if (!isEqual) {
+        this.set({
+          innerValue: val
+        }, function () {
+          _this.updateColumnValue(val);
+
+          _this.$emit('input', val);
+        });
+      }
+    }
+  },
+  methods: {
+    getRanges: function getRanges() {
+      var data = this.data;
+
+      if (data.type === 'time') {
+        return [{
+          type: 'hour',
+          range: [data.minHour, data.maxHour]
+        }, {
+          type: 'minute',
+          range: [data.minMinute, data.maxMinute]
+        }];
+      }
+
+      var _this$getBoundary = this.getBoundary('max', data.innerValue),
+          maxYear = _this$getBoundary.maxYear,
+          maxDate = _this$getBoundary.maxDate,
+          maxMonth = _this$getBoundary.maxMonth,
+          maxHour = _this$getBoundary.maxHour,
+          maxMinute = _this$getBoundary.maxMinute;
+
+      var _this$getBoundary2 = this.getBoundary('min', data.innerValue),
+          minYear = _this$getBoundary2.minYear,
+          minDate = _this$getBoundary2.minDate,
+          minMonth = _this$getBoundary2.minMonth,
+          minHour = _this$getBoundary2.minHour,
+          minMinute = _this$getBoundary2.minMinute;
+
+      var result = [{
+        type: 'year',
+        range: [minYear, maxYear]
+      }, {
+        type: 'month',
+        range: [minMonth, maxMonth]
+      }, {
+        type: 'day',
+        range: [minDate, maxDate]
+      }, {
+        type: 'hour',
+        range: [minHour, maxHour]
+      }, {
+        type: 'minute',
+        range: [minMinute, maxMinute]
+      }];
+      if (data.type === 'date') result.splice(3, 2);
+      if (data.type === 'year-month') result.splice(2, 3);
+      return result;
+    },
+    correctValue: function correctValue(value) {
+      var data = this.data; // validate value
+
+      var isDateType = data.type !== 'time';
+
+      if (isDateType && !isValidDate(value)) {
+        value = data.minDate;
+      } else if (!isDateType && !value) {
+        var minHour = data.minHour;
+        value = padZero(minHour) + ":00";
+      } // time type
+
+
+      if (!isDateType) {
+        var _value$split = value.split(':'),
+            hour = _value$split[0],
+            minute = _value$split[1];
+
+        hour = padZero(range(hour, data.minHour, data.maxHour));
+        minute = padZero(range(minute, data.minMinute, data.maxMinute));
+        return hour + ":" + minute;
+      } // date type
+
+
+      value = Math.max(value, data.minDate);
+      value = Math.min(value, data.maxDate);
+      return value;
+    },
+    getBoundary: function getBoundary(type, innerValue) {
+      var value = new Date(innerValue);
+      var boundary = new Date(this.data[type + "Date"]);
+      var year = boundary.getFullYear();
+      var month = 1;
+      var date = 1;
+      var hour = 0;
+      var minute = 0;
+
+      if (type === 'max') {
+        month = 12;
+        date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);
+        hour = 23;
+        minute = 59;
+      }
+
+      if (value.getFullYear() === year) {
+        month = boundary.getMonth() + 1;
+
+        if (value.getMonth() + 1 === month) {
+          date = boundary.getDate();
+
+          if (value.getDate() === date) {
+            hour = boundary.getHours();
+
+            if (value.getHours() === hour) {
+              minute = boundary.getMinutes();
+            }
+          }
+        }
+      }
+
+      return {
+        [type + "Year"]: year,
+        [type + "Month"]: month,
+        [type + "Date"]: date,
+        [type + "Hour"]: hour,
+        [type + "Minute"]: minute
+      };
+    },
+    onCancel: function onCancel() {
+      this.$emit('cancel');
+    },
+    onConfirm: function onConfirm() {
+      this.$emit('confirm', this.data.innerValue);
+    },
+    onChange: function onChange(event) {
+      var _this2 = this;
+
+      var data = this.data;
+      var pickerValue = event.detail.value;
+      var values = pickerValue.slice(0, data.columns.length).map(function (value, index) {
+        return data.columns[index][value];
+      });
+      var value;
+
+      if (data.type === 'time') {
+        value = values.join(':');
+      } else {
+        var year = getTrueValue(values[0]);
+        var month = getTrueValue(values[1]);
+        var maxDate = getMonthEndDay(year, month);
+        var date = getTrueValue(values[2]);
+
+        if (data.type === 'year-month') {
+          date = 1;
+        }
+
+        date = date > maxDate ? maxDate : date;
+        var hour = 0;
+        var minute = 0;
+
+        if (data.type === 'datetime') {
+          hour = getTrueValue(values[3]);
+          minute = getTrueValue(values[4]);
+        }
+
+        value = new Date(year, month - 1, date, hour, minute);
+      }
+
+      value = this.correctValue(value);
+      this.set({
+        innerValue: value
+      }, function () {
+        _this2.updateColumnValue(value);
+
+        _this2.$emit('input', value);
+
+        _this2.$emit('change', _this2);
+      });
+    },
+    getColumnValue: function getColumnValue(index) {
+      return this.getValues()[index];
+    },
+    setColumnValue: function setColumnValue(index, value) {
+      var _this$data = this.data,
+          pickerValue = _this$data.pickerValue,
+          columns = _this$data.columns;
+      pickerValue[index] = columns[index].indexOf(value);
+      this.set({
+        pickerValue: pickerValue
+      });
+    },
+    getColumnValues: function getColumnValues(index) {
+      return this.data.columns[index];
+    },
+    setColumnValues: function setColumnValues(index, values) {
+      var columns = this.data.columns;
+      columns[index] = values;
+      this.set({
+        columns: columns
+      });
+    },
+    getValues: function getValues() {
+      var _this$data2 = this.data,
+          pickerValue = _this$data2.pickerValue,
+          columns = _this$data2.columns;
+      return pickerValue.map(function (value, index) {
+        return columns[index][value];
+      });
+    },
+    setValues: function setValues(values) {
+      var columns = this.data.columns;
+      this.set({
+        pickerValue: values.map(function (value, index) {
+          return columns[index].indexOf(value);
+        })
+      });
+    },
+    updateColumnValue: function updateColumnValue(value) {
+      var values = [];
+      var data = this.data;
+      var columns = data.columns;
+
+      if (data.type === 'time') {
+        var currentValue = value.split(':');
+        values = [columns[0].indexOf(currentValue[0]), columns[1].indexOf(currentValue[1])];
+      } else {
+        var date = new Date(value);
+        values = [columns[0].indexOf("" + date.getFullYear()), columns[1].indexOf(padZero(date.getMonth() + 1))];
+
+        if (data.type === 'date') {
+          values.push(columns[2].indexOf(padZero(date.getDate())));
+        }
+
+        if (data.type === 'datetime') {
+          values.push(columns[2].indexOf(padZero(date.getDate())), columns[3].indexOf(padZero(date.getHours())), columns[4].indexOf(padZero(date.getMinutes())));
+        }
+      }
+
+      this.set({
+        pickerValue: values
+      });
+    }
+  },
+  created: function created() {
+    var _this3 = this;
+
+    var innerValue = this.correctValue(this.data.value);
+    this.set({
+      innerValue: innerValue
+    }, function () {
+      _this3.updateColumnValue(innerValue);
+
+      _this3.$emit('input', innerValue);
+    });
+  }
+});

+ 6 - 0
dist/datetime-picker/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-loading": "../loading/index"
+  }
+}

+ 34 - 0
dist/datetime-picker/index.wxml

@@ -0,0 +1,34 @@
+<view class="van-picker">
+  <view wx:if="{{ showToolbar }}" class="van-picker__toolbar van-hairline--bottom">
+    <view class="van-picker__cancel" bindtap="onCancel">{{ cancelButtonText }}</view>
+    <view class="van-picker__title">{{ title }}</view>
+    <view class="van-picker__confirm" bindtap="onConfirm">{{ confirmButtonText }}</view>
+  </view>
+
+  <view wx:if="{{ loading }}" class="van-picker__loading">
+    <van-loading color="#1989fa"/>
+  </view>
+
+  <picker-view
+    indicator-style="height: {{ itemHeight }}px;"
+    style="width: 100%; height: {{ itemHeight * visibleItemCount + 'px' }}"
+    bindchange="onChange"
+    value="{{ pickerValue }}"
+    class="van-picker__columns"
+  >
+    <picker-view-column
+      wx:for="{{ columns }}"
+      wx:for-item="row"
+      wx:for-index="rowIndex"
+      wx:key="rowIndex"
+      class="van-picker-column"
+    >
+      <view
+        wx:for="{{ row }}"
+        wx:key="{{ item }}"
+        style="line-height: {{ itemHeight }}px;"
+        class="van-picker-column__item {{ index === pickerValue[rowIndex] ? 'van-picker-column__item--selected' : '' }}"
+      >{{ item }}</view>
+    </picker-view-column>
+  </picker-view>
+</view>

+ 1 - 0
dist/datetime-picker/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-picker{-webkit-text-size-adjust:100%;position:relative;overflow:hidden;background-color:#fff;-webkit-user-select:none;user-select:none}.van-picker__toolbar{display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;height:44px;line-height:44px}.van-picker__cancel,.van-picker__confirm{color:#1989fa;padding:0 15px;font-size:14px}.van-picker__cancel:active,.van-picker__confirm:active{background-color:#e8e8e8}.van-picker__title{max-width:50%;font-size:16px;font-weight:500;text-align:center}.van-picker__columns{position:relative}.van-picker__loading{display:-webkit-flex;display:flex;z-index:4;position:absolute;top:0;right:0;bottom:0;left:0;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;background-color:rgba(255,255,255,.9)}.van-picker-column{-webkit-flex:1;flex:1;overflow:hidden;font-size:16px;text-align:center}.van-picker-column__item{padding:0 5px;color:#999}.van-picker-column__item--selected{font-weight:500;color:#333}.van-picker-column__item--disabled{opacity:.3}

+ 76 - 0
dist/dialog/dialog.js

@@ -0,0 +1,76 @@
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+var queue = [];
+
+function getContext() {
+  var pages = getCurrentPages();
+  return pages[pages.length - 1];
+}
+
+var Dialog = function Dialog(options) {
+  options = _extends({}, Dialog.currentOptions, options);
+  return new Promise(function (resolve, reject) {
+    var context = options.context || getContext();
+    var dialog = context.selectComponent(options.selector);
+    delete options.selector;
+
+    if (dialog) {
+      dialog.set(_extends({
+        onCancel: reject,
+        onConfirm: resolve
+      }, options));
+      queue.push(dialog);
+    } else {
+      console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确');
+    }
+  });
+};
+
+Dialog.defaultOptions = {
+  show: true,
+  title: '',
+  message: '',
+  zIndex: 100,
+  overlay: true,
+  asyncClose: false,
+  messageAlign: '',
+  transition: 'scale',
+  selector: '#van-dialog',
+  confirmButtonText: '确认',
+  cancelButtonText: '取消',
+  showConfirmButton: true,
+  showCancelButton: false,
+  closeOnClickOverlay: false,
+  confirmButtonOpenType: ''
+};
+Dialog.alert = Dialog;
+
+Dialog.confirm = function (options) {
+  return Dialog(_extends({
+    showCancelButton: true
+  }, options));
+};
+
+Dialog.close = function () {
+  queue.forEach(function (dialog) {
+    dialog.close();
+  });
+  queue = [];
+};
+
+Dialog.stopLoading = function () {
+  queue.forEach(function (dialog) {
+    dialog.stopLoading();
+  });
+};
+
+Dialog.setDefaultOptions = function (options) {
+  Object.assign(Dialog.currentOptions, options);
+};
+
+Dialog.resetDefaultOptions = function () {
+  Dialog.currentOptions = _extends({}, Dialog.defaultOptions);
+};
+
+Dialog.resetDefaultOptions();
+export default Dialog;

+ 100 - 0
dist/dialog/index.js

@@ -0,0 +1,100 @@
+import { VantComponent } from '../common/component';
+import { openType } from '../mixins/open-type';
+VantComponent({
+  mixins: [openType],
+  props: {
+    show: Boolean,
+    title: String,
+    message: String,
+    useSlot: Boolean,
+    asyncClose: Boolean,
+    messageAlign: String,
+    showCancelButton: Boolean,
+    closeOnClickOverlay: Boolean,
+    confirmButtonOpenType: String,
+    zIndex: {
+      type: Number,
+      value: 100
+    },
+    confirmButtonText: {
+      type: String,
+      value: '确认'
+    },
+    cancelButtonText: {
+      type: String,
+      value: '取消'
+    },
+    showConfirmButton: {
+      type: Boolean,
+      value: true
+    },
+    overlay: {
+      type: Boolean,
+      value: true
+    },
+    transition: {
+      type: String,
+      value: 'scale'
+    }
+  },
+  data: {
+    loading: {
+      confirm: false,
+      cancel: false
+    }
+  },
+  watch: {
+    show: function show(_show) {
+      !_show && this.stopLoading();
+    }
+  },
+  methods: {
+    onConfirm: function onConfirm() {
+      this.handleAction('confirm');
+    },
+    onCancel: function onCancel() {
+      this.handleAction('cancel');
+    },
+    onClickOverlay: function onClickOverlay() {
+      this.onClose('overlay');
+    },
+    handleAction: function handleAction(action) {
+      if (this.data.asyncClose) {
+        this.set({
+          ["loading." + action]: true
+        });
+      }
+
+      this.onClose(action);
+    },
+    close: function close() {
+      this.set({
+        show: false
+      });
+    },
+    stopLoading: function stopLoading() {
+      this.set({
+        loading: {
+          confirm: false,
+          cancel: false
+        }
+      });
+    },
+    onClose: function onClose(action) {
+      if (!this.data.asyncClose) {
+        this.close();
+      }
+
+      this.$emit('close', action); //把 dialog 实例传递出去,可以通过 stopLoading() 在外部关闭按钮的 loading
+
+      this.$emit(action, {
+        dialog: this
+      });
+      var callback = this.data[action === 'confirm' ? 'onConfirm' : 'onCancel'];
+
+      if (callback) {
+        callback(this);
+      }
+    }
+  }
+});

+ 7 - 0
dist/dialog/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-popup": "../popup/index",
+    "van-button": "../button/index"
+  }
+}

+ 53 - 0
dist/dialog/index.wxml

@@ -0,0 +1,53 @@
+<van-popup
+  show="{{ show }}"
+  z-index="{{ zIndex }}"
+  overlay="{{ overlay }}"
+  custom-class="van-dialog"
+  transition="{{ transition }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:close="onClickOverlay"
+>
+  <view
+    wx:if="{{ title }}"
+    class="van-dialog__header {{ message || useSlot ? '' : 'van-dialog--isolated' }}"
+  >
+    {{ title }}
+  </view>
+
+  <slot wx:if="{{ useSlot }}" />
+  <view
+    wx:elif="{{ message }}"
+    class="van-dialog__message {{ title ? 'van-dialog__message--has-title' : '' }} {{ messageAlign ? 'van-dialog__message--' + messageAlign : '' }}"
+  >
+    <text>{{ message }}</text>
+  </view>
+
+  <view class="van-hairline--top van-dialog__footer">
+    <van-button
+      wx:if="{{ showCancelButton }}"
+      size="large"
+      loading="{{ loading.cancel }}"
+      class="van-dialog__button van-hairline--right"
+      custom-class="van-dialog__cancel"
+      bind:click="onCancel"
+    >
+      {{ cancelButtonText }}
+    </van-button>
+    <van-button
+      wx:if="{{ showConfirmButton }}"
+      size="large"
+      class="van-dialog__button"
+      loading="{{ loading.confirm }}"
+      custom-class="van-dialog__confirm"
+      open-type="{{ confirmButtonOpenType }}"
+      bind:click="onConfirm"
+      binderror="bindError"
+      bindcontact="bindContact"
+      bindopensetting="bindOpenSetting"
+      bindgetuserinfo="bindGetUserInfo"
+      bindgetphonenumber="bindGetPhoneNumber"
+    >
+      {{ confirmButtonText }}
+    </van-button>
+  </view>
+</van-popup>

+ 1 - 0
dist/dialog/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-dialog{width:85%;font-size:16px;overflow:hidden;border-radius:4px;background-color:#fff}.van-dialog__header{font-weight:500;padding-top:25px;text-align:center}.van-dialog__header--isolated{padding:25px 0}.van-dialog__message{padding:25px;font-size:14px;line-height:1.5;max-height:60vh;overflow-y:auto;text-align:center;-webkit-overflow-scrolling:touch}.van-dialog__message--has-title{padding-top:12px;color:#7d7e80}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{display:-webkit-flex;display:flex}.van-dialog__button{-webkit-flex:1;flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog__confirm,.van-dialog__confirm:active{color:#1989fa!important}.van-dialog-bounce-enter{opacity:0;-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7)}.van-dialog-bounce-leave-active{opacity:0;-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9)}

+ 139 - 0
dist/field/index.js

@@ -0,0 +1,139 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+  field: true,
+  classes: ['input-class'],
+  props: {
+    icon: String,
+    label: String,
+    error: Boolean,
+    fixed: Boolean,
+    focus: Boolean,
+    center: Boolean,
+    isLink: Boolean,
+    leftIcon: String,
+    disabled: Boolean,
+    autosize: Boolean,
+    readonly: Boolean,
+    required: Boolean,
+    iconClass: String,
+    clearable: Boolean,
+    inputAlign: String,
+    customClass: String,
+    confirmType: String,
+    confirmHold: Boolean,
+    errorMessage: String,
+    placeholder: String,
+    customStyle: String,
+    useIconSlot: Boolean,
+    useButtonSlot: Boolean,
+    showConfirmBar: {
+      type: Boolean,
+      value: true
+    },
+    placeholderStyle: String,
+    adjustPosition: {
+      type: Boolean,
+      value: true
+    },
+    cursorSpacing: {
+      type: Number,
+      value: 50
+    },
+    maxlength: {
+      type: Number,
+      value: -1
+    },
+    type: {
+      type: String,
+      value: 'text'
+    },
+    border: {
+      type: Boolean,
+      value: true
+    },
+    titleWidth: {
+      type: String,
+      value: '90px'
+    }
+  },
+  data: {
+    showClear: false
+  },
+  beforeCreate: function beforeCreate() {
+    this.focused = false;
+  },
+  methods: {
+    onInput: function onInput(event) {
+      var _this = this;
+
+      var _ref = event.detail || {},
+          _ref$value = _ref.value,
+          value = _ref$value === void 0 ? '' : _ref$value;
+
+      this.set({
+        value: value,
+        showClear: this.getShowClear(value)
+      }, function () {
+        _this.$emit('input', value);
+
+        _this.$emit('change', value);
+      });
+    },
+    onFocus: function onFocus(event) {
+      var _ref2 = event.detail || {},
+          _ref2$value = _ref2.value,
+          value = _ref2$value === void 0 ? '' : _ref2$value,
+          _ref2$height = _ref2.height,
+          height = _ref2$height === void 0 ? 0 : _ref2$height;
+
+      this.$emit('focus', {
+        value: value,
+        height: height
+      });
+      this.focused = true;
+      this.set({
+        showClear: this.getShowClear()
+      });
+    },
+    onBlur: function onBlur(event) {
+      var _ref3 = event.detail || {},
+          _ref3$value = _ref3.value,
+          value = _ref3$value === void 0 ? '' : _ref3$value,
+          _ref3$cursor = _ref3.cursor,
+          cursor = _ref3$cursor === void 0 ? 0 : _ref3$cursor;
+
+      this.$emit('blur', {
+        value: value,
+        cursor: cursor
+      });
+      this.focused = false;
+      this.set({
+        showClear: this.getShowClear()
+      });
+    },
+    onClickIcon: function onClickIcon() {
+      this.$emit('click-icon');
+    },
+    getShowClear: function getShowClear(value) {
+      value = value === undefined ? this.data.value : value;
+      return this.data.clearable && this.focused && value && !this.data.readonly;
+    },
+    onClear: function onClear() {
+      var _this2 = this;
+
+      this.set({
+        value: '',
+        showClear: this.getShowClear('')
+      }, function () {
+        _this2.$emit('input', '');
+
+        _this2.$emit('change', '');
+
+        _this2.$emit('clear', '');
+      });
+    },
+    onConfirm: function onConfirm() {
+      this.$emit('confirm', this.data.value);
+    }
+  }
+});

+ 7 - 0
dist/field/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-cell": "../cell/index",
+    "van-icon": "../icon/index"
+  }
+}

+ 81 - 0
dist/field/index.wxml

@@ -0,0 +1,81 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<van-cell
+  icon="{{ leftIcon }}"
+  title="{{ label }}"
+  center="{{ center }}"
+  border="{{ border }}"
+  is-link="{{ isLink }}"
+  required="{{ required }}"
+  custom-style="{{ customStyle }}"
+  title-width="{{ titleWidth }}"
+  custom-class="van-field"
+>
+  <slot name="left-icon" slot="icon" />
+  <slot name="label" slot="title" />
+  <view class="van-field__body {{ type === 'textarea' ? 'van-field__body--textarea' : '' }}">
+    <textarea
+      wx:if="{{ type === 'textarea' }}"
+      class="input-class {{ utils.bem('field__input', [inputAlign, { disabled, error }]) }}"
+      fixed="{{ fixed }}"
+      focus="{{ focus }}"
+      value="{{ value }}"
+      disabled="{{ disabled || readonly }}"
+      maxlength="{{ maxlength }}"
+      auto-height="{{ autosize }}"
+      placeholder="{{ placeholder }}"
+      placeholder-style="{{ placeholderStyle }}"
+      placeholder-class="{{ error ? 'van-field__input--error' : 'van-field__placeholder' }}"
+      cursor-spacing="{{ cursorSpacing }}"
+      adjust-position="{{ adjustPosition }}"
+      show-confirm-bar="{{ showConfirmBar }}"
+      bindinput="onInput"
+      bind:blur="onBlur"
+      bind:focus="onFocus"
+      bind:confirm="onConfirm"
+    />
+    <input
+      wx:else
+      class="input-class {{ utils.bem('field__input', [inputAlign, { disabled, error }]) }}"
+      type="{{ type }}"
+      focus="{{ focus }}"
+      value="{{ value }}"
+      disabled="{{ disabled || readonly }}"
+      maxlength="{{ maxlength }}"
+      placeholder="{{ placeholder }}"
+      placeholder-style="{{ placeholderStyle }}"
+      placeholder-class="{{ error ? 'van-field__input--error' : 'van-field__placeholder' }}"
+      confirm-type="{{ confirmType }}"
+      confirm-hold="{{ confirmHold }}"
+      cursor-spacing="{{ cursorSpacing }}"
+      adjust-position="{{ adjustPosition }}"
+      bindinput="onInput"
+      bind:blur="onBlur"
+      bind:focus="onFocus"
+      bind:confirm="onConfirm"
+    />
+    <van-icon
+      wx:if="{{ showClear }}"
+      size="16px"
+      name="clear"
+      class="van-field__clear-root"
+      custom-class="van-field__clear"
+      bind:touchstart="onClear"
+    />
+    <view class="van-field__icon-container" wx:if="{{ icon || useIconSlot }}" bind:tap="onClickIcon">
+      <van-icon
+        wx:if="{{ icon }}"
+        size="16px"
+        name="{{ icon }}"
+        custom-class="van-field__icon {{ iconClass }}"
+      />
+      <slot wx:else name="icon" />
+    </view>
+    <view wx:if="{{ useButtonSlot }}" class="van-field__button">
+      <slot name="button" />
+    </view>
+  </view>
+  <view wx:if="{{ errorMessage }}" class="van-field__error-message">
+    {{ errorMessage }}
+  </view>
+</van-cell>

+ 1 - 0
dist/field/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-field__body{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.van-field__body--textarea{min-height:24px}.van-field__input{border:0;margin:0;padding:0;width:100%;height:24px;resize:none;display:block;text-align:left;min-height:24px;color:#333;line-height:inherit;box-sizing:border-box;background-color:transparent}.van-field__input--disabled{opacity:1;color:#999;background-color:transparent}.van-field__input--center{text-align:center}.van-field__input--right{text-align:right}.van-field__input--error{color:#f44}.van-field__placeholder{color:#999}.van-field__clear-root{height:24px}.van-field__button,.van-field__clear,.van-field__icon-container{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear,.van-field__icon-container{padding:0 10px;line-height:inherit;margin-right:-10px;vertical-align:middle}.van-field__clear{color:#c9c9c9}.van-field__icon-container{color:#999}.van-field__icon{display:block!important}.van-field__button{padding-left:10px}.van-field__error-message{color:#f44;font-size:12px;text-align:left}

+ 22 - 0
dist/goods-action-button/index.js

@@ -0,0 +1,22 @@
+import { VantComponent } from '../common/component';
+import { link } from '../mixins/link';
+import { button } from '../mixins/button';
+import { openType } from '../mixins/open-type';
+VantComponent({
+  mixins: [link, button, openType],
+  props: {
+    text: String,
+    loading: Boolean,
+    disabled: Boolean,
+    type: {
+      type: String,
+      value: 'danger'
+    }
+  },
+  methods: {
+    onClick: function onClick(event) {
+      this.$emit('click', event.detail);
+      this.jumpLink();
+    }
+  }
+});

+ 6 - 0
dist/goods-action-button/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-button": "../button/index"
+  }
+}

+ 25 - 0
dist/goods-action-button/index.wxml

@@ -0,0 +1,25 @@
+<van-button
+  square
+  id="{{ id }}"
+  size="large"
+  lang="{{ lang }}"
+  type="{{ type }}"
+  loading="{{ loading }}"
+  disabled="{{ disabled }}"
+  open-type="{{ openType }}"
+  custom-class="custom-class"
+  session-from="{{ sessionFrom }}"
+  app-parameter="{{ appParameter }}"
+  send-message-img="{{ sendMessageImg }}"
+  send-message-path="{{ sendMessagePath }}"
+  show-message-card="{{ showMessageCard }}"
+  send-message-title="{{ sendMessageTitle }}"
+  bind:click="onClick"
+  binderror="bindError"
+  bindcontact="bindContact"
+  bindopensetting="bindOpenSetting"
+  bindgetuserinfo="bindGetUserInfo"
+  bindgetphonenumber="bindGetPhoneNumber"
+>
+  {{ text }}
+</van-button>

+ 1 - 0
dist/goods-action-button/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';:host{-webkit-flex:1;flex:1}

+ 18 - 0
dist/goods-action-icon/index.js

@@ -0,0 +1,18 @@
+import { VantComponent } from '../common/component';
+import { link } from '../mixins/link';
+import { button } from '../mixins/button';
+import { openType } from '../mixins/open-type';
+VantComponent({
+  mixins: [link, button, openType],
+  props: {
+    text: String,
+    info: String,
+    icon: String
+  },
+  methods: {
+    onClick: function onClick(event) {
+      this.$emit('click', event.detail);
+      this.jumpLink();
+    }
+  }
+});

+ 7 - 0
dist/goods-action-icon/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index",
+    "van-button": "../button/index"
+  }
+}

+ 32 - 0
dist/goods-action-icon/index.wxml

@@ -0,0 +1,32 @@
+<van-button
+  square
+  id="{{ id }}"
+  size="large"
+  lang="{{ lang }}"
+  loading="{{ loading }}"
+  disabled="{{ disabled }}"
+  open-type="{{ openType }}"
+  custom-class="van-goods-action-icon"
+  session-from="{{ sessionFrom }}"
+  app-parameter="{{ appParameter }}"
+  send-message-img="{{ sendMessageImg }}"
+  send-message-path="{{ sendMessagePath }}"
+  show-message-card="{{ showMessageCard }}"
+  send-message-title="{{ sendMessageTitle }}"
+  bind:click="onClick"
+  binderror="bindError"
+  bindcontact="bindContact"
+  bindopensetting="bindOpenSetting"
+  bindgetuserinfo="bindGetUserInfo"
+  bindgetphonenumber="bindGetPhoneNumber"
+>
+  <view class="van-goods-action-icon__content van-hairline--right">
+    <van-icon
+      size="20px"
+      name="{{ icon }}"
+      info="{{ info }}"
+      class="van-goods-action-icon__icon"
+    />
+    {{ text }}
+  </view>
+</van-button>

+ 1 - 0
dist/goods-action-icon/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-goods-action-icon{width:50px!important;border:none!important}.van-goods-action-icon__content{height:100%;display:-webkit-flex;display:flex;line-height:1;font-size:10px;color:#7d7e80;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center}.van-goods-action-icon__icon{margin-bottom:4px}

+ 5 - 0
dist/goods-action/index.js

@@ -0,0 +1,5 @@
+import { VantComponent } from '../common/component';
+import { iphonex } from '../mixins/iphonex';
+VantComponent({
+  mixins: [iphonex]
+});

+ 3 - 0
dist/goods-action/index.json

@@ -0,0 +1,3 @@
+{
+  "component": true
+}

+ 5 - 0
dist/goods-action/index.wxml

@@ -0,0 +1,5 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="custom-class {{ utils.bem('goods-action', { safe: isIPhoneX && safeAreaInsetBottom }) }}">
+  <slot />
+</view>

部分文件因文件數量過多而無法顯示