优化游戏管理

master
ELF 5 years ago
parent dae2dd5fd9
commit b434d2eacc

@ -50,14 +50,17 @@ class ApplyService {
];
}
public function cancelGame($gameId, $promoteId) {
$ids = [$promoteId];
$list = M('promote', 'tab_')->field('id')->where('parent_id=' . $promoteId . ' or grand_id=' . $promoteId)->select();
$ids = array_merge($ids, array_column($list, 'id'));
$save['offline_status'] = 1;
M('apply', 'tab_')->where(['game_id' => $gameId, 'promote_id' => ['in', $ids]])->save($save);
public function offlineGame($game, $promote = null)
{
$conditions = ['game_id' => $game['id']];
if ($promote) {
$promoteService = new PromoteService();
$children = $promoteService->getAllChildren($promote, 0, ['id']);
$promoteIds = [$promote['id']];
$promoteIds = array_merge($promoteIds, array_column($children, 'id'));
$conditions['promote_id'] = ['in', $promoteIds];
}
M('apply', 'tab_')->where($conditions)->save(['offline_status' => 1]);
}
public function updateAfterPack($apply, $packageUrl, $plistUrl)
@ -90,25 +93,56 @@ class ApplyService {
return $host . '/index.php?s=/Home/Home/landingPage/code/' . $code;
}
public function encodeApplyCode($apply, $type)
public function getApplyData($apply, $type, $version)
{
$data = null;
$expiresIn = 0;
$data = [
'promote_id' => $apply['promote_id'],
'game_id' => $apply['game_id'],
'expires_in' => $expiresIn,
'created_at' => date('Y-m-d H:i:s'),
'type' => $type
];
if ($version == 1) {
$data = [
'promote_id' => $apply['promote_id'],
'game_id' => $apply['game_id'],
'expires_in' => $expiresIn,
'created_at' => date('Y-m-d H:i:s'),
'type' => $type
];
$data = json_encode($data);
} elseif ($version == 2) {
$data = [
$apply['promote_id'],
$apply['game_id'],
$expiresIn,
time(),
$type
];
$data = implode('|', $data);
}
return $data;
}
$jsonStr = json_encode($data);
return base64_encode(openssl_encrypt($jsonStr, self::ENCRYPT_METHOD, self::ENCRYPT_KEY));
public function encodeApplyCode($apply, $type, $version = 2)
{
$data = $this->getApplyData($apply, $type, $version);
return base64_encode(openssl_encrypt($data, self::ENCRYPT_METHOD, self::ENCRYPT_KEY));
}
public function decodeApplyCode($code)
{
$decryptStr = openssl_decrypt(base64_decode($code), self::ENCRYPT_METHOD, self::ENCRYPT_KEY);
return json_decode($decryptStr, true);
$result = json_decode($decryptStr, true);
if (is_null($result)) {
$items = explode('|', $result);
if (count($items) != 5) {
return null;
}
return [
'promote_id' => $items[0],
'game_id' => $items[1],
'expires_in' => $items[2],
'created_at' => date('Y-m-d H:i:s', $items[3]),
'type' => $items[4],
];
}
return $result;
}
public function checkApplyCode($data, $type)

@ -835,6 +835,18 @@ class PromoteService {
}
}
/**
* 获取所有下级推广员
*/
public function getAllChildren($promote, $level = 0, $fields = '*')
{
$conditions = ['chain' => ['like', $promote['chain'] . $promote['id'] . '/%']];
if ($level != 0) {
$conditions['level'] = $level;
}
return M('promote', 'tab_')->field($fields)->where($conditions)->select();
}
public function getLevelName($level)
{
return self::$levels[$level] ?? '未知';

File diff suppressed because it is too large Load Diff

@ -2043,7 +2043,7 @@ class PromoteController extends BaseController
$gameId = $_POST['game_id'];
$promoteId = $_POST['promote_id'];
$applyService = new ApplyService();
$applyService->cancelGame($gameId, $promoteId);
$applyService->offlineGame($gameId, $promoteId);
recordPromoteLogs('游戏管理','专服管理下架游戏');
$this->ajaxReturn(['status' => true, 'msg' => '下架成功']);
}

