This commit is contained in:
zhaoxiang 2016-11-15 15:06:28 +08:00
parent 1ce7527b4e
commit 523100a041
68 changed files with 198 additions and 4712 deletions

191
LICENSE Normal file
View File

@ -0,0 +1,191 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "{}" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright 2016 Zhao
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -44,7 +44,7 @@
<span class="logo-mini">
<img src="__IMG__/logo.jpg" width="51px" alt="">
</span>
<span class="logo-lg">7d-vision</span>
<span class="logo-lg">ApiAdmin</span>
</a>
<nav class="navbar navbar-static-top">
<a href="javascript:void(0);" class="sidebar-toggle" data-toggle="offcanvas" role="button">

View File

@ -3,7 +3,7 @@
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>7D - 跳转提示</title>
<title>ApiAdmin - 跳转提示</title>
<script src="__PLUGIN__/jQuery/3.1.1/jquery.min.js"></script>
<link href="//cdn.bootcss.com/semantic-ui/2.2.6/semantic.min.css" rel="stylesheet">
<script src="//cdn.bootcss.com/semantic-ui/2.2.6/semantic.js"></script>

View File

@ -16,7 +16,7 @@
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<a href="{:config('WEBSITE_DOMAIN')}"><b>7D</b> VISION</a>
<a href="{:config('WEBSITE_DOMAIN')}"><b>Api</b> Admin</a>
</div>
<div class="login-box-body">
<p class="login-box-msg">

View File

@ -10,10 +10,10 @@
// +----------------------------------------------------------------------
return [
'PRODUCT_VERSION' => 'V0.9.0', //项目版本
'PRODUCT_NAME' => '7d-vision', //产品名称
'WEBSITE_DOMAIN' => 'http://www.7d-vision.com', //官方网址
'COMPANY_NAME' => '北京七维视觉科技有限公司', //公司名称
'PRODUCT_VERSION' => 'V1.0.0', //项目版本
'PRODUCT_NAME' => 'ApiAdmin', //产品名称
'WEBSITE_DOMAIN' => 'http://www.our-dream.cn', //官方网址
'COMPANY_NAME' => 'XXXXXXXX有限公司', //公司名称
'SQL_PRIMARY_KEY' => 'id',
'USER_ADMINISTRATOR' => 4,

View File

@ -1 +0,0 @@
<?php

View File

@ -1,49 +0,0 @@
<?php
//配置文件
return [
//'配置项'=>'配置值'
'AUTH_TICKET' => 'HglxnX64SU)vFO08TrsIMMtetTzFH6mv4R(SAWjJNvxP(26fj1pf$0mTL0(siqlF',
'API_HOST' => 'http://vr-api-01.chinacloudapp.cn:5002/',
'API_USER_LOGIN' => 'api/user/login',
'API_USER_CODE' => 'api/user/code',
'API_USER_REGISTER' => 'api/user/register',
'API_USER_CHANGE_PWD' => 'api/user/changepwd',
'PROVINCE' => [
'',
'北京',
'天津',
'河北省',
'山西省',
'内蒙古自治区',
'辽宁省',
'吉林省',
'黑龙江省',
'上海',
'江苏省',
'浙江省',
'安徽省',
'福建省',
'江西省',
'山东省',
'河南省',
'湖北省',
'湖南省',
'广东省',
'广西壮族自治区',
'海南省',
'重庆',
'四川省',
'贵州省',
'云南省',
'西藏自治区',
'陕西省',
'甘肃省',
'青海省',
'宁夏回族自治区',
'新疆维吾尔自治区',
'台湾省',
'香港特别行政区',
'澳门特别行政区'
]
];

View File

@ -1,26 +0,0 @@
<?php
/**
*
* @since 2016-02-18
* @author zhaoxiang <zhaoxiang051405@outlook.com>
*/
namespace app\index\controller;
use think\Controller;
class Base extends Controller {
protected $uid;
public function _initialize(){
//初始化系统
$this->uid = session('uid');
if( !isset($this->uid) || empty($this->uid) ){
$this->redirect('User/index');
}
//控制器初始化
if(method_exists($this,'_myInitialize')){
$this->_myInitialize();
}
}
}

View File

@ -1,23 +0,0 @@
<?php
/**
* @since 2016-11-07
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
namespace app\index\controller;
class Help extends Base {
public function index(){
return $this->fetch();
}
public function pro1(){
return $this->fetch();
}
public function pro2(){
return $this->fetch();
}
public function pro3(){
return $this->fetch();
}
}

View File

@ -1,22 +0,0 @@
<?php
/**
*
* @since 2016-02-18
* @author zhaoxiang <zhaoxiang051405@outlook.com>
*/
namespace app\index\controller;
class Index extends Base {
protected $uid;
public function index(){
// $proList = D('BuyLog')->where(['uid' => $this->uid])->select();
$proList = [];
$proNum = count($proList);
if( $proNum ){
$this->assign('proList', $proList);
}
$this->assign('proNum', $proNum);
return $this->fetch();
}
}

View File

@ -1,50 +0,0 @@
<?php
/**
* @since 2016-11-07
* @author zhaoxiang <zhaoxiang051405@gmail.com>
*/
namespace app\index\controller;
class Product extends Base {
public function index(){
$this->assign('pro',config('PROVINCE'));
return $this->fetch();
}
public function buy(){
$data = $this->request->post();
$data['uid'] = $this->uid;
$data['addTime'] = time();
if( $data['type'] != 2 ){
if( empty($data['email']) ){
$this->error('电子邮箱不能为空!', '', true);
}else{
if( !preg_match('/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i', $data['email']) ){
$this->error('手机号码不合法!', '', true);
}
}
if( empty($data['location']) ){
$this->error('地区不能为空!', '', true);
}
if( empty($data['name']) ){
$this->error('姓名不能为空!', '', true);
}
if( empty($data['city']) ){
$this->error('所在城市不能为空!', '', true);
}
}else{
$data['status'] = 1;
}
// $isBuy = D('BuyLog')->where(['uid' => $this->uid, 'proName' => $data['proName'], 'status' => 0])->count();
// if( $isBuy ){
// $this->error('请勿重复操作!', '', true);
// }
// $res = D('BuyLog')->add($data);
// if( $res === false ){
// $this->error('操作失败!', '', true);
// }else{
// $this->success('信息提交成功!', U('Index/index'), true);
// }
}
}

View File

@ -1,159 +0,0 @@
<?php
/**
*
* @since 2016-02-18
* @author zhaoxiang <zhaoxiang051405@outlook.com>
*/
namespace app\index\controller;
use think\Controller;
class User extends Controller {
public function index(){
return $this->fetch();
}
public function login(){
if( $this->request->isPost() ){
$user = $this->request->post('user');
$pwd = $this->request->post('password');
if( empty($user) ){
$this->error('手机号不能为空!', '', true);
}else{
if( !preg_match('/^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$/', $user) ){
$this->error('手机号不合法!', '', true);
}
}
if( empty($pwd) ){
$this->error('密码不能为空!', '', true);
}
$hashArr = $this->getAuthStr();
$userData = [
'Account' => $user,
'Password' => $pwd,
'Type' => 3
];
$userData = json_encode($userData);
$res = curlPost(config('API_HOST').config('API_USER_LOGIN'), $userData, $hashArr, ['Content-Type' => 'application/json']);
$resArr = json_decode($res , true);
if( $resArr['data']['Id'] == 0 ){
$this->error($resArr['data']['Message'], '', true);
}else{
session('uid', $resArr['data']['Id']);
session('phone', $user);
$this->success('登录成功!', url('Index/index'), true);
}
}else{
$this->error('非法操作','', true);
}
}
public function getCode(){
if( $this->request->isPost() ){
$user = $this->request->post('user');
if( empty($user) ){
$this->result(['status' => -999], -999);
}
$hashArr = $this->getAuthStr();
$userData = [
'Account' => $user
];
$userData = json_encode($userData);
$nextTime = cache('nextTime');$now = time();
if( $nextTime <= $now ){
$res = curlPost(config('API_HOST').config('API_USER_CODE'), $userData, $hashArr, ['Content-Type' => 'application/json']);
$resArr = json_decode($res , true);
if( $resArr['status'] != 200 ){
$this->error($resArr['message']);
}else{
$nextTime = $now + 55;
cache('nextTime', $nextTime);
$this->result(['status' => 200], 200);
}
}else{
$this->error('请勿频繁操作', '', true);
}
}else{
$this->error('非法操作', '', true);
}
}
public function register(){
if( $this->request->isPost()){
$user = $this->request->post('user');
$pwd = $this->request->post('password');
$code = $this->request->post('code');
if( empty($user) ){
$this->error('手机号码不能为空!', '', true);
}else{
if( !preg_match('/^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$/', $user) ){
$this->error('手机号码不合法!', '', true);
}
}
if( empty($pwd) ){
$this->error('密码不能为空!', '', true);
}
if( empty($code) ){
$this->error('验证码不能为空!', '', true);
}
$hashArr = $this->getAuthStr();
$userData = [
'Account' => $user,
'Password' => $pwd,
'Code' => $code
];
$userData = json_encode($userData);
$res = curlPost(config('API_HOST').config('API_USER_REGISTER'), $userData, $hashArr, ['Content-Type' => 'application/json']);
$resArr = json_decode($res , true);
if( $resArr['data']['Id'] == 0 ){
$this->error($resArr['data']['Message'], '', true);
}else{
$this->success('注册成功!', url('User/index'), true);
}
}else{
return $this->fetch();
}
}
public function recover(){
if( $this->request->isPost()){
$user = $this->request->post('user');
$pwd = $this->request->post('password');
$rePwd = $this->request->post('rePassword');
$code = $this->request->post('code');
if( $rePwd != $pwd ){
$this->error("两次输入密码不一致");
}
$hashArr = $this->getAuthStr();
$userData = [
'Account' => $user,
'NewPassword' => $pwd,
'Code' => $code
];
$userData = json_encode($userData);
$res = curlPost(config('API_HOST').config('API_USER_CHANGE_PWD'), $userData, $hashArr, ['Content-Type' => 'application/json']);
$resArr = json_decode($res , true);
if( $resArr['data']['Id'] == 0 ){
$this->error($resArr['data']['Message'], '', true);
}else{
$this->success('密码重置成功!', url('User/index'), true);
}
}else{
return $this->fetch();
}
}
private function getAuthStr(){
$ticket = config('AUTH_TICKET');
$nonceStr = \StrOrg::randString(12,5,'oOLl01');
$now = time();
$hashStr = sha1("ticket={$ticket}&noncestr={$nonceStr}&timestamp={$now}");
$urlParam = [
's' => $hashStr,
'n' => $nonceStr,
't' => $now
];
return $urlParam;
}
}

View File

@ -1,82 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="__IMG__/favicon.ico">
<title>七维科技-用户中心</title>
<!-- Bootstrap core CSS -->
<link href="__STATIC__/lib/bootstrap.min.css" rel="stylesheet">
<link href="__CSS__/main.css" rel="stylesheet">
<!-- Custom styles for this template -->
{block name="myStyle"}
<link href="__CSS__/members.css" rel="stylesheet">
{/block}
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]>
<script src="__JS__/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="__STATIC__/lib/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="__PLUGIN__/compatible/html5shiv.js"></script>
<script src="__PLUGIN__/compatible/respond.min.js"></script>
<![endif]-->
</head>
<body>
<header class="header">
<nav class="navbar navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="{:url('Index/index')}"><span class="brand-img"><img src="__IMG__/logo.jpg" alt=""></span><span>七维科技-会员中心</span></a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="http://www.7d-vision.com">返回七维首页</a></li>
</ul>
</div>
</nav>
</header>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<div class="menu-group">
<h4 class="display-h4">Go!Pano Studio Pro</h4>
<ul class="nav nav-sidebar">
<li class=""><a href="{:url('Help/index')}">应用介绍</a></li>
<li class=""><a href="{:url('Help/pro1')}">使用操作</a></li>
</ul>
</div>
<div class="menu-group">
<h4 class="display-h4">Go!Pano Studio Pro 3D</h4>
<ul class="nav nav-sidebar">
<li class=""><a href="{:url('Help/pro2')}">应用介绍</a></li>
<li class=""><a href="{:url('Help/pro3')}">使用操作</a></li>
</ul>
</div>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
{block name="content"}{/block}
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="__STATIC__/lib/jquery.min.js"></script>
<script src="__STATIC__/lib/bootstrap.min.js"></script>
<!-- <script src="__STATIC__/lib/docs.min.js"></script> -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="__STATIC__/lib/ie10-viewport-bug-workaround.js"></script>
<script src="__JS__/alertMSG.js"></script>
<script src="__JS__/app.js"></script>
{block name="myScript"}{/block}
</body>
</html>

