Browse Source

feat:应用详情页面

cmy 2 days ago
parent
commit
59acaf9d2b

+ 22 - 13
source/index/BaseUser.php

@@ -12,6 +12,8 @@ class BaseUser extends Base
             redirect("/index/login");
         }
     }
+    
+
     function inc_merge()
     {
 ?> <div class="modal inmodal fade in" id="selApp" tabindex="-1" role="dialog" aria-hidden="false"
@@ -149,18 +151,18 @@ class BaseUser extends Base
     {
     ?> <div class="col-sm-2">
             <aside class="aside-left">
-                <ul>
+                                <ul>
                     <?php
                     if ($this->action == "apps" && IN_DIST_ON || $this->action == "sign" && IN_SIGN || $this->action == "super" && IN_SUPER) {
                     ?> <li class="<?php echo $this->module == "publish" || $this->module == "publish_update" ? "active" : ""; ?>">
                             <a href="/index/publish/<?php echo $this->action; ?>"> <span
-                                    class="iconfont icon-upload1"></span>上传应用</a>
+                                        class="iconfont icon-upload1"></span>上传应用</a>
                         </li>
                     <?php
                     }
                     ?> <li class="<?php echo $this->module == "apps" ? "active" : ""; ?>">
-                        <a href="/index/apps/<?php echo $this->action; ?>"><span class="iconfont icon-41"></span>应用列表</a>
-                    </li>
+                            <a href="/index/apps/<?php echo $this->action; ?>"><span class="iconfont icon-41"></span>应用列表</a>
+                        </li>
                     <?php
                     if ($this->action == "apps") {
                     ?> <li class="<?php echo $this->module == "domain" ? "active" : ""; ?>">
@@ -170,15 +172,15 @@ class BaseUser extends Base
                     <?php
                     }
                     ?> <?php
-                        if (IN_SUPER && ($this->action == "super" || strstr($this->module, "super"))) {
-                        ?> <li class="<?php echo $this->module == "super_code" ? "active" : ""; ?>">
+                    if (IN_SUPER && ($this->action == "super" || strstr($this->module, "super"))) {
+                    ?> <li class="<?php echo $this->module == "super_code" ? "active" : ""; ?>">
                             <a href="/index/super_code/super"><span class="iconfont icon-pwd"></span>授权码管理</a>
                         </li>
                         <li class="<?php echo $this->module == "super_cert" ? "active" : ""; ?>">
                             <a href="/index/super_cert/super"><span class="iconfont icon-gongju"></span>开发者账号</a>
                         </li>
                     <?php
-                        }
+                    }
                     ?>
                 </ul>
             </aside>
@@ -191,7 +193,7 @@ class BaseUser extends Base
     ?> <div class="col-sm-2">
             <link rel="stylesheet" href="/static/index/css/apps-info-top.css" />
             <aside class="aside-left">
-                <ul>
+                                <ul>
                     <li class="<?php echo $this->module == "publish_detail" ? "active" : ""; ?>">
                         <a href="/index/publish_detail/<?php echo $this->action; ?>?id=<?php echo $_var_0; ?>">
                             <span class="iconfont icon-41"></span>应用详情
@@ -216,13 +218,13 @@ class BaseUser extends Base
                     <?php
                     }
                     ?> <?php
-                        if ($this->action == "super") {
-                        ?> <li class="<?php echo $this->module == "publish_superlog" ? "active" : ""; ?>">
+                    if ($this->action == "super") {
+                    ?> <li class="<?php echo $this->module == "publish_superlog" ? "active" : ""; ?>">
                             <a href="/index/publish_superlog/<?php echo $this->action; ?>?id=<?php echo $_var_0; ?>">
                                 <span class="iconfont icon-qianming"></span>签名记录</a>
                         </li>
                     <?php
-                        }
+                    }
                     ?>
                 </ul>
             </aside>
@@ -278,7 +280,7 @@ class BaseUser extends Base
                 ?>
             </dl>
             <div class="fr d-right">
-                <?php
+                <!-- <?php
                 if (!$_var_1["in_applock"]) {
                     if ($this->action == "apps" && IN_DIST_ON || $this->action == "sign" && IN_SIGN || $this->action == "super" && IN_SUPER) {
                 ?> <a title="上传新版本" href="<?php echo IN_PATH; ?>index/publish/<?php echo $this->action; ?>?id=<?php echo bees_encrypt($_var_1["in_id"]); ?>"
@@ -288,7 +290,14 @@ class BaseUser extends Base
                         </a>
                     <?php
                     }
-                    ?> <a title="预览" href="<?php echo getlink($_var_1["in_id"]); ?>" target="_blank"
+                    ?> -->
+                    <a title="上传新版本" href="<?php echo IN_PATH; ?>index/publish/<?php echo $this->action; ?>?id=<?php echo bees_encrypt($_var_1["in_id"]); ?>"
+                            class="ms-btn details-upload-new-version">
+                            <span class="iconfont icon-upload1"></span>
+                            <span class="text">上传新版本</span>
+                        </a>
+
+                    <a title="预览" href="<?php echo getlink($_var_1["in_id"]); ?>" target="_blank"
                         class="ms-btn ml10 details-preview">
                         <span class="iconfont icon-preview"></span>
                         <span class="text">预览</span>

+ 42 - 24
source/index/publish_detail.php

@@ -11,12 +11,11 @@ class publish_detail extends BaseUser
         $row = db("appid")->where("in_uid", $this->userid)->where("in_id", $id)->find();
         $row or exit(include_once dirname(__FILE__) . "/../pack/error/404.php");
         $page = SafeRequest("page", "get");
-        $result = db("app")->where("in_uid", $this->userid)->where("in_appid", $id)->order("in_addtime desc")->paginate(["page" => $page]);
-        $render = $result->render();
-        $count = $result->total();
-        $del_vid = 0;
-        if ($count > 3) {
-            $del_vid = db("app")->where("in_uid", $this->userid)->where("in_appid", $id)->order("in_addtime asc")->value("in_id");
+        $tab = SafeRequest("tab", "get");
+        
+        // 如果没有指定tab,默认显示应用版本tab
+        if (empty($tab)) {
+            $tab = "version";
         }
         $fnum = $this->action != "super" ? $row["in_deduct"] : 1;
         $ftype = $this->action != "super" ? IN_POINTNAME : "设备";
@@ -42,7 +41,9 @@ class publish_detail extends BaseUser
             $this->header();
             ?>
             <link rel="stylesheet" href="/static/pack/font-awesome-4.7.0/css/font-awesome.css" />
+            <link rel="stylesheet" type="text/css" href="/static/index/css/jquery.datetimepicker.css?20190530" />
             <script src="/static/index/js/jquery.form.js"></script>
+            <script src="/static/index/js/jquery.datetimepicker.js?20190530"></script>
             <div class="release-app-wrap">
                 <div class="container">
                     <div class="release-app2">
@@ -171,8 +172,10 @@ class publish_detail extends BaseUser
                                                                             <span class="th-line">签名期限</span>
                                                                         </th>
                                                                     <?php
-                                                                    }
-                                                                ?>
+                                                                    } else {
+                                                                        ?><th></th>
+                                                                    <?php } ?>
+                                                                </td>
                                                             </tr>
                                                             <tr>
                                                                 <td>
@@ -205,8 +208,9 @@ class publish_detail extends BaseUser
                                                                         </div>
                                                                     </td>
                                                                 <?php
-                                                                }
-                                                                ?>
+                                                                } else {
+                                                                    ?><th></th>
+                                                                <?php } ?>
                                                             </tr>
                                                         </table>
                                                     </div>
