added 初步完成新框架的适配

This commit is contained in:
zhaoxiang 2016-11-07 00:32:52 +08:00
parent 87b2e02339
commit bb21eac180
20 changed files with 1486 additions and 14 deletions

View File

@ -10,3 +10,36 @@
// +----------------------------------------------------------------------
// 应用公共文件
/**
* CURL post数据
* @param $url
* @param $data
* @param array $urlParam
* @param array $header
* @return mixed
*/
function curlPost( $url, $data, $urlParam = [], $header = [] ){
$ch = curl_init();
if( !empty($urlParam) ){
$url = $url.'?'.http_build_query($urlParam);
}
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
if( !empty($header) ){
$headerStrArr = [];
foreach ($header as $key => $value){
$headerStrArr[] = "$key: $value";
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerStrArr);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$return = curl_exec($ch);
curl_close($ch);
return $return;
}

View File

@ -9,5 +9,18 @@ namespace app\index\controller;
use think\Controller;
class Base extends Controller {
protected $uid;
public function _initialize(){
//初始化系统
$this->uid = session('uid');
if( !isset($this->uid) || empty($this->uid) ){
$this->redirect('User/index');
}
//控制器初始化
if(method_exists($this,'_myInitialize')){
$this->_myInitialize();
}
}
}

View File

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

View File

@ -7,7 +7,16 @@
namespace app\index\controller;
class Index extends Base {
public function index() {
protected $uid;
public function index(){
// $proList = D('BuyLog')->where(['uid' => $this->uid])->select();
$proList = [];
$proNum = count($proList);
if( $proNum ){
$this->assign('proList', $proList);
}
$this->assign('proNum', $proNum);
return $this->fetch();
}
}

View File

@ -0,0 +1,50 @@
<?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'));
$this->display();
}
public function buy(){
$data = $this->request->post();
$data['uid'] = $this->uid;
$data['addTime'] = time();
if( $data['type'] != 2 ){
if( empty($data['email']) ){
$this->error('电子邮箱不能为空!', '', true);
}else{
if( !preg_match('/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i', $data['email']) ){
$this->error('手机号码不合法!', '', true);
}
}
if( empty($data['location']) ){
$this->error('地区不能为空!', '', true);
}
if( empty($data['name']) ){
$this->error('姓名不能为空!', '', true);
}
if( empty($data['city']) ){
$this->error('所在城市不能为空!', '', true);
}
}else{
$data['status'] = 1;
}
// $isBuy = D('BuyLog')->where(['uid' => $this->uid, 'proName' => $data['proName'], 'status' => 0])->count();
// if( $isBuy ){
// $this->error('请勿重复操作!', '', true);
// }
// $res = D('BuyLog')->add($data);
// if( $res === false ){
// $this->error('操作失败!', '', true);
// }else{
// $this->success('信息提交成功!', U('Index/index'), true);
// }
}
}

View File

@ -6,10 +6,154 @@
*/
namespace app\index\controller;
use \think\Controller;
class User extends Controller {
use extend\StrOrg;
class User extends Base {
public function index(){
echo 11111;
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{
$this->display();
}
}
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{
$this->display();
}
}
private function getAuthStr(){
$ticket = config('AUTH_TICKET');
$nonceStr = StrOrg::randString(12,5,'oOLl01');
$now = time();
$hashStr = sha1("ticket={$ticket}&noncestr={$nonceStr}&timestamp={$now}");
$urlParam = [
's' => $hashStr,
'n' => $nonceStr,
't' => $now
];
return $urlParam;
}
}

View File

@ -1,9 +0,0 @@
<?php
namespace app\index\model;
use think\Model;
class User extends Model
{
}

View File

View File