View File

@ -1,9 +0,0 @@
{extend name="help/base" /}
{block name="content"}
<div class="dir">
<p class="p-indent">Vr元年内容缺乏拍摄全景360°图像可以看做最快速的vr内容。</p>
<p class="p-indent">本产品将多目取景器实时采集的图像画面实时缝合成高质量的全景VR图像可实时预监对图像画面进行实时调节此VR视频可通过网络传输到云在经云端编解码后最终通过呈现端展示出来也可本地录制保存实时输出。</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.jpg" ></div>
<p class="p-indent">本软件运行在HP Z840 工作站为基础加入4*2采集卡4*1HD-SDI采集卡i7高性能处理16G内存NVidia高性能图形渲染卡</p>
</div>
{/block}

View File

@ -1,127 +0,0 @@
{extend name="help/base" /}
{block name="content"}
<div class="dir">
<h4 class="display-h4">引导页</h4>
<p class="p-indent">帮助用户进行先前设定。</p>
<p class="p-indent">1、设备设定——为了更好的缝合效果选择设备类型</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.1.png" ></div>
<p class="p-indent">2、拍录设定</p>
<p class="p-indent">设定拍录保存路径——选择拍录操作后文件保存的地址路径</p>
<p class="p-indent">录制码率——普通,高端,最佳的码率规格对应不同比特率,比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,画质越好。</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.2.png" ></div>
<p class="p-indent">3、更多设置</p>
<p class="p-indent">RTMP地址——推流地址设定RTMP是实时消息传输协议。</p>
<p class="p-indent">输出码率设定——每秒传输的兆数越大越清晰。码率即比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,同时需要的带宽要求也就增大。</p>
<p class="p-indent">输出分辨率设定</p>
<p class="p-indent">安全距离设定——通过安全距离调整来微调畸变</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.3.png" ></div>
<h4 class="display-h4">功能使用</h4>
<p class="p-indent">1、多模式预监</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.1.png"></td>
<td><p>平铺模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.2.png"></td>
<td><p>包球/VR模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.3.png"></td>
<td><p>网格模式,单个镜头图像</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">2、调节图像</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.1.png"></td>
<td><p>调色—实时手动调节,自动复位(包含:滤镜 饱和度 色调 伽玛值 亮度)</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.2.png"></td>
<td><p>曝光—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.3.png"></td>
<td><p>白平衡—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.4.png"></td>
<td><p>安全距离—安全距离及时反映到预览画面,调节安全距离可改善畸变</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.5.png"></td>
<td><p>添加logo—显示logo选择路径调整logo半径</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">3、输出功能</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.1.png"></td>
<td>
<p>本地录制——全景视频实时录制。</p>
<p>录制前,需在引导页或设置页面中对录制参数进行设置。</p>
<p>录制中显示录制状态时间信息可同时进行RTMP推流、SDI 输出、拍照。</p>
<p style="color: red;"><b>注意:若正在推流,录制码率与推流码率相同。</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.2.png"></td>
<td>
<p>本地拍照——拍摄全景照片可在录制、RTMP推流、SDI输出同时进行拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.3.png"></td>
<td>
<p>回看—一键打开软件自带播放器,播放器默认播放最近一次操作内容画面。右侧列表可选择之前的操作内容。</p>
<p style="color: red;"><b>注意:回放的前提是必须停止录制</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.4.png"></td>
<td>
<p>RTMP推流—全景视频实时推流</p>
<p>推流前需在引导页或设置页面中对RTMP参数进行设置。</p>
<p>推流中显示推流信息可同时进行录制、SDI输出、拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.5.png"></td>
<td>
<p>SDI输出—全景视频实时输出</p>
<p>输出前需在引导页或设置页面中对SDI参数进行设置。</p>
<p>输出中显示输出信息可同时进行录制、RTMP推流、拍照。</p>
<p style="color: red;"><b>注意SDI输出质量和RTMP推流质量一致。</b></p>
</td>
</tr>
</tbody>
</table>
<p class="p-indent">4、其他</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.1.png"></td>
<td>
<p>操作日志—用户操作记录</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.2.png"></td>
<td>
<p>版本信息—版本号,更新信息,官网帮助</p>
</td>
</tr>
</tbody>
</table>
<h4 class="display-h4">设置</h4>
<p class="p-indent">1、设备选择为了更好的缝合效果更改引导页设备选择设定</p>
<p class="p-indent">2、拍录设置更改引导页拍录路径码率设定或增加引导页未设定的数据</p>
<p class="p-indent">3、RTMP&SDI参数设置更改引导页推流地址&输出质量设定或增加引导页未设定的</p>
</div>
{/block}

