Commit c4176e46d8820fd649352f510c6e44156b5c9fe7
0 parents
Exists in
master
add file
Showing
11 changed files
with
1958 additions
and
0 deletions
Show diff stats
.gitignore
File was created | 1 | .idea/ | |
2 | run/ | ||
3 | *.pyc | ||
4 |
handlers/__init__.py
handlers/index.py
File was created | 1 | # coding: utf-8 | |
2 | |||
3 | import tornado.web | ||
4 | |||
5 | class BaseHandler(tornado.web.RequestHandler): | ||
6 | |||
7 | def __init__(self, *args, **kwargs): | ||
8 | super(BaseHandler, self).__init__(*args, **kwargs) | ||
9 | x_real_ip = self.request.headers.get("X-Real-IP") | ||
10 | self.remote_ip = self.request.remote_ip if not x_real_ip else x_real_ip | ||
11 | |||
12 | def render(self, template_name, **kwargs): | ||
13 | super(BaseHandler, self).render(template_name, **kwargs) | ||
14 | |||
15 | class IndexHandler(BaseHandler): | ||
16 | |||
17 | def get(self): | ||
18 | return self.render('index.html') | ||
19 | |||
20 | |||
21 | class WebAppHandler(BaseHandler): | ||
22 | |||
23 | def get(self): | ||
24 | return self.render('webapp.html') | ||
25 |
log.py
File was created | 1 | # coding: utf-8 | |
2 | |||
3 | from os import path | ||
4 | import logging.config | ||
5 | |||
6 | def init_log(log_dir, debug=False): | ||
7 | if not path.exists(log_dir): | ||
8 | print 'log path is not exist:%s' % log_dir | ||
9 | exit(-1) | ||
10 | |||
11 | config = { | ||
12 | 'version': 1, | ||
13 | 'disable_existing_loggers': False, | ||
14 | 'formatters': { | ||
15 | 'default': { | ||
16 | 'format': '%(levelname)s %(asctime)s %(module)s:%(funcName)s:%(lineno)d %(message)s' | ||
17 | }, | ||
18 | 'simple': { | ||
19 | 'format': '%(level)s %(message)s' | ||
20 | } | ||
21 | }, | ||
22 | 'handlers': { | ||
23 | 'console': { | ||
24 | 'level': 'DEBUG', | ||
25 | 'class': 'logging.StreamHandler', | ||
26 | 'formatter': 'default', | ||
27 | }, | ||
28 | 'file': { | ||
29 | 'level': 'DEBUG', | ||
30 | 'class': 'logging.handlers.RotatingFileHandler', | ||
31 | 'filename': path.join(log_dir, 'webapp.log'), | ||
32 | 'maxBytes': 1024 * 1024 * 50, | ||
33 | 'backupCount': 5, | ||
34 | 'formatter': 'default', | ||
35 | }, | ||
36 | }, | ||
37 | 'loggers': { | ||
38 | 'starmachine': { | ||
39 | 'handlers': ['console', 'file'], | ||
40 | 'level': 'DEBUG', | ||
41 | 'propagate': False, | ||
42 | }, | ||
43 | } | ||
44 | } | ||
45 | |||
46 | logging.config.dictConfig(config) | ||
47 |
server.py
File was created | 1 | # coding: utf-8 | |
2 | |||
3 | import os | ||
4 | import tornado.ioloop | ||
5 | import tornado.autoreload | ||
6 | import tornado.web | ||
7 | from tornado.options import define, options, parse_command_line | ||
8 | import settings | ||
9 | from log import init_log | ||
10 | |||
11 | |||
12 | def init_settings(): | ||
13 | # 加载环境配置项 | ||
14 | define('port', default=8080, type=int, help=u'监听端口') | ||
15 | define("log_dir", default='run', type=str, help=u'日志目录') | ||
16 | define('profile', default='local', type=str, help=u'运行配置') | ||
17 | |||
18 | parse_command_line() | ||
19 | init_log(options.log_dir) | ||
20 | return options | ||
21 | |||
22 | def start_application(): | ||
23 | from url import urls | ||
24 | log_dir = os.path.join(os.path.dirname(__file__), 'run') | ||
25 | application_settings = { | ||
26 | 'handlers': urls, | ||
27 | 'debug': settings.DEBUG, | ||
28 | 'template_path': os.path.join(os.path.dirname(__file__), 'templates'), | ||
29 | 'static_path': os.path.join(os.path.dirname(__file__), 'static'), | ||
30 | } | ||
31 | application = tornado.web.Application(**application_settings) | ||
32 | |||
33 | print 'server on port %s' % settings.PORT | ||
34 | print 'server log on %s' % log_dir | ||
35 | |||
36 | application.listen(settings.PORT) | ||
37 | io_loop = tornado.ioloop.IOLoop.instance() | ||
38 | |||
39 | io_loop.start() | ||
40 | |||
41 | def run(): | ||
42 | init_settings() | ||
43 | start_application() | ||
44 | |||
45 | if __name__ == '__main__': | ||
46 | run() |
settings.py
File was created | 1 | # coding: utf-8 | |
2 | |||
3 | DEBUG = True | ||
4 | PORT = 8080 |
static/img/banner.png
20.2 KB
static/js/tpl.js
File was created | 1 | $(function(){ | |
2 | // 轮播图 | ||
3 | var mySwiper = new Swiper ('.swiper-container', { | ||
4 | direction: 'horizontal', | ||
5 | loop: true, | ||
6 | // 如果需要分页器 | ||
7 | pagination: '.swiper-pagination', | ||
8 | // 如果需要前进后退按钮 | ||
9 | nextButton: '.swiper-button-next', | ||
10 | prevButton: '.swiper-button-prev' | ||
11 | }); | ||
12 | $(".banner-wrap").height(window.innerWidth * 430 / 2732); | ||
13 | var pages = [1], | ||
14 | col = parseInt((+$('body').width() * 0.8 < 750 ? 750 : +$('body').width() * 0.8) / 227), | ||
15 | _template = '<li data-id="${app_id}" data-desc="${description}" data-logo="${logo}" class="js-tpl"><img class="cover" src="${cover}" onerror="errorWeiyeCover(this)"><p class="name">${app_name}' | ||
16 | + '</p><div class="code-mask"><img class="code" src="${qrcode}" alt="">' | ||
17 | + '<span class="select-btn js-preview-btn">预览</span>${copy}</div></li> ', | ||
18 | _cataData = {}, | ||
19 | _appData = {}, | ||
20 | cdnUrl="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend"; | ||
21 | getCategory(); | ||
22 | $('body').on('click', '#first-navs span', function(event) { | ||
23 | if($(this).hasClass('active')){ | ||
24 | return; | ||
25 | } | ||
26 | var cate = $(this).attr("data-cate"), | ||
27 | index = $(this).index(); | ||
28 | |||
29 | $(this).addClass('active').siblings('.active').removeClass('active'); | ||
30 | $(".tpl-content").eq(index).addClass('active').siblings('.active').removeClass('active'); | ||
31 | if($(this).hasClass('js-uninitial')){ | ||
32 | $(this).removeClass('js-uninitial'); | ||
33 | if ($('.tpl-content.active .tpl-container').hasClass('js-requesting')) { | ||
34 | return; | ||
35 | }; | ||
36 | $('.tpl-content.active .tpl-container').addClass('js-requesting'); | ||
37 | getTpls(cate, index); | ||
38 | } | ||
39 | }).on('click','.tpl-sec-navs span' ,function(event) { | ||
40 | if($(this).hasClass('active')){ | ||
41 | return; | ||
42 | } | ||
43 | var cate = $(this).attr("data-cate"), | ||
44 | index = $("#first-navs .active").index(); | ||
45 | |||
46 | $(this).addClass('active').siblings('.active').removeClass('active'); | ||
47 | pages[index] = 1; | ||
48 | $(".tpl-container").removeClass('js-no-more').eq(index).find('.js-tpl').remove(); | ||
49 | getTpls(cate, index); | ||
50 | }).on('click', '.choose-btn', function(event) { | ||
51 | // var appId = $(this).parent().parent().attr('data-id'); | ||
52 | // if($(this).hasClass('js-preview-btn')){ | ||
53 | // initialPreview(appId); | ||
54 | // $('#preview-tpl-dialog').show('slow'); | ||
55 | // $('#add-app-dialog').attr('data-id', appId).attr('data-color', ''); | ||
56 | // }else{ | ||
57 | // $('#add-app-dialog').attr('data-id', appId).attr('data-color', '').show('slow'); | ||
58 | // } | ||
59 | |||
60 | var $li = $(this).closest('li'), | ||
61 | param = { | ||
62 | app_name : $li.children('.name').text(), | ||
63 | description: '' , | ||
64 | logo : cdnUrl + '/static/invitation/images/logo.png', | ||
65 | cover: cdnUrl + '/static/webapp/images/share_feng.jpg' , | ||
66 | f_app_id : $li.attr("data-id") | ||
67 | }; | ||
68 | addApp($(this) , param); | ||
69 | event.stopPropagation(); | ||
70 | }).on('click', '.code-mask', function(event) { | ||
71 | var appId = $(this).closest('li').attr('data-id'); | ||
72 | window.open('/webapp/?r=pc/Webapp/preview&id=' + appId +'&f_tpl=1'); | ||
73 | }).on('click', '.empty-tpl', function(event) { | ||
74 | // var appId = $(this).attr('data-id'); | ||
75 | // $('#add-app-dialog').attr('data-id', appId).attr('data-color', '').show('slow'); | ||
76 | var $li = $(this).closest('li'), | ||
77 | param = { | ||
78 | app_name : '我的应用', | ||
79 | description: '', | ||
80 | logo : cdnUrl + '/static/invitation/images/logo.png', | ||
81 | cover: cdnUrl + '/static/webapp/images/share_feng.jpg' | ||
82 | }; | ||
83 | addApp($(this) , param); | ||
84 | }) | ||
85 | |||
86 | |||
87 | function getCategory(){ | ||
88 | $ajax('/index.php?r=pc/AppData/AppCategoryList','get',{type : 0},'json', | ||
89 | function(data){ | ||
90 | if (data.status === 0) { | ||
91 | var categorys = data.data, | ||
92 | contentsStr = '', | ||
93 | firstCateStr = ''; | ||
94 | if(categorys.length){ | ||
95 | $(categorys).each(function(index, item) { | ||
96 | var secCates = item.cate, | ||
97 | contentStr = '<div class="tpl-content '+(index==0 ? 'active' : '')+'"><div class="tpl-sec-navs">', | ||
98 | secCatesStr = ''; | ||
99 | |||
100 | if(secCates.length > 0){ | ||
101 | secCatesStr += '<span data-cate="'+item.id+'" class="active">全部</span>'; | ||
102 | $(secCates).each(function(index, el) { | ||
103 | secCatesStr += '<span data-cate="'+el.id+'">'+el.name+'</span>'; | ||
104 | }); | ||
105 | } | ||
106 | |||
107 | firstCateStr += '<span data-cate="'+item.id+'" class="'+(index==0 ? 'active' : 'js-uninitial')+'">'+item.name+'</span>' | ||
108 | contentStr += secCatesStr + '</div><ul class="tpl-container"><li class="empty-tpl" data-id="-1"><div class="note-icon"></div><p class="name">空白模板</p></li></ul></div>'; | ||
109 | contentsStr += contentStr; | ||
110 | pages.push(1); | ||
111 | }); | ||
112 | |||
113 | $('#first-navs').append(firstCateStr); | ||
114 | $('body').append(contentsStr); | ||
115 | if (window.location.hash == '#single') { | ||
116 | // 线上data-cate = 12 | ||
117 | $('#first-navs span[data-cate="12"]').trigger('click'); | ||
118 | }; | ||
119 | getTpls(categorys[0].id , 0); | ||
120 | }else{ | ||
121 | // 没有分类时 | ||
122 | $('#first-navs span').eq(0).trigger('click'); | ||
123 | } | ||
124 | }else{ | ||
125 | alertTip(data.data); | ||
126 | } | ||
127 | },function(data){ | ||
128 | alertTip(data.data); | ||
129 | }); | ||
130 | } | ||
131 | |||
132 | function getTpls(cate, index){ | ||
133 | var $container = $('.tpl-container').eq(index), | ||
134 | param = {type: 0, page: pages[index], page_size: 20}; | ||
135 | |||
136 | if(cate == -1){ | ||
137 | param.user = 1; | ||
138 | }else{ | ||
139 | param.cate_id = cate; | ||
140 | } | ||
141 | $ajax('/index.php?r=pc/AppData/AppTplList','get',param,'json', | ||
142 | function(data){ | ||
143 | if (data.status === 0) { | ||
144 | var tpls = data.data; | ||
145 | tpls.length && dealData(tpls, $container, index); | ||
146 | |||
147 | pages[index]++; | ||
148 | if(data.is_more == 0){ | ||
149 | $container.addClass('js-no-more'); | ||
150 | } | ||
151 | }else{ | ||
152 | alertTip(data.data); | ||
153 | } | ||
154 | $container.removeClass('js-requesting'); | ||
155 | }, | ||
156 | function(data){ | ||
157 | alertTip(data.tpls); | ||
158 | $container.removeClass('js-requesting') | ||
159 | }); | ||
160 | } | ||
161 | |||
162 | function dealData(tpls, $container, index){ | ||
163 | $container.find('.filler').remove(); | ||
164 | |||
165 | var content = '', | ||
166 | addAmount = tpls.length, | ||
167 | curAmount = $container.find('.js-tpl').length, | ||
168 | temp = (addAmount+curAmount)%col, | ||
169 | fillerAmount = ( temp ? col : 0 ), // 需要增加的filler个数 | ||
170 | shadowLis = ''; | ||
171 | |||
172 | $.each(tpls, function(i, item){ | ||
173 | content += ' ' + parseTemplate(item, index); | ||
174 | }); | ||
175 | for(var i=0; i<fillerAmount; i++){ | ||
176 | shadowLis += ' <li class="filler"> </li>'; | ||
177 | } | ||
178 | content += shadowLis; | ||
179 | |||
180 | $container.append(content); | ||
181 | } | ||
182 | |||
183 | // 拼接请求到的数据内容 | ||
184 | function parseTemplate(data , index){ | ||
185 | var html = _template.replace(/\$\{(\w+)\}/g, function($0, $1){ | ||
186 | switch($1){ | ||
187 | case 'copy': | ||
188 | // if(index==0){ | ||
189 | // return '<span class="select-btn choose-btn">复制</span>'; | ||
190 | // }else{ | ||
191 | return '<span class="select-btn choose-btn">选择</span>'; | ||
192 | // } | ||
193 | |||
194 | default : | ||
195 | return data[$1]; | ||
196 | } | ||
197 | }); | ||
198 | return html; | ||
199 | } | ||
200 | |||
201 | |||
202 | // .on('click', '#group-page-container .group-nav', function(event) { | ||
203 | // // 组折叠 | ||
204 | // event.preventDefault(); | ||
205 | // var target = $(this).parent(); | ||
206 | // target.toggleClass('active'); | ||
207 | // }).on('click', '#group-page-container .page-nav', function(event) { | ||
208 | // if($(this).hasClass('active')){ | ||
209 | // return; | ||
210 | // } | ||
211 | // $('.page-nav.active').removeClass('active'); | ||
212 | // $(this).addClass('active'); | ||
213 | |||
214 | // var router = $(this).attr('data-router'), | ||
215 | // $preview = $('#preview-iframe'), | ||
216 | // url = '/app?_app_id='+$('#add-app-dialog').attr('data-id')+'&router='+router, | ||
217 | // customFeature = _appData[router].customFeature; | ||
218 | |||
219 | // if(customFeature.form){ | ||
220 | // url += '&detail=-1'; | ||
221 | // } | ||
222 | // $preview.attr('src',url); | ||
223 | // }).on('click', '.style-color-wrap li', function(event) { | ||
224 | // $(this).addClass('selected').siblings('.selected').removeClass('selected'); | ||
225 | // setColor($(this).attr('data-color')); | ||
226 | // }).on('click', '.zhichi-dialog .js-btn', function(event) { | ||
227 | // var type = $(this).attr('data-type'); | ||
228 | // switch (type){ | ||
229 | // case 'next': | ||
230 | // // $('#preview-tpl-dialog').hide(); | ||
231 | // $('#add-app-dialog').show(); | ||
232 | // break; | ||
233 | // case 'add': | ||
234 | // addApp($(this)); | ||
235 | // break; | ||
236 | // case 'cancel': | ||
237 | // $('#add-app-dialog').hide('slow'); | ||
238 | // break; | ||
239 | // } | ||
240 | // }).on('click', '.change-img-wrap', function(event) { | ||
241 | // // 初始化 打开我的图片 | ||
242 | // showImgResourceBox($(this).find('img')); | ||
243 | // }).on('click', '.style-palette li', function(event) { | ||
244 | // if(confirm('您确定要更换应用的风格颜色吗?此操作会影响该应用所有的顶部导航/底部导航/按钮/分类/标题/分割线。')){ | ||
245 | // color = $(this).attr('data-color'); | ||
246 | // me.savePage(); | ||
247 | // me.setStyleColor(); | ||
248 | // me.parsePage($('#group-page-container .page-nav.active').attr('data-router')); | ||
249 | // me.sthChange(); | ||
250 | // }else{ | ||
251 | // return false; | ||
252 | // } | ||
253 | // }); | ||
254 | // | ||
255 | $(window).scroll(function(event) { | ||
256 | var $content = $('.tpl-content.active'), | ||
257 | $container = $content.find('.tpl-container'); | ||
258 | if ($container.hasClass('js-requesting') || $container.hasClass('js-no-more')) { | ||
259 | return; | ||
260 | } | ||
261 | var scTop = $(this).scrollTop() + 50, | ||
262 | scheight = $(document).height() - $(this).height(); | ||
263 | if(scTop >= scheight){ | ||
264 | var index = $('#first-navs > .active').index(), | ||
265 | cate = $content.find('.tpl-sec-navs .active').attr('data-cate') || $('#first-navs > .active').attr('data-cate'); | ||
266 | $container.addClass('js-requesting'); | ||
267 | getTpls(cate, index); | ||
268 | } | ||
269 | }); | ||
270 | |||
271 | // $('#preview-tpl-dialog').zDialog({ | ||
272 | // width: 720, | ||
273 | // height: 620, | ||
274 | // title: 'APP模板预览' | ||
275 | // }); | ||
276 | |||
277 | // $('#add-app-dialog').zDialog({ | ||
278 | // width: 400, | ||
279 | // height: 403, | ||
280 | // title: '创建APP' | ||
281 | // }); | ||
282 | |||
283 | $('#select-color-control').spectrum({ | ||
284 | chooseText: '确定', | ||
285 | cancelText: '取消', | ||
286 | showInput: true, | ||
287 | allowEmpty:false, | ||
288 | containerClassName: 'full-spectrum', | ||
289 | showInitial: true, | ||
290 | showPalette: false, | ||
291 | showSelectionPalette: false, | ||
292 | showAlpha: true, | ||
293 | maxPaletteSize: 10, | ||
294 | preferredFormat: 'hex', | ||
295 | localStorageKey: 'spectrum.demo', | ||
296 | change: function(color){ | ||
297 | setColor(color); | ||
298 | } | ||
299 | }); | ||
300 | |||
301 | function setColor(color){ | ||
302 | var _color = new String(color), | ||
303 | appId = $('#add-app-dialog').attr('data-id'); | ||
304 | $('#add-app-dialog').attr('data-color', _color); | ||
305 | $('#preview-iframe').attr('src', '/app?_app_id='+appId+'&style_color='+encodeURIComponent(_color)); | ||
306 | } | ||
307 | |||
308 | function initialPreview(appId){ | ||
309 | // 预览时 | ||
310 | var $preview = $('#preview-iframe'); | ||
311 | $preview.attr('src', '/app?_app_id='+appId); | ||
312 | |||
313 | $ajax('/index.php?r=pc/AppData/detail','get',{app_id: appId},'json',function(data){ | ||
314 | if (data.status === 0) { | ||
315 | var info = data.data; | ||
316 | |||
317 | _cataData = typeof info.cata_data === 'string' ? JSON.parse(info.cata_data) : info.cata_data; | ||
318 | _appData = typeof info.app_data === 'string' ? JSON.parse(info.app_data) : info.app_data; | ||
319 | |||
320 | parseCata(); | ||
321 | }else{ | ||
322 | alertTip(data.data); | ||
323 | } | ||
324 | |||
325 | }); | ||
326 | } | ||
327 | function parseCata(router){ | ||
328 | var cataStr = '', | ||
329 | targetRouter = router || 'page00', | ||
330 | cataDataContent = _cataData.data; | ||
331 | for(var cata in cataDataContent) { | ||
332 | if(cataDataContent[cata]){ | ||
333 | var pages = cataDataContent[cata].pages, | ||
334 | i = 0; | ||
335 | cataStr += '<li class="group-page-nav active" data-index="'+cataDataContent[cata].index+'"><p class="group-nav">'+cataDataContent[cata].group+'</p><ul class="page-navs">'; | ||
336 | for(var item in pages){ | ||
337 | i++; | ||
338 | cataStr += parsePageNavStr(pages[item].router, pages[item].title, pages[item].name); | ||
339 | } | ||
340 | if(i<=0){ | ||
341 | cataStr += '<p class="empty-group-tip">此分组暂无页面</p>'; | ||
342 | } | ||
343 | |||
344 | cataStr += '</ul></li>'; | ||
345 | } | ||
346 | }; | ||
347 | $('#group-page-container').empty().append(cataStr); | ||
348 | $('#group-page-container .page-nav[data-router="'+targetRouter+'"]').addClass('active'); | ||
349 | } | ||
350 | function parsePageNavStr (router, title, name){ | ||
351 | var str = '<li class="page-nav" data-router="'+router+'" data-title="'+title+'" data-name="'+name+'"><span class="js-page-name">'+name+'</span></li>'; | ||
352 | return str; | ||
353 | } | ||
354 | |||
355 | function addApp($btn , param){ | ||
356 | if($btn.hasClass('requesting')){ | ||
357 | return; | ||
358 | } | ||
359 | // var name = $('#app-name').val(), | ||
360 | // description = $('#app-description').val(), | ||
361 | // logo = $('#app-logo').attr('src'), | ||
362 | // cover = $('#app-cover').attr('src'); | ||
363 | |||
364 | // if(name.length<=0){ | ||
365 | // alertTip('请输入应用名'); | ||
366 | // $('#app-name').focus(); | ||
367 | // return; | ||
368 | // } | ||
369 | |||
370 | // if(description.length<=0){ | ||
371 | // alertTip('请输入应用描述'); | ||
372 | // $('#app-description').focus(); | ||
373 | // return; | ||
374 | // } | ||
375 | // if(logo===cdnUrl+'/static/invitation/images/logo.png'){ | ||
376 | // alertTip('请上传logo'); | ||
377 | // return; | ||
378 | // } | ||
379 | // if(cover===cdnUrl+'/static/webapp/images/share_feng.jpg'){ | ||
380 | // alertTip('请上传封面'); | ||
381 | // return; | ||
382 | // } | ||
383 | |||
384 | // var appId = $('#add-app-dialog').attr('data-id'), | ||
385 | // color = $('#add-app-dialog').attr('data-color'), | ||
386 | // param = { | ||
387 | // app_name : name, | ||
388 | // description: description, | ||
389 | // logo : logo, | ||
390 | // cover: cover, | ||
391 | // style_color: color | ||
392 | // }; | ||
393 | |||
394 | // if(appId!='-1'){ | ||
395 | // // appId=='-1'的话 表示没有选择模版 | ||
396 | // param.f_app_id = appId; | ||
397 | // } | ||
398 | // if(color){ | ||
399 | // // 预览模版,有选择风格颜色并确定使用该模版时,需要把app里相关的组件变化做处理,并把修改后的app_data发给后台保存 | ||
400 | // setAppData(color); | ||
401 | // param.app_data = JSON.stringify(_appData); | ||
402 | // } | ||
403 | |||
404 | $btn.addClass('requesting'); | ||
405 | $ajax('/index.php?r=pc/AppData/add','post', param,'json',function(data){ | ||
406 | $btn.removeClass('requesting'); | ||
407 | if (data.status === 0) { | ||
408 | window.location.href = '/index.php?r=pc/Webapp/edit&id='+data.data; | ||
409 | }else if (data.status === 2) { | ||
410 | loginFunc(); | ||
411 | $('.lr-mask').show('slow'); | ||
412 | } else if (data.status === 3){ | ||
413 | confirmTip({ | ||
414 | text : data.data, | ||
415 | ConfirmText:'立即升级', | ||
416 | CancelText: '暂不升级', | ||
417 | ConfirmFunction : function(){ | ||
418 | window.open('/index.php?r=pc/Index/appVipPacket'); | ||
419 | }, | ||
420 | CancelFunction : function(){ | ||
421 | |||
422 | }, | ||
423 | CloseFunction : function(){ | ||
424 | |||
425 | } | ||
426 | }) | ||
427 | } else { | ||
428 | alertTip(data.data); | ||
429 | } | ||
430 | }, | ||
431 | function(data){ | ||
432 | $btn.removeClass('requesting'); | ||
433 | alertTip(data.data); | ||
434 | }); | ||
435 | } | ||
436 | |||
437 | function setAppData(color){ | ||
438 | for(var router in _appData){ | ||
439 | var eles = _appData[router].eles; | ||
440 | setAppEles(eles, color); | ||
441 | } | ||
442 | } | ||
443 | function setAppEles(eles, color){ | ||
444 | $(eles).each(function(index, ele) { | ||
445 | switch(ele.type){ | ||
446 | case 'top-nav': | ||
447 | case 'bottom-nav': | ||
448 | case 'button': | ||
449 | ele.style = ele.style || {}; | ||
450 | ele.style['background-color'] = color; | ||
451 | break; | ||
452 | case 'classify': | ||
453 | ele.customFeature = ele.customFeature || {}; | ||
454 | ele.customFeature['selectedColor'] = color; | ||
455 | break; | ||
456 | case 'breakline': | ||
457 | ele.style = ele.style || {}; | ||
458 | ele.style['border-color'] = color; | ||
459 | break; | ||
460 | case 'title-ele': | ||
461 | ele.customFeature = ele.customFeature || {}; | ||
462 | ele.customFeature['markColor'] = color; | ||
463 | break; | ||
464 | case 'static-vessel': | ||
465 | case 'free-vessel': | ||
466 | case 'list-vessel': | ||
467 | case 'dynamic-vessel': | ||
468 | case 'form-vessel': | ||
469 | setAppEles(ele.content, color); | ||
470 | break; | ||
471 | case 'layout-vessel': | ||
472 | setAppEles(ele.content.leftEles, color); | ||
473 | setAppEles(ele.content.rightEles, color); | ||
474 | break; | ||
475 | } | ||
476 | }); | ||
477 | } | ||
478 | |||
479 | $("#add-label-span").on('click', function(event) { | ||
480 | $("#add-label").show(); | ||
481 | }); | ||
482 | $("#add-label").on('click', '.labelClose', function(event) { | ||
483 | $("#add-label").hide(); | ||
484 | }); | ||
485 | |||
486 | }); |
templates/index.html
File was created | 1 | ||
2 | <!DOCTYPE html> | ||
3 | <html lang="zh-CN"> | ||
4 | <head> | ||
5 | <title>小程序开发联盟</title> | ||
6 | <meta name="renderer" content="webkit"> | ||
7 | <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" > | ||
8 | <meta charset="UTF-8" name="description" content="小程序开发联盟"> | ||
9 | <meta name="keywords" content="小程序开发联盟"> | ||
10 | <link rel="shortcut icon" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/common/images/favicon.ico" type="image/x-icon"> | ||
11 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/swiper.min.css?version=10213"> | ||
12 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/webuploader.css"> | ||
13 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc/invitation/spectrum/spectrum.css"> | ||
14 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/common.css?version=10213"> | ||
15 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/css/tpl.css?version=10213"> | ||
16 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/jquery.Jcrop.min.css"> | ||
17 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/js/library/jquery-2.1.4.min.js"></script> | ||
18 | </head> | ||
19 | <body class="webapp" is_login="0"> | ||
20 | <!-- 导航 --> | ||
21 | |||
22 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp_home/css/nav.css?version=10213"> | ||
23 | <script type="text/javascript" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/cookie.js"></script> | ||
24 | |||
25 | <div class="nav-wrap"> | ||
26 | <div class="nav-logo"> | ||
27 | <a href="/index.php?r=pc/index/AppHome"> | ||
28 | <img src="http://1251027630.cdn.myqcloud.com/1251027630/ | ||
29 | zhichi_frontend/static/pc/index/img/nav_logo.png" alt=""> | ||
30 | 秀野堂</a> | ||
31 | </div> | ||
32 | <ul class="top-menu"> | ||
33 | <li class="menu-one"> | ||
34 | <a target="_blank">微信小程序</a> | ||
35 | </li> | ||
36 | <li class="menu-one"> | ||
37 | <a target="_blank">Home</a> | ||
38 | </li> | ||
39 | <li class="menu-one"> | ||
40 | <a>发现</a> | ||
41 | </li> | ||
42 | <li class="menu-one"> | ||
43 | <a href="/index.php?r=pc/Webapp/exclusive" target='_blank'>私塾</a> | ||
44 | </li> | ||
45 | <li class="menu-one"> | ||
46 | <a href="/index.php?r=pc/Webapp/AppTpl">我要定制</a> | ||
47 | </li> | ||
48 | </ul> | ||
49 | </div> | ||
50 | <!-- 导航 end --> | ||
51 | <!-- banner --> | ||
52 | <div class="banner-wrap"> | ||
53 | <div class="swiper-container"> | ||
54 | <img src="/static/img/banner.png/" style="width:100%;"/> | ||
55 | </div> | ||
56 | </div> | ||
57 | <!-- banner end --> | ||
58 | <!-- 预览 --> | ||
59 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/webuploader.nolog.min.js"></script> | ||
60 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/jquery.Jcrop.min.js"></script> | ||
61 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc/invitation/spectrum/spectrum.js"></script> | ||
62 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/common.js"></script> | ||
63 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc/invitation/js/tip.js"></script> | ||
64 | <!--<script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/js/tpl.js"></script>--> | ||
65 | <script src="/static/js/tpl.js"></script> | ||
66 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/jquery.Jcrop.min.css"> | ||
67 | <style rel="stylesheet"> | ||
68 | .webapp-box { | ||
69 | position: fixed; | ||
70 | -webkit-transform: translateX(-10000px); | ||
71 | -moz-transform: translateX(-10000px); | ||
72 | transform: translateX(-10000px); | ||
73 | z-index: 1001; | ||
74 | left: 50%; | ||
75 | top: 10%; | ||
76 | width: 603px; | ||
77 | min-height: 460px; | ||
78 | margin-left: -300px; | ||
79 | padding-bottom: 15px; | ||
80 | border: 1px solid #DDD; | ||
81 | border-radius: 10px; | ||
82 | box-shadow: 5px 5px 20px rgba(0,0,0,.4),-5px -5px 20px rgba(0,0,0,.4); | ||
83 | background: #FFF; | ||
84 | } | ||
85 | .webapp-box input[type=file]:focus, .webapp-box input[type=checkbox]:focus, .webapp-box input[type=radio]:focus { | ||
86 | outline: none; | ||
87 | } | ||
88 | |||
89 | |||
90 | .webapp-box-header { | ||
91 | /* position: absolute; | ||
92 | top: 0; | ||
93 | left: 0; | ||
94 | z-index: 2;*/ | ||
95 | width: 100%; | ||
96 | height: 45px; | ||
97 | background: #FFF; | ||
98 | border-bottom: 1px solid #e5e5e5; | ||
99 | border-radius: 10px 10px 0 0; | ||
100 | } | ||
101 | .webapp-box-header-ul { | ||
102 | margin: 12px 0 0 10px; | ||
103 | padding: 0; | ||
104 | font-size: 0; | ||
105 | text-align: center; | ||
106 | } | ||
107 | .webapp-box-header-ul li { | ||
108 | display: inline-block; | ||
109 | padding: 5px 16px; | ||
110 | cursor: pointer; | ||
111 | font-size: 14px; | ||
112 | border-top: 1px solid #ddd; | ||
113 | border-bottom: 1px solid #ddd; | ||
114 | } | ||
115 | .webapp-box-header-ul li:first-child { | ||
116 | border-top-left-radius: 5px; | ||
117 | border-bottom-left-radius: 5px; | ||
118 | border-left: 1px solid #ddd; | ||
119 | } | ||
120 | .webapp-box-header-ul li:last-child { | ||
121 | border-top-right-radius: 5px; | ||
122 | border-bottom-right-radius: 5px; | ||
123 | border-right: 1px solid #ddd; | ||
124 | } | ||
125 | .webapp-box-header-ul li.active { | ||
126 | background: #00a3e9; | ||
127 | color: #FFF; | ||
128 | } | ||
129 | .webapp-box-close { | ||
130 | position: absolute; | ||
131 | top: 15px; | ||
132 | right: 20px; | ||
133 | cursor: pointer; | ||
134 | font-size: 2.1rem; | ||
135 | font-weight: bold; | ||
136 | line-height: 1; | ||
137 | color: #000; | ||
138 | text-shadow: 0 1px 0 #fff; | ||
139 | opacity: .2; | ||
140 | } | ||
141 | .webapp-box-content { | ||
142 | /*position: relative;*/ | ||
143 | /*box-sizing: border-box;*/ | ||
144 | /*padding: 55px 0 50px;*/ | ||
145 | width: 100%; | ||
146 | /*height: 100%;*/ | ||
147 | background: #FFF; | ||
148 | border-radius: 15px; | ||
149 | } | ||
150 | .box-hide { | ||
151 | display: none; | ||
152 | } | ||
153 | .webapp-box-content .box-resource-content { | ||
154 | display: none; | ||
155 | } | ||
156 | .webapp-box-content .webapp-content-tab { | ||
157 | padding-left: 10px; | ||
158 | margin: 0; | ||
159 | max-height: 140px; | ||
160 | overflow-y: auto; | ||
161 | } | ||
162 | .webapp-box-content .webapp-content-tab li { | ||
163 | display: inline-block; | ||
164 | padding: 5px 14px; | ||
165 | margin: 5px 0; | ||
166 | cursor: pointer; | ||
167 | } | ||
168 | .webapp-box-content .webapp-content-tab li.active { | ||
169 | border-radius: 6px; | ||
170 | background: #00a3e9; | ||
171 | color: #FFF; | ||
172 | } | ||
173 | .webapp-box-content .content-top-operation { | ||
174 | /* position: absolute; | ||
175 | bottom: 49px; | ||
176 | left: 0; | ||
177 | right: 0;*/ | ||
178 | background: #f7f7f7; | ||
179 | padding: 8px; | ||
180 | } | ||
181 | .webapp-box-content .content-top-operation ul { | ||
182 | margin: 0; | ||
183 | padding: 0; | ||
184 | } | ||
185 | .content-top-operation .box-operation-menu li { | ||
186 | margin-right: 5px; | ||
187 | } | ||
188 | #webapp-img-box .resource-list-wrap { | ||
189 | /* position: absolute; | ||
190 | top: 100px; | ||
191 | bottom: 100px; | ||
192 | left: 0; | ||
193 | right: 0;*/ | ||
194 | display: none; | ||
195 | height: 290px; | ||
196 | /*width: 100%;*/ | ||
197 | padding-left: 15px; | ||
198 | padding-top: 8px; | ||
199 | overflow-x: hidden; | ||
200 | overflow-y: auto; | ||
201 | } | ||
202 | #webapp-img-box .resource-list li { | ||
203 | display: inline-block; | ||
204 | margin: 0 15px 15px 0; | ||
205 | position: relative; | ||
206 | border: 1px solid transparent; | ||
207 | } | ||
208 | #webapp-img-box .resource-list li:hover, | ||
209 | #webapp-img-box .resource-list li.selected { | ||
210 | border-color: #ccc; | ||
211 | } | ||
212 | #webapp-img-box .resource-list li:hover { | ||
213 | background-color: #ddd; | ||
214 | } | ||
215 | #webapp-img-box .resource-list li.selected:after { | ||
216 | position: absolute; | ||
217 | right: -12px; | ||
218 | top: -10px; | ||
219 | display: block; | ||
220 | width: 24px; | ||
221 | height: 24px; | ||
222 | content: '√'; | ||
223 | color: #fff; | ||
224 | font-family: "微软雅黑"; | ||
225 | line-height: 22px; | ||
226 | text-align: center; | ||
227 | border: 2px solid #fff; | ||
228 | background: #6abb03; | ||
229 | border-radius: 50%; | ||
230 | } | ||
231 | /*.webapp-box-content .resource-list .img-title { | ||
232 | width: 72px; | ||
233 | height: 24px; | ||
234 | line-height: 24px; | ||
235 | margin: 0; | ||
236 | font-size: 12px; | ||
237 | white-space: nowrap; | ||
238 | overflow: hidden; | ||
239 | text-overflow: ellipsis; | ||
240 | }*/ | ||
241 | #webapp-img-box .resource-list .img-operate { | ||
242 | display: none; | ||
243 | position: absolute; | ||
244 | left: 0; | ||
245 | right: 0; | ||
246 | bottom: 0; | ||
247 | z-index: 1; | ||
248 | } | ||
249 | #webapp-my-img .resource-list li:hover .img-operate, | ||
250 | body[data-admin="1"] #webapp-system-img li:hover .img-operate, | ||
251 | body[admin="1"] #webapp-system-img li:hover .img-operate { | ||
252 | display: block; | ||
253 | } | ||
254 | #webapp-img-box .resource-list .img-operate a { | ||
255 | display: table-cell; | ||
256 | width: 1%; | ||
257 | padding: 2px; | ||
258 | text-align: center; | ||
259 | color: #fff; | ||
260 | font-size: 12px; | ||
261 | text-decoration: none; | ||
262 | background-color: rgba(0,0,0,.5); | ||
263 | } | ||
264 | #webapp-img-box .resource-list .img-operate a:hover { | ||
265 | background-color: rgba(0,0,0,.8); | ||
266 | } | ||
267 | #webapp-img-box .resource-list .progress-mask { | ||
268 | position: absolute; | ||
269 | top: 0; | ||
270 | left: 0; | ||
271 | right: 0; | ||
272 | bottom: 0; | ||
273 | background-color: rgba(0,0,0,.8); | ||
274 | z-index: 2; | ||
275 | padding-top: 30px; | ||
276 | color: #fff; | ||
277 | text-align: center; | ||
278 | font-size: 16px; | ||
279 | } | ||
280 | #webapp-img-box .resource-list .upload-fail-tip { | ||
281 | display: none; | ||
282 | } | ||
283 | .webuploader-container { | ||
284 | position: relative; | ||
285 | } | ||
286 | .webapp-box-footer { | ||
287 | position: absolute; | ||
288 | bottom: 0; | ||
289 | left: 0; | ||
290 | right: 0; | ||
291 | height: 50px; | ||
292 | line-height: 40px; | ||
293 | padding-right: 30px; | ||
294 | border-radius: 0 0 10px 10px; | ||
295 | background: #FFF; | ||
296 | border-top: 1px solid #e5e5e5; | ||
297 | z-index: 2; | ||
298 | font-size: 12px; | ||
299 | } | ||
300 | #img-crop-box .webapp-box-footer { | ||
301 | text-align: right; | ||
302 | } | ||
303 | .webapp-box .webuploader-pick { | ||
304 | font-size: inherit !important; | ||
305 | background-color: transparent; | ||
306 | overflow: initial; | ||
307 | } | ||
308 | .webapp-box .resource-select-num { | ||
309 | color: #0034FF; | ||
310 | } | ||
311 | .webapp-box .form-control { | ||
312 | display: inline-block; | ||
313 | width: 120px; | ||
314 | } | ||
315 | .webapp-box .progress-bar { | ||
316 | position: absolute; | ||
317 | left: 365px; | ||
318 | top: 20px; | ||
319 | } | ||
320 | .webapp-box .thumbnail { | ||
321 | display: inline-block; | ||
322 | width: 80px; | ||
323 | height: 80px; | ||
324 | margin: 0; | ||
325 | text-align: center; | ||
326 | font-size: 0; | ||
327 | border: none; | ||
328 | } | ||
329 | .webapp-box .thumbnail:before, .webapp-box .thumbnail:after { | ||
330 | content: ""; | ||
331 | display: inline-block; | ||
332 | width: 0; | ||
333 | height: 100%; | ||
334 | vertical-align: middle; | ||
335 | } | ||
336 | .webapp-box .thumbnail img { | ||
337 | display: inline-block; | ||
338 | max-width: 100%; | ||
339 | max-height: 100%; | ||
340 | vertical-align: middle; | ||
341 | } | ||
342 | #img-crop-box { | ||
343 | width: 700px; | ||
344 | height: 500px; | ||
345 | margin-left: -350px; | ||
346 | } | ||
347 | .img-crop-scope { | ||
348 | width: 508px; | ||
349 | height: 320px; | ||
350 | margin-top: 20px; | ||
351 | text-align: center; | ||
352 | font-size: 0; | ||
353 | border: 1px solid #bbb; | ||
354 | background-color: #ccc; | ||
355 | overflow: hidden; | ||
356 | } | ||
357 | .img-crop-top-input { | ||
358 | padding: 7px 10px; | ||
359 | background-color: #eee; | ||
360 | } | ||
361 | .jcrop-holder > input[type="radio"] { | ||
362 | left: -2000px !important; | ||
363 | } | ||
364 | .webapp-sub-cate { | ||
365 | display: none; | ||
366 | padding: 8px 15px; | ||
367 | } | ||
368 | .webapp-sub-cate > span { | ||
369 | cursor: pointer; | ||
370 | margin-right: 8px; | ||
371 | padding-right: 8px; | ||
372 | border-right: 1px solid; | ||
373 | color: #6c6c6c; | ||
374 | } | ||
375 | .webapp-sub-cate > span.active { | ||
376 | color: #00a3e9; | ||
377 | } | ||
378 | .img-box-ui-radio { | ||
379 | display: inline-block; | ||
380 | width: 22px; | ||
381 | height: 22px; | ||
382 | position: relative; | ||
383 | overflow: visible; | ||
384 | border: 0; | ||
385 | background: 0 0; | ||
386 | -webkit-appearance: none; | ||
387 | outline: 0; | ||
388 | vertical-align: middle; | ||
389 | } | ||
390 | .img-box-ui-radio:before { | ||
391 | content: ''; | ||
392 | display: block; | ||
393 | width: 16px; | ||
394 | height: 16px; | ||
395 | border: 2px solid #dfe0e1; | ||
396 | border-radius: 16px; | ||
397 | background-clip: padding-box; | ||
398 | position: absolute; | ||
399 | left: 0; | ||
400 | top: 0; | ||
401 | } | ||
402 | .img-box-ui-radio:checked:before { | ||
403 | border: 2px solid #18b4ed; | ||
404 | } | ||
405 | .img-box-ui-radio:after { | ||
406 | content: ''; | ||
407 | display: block; | ||
408 | width: 8px; | ||
409 | height: 8px; | ||
410 | background: #dfe0e1; | ||
411 | border-radius: 8px; | ||
412 | position: absolute; | ||
413 | left: 6px; | ||
414 | top: 6px; | ||
415 | } | ||
416 | .img-box-ui-radio:checked:after { | ||
417 | background: #18b4ed; | ||
418 | } | ||
419 | .img-crop-body-left { | ||
420 | float: left; | ||
421 | padding: 10px; | ||
422 | margin: 0 20px; | ||
423 | border: 1px solid #eee; | ||
424 | } | ||
425 | .img-crop-body-left label { | ||
426 | display: block; | ||
427 | padding: 0 8px; | ||
428 | margin: 16px 0; | ||
429 | text-align: right; | ||
430 | } | ||
431 | .img-crop-body-left .img-box-ui-radio { | ||
432 | margin-left: 10px; | ||
433 | } | ||
434 | .webapp-box .btn { | ||
435 | display: inline-block; | ||
436 | padding: 6px 12px; | ||
437 | width: auto; | ||
438 | font-size: 14px; | ||
439 | line-height: 18px; | ||
440 | border: 1px solid #ccc; | ||
441 | border-radius: 3px; | ||
442 | color: #666; | ||
443 | background-color: #fff; | ||
444 | cursor: pointer; | ||
445 | vertical-align: middle; | ||
446 | } | ||
447 | .webapp-box .btn.green { | ||
448 | color: #fff; | ||
449 | background-color: #03d8a2; | ||
450 | border-color: #05C897; | ||
451 | } | ||
452 | .webapp-box .btn.orange { | ||
453 | color: #fff; | ||
454 | background-color: #ff9f22; | ||
455 | border-color: #ee9016; | ||
456 | } | ||
457 | .webapp-box .btn.blue { | ||
458 | color: #fff; | ||
459 | background-color: #1dc6f1; | ||
460 | border-color: #15bbe5; | ||
461 | } | ||
462 | .webapp-box input[type="text"] { | ||
463 | border: 1px solid #ccc; | ||
464 | border-radius: 4px; | ||
465 | font-size: 14px; | ||
466 | line-height: 14px; | ||
467 | padding: 6px; | ||
468 | box-shadow: inset 0 1px 3px rgba(0,0,0,.2); | ||
469 | outline: 0; | ||
470 | -webkit-user-select: text; | ||
471 | } | ||
472 | .webapp-box select { | ||
473 | border: 1px solid #ccc; | ||
474 | border-radius: 4px; | ||
475 | line-height: 14px; | ||
476 | padding: 6px 4px 6px 6px; | ||
477 | box-shadow: inset 0 2px 8px rgba(0,0,0,.2); | ||
478 | outline: 0; | ||
479 | width: 160px; | ||
480 | margin: 0; | ||
481 | } | ||
482 | input[type="file"]{ | ||
483 | opacity: 0; | ||
484 | } | ||
485 | </style> | ||
486 | <div class="tpl-content active"> | ||
487 | <div class="tpl-sec-navs"></div> | ||
488 | <ul class="tpl-container js-no-more"> | ||
489 | <li data-id="pz5ouz71UG" data-desc="undefined" data-logo="undefined" | ||
490 | class="js-tpl"> | ||
491 | <img class="cover" src="http://img.weiye.me/zcimgdir/album/ | ||
492 | file_5816e850e6ff8.jpg" onerror="errorWeiyeCover(this)"> | ||
493 | <p class="name">影视小程序(微信标准)</p> | ||
494 | <div class="code-mask"> | ||
495 | <img class="code" src="http://img.weiye.me/tmp_file/4c35ae9d7bbc06ec8d3384f90d001ee6.png" alt=""> | ||
496 | <span class="select-btn js-preview-btn">预览</span> | ||
497 | <span class="select-btn choose-btn">选择</span> | ||
498 | </div> | ||
499 | </li> | ||
500 | <li data-id="SHq4Dzxth8" data-desc="undefined" data-logo="undefined" | ||
501 | class="js-tpl"> | ||
502 | <img class="cover" src="http://img.weiye.me/zcimgdir/album/ | ||
503 | file_5707497a71a30.jpg" onerror="errorWeiyeCover(this)"> | ||
504 | <p class="name">商品售卖(可支付)</p> | ||
505 | <div class="code-mask"> | ||
506 | <img class="code" src="http://img.weiye.me/tmp_file/ | ||
507 | 372dd5a13d48d91ae24fd55f83164c17.png" alt=""> | ||
508 | <span class="select-btn js-preview-btn">预览</span> | ||
509 | <span class="select-btn choose-btn">选择</span> | ||
510 | </div> | ||
511 | </li> | ||
512 | <li data-id="58v33MQ2mh" data-desc="undefined" data-logo="undefined" | ||
513 | class="js-tpl"> | ||
514 | <img class="cover" src="http://img.zhichiwangluo.com/zcimgdir/album/ | ||
515 | file_569a0c2312394.jpg" onerror="errorWeiyeCover(this)"> | ||
516 | <p class="name">好新闻</p> | ||
517 | <div class="code-mask"> | ||
518 | <img class="code" src="http://img.zhichiwangluo.com/tmp_file/ | ||
519 | a12306b208e330b8790ab6dcefcbf4c6.png" alt=""> | ||
520 | <span class="select-btn js-preview-btn">预览</span> | ||
521 | <span class="select-btn choose-btn">选择</span> | ||
522 | </div> | ||
523 | </li> | ||
524 | <li data-id="zl31CBBC1b" data-desc="undefined" data-logo="undefined" | ||
525 | class="js-tpl"> | ||
526 | <img class="cover" src="http://img.weiye.me/zcimgdir/album/ | ||
527 | file_576df5d02fc70.jpg" onerror="errorWeiyeCover(this)"> | ||
528 | <p class="name">旅游</p> | ||
529 | <div class="code-mask"> | ||
530 | <img class="code" src="http://img.weiye.me/tmp_file/ | ||
531 | 3a6dca9b50f64d5033f020b30f521bdd.png" alt=""> | ||
532 | <span class="select-btn js-preview-btn">预览</span> | ||
533 | <span class="select-btn choose-btn">选择</span> | ||
534 | </div> | ||
535 | </li> | ||
536 | <li data-id="ZSU6l4y4P6" data-desc="undefined" data-logo="undefined" | ||
537 | class="js-tpl"> | ||
538 | <img class="cover" src="http://img.weiye.me/zcimgdir/album/ | ||
539 | file_57fa1d7c68129.jpg" onerror="errorWeiyeCover(this)"> | ||
540 | <p class="name">双十一模板</p> | ||
541 | <div class="code-mask"> | ||
542 | <img class="code" src="http://img.weiye.me/tmp_file/ | ||
543 | 21b9bec8d88a32d9e9731e3a1498e580.png" alt=""> | ||
544 | <span class="select-btn js-preview-btn">预览</span> | ||
545 | <span class="select-btn choose-btn">选择</span> | ||
546 | </div> | ||
547 | </li> | ||
548 | </ul> | ||
549 | </div> | ||
550 | </body> | ||
551 | </html> |
templates/webapp.html
File was created | 1 | ||
2 | <!DOCTYPE html> | ||
3 | <html lang="zh-CN"> | ||
4 | <head> | ||
5 | <title>即速应用-预览</title> | ||
6 | <meta name="renderer" content="webkit"> | ||
7 | <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" > | ||
8 | <meta charset="UTF-8" name="description" content="深圳市咫尺网络科技开发有限公司,专注于移动互联网营销解决方案,拥有微信服务号活动汇,微社区微活动应用,及酷炫的邀请函微页等产品,提供快捷方便活动管理,分享、报名统计,营销推广等服务。精彩活动,尽在咫尺!丰富您的活动,精彩您的人生,快来发起属于您的活动吧!"> | ||
9 | <meta name="keywords" content="活动汇,微活动,咫尺活动,微页,咫尺网络,微杂志,微邀请函,喜帖,电子邀请函,H5应用,APP,微场景,场景应用,微场景制作,场景应用制作"> | ||
10 | <link rel="shortcut icon" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/common/images/favicon.ico" type="image/x-icon"> | ||
11 | <link rel="stylesheet" href="/zhichi_frontend/static/webapp/css/pc_icomoon.css"> | ||
12 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/css/common.css?version=10213"> | ||
13 | <style type="text/css"> | ||
14 | html { | ||
15 | height: 0; | ||
16 | overflow: visible; | ||
17 | } | ||
18 | body { | ||
19 | min-width: 1200px; | ||
20 | background-color: #fff; | ||
21 | padding-top: 10px; | ||
22 | box-sizing: border-box; | ||
23 | transform-origin: center 0; | ||
24 | -webkit-transform-origin: center 0; | ||
25 | -ms-transform-origin: center 0; | ||
26 | -moz-transform-origin: center 0; | ||
27 | } | ||
28 | .preview-wrap { | ||
29 | width: 1180px; | ||
30 | margin-left: auto; | ||
31 | margin-right: auto; | ||
32 | text-align: center; | ||
33 | } | ||
34 | #phone-component { | ||
35 | position: relative; | ||
36 | display: inline-block; | ||
37 | width: 332px; | ||
38 | height: 678px; | ||
39 | margin-left: 80px; | ||
40 | margin-right: 80px; | ||
41 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/6s.png); | ||
42 | background-size: 100% 100%; | ||
43 | background-repeat: no-repeat; | ||
44 | vertical-align: top; | ||
45 | z-index: 999; | ||
46 | } | ||
47 | .phone-head{ | ||
48 | position: absolute; | ||
49 | top: 81px; | ||
50 | left: 22px; | ||
51 | width: 288px; | ||
52 | height: 58px; | ||
53 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone-head.jpg); | ||
54 | background-size: 100% 100%; | ||
55 | background-repeat: no-repeat; | ||
56 | } | ||
57 | .phone-head span{ | ||
58 | color: #fff; | ||
59 | cursor: pointer; | ||
60 | position: absolute; | ||
61 | left: 10px; | ||
62 | top: 25px; | ||
63 | font-size: 14px; | ||
64 | line-height: 25px; | ||
65 | padding-left: 14px; | ||
66 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/left.png); | ||
67 | background-size: auto 15px; | ||
68 | background-repeat: no-repeat; | ||
69 | background-position: left center; | ||
70 | } | ||
71 | .phone-content { | ||
72 | position: absolute; | ||
73 | top: 139px; | ||
74 | left: 22px; | ||
75 | width: 288px; | ||
76 | height: 454px; | ||
77 | overflow: hidden; | ||
78 | background-color: #fff; | ||
79 | } | ||
80 | .preview-iframe { | ||
81 | display: block; | ||
82 | position: relative; | ||
83 | width: 320px; | ||
84 | height: 504px; | ||
85 | transform: scale(0.9); | ||
86 | -webkit-transform: scale(0.9); | ||
87 | -ms-transform: scale(0.9); | ||
88 | -moz-transform: scale(0.9); | ||
89 | transform-origin: 0 0; | ||
90 | -webkit-transform-origin: 0 0; | ||
91 | -ms-transform-origin: 0 0; | ||
92 | -moz-transform-origin: 0 0; | ||
93 | outline: none; | ||
94 | border: none; | ||
95 | } | ||
96 | #phone-component .page::-webkit-scrollbar, | ||
97 | iframe::-webkit-scrollbar { | ||
98 | width: 0; | ||
99 | height: 0; | ||
100 | } | ||
101 | #phone-component .page.dialog-page { | ||
102 | background-color: rgba(0,0,0,.5); | ||
103 | } | ||
104 | .nav-component { | ||
105 | display: inline-block; | ||
106 | width: 220px; | ||
107 | margin-top: 55px; | ||
108 | vertical-align: top; | ||
109 | text-align: left; | ||
110 | } | ||
111 | .left-component{ | ||
112 | width: 250px; | ||
113 | text-align: center; | ||
114 | } | ||
115 | .nav-component .box-title { | ||
116 | color: #535353; | ||
117 | font-size: 14px; | ||
118 | margin-bottom: 15px; | ||
119 | } | ||
120 | .nav-component .box-title.title2{ | ||
121 | margin-top: 30px; | ||
122 | margin-bottom: 15px; | ||
123 | } | ||
124 | .app-link-wrap input , .copy-link-wrap button{ | ||
125 | background-color: #fff; | ||
126 | border: 1px solid #ccc; | ||
127 | color: #535353; | ||
128 | width: 220px; | ||
129 | height: 36px; | ||
130 | font-size: 14px; | ||
131 | outline: none; | ||
132 | } | ||
133 | .app-link-wrap input{ | ||
134 | width: 198px; | ||
135 | height: 38px; | ||
136 | padding: 0 10px; | ||
137 | margin-bottom: 15px; | ||
138 | } | ||
139 | .nav-component .group-page-container { | ||
140 | height: 400px; | ||
141 | line-height: 32px; | ||
142 | color: #fff; | ||
143 | background-color: #fff; | ||
144 | text-indent: 34px; | ||
145 | border: 1px solid #ccc; | ||
146 | overflow-y: auto; | ||
147 | } | ||
148 | .nav-component .group-page-nav .group-nav { | ||
149 | position: relative; | ||
150 | background-color: #8d8d8d; | ||
151 | cursor: pointer; | ||
152 | line-height: 40px; | ||
153 | } | ||
154 | .nav-component .group-page-nav .group-nav:before { | ||
155 | content: ''; | ||
156 | position: absolute; | ||
157 | left: 6px; | ||
158 | top: 7px; | ||
159 | width: 24px; | ||
160 | height: 22px; | ||
161 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/icons.png); | ||
162 | background-repeat: no-repeat; | ||
163 | background-size: auto 24px; | ||
164 | background-position-x: -96px; | ||
165 | } | ||
166 | .nav-component .group-page-nav .group-nav:after { | ||
167 | content: ''; | ||
168 | position: absolute; | ||
169 | right: 12px; | ||
170 | top: 17px; | ||
171 | display: block; | ||
172 | width: 14px; | ||
173 | height: 9px; | ||
174 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/down.png); | ||
175 | background-size: 100% auto; | ||
176 | background-repeat: no-repeat; | ||
177 | } | ||
178 | .nav-component .group-page-nav.active .group-nav:after { | ||
179 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/up.png); | ||
180 | } | ||
181 | .nav-component .group-page-nav .page-navs { | ||
182 | display: none; | ||
183 | background-color: #f4f4f4; | ||
184 | color: #999; | ||
185 | cursor: pointer; | ||
186 | } | ||
187 | .nav-component .group-page-nav .page-navs .page-nav { | ||
188 | position: relative; | ||
189 | line-height: 35px; | ||
190 | background-color: #fff; | ||
191 | border-bottom: 1px solid #c6c6c6; | ||
192 | } | ||
193 | .nav-component .group-page-nav.active .page-navs { | ||
194 | display: block; | ||
195 | } | ||
196 | .nav-component .group-page-nav .page-navs .active{ | ||
197 | background-color: #c6c6c6; | ||
198 | color: #fff; | ||
199 | } | ||
200 | .nav-component .group-page-nav .page-navs li{ | ||
201 | box-sizing: border-box; | ||
202 | -webkit-box-sizing: border-box; | ||
203 | } | ||
204 | .nav-component .group-page-nav .page-navs li:hover { | ||
205 | outline: 1px solid #ffb100; | ||
206 | text-indent: 33px; | ||
207 | border: 1px solid #ffb100; | ||
208 | border-top: 0; | ||
209 | } | ||
210 | .nav-component .group-page-nav .page-navs .empty-group-tip { | ||
211 | background-color: #fff!important; | ||
212 | color: #666; | ||
213 | text-align: center; | ||
214 | text-indent: 0; | ||
215 | cursor: default; | ||
216 | } | ||
217 | #preview-code { | ||
218 | width: 180px; | ||
219 | height: 180px; | ||
220 | } | ||
221 | .code-container { | ||
222 | display: inline-block; | ||
223 | padding: 10px; | ||
224 | border: 1px solid #ccc; | ||
225 | } | ||
226 | .cata-phone-tab { | ||
227 | display: inline-block; | ||
228 | margin-right: 26px; | ||
229 | margin-top: 147px; | ||
230 | cursor: pointer; | ||
231 | } | ||
232 | .cata-phone-tab > div { | ||
233 | padding: 14px 7px; | ||
234 | width: 18px; | ||
235 | margin-left: auto; | ||
236 | margin-right: auto; | ||
237 | color: #666; | ||
238 | border: 1px solid #ccc; | ||
239 | } | ||
240 | .cata-phone-tab > div.active { | ||
241 | color: #fff; | ||
242 | background: #8d8d8d; | ||
243 | border: 1px solid #8d8d8d; | ||
244 | } | ||
245 | .phone-model { | ||
246 | display: none; | ||
247 | } | ||
248 | .phone-model-list { | ||
249 | color: #999; | ||
250 | font-size: 16px; | ||
251 | line-height: 36px; | ||
252 | text-align: center; | ||
253 | } | ||
254 | .phone-model-list li { | ||
255 | margin-bottom: 5px; | ||
256 | border: 1px solid #ccc; | ||
257 | cursor: pointer; | ||
258 | } | ||
259 | .phone-model-list li.active { | ||
260 | color: #fff; | ||
261 | background-color: #8d8d8d; | ||
262 | border-color: #8d8d8d; | ||
263 | } | ||
264 | #phone-component.phone-6plus { | ||
265 | width: 332px; | ||
266 | height: 670px; | ||
267 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/6s.png); | ||
268 | } | ||
269 | #phone-component.phone-6plus .phone-head { | ||
270 | top: 81px; | ||
271 | left: 22px; | ||
272 | width: 288px; | ||
273 | } | ||
274 | #phone-component.phone-6plus .phone-content { | ||
275 | top: 139px; | ||
276 | left: 22px; | ||
277 | width: 288px; | ||
278 | height: 446px; | ||
279 | } | ||
280 | #phone-component.phone-6plus .preview-iframe { | ||
281 | width: 320px; | ||
282 | height: 495px; | ||
283 | transform: scale(0.9); | ||
284 | -webkit-transform: scale(0.9); | ||
285 | -ms-transform: scale(0.9); | ||
286 | -moz-transform: scale(0.9); | ||
287 | } | ||
288 | #phone-component.phone-5s { | ||
289 | width: 312px; | ||
290 | height: 648px; | ||
291 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/5s.png); | ||
292 | } | ||
293 | #phone-component.phone-5s .phone-head { | ||
294 | top: 93px; | ||
295 | left: 25px; | ||
296 | width: 262px; | ||
297 | } | ||
298 | #phone-component.phone-5s .phone-content { | ||
299 | top: 150px; | ||
300 | left: 26px; | ||
301 | width: 260px; | ||
302 | height: 405px; | ||
303 | } | ||
304 | #phone-component.phone-5s .preview-iframe { | ||
305 | width: 320px; | ||
306 | height: 498px; | ||
307 | transform: scale(0.8125); | ||
308 | -webkit-transform: scale(0.8125); | ||
309 | -ms-transform: scale(0.8125); | ||
310 | -moz-transform: scale(0.8125); | ||
311 | } | ||
312 | #phone-component.phone-note4 { | ||
313 | width: 340px; | ||
314 | height: 665px; | ||
315 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/note4.png); | ||
316 | } | ||
317 | #phone-component.phone-note4 .phone-head { | ||
318 | top: 56px; | ||
319 | left: 16px; | ||
320 | width: 306px; | ||
321 | } | ||
322 | #phone-component.phone-note4 .phone-content { | ||
323 | left: 17px; | ||
324 | top: 114px; | ||
325 | width: 305px; | ||
326 | height: 497px; | ||
327 | } | ||
328 | #phone-component.phone-note4 .preview-iframe { | ||
329 | width: 320px; | ||
330 | height: 521px; | ||
331 | transform: scale(0.953215); | ||
332 | -webkit-transform: scale(0.953215); | ||
333 | -ms-transform: scale(0.953215); | ||
334 | -moz-transform: scale(0.953215); | ||
335 | } | ||
336 | #phone-component.phone-p8 { | ||
337 | width: 334px; | ||
338 | height: 650px; | ||
339 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/p8.png); | ||
340 | } | ||
341 | #phone-component.phone-p8 .phone-head { | ||
342 | top: 57px; | ||
343 | left: 10px; | ||
344 | width: 315px; | ||
345 | } | ||
346 | #phone-component.phone-p8 .phone-content { | ||
347 | top: 115px; | ||
348 | left: 10px; | ||
349 | width: 315px; | ||
350 | height: 480px; | ||
351 | } | ||
352 | #phone-component.phone-p8 .preview-iframe { | ||
353 | width: 322px; | ||
354 | height: 491px; | ||
355 | transform: scale(0.978125); | ||
356 | -webkit-transform: scale(0.978125); | ||
357 | -ms-transform: scale(0.978125); | ||
358 | -moz-transform: scale(0.978125); | ||
359 | } | ||
360 | #phone-component.phone-mi4 { | ||
361 | width: 330px; | ||
362 | height: 660px; | ||
363 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/mi4.png); | ||
364 | } | ||
365 | #phone-component.phone-mi4 .phone-head { | ||
366 | top: 63px; | ||
367 | left: 17px; | ||
368 | width: 296px; | ||
369 | } | ||
370 | #phone-component.phone-mi4 .phone-content { | ||
371 | top: 121px; | ||
372 | left: 17px; | ||
373 | width: 296px; | ||
374 | height: 462px; | ||
375 | } | ||
376 | #phone-component.phone-mi4 .preview-iframe { | ||
377 | width: 322px; | ||
378 | height: 503px; | ||
379 | transform: scale(0.91875); | ||
380 | -webkit-transform: scale(0.91875); | ||
381 | -ms-transform: scale(0.91875); | ||
382 | -moz-transform: scale(0.91875); | ||
383 | } | ||
384 | #phone-component.ipad-air { | ||
385 | width: 460px; | ||
386 | height: 660px; | ||
387 | background-image: url(http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/images/phone/ipad-air.png); | ||
388 | } | ||
389 | #phone-component.ipad-air .phone-head { | ||
390 | top: 59px; | ||
391 | left: 30px; | ||
392 | width: 400px; | ||
393 | height: 80px; | ||
394 | } | ||
395 | #phone-component.ipad-air .phone-head > span { | ||
396 | top: 40px; | ||
397 | } | ||
398 | #phone-component.ipad-air .phone-content { | ||
399 | top: 139px; | ||
400 | left: 30px; | ||
401 | width: 400px; | ||
402 | height: 461px; | ||
403 | } | ||
404 | #phone-component.ipad-air .preview-iframe { | ||
405 | width: 323px; | ||
406 | height: 373px; | ||
407 | transform: scale(1.2375); | ||
408 | -webkit-transform: scale(1.2375); | ||
409 | -ms-transform: scale(1.2375); | ||
410 | -moz-transform: scale(1.2375); | ||
411 | } | ||
412 | |||
413 | .bottom-tab { | ||
414 | margin-top: 78px; | ||
415 | width: 36px !important; | ||
416 | padding: 0 !important; | ||
417 | } | ||
418 | .bottom-tab > span { | ||
419 | display: block; | ||
420 | width: 36px; | ||
421 | height: 50px; | ||
422 | line-height: 40px; | ||
423 | font-size: 20px; | ||
424 | text-align: center; | ||
425 | color: #aaa; | ||
426 | cursor: pointer; | ||
427 | background-color: #fff; | ||
428 | } | ||
429 | .bottom-tab > span:first-child { | ||
430 | border-bottom: 1px solid #e7e7e7; | ||
431 | } | ||
432 | .bottom-tab a { | ||
433 | display: inline-block; | ||
434 | color: #aaa; | ||
435 | width: 100%; | ||
436 | height: 100%; | ||
437 | font-size: 12px; | ||
438 | line-height: 1em; | ||
439 | } | ||
440 | .bottom-tab a > span { | ||
441 | display: inline-block; | ||
442 | width: 100%; | ||
443 | margin: 5px 0; | ||
444 | font-size: 20px; | ||
445 | vertical-align: top; | ||
446 | } | ||
447 | </style> | ||
448 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/js/library/jquery-2.1.4.min.js"></script> | ||
449 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc/invitation/js/tip.js"></script> | ||
450 | <script type="text/javascript"> | ||
451 | var scaleRatio = window.innerHeight/683, | ||
452 | scaleStr; | ||
453 | |||
454 | if(scaleRatio > 1){ | ||
455 | scaleRatio = 1; | ||
456 | } | ||
457 | scaleStr = 'scale('+scaleRatio+')'; | ||
458 | window.onload = function(){ | ||
459 | $('.webapp').css({ | ||
460 | transform: scaleStr, | ||
461 | '-webkit-transform': scaleStr, | ||
462 | '-ms-transform': scaleStr, | ||
463 | '-moz-transform': scaleStr | ||
464 | }); | ||
465 | }; | ||
466 | </script> | ||
467 | <script type='text/javascript'> | ||
468 | var _vds = _vds || []; | ||
469 | window._vds = _vds; | ||
470 | (function(){ | ||
471 | _vds.push(['setAccountId', '9fd21c28eb55d8a5']); | ||
472 | (function() { | ||
473 | var vds = document.createElement('script'); | ||
474 | vds.type='text/javascript'; | ||
475 | vds.async = true; | ||
476 | vds.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'dn-growing.qbox.me/vds.js'; | ||
477 | var s = document.getElementsByTagName('script')[0]; | ||
478 | s.parentNode.insertBefore(vds, s); | ||
479 | })(); | ||
480 | })(); | ||
481 | </script> | ||
482 | </head> | ||
483 | <body class="webapp" is_login="0"> | ||
484 | <div id="preview-wrap" class="preview-wrap"> | ||
485 | <div class="nav-component left-component"> | ||
486 | <p class="box-title">扫描二维码预览并分享给朋友</p> | ||
487 | <div class="code-container"> | ||
488 | <img src="" id="preview-code"> | ||
489 | </div> | ||
490 | <p class="box-title title2">或复制链接发送给朋友</p> | ||
491 | <div class="app-link-wrap"><input type="text" id="app-link"></div> | ||
492 | <div class="copy-link-wrap"><button id="copy-link">复制链接</button></div> | ||
493 | </div> | ||
494 | <div id="phone-component" class="phone-6plus"> | ||
495 | <div class="phone-head"><span id="go-back">返回</span></div> | ||
496 | <div id="phone-container" class="phone-content"> | ||
497 | <iframe class="preview-iframe" id="preview-iframe" frameborder="0" allowtransparency="true" seamless></iframe> | ||
498 | </div> | ||
499 | </div> | ||
500 | <div class="cata-phone-tab"> | ||
501 | <div class="tab-item-cata active">目录</div> | ||
502 | <div class="tab-item-phone">机型</div> | ||
503 | <div class="bottom-tab"> | ||
504 | <span><a target="_blank" href="/index.php?r=pc/Webapp/exclusive"><span class="icon-container icon-heart" title="我要定制"></span>定制</a></span> | ||
505 | <span><a target="_blank" href="http://jq.qq.com/?_wv=1027&k=2Fp43Eg"><span class="icon-container icon-earphone"></span>客服</a></span> | ||
506 | </div> | ||
507 | </div> | ||
508 | <div id="nav-component" class="nav-component"> | ||
509 | <p class="box-title">按目录浏览</p> | ||
510 | <ul id="group-page-container" class="group-page-container"></ul> | ||
511 | </div> | ||
512 | <div id="phone-model" class="phone-model nav-component"> | ||
513 | <p class="box-title">此预览仅供参考,以实际设备为准</p> | ||
514 | <ul class="phone-model-list"> | ||
515 | <li class="active" data-type="phone-6plus">iPhone 6 Plus</li> | ||
516 | <li data-type="phone-5s">iPhone 5s</li> | ||
517 | <li data-type="phone-note4">三星Note 4</li> | ||
518 | <li data-type="phone-p8">华为P8</li> | ||
519 | <li data-type="phone-mi4">小米M4</li> | ||
520 | <li data-type="ipad-air">iPad Air 2</li> | ||
521 | </ul> | ||
522 | </div> | ||
523 | </div> | ||
524 | <!-- 登录注册 --> | ||
525 | <link rel="stylesheet" href="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp_home/css/app_login_reg.css?version=10213"> | ||
526 | |||
527 | <script type="text/javascript" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/jquery.md5.js"></script> | ||
528 | <script type="text/javascript" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/cookie.js"></script> | ||
529 | <script type="text/javascript" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp_home/js/app_login_reg.js?version=10213"></script> | ||
530 | <div class="lr-mask" id="login_wrap" user_token=""> | ||
531 | <div class="lr" id="login-panel"> | ||
532 | <div class="lr-left"> | ||
533 | <div class="reg-wrap"> | ||
534 | <img src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/toreg.png"> | ||
535 | <div class="to-reg">注册</div> | ||
536 | </div> | ||
537 | <div class="login-wrap"> | ||
538 | <img src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/tologin.png"> | ||
539 | <div class="to-login">登录</div> | ||
540 | </div> | ||
541 | </div><div class="lr-right"> | ||
542 | <div class="login-info-wrap"> | ||
543 | <div class="title">登录<span>(个人/企业账号)</span></div> | ||
544 | <input style="margin-top: 60px;" id="login-username" type="text" placeholder="邮箱/手机号" class="long-input"> | ||
545 | <input style="margin-top: 20px;" id="login-password" type="password" placeholder="请输入6-20位密码" class="long-input"> | ||
546 | <div class="Rempw"><input type="checkbox" id="remberPw" checked><label for="remberPw">记住密码</label><span class="forgetPw">忘记密码</span></div> | ||
547 | <div id="login-btn" class="login-btn">登录</div> | ||
548 | <p style="padding: 10px 0;">还没有账号?<span class="reg-now">免费注册</span></p> | ||
549 | <div style="margin-top: 10px;"><span class="cross-Line"></span><span style="margin: 0 10px;font-size: 16px;">第三方账号登录</span><span class="cross-Line"></span></div> | ||
550 | <div class="img-qq"> | ||
551 | <a class="login-wx" href="javascript:;"><img title="微信" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/wx.png"></a> | ||
552 | <a class="login_qq" href="http://www.zhichiwangluo.com/index.php?r=Login/qLogin"><img title="QQ" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/qq.png"></a> | ||
553 | <a class="login_wd" href="/index.php?r=Login/wdlogin"><img title="微店" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/wd.png"></a> | ||
554 | <a class="login_qq" href="/index.php?r=login/WMLogin"><img title="微盟" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/weimob.png"></a> | ||
555 | <a class="login_qq" href="/index.php?r=login/WBLogin"><img title="微博" src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/index/images/wb.png"></a> | ||
556 | </div> | ||
557 | </div> | ||
558 | <div class="wx-login" > | ||
559 | <div class="title">微信登录</div> | ||
560 | <img class="code-img" src=""> | ||
561 | <p style="text-align: center;"><span class="cross-Line"></span>微信扫码登录<span class="cross-Line"></span></p> | ||
562 | <p class="account-login" style="margin-top: 30px;text-align: center;color: #3091f2;cursor: pointer;">返回账号登陆</p> | ||
563 | </div> | ||
564 | <div class="reg-info-wrap"> | ||
565 | <div class="reg-type"><span class="active">个人注册</span><span>企业注册</span></div> | ||
566 | <div class="person-reg"> | ||
567 | <img class="code-img" src="" alt=""> | ||
568 | <p style="text-align: center;"><span style="width:55px;" class="cross-Line"></span><span style="margin: 0 5px;">微信扫码注册</span><span style="width:55px;" class="cross-Line"></span></p> | ||
569 | |||
570 | <div class="perfit-info" > | ||
571 | <input style="margin-top: 60px;" type="text" id="perfit-phone" placeholder="手机号" class="long-input"> | ||
572 | <input type="password" placeholder="密码" id="perfit-pw1" class="long-input"> | ||
573 | <input type="password" placeholder="确认密码" id="perfit-pw2" class="long-input"> | ||
574 | <input type="text" placeholder="验证码" id="perfit-code" style="width: 177px"><span class="getPerfitCode">获取验证码</span> | ||
575 | <input type="text" placeholder="邀请码" id="perfit-invite" class="long-input"> | ||
576 | <div class="login-btn" id="perfit-info">注册</div> | ||
577 | </div> | ||
578 | </div> | ||
579 | <div class="company-reg"> | ||
580 | <input type="text" id="reg-fullname" placeholder="企业名称" class="long-input"><!-- <label class="necessary">*</label> --> | ||
581 | <input type="text" id="reg-phone" placeholder="手机号" class="long-input"><img style="width: 20px;vertical-align: middle;margin-left: 10px;" id="reg-phone-exist"><!-- <label class="necessary">*</label> --> | ||
582 | <input type="password" class="reg-password long-input" placeholder="密码" class="long-input"><!-- <label class="necessary">*</label> --> | ||
583 | <input type="password" class="reg-conpassword long-input" placeholder="确认密码" class="long-input"><!-- <label class="necessary">*</label> --> | ||
584 | <input type="text" id="phone-code" placeholder="验证码" class="short-input" style="margin-top: 15px;width: 146px;"><span class="getPhoneCode">获取验证码</span> | ||
585 | <select id="reg-company-type"> | ||
586 | <option value="政府机构">政府机构</option> | ||
587 | <option value="微信">微信</option> | ||
588 | <option value="传媒广告">传媒广告</option> | ||
589 | <option value="电商">电商</option> | ||
590 | <option value="餐饮">餐饮</option> | ||
591 | <option value="家具">家具</option> | ||
592 | <option value="IT">IT</option> | ||
593 | <option value="教育">教育</option> | ||
594 | <option value="房地产">房地产</option> | ||
595 | <option value="服装">服装</option> | ||
596 | <option value="婚庆">婚庆</option> | ||
597 | <option value="娱乐">娱乐</option> | ||
598 | <option value="旅游">旅游</option> | ||
599 | <option value="汽车">汽车</option> | ||
600 | <option value="美容">美容</option> | ||
601 | <option value="摄影">摄影</option> | ||
602 | <option value="公益">公益</option> | ||
603 | <option value="金融">金融</option> | ||
604 | </select> | ||
605 | <div><select id="province-select"><option disabled selected>选择省</option></select><select id="city-select"><option disabled selected>选择市</option></select><select id="area-select"><option disabled selected>选择区</option></select></div> | ||
606 | <div style="margin-top: 15px;"><input id="inviteCode" class="short-input" placeholder="邀请码,可不填"><span class="reg-btn">注册</span></div> | ||
607 | </div> | ||
608 | </div> | ||
609 | <div class="findBackPw"> | ||
610 | <div class="title"><span class="findtype" type="phone">手机找回</span><span class="changetype">通过邮箱找回</span></div> | ||
611 | <div> | ||
612 | <input style="margin-top: 60px;" id="email-or-phone" type="text" class="account long-input" placeholder="注册手机号"> | ||
613 | <input type="text" id="code-input" class="short-input" placeholder="验证码"><span class="getCode">获取验证码</span> | ||
614 | <input type="password" id="newPw1" class="long-input" placeholder="新密码"> | ||
615 | <input type="password" id="newPw2" class="long-input" placeholder="确认密码"> | ||
616 | <div style="margin-top: 25px;" id='findReset' class="login-btn">确认</div> | ||
617 | <p class="login-now" style="margin-top: 30px;text-align: center;color: #3091f2;cursor: pointer;">我想起来了,去登录 ></p> | ||
618 | </div> | ||
619 | </div> | ||
620 | </div> | ||
621 | </div> | ||
622 | </div> | ||
623 | <!-- 登录注册 完 --> | ||
624 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/webapp/js/library/jquery.zeroclipboard.min.js"></script> | ||
625 | <script src="http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend/static/pc2/common/js/common.js"></script> | ||
626 | <script> | ||
627 | $(function() { | ||
628 | var appId = GetQueryString('id'), | ||
629 | cdnUrl= 'http://1251027630.cdn.myqcloud.com/1251027630/zhichi_frontend', | ||
630 | _appData = {}; | ||
631 | initialPreview(appId); | ||
632 | |||
633 | if(GetQueryString('f_tpl') == 1){ | ||
634 | $('#nav-component').append('<div class="copy-link-wrap" style="margin-top:15px;"><button class="choose-tpl" style="background-color:#fdcb2e; color:#3f4125; border-color:#fdcb2e; border-bottom:4px solid #e1ab00;">使用模板</button></div>'); | ||
635 | } | ||
636 | |||
637 | $('body').on('click', '#group-page-container .group-nav', function(event) { | ||
638 | // 组折叠 | ||
639 | event.preventDefault(); | ||
640 | var target = $(this).parent(); | ||
641 | target.toggleClass('active'); | ||
642 | }).on('click', '#group-page-container .page-nav', function(event) { | ||
643 | if($(this).hasClass('active')){ | ||
644 | return; | ||
645 | } | ||
646 | $('.page-nav.active').removeClass('active'); | ||
647 | $(this).addClass('active'); | ||
648 | |||
649 | var router = $(this).attr('data-router'), | ||
650 | $preview = $('#preview-iframe'), | ||
651 | url = 'http://jisuapp.cn/app?_app_id='+appId+'&router='+router, | ||
652 | historyId = GetQueryString('history_id'), | ||
653 | customFeature = _appData[router].customFeature; | ||
654 | |||
655 | historyId && (url += '&history_id='+historyId); | ||
656 | if(customFeature.form){ | ||
657 | url += '&detail=-1'; | ||
658 | } | ||
659 | $preview.attr('src',url); | ||
660 | |||
661 | }).on('click', '.choose-tpl', function(){ | ||
662 | if($('body').attr('is_login') == 0){ | ||
663 | loginFunc(); | ||
664 | $(".lr-mask").show(); | ||
665 | return; | ||
666 | } | ||
667 | var param = { | ||
668 | app_name : '我的应用', | ||
669 | description: '' , | ||
670 | logo : cdnUrl + '/static/invitation/images/logo.png', | ||
671 | cover: cdnUrl + '/static/webapp/images/share_feng.jpg' , | ||
672 | f_app_id : appId | ||
673 | }, | ||
674 | $btn = $(this); | ||
675 | |||
676 | if($btn.hasClass('requesting')) { return; } | ||
677 | $btn.addClass('requesting'); | ||
678 | $ajax('http://jisuapp.cn/index.php?r=pc/AppData/add','post', param,'json',function(data){ | ||
679 | $btn.removeClass('requesting'); | ||
680 | if (data.status === 0) { | ||
681 | window.location.href = 'http://jisuapp.cn/index.php?r=pc/Webapp/edit&id='+data.data; | ||
682 | } else if (data.status === 3){ | ||
683 | confirmTip({ | ||
684 | text : data.data + "<p>是否去升级VIP?</p>", | ||
685 | ConfirmFunction : function(){ | ||
686 | window.open('http://jisuapp.cn/index.php?r=pc/Index/appVipPacket'); | ||
687 | } | ||
688 | }); | ||
689 | } else { | ||
690 | alertTip(data.data); | ||
691 | } | ||
692 | }, function(data){ | ||
693 | $btn.removeClass('requesting'); | ||
694 | alertTip(data.data); | ||
695 | }); | ||
696 | }); | ||
697 | function initialPreview(appId){ | ||
698 | // 预览时 | ||
699 | var $preview = $('#preview-iframe'), | ||
700 | router = GetQueryString('router'), | ||
701 | para = { | ||
702 | app_id: appId, | ||
703 | history_id: GetQueryString('history_id') || '' | ||
704 | }; | ||
705 | |||
706 | $ajax('http://jisuapp.cn/index.php?r=AppData/detail','get',para,'json',function(data){ | ||
707 | if (data.status === 0) { | ||
708 | var info = data.data, | ||
709 | _cataData = typeof info.cata_data === 'string' ? JSON.parse(info.cata_data) : info.cata_data; | ||
710 | |||
711 | _appData = typeof info.app_data === 'string' ? JSON.parse(info.app_data) : info.app_data; | ||
712 | $('#preview-code').attr('src', info.qrcode); | ||
713 | $('#app-link').val(info.url); | ||
714 | parseCata(_cataData); | ||
715 | if(!router){ | ||
716 | router = _appData.version == 1 ? _appData.data['homepage-router'] : 'page10000'; | ||
717 | } | ||
718 | $('#group-page-container .page-nav[data-router='+router+']').trigger('click'); | ||
719 | }else{ | ||
720 | alertTip(data.data); | ||
721 | } | ||
722 | |||
723 | }); | ||
724 | } | ||
725 | function parseCata(_cataData, router){ | ||
726 | var cataStr = '', | ||
727 | targetRouter = router || 'page10000', | ||
728 | cataDataContent = _cataData.data; | ||
729 | for(var cata in cataDataContent) { | ||
730 | if(cataDataContent[cata]){ | ||
731 | var pages = cataDataContent[cata].pages, | ||
732 | i = 0; | ||
733 | cataStr += '<li class="group-page-nav active" data-index="'+cataDataContent[cata].index+'"><p class="group-nav">'+cataDataContent[cata].group+'</p><ul class="page-navs">'; | ||
734 | for(var item in pages){ | ||
735 | i++; | ||
736 | cataStr += parsePageNavStr(pages[item].router, pages[item].title, pages[item].name); | ||
737 | } | ||
738 | if(i<=0){ | ||
739 | cataStr += '<p class="empty-group-tip">此分组暂无页面</p>'; | ||
740 | } | ||
741 | |||
742 | cataStr += '</ul></li>'; | ||
743 | } | ||
744 | }; | ||
745 | $('#group-page-container').empty().append(cataStr); | ||
746 | } | ||
747 | function parsePageNavStr (router, title, name){ | ||
748 | var str = '<li class="page-nav" data-router="'+router+'" data-title="'+title+'" data-name="'+name+'"><span class="js-page-name">'+name+'</span></li>'; | ||
749 | return str; | ||
750 | } | ||
751 | |||
752 | $("#copy-link").on('copy', function(e){ | ||
753 | e.clipboardData.clearData(); | ||
754 | e.clipboardData.setData('text/plain', $('#app-link').val()); | ||
755 | e.preventDefault(); | ||
756 | }).on('aftercopy', function(e){ | ||
757 | alertTip('复制成功'); | ||
758 | }); | ||
759 | |||
760 | $("#go-back").on('click' , function(event) { | ||
761 | var $preview = $('#preview-iframe')[0]; | ||
762 | $preview.contentWindow.history.back() | ||
763 | }); | ||
764 | |||
765 | $('.tab-item-cata').on('click', function(){ | ||
766 | $(this).addClass('active').siblings().removeClass('active'); | ||
767 | $('#phone-model').css('display', 'none'); | ||
768 | $('#nav-component').css('display', 'inline-block'); | ||
769 | }); | ||
770 | |||
771 | $('.tab-item-phone').on('click', function(){ | ||
772 | $(this).addClass('active').siblings().removeClass('active'); | ||
773 | $('#phone-model').css('display', 'inline-block'); | ||
774 | $('#nav-component').css('display', 'none'); | ||
775 | }); | ||
776 | |||
777 | $('.phone-model-list').on('click', 'li', function(){ | ||
778 | var type = $(this).attr('data-type'), | ||
779 | $phone = $('#phone-component'), | ||
780 | $iframe = $phone.find('iframe'); | ||
781 | |||
782 | $(this).addClass('active').siblings('.active').removeClass('active'); | ||
783 | $phone.attr('class', type); | ||
784 | }); | ||
785 | }); | ||
786 | </script> | ||
787 | </body> | ||
788 | </html> |
url.py
File was created | 1 | # coding: utf-8 | |
2 | |||
3 | from handlers.index import IndexHandler, WebAppHandler | ||
4 | |||
5 | |||
6 | urls = [ | ||
7 | # 首页链接 | ||
8 | (r'/', IndexHandler), | ||
9 | (r'/webapp/$', WebAppHandler), | ||
10 | ] |