├── pages
├── post-my
│ ├── post-my.wxss
│ ├── post-my.json
│ ├── post-my.wxml
│ └── post-my.js
├── about
│ ├── about.json
│ ├── about.wxss
│ ├── about.js
│ └── about.wxml
├── index
│ ├── index.json
│ ├── index.wxss
│ ├── index.js
│ └── index.wxml
├── post
│ ├── post.json
│ ├── post.wxss
│ ├── post.wxml
│ └── post.js
├── detail
│ ├── detail.json
│ ├── detail.wxss
│ ├── detail.wxml
│ └── detail.js
├── gallery
│ ├── gallery.json
│ ├── gallery.wxss
│ ├── gallery.wxml
│ └── gallery.js
├── post-new
│ ├── post-new.wxss
│ ├── post-new.json
│ ├── post-new.wxml
│ └── post-new.js
├── profile
│ ├── profile.json
│ ├── profile.js
│ ├── profile.wxss
│ └── profile.wxml
├── assistant
│ ├── assistant.json
│ ├── assistant.wxss
│ ├── assistant.wxml
│ └── assistant.js
├── feedback
│ ├── feedback.json
│ ├── feedback.wxss
│ ├── feedback.wxml
│ └── feedback.js
└── post-detail
│ ├── post-detail.json
│ ├── post-detail.wxss
│ ├── post-detail.wxml
│ └── post-detail.js
├── content.wxss
├── README.md
├── icons
├── home.png
├── discuss.png
├── setting.png
├── assistant.png
├── discuss_hover.png
├── assistant_hover.png
├── home_highlight.png
└── setting_highlight.png
├── jsconfig.json
├── .vscode
└── settings.json
├── project.config.json
├── wxParser
├── elements.js
├── utils.js
├── index.js
├── codeTransformation.js
├── index.wxss
├── htmlparser.js
├── html2json.js
└── index.wxml
├── app.wxss
├── app.js
├── app.json
├── LICENSE
├── style
└── weui.wxss
└── utils
└── sdk-v1.0.9.js
/pages/post-my/post-my.wxss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/pages/about/about.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "关于我们"
3 | }
--------------------------------------------------------------------------------
/pages/index/index.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "首页"
3 | }
--------------------------------------------------------------------------------
/pages/post/post.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "服务中心"
3 | }
--------------------------------------------------------------------------------
/pages/detail/detail.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "详细页"
3 | }
--------------------------------------------------------------------------------
/pages/gallery/gallery.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "印象苏研"
3 | }
--------------------------------------------------------------------------------
/pages/post-my/post-my.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "我的服务"
3 | }
--------------------------------------------------------------------------------
/pages/post-new/post-new.wxss:
--------------------------------------------------------------------------------
1 | .weui-uploader{
2 | padding:0 15px;
3 | }
--------------------------------------------------------------------------------
/pages/profile/profile.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "我的"
3 | }
--------------------------------------------------------------------------------
/content.wxss:
--------------------------------------------------------------------------------
1 | .wxParser{
2 | padding:10px;
3 | line-height:20px;
4 | }
--------------------------------------------------------------------------------
/pages/assistant/assistant.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "助手"
3 | }
--------------------------------------------------------------------------------
/pages/feedback/feedback.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "意见反馈"
3 | }
--------------------------------------------------------------------------------
/pages/post-new/post-new.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "发布服务"
3 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # suyanxiaomishu
2 | 公司内部一个小秘书微信小程序,可以提供展示公司新闻和公告,租房、二手买卖,图书借阅等功能。
3 |
--------------------------------------------------------------------------------
/pages/post-detail/post-detail.json:
--------------------------------------------------------------------------------
1 | {
2 | "navigationBarTitleText": "详细页"
3 | }
--------------------------------------------------------------------------------
/icons/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/home.png
--------------------------------------------------------------------------------
/icons/discuss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/discuss.png
--------------------------------------------------------------------------------
/icons/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/setting.png
--------------------------------------------------------------------------------
/icons/assistant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/assistant.png
--------------------------------------------------------------------------------
/icons/discuss_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/discuss_hover.png
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2015",
4 | "module": "commonjs"
5 | }
6 | }
--------------------------------------------------------------------------------
/icons/assistant_hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/assistant_hover.png
--------------------------------------------------------------------------------
/icons/home_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/home_highlight.png
--------------------------------------------------------------------------------
/pages/detail/detail.wxss:
--------------------------------------------------------------------------------
1 | .news-title{
2 | text-align:center;
3 | font-size:20px;
4 | line-height:30px;
5 | }
--------------------------------------------------------------------------------
/icons/setting_highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuxingyun/suyanxiaomishu/HEAD/icons/setting_highlight.png
--------------------------------------------------------------------------------
/pages/post-detail/post-detail.wxss:
--------------------------------------------------------------------------------
1 | .news-title{
2 | text-align:center;
3 | font-size:20px;
4 | line-height:30px;
5 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.associations": {
3 | "*.wxml": "html",
4 | "*.wxss": "css"
5 | }
6 | }
--------------------------------------------------------------------------------
/pages/post/post.wxss:
--------------------------------------------------------------------------------
1 | .active .weui-grid__label{
2 | color:#1296db;
3 | }
4 | .active{
5 | background-color:#fff;
6 | border:1px solid #1296db;
7 | }
--------------------------------------------------------------------------------
/pages/profile/profile.js:
--------------------------------------------------------------------------------
1 | var app = getApp();
2 | Page({
3 | data: {
4 | title: 'V1.0.0',
5 | profile: null,
6 | },
7 |
8 | onLoad(options) {
9 |
10 | this.setData({
11 | profile: app.getUserInfo()
12 | })
13 | }
14 | })
--------------------------------------------------------------------------------
/pages/about/about.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .userinfo {
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .userinfo-avatar {
9 | width: 128rpx;
10 | height: 128rpx;
11 | margin: 20rpx;
12 | border-radius: 50%;
13 | }
14 |
15 | .userinfo-nickname {
16 | color: #aaa;
17 | }
18 |
19 | .usermotto {
20 | margin-top: 200px;
21 | }
--------------------------------------------------------------------------------
/pages/feedback/feedback.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .userinfo {
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .userinfo-avatar {
9 | width: 128rpx;
10 | height: 128rpx;
11 | margin: 20rpx;
12 | border-radius: 50%;
13 | }
14 |
15 | .userinfo-nickname {
16 | color: #aaa;
17 | }
18 |
19 | .usermotto {
20 | margin-top: 200px;
21 | }
--------------------------------------------------------------------------------
/pages/gallery/gallery.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .userinfo {
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .userinfo-avatar {
9 | width: 128rpx;
10 | height: 128rpx;
11 | margin: 20rpx;
12 | border-radius: 50%;
13 | }
14 |
15 | .userinfo-nickname {
16 | color: #aaa;
17 | }
18 |
19 | .usermotto {
20 | margin-top: 200px;
21 | }
--------------------------------------------------------------------------------
/pages/profile/profile.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .userinfo {
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .userinfo-avatar {
9 | width: 128rpx;
10 | height: 128rpx;
11 | margin: 20rpx;
12 | border-radius: 50%;
13 | }
14 |
15 | .userinfo-nickname {
16 | color: #aaa;
17 | }
18 |
19 | .usermotto {
20 | margin-top: 200px;
21 | }
--------------------------------------------------------------------------------
/pages/assistant/assistant.wxss:
--------------------------------------------------------------------------------
1 | /**index.wxss**/
2 | .userinfo {
3 | display: flex;
4 | flex-direction: column;
5 | align-items: center;
6 | }
7 |
8 | .userinfo-avatar {
9 | width: 128rpx;
10 | height: 128rpx;
11 | margin: 20rpx;
12 | border-radius: 50%;
13 | }
14 |
15 | .userinfo-nickname {
16 | color: #aaa;
17 | }
18 |
19 | .usermotto {
20 | margin-top: 200px;
21 | }
--------------------------------------------------------------------------------
/pages/post-detail/post-detail.wxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
98 | // tagName: p
99 | // attrsStr: style="text-align: center; " width="100"
100 |
101 | tagName = tagName.toLowerCase();
102 |
103 | let isUnary = elements.empty[tagName] || unary;
104 |
105 | // 空标签、自闭和标签、特殊标签不需要进 stack
106 | if (!isUnary && !elements.closeSelf[tagName] && !elements.special[tagName]) {
107 | stack.push(tagName);
108 | }
109 |
110 | if (handler.start && !elements.special[tagName]) {
111 | let attrs = [];
112 |
113 | attrsStr.replace(attrReg, function (match, name, value) {
114 |
115 | if (elements.fillAttrs[name]) {
116 | value = name;
117 | }
118 |
119 | attrs.push({
120 | name: name,
121 | value: value || '',
122 | });
123 | });
124 |
125 | handler.start(tagName, attrs, isUnary);
126 |
127 | }
128 | }
129 |
130 | /**
131 | * 解析结束标签
132 | * @param {String} match 匹配结果
133 | * @param {String} tagName 标签名称
134 | */
135 | function parseEndTag(match, tagName) {
136 | if (!tagName) {
137 | return;
138 | }
139 |
140 | // 找到最近同种类型的未关闭标签的位置
141 | tagName = tagName.toLowerCase();
142 | let closestOpenedTagPos = -1;
143 | for (let pos = stack.length - 1; pos >= 0; pos--) {
144 | if (stack[pos] == tagName) {
145 | closestOpenedTagPos = pos;
146 | break;
147 | }
148 | }
149 |
150 | if (closestOpenedTagPos >= 0) {
151 | if (handler.end) {
152 | handler.end(stack[closestOpenedTagPos]);
153 | }
154 | // 处理后从 stack 中移除该标签
155 | stack.length = closestOpenedTagPos;
156 | }
157 | }
158 | };
159 |
160 | module.exports = {
161 | parseHtml
162 | };
163 |
--------------------------------------------------------------------------------
/wxParser/html2json.js:
--------------------------------------------------------------------------------
1 | const utils = require('./utils');
2 | const elements = require('./elements');
3 | const codeTransformation = require('./codeTransformation');
4 | const htmlParser = require('./htmlparser');
5 |
6 | /**
7 | * 移除文档头信息
8 | * @param {String} str HTML 内容
9 | * @return {String}
10 | */
11 | const removeDOCTYPE = (str) => {
12 | return str.replace(/<\?xml.*\?>\n/, '').replace(/<.*!doctype.*\>\n/, '').replace(/<.*!DOCTYPE.*\>\n/, '');
13 | };
14 |
15 | /**
16 | * HTML 内容转化为 JSON 格式的对象
17 | * @param {String} html HTML 内容
18 | * @param {String} bindName 绑定的数据名
19 | * @return {Object}
20 | */
21 | const html2json = (html, bindName) => {
22 | html = removeDOCTYPE(html);
23 | html = codeTransformation.transform(html);
24 |
25 | // 节点缓冲区,与 htmlparser.js 中的 stack 对应,只存储非自闭和标签
26 | // 比如 ,而非 等
27 | let bufferNodes = [];
28 | let nodeStyles = [];
29 | // html2json 结果
30 | let results = {
31 | nodes: [],
32 | images: [],
33 | imageUrls: []
34 | };
35 |
36 | /**
37 | * 把节点放到父节点的 nodes 列表
38 | * @param {Object} node 节点对象
39 | */
40 | const putNode2ParentNodeList = (node) => {
41 | if (bufferNodes.length === 0) { // 表明关闭此 node 时,不存在任何未关闭标签,也就是不存在父元素,所以直接挂到根节点即可
42 | results.nodes.push(node);
43 | } else {
44 | // 如果节点缓冲区还有节点,子节点会不断的被放到该子节点的父节点下,形成一个嵌套引用的节点对象。
45 | // 直到缓冲区没有节点,此时组装起来的整个嵌套引用节点对象会被放到根节点的 results.nodes 下
46 | let parent = bufferNodes[0]; // 取该 node 的父级节点
47 | if (parent.nodes === undefined) {
48 | parent.nodes = [];
49 | }
50 | parent.nodes.push(node);
51 | }
52 | };
53 |
54 | // 开始解析 HTML
55 | // 核心思路:
56 | // 1、遇到开始标签时,如果该标签是非自闭合标签,就把该节点存到缓存区(入栈),
57 | // 如果是自闭合标签、空标签等就直接存到根节点下(因为这种几点没有子节点)。
58 | // 2、当遇到文本时(文本也是节点),判断缓冲区是否还有节点,如果有,证明该节点有父节点,
59 | // 需要把此节点放到父节点的 nodes 列表,如果没有,则证明该节点没有父节点了,放到根节点即可。
60 | // 3、当遇到结束标签时,就从缓存区取出第一个节点(出栈),比较是否与该结束标签对应,
61 | // 如果不对应,证明逻辑出错。如果对应,则判断缓冲区是否还有节点,如果有,证明该节点有父节点,
62 | // 需要把此节点放到父节点的 nodes 列表,如果没有,则证明该节点没有父节点了,放到根节点即可。
63 | //
64 | // 总体来说,就是一个进栈出栈(节点缓冲区)的算法问题。
65 | htmlParser.parseHtml(html, {
66 | /**
67 | * 处理开始标签
68 | * @param {String} tag 标签名称
69 | * @param {Array} attrs 属性
70 | * @param {Boolean} isUnary 是否是自闭合标签
71 | */
72 | start: function (tag, attrs, isUnary) {
73 | let node = {
74 | node: 'element',
75 | tag: tag
76 | };
77 |
78 | if (elements.block[tag]) {
79 | node.tagType = 'block';
80 | } else if (elements.inline[tag]) {
81 | node.tagType = 'inline';
82 | } else if (elements.closeSelf[tag]) {
83 | node.tagType = 'closeSelf';
84 | }
85 |
86 | nodeStyles = [];
87 |
88 | if (attrs.length) {
89 | node.attr = {};
90 | attrs.map((item) => {
91 | if (item.name === 'style') { // 对 style 做单独处理,因为后面会根据 tag 添加更多的 style
92 | if (nodeStyles.indexOf(item.value) === -1) {
93 | nodeStyles.push(item.value);
94 | }
95 | }
96 | if (item.name === 'color') {
97 | nodeStyles.push('color: ' + item.value);
98 | }
99 | if (node.tag === 'font' && item.name === 'size') {
100 | nodeStyles.push('font-size: ' + utils.getFontSizeByAttribsSize(item.value));
101 | }
102 |
103 | // 特殊属性做转换
104 | if (item.name === 'class') {
105 | node.classStr = item.value;
106 | }
107 |
108 | node.attr[item.name] = item.value; // 重复的属性,后面的会覆盖前面的
109 | });
110 |
111 | node.styleStr = nodeStyles.join(' ');
112 | }
113 |
114 | // img 标签 添加额外数据
115 | if (node.tag === 'img') {
116 | node.imgIndex = results.images.length;
117 | node.from = bindName;
118 |
119 | results.images.push(node);
120 | results.imageUrls.push(node.attr.src);
121 | }
122 |
123 | if (isUnary) {
124 | // 自闭合标签,比如
125 | // 这种类型不会进入 end 函数或者 text 函数处理,在 start 函数放入到父元素的 nodes 列表即可
126 | putNode2ParentNodeList(node);
127 | } else {
128 | // 只要有非自闭&标签就往缓冲区保存节点,等待关闭
129 | bufferNodes.unshift(node);
130 | }
131 | },
132 | /**
133 | * 处理关闭标签
134 | * @param {String} tag 标签名称
135 | */
136 | end: function (tag) {
137 | let node = bufferNodes.shift(); // 取出缓冲区的第一个的未关闭标签,也就是与该结束标签对应的标签
138 |
139 | if (node.tag !== tag) {
140 | throw new Error('不匹配的关闭标签');
141 | }
142 |
143 | putNode2ParentNodeList(node);
144 | },
145 | /**
146 | * 处理文本内容
147 | * @param {String} text 文本字符串
148 | */
149 | text: function (text) {
150 | let node = {
151 | node: 'text',
152 | text: text,
153 | };
154 |
155 | putNode2ParentNodeList(node);
156 | },
157 | /**
158 | * 处理评论内容
159 | * @param {String} content 注释内容
160 | */
161 | comment: function (content) {},
162 | });
163 |
164 | return results;
165 |
166 | };
167 |
168 | module.exports = {
169 | html2json
170 | };
171 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright {yyyy} {name of copyright owner}
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/style/weui.wxss:
--------------------------------------------------------------------------------
1 | page {
2 | line-height: 1.6;
3 | font-family: -apple-system-font, "Helvetica Neue", sans-serif;
4 | }
5 | icon {
6 | vertical-align: middle;
7 | }
8 | .weui-cells {
9 | position: relative;
10 | margin-top: 1.17647059em;
11 | background-color: #FFFFFF;
12 | line-height: 1.41176471;
13 | font-size: 17px;
14 | }
15 | .weui-cells:before {
16 | content: " ";
17 | position: absolute;
18 | left: 0;
19 | top: 0;
20 | right: 0;
21 | height: 1px;
22 | border-top: 1rpx solid #D9D9D9;
23 | color: #D9D9D9;
24 | }
25 | .weui-cells:after {
26 | content: " ";
27 | position: absolute;
28 | left: 0;
29 | bottom: 0;
30 | right: 0;
31 | height: 1px;
32 | border-bottom: 1rpx solid #D9D9D9;
33 | color: #D9D9D9;
34 | }
35 | .weui-cells__title {
36 | margin-top: .77em;
37 | margin-bottom: .3em;
38 | padding-left: 15px;
39 | padding-right: 15px;
40 | color: #999999;
41 | font-size: 14px;
42 | }
43 | .weui-cells_after-title {
44 | margin-top: 0;
45 | }
46 | .weui-cells__tips {
47 | margin-top: .3em;
48 | color: #999999;
49 | padding-left: 15px;
50 | padding-right: 15px;
51 | font-size: 14px;
52 | }
53 | .weui-cell {
54 | padding: 10px 15px;
55 | position: relative;
56 | display: -webkit-box;
57 | display: -webkit-flex;
58 | display: flex;
59 | -webkit-box-align: center;
60 | -webkit-align-items: center;
61 | align-items: center;
62 | }
63 | .weui-cell:before {
64 | content: " ";
65 | position: absolute;
66 | left: 0;
67 | top: 0;
68 | right: 0;
69 | height: 1px;
70 | border-top: 1rpx solid #D9D9D9;
71 | color: #D9D9D9;
72 | left: 15px;
73 | }
74 | .weui-cell:first-child:before {
75 | display: none;
76 | }
77 | .weui-cell_active {
78 | background-color: #ECECEC;
79 | }
80 | .weui-cell_primary {
81 | -webkit-box-align: start;
82 | -webkit-align-items: flex-start;
83 | align-items: flex-start;
84 | }
85 | .weui-cell__bd {
86 | -webkit-box-flex: 1;
87 | -webkit-flex: 1;
88 | flex: 1;
89 | }
90 | .weui-cell__ft {
91 | text-align: right;
92 | color: #999999;
93 | }
94 | .weui-cell_access {
95 | color: inherit;
96 | }
97 | .weui-cell__ft_in-access {
98 | padding-right: 13px;
99 | position: relative;
100 | }
101 | .weui-cell__ft_in-access:after {
102 | content: " ";
103 | display: inline-block;
104 | height: 6px;
105 | width: 6px;
106 | border-width: 2px 2px 0 0;
107 | border-color: #C8C8CD;
108 | border-style: solid;
109 | -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
110 | transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
111 | position: relative;
112 | top: -2px;
113 | position: absolute;
114 | top: 50%;
115 | margin-top: -4px;
116 | right: 2px;
117 | }
118 | .weui-cell_link {
119 | color: #586C94;
120 | font-size: 14px;
121 | }
122 | .weui-cell_link:active {
123 | background-color: #ECECEC;
124 | }
125 | .weui-cell_link:first-child:before {
126 | display: block;
127 | }
128 | .weui-icon-radio {
129 | margin-left: 3.2px;
130 | margin-right: 3.2px;
131 | }
132 | .weui-icon-checkbox_circle,
133 | .weui-icon-checkbox_success {
134 | margin-left: 4.6px;
135 | margin-right: 4.6px;
136 | }
137 | .weui-check__label:active {
138 | background-color: #ECECEC;
139 | }
140 | .weui-check {
141 | position: absolute;
142 | left: -9999px;
143 | }
144 | .weui-check__hd_in-checkbox {
145 | padding-right: 0.35em;
146 | }
147 | .weui-cell__ft_in-radio {
148 | padding-left: 0.35em;
149 | }
150 | .weui-cell_input {
151 | padding-top: 0;
152 | padding-bottom: 0;
153 | }
154 | .weui-label {
155 | width: 105px;
156 | word-wrap: break-word;
157 | word-break: break-all;
158 | }
159 | .weui-input {
160 | height: 2.58823529em;
161 | min-height: 2.58823529em;
162 | line-height: 2.58823529em;
163 | }
164 | .weui-toptips {
165 | position: fixed;
166 | -webkit-transform: translateZ(0);
167 | transform: translateZ(0);
168 | top: 0;
169 | left: 0;
170 | right: 0;
171 | padding: 5px;
172 | font-size: 14px;
173 | text-align: center;
174 | color: #FFFFFF;
175 | z-index: 5000;
176 | word-wrap: break-word;
177 | word-break: break-all;
178 | }
179 | .weui-toptips_warn {
180 | background-color: #E64340;
181 | }
182 | .weui-textarea {
183 | display: block;
184 | width: 100%;
185 | }
186 | .weui-textarea-counter {
187 | color: #B2B2B2;
188 | text-align: right;
189 | }
190 | .weui-textarea-counter_warn {
191 | color: #E64340;
192 | }
193 | .weui-cell_warn {
194 | color: #E64340;
195 | }
196 | .weui-form-preview {
197 | position: relative;
198 | background-color: #FFFFFF;
199 | }
200 | .weui-form-preview:before {
201 | content: " ";
202 | position: absolute;
203 | left: 0;
204 | top: 0;
205 | right: 0;
206 | height: 1px;
207 | border-top: 1rpx solid #D9D9D9;
208 | color: #D9D9D9;
209 | }
210 | .weui-form-preview:after {
211 | content: " ";
212 | position: absolute;
213 | left: 0;
214 | bottom: 0;
215 | right: 0;
216 | height: 1px;
217 | border-bottom: 1rpx solid #D9D9D9;
218 | color: #D9D9D9;
219 | }
220 | .weui-form-preview__value {
221 | font-size: 14px;
222 | }
223 | .weui-form-preview__value_in-hd {
224 | font-size: 26px;
225 | }
226 | .weui-form-preview__hd {
227 | position: relative;
228 | padding: 10px 15px;
229 | text-align: right;
230 | line-height: 2.5em;
231 | }
232 | .weui-form-preview__hd:after {
233 | content: " ";
234 | position: absolute;
235 | left: 0;
236 | bottom: 0;
237 | right: 0;
238 | height: 1px;
239 | border-bottom: 1rpx solid #D9D9D9;
240 | color: #D9D9D9;
241 | left: 15px;
242 | }
243 | .weui-form-preview__bd {
244 | padding: 10px 15px;
245 | font-size: .9em;
246 | text-align: right;
247 | color: #999999;
248 | line-height: 2;
249 | }
250 | .weui-form-preview__ft {
251 | position: relative;
252 | line-height: 50px;
253 | display: -webkit-box;
254 | display: -webkit-flex;
255 | display: flex;
256 | }
257 | .weui-form-preview__ft:after {
258 | content: " ";
259 | position: absolute;
260 | left: 0;
261 | top: 0;
262 | right: 0;
263 | height: 1px;
264 | border-top: 1rpx solid #D5D5D6;
265 | color: #D5D5D6;
266 | }
267 | .weui-form-preview__item {
268 | overflow: hidden;
269 | }
270 | .weui-form-preview__label {
271 | float: left;
272 | margin-right: 1em;
273 | min-width: 4em;
274 | color: #999999;
275 | text-align: justify;
276 | text-align-last: justify;
277 | }
278 | .weui-form-preview__value {
279 | display: block;
280 | overflow: hidden;
281 | word-break: normal;
282 | word-wrap: break-word;
283 | }
284 | .weui-form-preview__btn {
285 | position: relative;
286 | display: block;
287 | -webkit-box-flex: 1;
288 | -webkit-flex: 1;
289 | flex: 1;
290 | color: #3CC51F;
291 | text-align: center;
292 | }
293 | .weui-form-preview__btn:after {
294 | content: " ";
295 | position: absolute;
296 | left: 0;
297 | top: 0;
298 | width: 1px;
299 | bottom: 0;
300 | border-left: 1rpx solid #D5D5D6;
301 | color: #D5D5D6;
302 | }
303 | .weui-form-preview__btn:first-child:after {
304 | display: none;
305 | }
306 | .weui-form-preview__btn_active {
307 | background-color: #EEEEEE;
308 | }
309 | .weui-form-preview__btn_default {
310 | color: #999999;
311 | }
312 | .weui-form-preview__btn_primary {
313 | color: #0BB20C;
314 | }
315 | .weui-cell_select {
316 | padding: 0;
317 | }
318 | .weui-select {
319 | position: relative;
320 | padding-left: 15px;
321 | padding-right: 30px;
322 | height: 2.58823529em;
323 | min-height: 2.58823529em;
324 | line-height: 2.58823529em;
325 | border-right: 1rpx solid #D9D9D9;
326 | }
327 | .weui-select:before {
328 | content: " ";
329 | display: inline-block;
330 | height: 6px;
331 | width: 6px;
332 | border-width: 2px 2px 0 0;
333 | border-color: #C8C8CD;
334 | border-style: solid;
335 | -webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
336 | transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
337 | position: relative;
338 | top: -2px;
339 | position: absolute;
340 | top: 50%;
341 | right: 15px;
342 | margin-top: -4px;
343 | }
344 | .weui-select_in-select-after {
345 | padding-left: 0;
346 | }
347 | .weui-cell__hd_in-select-after,
348 | .weui-cell__bd_in-select-before {
349 | padding-left: 15px;
350 | }
351 | .weui-cell_vcode {
352 | padding-right: 0;
353 | }
354 | .weui-vcode-img {
355 | margin-left: 5px;
356 | height: 2.58823529em;
357 | vertical-align: middle;
358 | }
359 | .weui-vcode-btn {
360 | display: inline-block;
361 | height: 2.58823529em;
362 | margin-left: 5px;
363 | padding: 0 0.6em 0 0.7em;
364 | border-left: 1px solid #E5E5E5;
365 | line-height: 2.58823529em;
366 | vertical-align: middle;
367 | font-size: 17px;
368 | color: #3CC51F;
369 | white-space: nowrap;
370 | }
371 | .weui-vcode-btn:active {
372 | color: #52a341;
373 | }
374 | .weui-cell_switch {
375 | padding-top: 6px;
376 | padding-bottom: 6px;
377 | }
378 | .weui-uploader__hd {
379 | display: -webkit-box;
380 | display: -webkit-flex;
381 | display: flex;
382 | padding-bottom: 10px;
383 | -webkit-box-align: center;
384 | -webkit-align-items: center;
385 | align-items: center;
386 | }
387 | .weui-uploader__title {
388 | -webkit-box-flex: 1;
389 | -webkit-flex: 1;
390 | flex: 1;
391 | }
392 | .weui-uploader__info {
393 | color: #B2B2B2;
394 | }
395 | .weui-uploader__bd {
396 | margin-bottom: -4px;
397 | margin-right: -9px;
398 | overflow: hidden;
399 | }
400 | .weui-uploader__file {
401 | float: left;
402 | margin-right: 9px;
403 | margin-bottom: 9px;
404 | }
405 | .weui-uploader__img {
406 | display: block;
407 | width: 79px;
408 | height: 79px;
409 | }
410 | .weui-uploader__file_status {
411 | position: relative;
412 | }
413 | .weui-uploader__file_status:before {
414 | content: " ";
415 | position: absolute;
416 | top: 0;
417 | right: 0;
418 | bottom: 0;
419 | left: 0;
420 | background-color: rgba(0, 0, 0, 0.5);
421 | }
422 | .weui-uploader__file-content {
423 | position: absolute;
424 | top: 50%;
425 | left: 50%;
426 | -webkit-transform: translate(-50%, -50%);
427 | transform: translate(-50%, -50%);
428 | color: #FFFFFF;
429 | }
430 | .weui-uploader__input-box {
431 | float: left;
432 | position: relative;
433 | margin-right: 9px;
434 | margin-bottom: 9px;
435 | width: 77px;
436 | height: 77px;
437 | border: 1px solid #D9D9D9;
438 | }
439 | .weui-uploader__input-box:before,
440 | .weui-uploader__input-box:after {
441 | content: " ";
442 | position: absolute;
443 | top: 50%;
444 | left: 50%;
445 | -webkit-transform: translate(-50%, -50%);
446 | transform: translate(-50%, -50%);
447 | background-color: #D9D9D9;
448 | }
449 | .weui-uploader__input-box:before {
450 | width: 2px;
451 | height: 39.5px;
452 | }
453 | .weui-uploader__input-box:after {
454 | width: 39.5px;
455 | height: 2px;
456 | }
457 | .weui-uploader__input-box:active {
458 | border-color: #999999;
459 | }
460 | .weui-uploader__input-box:active:before,
461 | .weui-uploader__input-box:active:after {
462 | background-color: #999999;
463 | }
464 | .weui-uploader__input {
465 | position: absolute;
466 | z-index: 1;
467 | top: 0;
468 | left: 0;
469 | width: 100%;
470 | height: 100%;
471 | opacity: 0;
472 | }
473 | .weui-article {
474 | padding: 20px 15px;
475 | font-size: 15px;
476 | }
477 | .weui-article__section {
478 | margin-bottom: 1.5em;
479 | }
480 | .weui-article__h1 {
481 | font-size: 18px;
482 | font-weight: 400;
483 | margin-bottom: .9em;
484 | }
485 | .weui-article__h2 {
486 | font-size: 16px;
487 | font-weight: 400;
488 | margin-bottom: .34em;
489 | }
490 | .weui-article__h3 {
491 | font-weight: 400;
492 | font-size: 15px;
493 | margin-bottom: .34em;
494 | }
495 | .weui-article__p {
496 | margin: 0 0 .8em;
497 | }
498 | .weui-msg {
499 | padding-top: 36px;
500 | text-align: center;
501 | }
502 | .weui-msg__link {
503 | display: inline;
504 | color: #586C94;
505 | }
506 | .weui-msg__icon-area {
507 | margin-bottom: 30px;
508 | }
509 | .weui-msg__text-area {
510 | margin-bottom: 25px;
511 | padding: 0 20px;
512 | }
513 | .weui-msg__title {
514 | margin-bottom: 5px;
515 | font-weight: 400;
516 | font-size: 20px;
517 | }
518 | .weui-msg__desc {
519 | font-size: 14px;
520 | color: #999999;
521 | }
522 | .weui-msg__opr-area {
523 | margin-bottom: 25px;
524 | }
525 | .weui-msg__extra-area {
526 | margin-bottom: 15px;
527 | font-size: 14px;
528 | color: #999999;
529 | }
530 | @media screen and (min-height: 438px) {
531 | .weui-msg__extra-area {
532 | position: fixed;
533 | left: 0;
534 | bottom: 0;
535 | width: 100%;
536 | text-align: center;
537 | }
538 | }
539 | .weui-flex {
540 | display: -webkit-box;
541 | display: -webkit-flex;
542 | display: flex;
543 | }
544 | .weui-flex__item {
545 | -webkit-box-flex: 1;
546 | -webkit-flex: 1;
547 | flex: 1;
548 | }
549 | .weui-btn {
550 | margin-top: 15px;
551 | }
552 | .weui-btn:first-child {
553 | margin-top: 0;
554 | }
555 | .weui-btn-area {
556 | margin: 1.17647059em 15px 0.3em;
557 | }
558 | .weui-agree {
559 | display: block;
560 | padding: .5em 15px;
561 | font-size: 13px;
562 | }
563 | .weui-agree__text {
564 | color: #999999;
565 | }
566 | .weui-agree__link {
567 | display: inline;
568 | color: #586C94;
569 | }
570 | .weui-agree__checkbox {
571 | position: absolute;
572 | left: -9999px;
573 | }
574 | .weui-agree__checkbox-icon {
575 | position: relative;
576 | top: 2px;
577 | display: inline-block;
578 | border: 1px solid #D1D1D1;
579 | background-color: #FFFFFF;
580 | border-radius: 3px;
581 | width: 11px;
582 | height: 11px;
583 | }
584 | .weui-agree__checkbox-icon-check {
585 | position: absolute;
586 | top: 1px;
587 | left: 1px;
588 | }
589 | .weui-footer {
590 | color: #999999;
591 | font-size: 14px;
592 | text-align: center;
593 | }
594 | .weui-footer_fixed-bottom {
595 | position: fixed;
596 | bottom: .52em;
597 | left: 0;
598 | right: 0;
599 | }
600 | .weui-footer__links {
601 | font-size: 0;
602 | }
603 | .weui-footer__link {
604 | display: inline-block;
605 | vertical-align: top;
606 | margin: 0 .62em;
607 | position: relative;
608 | font-size: 14px;
609 | color: #586C94;
610 | }
611 | .weui-footer__link:before {
612 | content: " ";
613 | position: absolute;
614 | left: 0;
615 | top: 0;
616 | width: 1px;
617 | bottom: 0;
618 | border-left: 1rpx solid #C7C7C7;
619 | color: #C7C7C7;
620 | left: -0.65em;
621 | top: .36em;
622 | bottom: .36em;
623 | }
624 | .weui-footer__link:first-child:before {
625 | display: none;
626 | }
627 | .weui-footer__text {
628 | padding: 0 .34em;
629 | font-size: 12px;
630 | }
631 | .weui-grids {
632 | border-top: 1rpx solid #D9D9D9;
633 | border-left: 1rpx solid #D9D9D9;
634 | overflow: hidden;
635 | }
636 | .weui-grid {
637 | position: relative;
638 | float: left;
639 | padding: 20px 10px;
640 | width: 33.33333333%;
641 | box-sizing: border-box;
642 | border-right: 1rpx solid #D9D9D9;
643 | border-bottom: 1rpx solid #D9D9D9;
644 | }
645 | .weui-grid_active {
646 | background-color: #ECECEC;
647 | }
648 | .weui-grid__icon {
649 | display: block;
650 | width: 28px;
651 | height: 28px;
652 | margin: 0 auto;
653 | }
654 | .weui-grid__label {
655 | margin-top: 5px;
656 | display: block;
657 | text-align: center;
658 | color: #000000;
659 | font-size: 14px;
660 | white-space: nowrap;
661 | text-overflow: ellipsis;
662 | overflow: hidden;
663 | }
664 | .weui-loading {
665 | margin: 0 5px;
666 | width: 20px;
667 | height: 20px;
668 | display: inline-block;
669 | vertical-align: middle;
670 | -webkit-animation: weuiLoading 1s steps(12, end) infinite;
671 | animation: weuiLoading 1s steps(12, end) infinite;
672 | background: transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTTAgMGgxMDB2MTAwSDB6Ii8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTlFOUU5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTMwKSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iIzk4OTY5NyIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgzMCAxMDUuOTggNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjOUI5OTlBIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDYwIDc1Ljk4IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0EzQTFBMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSg5MCA2NSA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNBQkE5QUEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDU4LjY2IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0IyQjJCMiIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgxNTAgNTQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjQkFCOEI5IiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDMkMwQzEiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTE1MCA0NS45OCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNDQkNCQ0IiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTEyMCA0MS4zNCA2NSkiLz48cmVjdCB3aWR0aD0iNyIgaGVpZ2h0PSIyMCIgeD0iNDYuNSIgeT0iNDAiIGZpbGw9IiNEMkQyRDIiIHJ4PSI1IiByeT0iNSIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwIDM1IDY1KSIvPjxyZWN0IHdpZHRoPSI3IiBoZWlnaHQ9IjIwIiB4PSI0Ni41IiB5PSI0MCIgZmlsbD0iI0RBREFEQSIgcng9IjUiIHJ5PSI1IiB0cmFuc2Zvcm09InJvdGF0ZSgtNjAgMjQuMDIgNjUpIi8+PHJlY3Qgd2lkdGg9IjciIGhlaWdodD0iMjAiIHg9IjQ2LjUiIHk9IjQwIiBmaWxsPSIjRTJFMkUyIiByeD0iNSIgcnk9IjUiIHRyYW5zZm9ybT0icm90YXRlKC0zMCAtNS45OCA2NSkiLz48L3N2Zz4=) no-repeat;
673 | background-size: 100%;
674 | }
675 | .weui-loading.weui-loading_transparent {
676 | background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E");
677 | }
678 | @-webkit-keyframes weuiLoading {
679 | 0% {
680 | -webkit-transform: rotate3d(0, 0, 1, 0deg);
681 | transform: rotate3d(0, 0, 1, 0deg);
682 | }
683 | 100% {
684 | -webkit-transform: rotate3d(0, 0, 1, 360deg);
685 | transform: rotate3d(0, 0, 1, 360deg);
686 | }
687 | }
688 | @keyframes weuiLoading {
689 | 0% {
690 | -webkit-transform: rotate3d(0, 0, 1, 0deg);
691 | transform: rotate3d(0, 0, 1, 0deg);
692 | }
693 | 100% {
694 | -webkit-transform: rotate3d(0, 0, 1, 360deg);
695 | transform: rotate3d(0, 0, 1, 360deg);
696 | }
697 | }
698 | .weui-badge {
699 | display: inline-block;
700 | padding: .15em .4em;
701 | min-width: 8px;
702 | border-radius: 18px;
703 | background-color: #E64340;
704 | color: #FFFFFF;
705 | line-height: 1.2;
706 | text-align: center;
707 | font-size: 12px;
708 | vertical-align: middle;
709 | }
710 | .weui-badge_dot {
711 | padding: .4em;
712 | min-width: 0;
713 | }
714 | .weui-loadmore {
715 | width: 65%;
716 | margin: 1.5em auto;
717 | line-height: 1.6em;
718 | font-size: 14px;
719 | text-align: center;
720 | }
721 | .weui-loadmore__tips {
722 | display: inline-block;
723 | vertical-align: middle;
724 | }
725 | .weui-loadmore_line {
726 | border-top: 1px solid #E5E5E5;
727 | margin-top: 2.4em;
728 | }
729 | .weui-loadmore__tips_in-line {
730 | position: relative;
731 | top: -0.9em;
732 | padding: 0 .55em;
733 | background-color: #FFFFFF;
734 | color: #999999;
735 | }
736 | .weui-loadmore__tips_in-dot {
737 | position: relative;
738 | padding: 0 .16em;
739 | width: 4px;
740 | height: 1.6em;
741 | }
742 | .weui-loadmore__tips_in-dot:before {
743 | content: " ";
744 | position: absolute;
745 | top: 50%;
746 | left: 50%;
747 | margin-top: -1px;
748 | margin-left: -2px;
749 | width: 4px;
750 | height: 4px;
751 | border-radius: 50%;
752 | background-color: #E5E5E5;
753 | }
754 | .weui-panel {
755 | background-color: #FFFFFF;
756 | margin-top: 10px;
757 | position: relative;
758 | overflow: hidden;
759 | }
760 | .weui-panel:first-child {
761 | margin-top: 0;
762 | }
763 | .weui-panel:before {
764 | content: " ";
765 | position: absolute;
766 | left: 0;
767 | top: 0;
768 | right: 0;
769 | height: 1px;
770 | border-top: 1rpx solid #E5E5E5;
771 | color: #E5E5E5;
772 | }
773 | .weui-panel:after {
774 | content: " ";
775 | position: absolute;
776 | left: 0;
777 | bottom: 0;
778 | right: 0;
779 | height: 1px;
780 | border-bottom: 1rpx solid #E5E5E5;
781 | color: #E5E5E5;
782 | }
783 | .weui-panel__hd {
784 | padding: 14px 15px 10px;
785 | color: #999999;
786 | font-size: 13px;
787 | position: relative;
788 | }
789 | .weui-panel__hd:after {
790 | content: " ";
791 | position: absolute;
792 | left: 0;
793 | bottom: 0;
794 | right: 0;
795 | height: 1px;
796 | border-bottom: 1rpx solid #E5E5E5;
797 | color: #E5E5E5;
798 | left: 15px;
799 | }
800 | .weui-media-box {
801 | padding: 15px;
802 | position: relative;
803 | }
804 | .weui-media-box:before {
805 | content: " ";
806 | position: absolute;
807 | left: 0;
808 | top: 0;
809 | right: 0;
810 | height: 1px;
811 | border-top: 1rpx solid #E5E5E5;
812 | color: #E5E5E5;
813 | left: 15px;
814 | }
815 | .weui-media-box:first-child:before {
816 | display: none;
817 | }
818 | .weui-media-box__title {
819 | font-weight: 400;
820 | font-size: 17px;
821 | width: auto;
822 | overflow: hidden;
823 | text-overflow: ellipsis;
824 | white-space: nowrap;
825 | word-wrap: normal;
826 | word-wrap: break-word;
827 | word-break: break-all;
828 | }
829 | .weui-media-box__desc {
830 | color: #999999;
831 | font-size: 13px;
832 | line-height: 1.2;
833 | overflow: hidden;
834 | text-overflow: ellipsis;
835 | display: -webkit-box;
836 | -webkit-box-orient: vertical;
837 | -webkit-line-clamp: 2;
838 | }
839 | .weui-media-box__info {
840 | margin-top: 15px;
841 | padding-bottom: 5px;
842 | font-size: 13px;
843 | color: #CECECE;
844 | line-height: 1em;
845 | list-style: none;
846 | overflow: hidden;
847 | }
848 | .weui-media-box__info__meta {
849 | float: left;
850 | padding-right: 1em;
851 | font-size:0.8em;
852 | }
853 | .weui-media-box__info__meta_extra {
854 | padding-left: 1em;
855 | border-left: 1px solid #CECECE;
856 | }
857 | .weui-media-box__title_in-text {
858 | margin-bottom: 8px;
859 | }
860 | .weui-media-box_appmsg {
861 | display: -webkit-box;
862 | display: -webkit-flex;
863 | display: flex;
864 | -webkit-box-align: center;
865 | -webkit-align-items: center;
866 | align-items: center;
867 | }
868 | .weui-media-box__thumb {
869 | width: 100%;
870 | height: 100%;
871 | vertical-align: top;
872 | }
873 | .weui-media-box__hd_in-appmsg {
874 | margin-right: .8em;
875 | width: 60px;
876 | height: 60px;
877 | line-height: 60px;
878 | text-align: center;
879 | }
880 | .weui-media-box__bd_in-appmsg {
881 | -webkit-box-flex: 1;
882 | -webkit-flex: 1;
883 | flex: 1;
884 | min-width: 0;
885 | }
886 | .weui-media-box_small-appmsg {
887 | padding: 0;
888 | }
889 | .weui-cells_in-small-appmsg {
890 | margin-top: 0;
891 | }
892 | .weui-cells_in-small-appmsg:before {
893 | display: none;
894 | }
895 | .weui-progress {
896 | display: -webkit-box;
897 | display: -webkit-flex;
898 | display: flex;
899 | -webkit-box-align: center;
900 | -webkit-align-items: center;
901 | align-items: center;
902 | }
903 | .weui-progress__bar {
904 | -webkit-box-flex: 1;
905 | -webkit-flex: 1;
906 | flex: 1;
907 | }
908 | .weui-progress__opr {
909 | margin-left: 15px;
910 | font-size: 0;
911 | }
912 | .weui-navbar {
913 | display: -webkit-box;
914 | display: -webkit-flex;
915 | display: flex;
916 | position: absolute;
917 | z-index: 500;
918 | top: 0;
919 | width: 100%;
920 | border-bottom: 1rpx solid #CCCCCC;
921 | }
922 | .weui-navbar__item {
923 | position: relative;
924 | display: block;
925 | -webkit-box-flex: 1;
926 | -webkit-flex: 1;
927 | flex: 1;
928 | padding: 13px 0;
929 | text-align: center;
930 | font-size: 0;
931 | }
932 | .weui-navbar__item.weui-bar__item_on {
933 | color: #1AAD19;
934 | }
935 | .weui-navbar__slider {
936 | position: absolute;
937 | content: " ";
938 | left: 0;
939 | bottom: 0;
940 | width: 6em;
941 | height: 3px;
942 | background-color: #1AAD19;
943 | -webkit-transition: -webkit-transform .3s;
944 | transition: -webkit-transform .3s;
945 | transition: transform .3s;
946 | transition: transform .3s, -webkit-transform .3s;
947 | }
948 | .weui-navbar__title {
949 | display: inline-block;
950 | font-size: 15px;
951 | max-width: 8em;
952 | width: auto;
953 | overflow: hidden;
954 | text-overflow: ellipsis;
955 | white-space: nowrap;
956 | word-wrap: normal;
957 | }
958 | .weui-tab {
959 | position: relative;
960 | height: 100%;
961 | }
962 | .weui-tab__panel {
963 | box-sizing: border-box;
964 | height: 100%;
965 | padding-top: 50px;
966 | overflow: auto;
967 | -webkit-overflow-scrolling: touch;
968 | }
969 | .weui-search-bar {
970 | position: relative;
971 | padding: 8px 10px;
972 | display: -webkit-box;
973 | display: -webkit-flex;
974 | display: flex;
975 | box-sizing: border-box;
976 | background-color: #EFEFF4;
977 | border-top: 1rpx solid #D7D6DC;
978 | border-bottom: 1rpx solid #D7D6DC;
979 | }
980 | .weui-icon-search {
981 | margin-right: 8px;
982 | font-size: inherit;
983 | }
984 | .weui-icon-search_in-box {
985 | position: absolute;
986 | left: 10px;
987 | top: 7px;
988 | }
989 | .weui-search-bar__text {
990 | display: inline-block;
991 | font-size: 14px;
992 | vertical-align: middle;
993 | }
994 | .weui-search-bar__form {
995 | position: relative;
996 | -webkit-box-flex: 1;
997 | -webkit-flex: auto;
998 | flex: auto;
999 | border-radius: 5px;
1000 | background: #FFFFFF;
1001 | border: 1rpx solid #E6E6EA;
1002 | }
1003 | .weui-search-bar__box {
1004 | position: relative;
1005 | padding-left: 30px;
1006 | padding-right: 30px;
1007 | width: 100%;
1008 | box-sizing: border-box;
1009 | z-index: 1;
1010 | }
1011 | .weui-search-bar__input {
1012 | height: 28px;
1013 | line-height: 28px;
1014 | font-size: 14px;
1015 | }
1016 | .weui-icon-clear {
1017 | position: absolute;
1018 | top: 0;
1019 | right: 0;
1020 | padding: 7px 8px;
1021 | font-size: 0;
1022 | }
1023 | .weui-search-bar__label {
1024 | position: absolute;
1025 | top: 0;
1026 | right: 0;
1027 | bottom: 0;
1028 | left: 0;
1029 | z-index: 2;
1030 | border-radius: 3px;
1031 | text-align: center;
1032 | color: #9B9B9B;
1033 | background: #FFFFFF;
1034 | line-height: 28px;
1035 | }
1036 | .weui-search-bar__cancel-btn {
1037 | margin-left: 10px;
1038 | line-height: 28px;
1039 | color: #09BB07;
1040 | white-space: nowrap;
1041 | }
1042 |
--------------------------------------------------------------------------------
/utils/sdk-v1.0.9.js:
--------------------------------------------------------------------------------
1 | !function t(e,n,r){function o(u,a){if(!n[u]){if(!e[u]){var s="function"==typeof require&&require;if(!a&&s)return s(u,!0);if(i)return i(u,!0);var c=new Error("Cannot find module '"+u+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[u]={exports:{}};e[u][0].call(f.exports,function(t){var n=e[u][1][t];return o(n||t)},f,f.exports,t,e,n,r)}return n[u].exports}for(var i="function"==typeof require&&require,u=0;u