View File

@ -1,127 +0,0 @@
{extend name="help/base" /}
{block name="content"}
<div class="dir">
<h4 class="display-h4">引导页</h4>
<p class="p-indent">帮助用户进行先前设定。</p>
<p class="p-indent">1、设备设定——为了更好的缝合效果选择设备类型</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.1.png" ></div>
<p class="p-indent">2、拍录设定</p>
<p class="p-indent">设定拍录保存路径——选择拍录操作后文件保存的地址路径</p>
<p class="p-indent">录制码率——普通,高端,最佳的码率规格对应不同比特率,比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,画质越好。</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.2.png" ></div>
<p class="p-indent">3、更多设置</p>
<p class="p-indent">RTMP地址——推流地址设定RTMP是实时消息传输协议。</p>
<p class="p-indent">输出码率设定——每秒传输的兆数越大越清晰。码率即比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,同时需要的带宽要求也就增大。</p>
<p class="p-indent">输出分辨率设定</p>
<p class="p-indent">安全距离设定——通过安全距离调整来微调畸变</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.3.png" ></div>
<h4 class="display-h4">功能使用</h4>
<p class="p-indent">1、多模式预监</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.1.png"></td>
<td><p>平铺模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.2.png"></td>
<td><p>包球/VR模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.3.png"></td>
<td><p>网格模式,单个镜头图像</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">2、调节图像</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.1.png"></td>
<td><p>调色—实时手动调节,自动复位(包含:滤镜 饱和度 色调 伽玛值 亮度)</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.2.png"></td>
<td><p>曝光—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.3.png"></td>
<td><p>白平衡—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.4.png"></td>
<td><p>安全距离—安全距离及时反映到预览画面,调节安全距离可改善畸变</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.5.png"></td>
<td><p>添加logo—显示logo选择路径调整logo半径</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">3、输出功能</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.1.png"></td>
<td>
<p>本地录制——全景视频实时录制。</p>
<p>录制前,需在引导页或设置页面中对录制参数进行设置。</p>
<p>录制中显示录制状态时间信息可同时进行RTMP推流、SDI 输出、拍照。</p>
<p style="color: red;"><b>注意:若正在推流,录制码率与推流码率相同。</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.2.png"></td>
<td>
<p>本地拍照——拍摄全景照片可在录制、RTMP推流、SDI输出同时进行拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.3.png"></td>
<td>
<p>回看—一键打开软件自带播放器,播放器默认播放最近一次操作内容画面。右侧列表可选择之前的操作内容。</p>
<p style="color: red;"><b>注意:回放的前提是必须停止录制</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.4.png"></td>
<td>
<p>RTMP推流—全景视频实时推流</p>
<p>推流前需在引导页或设置页面中对RTMP参数进行设置。</p>
<p>推流中显示推流信息可同时进行录制、SDI输出、拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.5.png"></td>
<td>
<p>SDI输出—全景视频实时输出</p>
<p>输出前需在引导页或设置页面中对SDI参数进行设置。</p>
<p>输出中显示输出信息可同时进行录制、RTMP推流、拍照。</p>
<p style="color: red;"><b>注意SDI输出质量和RTMP推流质量一致。</b></p>
</td>
</tr>
</tbody>
</table>
<p class="p-indent">4、其他</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.1.png"></td>
<td>
<p>操作日志—用户操作记录</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.2.png"></td>
<td>
<p>版本信息—版本号,更新信息,官网帮助</p>
</td>
</tr>
</tbody>
</table>
<h4 class="display-h4">设置</h4>
<p class="p-indent">1、设备选择为了更好的缝合效果更改引导页设备选择设定</p>
<p class="p-indent">2、拍录设置更改引导页拍录路径码率设定或增加引导页未设定的数据</p>
<p class="p-indent">3、RTMP&SDI参数设置更改引导页推流地址&输出质量设定或增加引导页未设定的</p>
</div>
{/block}

View File

@ -1,127 +0,0 @@
{extend name="help/base" /}
{block name="content"}
<div class="dir">
<h4 class="display-h4">引导页</h4>
<p class="p-indent">帮助用户进行先前设定。</p>
<p class="p-indent">1、设备设定——为了更好的缝合效果选择设备类型</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.1.png" ></div>
<p class="p-indent">2、拍录设定</p>
<p class="p-indent">设定拍录保存路径——选择拍录操作后文件保存的地址路径</p>
<p class="p-indent">录制码率——普通,高端,最佳的码率规格对应不同比特率,比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,画质越好。</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.2.png" ></div>
<p class="p-indent">3、更多设置</p>
<p class="p-indent">RTMP地址——推流地址设定RTMP是实时消息传输协议。</p>
<p class="p-indent">输出码率设定——每秒传输的兆数越大越清晰。码率即比特率是指每秒传送的比特(bit)数。比特率越高,传送数据速度越快,同时需要的带宽要求也就增大。</p>
<p class="p-indent">输出分辨率设定</p>
<p class="p-indent">安全距离设定——通过安全距离调整来微调畸变</p>
<div align="center"><img src="http://member.7d-vision.com/img/1.3.png" ></div>
<h4 class="display-h4">功能使用</h4>
<p class="p-indent">1、多模式预监</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.1.png"></td>
<td><p>平铺模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.2.png"></td>
<td><p>包球/VR模式</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.1.3.png"></td>
<td><p>网格模式,单个镜头图像</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">2、调节图像</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.1.png"></td>
<td><p>调色—实时手动调节,自动复位(包含:滤镜 饱和度 色调 伽玛值 亮度)</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.2.png"></td>
<td><p>曝光—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.3.png"></td>
<td><p>白平衡—实时手动调节,自动复位</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.4.png"></td>
<td><p>安全距离—安全距离及时反映到预览画面,调节安全距离可改善畸变</p></td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.2.5.png"></td>
<td><p>添加logo—显示logo选择路径调整logo半径</p></td>
</tr>
</tbody>
</table>
<p class="p-indent">3、输出功能</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.1.png"></td>
<td>
<p>本地录制——全景视频实时录制。</p>
<p>录制前,需在引导页或设置页面中对录制参数进行设置。</p>
<p>录制中显示录制状态时间信息可同时进行RTMP推流、SDI 输出、拍照。</p>
<p style="color: red;"><b>注意:若正在推流,录制码率与推流码率相同。</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.2.png"></td>
<td>
<p>本地拍照——拍摄全景照片可在录制、RTMP推流、SDI输出同时进行拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.3.png"></td>
<td>
<p>回看—一键打开软件自带播放器,播放器默认播放最近一次操作内容画面。右侧列表可选择之前的操作内容。</p>
<p style="color: red;"><b>注意:回放的前提是必须停止录制</b></p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.4.png"></td>
<td>
<p>RTMP推流—全景视频实时推流</p>
<p>推流前需在引导页或设置页面中对RTMP参数进行设置。</p>
<p>推流中显示推流信息可同时进行录制、SDI输出、拍照。</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.3.5.png"></td>
<td>
<p>SDI输出—全景视频实时输出</p>
<p>输出前需在引导页或设置页面中对SDI参数进行设置。</p>
<p>输出中显示输出信息可同时进行录制、RTMP推流、拍照。</p>
<p style="color: red;"><b>注意SDI输出质量和RTMP推流质量一致。</b></p>
</td>
</tr>
</tbody>
</table>
<p class="p-indent">4、其他</p>
<table class="table-hover table-bordered p-indent table">
<tbody valign="middle">
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.1.png"></td>
<td>
<p>操作日志—用户操作记录</p>
</td>
</tr>
<tr>
<td style="width: 15%"><img width="50px" src="http://member.7d-vision.com/img/2.4.2.png"></td>
<td>
<p>版本信息—版本号,更新信息,官网帮助</p>
</td>
</tr>
</tbody>
</table>
<h4 class="display-h4">设置</h4>
<p class="p-indent">1、设备选择为了更好的缝合效果更改引导页设备选择设定</p>
<p class="p-indent">2、拍录设置更改引导页拍录路径码率设定或增加引导页未设定的数据</p>
<p class="p-indent">3、RTMP&SDI参数设置更改引导页推流地址&输出质量设定或增加引导页未设定的</p>
</div>
{/block}

