11b31c5e by simon

1.表单功能

2.打点统计
1 parent 1c64b1c0
1 module.exports = { 1 // module.exports = {
2 root: true, 2 // root: true,
3 parserOptions: { 3 // parserOptions: {
4 parser: 'babel-eslint', 4 // parser: 'babel-eslint',
5 sourceType: 'module' 5 // sourceType: 'module'
6 }, 6 // },
7 env: { 7 // env: {
8 browser: true, 8 // browser: true,
9 node: true, 9 // node: true,
10 es6: true, 10 // es6: true,
11 }, 11 // },
12 extends: ['plugin:vue/recommended', 'eslint:recommended'], 12 // extends: ['plugin:vue/recommended', 'eslint:recommended'],
13 13
14 // add your custom rules here 14 // // add your custom rules here
15 //it is base on https://github.com/vuejs/eslint-config-vue 15 // //it is base on https://github.com/vuejs/eslint-config-vue
16 rules: { 16 // rules: {
17 "vue/max-attributes-per-line": [2, { 17 // "vue/max-attributes-per-line": [2, {
18 "singleline": 10, 18 // "singleline": 10,
19 "multiline": { 19 // "multiline": {
20 "max": 1, 20 // "max": 1,
21 "allowFirstLine": false 21 // "allowFirstLine": false
22 } 22 // }
23 }], 23 // }],
24 "vue/name-property-casing": ["error", "PascalCase"], 24 // "vue/name-property-casing": ["error", "PascalCase"],
25 'accessor-pairs': 2, 25 // 'accessor-pairs': 2,
26 'arrow-spacing': [2, { 26 // 'arrow-spacing': [2, {
27 'before': true, 27 // 'before': true,
28 'after': true 28 // 'after': true
29 }], 29 // }],
30 'block-spacing': [2, 'always'], 30 // 'block-spacing': [2, 'always'],
31 'brace-style': [2, '1tbs', { 31 // 'brace-style': [2, '1tbs', {
32 'allowSingleLine': true 32 // 'allowSingleLine': true
33 }], 33 // }],
34 'camelcase': [0, { 34 // 'camelcase': [0, {
35 'properties': 'always' 35 // 'properties': 'always'
36 }], 36 // }],
37 'comma-dangle': [2, 'never'], 37 // 'comma-dangle': [2, 'never'],
38 'comma-spacing': [2, { 38 // 'comma-spacing': [2, {
39 'before': false, 39 // 'before': false,
40 'after': true 40 // 'after': true
41 }], 41 // }],
42 'comma-style': [2, 'last'], 42 // 'comma-style': [2, 'last'],
43 'constructor-super': 2, 43 // 'constructor-super': 2,
44 'curly': [2, 'multi-line'], 44 // 'curly': [2, 'multi-line'],
45 'dot-location': [2, 'property'], 45 // 'dot-location': [2, 'property'],
46 'eol-last': 2, 46 // 'eol-last': 2,
47 'eqeqeq': [2, 'allow-null'], 47 // 'eqeqeq': [2, 'allow-null'],
48 'generator-star-spacing': [2, { 48 // 'generator-star-spacing': [2, {
49 'before': true, 49 // 'before': true,
50 'after': true 50 // 'after': true
51 }], 51 // }],
52 'handle-callback-err': [2, '^(err|error)$'], 52 // 'handle-callback-err': [2, '^(err|error)$'],
53 'indent': [2, 2, { 53 // 'indent': [2, 2, {
54 'SwitchCase': 1 54 // 'SwitchCase': 1
55 }], 55 // }],
56 'jsx-quotes': [2, 'prefer-single'], 56 // 'jsx-quotes': [2, 'prefer-single'],
57 'key-spacing': [2, { 57 // 'key-spacing': [2, {
58 'beforeColon': false, 58 // 'beforeColon': false,
59 'afterColon': true 59 // 'afterColon': true
60 }], 60 // }],
61 'keyword-spacing': [2, { 61 // 'keyword-spacing': [2, {
62 'before': true, 62 // 'before': true,
63 'after': true 63 // 'after': true
64 }], 64 // }],
65 'new-cap': [2, { 65 // 'new-cap': [2, {
66 'newIsCap': true, 66 // 'newIsCap': true,
67 'capIsNew': false 67 // 'capIsNew': false
68 }], 68 // }],
69 'new-parens': 2, 69 // 'new-parens': 2,
70 'no-array-constructor': 2, 70 // 'no-array-constructor': 2,
71 'no-caller': 2, 71 // 'no-caller': 2,
72 'no-console': 'off', 72 // 'no-console': 'off',
73 'no-class-assign': 2, 73 // 'no-class-assign': 2,
74 'no-cond-assign': 2, 74 // 'no-cond-assign': 2,
75 'no-const-assign': 2, 75 // 'no-const-assign': 2,
76 'no-control-regex': 2, 76 // 'no-control-regex': 2,
77 'no-delete-var': 2, 77 // 'no-delete-var': 2,
78 'no-dupe-args': 2, 78 // 'no-dupe-args': 2,
79 'no-dupe-class-members': 2, 79 // 'no-dupe-class-members': 2,
80 'no-dupe-keys': 2, 80 // 'no-dupe-keys': 2,
81 'no-duplicate-case': 2, 81 // 'no-duplicate-case': 2,
82 'no-empty-character-class': 2, 82 // 'no-empty-character-class': 2,
83 'no-empty-pattern': 2, 83 // 'no-empty-pattern': 2,
84 'no-eval': 2, 84 // 'no-eval': 2,
85 'no-ex-assign': 2, 85 // 'no-ex-assign': 2,
86 'no-extend-native': 2, 86 // 'no-extend-native': 2,
87 'no-extra-bind': 2, 87 // 'no-extra-bind': 2,
88 'no-extra-boolean-cast': 2, 88 // 'no-extra-boolean-cast': 2,
89 'no-extra-parens': [2, 'functions'], 89 // 'no-extra-parens': [2, 'functions'],
90 'no-fallthrough': 2, 90 // 'no-fallthrough': 2,
91 'no-floating-decimal': 2, 91 // 'no-floating-decimal': 2,
92 'no-func-assign': 2, 92 // 'no-func-assign': 2,
93 'no-implied-eval': 2, 93 // 'no-implied-eval': 2,
94 'no-inner-declarations': [2, 'functions'], 94 // 'no-inner-declarations': [2, 'functions'],
95 'no-invalid-regexp': 2, 95 // 'no-invalid-regexp': 2,
96 'no-irregular-whitespace': 2, 96 // 'no-irregular-whitespace': 2,
97 'no-iterator': 2, 97 // 'no-iterator': 2,
98 'no-label-var': 2, 98 // 'no-label-var': 2,
99 'no-labels': [2, { 99 // 'no-labels': [2, {
100 'allowLoop': false, 100 // 'allowLoop': false,
101 'allowSwitch': false 101 // 'allowSwitch': false
102 }], 102 // }],
103 'no-lone-blocks': 2, 103 // 'no-lone-blocks': 2,
104 'no-mixed-spaces-and-tabs': 2, 104 // 'no-mixed-spaces-and-tabs': 2,
105 'no-multi-spaces': 2, 105 // 'no-multi-spaces': 2,
106 'no-multi-str': 2, 106 // 'no-multi-str': 2,
107 'no-multiple-empty-lines': [2, { 107 // 'no-multiple-empty-lines': [2, {
108 'max': 1 108 // 'max': 1
109 }], 109 // }],
110 'no-native-reassign': 2, 110 // 'no-native-reassign': 2,
111 'no-negated-in-lhs': 2, 111 // 'no-negated-in-lhs': 2,
112 'no-new-object': 2, 112 // 'no-new-object': 2,
113 'no-new-require': 2, 113 // 'no-new-require': 2,
114 'no-new-symbol': 2, 114 // 'no-new-symbol': 2,
115 'no-new-wrappers': 2, 115 // 'no-new-wrappers': 2,
116 'no-obj-calls': 2, 116 // 'no-obj-calls': 2,
117 'no-octal': 2, 117 // 'no-octal': 2,
118 'no-octal-escape': 2, 118 // 'no-octal-escape': 2,
119 'no-path-concat': 2, 119 // 'no-path-concat': 2,
120 'no-proto': 2, 120 // 'no-proto': 2,
121 'no-redeclare': 2, 121 // 'no-redeclare': 2,
122 'no-regex-spaces': 2, 122 // 'no-regex-spaces': 2,
123 'no-return-assign': [2, 'except-parens'], 123 // 'no-return-assign': [2, 'except-parens'],
124 'no-self-assign': 2, 124 // 'no-self-assign': 2,
125 'no-self-compare': 2, 125 // 'no-self-compare': 2,
126 'no-sequences': 2, 126 // 'no-sequences': 2,
127 'no-shadow-restricted-names': 2, 127 // 'no-shadow-restricted-names': 2,
128 'no-spaced-func': 2, 128 // 'no-spaced-func': 2,
129 'no-sparse-arrays': 2, 129 // 'no-sparse-arrays': 2,
130 'no-this-before-super': 2, 130 // 'no-this-before-super': 2,
131 'no-throw-literal': 2, 131 // 'no-throw-literal': 2,
132 'no-trailing-spaces': 2, 132 // 'no-trailing-spaces': 2,
133 'no-undef': 2, 133 // 'no-undef': 2,
134 'no-undef-init': 2, 134 // 'no-undef-init': 2,
135 'no-unexpected-multiline': 2, 135 // 'no-unexpected-multiline': 2,
136 'no-unmodified-loop-condition': 2, 136 // 'no-unmodified-loop-condition': 2,
137 'no-unneeded-ternary': [2, { 137 // 'no-unneeded-ternary': [2, {
138 'defaultAssignment': false 138 // 'defaultAssignment': false
139 }], 139 // }],
140 'no-unreachable': 2, 140 // 'no-unreachable': 2,
141 'no-unsafe-finally': 2, 141 // 'no-unsafe-finally': 2,
142 'no-unused-vars': [2, { 142 // 'no-unused-vars': [2, {
143 'vars': 'all', 143 // 'vars': 'all',
144 'args': 'none' 144 // 'args': 'none'
145 }], 145 // }],
146 'no-useless-call': 2, 146 // 'no-useless-call': 2,
147 'no-useless-computed-key': 2, 147 // 'no-useless-computed-key': 2,
148 'no-useless-constructor': 2, 148 // 'no-useless-constructor': 2,
149 'no-useless-escape': 0, 149 // 'no-useless-escape': 0,
150 'no-whitespace-before-property': 2, 150 // 'no-whitespace-before-property': 2,
151 'no-with': 2, 151 // 'no-with': 2,
152 'one-var': [2, { 152 // 'one-var': [2, {
153 'initialized': 'never' 153 // 'initialized': 'never'
154 }], 154 // }],
155 'operator-linebreak': [2, 'after', { 155 // 'operator-linebreak': [2, 'after', {
156 'overrides': { 156 // 'overrides': {
157 '?': 'before', 157 // '?': 'before',
158 ':': 'before' 158 // ':': 'before'
159 } 159 // }
160 }], 160 // }],
161 'padded-blocks': [2, 'never'], 161 // 'padded-blocks': [2, 'never'],
162 'quotes': [2, 'single', { 162 // 'quotes': [2, 'single', {
163 'avoidEscape': true, 163 // 'avoidEscape': true,
164 'allowTemplateLiterals': true 164 // 'allowTemplateLiterals': true
165 }], 165 // }],
166 'semi': [2, 'never'], 166 // 'semi': [2, 'never'],
167 'semi-spacing': [2, { 167 // 'semi-spacing': [2, {
168 'before': false, 168 // 'before': false,
169 'after': true 169 // 'after': true
170 }], 170 // }],
171 'space-before-blocks': [2, 'always'], 171 // 'space-before-blocks': [2, 'always'],
172 'space-before-function-paren': [2, 'never'], 172 // 'space-before-function-paren': [2, 'never'],
173 'space-in-parens': [2, 'never'], 173 // 'space-in-parens': [2, 'never'],
174 'space-infix-ops': 2, 174 // 'space-infix-ops': 2,
175 'space-unary-ops': [2, { 175 // 'space-unary-ops': [2, {
176 'words': true, 176 // 'words': true,
177 'nonwords': false 177 // 'nonwords': false
178 }], 178 // }],
179 'spaced-comment': [2, 'always', { 179 // 'spaced-comment': [2, 'always', {
180 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] 180 // 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
181 }], 181 // }],
182 'template-curly-spacing': [2, 'never'], 182 // 'template-curly-spacing': [2, 'never'],
183 'use-isnan': 2, 183 // 'use-isnan': 2,
184 'valid-typeof': 2, 184 // 'valid-typeof': 2,
185 'wrap-iife': [2, 'any'], 185 // 'wrap-iife': [2, 'any'],
186 'yield-star-spacing': [2, 'both'], 186 // 'yield-star-spacing': [2, 'both'],
187 'yoda': [2, 'never'], 187 // 'yoda': [2, 'never'],
188 'prefer-const': 2, 188 // 'prefer-const': 2,
189 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 189 // 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
190 'object-curly-spacing': [2, 'always', { 190 // 'object-curly-spacing': [2, 'always', {
191 objectsInObjects: false 191 // objectsInObjects: false
192 }], 192 // }],
193 'array-bracket-spacing': [2, 'never'] 193 // 'array-bracket-spacing': [2, 'never']
194 } 194 // }
195 } 195 // }
196 196
......
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3
4 <head>
4 <meta charset="utf-8"> 5 <meta charset="utf-8">
5 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0">
6 <title>天宝公众号</title> 7 <title>天宝公众号</title>
7 </head> 8 </head>
8 <body> 9
10 <body>
11
12 <script src="./static/js/weixin-1.1.0.js"></script>
13 <script src="./static/js/hdp-4.4.0.min.js"></script>
14 <script src="./static/js/as.js"></script>
9 <div id="app"></div> 15 <div id="app"></div>
10 <!-- built files will be auto injected --> 16 <!-- built files will be auto injected -->
11 </body> 17 </body>
18
12 </html> 19 </html>
......
...@@ -9,3 +9,66 @@ export default { ...@@ -9,3 +9,66 @@ export default {
9 name: 'App' 9 name: 'App'
10 } 10 }
11 </script> 11 </script>
12
13
14
15 <style lang="scss">
16 // @import "./styles/common";
17 // @import "./styles/vars";
18 body {
19 margin: 0px;
20 padding: 0px;
21 // background: @color-primary;
22 // font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
23 // Microsoft YaHei, SimSun, sans-serif;
24 // font-size: 14px;
25 // -webkit-font-smoothing: antialiased;
26 }
27
28 #app {
29 position: absolute;
30 top: 0px;
31 bottom: 0px;
32 width: 100%;
33 }
34
35 .el-submenu [class^="fa"] {
36 vertical-align: baseline;
37 margin-right: 10px;
38 }
39
40 .el-menu-item [class^="fa"] {
41 vertical-align: baseline;
42 margin-right: 10px;
43 }
44
45 .toolbar {
46 background: #f2f2f2;
47 padding: 10px;
48 margin: 10px 0px;
49 .el-form-item {
50 margin-bottom: 10px;
51 }
52 }
53
54 .fade-enter-active,
55 .fade-leave-active {
56 transition: all 0.2s ease;
57 }
58
59 .fade-enter,
60 .fade-leave-active {
61 opacity: 0;
62 }
63
64 .avatar-wrap {
65 display: flex;
66 justify-content: flex-start;
67 align-items: center;
68 .avatar {
69 width: 40px;
70 height: 40px;
71 }
72 }
73
74 </style>
......
1 module.exports = { 1 module.exports = {
2 testListGet: '/xxx/xxx/list' 2 testListGet: '/xxx/xxx/list',
3 exportTable: exportTable,
4 }
5
6 function exportTable(params) {
7 let url = 'https://api.k.wxpai.cn/awp/plugins/export/' + params.func + '?id=' + params.appId + '&key=' + params.appKey + '&val=' + params.data;
8 console.log("url:", url);
9 window.open(url)
3 } 10 }
......
1 /**
2 * 获取当前链接参数
3 * @param {*} name
4 */
5 export const getLinkParam = name => {
6 return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
7 };
8
9 /**
10 * 去掉字符串两端空格 trim
11 * @param {string} str
12 */
13 export const trim = str => {
14 return str.replace(/(^\s*)|(\s*$)/g, '');
15 }
16
17 /**
18 * 验证邮箱
19 * @param {string} str
20 */
21 export const checkEmail = str => {
22 let re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
23 if (re.test(str)) {
24 return true;
25 } else {
26 return false;
27 }
28 }
29
30 /**
31 * 验证手机 1开头+10位数
32 * @param {string} str
33 */
34 export const checkMobile = str => {
35 let re = /^1\d{10}$/;
36 // let re = /^(13[0-9]|14[57]|15[0-9]|17[0-9]|18[0-9])\d{8}$/; //严格模式
37 if (re.test(str)) {
38 return true;
39 } else {
40 return false;
41 }
42 }
43
44 /**
45 * 获取Uuid
46 */
47 export const uuid = () => {
48 var s = [];
49 var hexDigits = "0123456789abcdef";
50 for (var i = 0; i < 36; i++) {
51 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
52 }
53 s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
54 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
55 s[8] = s[13] = s[18] = s[23] = "-";
56
57 var uuid = s.join("");
58 return uuid;
59 }
60
61
62 /**
63 * 设置cookies
64 * @param {*} name
65 * @param {*} value
66 * @param {*} Days
67 */
68 export const setCookie = (name, value, Days = 0) => {
69 if (Days <= 0) Days = 30;
70 var exp = new Date();
71 exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
72 document.cookie = name + "=" + encodeURI(value) + ";expires=" + exp.toUTCString();
73 }
74
75
76 /**
77 * 获取cookies
78 * @param {*} name
79 * @param {*} value
80 * @param {*} Days
81 */
82 export const getCookie = (name) => {
83 var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
84 if (arr = document.cookie.match(reg)) {
85 return decodeURI(arr[2]);
86 } else {
87 return "";
88 }
89 }
90
91 /**
92 * 删除cookies
93 * @param {*} name
94 */
95 export const deleteCookie = (name) => {
96 var exp = new Date();
97 exp.setTime(exp.getTime() - 1);
98 var cval = getCookie(name);
99 if (cval != null)
100 document.cookie = name + "=" + cval + ";expires=" + exp.toUTCString();
101 }
102
103 /**
104 * 判断是否微信客户端
105 * @param {*} name
106 */
107 export const isWeiXin = () => {
108 var ua = window.navigator.userAgent.toLowerCase();
109 if (ua.match(/MicroMessenger/i) == 'micromessenger') {
110 return true;
111 } else {
112 return false;
113 }
114 }
115
116
117 /**
118 * 时间戳格式化(yyyy-MM-dd hh:mm:ss)
119 * @param {*} timestamp
120 * @param {*} format
121 */
122 export const timestampFormat = (timestamp, format) => {
123 Date.prototype.Format = function (fmt) {
124 var o = {
125 "M+": this.getMonth() + 1, //月份
126 "d+": this.getDate(), //日
127 "h+": this.getHours(), //小时
128 "m+": this.getMinutes(), //分
129 "s+": this.getSeconds(), //秒
130 "q+": Math.floor((this.getMonth() + 3) / 3), //季度
131 "S": this.getMilliseconds() //毫秒
132 };
133 if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
134 for (var k in o) {
135 if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
136 }
137 return fmt;
138 }
139
140 if (timestamp && timestamp.length == 10) timestamp += "000";
141
142 var date = new Date();
143 if (timestamp) date.setTime(timestamp);
144 if (format == null || format == "") {
145 format = "yyyy-MM-dd hh:mm:ss";
146 }
147 return date.Format(format);
148 };
149
150 /**
151 * 日期转时间戳
152 * @param {*} stringTime
153 */
154 export const dateParse = stringTime => {
155 if (stringTime) {
156 var date = new Date(stringTime);
157 } else {
158 var date = new Date();
159 }
160 return Date.parse(date);
161 };
162
163
164 /**
165 * 生成指定范围内的随机数
166 * @param {*} min
167 * @param {*} max
168 */
169 export const getRandom = (min, max) => {
170 var c = max - min + 1;
171 return Math.floor(Math.random() * c + min);
172 };
173
174
175 /**
176 * 日期格式化
177 */
178 export const formatDate = {
179 SIGN_REGEXP: /([yMdhsm])(\1*)/g,
180 DEFAULT_PATTERN: 'yyyy-MM-dd',
181 padding: function (s, len) {
182 var len = len - (s + '').length;
183 for (var i = 0; i < len; i++) {
184 s = '0' + s;
185 }
186 return s;
187 },
188 format: function (date, pattern) {
189 pattern = pattern || formatDate.DEFAULT_PATTERN;
190 return pattern.replace(formatDate.SIGN_REGEXP, function ($0) {
191 switch ($0.charAt(0)) {
192 case 'y':
193 return formatDate.padding(date.getFullYear(), $0.length);
194 case 'M':
195 return formatDate.padding(date.getMonth() + 1, $0.length);
196 case 'd':
197 return formatDate.padding(date.getDate(), $0.length);
198 case 'w':
199 return date.getDay() + 1;
200 case 'h':
201 return formatDate.padding(date.getHours(), $0.length);
202 case 'm':
203 return formatDate.padding(date.getMinutes(), $0.length);
204 case 's':
205 return formatDate.padding(date.getSeconds(), $0.length);
206 }
207 });
208 },
209 parse: function (dateString, pattern) {
210 var matchs1 = pattern.match(formatDate.SIGN_REGEXP);
211 var matchs2 = dateString.match(/(\d)+/g);
212 if (matchs1.length == matchs2.length) {
213 var _date = new Date(1970, 0, 1);
214 for (var i = 0; i < matchs1.length; i++) {
215 var _int = parseInt(matchs2[i]);
216 var sign = matchs1[i];
217 switch (sign.charAt(0)) {
218 case 'y':
219 _date.setFullYear(_int);
220 break;
221 case 'M':
222 _date.setMonth(_int - 1);
223 break;
224 case 'd':
225 _date.setDate(_int);
226 break;
227 case 'h':
228 _date.setHours(_int);
229 break;
230 case 'm':
231 _date.setMinutes(_int);
232 break;
233 case 's':
234 _date.setSeconds(_int);
235 break;
236 }
237 }
238 return _date;
239 }
240 return null;
241 }
242
243 }
...@@ -22,22 +22,29 @@ import Layout from '../views/layout/Layout' ...@@ -22,22 +22,29 @@ import Layout from '../views/layout/Layout'
22 breadcrumb: false if false, the item will hidden in breadcrumb(default is true) 22 breadcrumb: false if false, the item will hidden in breadcrumb(default is true)
23 } 23 }
24 **/ 24 **/
25 export const constantRouterMap = [ 25 export const constantRouterMap = [{
26 { path: '/login', component: () => import('@/views/login/index'), hidden: true }, 26 path: '/login',
27 { path: '/404', component: () => import('@/views/404'), hidden: true }, 27 component: () => import('@/views/login/index'),
28 28 hidden: true
29 },
29 { 30 {
30 path: '/', 31 path: '/404',
31 component: Layout, 32 component: () => import('@/views/404'),
32 redirect: '/dashboard', 33 hidden: true
33 name: 'Dashboard',
34 hidden: true,
35 children: [{
36 path: 'dashboard',
37 component: () => import('@/views/dashboard/index')
38 }]
39 }, 34 },
40 /* { 35
36 // {
37 // path: '/',
38 // component: Layout,
39 // redirect: '/dashboard',
40 // name: 'Dashboard',
41 // hidden: true,
42 // children: [{
43 // path: 'dashboard',
44 // component: () => import('@/views/dashboard/index')
45 // }]
46 // },
47 /* {
41 path: '/form', 48 path: '/form',
42 component: Layout, 49 component: Layout,
43 children: [ 50 children: [
...@@ -49,104 +56,179 @@ export const constantRouterMap = [ ...@@ -49,104 +56,179 @@ export const constantRouterMap = [
49 } 56 }
50 ] 57 ]
51 },*/ 58 },*/
59
52 { 60 {
53 path: '/qrcode', 61 path: '/',
54 component: Layout, 62 component: Layout,
55 children: [ 63 redirect: '/dictionary/reservation',
56 { 64 name: 'dictionary',
57 path: 'index', 65 meta: {
58 name: 'Qrcode', 66 title: '天宝宝典',
59 component: () => import('@/views/scene/index'), 67 icon: 'nested'
60 meta: { title: '订阅信息', icon: 'form' } 68 },
69 children: [{
70 path: '/dictionary/reservation',
71 name: 'reservation',
72 component: () => import('@/views/dictionary/reservation'),
73 meta: {
74 title: '预约明细',
75 icon: ''
61 } 76 }
62 ]
63 }, 77 },
64
65
66
67 /*{
68 path: '/example',
69 component: Layout,
70 redirect: '/example/table',
71 name: 'Example',
72 meta: { title: 'Example', icon: 'example' },
73 children: [
74 { 78 {
75 path: 'table', 79 path: '/dictionary/pvpage',
76 name: 'Table', 80 name: 'pvpage',
77 component: () => import('@/views/table/index'), 81 component: () => import('@/views/dictionary/pvpage'),
78 meta: { title: 'Table', icon: 'table' } 82 meta: {
83 title: '页面访问明细',
84 icon: ''
85 }
79 }, 86 },
80 { 87 {
81 path: 'tree', 88 path: '/dictionary/pvproduct',
82 name: 'Tree', 89 name: 'pvproduct',
83 component: () => import('@/views/tree/index'), 90 component: () => import('@/views/dictionary/pvproduct'),
84 meta: { title: 'Tree', icon: 'tree' } 91 meta: {
92 title: '产品访问明细',
93 icon: ''
85 } 94 }
95 },
86 ] 96 ]
87 },*/ 97 },
88
89
90 /*
91 98
92 { 99 {
93 path: '/nested', 100 path: '/calculator',
94 component: Layout, 101 component: Layout,
95 redirect: '/nested/menu1', 102 redirect: '/calculator/pvpage',
96 name: 'Nested', 103 name: 'dictionary',
97 meta: { 104 meta: {
98 title: 'Nested', 105 title: '天宝计算器',
99 icon: 'nested' 106 icon: 'nested'
100 }, 107 },
101 children: [ 108 children: [
102 { 109 {
103 path: 'menu1', 110 path: '/calculator/pvpage',
104 component: () => import('@/views/nested/menu1/index'), // Parent router-view 111 name: 'pvpage',
105 name: 'Menu1', 112 component: () => import('@/views/calculator/pvpage'),
106 meta: { title: 'Menu1' }, 113 meta: {
107 children: [ 114 title: '页面访问明细',
108 { 115 icon: ''
109 path: 'menu1-1',
110 component: () => import('@/views/nested/menu1/menu1-1'),
111 name: 'Menu1-1',
112 meta: { title: 'Menu1-1' }
113 },
114 {
115 path: 'menu1-2',
116 component: () => import('@/views/nested/menu1/menu1-2'),
117 name: 'Menu1-2',
118 meta: { title: 'Menu1-2' },
119 children: [
120 {
121 path: 'menu1-2-1',
122 component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'),
123 name: 'Menu1-2-1',
124 meta: { title: 'Menu1-2-1' }
125 },
126 {
127 path: 'menu1-2-2',
128 component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'),
129 name: 'Menu1-2-2',
130 meta: { title: 'Menu1-2-2' }
131 } 116 }
132 ]
133 }, 117 },
134 { 118 {
135 path: 'menu1-3', 119 path: '/calculator/pvfunc',
136 component: () => import('@/views/nested/menu1/menu1-3'), 120 name: 'pvfunc',
137 name: 'Menu1-3', 121 component: () => import('@/views/calculator/pvfunc'),
138 meta: { title: 'Menu1-3' } 122 meta: {
123 title: '功能访问明细',
124 icon: ''
139 } 125 }
126 },
140 ] 127 ]
141 }, 128 },
129
142 { 130 {
143 path: 'menu2', 131 path: '/qrcode',
144 component: () => import('@/views/nested/menu2/index'), 132 component: Layout,
145 meta: { title: 'menu2' } 133 children: [{
134 path: 'index',
135 name: 'Qrcode',
136 component: () => import('@/views/scene/index'),
137 meta: {
138 title: '订阅信息',
139 icon: 'form'
146 } 140 }
147 ] 141 }]
148 }, 142 },
149 */ 143
144
145 // {
146 // path: '/example',
147 // component: Layout,
148 // redirect: '/example/table',
149 // name: 'Example',
150 // meta: {
151 // title: 'Example',
152 // icon: 'example'
153 // },
154 // children: [{
155 // path: 'table',
156 // name: 'Table',
157 // component: () => import('@/views/table/index'),
158 // meta: {
159 // title: 'Table',
160 // icon: 'table'
161 // }
162 // },
163 // {
164 // path: 'tree',
165 // name: 'Tree',
166 // component: () => import('@/views/tree/index'),
167 // meta: {
168 // title: 'Tree',
169 // icon: 'tree'
170 // }
171 // }
172 // ]
173 // },
174
175 // {
176 // path: '/nested',
177 // component: Layout,
178 // redirect: '/nested/menu1',
179 // name: 'Nested',
180 // meta: {
181 // title: 'Nested',
182 // icon: 'nested'
183 // },
184 // children: [
185 // {
186 // path: 'menu1',
187 // component: () => import('@/views/nested/menu1/index'), // Parent router-view
188 // name: 'Menu1',
189 // meta: { title: 'Menu1' },
190 // children: [
191 // {
192 // path: 'menu1-1',
193 // component: () => import('@/views/nested/menu1/menu1-1'),
194 // name: 'Menu1-1',
195 // meta: { title: 'Menu1-1' }
196 // },
197 // {
198 // path: 'menu1-2',
199 // component: () => import('@/views/nested/menu1/menu1-2'),
200 // name: 'Menu1-2',
201 // meta: { title: 'Menu1-2' },
202 // children: [
203 // {
204 // path: 'menu1-2-1',
205 // component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'),
206 // name: 'Menu1-2-1',
207 // meta: { title: 'Menu1-2-1' }
208 // },
209 // {
210 // path: 'menu1-2-2',
211 // component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'),
212 // name: 'Menu1-2-2',
213 // meta: { title: 'Menu1-2-2' }
214 // }
215 // ]
216 // },
217 // {
218 // path: 'menu1-3',
219 // component: () => import('@/views/nested/menu1/menu1-3'),
220 // name: 'Menu1-3',
221 // meta: { title: 'Menu1-3' }
222 // }
223 // ]
224 // },
225 // {
226 // path: 'menu2',
227 // component: () => import('@/views/nested/menu2/index'),
228 // meta: { title: 'menu2' }
229 // }
230 // ]
231 // },
150 232
151 // { 233 // {
152 // path: 'external-link', 234 // path: 'external-link',
...@@ -159,11 +241,17 @@ export const constantRouterMap = [ ...@@ -159,11 +241,17 @@ export const constantRouterMap = [
159 // ] 241 // ]
160 // }, 242 // },
161 243
162 { path: '*', redirect: '/404', hidden: true } 244 {
245 path: '*',
246 redirect: '/404',
247 hidden: true
248 }
163 ] 249 ]
164 250
165 export default new Router({ 251 export default new Router({
166 // mode: 'history', //后端支持可开 252 // mode: 'history', //后端支持可开
167 scrollBehavior: () => ({ y: 0 }), 253 scrollBehavior: () => ({
254 y: 0
255 }),
168 routes: constantRouterMap 256 routes: constantRouterMap
169 }) 257 })
......
1
2 <template>
3 <div class="page-container">
4 <div class="tool-wrap">
5 <div>
6 <el-form :inline="true" :model="filters">
7 <el-form-item>
8 <el-input @change="changeHandler()" v-model="filters.mobilePhone" placeholder="请输入使用功能"></el-input>
9 </el-form-item>
10 <el-form-item>
11 <el-date-picker @change="changeHandler()" v-model="filters.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
12 </el-date-picker>
13 </el-form-item>
14 <el-form-item>
15 <el-button type="primary" v-on:click="reqQuery">查询</el-button>
16 </el-form-item>
17 </el-form>
18 </div>
19 <div>
20 <el-button class="reset-btn" @click="showDialog()">导出数据</el-button>
21 </div>
22 </div>
23
24 <el-table :data="totalData.reservationList" highlight-current-row v-loading="listLoading" style="width: 100%;">
25 <el-table-column prop="func_name" label="使用功能">
26 </el-table-column>
27 <el-table-column prop="hdp_created" :formatter="formatTableDate" label="访问时间">
28 </el-table-column>
29 <el-table-column prop="nickname" label="微信昵称">
30 </el-table-column>
31 <el-table-column label="微信头像">
32 <template slot-scope="scope">
33 <div class="avatar-wrap">
34 <img class="avatar" :src="scope.row.avatar" alt="">
35 </div>
36 </template>
37 </el-table-column>
38 <el-table-column prop="openid" label="openid">
39 </el-table-column>
40
41 </el-table>
42
43 <!--工具条-->
44 <el-col :span="24" class="toolbar">
45 <div class="page-tips">总共{{total}}条记录,每页{{pageSize}}条,总共{{pageNum}}页</div>
46 <el-pagination layout="prev, pager, next,jumper" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
47 </el-pagination>
48 </el-col>
49
50 <el-dialog class="dialog" center title="导出数据设定" :visible.sync="exportDialogVisible" :close-on-click-modal="false">
51 <span class="tips">导出日期</span>
52 <el-date-picker v-model="exportDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
53 </el-date-picker>
54 <div slot="footer" class="dialog-footer">
55 <el-button style="width:120px;" @click.native="exportDialogVisible = false">取消</el-button>
56 <el-button style="width:120px;" type="primary" @click.native="exportHandler()">导出</el-button>
57 </div>
58 </el-dialog>
59
60 </div>
61 </template>
62
63 <script>
64 import { Base64 } from "js-base64";
65 import { exportTable } from "./../../api/api.js";
66 import { formatDate } from "./../../common/utils.js";
67
68 export default {
69 data() {
70 return {
71 exportDate: [
72 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
73 new Date().getTime()
74 ],
75 exportDialogVisible: false,
76 listLoading: false,
77 page: 1,
78 pageSize: 10,
79 total: 0,
80 totalData: {
81 reservationList: []
82 },
83 selDate: [
84 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
85 new Date()
86 ],
87 pickerOptions2: {
88 disabledDate(time) {
89 return time.getTime() > Date.now();
90 }
91 },
92 filters: {
93 mobilePhone: "",
94 date: ""
95 }
96 };
97 },
98 computed: {
99 pageNum() {
100 return Math.ceil(this.total / this.pageSize);
101 },
102 startTime() {
103 let date = this.filters.date;
104 let result = (date && date[0]) || "";
105 if (result) {
106 result = date[0].getTime();
107 }
108 return result;
109 },
110 endTime() {
111 let date = this.filters.date;
112 let result = (date && date[1]) || "";
113 if (result) {
114 result = date[1].getTime() + 1000 * 60 * 60 * 24;
115 }
116 return result;
117 }
118 },
119 methods: {
120 changeHandler() {
121 this.reqQuery();
122 },
123 exportHandler() {
124 let data = {
125 start_time: new Date(this.exportDate[0]).getTime(),
126 end_time: new Date(this.exportDate[1]).getTime() + 1000 * 60 * 60 * 24,
127 mobile_phone: "",
128 startIndex: 0,
129 size: 1000000
130 };
131 var encoder = HDP.getEncoder();
132 var encrypted = encoder.encode(JSON.stringify(data));
133 let params = {
134 appId: "0489fba68acd11e98c527cd30aeb749e",
135 appKey: "9524a3c59a5d4460bd141a2a93a5db17",
136 func: "queryStatFuncListAppjqos",
137 data: encrypted
138 };
139 exportTable(params);
140 },
141 showDialog() {
142 this.exportDialogVisible = true;
143 },
144 formatTableDate(row, column) {
145 return formatDate.format(new Date(row.hdp_created), "yyyy-MM-dd hh:mm");
146 },
147 handleCurrentChange(val) {
148 this.page = val;
149 this.reqQuery();
150 },
151 reqQuery() {
152 let _this = this;
153 _this.listLoading = true;
154 let data = {
155 startIndex: (this.page - 1) * this.pageSize,
156 size: this.pageSize,
157 query: this.filters.mobilePhone,
158 start_time: this.startTime,
159 end_time: this.endTime
160 };
161 as.queryFunV2("queryStatFuncListAppjqos", data, res => {
162 _this.page = 1;
163 _this.listLoading = false;
164 if (res) {
165 let reservationList = res[0];
166 let total = res[1][0].total;
167 _this.total = total;
168 _this.$set(_this.totalData, "reservationList", reservationList);
169 }
170 });
171 }
172 },
173 mounted() {
174 this.reqQuery();
175 },
176 created() {}
177 };
178 </script>
179
180 <style lang="scss" scoped>
181 .page-container {
182 padding: 20px;
183 }
184
185 .tool-wrap {
186 padding: 24px 0;
187 display: flex;
188 border-bottom: solid 1px #cccccc;
189 justify-content: space-between;
190 }
191
192 .toolbar {
193 display: flex;
194 justify-content: space-between;
195 .page-tips {
196 height: 32px;
197 line-height: 32px;
198 color: #333333;
199 }
200 }
201
202 .dialog {
203 .tips {
204 margin-right: 24px;
205 }
206 }
207 </style>
1
2 <template>
3 <div class="page-container">
4 <div class="tool-wrap">
5 <div>
6 <el-form :inline="true" :model="filters">
7 <el-form-item>
8 <el-input @change="changeHandler()" v-model="filters.mobilePhone" placeholder="请输入访问页面"></el-input>
9 </el-form-item>
10 <el-form-item>
11 <el-date-picker @change="changeHandler()" v-model="filters.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
12 </el-date-picker>
13 </el-form-item>
14 <el-form-item>
15 <el-button type="primary" v-on:click="reqQuery">查询</el-button>
16 </el-form-item>
17 </el-form>
18 </div>
19 <div>
20 <el-button class="reset-btn" @click="showDialog()">导出数据</el-button>
21 </div>
22 </div>
23
24 <el-table :data="totalData.reservationList" highlight-current-row v-loading="listLoading" style="width: 100%;">
25 <el-table-column prop="page_name" label="访问页面">
26 </el-table-column>
27 <el-table-column prop="hdp_created" :formatter="formatTableDate" label="访问时间">
28 </el-table-column>
29 <el-table-column prop="nickname" label="微信昵称">
30 </el-table-column>
31 <el-table-column label="微信头像">
32 <template slot-scope="scope">
33 <div class="avatar-wrap">
34 <img class="avatar" :src="scope.row.avatar" alt="">
35 </div>
36 </template>
37 </el-table-column>
38 <el-table-column prop="openid" label="openid">
39 </el-table-column>
40
41 </el-table>
42
43 <!--工具条-->
44 <el-col :span="24" class="toolbar">
45 <div class="page-tips">总共{{total}}条记录,每页{{pageSize}}条,总共{{pageNum}}页</div>
46 <el-pagination layout="prev, pager, next,jumper" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
47 </el-pagination>
48 </el-col>
49
50 <el-dialog class="dialog" center title="导出数据设定" :visible.sync="exportDialogVisible" :close-on-click-modal="false">
51 <span class="tips">导出日期</span>
52 <el-date-picker v-model="exportDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
53 </el-date-picker>
54 <div slot="footer" class="dialog-footer">
55 <el-button style="width:120px;" @click.native="exportDialogVisible = false">取消</el-button>
56 <el-button style="width:120px;" type="primary" @click.native="exportHandler()">导出</el-button>
57 </div>
58 </el-dialog>
59
60 </div>
61 </template>
62
63 <script>
64 import { Base64 } from "js-base64";
65 import { exportTable } from "./../../api/api.js";
66 import { formatDate } from "./../../common/utils.js";
67
68 export default {
69 data() {
70 return {
71 exportDate: [
72 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
73 new Date().getTime()
74 ],
75 exportDialogVisible: false,
76 listLoading: false,
77 page: 1,
78 pageSize: 10,
79 total: 0,
80 totalData: {
81 reservationList: []
82 },
83 selDate: [
84 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
85 new Date()
86 ],
87 pickerOptions2: {
88 disabledDate(time) {
89 return time.getTime() > Date.now();
90 }
91 },
92 filters: {
93 mobilePhone: "",
94 date: ""
95 }
96 };
97 },
98 computed: {
99 pageNum() {
100 return Math.ceil(this.total / this.pageSize);
101 },
102 startTime() {
103 let date = this.filters.date;
104 let result = (date && date[0]) || "";
105 if (result) {
106 result = date[0].getTime();
107 }
108 return result;
109 },
110 endTime() {
111 let date = this.filters.date;
112 let result = (date && date[1]) || "";
113 if (result) {
114 result = date[1].getTime() + 1000 * 60 * 60 * 24;
115 }
116 return result;
117 }
118 },
119 methods: {
120 changeHandler() {
121 this.reqQuery();
122 },
123 exportHandler() {
124 let data = {
125 start_time: new Date(this.exportDate[0]).getTime(),
126 end_time: new Date(this.exportDate[1]).getTime() + 1000 * 60 * 60 * 24,
127 mobile_phone: "",
128 startIndex: 0,
129 size: 1000000
130 };
131 var encoder = HDP.getEncoder();
132 var encrypted = encoder.encode(JSON.stringify(data));
133 let params = {
134 appId: "0489fba68acd11e98c527cd30aeb749e",
135 appKey: "9524a3c59a5d4460bd141a2a93a5db17",
136 func: "queryStatPageListAppjqos",
137 data: encrypted
138 };
139 exportTable(params);
140 },
141 showDialog() {
142 this.exportDialogVisible = true;
143 },
144 formatTableDate(row, column) {
145 return formatDate.format(new Date(row.hdp_created), "yyyy-MM-dd hh:mm");
146 },
147 handleCurrentChange(val) {
148 this.page = val;
149 this.reqQuery();
150 },
151 reqQuery() {
152 let _this = this;
153 _this.listLoading = true;
154 let data = {
155 startIndex: (this.page - 1) * this.pageSize,
156 size: this.pageSize,
157 query: this.filters.mobilePhone,
158 start_time: this.startTime,
159 end_time: this.endTime
160 };
161 as.queryFunV2("queryStatPageListAppjqos", data, res => {
162 _this.page = 1;
163 _this.listLoading = false;
164 if (res) {
165 let reservationList = res[0];
166 let total = res[1][0].total;
167 _this.total = total;
168 _this.$set(_this.totalData, "reservationList", reservationList);
169 }
170 });
171 }
172 },
173 mounted() {
174 this.reqQuery();
175 },
176 created() {}
177 };
178 </script>
179
180 <style lang="scss" scoped>
181 .page-container {
182 padding: 20px;
183 }
184
185 .tool-wrap {
186 padding: 24px 0;
187 display: flex;
188 border-bottom: solid 1px #cccccc;
189 justify-content: space-between;
190 }
191
192 .toolbar {
193 display: flex;
194 justify-content: space-between;
195 .page-tips {
196 height: 32px;
197 line-height: 32px;
198 color: #333333;
199 }
200 }
201
202 .dialog {
203 .tips {
204 margin-right: 24px;
205 }
206 }
207 </style>
1
2 <template>
3 <div class="page-container">
4 <div class="tool-wrap">
5 <div>
6 <el-form :inline="true" :model="filters">
7 <el-form-item>
8 <el-input @change="changeHandler()" v-model="filters.mobilePhone" placeholder="请输入访问页面"></el-input>
9 </el-form-item>
10 <el-form-item>
11 <el-date-picker @change="changeHandler()" v-model="filters.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
12 </el-date-picker>
13 </el-form-item>
14 <el-form-item>
15 <el-button type="primary" v-on:click="reqQuery">查询</el-button>
16 </el-form-item>
17 </el-form>
18 </div>
19 <div>
20 <el-button class="reset-btn" @click="showDialog()">导出数据</el-button>
21 </div>
22 </div>
23
24 <el-table :data="totalData.reservationList" highlight-current-row v-loading="listLoading" style="width: 100%;">
25 <el-table-column prop="page_name" label="访问页面">
26 </el-table-column>
27 <el-table-column prop="hdp_created" :formatter="formatTableDate" label="访问时间">
28 </el-table-column>
29 <el-table-column prop="nickname" label="微信昵称">
30 </el-table-column>
31 <el-table-column label="微信头像">
32 <template slot-scope="scope">
33 <div class="avatar-wrap">
34 <img class="avatar" :src="scope.row.avatar" alt="">
35 </div>
36 </template>
37 </el-table-column>
38 <el-table-column prop="openid" label="openid">
39 </el-table-column>
40
41 </el-table>
42
43 <!--工具条-->
44 <el-col :span="24" class="toolbar">
45 <div class="page-tips">总共{{total}}条记录,每页{{pageSize}}条,总共{{pageNum}}页</div>
46 <el-pagination layout="prev, pager, next,jumper" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
47 </el-pagination>
48 </el-col>
49
50 <el-dialog class="dialog" center title="导出数据设定" :visible.sync="exportDialogVisible" :close-on-click-modal="false">
51 <span class="tips">导出日期</span>
52 <el-date-picker v-model="exportDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
53 </el-date-picker>
54 <div slot="footer" class="dialog-footer">
55 <el-button style="width:120px;" @click.native="exportDialogVisible = false">取消</el-button>
56 <el-button style="width:120px;" type="primary" @click.native="exportHandler()">导出</el-button>
57 </div>
58 </el-dialog>
59
60 </div>
61 </template>
62
63 <script>
64 import { Base64 } from "js-base64";
65 import { exportTable } from "./../../api/api.js";
66 import { formatDate } from "./../../common/utils.js";
67
68 export default {
69 data() {
70 return {
71 exportDate: [
72 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
73 new Date().getTime()
74 ],
75 exportDialogVisible: false,
76 listLoading: false,
77 page: 1,
78 pageSize: 10,
79 total: 0,
80 totalData: {
81 reservationList: []
82 },
83 selDate: [
84 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
85 new Date()
86 ],
87 pickerOptions2: {
88 disabledDate(time) {
89 return time.getTime() > Date.now();
90 }
91 },
92 filters: {
93 mobilePhone: "",
94 date: ""
95 }
96 };
97 },
98 computed: {
99 pageNum() {
100 return Math.ceil(this.total / this.pageSize);
101 },
102 startTime() {
103 let date = this.filters.date;
104 let result = (date && date[0]) || "";
105 if (result) {
106 result = date[0].getTime();
107 }
108 return result;
109 },
110 endTime() {
111 let date = this.filters.date;
112 let result = (date && date[1]) || "";
113 if (result) {
114 result = date[1].getTime() + 1000 * 60 * 60 * 24;
115 }
116 return result;
117 }
118 },
119 methods: {
120 changeHandler() {
121 this.reqQuery();
122 },
123 exportHandler() {
124 let data = {
125 start_time: new Date(this.exportDate[0]).getTime(),
126 end_time: new Date(this.exportDate[1]).getTime() + 1000 * 60 * 60 * 24,
127 mobile_phone: "",
128 startIndex: 0,
129 size: 1000000
130 };
131 var encoder = HDP.getEncoder();
132 var encrypted = encoder.encode(JSON.stringify(data));
133 let params = {
134 appId: "0489fba68acd11e98c527cd30aeb749e",
135 appKey: "9524a3c59a5d4460bd141a2a93a5db17",
136 func: "queryStatPageList",
137 data: encrypted
138 };
139 exportTable(params);
140 },
141 showDialog() {
142 this.exportDialogVisible = true;
143 },
144 formatTableDate(row, column) {
145 return formatDate.format(new Date(row.hdp_created), "yyyy-MM-dd hh:mm");
146 },
147 handleCurrentChange(val) {
148 this.page = val;
149 this.reqQuery();
150 },
151 reqQuery() {
152 let _this = this;
153 _this.listLoading = true;
154 let data = {
155 startIndex: (this.page - 1) * this.pageSize,
156 size: this.pageSize,
157 mobile_phone: this.filters.mobilePhone,
158 start_time: this.startTime,
159 end_time: this.endTime
160 };
161 as.queryFunV2("queryStatPageList", data, res => {
162 _this.page = 1;
163 _this.listLoading = false;
164 if (res) {
165 let reservationList = res[0];
166 let total = res[1][0].total;
167 _this.total = total;
168 _this.$set(_this.totalData, "reservationList", reservationList);
169 }
170 });
171 }
172 },
173 mounted() {
174 this.reqQuery();
175 },
176 created() {}
177 };
178 </script>
179
180 <style lang="scss" scoped>
181 .page-container {
182 padding: 20px;
183 }
184
185 .tool-wrap {
186 padding: 24px 0;
187 display: flex;
188 border-bottom: solid 1px #cccccc;
189 justify-content: space-between;
190 }
191
192 .toolbar {
193 display: flex;
194 justify-content: space-between;
195 .page-tips {
196 height: 32px;
197 line-height: 32px;
198 color: #333333;
199 }
200 }
201
202 .dialog {
203 .tips {
204 margin-right: 24px;
205 }
206 }
207 </style>
1
2 <template>
3 <div class="page-container">
4 <div class="tool-wrap">
5 <div>
6 <el-form :inline="true" :model="filters">
7 <el-form-item>
8 <el-input @change="changeHandler()" v-model="filters.mobilePhone" placeholder="请输入访问产品"></el-input>
9 </el-form-item>
10 <el-form-item>
11 <el-date-picker @change="changeHandler()" v-model="filters.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
12 </el-date-picker>
13 </el-form-item>
14 <el-form-item>
15 <el-button type="primary" v-on:click="reqQuery">查询</el-button>
16 </el-form-item>
17 </el-form>
18 </div>
19 <div>
20 <el-button class="reset-btn" @click="showDialog()">导出数据</el-button>
21 </div>
22 </div>
23
24 <el-table :data="totalData.reservationList" highlight-current-row v-loading="listLoading" style="width: 100%;">
25 <el-table-column prop="product_name" label="访问产品">
26 </el-table-column>
27 <el-table-column prop="hdp_created" :formatter="formatTableDate" label="访问时间">
28 </el-table-column>
29 <el-table-column prop="nickname" label="微信昵称">
30 </el-table-column>
31 <el-table-column label="微信头像">
32 <template slot-scope="scope">
33 <div class="avatar-wrap">
34 <img class="avatar" :src="scope.row.avatar" alt="">
35 </div>
36 </template>
37 </el-table-column>
38 <el-table-column prop="openid" label="openid">
39 </el-table-column>
40
41 </el-table>
42
43 <!--工具条-->
44 <el-col :span="24" class="toolbar">
45 <div class="page-tips">总共{{total}}条记录,每页{{pageSize}}条,总共{{pageNum}}页</div>
46 <el-pagination layout="prev, pager, next,jumper" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
47 </el-pagination>
48 </el-col>
49
50 <el-dialog class="dialog" center title="导出数据设定" :visible.sync="exportDialogVisible" :close-on-click-modal="false">
51 <span class="tips">导出日期</span>
52 <el-date-picker v-model="exportDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
53 </el-date-picker>
54 <div slot="footer" class="dialog-footer">
55 <el-button style="width:120px;" @click.native="exportDialogVisible = false">取消</el-button>
56 <el-button style="width:120px;" type="primary" @click.native="exportHandler()">导出</el-button>
57 </div>
58 </el-dialog>
59
60 </div>
61 </template>
62
63 <script>
64 import { Base64 } from "js-base64";
65 import { exportTable } from "./../../api/api.js";
66 import { formatDate } from "./../../common/utils.js";
67
68 export default {
69 data() {
70 return {
71 exportDate: [
72 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
73 new Date().getTime()
74 ],
75 exportDialogVisible: false,
76 listLoading: false,
77 page: 1,
78 pageSize: 10,
79 total: 0,
80 totalData: {
81 reservationList: []
82 },
83 selDate: [
84 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
85 new Date()
86 ],
87 pickerOptions2: {
88 disabledDate(time) {
89 return time.getTime() > Date.now();
90 }
91 },
92 filters: {
93 mobilePhone: "",
94 date: ""
95 }
96 };
97 },
98 computed: {
99 pageNum() {
100 return Math.ceil(this.total / this.pageSize);
101 },
102 startTime() {
103 let date = this.filters.date;
104 let result = (date && date[0]) || "";
105 if (result) {
106 result = date[0].getTime();
107 }
108 return result;
109 },
110 endTime() {
111 let date = this.filters.date;
112 let result = (date && date[1]) || "";
113 if (result) {
114 result = date[1].getTime() + 1000 * 60 * 60 * 24;
115 }
116 return result;
117 }
118 },
119 methods: {
120 changeHandler() {
121 this.reqQuery();
122 },
123 exportHandler() {
124 let data = {
125 start_time: new Date(this.exportDate[0]).getTime(),
126 end_time: new Date(this.exportDate[1]).getTime() + 1000 * 60 * 60 * 24,
127 mobile_phone: "",
128 startIndex: 0,
129 size: 1000000
130 };
131 var encoder = HDP.getEncoder();
132 var encrypted = encoder.encode(JSON.stringify(data));
133 let params = {
134 appId: "0489fba68acd11e98c527cd30aeb749e",
135 appKey: "9524a3c59a5d4460bd141a2a93a5db17",
136 func: "queryStatProductList",
137 data: encrypted
138 };
139 exportTable(params);
140 },
141 showDialog() {
142 this.exportDialogVisible = true;
143 },
144 formatTableDate(row, column) {
145 return formatDate.format(new Date(row.hdp_created), "yyyy-MM-dd hh:mm");
146 },
147 handleCurrentChange(val) {
148 this.page = val;
149 this.reqQuery();
150 },
151 reqQuery() {
152 let _this = this;
153 _this.listLoading = true;
154 let data = {
155 startIndex: (this.page - 1) * this.pageSize,
156 size: this.pageSize,
157 mobile_phone: this.filters.mobilePhone,
158 start_time: this.startTime,
159 end_time: this.endTime
160 };
161 as.queryFunV2("queryStatProductList", data, res => {
162 _this.page = 1;
163 _this.listLoading = false;
164 if (res) {
165 let reservationList = res[0];
166 let total = res[1][0].total;
167 _this.total = total;
168 _this.$set(_this.totalData, "reservationList", reservationList);
169 }
170 });
171 }
172 },
173 mounted() {
174 this.reqQuery();
175 },
176 created() {}
177 };
178 </script>
179
180 <style lang="scss" scoped>
181 .page-container {
182 padding: 20px;
183 }
184
185 .tool-wrap {
186 padding: 24px 0;
187 display: flex;
188 border-bottom: solid 1px #cccccc;
189 justify-content: space-between;
190 }
191
192 .toolbar {
193 display: flex;
194 justify-content: space-between;
195 .page-tips {
196 height: 32px;
197 line-height: 32px;
198 color: #333333;
199 }
200 }
201
202 .dialog {
203 .tips {
204 margin-right: 24px;
205 }
206 }
207 </style>
1 <template>
2 <div class="page-container">
3 <div class="tool-wrap">
4 <div>
5 <el-form :inline="true" :model="filters">
6 <el-form-item>
7 <el-input @change="changeHandler()" v-model="filters.mobilePhone" placeholder="请输入手机号"></el-input>
8 </el-form-item>
9 <el-form-item>
10 <el-date-picker @change="changeHandler()" v-model="filters.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
11 </el-date-picker>
12 </el-form-item>
13 <el-form-item>
14 <el-button type="primary" v-on:click="reqQuery">查询</el-button>
15 </el-form-item>
16 </el-form>
17 </div>
18 <div>
19 <el-button class="reset-btn" @click="showDialog()">导出数据</el-button>
20 </div>
21 </div>
22
23 <el-table :data="totalData.reservationList" highlight-current-row v-loading="listLoading" style="width: 100%;">
24
25 <el-table-column prop="product_name" label="产品名称">
26 </el-table-column>
27 <el-table-column prop="advisory" label="申请类型">
28 </el-table-column>
29 <el-table-column prop="name" label="姓名">
30 </el-table-column>
31 <el-table-column prop="mobile" label="联系方式">
32 </el-table-column>
33 <el-table-column prop="office" label="单位">
34 </el-table-column>
35 <el-table-column prop="province" label="省份">
36 </el-table-column>
37 <el-table-column prop="hdp_created" :formatter="formatTableDate" label="申请时间">
38 </el-table-column>
39 <el-table-column prop="nickname" label="微信昵称">
40 </el-table-column>
41 <el-table-column label="微信头像">
42 <template slot-scope="scope">
43 <div class="avatar-wrap">
44 <img class="avatar" :src="scope.row.avatar" alt="">
45 </div>
46 </template>
47 </el-table-column>
48 <el-table-column prop="openid" label="openid">
49 </el-table-column>
50
51 </el-table>
52
53 <!--工具条-->
54 <el-col :span="24" class="toolbar">
55 <div class="page-tips">总共{{total}}条记录,每页{{pageSize}}条,总共{{pageNum}}页</div>
56 <el-pagination layout="prev, pager, next,jumper" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
57 </el-pagination>
58 </el-col>
59
60 <el-dialog class="dialog" center title="导出数据设定" :visible.sync="exportDialogVisible" :close-on-click-modal="false">
61 <span class="tips">导出日期</span>
62 <el-date-picker v-model="exportDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions2">
63 </el-date-picker>
64 <div slot="footer" class="dialog-footer">
65 <el-button style="width:120px;" @click.native="exportDialogVisible = false">取消</el-button>
66 <el-button style="width:120px;" type="primary" @click.native="exportHandler()">导出</el-button>
67 </div>
68 </el-dialog>
69
70 </div>
71 </template>
72
73 <script>
74 import { Base64 } from "js-base64";
75 import { exportTable } from "./../../api/api.js";
76 import { formatDate } from "./../../common/utils.js";
77
78 export default {
79 data() {
80 return {
81 exportDate: [
82 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
83 new Date().getTime()
84 ],
85 exportDialogVisible: false,
86 listLoading: false,
87 page: 1,
88 pageSize: 10,
89 total: 0,
90 totalData: {
91 reservationList: []
92 },
93 selDate: [
94 new Date().setTime(new Date().getTime() - 3600 * 1000 * 24 * 7),
95 new Date()
96 ],
97 pickerOptions2: {
98 disabledDate(time) {
99 return time.getTime() > Date.now();
100 }
101 },
102 filters: {
103 mobilePhone: "",
104 date: ""
105 }
106 };
107 },
108 computed: {
109 pageNum() {
110 return Math.ceil(this.total / this.pageSize);
111 },
112 startTime() {
113 let date = this.filters.date;
114 let result = (date && date[0]) || "";
115 if (result) {
116 result = date[0].getTime();
117 }
118 return result;
119 },
120 endTime() {
121 let date = this.filters.date;
122 let result = (date && date[1]) || "";
123 if (result) {
124 result = date[1].getTime() + 1000 * 60 * 60 * 24;
125 }
126 return result;
127 }
128 },
129 methods: {
130 changeHandler() {
131 this.reqQuery();
132 },
133 exportHandler() {
134 let data = {
135 start_time: new Date(this.exportDate[0]).getTime(),
136 end_time: new Date(this.exportDate[1]).getTime() + 1000 * 60 * 60 * 24,
137 mobile_phone: "",
138 startIndex: 0,
139 size: 1000000
140 };
141 var encoder = HDP.getEncoder();
142 var encrypted = encoder.encode(JSON.stringify(data));
143 let params = {
144 appId: "0489fba68acd11e98c527cd30aeb749e",
145 appKey: "9524a3c59a5d4460bd141a2a93a5db17",
146 func: "queryInquiryList",
147 data: encrypted
148 };
149 exportTable(params);
150 },
151 showDialog() {
152 this.exportDialogVisible = true;
153 },
154 formatTableDate(row, column) {
155 return formatDate.format(new Date(row.hdp_created), "yyyy-MM-dd hh:mm");
156 },
157 handleCurrentChange(val) {
158 this.page = val;
159 this.reqQuery();
160 },
161 reqQuery() {
162 let _this = this;
163 _this.listLoading = true;
164 let data = {
165 startIndex: (this.page - 1) * this.pageSize,
166 size: this.pageSize,
167 mobile_phone: this.filters.mobilePhone,
168 start_time: this.startTime,
169 end_time: this.endTime
170 };
171 as.queryFunV2("queryInquiryList", data, res => {
172 console.log("queryInquiryList res:", res);
173 _this.page = 1;
174 _this.listLoading = false;
175 if (res) {
176 let reservationList = res[0];
177 let total = res[1][0].total;
178 _this.total = total;
179 _this.$set(_this.totalData, "reservationList", reservationList);
180 }
181 });
182 }
183 },
184 mounted() {
185 this.reqQuery();
186 },
187 created() {}
188 };
189 </script>
190
191 <style lang="scss" scoped>
192 .page-container {
193 padding: 20px;
194 }
195
196 .tool-wrap {
197 padding: 24px 0;
198 display: flex;
199 border-bottom: solid 1px #cccccc;
200 justify-content: space-between;
201 }
202
203 .toolbar {
204 display: flex;
205 justify-content: space-between;
206 .page-tips {
207 height: 32px;
208 line-height: 32px;
209 color: #333333;
210 }
211 }
212
213 .dialog {
214 .tips {
215 margin-right: 24px;
216 }
217 }
218 </style>
...@@ -97,6 +97,7 @@ export default { ...@@ -97,6 +97,7 @@ export default {
97 .then(() => { 97 .then(() => {
98 this.loading = false 98 this.loading = false
99 this.$router.push({ path: this.redirect || '/' }) 99 this.$router.push({ path: this.redirect || '/' })
100 // this.$router.push({ path: '/dictionary/pv' })
100 }) 101 })
101 .catch(() => { 102 .catch(() => {
102 this.loading = false 103 this.loading = false
......
1 // var HDP = require("./hdp-4.4.0.min.js")
2
3 var as = {};
4
5 /*------------------初始化基础数据 start---------------------*/
6 as.domains = "https://" + document.domain + "/4Gh6/";
7 as.AppID = "0489fba68acd11e98c527cd30aeb749e";
8 as.AppKey = "9524a3c59a5d4460bd141a2a93a5db17";
9
10 //默认头像
11 as.defineAvatar = "http://cdn.aiwanpai.com/s/d.jpg";
12
13 as.shareLink = as.domains + "index.html";
14 as.shareTitle = "";
15 as.shareDesc = "";
16 as.shareImgUrl = as.domains + "share.jpg";
17 as.success = function () {};
18 as.appSuccess = function () {};
19
20 as.openid = "";
21 as.wxUserInfo = {};
22 as.isSubscribe = false; //是否关注
23 as.rankName = "rank"; //排行榜名称
24 /*------------------初始化基础数据 end-----------------------*/
25
26 /*------------------HDP初始化 start---------------------*/
27 HDP.init(as.AppID, as.AppKey);
28 weixinGetConfig();
29
30 //隐藏分享到朋友圈
31 hideMenuItemsTimeLink();
32 //隐藏微信右上角菜单
33 // hideOptionMenu();
34
35 //以下初始化不需要使用可以注释掉
36 as.weixin = HDP.weixin(); //微信
37 as.redis = HDP.redis(); //keyvaluestore
38 as.func = HDP.getFunction(); //自定义函数
39 as.rand = HDP.rand(); //抽奖
40 // as.piplus = HDP.getPiplus(); //派加接口
41 as.co = HDP.getAppCooperation(); //协作
42 // as.rank = HDP.rank(); //排行榜
43 // as.jpgCdn = HDP.getJpgCDN(); //图片路径转换
44 as.wxMultimedia = HDP.wxMultimedia(); //语音
45 as.file = HDP.getFile(); //上传图片
46 /*------------------HDP初始化 end-----------------------*/
47
48 /*------------------微信相关 start---------------------*/
49 //分享设置
50 as.setShare = function (link, title, desc, imgurl) {
51 as.weixin.initShare({
52 "link": (link != "") ? link : as.shareLink,
53 "appMessageTitle": (title != "") ? title : as.shareTitle,
54 "appMessageDesc": (desc != "") ? desc : as.shareDesc,
55 "appMessageImgUrl": (imgurl != "") ? imgurl : as.shareImgUrl,
56 "appMessageShareSucc": as.appSuccess,
57
58 "timelineTitle": (desc != "") ? desc : as.shareDesc,
59 "timelineImgUrl": (imgurl != "") ? imgurl : as.shareImgUrl,
60 "timelineShareSucc": as.success
61 });
62 };
63 as.setShare("", "", "", "");
64
65 //获取用户微信信息
66 as.getWxUserInfo = function (callback) {
67 as.weixin.getUserInfoV2({
68 "success": function (res) {
69 if (res && res.nickname) {
70 if (res.nickname.indexOf('"') > -1) {
71 res.nickname = res.nickname.replace(/"/g, '“');
72 }
73 if (res.nickname.indexOf("'") > -1) {
74 res.nickname = res.nickname.replace(/'/g, "‘");
75 }
76 }
77 if (res && res.avatar == "") {
78 res.avatar = as.defineAvatar;
79 }
80 as.wxUserInfo = res;
81 if (as.wxUserInfo && as.wxUserInfo.openid) {
82 as.openid = as.wxUserInfo.openid;
83 }
84
85 if (typeof callback == "function") {
86 callback(as.openid)
87 };
88 },
89 "error": function (res) {
90 if (typeof callback == "function") {
91 callback("")
92 };
93 }
94 });
95 };
96 //判断是否关注了公众号
97 as.isAttention = function (callback) {
98 as.weixin.isSubscribe({
99 "success": function (res) {
100 as.isSubscribe = (res["subscribe"] == 1) ? true : false;
101 if (typeof callback == "function")
102 callback(as.isSubscribe);
103 },
104 "error": function (res) {
105 if (typeof callback == "function")
106 callback(false);
107 }
108 });
109 };
110 //领取卡券
111 as.addCard = function (cardId, openid, callback) {
112 as.weixin.addCard({
113 "cardId": cardId,
114 "code": "",
115 "openid": openid,
116 "succ": function (res) {
117 console.log('领取卡券成功');
118 if (typeof callback == "function")
119 callback(true);
120 },
121 "error": function (res) {
122 console.log('领取卡券失败');
123 if (typeof callback == "function")
124 callback(false);
125 }
126 });
127 };
128 /*------------------微信相关 end---------------------*/
129
130 /*------------------keyvaluestore start---------------------*/
131 as.setRedisKeyValue = function (key, value, callback) {
132 var redisOp = {
133 "param": {
134 "valueKey": key,
135 "value": value
136 },
137 "success": function (res) {
138 var bool = res.code == "180001";
139 if (typeof callback == "function") callback(bool);
140 },
141 "error": function (res) {
142 if (typeof callback == "function") callback(false);
143 }
144 };
145 as.redis.set(redisOp);
146 };
147 as.getRedisKeyValue = function (key, callback) {
148 var redisOp = {
149 "param": {
150 "valueKey": key
151 },
152 "success": function (res) {
153 if (res.code == "181001") {
154 if (typeof callback == "function") callback(res["returnMap"][key]);
155 } else {
156 if (typeof callback == "function") callback(null);
157 }
158 },
159 "error": function (res) {
160 if (typeof callback == "function") callback(null);
161 }
162 };
163 as.redis.get(redisOp);
164 };
165 as.getRedisList = function (key, callback) {
166 var redisOp = {
167 "param": {
168 "valueKey": key
169 },
170 "success": function (res) {
171 if (res.code == "181001") {
172 if (typeof callback == "function") callback(res["returnMap"]);
173 } else {
174 if (typeof callback == "function") callback(null);
175 }
176 },
177 "error": function (res) {
178 if (typeof callback == "function") callback(null);
179 }
180 };
181 as.redis.getList(redisOp);
182 };
183 /*------------------keyvaluestore end-----------------------*/
184
185 /*------------------自定义函数 start---------------------*/
186 //单语句查询
187 as.queryFun = function (funName, data, callback) {
188 as.func.runFunction(funName, {
189 "param": data,
190 "success": function (res) {
191 if (typeof callback == "function") callback(res);
192 },
193 "error": function (res) {
194 if (typeof callback == "function") callback(null);
195 }
196 });
197 };
198 //插入,修改,多语句查询
199 as.queryFunV2 = function (funName, data, callback) {
200 as.func.runFunctionV2(funName, {
201 "param": data,
202 "success": function (res) {
203 if (typeof callback == "function") callback(res);
204 },
205 "error": function (res) {
206 if (typeof callback == "function") callback(null);
207 }
208 });
209 };
210 /*------------------自定义函数 end---------------------*/
211
212 /*------------------抽奖相关 start---------------------*/
213 //抽奖
214 as.gameLottery = function (callback) {
215 as.rand.rand({
216 "success": function (res) {
217 if (typeof callback == "function") callback(res);
218 },
219 "error": function (res) {
220 if (typeof callback == "function") callback({
221 "result": false
222 });
223 }
224 });
225 };
226 //时间戳格式化(YYYY-mm-dd)
227 as.timestampFormat = function (timestamp) {
228 var myDate = new Date();
229 if (timestamp) myDate.setTime(timestamp);
230 var year = myDate.getFullYear();
231 var month = myDate.getMonth() + 1;
232 if (month < 10) month = "0" + month;
233 var day = myDate.getDate();
234 if (day < 10) day = "0" + day;
235
236 var format = "";
237 format += year + "-" + month + "-" + day;
238 return format;
239 };
240 /*------------------抽奖相关 end-----------------------*/
241
242 /*------------------协作相关 start---------------------*/
243 //从当前链接中获取邀请码 hdp_cooperation_id
244 as.getCodeFromCurrentUrl = function (callback) {
245 as.co.getCodeFromCurrentUrl(function (cooperationId) {
246 if (typeof callback == "function") callback(cooperationId);
247 });
248 };
249 //根据邀请码重置分享链接
250 as.cooperationSetShareLink = function (resourceId, desc) {
251 if (resourceId != "") {
252 if (as.shareLink.indexOf("?") > 0) {
253 var link = as.shareLink + "&hdp_cooperation_id=" + resourceId;
254 } else {
255 var link = as.shareLink + "?hdp_cooperation_id=" + resourceId;
256 }
257 as.setShare(link, "", desc, "");
258 }
259 };
260 //生成邀请码
261 as.insertResourceId = function (jsonStr, callback) {
262 if (typeof (jsonStr) != 'string') {
263 jsonStr = JSON.stringify(jsonStr);
264 }
265 as.co.uploadAppCooperationInfo({
266 "param": {
267 "jsonStr": jsonStr
268 },
269 "success": function (res) {
270 if (res && res.success) {
271 if (typeof callback == "function") callback(res.content);
272 } else {
273 if (typeof callback == "function") callback("");
274 }
275 },
276 "error": function (res) {
277 if (typeof callback == "function") callback("");
278 }
279 });
280 };
281 //判断当前邀请码状态,分辨邀请者身份
282 as.checkResourceId = function (resourceId, callback) {
283 as.co.checkAppCooperationInfoSelfOrNot({
284 "param": {
285 "resourceId": resourceId
286 },
287 "success": function (res) {
288 if (res && res.success) {
289 //res.content :"not exist"非邀请链接;"true"自己的分享链接;"false"他人的分享链接
290 if (typeof callback == "function") callback(res.content);
291 } else {
292 if (typeof callback == "function") callback("not exist");
293 }
294 },
295 "error": function (res) {
296 if (typeof callback == "function") callback("not exist");
297 }
298 });
299 };
300 //读取用户所有邀请码
301 as.getResourceId = function (callback) {
302 as.co.queryCurrentUserAppCooperationInfoIdList({
303 "success": function (res) {
304 if (typeof callback == "function") callback(res);
305 },
306 "error": function (res) {
307 if (typeof callback == "function") callback([]);
308 }
309 });
310 };
311 //读取当前邀请码信息
312 as.getUserInfoByResourceId = function (resourceId, callback) {
313 as.co.queryCurrentAppCooperationInfo({
314 "param": {
315 "resourceId": resourceId
316 },
317 "success": function (res) {
318 if (typeof callback == "function") callback(res);
319 },
320 "error": function (res) {
321 if (typeof callback == "function") callback(null);
322 }
323 });
324 };
325 //为邀请码点赞
326 as.addPraise = function (resourceId, callback) {
327 as.co.praise({
328 "param": {
329 "resourceId": resourceId
330 },
331 "success": function (res) {
332 if (typeof callback == "function") callback(res);
333 },
334 "error": function (res) {
335 if (typeof callback == "function") callback(false);
336 }
337 });
338 };
339 //读取邀请码的点赞数
340 as.getPraise = function (resourceId, callback) {
341 as.co.getPraiseRecordTotalByResourceId({
342 "param": {
343 "resourceId": resourceId
344 },
345 "success": function (res) {
346 if (typeof callback == "function") callback(res);
347 },
348 "error": function (res) {
349 if (typeof callback == "function") callback(0);
350 }
351 });
352 };
353 //判断用户是否为邀请码点赞
354 as.checkUserPraise = function (resourceId, callback) {
355 as.co.checkCurrentUserPraiseOrNot({
356 "param": {
357 "resourceId": resourceId
358 },
359 "success": function (res) {
360 if (typeof callback == "function") callback(res);
361 },
362 "error": function (res) {
363 if (typeof callback == "function") callback(false);
364 }
365 });
366 };
367 as.getPraiseLog = function (resourceId, page, size, callback) {
368 as.co.queryPraiseRecordListByResourceId({
369 "param": {
370 "resourceId": resourceId,
371 "page": page,
372 "size": size
373 },
374 "success": function (res) {
375 if (typeof callback == "function") callback(res);
376 },
377 "error": function (res) {
378 if (typeof callback == "function") callback([]);
379 }
380 });
381 };
382 //为邀请码评论
383 as.addComment = function (resourceId, content, callback) {
384 as.co.comment({
385 "param": {
386 "resourceId": resourceId,
387 "content": content,
388 "parentId": "",
389 "remark": ""
390 },
391 "success": function (res) {
392 if (typeof callback == "function") callback(res);
393 },
394 "error": function (res) {
395 if (typeof callback == "function") callback(null);
396 }
397 });
398 };
399 //评论列表
400 as.queryCommentList = function (resourceId, page, size, callback) {
401 as.co.queryAppCooperationInfoCommentRecordList({
402 "param": {
403 "resourceId": resourceId,
404 "page": page,
405 "size": size,
406 "ascending": false
407 },
408 "success": function (res) {
409 if (typeof callback == "function") callback(res);
410 },
411 "error": function (res) {
412 if (typeof callback == "function") callback([]);
413 }
414 });
415 };
416 //读取邀请码评论数
417 as.queryCommentCount = function (resourceId, callback) {
418 as.co.getAppCooperationInfoCommentRecordTotal({
419 "param": {
420 "resourceId": resourceId
421 },
422 "success": function (res) {
423 if (typeof callback == "function") callback(res);
424 },
425 "error": function (res) {
426 if (typeof callback == "function") callback(0);
427 }
428 });
429 };
430 //当前用户对邀请码的评论总数
431 as.queryCommentCountByUser = function (resourceId, callback) {
432 as.co.getCurrentUserAppCooperationInfoCommentRecordTotal({
433 "param": {
434 "resourceId": resourceId
435 },
436 "success": function (res) {
437 if (typeof callback == "function") callback(res);
438 },
439 "error": function (res) {
440 if (typeof callback == "function") callback(0);
441 }
442 });
443 };
444 /*------------------协作相关 end-----------------------*/
445
446 /*------------------排行榜相关 start---------------------*/
447 /*
448 * 提交成绩
449 * rankName : 排行榜名字
450 * score : 游戏分数
451 * spendTime : 游戏耗时
452 */
453 as.rankSubmitScore = function (score, spendTime, callback) {
454 as.rank.saveRankScore({
455 "param": {
456 "rankName": as.rankName,
457 "score": score,
458 "spendTime": spendTime
459 },
460 "success": function (res) {
461 if (typeof callback == "function") callback(res);
462 },
463 "error": function (res) {
464 if (typeof callback == "function") callback(null);
465 }
466 });
467 };
468 //查询排行榜(包含当前用户的排行记录)
469 as.rankQueryRankList = function (page, size, callback) {
470 as.rank.queryRankList({
471 "param": {
472 "rankName": as.rankName,
473 "selfInclude": true,
474 "page": page,
475 "size": size
476 },
477 "success": function (res) {
478 if (typeof callback == "function") callback(res);
479 },
480 "error": function (res) {
481 if (typeof callback == "function") callback(null);
482 }
483 });
484 };
485 //查询当前用户排名
486 as.rankQueryUserRankRecord = function (callback) {
487 as.rank.queryUserRankRecord({
488 "param": {
489 "rankName": as.rankName
490 },
491 "success": function (res) {
492 if (typeof callback == "function") callback(res);
493 },
494 "error": function (res) {
495 if (typeof callback == "function") callback(null);
496 }
497 });
498 };
499 //查询当前用户的记录
500 as.rankQueryRankHistory = function (callback) {
501 as.rank.queryRankHistory({
502 "param": {
503 "rankName": as.rankName
504 },
505 "success": function (res) {
506 console.log(res, "rankQueryUserRankRecord success");
507 if (typeof callback == "function") callback(res);
508 },
509 "error": function (res) {
510 console.log(res.response, "rankQueryUserRankRecord error");
511 if (typeof callback == "function") callback(null);
512 }
513 });
514 };
515 /*------------------排行榜相关 end-----------------------*/
516
517 /*------------------派加接口相关 start---------------------*/
518 //读取用户积分
519 as.getIntegral = function (callback) {
520 as.piplus.readUserIntegral({
521 "success": function (res) {
522 if (res && res.integral) {
523 if (typeof callback == "function") callback(res.integral);
524 } else {
525 if (typeof callback == "function") callback(0);
526 }
527 },
528 "error": function (res) {
529 if (typeof callback == "function") callback(0);
530 }
531 });
532 };
533 //判断当前用户是否会员
534 as.checkMember = function (callback) {
535 as.piplus.isMember({
536 "success": function (res) {
537 if (typeof callback == "function") callback(res);
538 },
539 "error": function (res) {
540 if (typeof callback == "function") callback({
541 "isMember": false,
542 "integral": 0
543 });
544 }
545 });
546 };
547 //查询当前用户会员信息
548 as.readMember = function (callback) {
549 as.piplus.readMember({
550 "success": function (res) {
551 if (typeof callback == "function") callback(res);
552 },
553 "error": function (res) {
554 if (typeof callback == "function") callback({
555 "status": false
556 });
557 }
558 });
559 };
560 //同步会员信息
561 as.commonSaveUserInfo = function (user_name, mobile, province, city, area, address, birthday, tags, callback) {
562 as.piplus.commonSaveUserInfo({
563 "param": {
564 "user_name": user_name,
565 "mobile": mobile,
566 "province": province,
567 "city": city,
568 "area": area,
569 "address": address,
570 "birthday": birthday,
571 "tags": tags
572 },
573 "success": function (res) {
574 if (typeof callback == "function") callback(res);
575 },
576 "error": function (res) {
577 if (typeof callback == "function") callback({
578 "status": false
579 });
580 }
581 });
582 };
583 //获取省份
584 as.getProvinces = function (callback) {
585 as.piplus.getProvinces({
586 "success": function (res) {
587 if (res.http_status && res.errmsg == "success") {
588 if (typeof callback == "function") callback(res.data);
589 } else {
590 if (typeof callback == "function") callback([]);
591 }
592 },
593 "error": function (res) {
594 if (typeof callback == "function") callback([]);
595 }
596 });
597 };
598 //获取城市
599 as.getCity = function (regionId, callback) {
600 as.piplus.getCity({
601 "param": {
602 "regionId": regionId
603 },
604 "success": function (res) {
605 if (res.http_status && res.errmsg == "success") {
606 if (typeof callback == "function") callback(res.data);
607 } else {
608 if (typeof callback == "function") callback([]);
609 }
610 },
611 "error": function (res) {
612 if (typeof callback == "function") callback([]);
613 }
614 });
615 };
616 //获取区域
617 as.getArea = function (regionId, callback) {
618 as.piplus.getCity({
619 "param": {
620 "regionId": regionId
621 },
622 "success": function (res) {
623 if (res.http_status && res.errmsg == "success") {
624 if (typeof callback == "function") callback(res.data);
625 } else {
626 if (typeof callback == "function") callback([]);
627 }
628 },
629 "error": function (res) {
630 if (typeof callback == "function") callback([]);
631 }
632 });
633 };
634 /*------------------派加接口相关 end-----------------------*/
635
636 /*------------------图片路径转换 start---------------------*/
637 as.getJpgCdnUrl = function (imgUrl, callback) {
638 as.jpgCdn.getJpgCDNUrl({
639 "param": {
640 "imgUrl": imgUrl
641 },
642 "success": function (res) {
643 if (res && res.success) {
644 if (typeof callback == "function") callback(res.content);
645 } else {
646 if (typeof callback == "function") callback(null);
647 }
648 },
649 "error": function (res) {
650 if (typeof callback == "function") callback(null);
651 }
652 });
653 };
654 as.getCdnImg = function (imgName, callback) {
655 if (typeof callback == "function")
656 callback(as.jpgCdn.getCDNImg(imgName));
657 };
658 as.designImg = function (imgName, height, callback) {
659 if (typeof callback == "function")
660 callback(as.jpgCdn.designImg(imgName, height));
661 };
662 /*------------------图片路径转换 end-----------------------*/
663
664 /*------------------上传照片相关 start---------------------*/
665 as.uploadBase64 = function (base64, callback) {
666 as.file.uploadBase64(base64, as.AppID, {
667 "success": function (res) {
668 var obj = {
669 "result": true,
670 "data": res
671 };
672 if (typeof callback == "function") callback(obj);
673 },
674 "error": function (res) {
675 if (typeof callback == "function") callback({
676 "result": false
677 });
678 }
679 });
680 };
681 /*------------------上传照片相关 end-----------------------*/
682
683 /*------------------微信语音 start---------------------*/
684 //开始录音
685 as.startRecord = function (callback) {
686 if (typeof wx != "undefined" && wx != void 0) {
687 var completeFn = function (res) {
688 if (res["errMsg"] == "startRecord:ok") {
689 if (typeof callback == "function") callback(true);
690 }
691 }
692
693 wx.startRecord({
694 cancel: function () {
695 alert('用户拒绝授权录音');
696 if (typeof callback == "function") callback(false);
697 },
698 complete: completeFn,
699 });
700 // if (typeof callback == "function") callback(true);
701 } else {
702 if (typeof callback == "function") callback(false);
703 }
704 };
705 //停止录音
706 as.stopRecord = function (callback) {
707 if (typeof wx != "undefined" && wx != void 0) {
708 wx.stopRecord({
709 success: function (res) {
710 if (typeof callback == "function") callback(res.localId);
711 }
712 });
713 } else {
714 if (typeof callback == "function") callback("");
715 }
716 };
717 //上传语音到微信服务器
718 as.uploadVoice = function (localId, callback) {
719 if (typeof wx != "undefined" && wx != void 0 && localId != "") {
720 wx.uploadVoice({
721 "localId": localId, // 需要上传的音频的本地ID,由stopRecord接口获得
722 "isShowProgressTips": 1, // 默认为1,显示进度提示
723 "success": function (res) {
724 if (typeof callback == "function") callback(res.serverId);
725 }
726 });
727 } else {
728 if (typeof callback == "function") callback("");
729 }
730 };
731 //下载微信服务语音到本地
732 as.downloadVoice = function (serverId, callback) {
733 if (typeof wx != "undefined" && wx != void 0 && serverId != "") {
734 wx.downloadVoice({
735 "serverId": serverId, // 需要下载的音频的服务器端ID,由uploadVoice接口获得
736 "isShowProgressTips": 1, // 默认为1,显示进度提示
737 "success": function (res) {
738 if (res && res.localId) {
739 if (typeof callback === "function") callback(res.localId);
740 } else {
741 if (typeof callback === "function") callback("");
742 }
743 }
744 });
745 } else {
746 if (typeof callback === "function") callback("");
747 }
748 };
749
750 //保存录音
751 as.saveUserVoice = function (vid, serverId, callback) {
752 as.wxMultimedia.record({
753 "param": {
754 "vId": vid,
755 "serverId": serverId
756 },
757 "success": function (res) {
758 if (res && res.code == 10000) {
759 if (typeof callback == "function") callback(true);
760 } else {
761 if (typeof callback == "function") callback(false);
762 }
763 },
764 "error": function (res) {
765 if (typeof callback == "function") callback(false);
766 }
767 });
768 };
769 //读取单个录音
770 as.getUserVoice = function (vid, callback) {
771 try {
772 as.wxMultimedia.get({
773 "param": {
774 "vId": vid
775 },
776 "success": function (res) {
777 if (typeof callback == "function") callback(res);
778 },
779 "error": function (res) {
780 if (typeof callback == "function") callback(null);
781 }
782 });
783 } catch (e) {
784 if (typeof callback == "function") callback(null);
785 }
786 };
787
788 //播放声音
789 as.playVoice = function (localId, voiceStatus, voiceUrl, serverId, callback) {
790 if (localId != "") {
791 as.playRecord(localId, function () {
792 if (typeof callback == "function") callback(true, null);
793 });
794 } else if ((voiceStatus == "CONVERT_SUCCESS" || voiceStatus == 6) && voiceUrl != "") {
795 var dom = document.getElementsByTagName("body")[0];
796 var nDiv = document.createElement("div");
797 nDiv.style.width = "0px";
798 nDiv.style.height = "0px";
799 nDiv.style.position = "absolute";
800 var sound = document.createElement("audio");
801 sound.src = voiceUrl;
802 //sound.preload= "preload";
803 //sound.src = src;
804 nDiv.appendChild(sound);
805 dom.appendChild(nDiv);
806 sound.addEventListener("ended", function () {
807 if (typeof callback === "function") callback(true, null);
808 }, false);
809 sound.play();
810 } else if (serverId != "") {
811 as.downloadVoice(serverId, function (res) {
812 as.playRecord(res, function () {
813 if (typeof callback == "function") callback(true, res);
814 });
815 });
816 } else {
817 if (typeof callback === "function") callback(false, null);
818 }
819 };
820 //播放录音(微信)
821 as.playRecord = function (localId, callback) {
822 if (typeof wx != "undefined" && wx != void 0 && localId != "") {
823 wx.playVoice({
824 localId: localId // 需要播放的音频的本地ID,由stopRecord接口获得
825 });
826
827 wx.onVoicePlayEnd({
828 success: function (res) {
829 if (typeof callback === "function") callback(true);
830 }
831 });
832 } else {
833 if (typeof callback === "function") callback(false);
834 }
835 };
836 //停止播放录音(微信)
837 as.stopVoice = function (localId) {
838 if (typeof wx != "undefined" && wx != void 0 && localId != "") {
839 wx.stopVoice({
840 localId: localId
841 });
842 }
843 };
844 /*------------------微信语音 end---------------------*/
845
846 /*------------------其它 start---------------------*/
847 /*
848 * tableName 要存的表的名字
849 * data 为字典结构
850 * 例如 data = {}
851 * data["key"] = value;
852 */
853 as.saveTable = function (tableName, value, callback) {
854 var table = HDP.getTable(tableName);
855 for (var key in value) {
856 table.set(key, value[key]);
857 }
858 table.save({
859 "success": function (res) {
860 if (typeof callback == "function") callback(res);
861 },
862 "error": function (res) {
863 if (typeof callback == "function") callback(null);
864 }
865 });
866 };
867 /*------------------其它 end-----------------------*/
868
869 /*------------------ 以下为定制化接口 ---------------------*/
870 as.bizInterface = null;
871 //多奖池抽奖
872 as.bizManyLottery = function (appId, callback) {
873 if (as.bizInterface == null) {
874 as.bizInterface = HDP.getBizInterface();
875 }
876
877 if (appId == undefined || appId == null || appId == "") {
878 if (typeof callback == "function") callback({
879 "result": false
880 });
881 }
882
883 as.bizInterface.manyLottery({
884 "param": {
885 "appId": appId
886 },
887 "success": function (res) {
888 if (res && res.success && res.content) {
889 if (typeof callback == "function") callback(res.content);
890 } else {
891 if (typeof callback == "function") callback({
892 "result": false
893 });
894 }
895 },
896 "error": function (res) {
897 if (typeof callback == "function") callback({
898 "result": false
899 });
900 }
901 });
902 };
903
904 // module.exports = as;
This diff could not be displayed because it is too large.
1 !function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(this,function(e,n){function i(n,i,t){e.WeixinJSBridge?WeixinJSBridge.invoke(n,o(i),function(e){c(n,e,t)}):u(n,t)}function t(n,i,t){e.WeixinJSBridge?WeixinJSBridge.on(n,function(e){t&&t.trigger&&t.trigger(e),c(n,e,i)}):t?u(n,t):u(n,i)}function o(e){return e=e||{},e.appId=P.appId,e.verifyAppId=P.appId,e.verifySignType="sha1",e.verifyTimestamp=P.timestamp+"",e.verifyNonceStr=P.nonceStr,e.verifySignature=P.signature,e}function r(e){return{timeStamp:e.timestamp+"",nonceStr:e.nonceStr,package:e.package,paySign:e.paySign,signType:e.signType||"SHA1"}}function a(e){return e.postalCode=e.addressPostalCode,delete e.addressPostalCode,e.provinceName=e.proviceFirstStageName,delete e.proviceFirstStageName,e.cityName=e.addressCitySecondStageName,delete e.addressCitySecondStageName,e.countryName=e.addressCountiesThirdStageName,delete e.addressCountiesThirdStageName,e.detailInfo=e.addressDetailInfo,delete e.addressDetailInfo,e}function c(e,n,i){"openEnterpriseChat"==e&&(n.errCode=n.err_code),delete n.err_code,delete n.err_desc,delete n.err_detail;var t=n.errMsg;t||(t=n.err_msg,delete n.err_msg,t=s(e,t),n.errMsg=t),(i=i||{})._complete&&(i._complete(n),delete i._complete),t=n.errMsg||"",P.debug&&!i.isInnerInvoke&&alert(JSON.stringify(n));var o=t.indexOf(":");switch(t.substring(o+1)){case"ok":i.success&&i.success(n);break;case"cancel":i.cancel&&i.cancel(n);break;default:i.fail&&i.fail(n)}i.complete&&i.complete(n)}function s(e,n){var i=e,t=h[i];t&&(i=t);var o="ok";if(n){var r=n.indexOf(":");"confirm"==(o=n.substring(r+1))&&(o="ok"),"failed"==o&&(o="fail"),-1!=o.indexOf("failed_")&&(o=o.substring(7)),-1!=o.indexOf("fail_")&&(o=o.substring(5)),"access denied"!=(o=(o=o.replace(/_/g," ")).toLowerCase())&&"no permission to execute"!=o||(o="permission denied"),"config"==i&&"function not exist"==o&&(o="ok"),""==o&&(o="fail")}return n=i+":"+o}function d(e){if(e){for(var n=0,i=e.length;n<i;++n){var t=e[n],o=g[t];o&&(e[n]=o)}return e}}function u(e,n){if(!(!P.debug||n&&n.isInnerInvoke)){var i=h[e];i&&(e=i),n&&n._complete&&delete n._complete,console.log('"'+e+'",',n||"")}}function l(e){if(!(I||T||P.debug||C<"6.0.2"||x.systemType<0)){var n=new Image;x.appId=P.appId,x.initTime=V.initEndTime-V.initStartTime,x.preVerifyTime=V.preVerifyEndTime-V.preVerifyStartTime,b.getNetworkType({isInnerInvoke:!0,success:function(e){x.networkType=e.networkType;var i="https://open.weixin.qq.com/sdk/report?v="+x.version+"&o="+x.isPreVerifyOk+"&s="+x.systemType+"&c="+x.clientVersion+"&a="+x.appId+"&n="+x.networkType+"&i="+x.initTime+"&p="+x.preVerifyTime+"&u="+x.url;n.src=i}})}}function p(){return(new Date).getTime()}function f(n){w&&(e.WeixinJSBridge?n():S.addEventListener&&S.addEventListener("WeixinJSBridgeReady",n,!1))}function m(){b.invoke||(b.invoke=function(n,i,t){e.WeixinJSBridge&&WeixinJSBridge.invoke(n,o(i),t)},b.on=function(n,i){e.WeixinJSBridge&&WeixinJSBridge.on(n,i)})}if(!e.jWeixin){var g={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},h=function(){var e={};for(var n in g)e[g[n]]=n;return e}(),S=e.document,y=S.title,v=navigator.userAgent.toLowerCase(),_=navigator.platform.toLowerCase(),I=!(!_.match("mac")&&!_.match("win")),T=-1!=v.indexOf("wxdebugger"),w=-1!=v.indexOf("micromessenger"),k=-1!=v.indexOf("android"),M=-1!=v.indexOf("iphone")||-1!=v.indexOf("ipad"),C=function(){var e=v.match(/micromessenger\/(\d+\.\d+\.\d+)/)||v.match(/micromessenger\/(\d+\.\d+)/);return e?e[1]:""}(),V={initStartTime:p(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},x={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:M?1:k?2:-1,clientVersion:C,url:encodeURIComponent(location.href)},P={},A={_completes:[]},B={state:0,data:{}};f(function(){V.initEndTime=p()});var b={config:function(e){P=e,u("config",e);var n=!1!==P.check;f(function(){if(n)i(g.config,{verifyJsApiList:d(P.jsApiList)},function(){A._complete=function(e){V.preVerifyEndTime=p(),B.state=1,B.data=e},A.success=function(e){x.isPreVerifyOk=0},A.fail=function(e){A._fail?A._fail(e):B.state=-1};var e=A._completes;return e.push(function(){l()}),A.complete=function(n){for(var i=0,t=e.length;i<t;++i)e[i]();A._completes=[]},A}()),V.preVerifyStartTime=p();else{B.state=1;for(var e=A._completes,t=0,o=e.length;t<o;++t)e[t]();A._completes=[]}}),P.beta&&m()},ready:function(e){0!=B.state?e():(A._completes.push(e),!w&&P.debug&&e())},error:function(e){C<"6.0.2"||(-1==B.state?e(B.data):A._fail=e)},checkJsApi:function(e){var n=function(e){var n=e.checkResult;for(var i in n){var t=h[i];t&&(n[t]=n[i],delete n[i])}return e};i("checkJsApi",{jsApiList:d(e.jsApiList)},(e._complete=function(e){if(k){var i=e.checkResult;i&&(e.checkResult=JSON.parse(i))}e=n(e)},e))},onMenuShareTimeline:function(e){t(g.onMenuShareTimeline,{complete:function(){i("shareTimeline",{title:e.title||y,desc:e.title||y,img_url:e.imgUrl||"",link:e.link||location.href,type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareAppMessage:function(e){t(g.onMenuShareAppMessage,{complete:function(n){"favorite"===n.scene?i("sendAppMessage",{title:e.title||y,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""}):i("sendAppMessage",{title:e.title||y,desc:e.desc||"",link:e.link||location.href,img_url:e.imgUrl||"",type:e.type||"link",data_url:e.dataUrl||""},e)}},e)},onMenuShareQQ:function(e){t(g.onMenuShareQQ,{complete:function(){i("shareQQ",{title:e.title||y,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareWeibo:function(e){t(g.onMenuShareWeibo,{complete:function(){i("shareWeiboApp",{title:e.title||y,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},onMenuShareQZone:function(e){t(g.onMenuShareQZone,{complete:function(){i("shareQZone",{title:e.title||y,desc:e.desc||"",img_url:e.imgUrl||"",link:e.link||location.href},e)}},e)},startRecord:function(e){i("startRecord",{},e)},stopRecord:function(e){i("stopRecord",{},e)},onVoiceRecordEnd:function(e){t("onVoiceRecordEnd",e)},playVoice:function(e){i("playVoice",{localId:e.localId},e)},pauseVoice:function(e){i("pauseVoice",{localId:e.localId},e)},stopVoice:function(e){i("stopVoice",{localId:e.localId},e)},onVoicePlayEnd:function(e){t("onVoicePlayEnd",e)},uploadVoice:function(e){i("uploadVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadVoice:function(e){i("downloadVoice",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},translateVoice:function(e){i("translateVoice",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},chooseImage:function(e){i("chooseImage",{scene:"1|2",count:e.count||9,sizeType:e.sizeType||["original","compressed"],sourceType:e.sourceType||["album","camera"]},(e._complete=function(e){if(k){var n=e.localIds;try{n&&(e.localIds=JSON.parse(n))}catch(e){}}},e))},previewImage:function(e){i(g.previewImage,{current:e.current,urls:e.urls},e)},uploadImage:function(e){i("uploadImage",{localId:e.localId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},downloadImage:function(e){i("downloadImage",{serverId:e.serverId,isShowProgressTips:0==e.isShowProgressTips?0:1},e)},getNetworkType:function(e){var n=function(e){var n=e.errMsg;e.errMsg="getNetworkType:ok";var i=e.subtype;if(delete e.subtype,i)e.networkType=i;else{var t=n.indexOf(":"),o=n.substring(t+1);switch(o){case"wifi":case"edge":case"wwan":e.networkType=o;break;default:e.errMsg="getNetworkType:fail"}}return e};i("getNetworkType",{},(e._complete=function(e){e=n(e)},e))},openLocation:function(e){i("openLocation",{latitude:e.latitude,longitude:e.longitude,name:e.name||"",address:e.address||"",scale:e.scale||28,infoUrl:e.infoUrl||""},e)},getLocation:function(e){e=e||{},i(g.getLocation,{type:e.type||"wgs84"},(e._complete=function(e){delete e.type},e))},hideOptionMenu:function(e){i("hideOptionMenu",{},e)},showOptionMenu:function(e){i("showOptionMenu",{},e)},closeWindow:function(e){i("closeWindow",{},e=e||{})},hideMenuItems:function(e){i("hideMenuItems",{menuList:e.menuList},e)},showMenuItems:function(e){i("showMenuItems",{menuList:e.menuList},e)},hideAllNonBaseMenuItem:function(e){i("hideAllNonBaseMenuItem",{},e)},showAllNonBaseMenuItem:function(e){i("showAllNonBaseMenuItem",{},e)},scanQRCode:function(e){i("scanQRCode",{needResult:(e=e||{}).needResult||0,scanType:e.scanType||["qrCode","barCode"]},(e._complete=function(e){if(M){var n=e.resultStr;if(n){var i=JSON.parse(n);e.resultStr=i&&i.scan_code&&i.scan_code.scan_result}}},e))},openAddress:function(e){i(g.openAddress,{},(e._complete=function(e){e=a(e)},e))},openProductSpecificView:function(e){i(g.openProductSpecificView,{pid:e.productId,view_type:e.viewType||0,ext_info:e.extInfo},e)},addCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,card_ext:a.cardExt};t.push(c)}i(g.addCard,{card_list:t},(e._complete=function(e){var n=e.card_list;if(n){for(var i=0,t=(n=JSON.parse(n)).length;i<t;++i){var o=n[i];o.cardId=o.card_id,o.cardExt=o.card_ext,o.isSuccess=!!o.is_succ,delete o.card_id,delete o.card_ext,delete o.is_succ}e.cardList=n,delete e.card_list}},e))},chooseCard:function(e){i("chooseCard",{app_id:P.appId,location_id:e.shopId||"",sign_type:e.signType||"SHA1",card_id:e.cardId||"",card_type:e.cardType||"",card_sign:e.cardSign,time_stamp:e.timestamp+"",nonce_str:e.nonceStr},(e._complete=function(e){e.cardList=e.choose_card_info,delete e.choose_card_info},e))},openCard:function(e){for(var n=e.cardList,t=[],o=0,r=n.length;o<r;++o){var a=n[o],c={card_id:a.cardId,code:a.code};t.push(c)}i(g.openCard,{card_list:t},e)},consumeAndShareCard:function(e){i(g.consumeAndShareCard,{consumedCardId:e.cardId,consumedCode:e.code},e)},chooseWXPay:function(e){i(g.chooseWXPay,r(e),e)},openEnterpriseRedPacket:function(e){i(g.openEnterpriseRedPacket,r(e),e)},startSearchBeacons:function(e){i(g.startSearchBeacons,{ticket:e.ticket},e)},stopSearchBeacons:function(e){i(g.stopSearchBeacons,{},e)},onSearchBeacons:function(e){t(g.onSearchBeacons,e)},openEnterpriseChat:function(e){i("openEnterpriseChat",{useridlist:e.userIds,chatname:e.groupName},e)}};return n&&(e.wx=e.jWeixin=b),b}});
...\ No newline at end of file ...\ No newline at end of file