@ -0,0 +1,815 @@
<extend name="Public/promote_base"/>
<block name="css">
<link rel="stylesheet" href="__CSS__/20170831/select2.min.css" type="text/css"/>
<link href="__CSS__/20180207/data.css" rel="stylesheet">
<link href="__CSS__/20180207/game.css" rel="stylesheet">
<link href="__CSS__/20180207/finance.css" rel="stylesheet">
<link href="__CSS__/game_detailed.css?v=1.3" rel="stylesheet">
<link href="__STATIC__/icons_alibaba/iconfont.css" rel="stylesheet">
<link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/font-awesome/4.6.0/css/font-awesome.min.css">
<link href="__CSS__/transfer.css" rel="stylesheet" >
<style type="text/css">
.trunk-list {
position: relative;
min-height: 66vh;
}
.pagenation {
text-align: center;
line-height: 5vh;
}
.lwx_dialog_prompt .layui-layer-content {
padding-top: 15px;
}
.lwx_dialog_title {
margin: 0;
padding: 0;
}
.launch_platform_prompt .layui-layer-input, .lwx_dialog_input, .lwx_dialog_select, .lwx_dialog_textarea {
display: block;
width: 220px;
height: 32px;
margin: 0 auto;
line-height: 32px;
padding: 0 5px;
border: 1px solid #ccc;
box-shadow: 1px 1px 5px rgba(0, 0, 0, .1) inset;
color: #333;
}
.lwx_dialog_select {
width: 272px;
}
.lwx_dialog_textarea {
height: 64px;
width: 260px;
margin-top: 10px;
resize: none;
}
.lwx_dialog_input {
width: 260px;
margin-top: 10px;
}
.launch_platform_prompt .layui-layer-btn, .lwx_dialog_prompt .layui-layer-btn {
text-align: center;
padding-bottom: 25px;
}
.launch_platform_prompt .layui-layer-btn .layui-layer-btn0, .lwx_dialog_prompt .layui-layer-btn .layui-layer-btn0 {
width: 81%;
line-height: 32px;
height: 32px;
margin: 0;
}
.lwx_dialog_notice {
position: absolute;
bottom: 6px;
left: 20px;
font-size: 12px;
color: #999;
}
.lwx_dialog_prompt .select2-container, .select2-container--default .select2-selection--single {
width: 272px !important;
}
.applycbtn {
display: block;
color: #50B370;
}
textarea {
font-family: inherit;
}
.trunk-content {
margin: 0 2%;
}
.add-disable {
color: #999;
}
.btn-role-border {
border-left: 0!important;
}
.game-msg p {
margin-bottom: 5px;
}
</style>
</block>
<block name="body">
<?php
$promoteLevel = I('promote_level', 0);
$isMine = I('is_mine', 0);
$promoteId = I('promote_id', 0);
$gameId = I('game_id', 0);
$curUri = $serverType == 2 ? 'Game/mix' : 'Game/index';
?>
<div class="page-list normal_list apply-index-list jssearch">
<div class="trunk-title">
<div class="location">
<div class="location-container">当前位置:<span>游戏管理></span><span>{$position}</span></div>
</div>
<img src="__IMG__/20180207/icon_normal_game.png"><span class="title_main">游戏列表</span>
</div>
<div class="trunk-content article">
<div class="trunk-search clearfix">
<div class="tab">
<a class="tab-item <?php if($isMine == 0):?>current<?php endif;?>" href="{:U($curUri)}">全部游戏</a>
<a class="tab-item <?php if($isMine == 1):?>current<?php endif;?>" href="{:U($curUri, ['is_mine' => 1])}">我的游戏</a>
</div>
<div class="tab marg_top20" style="clear:both;display: flex;">
<div style="display: flex;">
<a class="inline-btn btn-role <?php if($promoteLevel==0):?>highlight<?php endif;?>"
href="{:U($curUri, ['is_mine' => $isMine, 'promote_level' => 0])}">
<p>本账号</p>
</a>
<if condition="$loginer['level'] eq 1">
<a class="inline-btn btn-role btn-role-border <?php if($promoteLevel==2):?>highlight<?php endif;?>"
href="{:U($curUri, ['is_mine' => $isMine, 'promote_level' => 2])}">
<p>部长</p>
</a>
</if>
<if condition="$loginer['level'] elt 2">
<a class="inline-btn btn-role btn-role-border <?php if($promoteLevel==3):?>highlight<?php endif;?>"
href="{:U($curUri, ['is_mine' => $isMine, 'promote_level' => 3])}">
<p>组长</p>
</a>
</if>
<if condition="$loginer['level'] elt 3">
<a class="inline-btn btn-role btn-role-border <?php if($promoteLevel==4):?>highlight<?php endif;?>"
href="{:U($curUri, ['is_mine' => $isMine, 'promote_level' => 4])}">
<p>推广员</p>
</a>
</if>
</div>
</div>
<input type="hidden" name="promote_level" value="<?=$promoteLevel?>">
<input type="hidden" name="is_mine" value="<?=$isMine?>">
<div class="form-group normal_space fr">
<input type="submit" class="submit" id='submit' url="{:U($game,array('model'=>$model['name'],'type'=>$type),false)}" value="查询">
</div>
<div class="form-group normal_space fr">
<select id="game_id" name="game_id" class="reselect select_gallery" style="min-width:200px;width: 175px;">
<option value="" selected>请选择游戏</option>
</select>
</div>
<div id="promote-select-wrap" class="form-group normal_space fr">
<select id="promote_id" name="promote_id" class="reselect select_gallery" style="min-width:200px;width: 175px;">
<option value="" selected>请选择渠道</option>
</select>
</div>
<div class="form-group normal_space fr" style="display: none;">
<input id="promote_role" name="promote_role">
</div>
</div>
<div class="trunk-list">
<div class="div_bgtab">
<ul class="game-ul">
<empty name="records">
<ul class="game-ul">
<li class="game-li" style="text-align: center;">
<img src="__IMG__/20180207/icon_wushujv2.png"/>
<p style="line-height: 40px;color: #A5A5A5;">
<?php if($promoteLevel != 0 && $promoteId == 0):?>
请选择渠道搜索
<?php else:?>
暂无数据
<?php endif;?>
</p>
</li>
</ul>
<else/>
<volist name="records" id="game">
<li class="game-li" data-game-id="{$game.id}">
<div class="media">
<div class="img-box" style="cursor: pointer;">
<img src="__ROOT__{$game.icon|get_cover='path'}" />
</div>
<div class="game-msg" style="width: calc(92% - 90px);">
<h5 class="game-title">
{$game.game_name}
</h5>
<p><span class="game-desc">{$game.features}</span><a class="show-detail" href="javascript:;" style="margin-left: 10px;">详情</a></p>
<p class="details">
<span class="game-platform el-tag el-tag-plain el-tag-success el-tag-mini">平台:{:getSDKTypeName($game['sdk_version'])}</span>
<span class="game-version el-tag el-tag-plain el-tag-success el-tag-mini">版本:{$game.version}</span>
<span class="game-size el-tag el-tag-plain el-tag-success el-tag-mini">大小:{$game.game_size}</span>
<span class="game-type el-tag el-tag-plain el-tag-success el-tag-mini">游戏类型:{$game.game_type_name}</span>
</p>
</div>
<div class="game-operating" style="width: 500px;">
<!-- <button class="el-button el-button-primary el-button-mini">游戏详情</button> -->
<!-- <span class="game-link" data-type="landing-page" data-game-id="{$game.id}" style="cursor: pointer;margin-right: 10px;"><u>游戏详情</u></span> -->
<?php if($isMine == 1):?>
<?php if($promoteLevel == 0):?>
<button class="apply-child-btn el-button el-button-success el-button-mini">添加下级游戏</button>
<?php endif;?>
<button class="game-link-btn el-button el-button-primary el-button-mini" data-type="download">下载链接</button>
<button class="game-link-btn el-button el-button-primary el-button-mini" data-type="landing-page">落地页链接</button>
<button class="offline-game-btn el-button el-button-info el-button-mini">下架</button>
<!-- <span class="add-game" game-id="{$game.id}" promote-type="2" style="cursor: pointer;margin-right: 10px;"><u>添加下级游戏</u></span> -->
<!-- <span class="game-link" data-type="download" data-game-id="{$game.id}" style="cursor: pointer;margin-right: 10px;"><u>复制下载链接</u></span> -->
<!-- <span class="game-link" data-type="landing-page" data-game-id="{$game.id}" style="cursor: pointer;margin-right: 10px;"><u>落地页链接</u></span> -->
<?php else:?>
<?php if($game['offline_status'] == 0):?>
<button class="el-button el-button-primary el-button-mini is-disabled">已添加</button>
<!-- <span class="add-disable" style="cursor: pointer;">已添加</span> -->
<?php else:?>
<button class="apply-btn el-button el-button-primary el-button-mini">添加</button>
<!-- <span onclick="commonApply({$game.id},this,0,10)" style="cursor: pointer;"><u>添加</u></span> -->
<?php endif;?>
<?php endif;?>
</div>
</div>
</li>
</volist>
</empty>
</ul>
</div>
<div class="pagenation clearfix">
{$pagination}
</div>
</div>
</div>
</div>
<div id="platform_list" style="display:none;">
<select>
<option value="">选择投放平台</option>
<volist name=":get_launch_platform_list(0)" id="vo">
<option value="{$vo.id}">{$vo.name}</option>
</volist>
</select>
</div>
<div class="detail-body" style="display: none;">
<div class="detail-box">
<a href="javascript:;" class="game-detail-close jq-detail-close"><i class="iconfont iconguanbi" style="font-size: 40px;"></i></a>
<div class="game-detail-inner">
<div class="detail-list">
<dl>
<dt>
<img src="" id="game_icon">
</dt>
<dd class="game-title" id="game_name"></dd>
<dd class="game-word">
<span><b>版本:</b><span id="version"></span></span>
<span><b>类型:</b><span id="game_type_name"></span></span>
<span><b>大小:</b><span id="game_size"></span></span>
<span><b>更新时间:</b><span id="create_time"></span></span>
<span><b>下载:</b><span id="dow_num"></span></span>
</dd>
<dd class="game-tab">
<i>西游</i>
<i>回合</i>
<i>回合</i>
</dd>
</dl>
</div>
<div class="game-detail-outer">
<div class="game-detail-left fl">
<div class="detail-con game-synopsis panel panel-bordered">
<div class="panel-heading"><h3 class="panel-title">游戏简介</h3></div>
<p id="features"></p>
</div>
<div class="detail-con game-pic panel panel-bordered">
<div class="panel-heading"><h3 class="panel-title">游戏截图</h3></div>
<div class="pic-box">
<div class="game-slides">
<ul style="width: 2800px;" class="game-slide-li">
</ul>
</div>
<a href="javascript:;" class="pic-prev" style="left: 10px;">
<i class="iconfont iconfanhui" style="font-size: 30px;margin-left: 4px;color: #fff;"></i>
</a>
<a href="javascript:;" class="pic-next down-img" style="right: 10px;">
<i class="iconfont icongengduo" style="font-size: 30px;margin-left: -7px;color: #fff;"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="game-window-box" id="game_link">
<div class="game-window-title">
<p style="width: calc(80% - 20px)">复制结果</p>
<p class="add-game-close" style="width: calc(20% - 20px);text-align: right;"><i class="iconfont iconguanbi"></i></p>
</div>
<div class="game-window-content" style="text-align: center;width: auto;padding-bottom: 0px;">
<div class="game-window-content-eveyone" style="display: block;color: #3A97FF;font-size: 1.1rem;">
<label style="margin-right: 20px;">下载地址:</label>
<span id="game_link_address" style="word-wrap: break-word;white-space: normal;"></span>
</div>
</div>
<div class="game-window-content" style="text-align: center;width: auto;padding-top: 5px;">
<div class="game-window-content-eveyone" style="display: block;color: #999;font-size: 1.1rem;">
<span id="copy_msg">复制成功,ctrl+v粘贴即可</span>
<button class="clipboard-btn" id="clipboard-btn" style="display: none;" data-text="">复制</button>
</div>
</div>
<div class="game-window-content" style="text-align: center;width: auto;padding-bottom: 5px;">
<div id="game_link_ercode" class="game-window-content-eveyone" style="display: block;color: #999;font-size: 1.1rem;">
<!-- <img id="game_link_ercode" style="width: 200px;height: 200px;"> -->
</div>
</div>
<div class="game-window-content" style="text-align: center;width: auto;padding-top: 5px;">
<div class="game-window-content-eveyone" style="display: block;color: #999;font-size: 1.1rem;">
<span>下载地址二维码</span>
</div>
</div>
</div>
<div class="game-window-bg"></div>
<div id="apply-child-box" class="layer-box" style="display: none;">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label>添加游戏</label>
<div class="form-item">
<p class="static-input show-game-name"></p>
</div>
</div>
<div class="form-group">
<label>设备类型</label>
<div class="form-item">
<p class="static-input show-game-platform"></p>
</div>
</div>
<div class="form-group">
<label>人员类型</label>
<div class="form-item">
<label class="radio-item"><input type="radio" name="level" value="2" checked> 部门长</label>
<label class="radio-item"><input type="radio" name="level" value="3"> 组长</label>
<label class="radio-item"><input type="radio" name="level" value="4"> 组员</label>
</div>
</div>
<div class="form-group" class="form-group" style="display: block;">
<include file="Public/transfer" />
</div>
<div class="form-group">
<label></label>
<a id="batch-apply-submit" href="javascript:;" class="btn">确定</a>
</div>
</form>
</div>
</block>
<block name="script">
<script src="__STATIC__/zeroclipboard/jquery.zclip.min.js"></script>
<script type="text/javascript" src="__JS__/20170831/select2.min.js"></script>
<script src="__STATIC__/clipboard.min.js"></script>
<script type="text/javascript" src="__JS__/jquery.qrcode.min.js"></script>
<script src="__STATIC__/vue.js"></script>
<script src="__JS__/transfer.js"></script>
<script type="text/javascript">
var gameScreenshotCount = 0;
var curPromoteLevel = parseInt('{$promoteLevel}')
var curIsMine = parseInt('{$isMine}')
var curPromoteId = parseInt('{$promoteId}')
var curGameId = parseInt('{$gameId}')
$(function() {
$('#promote_id').select2();
$('#game_id').select2();
if (curPromoteLevel == 0) {
$('#promote-select-wrap').hide();
} else {
getPromotesByLevel(curPromoteLevel);
$('#promote-select-wrap').show();
$('#promote_id').select2();
}
getMineBaseGames();
$('.apply-btn').on({
click: function() {
var gameId = $(this).parents('li').eq(0).attr('data-game-id');
apply(gameId, curPromoteId, this);
}
})
$('.game-link-btn').on('click', function () {
var gameId = $(this).parents('li').eq(0).attr('data-game-id');
var type = $(this).attr('data-type')
getLink(type, gameId, curPromoteId, this)
})
$('.offline-game-btn').on({
click: function() {
var gameId = $(this).parents('li').eq(0).attr('data-game-id');
layer.confirm('确定要下架游戏?', {icon: 3, title:'提示'}, function(index){
offlineGame(gameId, curPromoteId)
})
}
})
$('.show-detail').on({
click: function() {
var gameId = $(this).parents('li').eq(0).attr('data-game-id');
viewGameDetailed(gameId)
}
})
var boxGameId = 0
$('[name=level]').on({
click: function () {
var box = $('#apply-child-box')
var level = box.find('[name=level]:checked').val()
getUnApplyPromotes({game_id: boxGameId, level: level}, function (response) {
var list = new Array()
for (var i in response.data.promotes) {
var promote = response.data.promotes[i]
list.push({id: promote.id, name: promote.account + '(' + promote.real_name + ')', type:false, isSearch:true, number:6})
}
vm.initList = list
vm.targetList = []
})
}
})
$('.apply-child-btn').on({
click: function() {
var box = $('#apply-child-box')
var liTag = $(this).parents('li').eq(0);
boxGameId = liTag.attr('data-game-id');
box.find('.show-game-name').html(liTag.find('.game-title').html())
box.find('.show-game-platform').html(liTag.find('.game-platform').html())
var level = box.find('[name=level]:checked').val()
getUnApplyPromotes({game_id: boxGameId, level: level}, function (response) {
vm.init()
vm.leftTitle = '未添加人员'
vm.rightTitle = '选中人员'
var list = new Array()
for (var i in response.data.promotes) {
var promote = response.data.promotes[i]
list.push({id: promote.id, name: promote.account + '(' + promote.real_name + ')', type:false, isSearch:true, number:6})
}
vm.initList = list
vm.targetList = []
})
layer.open({
title: '添加下级游戏',
type: 1,
content: box,
area: ['600px', '650px'],
zIndex: 250,
})
}
})
$('#batch-apply-submit').on({
click: function() {
promoteIds = vm.getTargetIds()
if (promoteIds.length == 0) {
return layer.msg('请选择要添加该游戏的人员')
}
batchApplyGame(boxGameId, promoteIds)
}
})
$('.add-game-close').on('click', function () {
$(this).parent().parent('.game-window-box').hide();
$('.game-window-bg').hide();
});
highlight_subnav('{:U($curUri)}');
})
function apply(gameId, promoteId, obj) {
$.ajax({
type: 'post',
url: '{:U("apply")}',
dataType: 'json',
data: { game_id: gameId, promote_id: promoteId },
success: function (response) {
if (response.status) {
disableApplyBtn(obj)
layer.msg(response.message, {icon: 1, time: 1500});
} else {
layer.msg(response.message, {icon: 2, time: 1500});
}
},
error: function () {
layer.msg('服务器故障', {icon: 5});
that.removeClass('no_submit');
}
})
}
function disableApplyBtn(obj) {
$(obj).removeClass('apply-btn');
$(obj).addClass('is-disabled');
$(obj).html('已添加');
$(obj).off('click')
}
function batchApply(gameId, promoteIds) {
$.ajax({
type: 'post',
url: '{:U("batchApply")}',
dataType: 'json',
data: { game_id: gameId, promote_ids: promoteIds },
success: function (response) {
if (response.status) {
layer.msg(response.message, {icon: 1, time: 1500});
} else {
layer.msg(response.message, {icon: 2, time: 1500});
}
},
error: function () {
layer.msg('服务器故障', {icon: 5});
that.removeClass('no_submit');
}
})
}
function getUnApplyPromotes(data, successCallback) {
$.ajax({
url: "{:U('Game/getUnApplyPromotes')}",
data: data,
type: 'post',
dataType: 'json',
success: function(response) {
successCallback(response)
}
})
}
function getLink(type, gameId, promoteId, obj) {
var url = '';
if (type == 'download') {
url = "__URL__/getDownloadUrl";
} else if (type == 'landing-page') {
url = "__URL__/getLandingPageUrl";
}
$.ajax({
url: url,
type: 'post',
dataType: "json",
data: {game_id: gameId, promote_id: promoteId},
success: function (response) {
if (response.status == 1) {
var logo = getGameLogo(obj)
drawQrcode(response.data.url, logo)
showLinkDialog(response.data.url)
} else {
layer.alert(response.message, {icon: 7});
}
},
error: function (result) {
layer.msg('网络异常', {icon: 5});
}
});
}
function isImg(src) {
var img = new Image();
img.src = src;
if (img.width > 0 || img.height > 0) {
return true;
}
return false;
}
function getGameLogo(obj) {
var logo = null;
var logoSrc = $(obj).parents('.game-li').eq(0).find('.img-box').children('img').attr('src');
if (isImg(logoSrc)) {
logo = $(obj).parents('.game-li').eq(0).find('.img-box').children('img')[0]
} else {
var img = document.createElement('img');
img.src = '__IMG__/game_icon.png';
logo = img;
}
return logo;
}
function offlineGame(gameId, promoteId) {
$.ajax({
url: "{:U('Game/offline')}",
data: { game_id: gameId, promote_id: promoteId },
type: 'post',
dataType: 'json',
success: function(response) {
layer.msg(response.msg, {time: 1000}, function() {
window.location.href = window.location.href
})
}
})
}
function drawQrcode(url, logo) {
var qrcodeWidth = 200
var qrcodeHeight = 200
var logoWidth = qrcodeWidth/4
var logoHeight = qrcodeHeight/4
var options = {
render: 'canvas',
ecLevel: 'H',//识别度
fill: '#000',//二维码颜色
background: '#ffffff',//背景颜色
quiet: 2,//边距
width: 200,//宽度
height: 200,
text: url,//二维码内容
label: 'jQuery.qrcode',
fontname: 'Ubuntu',
fontcolor: '#ff9818',
};
$('#game_link_ercode').empty().qrcode(options);
$("#game_link_ercode canvas")[0].getContext('2d').drawImage(logo, (qrcodeWidth - logoWidth) / 2, (qrcodeHeight - logoHeight) / 2, logoWidth, logoHeight);
}
function showLinkDialog(url) {
$('#clipboard-btn').attr('data-text', url)
$('#clipboard-btn').click()
$('#game_link_address').text(url);
$('#game_link').show();
$('.game-window-bg').show();
}
function batchApplyGame(gameId, promoteIds, successCallback) {
$.ajax({
url: "{:U('Game/batchApply')}",
data: { game_id: gameId, promote_ids: promoteIds },
type: 'post',
dataType: 'json',
success: function(response) {
successCallback(response)
}
})
}
function getMineBaseGames() {
$.ajax({
type: 'get',
url: "{:U('Game/getMineBaseGames')}",
dataType: "json",
success: function (response) {
var games = response.data.games;
var html = '<option value="">请选择游戏</option>';
if (games.length > 0) {
$.each(promotes, function (index, item) {
var selected = ''
if (curGameId == item.id) {
selected = 'selected'
}
html += '<option value="' + item.id + '" title="' + item.name + '"' + selected + '>';
html += promoteTitle;
html += '</option>';
});
}
$('#game_id').html(html);
$('#game_id').select2();
},
error: function (result) {
layer.msg('网络异常', {icon: 5});
}
});
}
function getPromotesByLevel(level) {
$.ajax({
type: 'get',
url: "{:U('Promote/getSubPromotes')}",
dataType: "json",
data: {'level': level},
success: function (response) {
var promotes = response.data.promotes;
var html = '<option value="">请选择渠道</option>';
if (promotes.length > 0) {
$.each(promotes, function (index, item) {
var promoteTitle = item['account'] + '(' + item['real_name'] + ')';
var selected = ''
if (curPromoteId == item.id) {
selected = 'selected'
}
html += '<option value="' + item['id'] + '" title="' + promoteTitle + '"' + selected + '>';
html += promoteTitle;
html += '</option>';
});
}
$('#promote_id').empty();
$('#promote_id').html(html);
$('#promote_id').select2();
},
error: function (result) {
layer.msg('网络异常', {icon: 5});
}
});
}
//查看游戏详情
function viewGameDetailed(id) {
$.ajax({
type: "post",
url: "__URL__/getDetail",
dataType: "json",
data: {'id': id},
success: function (data) {
$('#game_icon').attr('src', data.icon ? data.icon : '');
$('#game_name').text(data.game_name ? data.game_name : '');
$('#version').text(data.version ? data.version : '无');
$('#game_type_name').text(data.game_type_name ? data.game_type_name : '无');
$('#game_size').text(data.game_size ? data.game_size : 0);
$('#create_time').text(data.create_time ? data.create_time : '无');
$('#dow_num').text(data.dow_num ? data.dow_num : 0);
$('#features').text(data.features ? data.features : '无');
gameScreenshotCount = data.screenshot.length; //游戏截图数量
if (gameScreenshotCount > 0) {
var html = '';
$.each(data.screenshot_url, function (index, item) {
html += '<li>';
html += '<img src="' + item + '">';
html += '</li>';
});
$('.game-slide-li').html(html);
$('.game-slide-li').css('left', '0px');
}
$('.detail-body').show();
},
error: function (result) {
layer.msg('网络异常', {icon: 5});
}
});
}
$('.game-detail-close').on('click', function () {
$('.detail-body').hide();
});
$('.pic-prev').on('click', function () {
var element = $('.game-slides').children('ul');
var oldLeft = element.position().left;
var newLeft = oldLeft + 280;
if (newLeft <= 0 && newLeft % 1 === 0) {
element.css('left', newLeft);
}
});
$('.pic-next').on('click', function () {
var element = $('.game-slides').children('ul');
var oldLeft = element.position().left;
var newLeft = oldLeft - 280;
var minLeft = -(gameScreenshotCount * 280 -560);
if (newLeft >= minLeft && newLeft % 1 === 0) {
element.css('left', newLeft);
}
});
$('.pack-inner').hover(function () {
var element = $(this);
$('.pack-inner').children('.pack-word').hide();
element.children('.pack-word').show();
});
$('#submit').click(function () {
var url = $(this).attr('url');
console.log(url);
var query = $('.jssearch').find('input').serialize();
query += "&" + $('.jssearch').find('select').serialize();
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g, '');
query = query.replace(/^&/g, '');
if (url.indexOf('?') > 0) {
url += '&' + query;
} else {
url += '?' + query;
}
window.location.href = url;
});
</script>
</block>