View File

@ -1,82 +0,0 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__CSS__/members.css" rel="stylesheet">
{/block}
{block name="myContent"}
<header class="header">
<nav class="navbar navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><span class="brand-img"><img src="__IMG__/logo.jpg" alt=""></span><span>七维科技-会员中心</span></a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="http://www.7d-vision.com/">返回七维首页</a></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container-fluid">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<!-- <li class="active"><a href="#">所有产品列表</a></li> -->
<li class="active"><a href="#">我的产品</a></li>
<li class=""><a href="{:url('Help/index')}">使用帮助</a></li>
</ul>
</div>
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h3 class="display-h4"><a class="btn btn-danger btn-lg" href="{:url('Product/index')}">去获取Go!Pano系列产品 <i class="icon-angle-right"></i></a></h3>
{if condition="$proNum"}
<div class="table-responsive">
<table class="table" style="table-layout:fixed;">
<thead>
<tr>
<th>产品名称</th>
<th>产品状态</th>
<th>产品购买/下载</th>
<th>订单时间</th>
</tr>
</thead>
<tbody>
{volist name="proList" id="vo"}
<tr>
<td>{$vo['proName']}</td>
{if condition="$vo['status']"}
{if condition="$vo['type'] eq 1"}
<td><span>已购买</span></td>
<td><a href="#" class="btn btn-sm btn-default">立即下载</a></td>
{elseif condition="$vo['type'] eq 2"/}
<td><span>已下载</span></td>
<td><a href="{:url('Product/index')}" class="btn btn-sm btn-default">购买正式版</a></td>
{else /}
<td colspan="2"><span>已经购买</span></td>
{/if}
{else/}
<td colspan="2"><span>等待审核</span></td>
{/if}
<td>{$vo['addTime'] | date='Y-m-d H:i:s',###}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
{else /}
<p class="tc p100"><a href="{:url('Product/index')}">~您还没有购买过任何产品~<br>去获取产品</a></p>
{/if}
</div>
</div>
</div>
{/block}
{block name="myScript"}
{/block}

View File

@ -1,321 +0,0 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__CSS__/product.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__IMG__/cover/bg6.jpg);"></div>
<div id="bg-mask"></div>
<header class="header">
<nav class="navbar" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><img style="width:50px;" src="__IMG__/logo.jpg" alt=""></a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="http://www.7d-vision.com">返回七维首页</a></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container pt50">
<ul class="product-list">
<li class="product">
<h3 class="product-tit">Go!Pano studio正式版 <a class="btn btn-link J-proDetail" href="###">查看详情</a></h3>
<div class="product-desc-pop hide">
<h3 class="product-tit">Go!Pano studio正式版</h3>
<div class="product-img"><img style="width:100%;" src="__IMG__/product/gopano_studio.jpg" alt=""></div>
<div class="product-desc">
<h4 class="display-h4">出色4k</h4>
<p>实时预监画面<br>
支持VR头显、电脑显示器画面预览,一键调节曝光、白平衡、色彩饱和度、伽马值,消除误拍风险
</p>
<h4 class="display-h4">多目镜头</h4>
<p>画面完美实时缝合</p>
<p>支持2-10目镜头的全景视频实时缝合<br>
内置算法实时还原真实视角</p>
<h4 class="display-h4">4K输出</h4>
<p>强大的4K输出能力</p>
<p>支持SDI/HDNI信号输出以及本地画面录制</p>
<h4 class="display-h4">稳定安全的系统</h4>
<p>高效拍摄可不间断连续录制12个小时以上</p>
<h4 class="display-h4">人性化界面</h4>
<p>最贴合摄影师习惯<br>
操作界面简洁明了、美观舒适、容易上手</p>
<h4 class="display-h4">一键美化</h4>
<p>打造大片既视感<br>
系统自带调色功能,输出更完美、细腻的全景影片</p>
</div>
</div>
<div class="product-ctrl">
<a href="#" proName="Go!Pano studio正式版" type="1" class="btn btn-danger J-btn-buy">立即购买</a>
<!-- <a href="#" class="btn btn-primary J-btn-downloadFreetrial">下载试用版</a> -->
</div>
</li>
<li class="product">
<h3 class="product-tit">Go!Pano studio体验版 <a class="btn btn-link J-proDetail" href="###">查看详情</a></h3>
<div class="product-desc-pop hide">
<h3 class="product-tit">Go!Pano studio体验版</h3>
<div class="product-img"><img style="width:100%;" src="__IMG__/product/gopano_studio_freetrial.jpg" alt=""></div>
<div class="product-desc">
<h4 class="display-h4">出色4k</h4>
<p>实时预监画面<br>
支持VR头显、电脑显示器画面预览,一键调节曝光、白平衡、色彩饱和度、伽马值,消除误拍风险
</p>
<h4 class="display-h4">多目镜头</h4>
<p>画面完美实时缝合</p>
<p>支持2-10目镜头的全景视频实时缝合<br>
内置算法实时还原真实视角</p>
<h4 class="display-h4">4K输出</h4>
<p>强大的4K输出能力</p>
<p>支持SDI/HDNI信号输出以及本地画面录制</p>
<h4 class="display-h4">稳定安全的系统</h4>
<p>高效拍摄可不间断连续录制12个小时以上</p>
<h4 class="display-h4">人性化界面</h4>
<p>最贴合摄影师习惯<br>
操作界面简洁明了、美观舒适、容易上手</p>
<h4 class="display-h4">一键美化</h4>
<p>打造大片既视感<br>
系统自带调色功能,输出更完美、细腻的全景影片</p>
</div>
</div>
<div class="product-ctrl">
<!-- <a href="#" class="btn btn-danger J-btn-buy">立即购买</a> -->
<a href="#" proName="Go!Pano studio体验版" type="2" url="{:url('Product/buy')}" class="btn btn-primary J-btn-downloadFreetrial">下载试用版</a>
</div>
</li>
<li class="product">
<h3 class="product-tit">Go!Pano studio for Free<a class="btn btn-link J-proDetail" href="###">查看详情</a></h3>
<div class="product-desc-pop hide">
<h3 class="product-tit">Go!Pano studio for Free</h3>
<div class="product-img"><img style="width:100%;" src="__IMG__/product/gopano_studio.jpg" alt=""></div>
<div class="product-desc">
<h4 class="display-h4">出色4k</h4>
<p>实时预监画面<br>
支持VR头显、电脑显示器画面预览,一键调节曝光、白平衡、色彩饱和度、伽马值,消除误拍风险
</p>
<h4 class="display-h4">多目镜头</h4>
<p>画面完美实时缝合</p>
<p>支持2-10目镜头的全景视频实时缝合<br>
内置算法实时还原真实视角</p>
<h4 class="display-h4">4K输出</h4>
<p>强大的4K输出能力</p>
<p>支持SDI/HDNI信号输出以及本地画面录制</p>
<h4 class="display-h4">稳定安全的系统</h4>
<p>高效拍摄可不间断连续录制12个小时以上</p>
<h4 class="display-h4">人性化界面</h4>
<p>最贴合摄影师习惯<br>
操作界面简洁明了、美观舒适、容易上手</p>
<h4 class="display-h4">一键美化</h4>
<p>打造大片既视感<br>
系统自带调色功能,输出更完美、细腻的全景影片</p>
</div>
</div>
<div class="product-ctrl">
<a href="#" class="btn btn-default J-btn-buy disabled">即将开放</a>
</div>
</li>
<li class="product">
<h3 class="product-tit">Go!Pano Sony-RigⅡ<a class="btn btn-link J-proDetail" href="###">查看详情</a></h3>
<div class="product-desc-pop hide">
<h3 class="product-tit">Go!Pano Sony-RigⅡ</h3>
<div class="product-img"><img style="width:100%;" src="__IMG__/product/sony_rig_2.png" alt=""></div>
<div class="product-desc">
<p>2代 用最少个数的相机占用最小的空间组成覆盖360°x 360°的视角度全景图像适合室外远景演唱会赛事</p>
</div>
</div>
<div class="product-ctrl">
<a href="#" proName="Go!Pano Sony-RigⅡ" type="0" class="btn btn-danger J-btn-buy">立即购买</a>
<!-- <a href="#" class="btn btn-link J-btn-downloadFreetrial">下载试用版</a> -->
</div>
</li>
<li class="product">
<h3 class="product-tit">Go!Pano Sony-RigⅢ<a class="btn btn-link J-proDetail" href="###">查看详情</a></h3>
<div class="product-desc-pop hide">
<h3 class="product-tit">Go!Pano Sony-RigⅢ</h3>
<div class="product-img"><img style="width:100%;" src="__IMG__/product/sony_rig_3.jpg" alt=""></div>
<div class="product-desc">
<p>3代 相机组合覆盖360°x300°视角度的全景图像水平三台相机减少拼接从而保证水平画面足够清晰顶部一个相机使天空完美无缝适合室内近景直播。</p>
</div>
</div>
<div class="product-ctrl">
<a href="#" proName="Go!Pano Sony-RigⅢ" type="0" class="btn btn-danger J-btn-buy">立即购买</a>
<!-- <a href="#" class="btn btn-link J-btn-downloadFreetrial">下载试用版</a> -->
</div>
</li>
</ul>
</div> <!-- /container -->
<!-- Modal -->
<div class="modal fade" id="orderModal" tabindex="-1" role="dialog" aria-labelledby="orderModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="orderModalLabel">填写完善您的资料</h4>
</div>
<div class="modal-body">
<form class="form-area form-product" role="form" id="form-product">
<input type="hidden" name="proName" value="">
<input type="hidden" name="type" value="">
<div class="form-group">
<label for="J-form-phoneNumber">电子邮箱</label>
<div class="por">
<input type="email" name="email" class="form-control form-control-phone" id="J-form-phoneNumber" placeholder="请填写联系人电子邮箱" required autofocus>
</div>
</div>
<div class="form-group" id="J-form-usertype">
<label for="">用户类型</label>
<div class="fix">
<div class="fl mr50">
<div class="radio">
<label>
<input type="radio" checked name="usertype" id="J-form-type-personal" value="personal">
个人
</label>
</div>
</div>
<div class="fl">
<div class="radio">
<label>
<input type="radio" name="usertype" id="J-form-type-company" value="company">
公司
</label>
</div>
</div>
</div>
</div>
<div class="form-group" id="J-form-name">
<label for="">个人名称</label>
<div class="por">
<input type="text" name="name" class="form-control" required>
</div>
</div>
<div class="form-group">
<label for="">您的位置</label>
<div class="">
<select name="location" id="" class="form-control">
{volist name="pro" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</div>
</div>
<div class="form-group">
<label for="J-form-company">现有设备</label>
<div class="por">
<input type="text" class="form-control form-control-phone" id="J-form-company" placeholder="填写现有设备" required>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary ajax-post" target-form="form-product" href="{:url('Product/buy')}" >提交</button>
<p style="color:#c33;font-weight:bold;">提交后会有工作人员跟您联系</p>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="modal fade" id="proDetailModal" tabindex="-1" role="dialog" aria-labelledby="proDetailModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">商品详情</h4>
</div>
<div class="modal-body">
<img src="#" alt="">
</div>
</div>
</div>
</div>
{/block}
{block name="myScript"}
<script src="__STATIC__/lib/happy-validate/happy.js"></script>
<script src="__STATIC__/lib/happy-validate/happy.methods.js"></script>
<script>
$(document).ready(function () {
$('#form-signin').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入格式正确的手机号',
test: happy.USPhone
},
'#J-form-pw': {
required: true,
message: '请输入密码'
}
}
});
$('.J-btn-buy').on('click', function(){
$("input[name=proName]").val($(this).attr('proName'));
$("input[name=type]").val($(this).attr('type'));
$('#orderModal').modal('show');
});
$('.J-btn-downloadFreetrial').on('click', function(){
var proName = $(this).attr('proName');
var type = $(this).attr('type');
var target = $(this).attr('url');
var query = {proName:proName,type:type};
$.post(target, query).success(function(data) {
return;
});
alert('btn-download-free');
});
// 选择用户类型
$('#J-form-usertype').on('click', 'input:radio',function(e){
// e.preventDefault();
var $form_anme = $('#J-form-name');
var label = $form_anme.find('label');
// console.log($(this).val());
if ($(this).val() == 'personal') {
label.text('个人名称');
}else{
label.text('公司名称');
};
})
$('.J-proDetail').on('click', function(e){
e.preventDefault();
var $parent = $(this).parents('.product');
var $desc = $parent.find('.product-desc-pop').clone().removeClass('hide');
$('#proDetailModal').find('.modal-body').html($desc);
$('#proDetailModal').modal('show');
})
});
</script>
{/block}

