feat: 后端全量更新 - 含所有本次需求
- Contract.php: 返回合约账户余额(balance_contract) - My.php: 地址管理增加BTC/ETH - AppContract.php: 一键平仓(closeall) - AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2) - site.php: 手续费减半(0.018→0.009) - agent_permission_setup.sql: 代理权限SQL - crypto_news_crawler.py: 新闻自动采集脚本
This commit is contained in:
Executable
+64
@@ -0,0 +1,64 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Session_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-session_id" data-rule="required" data-source="session/index" class="form-control selectpage" name="row[session_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Sender_identity')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-sender_identity" data-rule="required" class="form-control selectpicker" name="row[sender_identity]">
|
||||
{foreach name="senderIdentityList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Sender_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-sender_id" data-rule="required" data-source="sender/index" class="form-control selectpage" name="row[sender_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Message_type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-message_type" data-rule="required" class="form-control selectpicker" name="row[message_type]">
|
||||
{foreach name="messageTypeList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Message')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<textarea id="c-message" class="form-control " rows="5" name="row[message]" cols="50"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<div class="radio">
|
||||
{foreach name="statusList" item="vo"}
|
||||
<label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="0"}checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
Executable
+64
@@ -0,0 +1,64 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Session_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-session_id" class="form-control" name="row[session_id]" type="text" value="{$row.session_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Sender_identity')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-sender_identity" data-rule="required" class="form-control selectpicker" name="row[sender_identity]">
|
||||
{foreach name="senderIdentityList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.sender_identity" }selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Sender_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-sender_id" class="form-control" name="row[sender_id]" type="text" value="{$row.sender_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Message_type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-message_type" data-rule="required" class="form-control selectpicker" name="row[message_type]">
|
||||
{foreach name="messageTypeList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.message_type" }selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Message')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<textarea id="c-message" class="form-control editor" rows="5" name="row[message]" cols="50">{$row.message|htmlentities}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<div class="radio">
|
||||
{foreach name="statusList" item="vo"}
|
||||
<label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="$row.status" }checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
|
||||
<div class="panel-heading">
|
||||
{:build_heading(null,FALSE)}
|
||||
<ul class="nav nav-tabs" data-field="status">
|
||||
<li class="active"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
|
||||
{foreach name="statusList" item="vo"}
|
||||
<li><a href="#t-{$key}" data-value="{$key}" data-toggle="tab">{$vo}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}"><i class="fa fa-refresh"></i>
|
||||
</a>
|
||||
<!-- <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('kefu/record/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> -->
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('kefu/record/edit')?'':'hide'}" title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('kefu/record/del')?'':'hide'}" title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
<!-- <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('kefu/record/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a> -->
|
||||
|
||||
<div class="dropdown btn-group {:$auth->check('kefu/record/multi')?'':'hide'}">
|
||||
<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
|
||||
<ul class="dropdown-menu text-left" role="menu">
|
||||
<li>
|
||||
<a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=0"><i class="fa fa-eye"></i> {:__('Set to Status 0')}</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=1"><i class="fa fa-eye-slash"></i> {:__('Set to Status 1')}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover table-nowrap"
|
||||
data-operate-edit="{:$auth->check('kefu/record/edit')}"
|
||||
data-operate-del="{:$auth->check('kefu/record/del')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
<style type="text/css">
|
||||
.chat {
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
.record_item {
|
||||
margin-top: 8px;
|
||||
}
|
||||
.user_name {
|
||||
font-weight: bold;
|
||||
}
|
||||
.bubble {
|
||||
font-size: 16px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
clear: both;
|
||||
left: 6px;
|
||||
margin-bottom: 8px;
|
||||
padding: 13px 14px;
|
||||
vertical-align: top;
|
||||
border-radius: 5px;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
}
|
||||
.bubble.you {
|
||||
background: #eceff1;
|
||||
color: #1a1a1a;
|
||||
}
|
||||
.bubble.me {
|
||||
background: #00b0ff;
|
||||
color: #fff;
|
||||
}
|
||||
.bubble:before {
|
||||
position: absolute;
|
||||
top: 19px;
|
||||
display: block;
|
||||
width: 8px;
|
||||
height: 6px;
|
||||
content: '\00a0';
|
||||
-webkit-transform: rotate(29deg) skew(-35deg);
|
||||
transform: rotate(29deg) skew(-35deg);
|
||||
}
|
||||
.bubble.you:before {
|
||||
left: -4px;
|
||||
background-color: #eceff1;
|
||||
}
|
||||
.bubble.me:before {
|
||||
left: -4px;
|
||||
background-color: #00b0ff;
|
||||
}
|
||||
.bubble .emoji {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.bubble .record {
|
||||
max-height: 200px;
|
||||
color: #fff;
|
||||
}
|
||||
.status {
|
||||
position: relative;
|
||||
float: right;
|
||||
width: 100%;
|
||||
/* margin: 20px 0; */
|
||||
margin-bottom: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
.status span {
|
||||
font-size: 12px;
|
||||
display: inline-block;
|
||||
background: #ccc;
|
||||
color: #fff;
|
||||
line-height: 12px;
|
||||
border-radius: 5px;
|
||||
padding: 3px 10px;
|
||||
}
|
||||
.record_card {
|
||||
width: 400px;
|
||||
background: #fff;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px 8px 8px 8px;
|
||||
}
|
||||
.record_card img {
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
min-width: 90px;
|
||||
}
|
||||
.record_card .record_card_body {
|
||||
height: 90px;
|
||||
width: 100%;
|
||||
margin: 0 8px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.record_card .record_card_title {
|
||||
font-size: 15px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
line-height: 18px;
|
||||
height: 36px;
|
||||
color: #0d0d0d;
|
||||
}
|
||||
.record_card .record_card_note {
|
||||
font-size: 14px;
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
line-height: 16px;
|
||||
height: 32px;
|
||||
color: #999999;
|
||||
margin-top: 3px;
|
||||
}
|
||||
.record_card .record_card_price span:last-child {
|
||||
margin-left: 10px;
|
||||
color: #999999;
|
||||
font-size: 14px;
|
||||
}
|
||||
.record_card .record_card_price span:first-child {
|
||||
margin-left: -3px;
|
||||
font-size: 18px;
|
||||
color: rgba(231, 76, 60, 1);
|
||||
}
|
||||
</style>
|
||||
<div class="chat">
|
||||
|
||||
</div>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Reference in New Issue
Block a user