update
191
LICENSE
Normal 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.
|
@ -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">
|
||||
|
@ -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>
|
||||
|
@ -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">
|
||||
|
@ -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,
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
<?php
|
@ -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' => [
|
||||
'',
|
||||
'北京',
|
||||
'天津',
|
||||
'河北省',
|
||||
'山西省',
|
||||
'内蒙古自治区',
|
||||
'辽宁省',
|
||||
'吉林省',
|
||||
'黑龙江省',
|
||||
'上海',
|
||||
'江苏省',
|
||||
'浙江省',
|
||||
'安徽省',
|
||||
'福建省',
|
||||
'江西省',
|
||||
'山东省',
|
||||
'河南省',
|
||||
'湖北省',
|
||||
'湖南省',
|
||||
'广东省',
|
||||
'广西壮族自治区',
|
||||
'海南省',
|
||||
'重庆',
|
||||
'四川省',
|
||||
'贵州省',
|
||||
'云南省',
|
||||
'西藏自治区',
|
||||
'陕西省',
|
||||
'甘肃省',
|
||||
'青海省',
|
||||
'宁夏回族自治区',
|
||||
'新疆维吾尔自治区',
|
||||
'台湾省',
|
||||
'香港特别行政区',
|
||||
'澳门特别行政区'
|
||||
]
|
||||
];
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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);
|
||||
// }
|
||||
}
|
||||
}
|
@ -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}×tamp={$now}");
|
||||
$urlParam = [
|
||||
's' => $hashStr,
|
||||
'n' => $nonceStr,
|
||||
't' => $now
|
||||
];
|
||||
return $urlParam;
|
||||
}
|
||||
}
|
@ -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>
|
||||
|
@ -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}
|
@ -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}
|
@ -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}
|
@ -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}
|
@ -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}
|
@ -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">×</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">×</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}
|
@ -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>
|
||||
|
@ -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}
|
@ -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}
|
@ -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}
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 20 KiB |
@ -1,6 +1,3 @@
|
||||
/**
|
||||
* Created by 7d-vision on 2016/11/7.
|
||||
*/
|
||||
(function ($) {
|
||||
/**
|
||||
* 创建新增表单
|
||||
|
@ -1,6 +1,3 @@
|
||||
/**
|
||||
* Created by 7d-vision on 2016/11/7.
|
||||
*/
|
||||
(function ($) {
|
||||
/**
|
||||
* 创建表格HTML字符串
|
||||
|
@ -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>
|
@ -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';
|
@ -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%; }
|
||||
|
||||
|
@ -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; }
|
||||
|
||||
|
@ -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; }
|
||||
|
||||
|
@ -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; }
|
||||
|
||||
|
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 3.9 MiB |
Before Width: | Height: | Size: 3.9 MiB |
Before Width: | Height: | Size: 846 KiB |
Before Width: | Height: | Size: 968 KiB |
Before Width: | Height: | Size: 622 KiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 935 B |
Before Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 179 KiB |
Before Width: | Height: | Size: 4.9 MiB |
Before Width: | Height: | Size: 30 KiB |
@ -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('');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
};
|
10
public/index/static/lib/bootstrap.min.css
vendored
12
public/index/static/lib/bootstrap.min.js
vendored
1447
public/index/static/lib/docs.min.js
vendored
@ -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);
|
@ -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);
|
||||
}
|
||||
};
|
@ -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!')
|
||||
}
|
||||
})();
|
@ -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)
|
||||
}
|
||||
})();
|
4
public/index/static/lib/jquery.min.js
vendored
@ -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);
|
@ -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='­<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);
|