@ -282,6 +282,7 @@ $(function(){
click: function () {
if ($(this).val() == 2) {
$('#shift-transfer').show()
$('#shift-transfer').css({display: 'block'})
} else {
$('#shift-transfer').hide()
}
@ -458,7 +459,7 @@ $(function(){
title: shiftTypeName,
type: 1,
content: box,
area: ['600px', '600px'],
area: ['600px', '650px'],
zIndex: 250,
})
}

@ -40,39 +40,41 @@
</head>
<body>
<div class="header">
<div class="inner clearfix">
<div class="logo">
<if condition="CONTROLLER_NAME eq 'Cline' ">
<a href="https://www.vlcms.com/" target="_blank">
<span class="placeholder-graphic placeholder-graphic_logo" style="background:transparent;">
<img src="{:check_logo_is_exist(C('CH_SET_LOGO'),'logo_default.png')}" alt="logo">
</span>
</a>
<else/>
<a href="{:U('index/index')}">
<span class="placeholder-graphic placeholder-graphic_logo" style="background:transparent;">
<img src="{:check_logo_is_exist(C('CH_SET_LOGO'),'logo_default.png')}" alt="logo">
</span>
</a>
</if>
<i></i>
<span class="text"><span>手游推广</span><span>联盟中心</span></span>
<div id="app">
<div class="header">
<div class="inner clearfix">
<div class="logo">
<if condition="CONTROLLER_NAME eq 'Cline' ">
<a href="https://www.vlcms.com/" target="_blank">
<span class="placeholder-graphic placeholder-graphic_logo" style="background:transparent;">
<img src="{:check_logo_is_exist(C('CH_SET_LOGO'),'logo_default.png')}" alt="logo">
</span>
</a>
<else/>
<a href="{:U('index/index')}">
<span class="placeholder-graphic placeholder-graphic_logo" style="background:transparent;">
<img src="{:check_logo_is_exist(C('CH_SET_LOGO'),'logo_default.png')}" alt="logo">
</span>
</a>
</if>
<i></i>
<span class="text"><span>手游推广</span><span>联盟中心</span></span>
</div>
<ul class="nav clearfix">
<think:nav name="nav">
<eq name="nav.pid" value="0">
<li>
<a href="{$nav.url|get_nav_url}" target="<eq name='nav.target' value='1'>_blank<else/>_self</eq>"><span>{$nav.title}</span></a>
</li>
</eq>
</think:nav>
</ul>
</div>
<ul class="nav clearfix">
<think:nav name="nav">
<eq name="nav.pid" value="0">
<li>
<a href="{$nav.url|get_nav_url}" target="<eq name='nav.target' value='1'>_blank<else/>_self</eq>"><span>{$nav.title}</span></a>
</li>
</eq>
</think:nav>
</ul>
</div>
</div>
<div class="trunk">
<block name="body"></block>
<div class="trunk">
<block name="body"></block>
</div>
</div>
<!-- <div class="footer">

@ -28,171 +28,171 @@
</head>
<body>
<div id="app">
<!--左侧导航栏 开始-->
<div class="nav_new fl">
<div class="logo_picture">
<img src="{:check_logo_is_exist(C('CH_LOGO_BACKSTAGE'),'logo_default.png')}" style="height:40px;margin:0px;">
</div>
<div class="subNavBox">
<a href="{:U('Promote/index')}" class="subNav <if condition='CONTROLLER_NAME eq Promote and ACTION_NAME eq index '>active</if>"> 后台首页 </a>
<?php if ($loginer['level'] < 4) :?>
<div class="subNav jssubNav"><i class="prev_icon icon_guanli"></i><span>管理中心</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Promote/base_info')}" class="<if condition='CONTROLLER_NAME eq Promote and ACTION_NAME eq base_info '>active</if> ">账户信息</a>-->
<?php if (in_array($loginer['level'], [1])):?>
<a href="{:U('Promote/children', ['promote_type' => 0])}" class="<if condition='$_GET["promote_type"]==0 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">部门长管理</a>
<?php endif;?>
<?php if (in_array($loginer['level'], [1, 2])):?>
<a href="{:U('Promote/children', ['promote_type' => 1])}" class="<if condition='$_GET["promote_type"]==1 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">组长管理</a>
<?php endif;?>
<?php if (in_array($loginer['level'], [1, 2, 3])):?>
<a href="{:U('Promote/children', ['promote_type' => 2])}" class="<if condition='$_GET["promote_type"]==2 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">推广员管理</a>
<?php endif;?>
<div class="nav_new fl">
<div class="logo_picture">
<img src="{:check_logo_is_exist(C('CH_LOGO_BACKSTAGE'),'logo_default.png')}" style="height:40px;margin:0px;">
</div>
<?php endif;?>
<?php
$isOpenQuery = true;
?>
<?php if($isOpenQuery):?>
<div class="subNav jssubNav"><i class="prev_icon icon_shujvi"></i><span>数据管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Query/dailySummary')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq dailySummary '>active</if> ">每日概况</a>
<a href="{:U('Query/summary')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq summary '>active</if> ">数据汇总</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/recharge')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq recharge or ACTION_NAME eq viewSpendDetailed) '>active</if> ">订单查询</a>
<?php endif;?>
<a href="{:U('Query/register')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq register or ACTION_NAME eq viewRole) '>active</if> ">注册明细</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/arpu')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq arpu '>active</if> ">ARPU统计</a>
<div class="subNavBox">
<a href="{:U('Promote/index')}" class="subNav <if condition='CONTROLLER_NAME eq Promote and ACTION_NAME eq index '>active</if>"> 后台首页 </a>
<?php if ($loginer['level'] < 4) :?>
<div class="subNav jssubNav"><i class="prev_icon icon_guanli"></i><span>管理中心</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Promote/base_info')}" class="<if condition='CONTROLLER_NAME eq Promote and ACTION_NAME eq base_info '>active</if> ">账户信息</a>-->
<?php if (in_array($loginer['level'], [1])):?>
<a href="{:U('Promote/children', ['promote_type' => 0])}" class="<if condition='$_GET["promote_type"]==0 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">部门长管理</a>
<?php endif;?>
<?php if (in_array($loginer['level'], [1, 2])):?>
<a href="{:U('Promote/children', ['promote_type' => 1])}" class="<if condition='$_GET["promote_type"]==1 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">组长管理</a>
<?php endif;?>
<?php if (in_array($loginer['level'], [1, 2, 3])):?>
<a href="{:U('Promote/children', ['promote_type' => 2])}" class="<if condition='$_GET["promote_type"]==2 and CONTROLLER_NAME eq Promote and (ACTION_NAME eq children or ACTION_NAME eq addPromote or ACTION_NAME eq edit_chlid) '>active</if> ">推广员管理</a>
<?php endif;?>
</div>
<?php endif;?>
<!-- <a href="{:U('Query/retention_analysis')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq retention_analysis '>active</if> ">留存统计</a> -->
<a href="{:U('Query/userRoles')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq userRoles '>active</if> ">角色查询</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/userRecharges')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq userRecharges '>active</if> ">充值玩家</a>
<?php
$isOpenQuery = true;
?>
<?php if($isOpenQuery):?>
<div class="subNav jssubNav"><i class="prev_icon icon_shujvi"></i><span>数据管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Query/dailySummary')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq dailySummary '>active</if> ">每日概况</a>
<a href="{:U('Query/summary')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq summary '>active</if> ">数据汇总</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/recharge')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq recharge or ACTION_NAME eq viewSpendDetailed) '>active</if> ">订单查询</a>
<?php endif;?>
<a href="{:U('Query/register')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq register or ACTION_NAME eq viewRole) '>active</if> ">注册明细</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/arpu')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq arpu '>active</if> ">ARPU统计</a>
<?php endif;?>
<!-- <a href="{:U('Query/retention_analysis')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq retention_analysis '>active</if> ">留存统计</a> -->
<a href="{:U('Query/userRoles')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq userRoles '>active</if> ">角色查询</a>
<?php if($canViewUserRecharge):?>
<a href="{:U('Query/userRecharges')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq userRecharges '>active</if> ">充值玩家</a>
<?php endif;?>
<a href="{:U('Query/achievement')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq achievement '>active</if> ">团队/推广员业绩</a>
<a href="{:U('Query/promoteQuota')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq promoteQuota or ACTION_NAME eq quotaDtl) '>active</if> ">推广员指标</a>
</div>
<?php endif;?>
<a href="{:U('Query/achievement')}" class="<if condition='CONTROLLER_NAME eq Query and ACTION_NAME eq achievement '>active</if> ">团队/推广员业绩</a>
<a href="{:U('Query/promoteQuota')}" class="<if condition='CONTROLLER_NAME eq Query and (ACTION_NAME eq promoteQuota or ACTION_NAME eq quotaDtl) '>active</if> ">推广员指标</a>
</div>
<?php if ($canViewUserRecharge && $loginer['level'] == 1) :?>
<div class="subNav jssubNav"><i class="prev_icon icon_caiwu"></i><span>财务管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Finance/index')}" class="<if condition='CONTROLLER_NAME eq Finance and ACTION_NAME eq index '>active</if> ">结算中心</a>
<a href="{:U('Finance/settlementDtl')}" class="<if condition='CONTROLLER_NAME eq Finance and ACTION_NAME eq settlementDtl '>active</if> ">结算明细</a>
<a href="{:U('Finance/withdrawRecord')}" class="<if condition='CONTROLLER_NAME eq Finance and (ACTION_NAME eq withdrawRecord or ACTION_NAME eq withdrawDtl or ACTION_NAME eq settlementOrder) '>active</if> ">提现记录</a>
</div>
<?php endif ;?>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>游戏管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Apply/app_index')}" class="<if condition='CONTROLLER_NAME eq Apply and ACTION_NAME eq app_index '>active</if> ">APP列表</a>-->
<a href="{:U('Game/index')}" class="<if condition='CONTROLLER_NAME eq Game and (ACTION_NAME eq index) '>active</if> ">专服管理</a>
<?php endif;?>
<?php if ($canViewUserRecharge && $loginer['level'] == 1) :?>
<div class="subNav jssubNav"><i class="prev_icon icon_caiwu"></i><span>财务管理</span><i class="arrow_icon"></i></div>
<?php if($isOpenQuery):?>
<a href="{:U('Game/mix')}" class="<if condition='CONTROLLER_NAME eq Game and (ACTION_NAME eq mix) '>active</if> ">混服管理</a>
<if condition="getParentPromoteId(PID) eq 0">
<a href="{:U('GameDivide/index')}" class="<if condition='CONTROLLER_NAME eq GameDivide and (ACTION_NAME eq index ) '>active</if> ">分成比例</a>
<a href="{:U('Promote/setChildGamePermission')}" class="<if condition='CONTROLLER_NAME eq Promote and (ACTION_NAME eq setChildGamePermission ) '>active</if> ">设置</a>
</if>
<a href="{:U('Apply/feature')}" class="<if condition='CONTROLLER_NAME eq Apply and (ACTION_NAME eq feature or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">资料专区</a>
<?php endif;?>
</div>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>安全管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Apply/app_index')}" class="<if condition='CONTROLLER_NAME eq Apply and ACTION_NAME eq app_index '>active</if> ">APP列表</a>-->
<a href="{:U('Download/listsIndex')}" class="<if condition='CONTROLLER_NAME eq Download and (ACTION_NAME eq listsIndex or ACTION_NAME eq listsIndex or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">下载日志管理</a>
<a href="{:U('Safe/modifyloginpassword')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq modifyloginpassword or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">修改登录密码</a>
<a href="{:U('Safe/setSafeIndex')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq setSafeIndex or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">设置安全密码</a>
<?php if ($loginer['level'] == 1) :?>
<a href="{:U('Safe/modifyBaseInfo')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq modifyBaseInfo or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">用户基本信息</a>
<?php endif;?>
<a href="{:U('Safe/promoteLogs')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs ) '>active</if> ">操作日志</a>
</div>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>测试资源</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('TestResource/index')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq index or ACTION_NAME eq add or ACTION_NAME eq apply ) '>active</if> ">测试资源申请</a>
<a href="{:U('TestResource/lists')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq lists '>active</if> ">测试资源申请记录</a>
<a href="{:U('TestResource/supportNumberList')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq supportNumberList or ACTION_NAME eq freezeSupport or ACTION_NAME eq unfreezeSupport or ACTION_NAME eq rechangePassward ) '>active</if> ">测试号管理</a>
<a href="{:U('TestResource/protectLogList')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq protectLogList '>active</if> ">日志管理</a>
</div>
<!--<eq name="parent_id" value="0">
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>扶持管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Finance/index')}" class="<if condition='CONTROLLER_NAME eq Finance and ACTION_NAME eq index '>active</if> ">结算中心</a>
<a href="{:U('Finance/settlementDtl')}" class="<if condition='CONTROLLER_NAME eq Finance and ACTION_NAME eq settlementDtl '>active</if> ">结算明细</a>
<a href="{:U('Finance/withdrawRecord')}" class="<if condition='CONTROLLER_NAME eq Finance and (ACTION_NAME eq withdrawRecord or ACTION_NAME eq withdrawDtl or ACTION_NAME eq settlementOrder) '>active</if> ">提现记录</a>
<a href="{:U('Support/index')}" class="<if condition='CONTROLLER_NAME eq Support and (ACTION_NAME eq index or ACTION_NAME eq add or ACTION_NAME eq apply ) '>active</if> ">扶持申请</a>
<a href="{:U('Support/lists')}" class="<if condition='CONTROLLER_NAME eq Support and ACTION_NAME eq lists '>active</if> ">扶持记录</a>
<a href="{:U('Support/quota')}" class="<if condition='CONTROLLER_NAME eq Support and ACTION_NAME eq quota '>active</if> ">扶持额度</a>
</div>
<?php endif ;?>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>游戏管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Apply/app_index')}" class="<if condition='CONTROLLER_NAME eq Apply and ACTION_NAME eq app_index '>active</if> ">APP列表</a>-->
<a href="{:U('Apply/gameSpecialList')}" class="<if condition='CONTROLLER_NAME eq Apply and (ACTION_NAME eq gameSpecialList or ACTION_NAME eq specialMyGameList ) '>active</if> ">专服管理</a>
</eq>-->
<?php if($isOpenQuery):?>
<a href="{:U('Apply/gameList')}" class="<if condition='CONTROLLER_NAME eq Apply and (ACTION_NAME eq gameList or ACTION_NAME eq myGameList ) '>active</if> ">混服管理</a>
<if condition="getParentPromoteId(PID) eq 0">
<a href="{:U('GameDivide/index')}" class="<if condition='CONTROLLER_NAME eq GameDivide and (ACTION_NAME eq index ) '>active</if> ">分成比例</a>
<a href="{:U('Promote/setChildGamePermission')}" class="<if condition='CONTROLLER_NAME eq Promote and (ACTION_NAME eq setChildGamePermission ) '>active</if> ">设置</a>
</if>
<a href="{:U('Apply/feature')}" class="<if condition='CONTROLLER_NAME eq Apply and (ACTION_NAME eq feature or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">资料专区</a>
<?php endif;?>
</div>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>安全管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<!-- <a href="{:U('Apply/app_index')}" class="<if condition='CONTROLLER_NAME eq Apply and ACTION_NAME eq app_index '>active</if> ">APP列表</a>-->
<a href="{:U('Download/listsIndex')}" class="<if condition='CONTROLLER_NAME eq Download and (ACTION_NAME eq listsIndex or ACTION_NAME eq listsIndex or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">下载日志管理</a>
<a href="{:U('Safe/modifyloginpassword')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq modifyloginpassword or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">修改登录密码</a>
<a href="{:U('Safe/setSafeIndex')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq setSafeIndex or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">设置安全密码</a>
<?php if ($loginer['level'] == 1) :?>
<a href="{:U('Safe/modifyBaseInfo')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq modifyBaseInfo or ACTION_NAME eq my_game or ACTION_NAME eq my_game_ch or ACTION_NAME eq child_game ) '>active</if> ">用户基本信息</a>
<?php endif;?>
<a href="{:U('Safe/promoteLogs')}" class="<if condition='CONTROLLER_NAME eq Safe and (ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs or ACTION_NAME eq promoteLogs ) '>active</if> ">操作日志</a>
</div>
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>测试资源</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('TestResource/index')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq index or ACTION_NAME eq add or ACTION_NAME eq apply ) '>active</if> ">测试资源申请</a>
<a href="{:U('TestResource/lists')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq lists '>active</if> ">测试资源申请记录</a>
<a href="{:U('TestResource/supportNumberList')}" class="<if condition='CONTROLLER_NAME eq TestResource and (ACTION_NAME eq supportNumberList or ACTION_NAME eq freezeSupport or ACTION_NAME eq unfreezeSupport or ACTION_NAME eq rechangePassward ) '>active</if> ">测试号管理</a>
<a href="{:U('TestResource/protectLogList')}" class="<if condition='CONTROLLER_NAME eq TestResource and ACTION_NAME eq protectLogList '>active</if> ">日志管理</a>
</div>
<!--<eq name="parent_id" value="0">
<div class="subNav jssubNav"><i class="prev_icon icon_fenbao"></i><span>扶持管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Support/index')}" class="<if condition='CONTROLLER_NAME eq Support and (ACTION_NAME eq index or ACTION_NAME eq add or ACTION_NAME eq apply ) '>active</if> ">扶持申请</a>
<a href="{:U('Support/lists')}" class="<if condition='CONTROLLER_NAME eq Support and ACTION_NAME eq lists '>active</if> ">扶持记录</a>
<a href="{:U('Support/quota')}" class="<if condition='CONTROLLER_NAME eq Support and ACTION_NAME eq quota '>active</if> ">扶持额度</a>
</div>
</eq>-->
<!--<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>会长福利</span><i class="arrow_icon"></i></div>-->
<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>平台币管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('PromoteCoin/myCoin')}" class="<if condition='CONTROLLER_NAME eq PromoteCoin and (ACTION_NAME eq myCoin or ACTION_NAME eq coinRecord or ACTION_NAME eq coinRecordDesc) '>active</if> ">我的平台币</a>
<a href="{:U('PromoteCoin/transferLogs')}" class="<if condition='CONTROLLER_NAME eq PromoteCoin and (ACTION_NAME eq shift or ACTION_NAME eq transferLogs) '>active</if> ">平台币转移</a>
<?php if($loginer['level'] == 1):?>
<a href="{:U('CoinOrder/order_list')}" class="<if condition='CONTROLLER_NAME eq CoinOrder and (ACTION_NAME eq order_list or ACTION_NAME eq order_add or ACTION_NAME eq order_detail) '>active</if> ">平台币充值</a>
<?php endif;?>
</div>
<!--<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>会长福利</span><i class="arrow_icon"></i></div>-->
<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>平台币管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('PromoteCoin/myCoin')}" class="<if condition='CONTROLLER_NAME eq PromoteCoin and (ACTION_NAME eq myCoin or ACTION_NAME eq coinRecord or ACTION_NAME eq coinRecordDesc) '>active</if> ">我的平台币</a>
<a href="{:U('PromoteCoin/transferLogs')}" class="<if condition='CONTROLLER_NAME eq PromoteCoin and (ACTION_NAME eq shift or ACTION_NAME eq transferLogs) '>active</if> ">平台币转移</a>
<?php if($loginer['level'] == 1):?>
<a href="{:U('CoinOrder/order_list')}" class="<if condition='CONTROLLER_NAME eq CoinOrder and (ACTION_NAME eq order_list or ACTION_NAME eq order_add or ACTION_NAME eq order_detail) '>active</if> ">平台币充值</a>
<?php if($canViewUserRecharge):?>
<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>玩家管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Players/playAction')}" class="<if condition='CONTROLLER_NAME eq Players and (ACTION_NAME eq playAction)'>active</if> ">行为日志</a>
</div>
<?php endif;?>
</div>
<?php if($canViewUserRecharge):?>
<div class="subNav jssubNav"><i class="prev_icon icon_fuli"></i><span>玩家管理</span><i class="arrow_icon"></i></div>
<div class="navContent jsnavContent">
<a href="{:U('Players/playAction')}" class="<if condition='CONTROLLER_NAME eq Players and (ACTION_NAME eq playAction)'>active</if> ">行为日志</a>
</div>
<?php endif;?>
</div>
</div>
<div class="trunk">
<div class="trunk_con">
<!--头部个人信息-->
<div class="header">
<if condition="$loginer['level'] eq 1 and $loginer['company_belong'] eq 1">
<div style="position: absolute;padding-left: 1.5%;">
<span class="pinfo" style="color: #1239f2">市场总监联系方式:<span>13637338237(李总监)</span></span>
<div class="trunk">
<div class="trunk_con">
<!--头部个人信息-->
<div class="header">
<if condition="$loginer['level'] eq 1 and $loginer['company_belong'] eq 1">
<div style="position: absolute;padding-left: 1.5%;">
<span class="pinfo" style="color: #1239f2">市场总监联系方式:<span>13637338237(李总监)</span></span>
</div>
</if>
<div class="header-right">
<span class="pinfo jstime">今天是:<span></span></span>
<span class="pinfo">您好!{:session('promote_auth.account')}</span>
<a class="pinfo" href="{:U('Index/logout')}" ><img src="__IMG__/20180207/icon_normal_tuichu.png"><!--{:L('Quit')}--></a>
</div>
</if>
<div class="header-right">
<span class="pinfo jstime">今天是:<span></span></span>
<span class="pinfo">您好!{:session('promote_auth.account')}</span>
<a class="pinfo" href="{:U('Index/logout')}" ><img src="__IMG__/20180207/icon_normal_tuichu.png"><!--{:L('Quit')}--></a>
</div>
</div>
<!--结束 头部个人信息-->
<div class="trunk-container">
<!--右侧内容 开始-->
<div class="right_container">
<div class="location">
<block name="location"></block>
<!--结束 头部个人信息-->
<div class="trunk-container">
<!--右侧内容 开始-->
<div class="right_container">
<div class="location">
<block name="location"></block>
</div>
<block name="body"> </block>
</div>
<block name="body"> </block>
</div>
<!--底部信息-->
<!-- <div class="footer">
<div class="inner" >
<p class="customerService" style="margin-top:.8%;">
<span>客服电话:{:C("CH_SET_SERVER_TEL")}</span>
<span>客服邮箱:{:C("CH_SET_SERVER_EMAIL")}</span>
<span>服务时间:{:C("CH_TIME")}</span>
</p>
<p class="copyright"><span>网络备案:{:C('CH_SET_FOR_THE_RECORD')}</span><span>网络文化经营许可证编号:{:C(CH_SET_LICENSE)}</span><span>版权所有:{:C('CH_SET_COPYRIGHT')}</span></p>
</div>
</div>--><!-- <div class="footer">
<div class="inner" >
<p class="customerService" style="margin-top:.8%;">
<span>客服电话:{:C("CH_SET_SERVER_TEL")}</span>
<span>客服邮箱:{:C("CH_SET_SERVER_EMAIL")}</span>
<span>服务时间:{:C("CH_TIME")}</span>
</p>
<p class="copyright"><span>网络备案:{:C('CH_SET_FOR_THE_RECORD')}</span><span>网络文化经营许可证编号:{:C(CH_SET_LICENSE)}</span><span>版权所有:{:C('CH_SET_COPYRIGHT')}</span></p>
</div>
</div>-->
<!--结束 底部信息-->
</div>
<!--底部信息-->
<!-- <div class="footer">
<div class="inner" >
<p class="customerService" style="margin-top:.8%;">
<span>客服电话:{:C("CH_SET_SERVER_TEL")}</span>
<span>客服邮箱:{:C("CH_SET_SERVER_EMAIL")}</span>
<span>服务时间:{:C("CH_TIME")}</span>
</p>
<p class="copyright"><span>网络备案:{:C('CH_SET_FOR_THE_RECORD')}</span><span>网络文化经营许可证编号:{:C(CH_SET_LICENSE)}</span><span>版权所有:{:C('CH_SET_COPYRIGHT')}</span></p>
</div>
</div>--><!-- <div class="footer">
<div class="inner" >
<p class="customerService" style="margin-top:.8%;">
<span>客服电话:{:C("CH_SET_SERVER_TEL")}</span>
<span>客服邮箱:{:C("CH_SET_SERVER_EMAIL")}</span>
<span>服务时间:{:C("CH_TIME")}</span>
</p>
<p class="copyright"><span>网络备案:{:C('CH_SET_FOR_THE_RECORD')}</span><span>网络文化经营许可证编号:{:C(CH_SET_LICENSE)}</span><span>版权所有:{:C('CH_SET_COPYRIGHT')}</span></p>
</div>
</div>-->
<!--结束 底部信息-->
</div>
</div>
<div>
<script>
var url = window.location.pathname+"?s=/Home/" + "{$Think.CONTROLLER_NAME}"+ "/" + "{$Think.ACTION_NAME}"+".html";
url = url.replace(/(\/(p)\/\d+)|(&p=\d+)|(\/(id)\/\d+)|(&id=\d+)|(\/(group)\/\d+)|(&group=\d+)/, "");

