初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

146
app/install/view/base.html Executable file
View File

@@ -0,0 +1,146 @@
<!DOCTYPE html>
<html>
<head>
<meta name="renderer" content="webkit" />
<meta http-equiv="X-UA-COMPATIBLE" content="IE=edge,chrome=1" />
<title>安装程序 - 单商户V5版</title>
<link rel="icon" type="image/x-icon" href="__STATIC__/img/shop_bitbug_favicon.ico" />
<link rel="stylesheet" type="text/css" href="INSTALL_CSS/style.css" />
<link rel="stylesheet" type="text/css" href="__STATIC__/ext/layui/css/layui.css" />
<script src="__STATIC__/js/jquery-3.1.1.js"></script>
<script src="__STATIC__/ext/layui/layui.js"></script>
<script>
layui.use(['layer', 'upload', 'element'], function() {});
window.ns_url = {
baseUrl: "ROOT_URL/",
route: ['install', '{:request()->controller()}', '{:request()->action()}'],
};
window.regexp_config = {:json_encode(config('regexp'))};
</script>
<script src="INSTALL_JS/common.js"></script>
{block name="resources"}{/block}
</head>
<body>
<div class="head-block">
<div class="top">
<div class="top-logo"></div>
<div class="top-sub" style="flex:1;">单商户V5版</div>
<ul class="top-link">
<li><a href="https://www.niushop.com" target="_blank">官方网站</a></li>
<li><a href="https://bbs.niushop.com" target="_blank">技术论坛</a></li>
</ul>
</div>
</div>
<div class="step-content">
<div style="width:1000px;margin:0 auto;">
<!-- 标题进度条 start-->
<div class="content" style="margin:30px 0 0 0;width: 100%;">
<div class="processBar">
<div class="text" style="margin: 10px -25px;"><span class='poetry'>1.许可协议</span></div>
<div id="line0" class="bar">
<div id="point0" class="c-step c-select"></div>
</div>
</div>
<div class="processBar">
<div class="text" style="margin: 10px -30px;"><span class='poetry'>2.环境检测</span></div>
<div id="line1" class="bar">
<div id="point1" class="c-step"></div>
</div>
</div>
<div class="processBar">
<div class="text" style="margin: 10px -30px;"><span class='poetry'>3.参数配置</span></div>
<div id="line2" class="bar">
<div id="point2" class="c-step"></div>
</div>
</div>
<div class="processBar" style="width:10px;">
<div class="text" style="margin: 10px -39px;"><span class='poetry'>4.安装完成</span></div>
<div id="line3" class="bar" style="width: 0;">
<div id="point3" class="c-step"></div>
</div>
</div>
</div>
<!-- 标题进度条 end-->
<div style="clear: both;"></div>
</div>
</div>
<div class="install-content">
{block name='main'}{/block}
</div>
<script>
var index=0;
$(document).ready(function(){
$("#education").addClass('main-hide');
$("#work").addClass('main-hide');
$("#social").addClass('main-hide');
$('#previous_step').hide();
/*上一步*/
$('#previous_step').bind('click', function () {
index--;
ControlContent(index);
});
/*下一步*/
$('#next_step').bind('click', function () {
index++;
ControlContent(index);
});
});
function ControlContent(index) {
var stepContents = ["basicInfo","education","work","social"];
var key;//数组中元素的索引值
for (key in stepContents) {
var stepContent = stepContents[key];//获得元素的值
if (key == index) {
if(stepContent=='basicInfo'){
$('#previous_step').hide();
}else{
$('#previous_step').show();
}
if(stepContent=='social'){
$('#next_step').hide();
}else{
$('#next_step').show();
}
$('#'+stepContent).removeClass('main-hide');
$('#point'+key).addClass('c-select');
$('#line'+key).removeClass('b-select');
}else {
$('#'+stepContent).addClass('main-hide');
if(key>index){
$('#point'+key).removeClass('c-select');
$('#line'+key).removeClass('b-select');
}else if(key<index){
$('#point'+key).addClass('c-select');
$('#line'+key).addClass('b-select');
}
}
}
}
function success(message){
layer.alert(message, {
icon: 1,
skin: 'layer-ext-moon',
title:'提示'
})
}
function error(message){
layer.alert(message, {
icon: 2,
skin: 'layer-ext-moon',
title:'提示'
})
}
</script>
{block name="script"}{/block}
</body>
</html>