@ -0,0 +1,82 @@
<!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="__INDEX__/img/favicon.ico">
<title>七维科技-用户中心</title>
<!-- Bootstrap core CSS -->
<link href="__INDEX__/lib/bootstrap.min.css" rel="stylesheet">
<link href="__INDEX__/css/main.css" rel="stylesheet">
<!-- Custom styles for this template -->
{block name="myStyle"}
<link href="__INDEX__/css/members.css" rel="stylesheet">
{/block}
<!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]>
<script src="__INDEX__/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="__INDEX__/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="__INDEX__/lib/html5shiv.js"></script>
<script src="__INDEX__/lib/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="__INDEX__/img/logo.jpg" alt=""></span><span>七维科技-会员中心</span></a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">返回七维首页</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="__INDEX__/lib/jquery.min.js"></script>
<script src="__INDEX__/lib/bootstrap.min.js"></script>
<!-- <script src="__INDEX__/lib/docs.min.js"></script> -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="__INDEX__/lib/ie10-viewport-bug-workaround.js"></script>
<script src="__INDEX__/js/alertMSG.js"></script>
<script src="__INDEX__/js/app.js"></script>
{block name="myScript"}{/block}
</body>
</html>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,321 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__INDEX__/css/product.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__INDEX__/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="__INDEX__/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="__INDEX__/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="__INDEX__/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="__INDEX__/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="__INDEX__/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="__INDEX__/img/product/sony_rig_3.jpg" alt=""></div>
<div class="product-desc">
<p>3代 相机组合覆盖360°x300°视角度的全景图像水平三台相机减少拼接从而保证水平画面足够清晰顶部一个相机使天空完美无缝适合室内近景直播。</p>
</div>
</div>
<div class="product-ctrl">
<a href="#" proName="Go!Pano Sony-RigⅢ" type="0" class="btn btn-danger J-btn-buy">立即购买</a>
<!-- <a href="#" class="btn btn-link J-btn-downloadFreetrial">下载试用版</a> -->
</div>
</li>
</ul>
</div> <!-- /container -->
<!-- Modal -->
<div class="modal fade" id="orderModal" tabindex="-1" role="dialog" aria-labelledby="orderModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="orderModalLabel">填写完善您的资料</h4>
</div>
<div class="modal-body">
<form class="form-area form-product" role="form" id="form-product">
<input type="hidden" name="proName" value="">
<input type="hidden" name="type" value="">
<div class="form-group">
<label for="J-form-phoneNumber">电子邮箱</label>
<div class="por">
<input type="email" name="email" class="form-control form-control-phone" id="J-form-phoneNumber" placeholder="请填写联系人电子邮箱" required autofocus>
</div>
</div>
<div class="form-group" id="J-form-usertype">
<label for="">用户类型</label>
<div class="fix">
<div class="fl mr50">
<div class="radio">
<label>
<input type="radio" checked name="usertype" id="J-form-type-personal" value="personal">
个人
</label>
</div>
</div>
<div class="fl">
<div class="radio">
<label>
<input type="radio" name="usertype" id="J-form-type-company" value="company">
公司
</label>
</div>
</div>
</div>
</div>
<div class="form-group" id="J-form-name">
<label for="">个人名称</label>
<div class="por">
<input type="text" name="name" class="form-control" required>
</div>
</div>
<div class="form-group">
<label for="">您的位置</label>
<div class="">
<select name="location" id="" class="form-control">
<volist name="pro" id="vo">
<option value="{$key}">{$vo}</option>
</volist>
</select>
</div>
</div>
<div class="form-group">
<label for="J-form-company">现有设备</label>
<div class="por">
<input type="text" class="form-control form-control-phone" id="J-form-company" placeholder="填写现有设备" required>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary ajax-post" target-form="form-product" href="{:url('Product/buy')}" >提交</button>
<p style="color:#c33;font-weight:bold;">提交后会有工作人员跟您联系</p>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="modal fade" id="proDetailModal" tabindex="-1" role="dialog" aria-labelledby="proDetailModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">商品详情</h4>
</div>
<div class="modal-body">
<img src="#" alt="">
</div>
</div>
</div>
</div>
{/block}
{block name="myScript"}
<script src="__INDEX__/lib/happy-validate/happy.js"></script>
<script src="__INDEX__/lib/happy-validate/happy.methods.js"></script>
<script>
$(document).ready(function () {
$('#form-signin').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入格式正确的手机号',
test: happy.USPhone
},
'#J-form-pw': {
required: true,
message: '请输入密码'
}
}
});
$('.J-btn-buy').on('click', function(){
$("input[name=proName]").val($(this).attr('proName'));
$("input[name=type]").val($(this).attr('type'));
$('#orderModal').modal('show');
});
$('.J-btn-downloadFreetrial').on('click', function(){
var proName = $(this).attr('proName');
var type = $(this).attr('type');
var target = $(this).attr('url');
var query = {proName:proName,type:type};
$.post(target, query).success(function(data) {
return;
});
alert('btn-download-free');
});
// 选择用户类型
$('#J-form-usertype').on('click', 'input:radio',function(e){
// e.preventDefault();
var $form_anme = $('#J-form-name');
var label = $form_anme.find('label');
// console.log($(this).val());
if ($(this).val() == 'personal') {
label.text('个人名称');
}else{
label.text('公司名称');
};
})
$('.J-proDetail').on('click', function(e){
e.preventDefault();
var $parent = $(this).parents('.product');
var $desc = $parent.find('.product-desc-pop').clone().removeClass('hide');
$('#proDetailModal').find('.modal-body').html($desc);
$('#proDetailModal').modal('show');
})
});
</script>
{/block}