View File

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="__IMG__/favicon.ico">
<title>七维科技-{block name="title"}{/block}</title>
<!-- Bootstrap core CSS -->
<link href="__STATIC__/lib/bootstrap.min.css" rel="stylesheet">
<link href="__CSS__/main.css" rel="stylesheet">
<!-- Custom styles for this template -->
{block name="myStyle"}{/block}
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="__JS__/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="__STATIC__/lib/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="__PLUGIN__/compatible/html5shiv.js"></script>
<script src="__PLUGIN__/compatible/respond.min.js"></script>
<![endif]-->
</head>
<body>
{block name="myContent"}{/block}
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="__STATIC__/lib/jquery.min.js"></script>
<script src="__STATIC__/lib/bootstrap.min.js"></script>
<!-- <script src="__STATIC__/lib/docs.min.js"></script> -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="__STATIC__/lib/ie10-viewport-bug-workaround.js"></script>
<script src="__JS__/alertMSG.js"></script>
<script src="__JS__/app.js"></script>
{block name="myScript"}{/block}
</body>
</html>

View File

@ -1,53 +0,0 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__CSS__/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__IMG__/cover/bg4.jpg);"></div>
<div id="bg-mask"></div>
<div class="container">
<a class="btn btn-lg btn-link fw-bold" href="http://www.7d-vision.com">返回七维首页</a>
<form class="form-area form-signin" role="form" id="form-signin">
<h2 class="form-heading display-h2">7D-VISION ID 登陆</h2>
<div class="por">
<input type="text" name="user" class="form-control form-control-phone roundCorner-tl roundCorner-tr" id="J-form-phoneNumber" placeholder="手机号" required autofocus>
</div>
<div class="por">
<input type="password" name="password" class="form-control roundCorner-bl roundCorner-br" id="J-form-pw" placeholder="密码" required>
</div>
<div class="fix">
<div class="checkbox fl" style="margin-top:0;">
<label><input type="checkbox" value="remember-me"> 记住我</label>
</div>
<div class="fr">
<a href="{:url('User/recover')}">忘记密码?</a>
</div>
</div>
<button class="btn btn-lg btn-danger btn-block ajax-post" target-form="form-signin" href="{:url('User/login')}" type="submit">登录</button>
<p class="p10">还不是会员? <a href="{:url('User/register')}">去注册7D-VISION ID</a></p>
</form>
</div>
{/block}
{block name="myScript"}
<script src="__STATIC__/lib/happy-validate/happy.js"></script>
<script src="__STATIC__/lib/happy-validate/happy.methods.js"></script>
<script>
$(document).ready(function () {
$('#form-signin').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入格式正确的手机号',
test: happy.USPhone,
},
'#J-form-pw': {
required: true,
message: '请输入密码'
}
}
});
});
</script>
{/block}