@@ -216,38 +220,52 @@ class publish_detail extends BaseUser
                                         <!-- 应用版本  基本设置  高级设置  模板设置  下载明细 -->
                                         <div class="tabs">
                                             <ul class="nav nav-tabs" role="tablist">
-                                                <li role="presentation" class="active">
-                                                    <a href="#tab-version" aria-controls="tab-version" role="tab" data-toggle="tab">应用版本</a>
+                                                <li role="presentation" class="<?php echo ($tab == 'version') ? 'active' : ''; ?>">
+                                                    <a href="?id=<?php echo bees_encrypt($id); ?>&tab=version" aria-controls="tab-version" role="tab">应用版本</a>
                                                 </li>
-                                                <li role="presentation">
-                                                    <a href="#tab-basic" aria-controls="tab-basic" role="tab" data-toggle="tab">基本设置</a>
+                                                <li role="presentation" class="<?php echo ($tab == 'basic') ? 'active' : ''; ?>">
+                                                    <a href="?id=<?php echo bees_encrypt($id); ?>&tab=basic" aria-controls="tab-basic" role="tab">基本设置</a>
                                                 </li>
-                                                <li role="presentation">
-                                                    <a href="#tab-advanced" aria-controls="tab-advanced" role="tab" data-toggle="tab">高级设置</a>
+                                                <li role="presentation" class="<?php echo ($tab == 'advanced') ? 'active' : ''; ?>">
+                                                    <a href="?id=<?php echo bees_encrypt($id); ?>&tab=advanced" aria-controls="tab-advanced" role="tab">高级设置</a>
                                                 </li>
-                                                <li role="presentation">
-                                                    <a href="#tab-template" aria-controls="tab-template" role="tab" data-toggle="tab">模板设置</a>
+                                                <li role="presentation" class="<?php echo ($tab == 'template') ? 'active' : ''; ?>">
+                                                    <a href="?id=<?php echo bees_encrypt($id); ?>&tab=template" aria-controls="tab-template" role="tab">模板设置</a>
                                                 </li>
-                                                <li role="presentation">
-                                                    <a href="#tab-download" aria-controls="tab-download" role="tab" data-toggle="tab">下载明细</a>
+                                                <li role="presentation" class="<?php echo ($tab == 'download') ? 'active' : ''; ?>">
+                                                    <a href="?id=<?php echo bees_encrypt($id); ?>&tab=download" aria-controls="tab-download" role="tab">下载明细</a>
                                                 </li>
                                             </ul>
                                             <div class="tab-content">
+                                                <?php if ($tab == 'version'): ?>
                                                 <div role="tabpanel" class="tab-pane active" id="tab-version">
                                                     <?php include_once 'publish_tab_version.php'; ?>
                                                 </div>
-                                                <div role="tabpanel" class="tab-pane" id="tab-basic">
+                                                <?php endif; ?>
+                                                
+                                                <?php if ($tab == 'basic'): ?>
+                                                <div role="tabpanel" class="tab-pane active" id="tab-basic">
                                                     <?php include_once 'publish_tab_basic.php'; ?>
                                                 </div>