View File

@ -0,0 +1,44 @@
<!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="__INDEX__/img/favicon.ico">
<title>七维科技-{block name="title"}{/block}</title>
<!-- Bootstrap core CSS -->
<link href="__INDEX__/lib/bootstrap.min.css" rel="stylesheet">
<link href="__INDEX__/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="__INDEX__/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="__INDEX__/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="__INDEX__/lib/html5shiv.js"></script>
<script src="__INDEX__/lib/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="__INDEX__/lib/jquery.min.js"></script>
<script src="__INDEX__/lib/bootstrap.min.js"></script>
<!-- <script src="__INDEX__/lib/docs.min.js"></script> -->
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="__INDEX__/lib/ie10-viewport-bug-workaround.js"></script>
<script src="__INDEX__/js/alertMSG.js"></script>
<script src="__INDEX__/js/app.js"></script>
{block name="myScript"}{/block}
</body>
</html>

View File

@ -0,0 +1,48 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>七维科技-购买列表</title>
<link rel="stylesheet" href="//cdn.bootcss.com/semantic-ui/2.2.4/semantic.min.css">
</head>
<body>
<div class="ui container">
<h2> </h2>
<table class="ui celled striped red table">
<thead>
<tr>
<th>用户编号</th>
<th>购买产品</th>
<th>用户姓名</th>
<th>用户手机号</th>
<th>用户所在地</th>
<th>企业名称</th>
<th>订单时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<volist name="proList" id="vo">
<tr>
<td>{$vo['uid']}</td>
<td>{$vo['proName']}</td>
<td>{$vo['name']|default='-'}</td>
<td>{$vo['phone']|default='-'}</td>
<td>{$vo['city']|default='-'}</td>
<td>{$vo['company']|default='-'}</td>
<td>{$vo['addTime']}</td>
<if condition="$vo['status'] eq 0" >
<td><a href="{:url('User/handleOrder', ['code' => 1, '_id' => $vo['_id']])}" class="ui green button">处理订单</a></td>
<else />
<td><a href="{:url('User/handleOrder', ['code' => 0, '_id' => $vo['_id']])}" class="ui red button">撤销状态</a></td>
</if>
</tr>
</volist>
</tbody>
</table>
</div>
</body>
</html>

View File

@ -0,0 +1,53 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__INDEX__/css/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__INDEX__/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="__INDEX__/lib/happy-validate/happy.js"></script>
<script src="__INDEX__/lib/happy-validate/happy.methods.js"></script>
<script>
$(document).ready(function () {
$('#form-signin').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入格式正确的手机号',
test: happy.USPhone,
},
'#J-form-pw': {
required: true,
message: '请输入密码'
}
}
});
});
</script>
{/block}

View File

@ -0,0 +1,93 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__INDEX__/css/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__INDEX__/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="__INDEX__/lib/happy-validate/happy.js"></script>
<script src="__INDEX__/lib/happy-validate/happy.methods.js"></script>
<script src="__INDEX__/js/timeTick.js"></script>
<script>
$(document).ready(function () {
$('#form-register').isHappy({
fields: {
'#J-form-phoneNumber': {
required: true,
message: '请输入正确的手机号'
},
'#J-form-phoneMsg': {
required: true,
message: '必填'
},
'#J-form-pw': {
required: true,
message: '必填'
},
'#J-form-pwconfirm': {
required: true,
message: '必填'
}
}
});
// 发送验证码
var timeTick = new TimeTick({
el: '#J-btn-getPhoneMsg',
time: 60,
onClicked: function(){
var phone = $('#J-form-phoneNumber').val();
var result ;
$.ajax({
type: "POST",
url: "{:url('User/getCode')}",
data: "user=" + phone,
async: false,
success: function(msg){
if( msg.status == 200 ){
result = true;
}else{
result = false;
}
}
});
return result;
}
});
});
</script>
{/block}

View File

@ -0,0 +1,100 @@
{extend name="public/base" /}
{block name="title"}用户中心{/block}
{block name="myStyle"}
<link href="__INDEX__/css/sign.css" rel="stylesheet">
{/block}
{block name="myContent"}
<div id="bg" style="background-image:url(__INDEX__/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="__INDEX__/lib/happy-validate/happy.js"></script>
<script src="__INDEX__/lib/happy-validate/happy.methods.js"></script>
<script src="__INDEX__/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}