View File

@@ -0,0 +1,75 @@
{extend name="base"/}
{block name="main"}
<div class="pright layui-form">
<h3 class="pr-title">阅读许可协议</h3>
<div class="pr-agreement">
<strong>版权所有 (c)2016Niushop开源商城团队保留所有权利。</strong>
<p>
感谢您选择Niushop开源商城以下简称NiuShopNiuShop基于 PHP + MySQL的技术开发全部源码开放。 <br/>
为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款:
</p>
<p>
<strong>一、本授权协议适用且仅适用于Niushop开源商城系统(以下简称Niushop)任何版本Niushop开源商城官方对本授权协议的最终解释权。</strong>
</p>
<p>
<strong>二、协议许可的权利 </strong>
<ol>
<li>非授权用户允许商用严禁去除Niushop相关的版权信息。</li>
<li>请尊重Niushop开发人员劳动成果严禁使用本系统转卖、销售或二次开发后转卖、销售等商业行为。</li>
<li>任何企业和个人不允许对程序代码以任何形式任何目的再发布。</li>
<li>您可以在协议规定的约束和限制范围内修改Niushop开源商城源代码或界面风格以适应您的网站要求。</li>
<li>您拥有使用本软件构建的网站全部内容所有权,并独立承担与这些内容的相关法律义务。</li>
<li>
获得商业授权之后,您可以将本软件应用于商业用途,同时依据所购买的授权类型中确定的技术支持内容,自购买时刻起,在技术支持期限内拥有通过指定的方式获得指定范围内的技术支持服务。商业授权用户享有反映和提出意见的权力,相关意见将被作为首要考虑,但没有一定被采纳的承诺或保证。
</li>
</ol>
</p>
<p>
<strong>三、协议规定的约束和限制 </strong>
<ol>
<li>未获商业授权之前允许您对Niushop应用于商业用途但严禁去除Niushop任何相关的版权信息。</li>
<li>未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。</li>
<li>未经官方许可禁止在Niushop开源商城的整体或任何部分基础上以发展任何派生版本、修改版本或第三方版本用于重新分发。</li>
<li>如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。</li>
</ol>
</p>
<p>
<strong>四、有限担保和免责声明 </strong>
<ol>
<li>本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。</li>
<li>用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。</li>
<li>电子文本形式的授权协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。您一旦开始确认本协议并安装
Niushop即被视为完全理解并接受本协议的各项条款在享有上述条款授予的权力的同时受到相关的约束和限制。协议许可范围以外的行为将直接违反本授权协议并构成侵权我们有权随时终止授权责令停止损害并保留追究相关责任的权力。
</li>
<li>如果本软件带有其它软件的整合API示范例子包这些文件版权不属于本软件官方并且这些文件是没经过授权发布的请参考相关软件的使用许可合法的使用。</li>
</ol>
</p>
</div>
<div class="btn-box">
<div class="btn-box-text">
<div class="layui-form-item">
<input type="checkbox" name="readpact" id="readpact" title="我已经阅读并同意此协议" value="1" lay-skin="primary">
</div>
</div>
<button class="layui-btn" lay-submit lay-filter="go">继续</button>
</div>
</div>
{/block}
{block name="script"}
<script>
layui.use('form', function () {
var form = layui.form;
form.on('submit(go)', function (data) {
var readpact = data.field.readpact;
if (readpact == 1) {
window.location.href = '{$root_url}/install.php/index/index?step=2';
} else {
error('您必须同意软件许可协议才能安装!');
}
});
});
</script>
{/block}

View File