@ -3,7 +3,7 @@
<div class="tra-left">
<div class="tra-header">
<div class="tra-header-left"><i class="tra-pointer" :class="selectIconLeft" @click="allInitSelect" aria-hidden="true"></i></div>
<div class="tra-header-center">全部成员</div>
<div class="tra-header-center">{{leftTitle}}</div>
<div class="tra-header-right">{{leftSelectNum}} / {{initNum}}</div>
</div>
<div class="tra-search">
@ -27,7 +27,7 @@
<div class="tra-right">
<div class="tra-header">
<div class="tra-header-left"><i class="tra-pointer" :class="selectIconRight" @click="allTargetSelect" aria-hidden="true"></i></div>
<div class="tra-header-center">选中成员</div>
<div class="tra-header-center">{{rightTitle}}</div>
<div class="tra-header-right">{{rightSelectNum}} / {{targetNum}}</div>
</div>
<div class="tra-search">

@ -1446,6 +1446,7 @@ ALTER TABLE `tab_spend`
ADD INDEX `pay_channel`(`pay_way`, `pay_status`, `game_id`) USING BTREE,
ADD INDEX `pay_channel_type`(`pay_status`, `pay_way`) USING BTREE;
-- 2020-03-06 liaojinling
CREATE TABLE `tab_user_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) not null COMMENT '用户ID',
@ -1466,4 +1467,19 @@ CREATE TABLE `tab_base_game` (
`android_game_id` int(11) not null default 0 COMMENT 'android版ID',
`ios_game_id` int(11) not null default 0 COMMENT 'ios版ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户数据表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户数据表';
ALTER TABLE `tab_spend`
ADD INDEX `index_user_id`(`user_id`) USING BTREE;
CREATE TABLE `tab_package_download_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`promote_id` int(11) not null COMMENT '推广员ID',
`game_id` int(11) not null COMMENT '游戏ID',
`user_id` int(11) not null default 0 COMMENT '用户ID',
`type` tinyint(1) not null default 0 COMMENT '类型 1 企业签下载 2 TF下载 3 超级签下载',
`create_time` int(11) NULL DEFAULT 0 COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='包下载记录表';
update tab_quick_menu set url='/index.php?s=/Home/Game/index.html' where url='/index.php?s=/Home/Apply/index.html';