View File

@ -1,93 +0,0 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__CSS__/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__IMG__/cover/bg9.jpg);"></div>
<div id="bg-mask"></div>
<div class="container">
<a class="btn btn-lg btn-link fw-bold" href="http://www.7d-vision.com">返回七维首页</a>
<form class="form-area form-recover" role="form" id="form-recover">
<h2 class="form-heading display-h2">找回密码</h2>
<div class="por">
<input type="text" class="form-control roundCorner-bl-no roundCorner-br-no form-control-phone" id="J-form-phoneNumber" name="user" placeholder="手机号" required autofocus>
</div>
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6 pr0 por">
<input type="text" class="form-control roundCorner-no border-r-no mb-1 form-control-phoneMsg" name="code" id="J-form-phoneMsg" placeholder="验证码" required>
</div>
<div class="col-xs-6 col-sm-6 col-md-6 pl0 por">
<button class="btn btn-lg btn-default btn-block roundCorner-no fl mb-1 btn-getPhoneMsg fs12" id="J-btn-getPhoneMsg" type="button">
发送短信验证码
</button>
</div>
</div>
<div class="por">
<input type="password" class="form-control form-control-pw roundCorner-no por" id="J-form-pw" name="password" placeholder="设置密码" required>
</div>
<div class="por">
<input type="password" class="form-control form-control-pwConfirm roundCorner-tl-no roundCorner-tr-no por" name="rePassword" id="J-form-pwconfirm" placeholder="再次输入密码" required>
</div>
<button class="btn btn-lg btn-primary btn-block ajax-post" target-form="form-recover" href="{:url('User/recover')}" type="submit">重置密码</button>
<p class="p10">已是会员? <a href="{:url('User/index')}">去登陆</a></p>
<p class="p10">不是会员? <a href="{:url('User/register')}">去注册</a></p>
</form>
</div>
{/block}
{block name="myScript"}
<script src="__STATIC__/lib/happy-validate/happy.js"></script>
<script src="__STATIC__/lib/happy-validate/happy.methods.js"></script>
<script src="__JS__/timeTick.js"></script>
<script>
$(document).ready(function () {
$('#form-register').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入正确的手机号'
},
'#J-form-phoneMsg': {
required: true,
message: '必填'
},
'#J-form-pw': {
required: true,
message: '必填'
},
'#J-form-pwconfirm': {
required: true,
message: '必填'
}
}
});
// 发送验证码
var timeTick = new TimeTick({
el: '#J-btn-getPhoneMsg',
time: 60,
onClicked: function(){
var phone = $('#J-form-phoneNumber').val();
var result ;
$.ajax({
type: "POST",
url: "{:url('User/getCode')}",
data: "user=" + phone,
async: false,
success: function(msg){
if( msg.status == 200 ){
result = true;
}else{
result = false;
}
}
});
return result;
}
});
});
</script>
{/block}

View File