@@ -0,0 +1,89 @@
{extend name="base"/}
{block name="main"}
<div class="testing">
<div class="testing-item">
<h3>服务器信息</h3>
<table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
<tr>
<th width="30%" align="center"><strong>参数</strong></th>
<th width="70%"><strong></strong></th>
</tr>
<tr>
<td><strong>服务器域名</strong></td>
<td>{$name}</td>
</tr>
<tr>
<td><strong>服务器操作系统</strong></td>
<td>{$os}</td>
</tr>
<tr>
<td><strong>服务器解译引擎</strong></td>
<td>{$server}</td>
</tr>
<tr>
<td><strong>PHP版本</strong></td>
<td>{$phpv}</td>
</tr>
<tr>
<td><strong>系统安装目录</strong></td>
<td>{$root_path}</td>
</tr>
</table>
</div>
<div class="testing-item">
<h3>系统环境检测<span class="desc">系统环境要求必须满足下列所有条件,否则系统或系统部份功能将无法使用。</span></h3>
<table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
<tr>
<th width="30%" align="center"><strong>需开启的变量或函数</strong></th>
<th width="35%"><strong>要求</strong></th>
<th width="35%"><strong>实际状态及建议</strong></th>
</tr>
<tr>
<td>php版本</td>
<td style="color:#ff8143;">php7.4.0及以上 </td>
<td><font color={if $verison}#ff8143{else/}red{/if}>{$phpv}</font> </td>
</tr>
{foreach $system_variables as $variables_key => $variables_item}
<tr>
<td>{$variables_item.name}</td>
<td>{$variables_item.need}</td>
<td><img clsss="check-icon" src="{if $variables_item.status}INSTALL_IMG/success.png{else/}INSTALL_IMG/error.png{/if}"/></td>
</tr>
{/foreach}
</table>
</div>
<div class="testing-item">
<h3>目录权限检测<span class="desc">系统要求必须满足下列所有的目录权限全部可读写的需求才能使用,其它应用目录可安装后在管理后台检测。</span></h3>
<table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
<tr>
<th width="30%" align="center"><strong>目录名</strong></th>
<th width="35%"><strong>读取权限</strong></th>
<th width="35%"><strong>写入权限</strong></th>
</tr>
{foreach $dirs_list as $dirs_key => $dirs_item}
<tr>
<td>{$dirs_item.path_name}</td>
<td>
<img clsss="check-icon" src="{if $dirs_item.is_readable}INSTALL_IMG/success.png{else/}INSTALL_IMG/error.png{/if}"/>
</td>
<td>
<img clsss="check-icon" src="{if $dirs_item.is_write}INSTALL_IMG/success.png{else/}INSTALL_IMG/error.png{/if}"/>
</td>
</tr>
{/foreach}
</table>
</div>
<div class="btn-box">
<input type="button" class="btn-back" value="后退" onclick="window.location.href = '{$root_url}/install.php/index/index?step=1';" />
<input type="button" class="btn-next" value="继续" {if !$continue} style="background-color:#777;color:#FFF;" disabled="disabled"{/if} onclick="window.location.href = '{$root_url}/install.php/index/index?step=3';" />
</div>
</div>
{/block}
{block name="script"}
<script>
ControlContent(1);
</script>
{/block}

View File