@ -134,7 +134,7 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;}
.normal_list{min-height: 80vh;background: #fff;position: relative;border: 1px solid #E3E8EC;}
.normal_space{margin-left: 10px;}
.normal_space .select_gallery{height: 32px;padding-left: 10px;border: 1px solid #E5E5E5;border-radius: 4px;line-height: 32px;}
.form-group .submit{width: 95px;height: 36px;display: block;background: #26C7DB;color: #fff;border: none;border-radius: 4px;}
.form-group .submit{width: 95px;height: 36px;display: block;background: #409eff;color: #fff;border: none;border-radius: 4px;}
.form-group .submit:hover{background: #2bd8ed;}
.normal_table{width: 100%;text-align: center;}
.normal_table tr{height: 40px;}
@ -335,7 +335,8 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;}
padding: 20px 30px;
}
.layui-layer-content .layer-box .form-group {
margin-bottom: 15px;
margin-bottom: 10px;
display: inline-flex;
}
.layui-layer-content .layer-box .form-group .static-input {
color: #515974;
@ -343,6 +344,7 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;}
line-height: 34px;
height: 34px;
width: 380px;
margin-bottom: 0px;
}
.layui-layer-content .layer-box .form-group > label {
color: #8B8CA0;
@ -387,4 +389,245 @@ input,select,button{outline:none;font-size:14px;font-family:inherit;}
.normal_table tr td a {
color: #06C
}
.el-button {
display: inline-block;
line-height: 1;
white-space: nowrap;
cursor: pointer;
background: #fff;
border: 1px solid #dcdfe6;
color: #606266;
-webkit-appearance: none;
text-align: center;
box-sizing: border-box;
outline: none;
margin: 0;
transition: .1s;
font-weight: 500;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
padding: 12px 20px;
font-size: 14px;
border-radius: 4px;
}
/* .el-button+.el-button {
margin-left: 10px;
} */
.el-button-primary {
color: #fff;
background-color: #409eff;
border-color: #409eff;
}
.el-button-success {
color: #fff;
background-color: #67c23a;
border-color: #67c23a;
}
.el-button-info {
color: #fff;
background-color: #909399;
border-color: #909399;
}
.el-button-warning {
color: #fff;
background-color: #e6a23c;
border-color: #e6a23c;
}
.el-button-danger {
color: #fff;
background-color: #f56c6c;
border-color: #f56c6c;
}
.el-button-primary.is-plain {
color: #409eff;
background: #ecf5ff;
border-color: #b3d8ff;
}
.el-button-success.is-plain {
color: #67c23a;
background: #f0f9eb;
border-color: #c2e7b0;
}
.el-button-info.is-plain {
color: #909399;
background: #f4f4f5;
border-color: #d3d4d6;
}
.el-button-warning.is-plain {
color: #e6a23c;
background: #fdf6ec;
border-color: #f5dab1;
}
.el-button-danger.is-plain {
color: #f56c6c;
background: #fef0f0;
border-color: #fbc4c4;
}
.el-button-medium {
padding: 10px 20px;
font-size: 14px;
border-radius: 4px;
}
.el-button-small {
padding: 9px 15px;
font-size: 12px;
border-radius: 3px;
}
.el-button-mini {
padding: 7px 15px;
font-size: 12px;
border-radius: 3px;
}
.el-button.is-disabled, .el-button.is-disabled:focus, .el-button.is-disabled:hover {
color: #c0c4cc;
cursor: not-allowed;
background-image: none;
background-color: #fff;
border-color: #ebeef5;
}
.el-button.is-disabled.is-plain, .el-button.is-disabled.is-plain:focus, .el-button.is-disabled.is-plain:hover {
background-color: #fff;
border-color: #ebeef5;
color: #c0c4cc;
}
.el-tag {
background-color: #ecf5ff;
display: inline-block;
height: 32px;
padding: 0 10px;
line-height: 30px;
font-size: 12px;
color: #409eff;
border: 1px solid #d9ecff;
border-radius: 4px;
box-sizing: border-box;
white-space: nowrap;
}
.el-tag.el-tag-success {
background-color: #f0f9eb;
border-color: #e1f3d8;
color: #67c23a;
}
.el-tag.el-tag-info {
background-color: #f4f4f5;
border-color: #e9e9eb;
color: #909399;
}
.el-tag.el-tag-warning {
background-color: #fdf6ec;
border-color: #faecd8;
color: #e6a23c;
}
.el-tag.el-tag-danger {
background-color: #fef0f0;
border-color: #fde2e2;
color: #f56c6c;
}
.el-tag-dark {
background-color: #409eff;
color: #fff;
}
.el-tag-dark, .el-tag-dark.is-hit {
border-color: #409eff;
}
.el-tag-dark.el-tag-success {
background-color: #67c23a;
border-color: #67c23a;
color: #fff;
}
.el-tag-dark.el-tag-info {
background-color: #909399;
border-color: #909399;
color: #fff;
}
.el-tag-dark.el-tag-danger {
background-color: #f56c6c;
border-color: #f56c6c;
color: #fff;
}
.el-tag-dark.el-tag-warning {
background-color: #e6a23c;
border-color: #e6a23c;
color: #fff;
}
.el-tag-plain {
background-color: #fff;
border-color: #b3d8ff;
color: #409eff;
}
.el-tag-plain.el-tag-success {
background-color: #fff;
border-color: #c2e7b0;
color: #67c23a;
}
.el-tag-plain.el-tag-info {
background-color: #fff;
border-color: #d3d4d6;
color: #909399;
}
.el-tag--plain.el-tag-danger {
background-color: #fff;
border-color: #fbc4c4;
color: #f56c6c;
}
.el-tag-plain.el-tag-warning {
background-color: #fff;
border-color: #f5dab1;
color: #e6a23c;
}
.el-tag-medium {
height: 28px;
line-height: 26px;
}
.el-tag-small {
height: 24px;
padding: 0 8px;
line-height: 22px;
}
.el-tag-mini {
height: 20px;
padding: 0 5px;
line-height: 19px;
}
.layui-layer-btn .layui-layer-btn0 {
color: #fff!important;
}

@ -22,8 +22,9 @@ label.includes input[type="checkbox"]:checked+.check_icon {
background-color: #fff;
}
.tab a{display: inline-block;margin-right: 10px;padding-left: 10px;padding-right: 10px;height: 34px;border: 1px solid #E5E5E5;color: #a5a6bb;border-radius: 4px;line-height: 34px;text-align: center;}
.tab a.current{border: 1px solid #26C7DB;color: #26C7DB;}
.tab .tab-item{display: inline-block;margin-right: 10px;padding-left: 10px;padding-right: 10px;height: 34px;border: 1px solid #E5E5E5;color: #a5a6bb;border-radius: 4px;line-height: 34px;text-align: center;}
.tab .tab-item.current{border: 1px solid #26C7DB;color: #26C7DB;}
.tab .tab-item:hover {text-decoration: none; color: #67c23a; border-color: #67c23a;}
.btn_calc{width: 96px;height: 36px;display: block;background: #3A97FF;
color: #fff;

@ -332,10 +332,15 @@
}
.game-ul .game-li {
padding-left: 0;
padding-right: 0;
padding-left: 15px;
padding-right: 15px;
padding-top: 10px;
padding-bottom: 10px;
border-radius: 5px;
}
.game-ul .game-li:hover {
background-color: #f5f7fa;
}
.game-ul .game-li .media {
@ -368,24 +373,27 @@
text-align: right;
font-size: 1.1rem;
color: #3A97FF;
margin-top: 25px;
}
.btn {
border: 1px solid #3A97FF;
.tab .inline-btn {
border: 1px solid #409eff;
width: 88px;
line-height: 34px;
text-align: center;
color: #3A97FF;
color: #409eff;
cursor: pointer;
text-decoration: none;
}
.btn p {
.tab .inline-btn p {
width: 100%;
margin-bottom: 0px;
}
.highlight {
color: #fff;
background-color: #3A97FF;
color: #fff!important;
background-color: #409eff;
}
.game-window-box {

@ -2,6 +2,8 @@ var vm = new Vue({
el:'#transfer-app',
data:{
initList:[],//初始化数据
leftTitle: '全部成员',
rightTitle: '部分成员',
initNum:0,//初始化数据总数
targetList:[],//目标数据
targetNum:0,//目标数据总数

Loading…
Cancel
Save