@ -1,100 +0,0 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__CSS__/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__IMG__/cover/bg9.jpg);"></div>
<div id="bg-mask"></div>
<div class="container">
<a class="btn btn-lg btn-link fw-bold" href="http://www.7d-vision.com">返回七维首页</a>
<form class="form-area form-register" role="form" id="form-register">
<h2 class="form-heading display-h2">7D-VISION ID 注册</h2>
<div class="por">
<input type="text" class="form-control roundCorner-bl-no roundCorner-br-no form-control-phone" id="J-form-phoneNumber" name="user" placeholder="手机号" required autofocus>
</div>
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6 pr0 por">
<input type="text" class="form-control roundCorner-no border-r-no mb-1 form-control-phoneMsg" name="code" id="J-form-phoneMsg" placeholder="验证码" required>
</div>
<div class="col-xs-6 col-sm-6 col-md-6 pl0 por">
<button class="btn btn-lg btn-default btn-block roundCorner-no fl mb-1 btn-getPhoneMsg fs12" id="J-btn-getPhoneMsg" type="button">
发送短信验证码
</button>
</div>
</div>
<div class="por">
<input type="password" class="form-control form-control-pw roundCorner-no por" id="J-form-pw" name="password" placeholder="设置密码" required>
</div>
<div class="por">
<input type="password" class="form-control form-control-pwConfirm roundCorner-tl-no roundCorner-tr-no por" name="rePassword" id="J-form-pwconfirm" placeholder="再次输入密码" required>
</div>
<button class="btn btn-lg btn-primary btn-block ajax-post" target-form="form-register" href="{:url('User/register')}" type="submit">注册</button>
<p class="p10">已是会员? <a href="{:url('User/index')}">去登陆</a></p>
</form>
</div>
{/block}
{block name="myScript"}
<script src="__STATIC__/lib/happy-validate/happy.js"></script>
<script src="__STATIC__/lib/happy-validate/happy.methods.js"></script>
<script src="__JS__/timeTick.js"></script>
<script>
$(document).ready(function () {
$('#form-register').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入正确的手机号'
},
'#J-form-phoneMsg': {
required: true,
message: '必填'
},
'#J-form-pw': {
required: true,
message: '必填'
},
'#J-form-pwconfirm': {
required: true,
message: '必填'
}
}
});
// 发送验证码
var timeTick = new TimeTick({
el: '#J-btn-getPhoneMsg',
time: 60,
onClicked: function(){
var alertMSG = new AlertMSG();
var phone = $('#J-form-phoneNumber').val();
var reg = /^1[3458]\d{9}$/;
if (!(reg.test(phone))) {
alertMSG.showAlert({
msg:'<p>手机号不合法</p>'
});
}else{
var result ;
$.ajax({
type: "POST",
url: "{:url('User/getCode')}",
data: "user=" + phone,
async: false,
success: function(msg){
if( msg.status == 200 ){
result = true;
}else{
result = false;
}
}
});
return result;
}
}
});
});
</script>
{/block}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,6 +1,3 @@
/**
* Created by 7d-vision on 2016/11/7.
*/
(function ($) {
/**
* 创建新增表单

View File

@ -1,6 +1,3 @@
/**
* Created by 7d-vision on 2016/11/7.
*/
(function ($) {
/**
* 创建表格HTML字符串

View File

@ -1,8 +0,0 @@
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

View File

@ -1,17 +0,0 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
define('BIND_MODULE','index');
// 定义应用目录
define('APP_PATH', __DIR__ . '/../../application/');
// 加载框架引导文件
require __DIR__ . '/../../thinkphp/start.php';

View File

@ -1,38 +0,0 @@
/* Base structure */
/* Move down content because we have a fixed navbar that is 50px tall */
body { padding-top: 50px; }
/* Global add-ons */
.sub-header { padding-bottom: 10px; border-bottom: 1px solid #eee; }
/* Top navigation Hide default border to remove 1px line. */
.navbar-fixed-top { border: 0; }
/* Sidebar */
/* Hide for mobile, show later */
.sidebar { display: none; }
@media (min-width: 768px) { .sidebar { position: fixed; top: 51px; bottom: 0; left: 0; z-index: 1000; display: block; padding: 20px; overflow-x: hidden; overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ background-color: #f5f5f5; border-right: 1px solid #eee; } }
/* Sidebar navigation */
.nav-sidebar { margin-right: -21px; /* 20px padding + 1px border */ margin-bottom: 20px; margin-left: -20px; }
.nav-sidebar > li > a { padding-right: 20px; padding-left: 20px; }
.nav-sidebar > .active > a, .nav-sidebar > .active > a:hover, .nav-sidebar > .active > a:focus { color: #fff; background-color: #428bca; }
/* Main content */
.main { padding: 20px; }
@media (min-width: 768px) { .main { padding-right: 40px; padding-left: 40px; } }
.main .page-header { margin-top: 0; }
/* Placeholder dashboard ideas */
.placeholders { margin-bottom: 30px; text-align: center; }
.placeholders h4 { margin-bottom: 0; }
.placeholder { margin-bottom: 20px; }
.placeholder img { display: inline-block; border-radius: 50%; }

File diff suppressed because it is too large Load Diff

View File

@ -1,56 +0,0 @@
.header { margin-bottom: 20px; }
.header .navbar { background-color: #111; }
.header .navbar .nav li a { color: #fff; padding: 25px 20px; background: none; }
.navbar-brand { overflow: hidden; padding: 0; height: 70px; line-height: 70px; width: 300px; font-size: 0; }
.navbar-brand .brand-img { font-size: 0; }
.navbar-brand img { display: inline-block; width: 70px; margin-right: 10px; }
.navbar-brand span { float: left; height: 70px; font-size: 18px; line-height: 70px; color: #fff; }
/* Base structure */
/* Move down content because we have a fixed navbar that is 50px tall */
body { padding-top: 50px; }
/* Global add-ons */
.sub-header { padding-bottom: 10px; border-bottom: 1px solid #eee; }
/* Top navigation Hide default border to remove 1px line. */
.navbar-fixed-top { border: 0; }
/* Sidebar */
/* Hide for mobile, show later */
.sidebar { display: none; }
@media (min-width: 768px) { .sidebar { position: fixed; top: 51px; bottom: 0; left: 0; z-index: 1000; display: block; padding: 20px; overflow-x: hidden; overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ background-color: #eee; } }
/* Sidebar navigation */
.nav-sidebar { margin-right: -21px; /* 20px padding + 1px border */ margin-bottom: 20px; margin-left: -20px; }
.nav-sidebar > li > a { padding: 25px; }
.nav-sidebar > .active > a, .nav-sidebar > .active > a:hover, .nav-sidebar > .active > a:focus { color: #fff; background-color: #222; }
/* Main content */
.main { padding: 20px; }
@media (min-width: 768px) { .main { padding-right: 40px; padding-left: 40px; } }
.main .page-header { margin-top: 0; }
/* Placeholder dashboard ideas */
.placeholders { margin-bottom: 30px; text-align: center; }
.placeholders h4 { margin-bottom: 0; }
.placeholder { margin-bottom: 20px; }
.placeholder img { display: inline-block; border-radius: 50%; }
.table { font-size: 18px; }
.table thead > tr > th, .table tbody > tr > th, .table tfoot > tr > th, .table thead > tr > td, .table tbody > tr > td, .table tfoot > tr > td { padding: 15px 8px; border-bottom: 1px solid #eee; }
.table thead > tr > th { border-bottom: 1px solid #ddd; }
.menu-group { padding: 10px; border-bottom: 1px dashed #e2e2e2; }
.menu-group h4 { margin-top: 0; margin-bottom: 10px; }
.menu-group .nav-sidebar { margin: 0; }
.menu-group .nav-sidebar > li > a { padding: 10px; }

View File

@ -1,15 +0,0 @@
#bg { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: -2; background-color: #000; background-repeat: none; background-position: center; background-size: cover; }
#bg-mask { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: -1; background-color: rgba(0, 0, 0, 0.8); background-image: url(../img/mask.png); background-repeat: repeat; }
.header .navbar-brand { padding: 0; }
.header .navbar { margin: 0; }
.product-list { width: 900px; list-style: none; padding: 0; margin: 0 auto; }
.product-list .product { margin-bottom: 100px; }
.product-list .product-img img { width: 100%; }
.product-list .product-tit { color: #fff; }
.product-desc { padding: 30px; }

View File

@ -1,38 +0,0 @@
@charset "UTF-8";
body { padding-top: 40px; padding-bottom: 40px; background-color: #eee; /*background-image:url(../img/bg.png);*/ background-repeat: no-repeat; background-size: 100%; background-position: 0 center; background-color: #000; }
.unhappyMessage { position: absolute; top: 2px; right: 2px; z-index: 10; padding: 0 5px; font-weight: 400; color: #c33; font-size: 12px; }
#bg { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: -2; background-color: #000; background-repeat: none; background-position: center; background-size: cover; }
#bg-mask { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: -1; background-color: rgba(0, 0, 0, 0.65); background-image: url(../img/mask.png); background-repeat: repeat; }
.form-area { max-width: 330px; padding: 15px; margin: 0 auto; }
.form-area.form-signin input[type="password"], .form-area.form-signin input[type="text"], .form-area.form-signin input[type="email"] { border-radius: 0; }
.form-area.form-signin input[type="password"], .form-area.form-signin input[type="text"], .form-area.form-signin input[type="email"] { border-radius: 0; }
.form-control-phoneMsg, .btn-getPhoneMsg { height: 42px; }
.btn-getPhoneMsg { font-size: 12px; }
.form-area { color: #fff; }
.form-area .form-heading { color: #fff; margin-bottom: 10px; }
.form-area .form-control { position: relative; height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 10px; font-size: 14px; }
.form-area .form-control:focus { z-index: 2; }
/*登录*/
.form-signin .checkbox { margin-bottom: 10px; }
.form-signin .checkbox { font-weight: normal; }
.form-signin input.form-control-phone { margin-bottom: -1px; }
.form-signin input[type="password"] { margin-bottom: 10px; }
/*注册*/
.form-register .checkbox { margin-bottom: 10px; }
.form-register .checkbox { font-weight: normal; }
.form-register input.form-control-phone { margin-bottom: -1px; }
.form-register .form-control-pw { margin-bottom: -1px; }
.form-register .form-control-pwConfirm { margin-bottom: 10px; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 846 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 622 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,35 +0,0 @@
var AlertMSG = function(){
this.$modal = $('<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">'
+ '<div class="modal-dialog modal-sm">'
+ '<div class="modal-content p20 tc">'
+ '<button type="button" class="close" style="position:relative;z-index:2;" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>'
+ '<div class="modal-body"></div>'
+ '</div>'
+ '</div>'
+ '</div>');
this.$modal.appendTo('body');
this.$modal.find('.close').on('click',function(){
this.$modal.modal('hide');
});
return this;
};
AlertMSG.prototype={
showAlert: function(_options){
var options={
msg:'',
callback: null
};
options = $.extend(options, _options);
this.$modal.find('.modal-body').html(options.msg);
this.$modal.modal('show');
(options.callback && typeof(options.callback) === "function") && options.callback();
},
hideAlert: function(){
this.$modal.modal('hide');
this.$modal.find('.modal-body').html('');
}
}

View File

@ -1,38 +0,0 @@
/**
* Created by sevens on 2016/10/18.
*/
(function($) {
'use strict';
$(function() {
var alertMSG = new AlertMSG();
//ajax post submit请求
$('body').on('click', '.ajax-post', function() {
var target, query, form;
var target_form = $(this).attr('target-form');
if (($(this).attr('type') == 'submit')) {
form = $('#' + target_form);
query = form.serialize();
target = $(this).attr('href');
$.post(target, query).success(function(data) {
if (data.url) {
alertMSG.showAlert({
msg:'<p><i class="icon-ok-sign mr10" style="color:#3c3"></i>'+data.msg+' 页面即将自动跳转~</p>',
callback: function(){
setTimeout(function(){
window.location.href= data.url;
}, 2000);
}
});
} else {
alertMSG.showAlert({
msg:'<p>'+data.msg+'</p>',
});
}
});
}
return false;
});
});
})(jQuery);

View File

@ -1,75 +0,0 @@
var TimeTick = function(_options){
var options = {
btn: '#J-btn-getPhoneMsg',
time: 60,//倒计时时间
onClicked: function(){
console.log('onClicked');
}
};
options = $.extend(options, _options);
var time_sec = options.time;
var timerID = null;
//页面加载后开始执行
var stop = function (){
clearTimeout(timerID);
}
var setTime = function (_callback){
// console.log(time_sec);
if (time_sec <= 0) {
stop();
(_callback && typeof(_callback) === "function") && _callback();
time_sec = options.time;
return;
};
time_sec -=1;
$('.second').text(time_sec);
timerID=setTimeout(function(){
setTime(_callback);
}, 1000);//递归调用每1s执行一次
}
var init = function (){
return this;
}
var $modal = $('<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">'
+ '<div class="modal-dialog modal-sm">'
+ '<div class="modal-content p20 tc">'
+ '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>'
+ '</div>'
+ '</div>'
+ '</div>');
$modal.appendTo('body');
$(options.btn).on('click', function(){
var stateTimerId = null
var $this = $(this);
// var $btn = $(this).button('loading');
var state = options.onClicked();
$this.attr('disabled', 'disabled').html('正在发送</span>')
if(state === true){
$modal.find('.modal-content').html('短信验证码已发送到您的手机');
$modal.modal('show');
setTimeout(function(){
$modal.modal('hide');
clearTimeout(stateTimerId);
},1200);
$this.attr('disabled', 'disabled').addClass('disabled').html('<span class="second-txt"><i class="second">60</i> 秒后重新发送</span>').show(function(){
setTime(function(){
$this.html('重新发送验证码').removeAttr('disabled').removeClass('disabled');
// $this.removeAttr('disabled');
// $btn.button('reset');
});
});
}else{
$modal.find('.modal-content').html('验证码发送失败请重试');
$modal.modal('show');
setTimeout(function(){
clearTimeout(stateTimerId);
$modal.modal('hide');
$this.html('重新发送验证码').removeAttr('disabled').removeClass('disabled');
},1200);
}
});
return this;
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -1,159 +0,0 @@
/*global $*/
(function happyJS($) {
$.fn.isHappy = function isHappy(config) {
var fields = [], item;
var pauseMessages = false;
function isFunction(obj) {
return typeof obj === 'function';
}
function defaultError(error) { //Default error template
var msgErrorClass = config.classes && config.classes.message || 'unhappyMessage';
return $('<span id="' + error.id + '" class="' + msgErrorClass + '" role="alert">' + error.message + '</span>');
}
function getError(error) { //Generate error html from either config or default
if (isFunction(config.errorTemplate)) {
return config.errorTemplate(error);
}
return defaultError(error);
}
function handleSubmit(e) {
var i, l;
var errors = false;
if (config.testMode) {
e.preventDefault();
}
for (i = 0, l = fields.length; i < l; i += 1) {
if (!fields[i].testValid(true)) {
errors = true;
}
}
if (errors) {
if (isFunction(config.unHappy)) config.unHappy(e);
return false;
} else if (config.testMode) {
if (window.console) console.warn('would have submitted');
if (isFunction(config.happy)) return config.happy(e);
}
if (isFunction(config.happy)) return config.happy(e);
}
function handleMouseUp() {
pauseMessages = false;
}
function handleMouseDown() {
pauseMessages = true;
}
function processField(opts, selector) {
var field = $(selector);
if (!field.length) return;
selector = field.prop('id') || field.prop('name').replace(['[',']'], '');
var error = {
message: opts.message || '',
id: selector + '_unhappy'
};
var errorEl = $(error.id).length > 0 ? $(error.id) : getError(error);
var handleBlur = function handleBlur() {
if (!pauseMessages) {
field.testValid();
} else {
$(window).one('mouseup', field.testValid);
}
};
fields.push(field);
field.testValid = function testValid(submit) {
var val, temp;
var required = field.prop('required') || opts.required;
var password = field.attr('type') === 'password';
var arg = isFunction(opts.arg) ? opts.arg() : opts.arg;
var errorTarget = (opts.errorTarget && $(opts.errorTarget)) || field;
var fieldErrorClass = config.classes && config.classes.field || 'unhappy';
var testResult = errorTarget.hasClass(fieldErrorClass);
var oldMessage = error.message;
// handle control groups (checkboxes, radio)
if (field.length > 1) {
val = [];
field.each(function(i,obj) {
val.push($(obj).val());
});
val = val.join(',');
} else {
// clean it or trim it
if (isFunction(opts.clean)) {
val = opts.clean(field.val());
} else if (!password && typeof opts.trim === 'undefined' || opts.trim) {
val = $.trim(field.val());
} else {
val = field.val();
}
// write it back to the field
field.val(val);
}
// check if we've got an error on our hands
if (submit === true && required === true) {
testResult = !val.length;
}
if ((val.length > 0 || required === 'sometimes') && opts.test) {
if (isFunction(opts.test)) {
testResult = opts.test(val, arg);
}
else if (typeof opts.test === 'object') {
$.each(opts.test, function (i, test) {
if (isFunction(test)) {
testResult = test(val, arg);
if (testResult !== true) {
return false;
}
}
});
}
if (testResult instanceof Error) {
error.message = testResult.message;
}
else {
testResult = !testResult;
error.message = opts.message || '';
}
}
// only rebuild the error if necessary
if (!oldMessage !== error.message) {
temp = getError(error);
errorEl.replaceWith(temp);
errorEl = temp;
}
if (testResult) {
errorTarget.addClass(fieldErrorClass).after(errorEl);
return false;
} else {
errorEl.remove();
errorTarget.removeClass(fieldErrorClass);
return true;
}
};
field.on(opts.when || config.when || 'blur', handleBlur);
}
for (item in config.fields) {
if (config.fields.hasOwnProperty(item)) {
processField(config.fields[item], item);
}
}
$(config.submitButton || this).on('mousedown', handleMouseDown);
$(window).on('mouseup', handleMouseUp);
if (config.submitButton) {
$(config.submitButton).click(handleSubmit);
} else {
this.on('submit', handleSubmit);
}
return this;
};
})(this.jQuery || this.Zepto);

View File

@ -1,27 +0,0 @@
var happy = {
USPhone: function (val) {
// return /^\(?(\d{3})\)?[\- ]?\d{3}[\- ]?\d{4}$/.test(val);
return /^1[34578]\d{9}$/.test(val);
},
// matches mm/dd/yyyy (requires leading 0's (which may be a bit silly, what do you think?)
date: function (val) {
return /^(?:0[1-9]|1[0-2])\/(?:0[1-9]|[12][0-9]|3[01])\/(?:\d{4})/.test(val);
},
email: function (val) {
return /^(?:\w+\.?\+?)*\w+@(?:\w+\.)+\w+$/.test(val);
},
minLength: function (val, length) {
return val.length >= length;
},
maxLength: function (val, length) {
return val.length <= length;
},
equal: function (val1, val2) {
return (val1 == val2);
}
};

View File

@ -1,51 +0,0 @@
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
/*!
* Copyright 2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
(function () {
'use strict';
function emulatedIEMajorVersion() {
var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
if (groups === null) {
return null
}
var ieVersionNum = parseInt(groups[1], 10)
var ieMajorVersion = Math.floor(ieVersionNum)
return ieMajorVersion
}
function actualNonEmulatedIEMajorVersion() {
// Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
// IE JavaScript conditional compilation docs: http://msdn.microsoft.com/en-us/library/ie/121hztk3(v=vs.94).aspx
// @cc_on docs: http://msdn.microsoft.com/en-us/library/ie/8ka90k2e(v=vs.94).aspx
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line
if (jscriptVersion === undefined) {
return 11 // IE11+ not in emulation mode
}
if (jscriptVersion < 9) {
return 8 // IE8 (or lower; haven't tested on IE<8)
}
return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
}
var ua = window.navigator.userAgent
if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
return // Opera, which might pretend to be IE
}
var emulated = emulatedIEMajorVersion()
if (emulated === null) {
return // Not IE
}
var nonEmulated = actualNonEmulatedIEMajorVersion()
if (emulated !== nonEmulated) {
window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
}
})();

View File

@ -1,22 +0,0 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014 Twitter, Inc.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
// See the Getting Started docs for more information:
// http://getbootstrap.com/getting-started/#support-ie10-width
(function () {
'use strict';
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild(
document.createTextNode(
'@-ms-viewport{width:auto!important}'
)
)
document.querySelector('head').appendChild(msViewportStyle)
}
})();

File diff suppressed because one or more lines are too long

View File

@ -1,8 +0,0 @@
/*
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);

View File

@ -1,5 +0,0 @@
/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
* */
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);