@@ -0,0 +1,244 @@
{extend name="base"/}
{block name="resources"}
<style>
.install-content-procedure .content-procedure-item:first-of-type{
background: url("INSTALL_IMG/complete_two.png") no-repeat center / contain;
color: #fff;
}
.install-content-procedure .content-procedure-item:nth-child(2){
background: url("INSTALL_IMG/complete_four.png") no-repeat center / contain;
color: #fff;
}
.install-content-procedure .content-procedure-item:nth-child(3){
background: url("INSTALL_IMG/conduct.png") no-repeat center / contain;
color: #fff;
}
</style>
{/block}
{block name="main"}
<div id='postloader' class='waitpage'></div>
<form class="layui-form" >
<div class="testing parameter">
<div class="testing-item">
<h3>数据库设定</h3>
<table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
<tr>
<td class="onetd"><span class="required">*</span>数据库主机:</td>
<td>
<input name="dbhost" id="dbhost" type="text" lay-verify="empty" placeholder="请输入数据库主机" value="" class="input-txt" onChange="testDb()" />
<small>一般为localhost</small>
</td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span>Mysql端口</td>
<td>
<input name="dbport" id="dbport" type="text" value="3306" class="input-txt" lay-verify="empty" placeholder="请输入Mysql端口"/>
<small>一般为3306</small>
</td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span>数据库用户:</td>
<td>
<input name="dbuser" id="dbuser" type="text" value="" class="input-txt" onChange="testDb()" lay-verify="empty" placeholder="请输入数据库用户"/>
<small>默认root</small>
</td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span>数据库密码:</td>
<td>
<div style='float:left;margin-right:3px;'>
<input name="dbpwd" id="dbpwd" type="text" class="input-txt" onChange="testDb()" lay-verify="empty" placeholder="请输入数据库密码" />
</div>
<div style='float:left' class="mysql-message" id='dbpwdsta'></div>
</td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span>数据库名称:</td>
<td>
<div style='float:left;margin-right:3px;'><input name="dbname" id="dbname" type="text" value="" class="input-txt" onChange="haveDB()" lay-verify="empty" placeholder="请输入数据库名称" /></div>
<div style='float:left' class="mysql-message" id='havedbsta'></div>
</td>
</tr>
<tr>
<td class="onetd">数据表前缀:</td>
<td>
<div style='float:left;margin-right:3px;'><input name="dbprefix" id="dbprefix" type="text" value="" class="input-txt" placeholder="请输入数据表前缀"/></div>
</td>
</tr>
<tr>
<td class="onetd">数据库编码:</td>
<td>
<label class="install-code">UTF8</label>
</td>
</tr>
</table>
</div>
<div class="testing-item">
<h3>网站设定</h3>
<table border="0" align="center" cellpadding="0" cellspacing="0" class="twbox">
<tr>
<td class="onetd"><span class="required">*</span><strong>网站标题:</strong></td>
<td><input name="site_name" id="site_name" type="text" value="" class="input-txt" lay-verify="empty" placeholder="请输入网站标题"/>
<small id="mess_site_name">网站标题 必填</small></td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span><strong>管理员用户名:</strong></td>
<td><input name="username" id="username" type="text" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台用户名"/>
<small id="mess_username">管理员用户名 必填</small></td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span><strong>管理员密码:</strong></td>
<td><input name="password" id="password" type="password" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台密码"/>
<small id="mess_password">密码 必填</small></td>
</tr>
<tr>
<td class="onetd"><span class="required">*</span><strong>确认密码:</strong></td>
<td><input name="password2" id="password2" type="password" value="" class="input-txt" lay-verify="empty" placeholder="请输入平台确认密码"/>
<small id="mess_password2">确认密码 必填</small></td>
</tr>
<tr>
<td class="onetd"><strong>演示数据:</strong></td>
<td><input type="checkbox" name="yanshi" id="yanshi" title="" value="1" lay-skin="primary">
<small id="mess_yanshi" style="margin-left: 0;">勾选后将添加演示数据</small></td>
</tr>
</table>
</div>
<div class="btn-box"></div>
<div class="btn-box">
<input type="button" class="btn-back" value="后退" onclick="window.location.href='{$root_url}/install.php/index/index?step=2'" />
<input type="button" class="btn-next" lay-submit lay-filter="install" value="开始安装" id="form_submit">
</div>
</div>
</form>
{/block}
{block name='script'}
<script language="javascript" type="text/javascript">
ControlContent(2);
var is_existdb = 1;//数据库是否存在
var message = '数据库账号或密码不能为空';
var is_install = false;
function inputBoxPointer(id){
return document.getElementById(id);
}
layui.use('form', function(){
var form = layui.form;
form.verify({
empty: function(value, item){
if(value == ''){
var msg = $(item).attr("placeholder");
return msg;
}
}
});
form.on('submit(install)', function(data){
if(is_existdb == 2){
layer.confirm('数据库存在,系统将覆盖数据库!', {
btn: ['继续','取消'] //按钮
}, function(){
layer.closeAll(); //疯狂模式,关闭所有层
install(data.field);
}, function(){
layer.closeAll(); //疯狂模式,关闭所有层
return false;
});
}else{
install(data.field);
}
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
function install(data){
if(is_install){
return false;
}
document.getElementById('form_submit').disabled= true;
$("#form_submit").val("正在安装...");
$("#form_submit").addClass("installimg-btn");
var index = layer.load(2);
is_install = true;
$.ajax({
url: "{$root_url}/install.php/index/index?step=4",
data: data,
dataType: 'json',
type: 'post',
success : function(data) {
layer.close(index);
if(data.code < 0){
error(data.message);
is_install = false;
document.getElementById('form_submit').disabled= false;
$("#form_submit").val("开始安装");
$("#form_submit").removeClass("installimg-btn");
}else{
window.location.href = '{$root_url}/install.php/index/installSuccess';
}
}
})
}
});
//数据库连接测试
function testDb()
{
var dbhost = inputBoxPointer('dbhost').value;
var dbuser = inputBoxPointer('dbuser').value;
var dbpwd = inputBoxPointer('dbpwd').value;
var dbport = inputBoxPointer('dbport').value;
inputBoxPointer('dbpwdsta').innerHTML='<img src="INSTALL_IMG/ajax-loader.gif">';
$.ajax({ //post也可
url: '{$root_url}/install.php/index/testdb',
data: { dbhost: dbhost, dbport : dbport, dbuser:dbuser, dbpwd:dbpwd},
type: "post",
dataType: 'json',
success: function(data){
if(data.code >= 0){
inputBoxPointer('dbpwdsta').innerHTML = data.data.message;
is_existdb = data.data.status;
message = data.data.message;
}else{
is_existdb = -1;
}
}
});
}
/**
*验证数据库是否存在
*/
function haveDB()
{
var dbhost = inputBoxPointer('dbhost').value;
var dbname = inputBoxPointer('dbname').value;
var dbuser = inputBoxPointer('dbuser').value;
var dbpwd = inputBoxPointer('dbpwd').value;
var dbport = inputBoxPointer('dbport').value;
inputBoxPointer('havedbsta').innerHTML='<img src="INSTALL_IMG/ajax-loader.gif">';
$.ajax({ //post也可
url: '{$root_url}/install.php/index/testdb',
data: { dbhost: dbhost, dbport : dbport, dbuser:dbuser, dbpwd:dbpwd,dbname:dbname},
type: "post",
dataType: 'json',
success: function(data){
if(data.code >= 0){
inputBoxPointer('havedbsta').innerHTML = data.data.message;
is_existdb = data.data.status;
message = data.data.message;
}else{
is_existdb = -1;
}
}
});
}
</script>
{/block}

View File

@@ -0,0 +1,57 @@
{extend name="base"/}
{block name="resources"}
<style>
.install-content-procedure .content-procedure-item:first-of-type{
background: url("INSTALL_IMG/complete_two.png") no-repeat center / contain;
color: #fff;
}
.install-content-procedure .content-procedure-item:nth-child(2), .install-content-procedure .content-procedure-item:nth-child(3){
background: url("INSTALL_IMG/complete_four.png") no-repeat center / contain;
color: #fff;
}
.install-content-procedure .content-procedure-item:nth-child(4){
background: url("INSTALL_IMG/complete_three.png") no-repeat center / contain;
color: #fff;
}
.install-content-procedure{border: none;}
</style>
{/block}
{block name="main"}
<div class="install-success">
<div class="install-success-box">
<img class="install-success-pic" src="INSTALL_IMG/install_complete.png" alt="">
<div class="install-success-text">
<p class="install-success-title">恭喜您已成功安装单商户V5版系统。</p>
<p class="install-success-desc">建议删除安装目录install后使用</p>
</div>
</div>
</div>
<div class="other-links">
<p class="other-links-title">您现在可以访问:</p>
<ul class="other-links-list">
<li class="other-links-item">
<div class="other-links-pic">
<img src="INSTALL_IMG/site_index.png" alt="">
</div>
<a href="{$root_url}/shop" class="other-links-text" target="_blank">网站后台</a>
</li>
<li class="other-links-item">
<div class="other-links-pic">
<img src="INSTALL_IMG/official_website.png" alt="">
</div>
<a href="http://www.niushop.com" class="other-links-text" target="_blank">NIUSHOP官方网站</a>
</li>
<li class="other-links-item">
<div class="other-links-pic">
<img src="INSTALL_IMG/forum.png" alt="">
</div>
<a href="http://bbs.niushop.com" class="other-links-text" target="_blank">NIUSHOP官方论坛</a>
</li>
</ul>
</div>
{/block}
{block name="script"}
<script>
ControlContent(3);
</script>
{/block}

View File

@@ -0,0 +1,510 @@
*{
padding:0px;
margin:0px;
}
body{
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px;
color: #333;
background-color: #edf0f3;
}
ul{
list-style:none;
}
a{
color: #333;
text-decoration: none;
}
a:hover{
color:#FF6A00;
text-decoration:none;
}
input,button,select{
vertical-align:middle;
outline: none;
}
.fc-690{
color:#333;
}
.fs-14{
font-size:14px;
}
.layui-input, .layui-select, .input-text, .layui-btn{
height: 34px;
line-height: 34px;
font-size: 14px;
}
.layui-btn{
color: #fff;
padding: 0 16px;
background-color: #FF6A00 !important;
}
.btn-box .layui-form-checked[lay-skin=primary] i{
border-color: #FF6A00 !important;
background-color: #FF6A00 !important;
color: #fff !important;
}
.layui-form-checkbox[lay-skin=primary]:hover i{
border-color: #FF6A00 !important;
}
.layui-form-checked[lay-skin=primary] i{
border-color: #FF6A00 !important;
background-color: #FF6A00 !important;
}
.head-block{
margin-bottom: 20px;
background-color: #fff;
}
.top{
overflow:hidden;
display: flex;
justify-content: space-between;
align-items: center;
width: 1200px;
height: 80px;
margin: auto;
}
.top .top-logo{
overflow:hidden;
width:142px;
height: 100%;
background:url(../img/logo.png) no-repeat center;
}
.top-sub{
flex:1;
font-size:19px;
font-weight: bold;
margin-left:10px;
}
.top .top-logo h1{
font-size:0px;
line-height:1000%;
}
.top .top-link{
height:15px;
}
.top .top-link li{
display: inline-block;
margin-left: 15px;
line-height:14px;
font-size: 16px;
}
.install-content{
margin: 0 auto 50px;
width: 1200px;
background-color: #fff;
}
.install-content::after{
content:"";
display: block;
clear: both;
}
.install-content-procedure{
border: 1px solid #EDF0F3;
height: 116px;
}
.install-content-procedure .content-procedure-list{
width: 1000px;
margin: 15px auto;
display: flex;
position: relative;
top: 50%;
transform: translateY(-50%);
}
.install-content-procedure .content-procedure-item{
flex: 1;
height: 36px;
font-size: 14px;
line-height: 36px;
text-align: center;
background: url("../img/not_complete.png") no-repeat center / contain;
}
.install-content-procedure .content-procedure-item:first-of-type{
color: #fff;
background: url("../img/complete_one.png") no-repeat center / contain;
}
.install-content-procedure .content-procedure-item:last-of-type{
background: url("../img/not_complete_two.png") no-repeat center / contain;
}
/* 第一个页面 */
.pright{
margin: 0px auto 0;
padding-bottom: 40px;
width:1100px;
padding-top: 40px;
}
.pright .pr-title{
padding-left: 30px;
height: 50px;
font-size: 16px;
font-weight: bold;
line-height: 50px;
background-color: #e7e7e7;
}
.pr-agreement{
overflow-y:scroll;
padding: 10px 30px;
border:1px solid #ddd;
height:300px;
line-height:21px;
color:#666;
}
.pr-agreement::-webkit-scrollbar {
width: 6px;
background-color: #FFF;
}
.pr-agreement::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color: #494E51;
}
.pr-agreement::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
background-color: #F5F5F5;
}
.pr-agreement strong{
display:block;
color:#333;
line-height:27px;
margin-top:6px;
}
.pr-agreement p{
text-indent:30px;
}
.pr-agreement .describe{
text-indent: 0;
}
.btn-box{
margin-top: 30px;
text-align: right;
vertical-align: middle;
height: 34px;
line-height: 34px;
}
.btn-back, .btn-next{
width:100px;
height:34px;
border:none;
background-color:#ff8143;
color:#FFF;
cursor:pointer;
margin-left:10px;
overflow:hidden;
font-size: 14px;
border-radius:3px;
}
.btn-back{
border: 1px solid #C7C7C7;
color: #333;
background-color: #fff;
}
.btn-box-text{
position: relative;
display: inline-block;
height: 16px;
line-height: 16px;
}
#readpact{
position: relative;
height: 16px;
width: 16px;
vertical-align: bottom;
z-index: 8;
opacity: 0;
cursor: pointer;
}
.btn-box-selection{
position: absolute;
top: 0;
left: 0;
width: 16px;
height: 16px;
background: url("../img/no_agree.png") no-repeat center;
}
.btn-box .agreement{
font-size: 14px;
font-weight: bold;
}
/* 第二个页面 */
.testing{
padding: 25px 25px 35px;
}
.testing-item{
margin-bottom: 30px;
}
.testing-item:last-of-type{
margin-bottom: 0;
}
.testing-item h3{
height: 50px;
line-height: 50px;
font-size: 16px;
font-weight: bold;
}
.testing .testing-item .desc{
margin-left: 5px;
color: #666;
font-size: 12px;
font-weight: normal;
}
.testing .twbox{
width: 100%;
font-size: 14px;
border: 1px solid #e7e7e7;
}
.testing .twbox th{
height: 50px;
text-align: left;
background-color: #e7e7e7;
}
.testing .twbox td{
height: 50px;
border-top: 1px solid #e7e7e7;
}
.testing .twbox th:first-of-type, .testing .twbox td:first-of-type{
padding-left: 30px;
}
/* 第三个页面 */
.parameter .twbox{
border-top: 0;
}
.parameter .input-txt{
padding-left: 11px;
width: 180px;
height: 30px;
border:1px solid #c7c7c7;
font-size:12px;
color: #333;
outline: none;
}
.parameter .onetd{
padding: 0 !important;
width:120px;
font-weight: 400;
text-align:right;
line-height:25px;
}
.parameter small{
margin-left: 20px;
color: #999;
}
.waitpage {
top:0;
left:0;
filter:Alpha(opacity=70);
-moz-opacity:0.7;
position:absolute;
z-index:10000;
background:url(../img/loading1.gif) #ababab no-repeat center 200px;
width:100%;
height:2500px;
display:none;
}
.install-code{
height:27px;line-height:27px;
}
.installimg-btn{
background-color:#777;
}
/* 第四个页面 */
.install-success{
padding: 10px 0 50px;
margin-left: 50px;
margin-right: 50px;
border-bottom: 1px dashed #E7E7E7;
text-align: center;
padding-top: 50px;
}
.install-content .install-success-box{
display: inline-block;
align-self: center;
margin: auto;
}
.install-content .install-success-pic{
width: 45px;
height: 45px;
margin-right: 20px;
vertical-align: middle;
}
.install-content .install-success-text{
display: inline-block;
text-align: left;
vertical-align: middle;
}
.install-content .install-success-title{
margin-bottom: 5px;
font-size: 18px;
font-weight: bolder;
}
.install-content .install-success-desc{
color: #999;
font-size: 14px;
}
.install-content .other-links{
padding: 39px 50px 300px;
font-size: 14px;
}
.install-content .other-links-list{
display: flex;
margin-top: 60px;
justify-content: space-around;
}
.install-content .other-links-item{
display: flex;
align-self: center;
}
.install-content .other-links-pic{
margin-right: 20px;
width: 45px;
height: 45px;
line-height: 45px;
text-align: center;
}
.install-content .other-links-pic img{
display: block;
max_width: 100%;
max-height: 100%;
}
.install-content .other-links-text{
line-height: 45px;
}
.step-content{
margin: 0 auto 3px;
width: 1200px;
background-color: #fff;
padding-bottom:30px;
}
input{
vertical-align:middle;
margin-right:3px;
font-size:12px;
}
input.but{
height:26px;
padding-left:6px;
padding-right:6px;
line-height:26px;
font-weight:bold;
letter-spacing:1px;
color:#FFF;
background-color:#FC3;
}
/*步骤*/
.processBar{
float: left;
width: 329px;
margin-top: 15px;
}
.processBar .bar{
background: #fbeeea;
height: 3px;
position: relative;
width: 314px;
margin-left: 10px;
}
.processBar .b-select{
background: #ff8143;
}
.processBar .bar .c-step{
position: absolute;
width: 16px;
height: 16px;
border-radius: 50%;
background-image: url(../img/step_point.png);
left: -16px;
top: 50%;
margin-top: -8px;
}
.processBar .bar .c-select{
width: 16px;
height: 16px;
margin: -9px 1px;
background-image: url(../img/step_point_check.png);
}
.main-hide {
position: absolute;
top: -9999px;
left: -9999px;
}
.poetry{
color: #000;
font-size: 13px;
background-color: transparent;
font-weight: 800;
}
button{
width: 80px;
line-height: 30px;
font-size: 11px;
color: #ff8143;
text-align: center;
border-radius: 6px;
border: 1px solid #e2e2e2;
cursor: pointer;
background-color: #fff;
outline:none;
}
button:hover{
border: 1px solid #fbeeea;
}
.layui-form-item .layui-form-checkbox[lay-skin=primary]{
margin-top: 3px !important;
}
.mysql-message{
height: 32px;
line-height: 32px;
margin-left: 10px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

View File

@@ -0,0 +1,166 @@
var ns = window.ns_url;
/* 基础对象检测 */
ns || $.error("js-ns_url基础配置没有正确加载");
/**
* 解析URL
* @param {string} url 被解析的URL
* @return {object} 解析后的数据
*/
ns.parse_url = function (url) {
var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
parse || $.error("url格式不正确");
return {
"scheme": parse[1],
"host": parse[2],
"port": parse[3],
"path": parse[4],
"query": parse[5],
"fragment": parse[6]
};
}
ns.parse_str = function (str) {
var value = str.split("&"), vars = {}, param;
for (val in value) {
param = value[val].split("=");
vars[param[0]] = param[1];
}
return vars;
}
ns.parse_name = function (name, type) {
if (type) {
/* 下划线转驼峰 */
name = name.replace(/_([a-z])/g, function ($0, $1) {
return $1.toUpperCase();
});
/* 首字母大写 */
name = name.replace(/[a-z]/, function ($0) {
return $0.toUpperCase();
});
} else {
/* 大写字母转小写 */
name = name.replace(/[A-Z]/g, function ($0) {
return "_" + $0.toLowerCase();
});
/* 去掉首字符的下划线 */
if (0 === name.indexOf("_")) {
name = name.substr(1);
}
}
return name;
}
//scheme://host:port/path?query#fragment
ns.url = function (url, vars, suffix) {
var info = this.parse_url(url), path = [], param = {}, reg;
/* 验证info */
info.path || $.error("url格式错误");
url = info.path;
/* 解析URL */
path = url.split("/");
path = [path.pop(), path.pop(), path.pop()].reverse();
path[1] = path[1] || this.route[1];
path[0] = path[0] || this.route[0];
// param[this.route[0]] = path[0];
// param[this.route[1]] = path[1];
// param[this.route[2]] = path[2].toLowerCase();
// url = param[this.route[0]] + '/' + param[this.route[1]] + '/' + param[this.route[2]];
param[this.route[2]] = path[0];
param[this.route[3]] = path[1];
param[this.route[4]] = path[2].toLowerCase();
url = param[this.route[2]] + '/' + param[this.route[3]] + '/' + param[this.route[4]];
/* 解析参数 */
if (typeof vars === "string") {
vars = this.parse_str(vars);
} else if (!$.isPlainObject(vars)) {
vars = {};
}
/* 添加伪静态后缀 */
if (false !== suffix) {
suffix = suffix || 'html';
if (suffix) {
url += "." + suffix;
}
}
/* 解析URL自带的参数 */
info.query && $.extend(vars, this.parse_str(info.query));
/* 判断站点id是否存在 */
var site = '';
if (vars.site_id) {
var site_id = vars.site_id;
delete vars.site_id;
site = 's' + parseInt(site_id) + '/';
} else {
var site_id = this.route[0];
site = site_id > 0 ? 's' + parseInt(site_id) + '/' : '';
}
var addon = '';
if (info.scheme != '' && info.scheme != undefined) {
addon = info.scheme + '/';
}
url = site + addon + url;
if (vars) {
var param_str = $.param(vars);
if ('' !== param_str) {
url += ((this.baseUrl + url).indexOf('?') !== -1 ? '&' : '?') + param_str;
}
}
url = this.baseUrl + url;
return url;
}
/**
* 处理图片路径
*/
ns.img = function (path, type = '') {
if (path.indexOf("http://") == -1 && path.indexOf("https://") == -1) {
var start = path.lastIndexOf('.');
type = type ? '_' + type : '';
var base_url = this.baseUrl.replace('/?s=', '');
var suffix = path.substring(start);
var path = path.substring(0, start);
var true_path = base_url + 'attachment/' + path + type + suffix;
} else {
var true_path = path;
}
return true_path;
}
/**
* 时间戳转时间
*
*/
ns.time_to_date = function (timeStamp) {
if (timeStamp > 0) {
var date = new Date();
date.setTime(timeStamp * 1000);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
} else {
return "";
}
}
/**
* url 反转义
* @param url
*/
ns.urlReplace = function (url) {
var new_url = url.replace(/%2B/g, "+");//"+"转义
new_url = new_url.replace(/%26/g, "&");//"&"
new_url = new_url.replace(/%23/g, "#");//"#"
new_url = new_url.replace(/%20/g, " ");//" "
new_url = new_url.replace(/%3F/g, "?");//"#"
new_url = new_url.replace(/%25/g, "%");//"#"
new_url = new_url.replace(/&3D/g, "=");//"#"
new_url = new_url.replace(/%2F/g, "/");//"#"
return new_url;
}

9814
app/install/view/public/js/jquery-2.2.js vendored Executable file

File diff suppressed because it is too large Load Diff