-                                                <div role="tabpanel" class="tab-pane" id="tab-advanced">
+                                                <?php endif; ?>
+                                                
+                                                <?php if ($tab == 'advanced'): ?>
+                                                <div role="tabpanel" class="tab-pane active" id="tab-advanced">
                                                     <?php include_once 'publish_tab_advanced.php'; ?>
                                                 </div>
-                                                <div role="tabpanel" class="tab-pane" id="tab-template">
+                                                <?php endif; ?>
+                                                
+                                                <?php if ($tab == 'template'): ?>
+                                                <div role="tabpanel" class="tab-pane active" id="tab-template">
                                                     <?php include_once 'publish_tab_template.php'; ?>
                                                 </div>
-                                                <div role="tabpanel" class="tab-pane" id="tab-download">
+                                                <?php endif; ?>
+                                                
+                                                <?php if ($tab == 'download'): ?>
+                                                <div role="tabpanel" class="tab-pane active" id="tab-download">
                                                     <?php include_once 'publish_tab_download.php'; ?>
                                                 </div>
+                                                <?php endif; ?>
                                             </div>
                                         </div>
 

+ 5 - 0
source/index/publish_tab_basic.php

@@ -122,6 +122,11 @@ $(document).ready(function() {
                 } else {
                     $("#msModalBasicSetting").find(".modal-dialog").addClass("modal-sm").find(".auto-hide .mt5").text("保存成功");
                     autoHideModal('#msModalBasicSetting', 3000);
+                    
+                    // 保存成功后刷新整个页面
+                    setTimeout(function() {
+                        window.location.reload();
+                    }, 1000);
                 }
             },
             error: function() {

+ 121 - 6
source/index/publish_tab_download.php

@@ -1,8 +1,123 @@
+<?php
+// 获取应用ID
+$id = bees_decrypt(SafeRequest("id", "get"));
+$row = db('appid')->where('in_uid', $this->userid)->where('in_id', $id)->find();
+
+// 获取日期参数
+$start_date = SafeRequest("start_date", "get");
+$end_date = SafeRequest("end_date", "get");
+$starttime = $start_date . ' 00:00:00';
+$endtime = $end_date . ' 23:59:59';
+$specified = '';
+if (!empty($start_date) && !empty($end_date)) {
+    $specified = "addtime>'" . $starttime . "' and addtime<'" . $endtime . "' ";
+}
+
+// 查询下载记录 - 使用 paginate 方法
+$page = SafeRequest("page", "get");
+$result = db('downhistory')->where($specified)->where('appid', $id)->where('uid', $this->userid)->order('addtime desc')->paginate(["page" => $page, 'list_rows' => 5]);
+$render = $result->render();
+$count = $result->total();
+$sid = bees_encrypt($row['in_id']);
+?>
+
 <div class="download-details">
-    <div class="settings-section">
-        <h4 class="section-title">
-            <span class="iconfont icon-xiazai"></span>下载明细
-        </h4>
-        <p class="text-muted">下载明细内容待完善...</p>
+    <div class="d-top clearfix">
+        <div class="date date1">
+            <input class="form-control" type="text" id="datetimepicker1" value="<?php if (empty($start_date)) { echo date("Y/m/d", strtotime(date("Y/m/d") . '-1 week')); } else { echo $start_date; } ?>">
+            <span class="iconfont icon-date"></span>
+        </div>
+        <div class="fl line">
+            _
+        </div>
+        <div class="date date2">
+            <input class="form-control" type="text" id="datetimepicker2" value="<?php if (empty($end_date)) { echo date("Y/m/d"); } else { echo $end_date; } ?>">
+            <span class="iconfont icon-date"></span>
+        </div>
+        <button type="button" class="ms-btn ms-btn-secondary fl query">查询</button>
+        <span class="fl num">累计总下载 <i>
+                <?php echo $row['in_downloads'];?>
+            </i> 次</span>
+        <button type="button" class="ms-btn ms-btn-secondary fr cleanUp"
+            data-app-id="<?php echo bees_encrypt($row['in_id']);?>">清空统计数据
+        </button>
     </div>
-</div> 
+    <div class="table-responsive">
+        <table class="table">
+            <tbody>
+                <tr>
+                    <th>时间</th>
+                    <th>应用名称</th>
+                    <th>版本</th>
+                    <th>大小</th>
+                    <th>浏览次数</th>
+                    <th>下载次数</th>
+                </tr>
+                <?php 
+                foreach ($result as $key => $value) {
+                ?>
+                <tr>
+                    <td><?php echo $value['addtime'];?></td>
+                    <td><?php echo $value['appname'];?></td>
+                    <td><?php echo $value['appversion'];?></td>
+                    <td><?php echo formatsize($value['appsize']);?></td>
+                    <td><?php echo $value['liulan'];?></td>
+                    <td><?php echo $value['down'];?></td>
+                </tr>
+                <?php 
+                }
+                ?>
+            </tbody>
+            <tfoot>
+                <tr>
+                    <td colspan="6"><?php echo getRender($result, $page); ?></td>
+                </tr>
+            </tfoot>
+        </table>
+        <?php 
+        if ($count == 0) {
+        ?>
+        <div class="text-center no-content">
+            <img src="/static/index/image/invoice-1.png" alt="">
+            <p class="color-333 mt10">
+                暂无任何数据
+            </p>
+        </div>
+        <?php 
+        }
+        ?>
+    </div>
+</div>
+
+<script>
+$(function () {
+    // 初始化日期选择器
+    $('#datetimepicker1, #datetimepicker2').datetimepicker({
+        format: 'Y/m/d',
+        timepicker: false,
+        datepicker: true
+    });
+    
+    // 查询按钮点击事件
+    $(".download-details div:first").on('click', '.query', function () {
+        var start_date = $(this).parent().find("input:first").val();
+        var end_date = $(this).parent().find("input:last").val();
+        window.location.href = "/index/publish_detail?id=<?php echo bees_encrypt($row['in_id']);?>&tab=download&start_date=" + start_date + "&end_date=" + end_date + "&page=1";
+    });
+    
+         // 清空统计数据按钮点击事件
+     $(".download-details div:first").on('click', '.cleanUp', function () {
+         var appId = $(this).data('app-id');
+         alert('确认清空统计数据吗?', function () {
+             $.post('/index/ajax_profile/cleanStatistics', { appId: appId }, function (data) {
+                 if (data.code == 200) {
+                     window.location.reload();
+                 } else {
+                     alert(data.msg);
+                 }
+             }, 'json')
+         }, function () {
+         }, 'center', '确定', '取消');
+     });
+});
+</script>

+ 109 - 6
source/index/publish_tab_version.php

@@ -1,3 +1,15 @@
+<?php
+// 应用版本列表查询逻辑
+$page = SafeRequest("page", "get");
+$result = db("app")->where("in_uid", $this->userid)->where("in_appid", $id)->order("in_addtime desc")->paginate(["page" => $page, 'list_rows' => 5]);
+$render = $result->render();
+$count = $result->total();
+$del_vid = 0;
+if ($count > 3) {
+    $del_vid = db("app")->where("in_uid", $this->userid)->where("in_appid", $id)->order("in_addtime asc")->value("in_id");
+}
+?>
+
 <div class="table-list">
     <div class="table-responsive">
         <table class="table version-history-table">
@@ -53,18 +65,18 @@
                         ?>
                     </td>
                     <td><?php echo date("Y-m-d H:i:s", $value["in_addtime"]); ?></td>
-                    <td width="170">
+                    <td>
                         <input name="history_id" type="hidden" value="<?php echo bees_encrypt($value["in_id"]); ?>">
                         <?php
                         if ($value["in_release"] != 1) {
-                        ?><a href="javascript:;">发布</a><?php
+                        ?><a href="javascript:;" class="btn-fabu" title="发布">发布</a><?php
                         }
                         ?> 
-                        <a href="#" data-target="#updateModal" data-toggle="modal">编辑</a>
-                        <a href="<?php echo getapp_history($value["in_id"], 1); ?>">下载</a>
+                        <a href="#" data-target="#updateModal" data-toggle="modal" class="btn-edit" title="编辑">编辑</a>
+                        <a href="<?php echo getapp_history($value["in_id"], 1); ?>" title="下载">下载</a>
                         <?php
                         if ($value["in_release"] != 1) {
-                        ?><a href="javascript:;">删除</a><?php
+                        ?><a href="javascript:;" class="btn-shanchu" title="删除">删除</a><?php
                         }
                         ?>
                     </td>
@@ -80,4 +92,95 @@
             </tfoot>
         </table>
     </div>
-</div> 
+</div>
+
+<!-- 编辑模态框 -->
+<div class="modal fade" role="dialog" id="updateModal">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
+                </button>
+                <h4>版本编辑</h4>
+            </div>
+            <div class="modal-body">
+                <div class="app-details-update">
+                    <div class="form-group clearfix">
+                        <label class="col-sm-2 control-label">更新说明</label>
+                        <div class="col-sm-10">
+                            <textarea rows="6" name="desc" class="form-control"></textarea>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="ms-btn ms-btn-primary w120 plugin-save mr20" data-dismiss="modal">
+                    保存
+                </button>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script>
+    var app_id = '<?php echo bees_encrypt($id);?>';
+    
+    // 发布功能
+    $('.btn-fabu').click(function () {
+        var history_id = $(this).parent().find('input').val();
+        $.post('/index/ajax_profile/setUseHistory', {id: history_id, app_id: app_id}, function (data) {
+            if (data.code == 200) {
+                alert('发布版本成功', function () {
+                    window.location.reload();
+                });
+                return true;
+            }
+        }, 'json');
+    });
+    
+    // 删除功能
+    $('.btn-shanchu').click(function () {
+        var history_id = $(this).parent().find('input').val();
+        alert('<b>你确定要删除该版本信息吗?</b><br/>删除后将无法恢复!', function () {
+            $.post('/index/ajax_profile/delHistory', {'id': history_id, app_id: app_id}, function (data) {
+                if (data.code == 200) {
+                    alert('删除版本成功', function () {
+                        window.location.reload();
+                    });
+                    return true;
+                } else {
+                    alert(data.msg);
+                }
+            }, 'json');
+        }, function () {
+        }, 'center', '删除', '取消');
+    });
+    
+    // 编辑功能
+    $('.btn-edit').click(function () {
+        var history_id = $(this).parent().find('input').val();
+        $.get('/index/ajax_profile/getHistory?id=' + history_id + '&app_id=' + app_id, function (data) {
+            if (data.code != 200) {
+                alert('系统繁忙,请稍后重试');
+                return true;
+            }
+            $("#updateModal textarea[name='desc']").val('').val(data.data.desc);
+            $('#updateModal').modal('show');
+            $('#updateModal .ms-btn-primary').unbind().click(function () {
+                var desc = $("#updateModal textarea[name='desc']").val();
+                $.post('/index/ajax_profile/updateHistory', {
+                    'id': history_id,
+                    app_id: app_id,
+                    desc: desc
+                }, function (data) {
+                    if (data.code == 200) {
+                        alert('更新说明操作成功', function () {
+                            window.location.reload();
+                        });
+                        return true;
+                    }
+                }, 'json');
+            })
+        }, 'json');
+    });
+</script>

+ 8 - 0
static/index/css/apps-aside.css

@@ -1,3 +1,11 @@
+.release-app2>.row>.col-sm-2 {
+    background-color: transparent;
+}
+
+.aside-left {
+    background-color: #ffffff;
+}
+
 .aside-app-list {
     max-height: calc(100vh - 300px);
     overflow-y: auto;

+ 196 - 42
static/index/css/apps-detail.css

@@ -76,7 +76,7 @@
     border-bottom: 0 solid #e5e5e5;
 }
 
-.tabs .nav-tabs > li > a {
+.tabs .nav-tabs>li>a {
     border: none;
     padding: 12px 2px;
     margin-right: 24px;
@@ -88,15 +88,15 @@
     line-height: 20px;
 }
 
-.tabs .nav-tabs > li > a:hover {
+.tabs .nav-tabs>li>a:hover {
     border: none;
     background-color: #ffffff;
     color: rgba(75, 132, 255, 1);
 }
 
-.tabs .nav-tabs > li.active > a,
-.tabs .nav-tabs > li.active > a:hover,
-.tabs .nav-tabs > li.active > a:focus {
+.tabs .nav-tabs>li.active>a,
+.tabs .nav-tabs>li.active>a:hover,
+.tabs .nav-tabs>li.active>a:focus {
     border: none;
     border-bottom: 2px solid rgba(75, 132, 255, 1);
     color: rgba(75, 132, 255, 1);
@@ -165,8 +165,35 @@
     padding: 40px 0;
 }
 
-/* 应用版本 */
-.version-history-table>tbody>tr>th {
+/* 通用icon样式 */
+.iconfont {
+    background: url(/static/index/image/inner-nav/icon1.svg) no-repeat center center;
+    background-size: 100% 100%;
+    width: 23px;
+    height: 23px;
+    display: inline-block;
+    vertical-align: middle;
+    position: absolute;
+    pointer-events: none;
+}
+
+.iconfont::before {
+    content: '';
+}
+
+.icon-date {
+    background-image: url(/static/index/image/my-app/icon-date.svg);
+    margin-right: 0;
+    top: 6px;
+    right: 12px;
+}
+
+/* 通用表格设置 */
+.table {
+    border: 1px solid #e5e5e5;
+}
+
+.table>tbody>tr>th {
     background: rgba(245, 246, 247, 1);
     height: 36px;
     color: rgba(143, 149, 159, 1);
@@ -174,30 +201,79 @@
     font-weight: 500;
     font-size: 14px;
     line-height: 18px;
+    text-align: center;
+    vertical-align: middle !important;
 }
 
-.version-history-table>tbody>tr>td {
+.table>tbody>tr>td {
+    color: rgba(0, 0, 0, 1);
+    box-sizing: border-box;
+    padding: 0 15px !important;
+    height: 50px;
+    text-align: center;
     font-family: Source Han Sans SC;
     font-weight: 400;
     font-size: 14px;
     line-height: 13px;
-    color: rgba(0, 0, 0, 1);
+    border-top: unset;
+    border-bottom: 1px solid rgba(232, 234, 236, 1);
+    vertical-align: middle !important;
 }
 
-.version-history-table>tbody>tr>td.angle-parent {
+.table>tfoot>tr>td {
+    padding: 0 15px !important;
+    vertical-align: middle !important;
+    text-align: center;
+}
+
+.table>tbody>tr:hover>td {
+    background-color: #ebf7ff;
+}
+
+.table>tbody>tr>td.angle-parent {
     color: rgba(75, 132, 255, 1);
 }
 
-.version-history-table>tbody>tr>td>a {
+.table>tbody>tr>td>a {
     color: rgba(33, 104, 251, 1);
     font-weight: 500;
     font-size: 14px;
 }
 
-.version-history-table>tbody>tr>td>a+a {
+.table>tbody>tr>td>a+a {
     margin-left: 14px;
 }
 
+/* 翻页 */
+.pagination {
+    margin: 10px 0 10px;
+}
+
+.pagination>li>a,
+.pagination>li>span
+ {
+    color: rgba(33, 104, 251, 1);
+}
+
+.pagination>.active>a,
+.pagination>.active>a:focus,
+.pagination>.active>a:hover,
+.pagination>.active>span,
+.pagination>.active>span:focus,
+.pagination>.active>span:hover {
+    background-color: rgba(33, 104, 251, 1);
+    border-color: rgba(33, 104, 251, 1);
+}
+
+.pagination>li:first-child {
+    display: inline-block;
+    padding: 7px 12px;
+    background-color: transparent!important;
+    border: unset;
+    color: rgba(33, 104, 251, 1);
+    pointer-events: none;
+}
+
 /* 通用表单样式 */
 .form-group .control-label {
     padding: 0;
@@ -237,6 +313,11 @@
     border: unset;
 }
 
+/* 应用版本 */
+.app-details-update .form-control {
+    width: 450px;
+}
+
 /* 基本设置 - 表单样式 */
 .basic {
     /* padding: 20px 0; */
@@ -326,35 +407,23 @@
     font-size: 14px;
 }
 
-.icon-modal-success3 {
-    display: inline-block;
-    width: 40px;
-    height: 40px;
-    background: url('/static/index/image/success-icon.png') no-repeat center;
-    background-size: contain;
-    margin-bottom: 10px;
-}
-
 /* 响应式样式 */
 @media (max-width: 768px) {
     .basic .form-group .control-label {
         text-align: left;
         margin-bottom: 5px;
     }
-    
+
     .basic .short-link .col-sm-6 {
         margin-bottom: 10px;
     }
-    
+
     .ms-modal .modal-dialog {
         margin: 50px 15px 10px;
     }
 }
 
 /* 高级设置样式 */
-.senior {
-    /* padding: 20px 0; */
-}
 
 .senior .form-group {
     margin-bottom: 30px;
@@ -421,7 +490,8 @@
 }
 
 /* 条件显示元素 */
-#apppwd, .auth_code_dispense_url {
+#apppwd,
+.auth_code_dispense_url {
     transition: all 0.3s ease;
 }
 
@@ -431,23 +501,20 @@
         text-align: left;
         margin-bottom: 5px;
     }
-    
+
     .senior .trust li,
     .senior .download-way li {
         float: none;
         margin-right: 0;
         margin-bottom: 10px;
     }
-    
+
     .senior .download-way {
         margin-bottom: 20px;
     }
 }
 
 /* 模板设置样式 */
-.download-template {
-    /* padding: 20px 0; */
-}
 
 .download-template .form-group {
     margin-bottom: 30px;
@@ -460,9 +527,6 @@
 /* 模板语言设置样式 */
 .download-template .template-language {
     list-style: none;
-    /* padding: 0; */
-    /* margin: 0; */
-    /* justify-content: left; */
 }
 
 .download-template .template-language li {
@@ -500,7 +564,6 @@
     margin: 0;
     display: flex;
     flex-wrap: wrap;
-    /* gap: 20px; */
 }
 
 .download-template .template-list li {
@@ -517,8 +580,7 @@
 }
 
 .download-template .template-list li:hover,
-.download-template .template-list li.active {
-}
+.download-template .template-list li.active {}
 
 .download-template .template-list li .t-checked::after {
     content: '';
@@ -551,7 +613,6 @@
     left: 0;
     right: 0;
     bottom: 0;
-    /* background-color: rgba(21, 125, 241, 0.8); */
     display: none;
     align-items: center;
     justify-content: center;
@@ -585,19 +646,112 @@
         text-align: left;
         margin-bottom: 5px;
     }
-    
+
     .download-template .template-language li {
         float: none;
         margin-right: 0;
         margin-bottom: 10px;
     }
-    
+
     .download-template ul {
         justify-content: center;
     }
-    
+
     .download-template .t-checked-wrap img {
         width: 150px;
         height: 90px;
     }
+}
+
+/* 下载记录样式 */
+.download-details {
+    background-color: #fff;
+    padding: 0;
+    min-height: 360px;
+}
+
+.download-details .date {
+    float: left;
+    width: 150px;
+    position: relative;
+}
+
+.download-details .date1 {
+    margin-right: 8px;
+}
+
+.download-details .date2 {
+    margin-right: 24px;
+}
+
+.download-details .date input {
+    position: relative;
+    z-index: 1;
+    background-color: transparent;
+    cursor: pointer;
+}
+
+.download-details .d-top {
+    margin-bottom: 15px;
+}
+
+.download-details .d-top .form-control {
+    height: 34px;
+    width: 149px;
+    padding: 0 35px 0 20px;
+    box-sizing: border-box;
+}
+
+.download-details .d-top .line {
+    margin-right: 8px;
+    color: #aaa;
+    width: 16px;
+    height: 18px;
+    border-bottom: 1px solid rgba(143, 149, 159, 1);
+    font-size: 0;
+}
+
+.download-details .d-top button {
+    color: rgba(33, 104, 251, 1);
+    font-family: Source Han Sans SC;
+    font-weight: 500;
+    font-size: 16px;
+    text-align: center;
+    vertical-align: middle;
+    height: 34px;
+    line-height: 32px;
+    border-radius: 4px;
+    border-width: 1px;
+    padding: 0 20px;
+    border: 1px solid rgba(33, 104, 251, 1)
+}
+
+.download-details .d-top button:hover {
+    color: #ffffff;
+}
+
+.download-details .d-top .num {
+    margin-left: 40px;
+    color: rgba(21, 21, 21, 1);
+    font-family: Source Han Sans SC;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 34px;
+    text-align: center;
+    vertical-align: middle;
+}
+
+.download-details .d-top .num i {
+    color: rgba(33, 104, 251, 1);
+}
+
+.download-details .no-content {
+    text-align: center;
+    margin-top: 100px;
+}
+
+.download-details .no-content img {
+    width: 100px;
+    height: 100px;
+    margin-bottom: 20px;
 }

+ 25 - 3
static/index/css/apps-info-top.css

@@ -1,5 +1,5 @@
 .app-details .details-top.my-apps-detail-top {
-    padding: 36px 30px;
+    padding: 36px 20px 36px 30px;
     display: flex;
     align-items: center;
     justify-content: space-between;
@@ -57,9 +57,31 @@
 }
 
 .app-details .my-apps-detail-top .information dd span.iconfont {
-    margin-right: 4px !important;
+    margin-right: 2px !important;
     width: 14px;
     height: 14px;
+    background: url(/static/index/image/my-app/icon-android.svg) no-repeat center center;
+    background-size: 100% 100%;
+    width: 14px;
+    height: 14px;
+    display: inline-block;
+    vertical-align: middle;
+    position: relative;
+    top: -2px !important;
+}
+
+.app-details .my-apps-detail-top .information dd span.iconfont::before {
+    content: '';
+}
+
+.app-details .my-apps-detail-top .information dd span.iconfont.icon-android {
+    background-image: url(/static/index/image/my-app/icon-android.svg);
+    margin-right: 0;
+}
+
+.app-details .my-apps-detail-top .information dd span.iconfont.icon-iphone {
+    background-image: url(/static/index/image/my-app/icon-ios.svg);
+    top: -1px !important;
 }
 
 .app-details .my-apps-detail-top .details-upload-new-version,
@@ -89,7 +111,7 @@
 }
 
 .app-details .my-apps-detail-top .d-right {
-    width: 456px;
+    width: 399px;
     margin-top: 0;
     flex-shrink: 0;
 }

+ 4 - 72
static/index/css/main.css

@@ -10521,75 +10521,7 @@ aside.aside-left ul li:hover a .iconfont {
 }
 
 /*下载明细*/
-.download-details {
-    background-color: #fff;
-    padding: 20px;
-    min-height: 360px;
-}
-
-.download-details .date {
-    float: left;
-    width: 140px;
-    position: relative;
-}
-
-.download-details .date1 {
-    margin-right: 10px;
-}
-
-.download-details .date2 {
-    margin-right: 20px;
-}
-
-.download-details .date input {
-    position: relative;
-    z-index: 1;
-    background-color: transparent;
-    cursor: pointer;
-}
-
-.download-details .date .icon-date {
-    color: #aaa;
-    position: absolute;
-    right: 10px;
-    top: 4px;
-    z-index: 0;
-}
-
-.download-details .date:hover .icon-date {
-    color: #157df1;
-}
-
-.download-details .d-top {
-    margin-bottom: 15px;
-}
-
-.download-details .d-top .form-control {
-    height: 30px;
-}
-
-.download-details .d-top .line {
-    margin-right: 10px;
-    color: #aaa;
-}
-
-.download-details .d-top .query {
-    font-size: 13px;
-    padding: 5px 12px;
-}
-
-.download-details .d-top .num {
-    line-height: 34px;
-    margin-left: 30px;
-    color: #333;
-    font-size: 13px;
-}
-
-.download-details .d-top .num i {
-    color: #157df1;
-}
-
-.download-details .table {
+/* .download-details .table {
     border: 1px solid #e5e5e5;
     table-layout: fixed;
 }
@@ -10621,7 +10553,7 @@ aside.aside-left ul li:hover a .iconfont {
 .download-details .no {
     text-align: center;
     margin-top: 100px;
-}
+} */
 
 /*/下载明细*/
 
@@ -10658,7 +10590,7 @@ aside.aside-left ul li:hover a .iconfont {
 
 /*/详情页 签名*/
 
-.release-app2 .aside-right .version-history-table td {
+/* .release-app2 .aside-right .version-history-table td {
     position: relative;
     height: 50px;
     border-color: #e5e5e5;
@@ -10668,7 +10600,7 @@ aside.aside-left ul li:hover a .iconfont {
     position: absolute;
     left: 0;
     top: 0;
-}
+} */
 
 /*
 .release-app2 .aside-right .app-details .downloads{padding: 10px 0; background-color: #fff; margin-bottom: 20px; box-shadow: 0 0 5px rgba(0,0,0,.05);}

+ 3 - 0
static/index/image/my-app/icon-android.svg

@@ -0,0 +1,3 @@
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M11.9779 4.56633C11.5182 4.56633 11.1374 4.93033 11.1374 5.37233V8.50681C11.1374 8.94881 11.5052 9.31311 11.9779 9.31311C12.4374 9.31311 12.8182 8.94881 12.8182 8.50652V5.37262C12.8052 4.93062 12.4374 4.56662 11.9779 4.56662V4.56633ZM1.84027 4.56633C1.38114 4.56633 1 4.93033 1 5.37203V8.50681C1 8.94881 1.36755 9.31311 1.84027 9.31311C2.313 9.31311 2.68084 8.94881 2.68084 8.50652V5.37262C2.68084 4.93062 2.313 4.56662 1.84027 4.56662V4.56633ZM3.19287 4.59233V10.3271C3.19287 10.6651 3.48182 10.9511 3.84937 10.9511H4.59805V12.6937C4.59805 13.136 4.9656 13.5 5.43832 13.5C5.89805 13.5 6.27889 13.136 6.27889 12.6937V10.9511H7.5919V12.6937C7.5919 13.136 7.95974 13.5 8.43247 13.5C8.8916 13.5 9.27274 13.136 9.27274 12.6937V10.9511H10.0211C10.389 10.9511 10.6779 10.6781 10.6779 10.3271V4.59203H3.19287V4.59233ZM8.68183 1.62714L9.37792 0.690845C9.40392 0.625844 9.40392 0.547844 9.33833 0.521844C9.28574 0.482844 9.20715 0.508844 9.16756 0.560844L8.45847 1.53614C7.96146 1.35707 7.43738 1.26472 6.9091 1.26314C6.35748 1.26314 5.83246 1.35414 5.35973 1.53614L4.65064 0.56114C4.61105 0.49614 4.53246 0.482844 4.47987 0.521844C4.45429 0.540995 4.4372 0.569375 4.43223 0.600941C4.42726 0.632506 4.43481 0.664764 4.45328 0.690845L5.14937 1.62744C4.05973 2.10844 3.28505 3.01873 3.19287 4.08503H10.6649C10.5467 3.01844 9.78476 2.10844 8.68183 1.62714ZM5.33344 3.10973C5.09707 3.10973 4.9263 2.94073 4.9263 2.71973C4.9263 2.49844 5.11007 2.32973 5.33344 2.32973C5.5698 2.32973 5.74028 2.49844 5.74028 2.71973C5.74028 2.94073 5.55651 3.10973 5.33344 3.10973ZM8.53735 3.10973C8.30099 3.10973 8.13021 2.94073 8.13021 2.71973C8.13021 2.49844 8.31428 2.32973 8.53735 2.32973C8.77372 2.32973 8.94449 2.49844 8.94449 2.71973C8.94449 2.94073 8.76072 3.10973 8.53735 3.10973Z" fill="#8F959F"/>
+</svg>

+ 10 - 0
static/index/image/my-app/icon-date.svg

@@ -0,0 +1,10 @@
+<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M2.39551 9.10413H20.6038V19.1666C20.6038 19.6959 20.1748 20.125 19.6455 20.125H3.35384C2.82457 20.125 2.39551 19.6959 2.39551 19.1666V9.10413Z" stroke="#8F959F" stroke-width="1.5"/>
+<path d="M2.39551 4.31246C2.39551 3.78319 2.82457 3.35413 3.35384 3.35413H19.6455C20.1748 3.35413 20.6038 3.78319 20.6038 4.31246V9.10413H2.39551V4.31246Z" stroke="#8F959F" stroke-width="1.5"/>
+<path d="M7.66699 1.91663V5.74996" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+<path d="M15.333 1.91663V5.74996" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+<path d="M13.417 16.2916H16.292" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+<path d="M6.70801 16.2916H9.58301" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+<path d="M13.417 12.4584H16.292" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+<path d="M6.70801 12.4584H9.58301" stroke="#8F959F" stroke-width="1.5" stroke-linecap="round"/>
+</svg>

+ 15 - 0
static/index/image/my-app/icon-ios.svg

@@ -0,0 +1,15 @@
+<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="mask0_112_1086" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="14" height="14">
+<rect width="14" height="14" fill="#D9D9D9"/>
+</mask>
+<g mask="url(#mask0_112_1086)">
+</g>
+<g clip-path="url(#clip0_112_1086)">
+<path d="M12.1084 9.31416C11.9198 9.9187 11.6223 10.5232 11.2161 11.1278C10.5922 12.0757 9.97075 12.5496 9.3517 12.5496C9.11472 12.5496 8.77618 12.4723 8.33608 12.3175C7.92015 12.1627 7.55501 12.0854 7.24065 12.0854C6.94564 12.0854 6.60226 12.1652 6.21052 12.3248C5.81878 12.4892 5.49958 12.5714 5.25293 12.5714C4.51781 12.5714 3.78995 11.9451 3.06934 10.6925C2.3584 9.43023 2.00293 8.2139 2.00293 7.04351C2.00293 5.94083 2.27618 5.03644 2.82268 4.33034C3.36919 3.63391 4.05594 3.2857 4.88295 3.2857C5.23117 3.2857 5.65918 3.35824 6.16699 3.50333C6.66997 3.64842 7.00367 3.72097 7.16811 3.72097C7.38574 3.72097 7.73154 3.63875 8.2055 3.47431C8.6988 3.30988 9.11714 3.22766 9.46052 3.22766C10.036 3.22766 10.5511 3.38484 11.0057 3.6992C11.2572 3.87331 11.5087 4.11512 11.7602 4.42465C11.3781 4.74868 11.1024 5.03402 10.9332 5.28067C10.6188 5.73529 10.4616 6.23585 10.4616 6.78235C10.4616 7.38205 10.6285 7.9213 10.9622 8.40009C11.2959 8.87889 11.678 9.18358 12.1084 9.31416ZM9.38072 0.80467C9.38072 1.09969 9.31059 1.42855 9.17034 1.79128C9.02525 2.154 8.80036 2.48771 8.49568 2.79239C8.23451 3.05355 7.97335 3.22766 7.71219 3.31472C7.53325 3.36791 7.28176 3.40902 6.95773 3.43804C6.97224 2.71743 7.16085 2.09597 7.52358 1.57364C7.88146 1.05616 8.486 0.698272 9.33719 0.499983C9.34203 0.514492 9.34807 0.541092 9.35533 0.579782C9.36258 0.618472 9.36863 0.645072 9.37347 0.659581C9.37347 0.678926 9.37467 0.703108 9.37709 0.732125C9.37951 0.761144 9.38072 0.785325 9.38072 0.80467Z" fill="#8F959F"/>
+</g>
+<defs>
+<clipPath id="clip0_112_1086">
+<rect width="10.22" height="13" fill="white" transform="matrix(1 0 0 -1 2 13.5)"/>
+</clipPath>
+</defs>
+</svg>