Explorar el Código

Merge branch 'develop'

tremble hace 5 años
padre
commit
66e077c5a1
Se han modificado 100 ficheros con 1308 adiciones y 17111 borrados
  1. 3 0
      .babelrc
  2. 2 1
      .gitignore
  3. 0 512
      .tmp/admins/fd-mall-backstage/index.html
  4. 0 100
      .tmp/bundle.js
  5. 10 37
      admins/fd-mall-backstage/WEB-INF/page/shop/brand.html
  6. 1 48
      admins/fd-mall-backstage/WEB-INF/page/shop/goods.html
  7. 22 21
      admins/fd-mall-backstage/WEB-INF/page/sys/user.html
  8. 47 0
      admins/fd-mall-backstage/css/goods.css
  9. 14 289
      admins/fd-mall-backstage/index.html
  10. 402 402
      admins/fd-mall-backstage/js/common.js
  11. 119 119
      admins/fd-mall-backstage/js/navtab.js
  12. 1 167
      admins/fd-mall-backstage/js/shop/ad.js
  13. 1 69
      admins/fd-mall-backstage/js/shop/address.js
  14. 1 112
      admins/fd-mall-backstage/js/shop/adposition.js
  15. 1 125
      admins/fd-mall-backstage/js/shop/attribute.js
  16. 1 134
      admins/fd-mall-backstage/js/shop/attributecategory.js
  17. 1 258
      admins/fd-mall-backstage/js/shop/brand.js
  18. 1 111
      admins/fd-mall-backstage/js/shop/cart.js
  19. 1 232
      admins/fd-mall-backstage/js/shop/category.js
  20. 1 151
      admins/fd-mall-backstage/js/shop/channel.js
  21. 1 100
      admins/fd-mall-backstage/js/shop/collect.js
  22. 1 117
      admins/fd-mall-backstage/js/shop/comment.js
  23. 1 247
      admins/fd-mall-backstage/js/shop/coupon.js
  24. 1 136
      admins/fd-mall-backstage/js/shop/feedback.js
  25. 1 97
      admins/fd-mall-backstage/js/shop/footprint.js
  26. 1 852
      admins/fd-mall-backstage/js/shop/goods.js
  27. 1 110
      admins/fd-mall-backstage/js/shop/goodshistory.js
  28. 1 432
      admins/fd-mall-backstage/js/shop/goodshotspot.js
  29. 1 109
      admins/fd-mall-backstage/js/shop/goodsissue.js
  30. 1 183
      admins/fd-mall-backstage/js/shop/goodsspecification.js
  31. 1 128
      admins/fd-mall-backstage/js/shop/helpissue.js
  32. 1 113
      admins/fd-mall-backstage/js/shop/helptype.js
  33. 1 119
      admins/fd-mall-backstage/js/shop/keywords.js
  34. 1 409
      admins/fd-mall-backstage/js/shop/linkhotspot.js
  35. 1 298
      admins/fd-mall-backstage/js/shop/order.js
  36. 1 245
      admins/fd-mall-backstage/js/shop/product.js
  37. 1 99
      admins/fd-mall-backstage/js/shop/searchhistory.js
  38. 1 201
      admins/fd-mall-backstage/js/shop/shopuser.js
  39. 1 110
      admins/fd-mall-backstage/js/shop/specification.js
  40. 1 184
      admins/fd-mall-backstage/js/shop/topic.js
  41. 1 133
      admins/fd-mall-backstage/js/shop/topiccategory.js
  42. 1 113
      admins/fd-mall-backstage/js/shop/usercoupon.js
  43. 1 112
      admins/fd-mall-backstage/js/shop/userlevel.js
  44. 1 114
      admins/fd-mall-backstage/js/sys/config.js
  45. 1 196
      admins/fd-mall-backstage/js/sys/dept.js
  46. 1 47
      admins/fd-mall-backstage/js/sys/generator.js
  47. 1 42
      admins/fd-mall-backstage/js/sys/log.js
  48. 1 190
      admins/fd-mall-backstage/js/sys/macro.js
  49. 1 261
      admins/fd-mall-backstage/js/sys/menu.js
  50. 1 181
      admins/fd-mall-backstage/js/sys/oss.js
  51. 1 145
      admins/fd-mall-backstage/js/sys/region.js
  52. 1 266
      admins/fd-mall-backstage/js/sys/role.js
  53. 1 180
      admins/fd-mall-backstage/js/sys/schedule.js
  54. 1 74
      admins/fd-mall-backstage/js/sys/schedule_log.js
  55. 1 106
      admins/fd-mall-backstage/js/sys/smslog.js
  56. 1 303
      admins/fd-mall-backstage/js/sys/user.js
  57. 1 188
      admins/fd-mall-backstage/js/test/iviewDemo.js
  58. 2 47
      admins/zl-mall-backstage/WEB-INF/page/shop/goods.html
  59. 22 21
      admins/zl-mall-backstage/WEB-INF/page/sys/user.html
  60. 47 0
      admins/zl-mall-backstage/css/goods.css
  61. 14 289
      admins/zl-mall-backstage/index.html
  62. 402 402
      admins/zl-mall-backstage/js/common.js
  63. 119 119
      admins/zl-mall-backstage/js/navtab.js
  64. 1 167
      admins/zl-mall-backstage/js/shop/ad.js
  65. 1 69
      admins/zl-mall-backstage/js/shop/address.js
  66. 1 112
      admins/zl-mall-backstage/js/shop/adposition.js
  67. 1 125
      admins/zl-mall-backstage/js/shop/attribute.js
  68. 1 134
      admins/zl-mall-backstage/js/shop/attributecategory.js
  69. 1 258
      admins/zl-mall-backstage/js/shop/brand.js
  70. 1 111
      admins/zl-mall-backstage/js/shop/cart.js
  71. 1 232
      admins/zl-mall-backstage/js/shop/category.js
  72. 1 151
      admins/zl-mall-backstage/js/shop/channel.js
  73. 1 100
      admins/zl-mall-backstage/js/shop/collect.js
  74. 1 117
      admins/zl-mall-backstage/js/shop/comment.js
  75. 1 247
      admins/zl-mall-backstage/js/shop/coupon.js
  76. 1 136
      admins/zl-mall-backstage/js/shop/feedback.js
  77. 1 97
      admins/zl-mall-backstage/js/shop/footprint.js
  78. 1 852
      admins/zl-mall-backstage/js/shop/goods.js
  79. 1 110
      admins/zl-mall-backstage/js/shop/goodshistory.js
  80. 1 432
      admins/zl-mall-backstage/js/shop/goodshotspot.js
  81. 1 109
      admins/zl-mall-backstage/js/shop/goodsissue.js
  82. 1 183
      admins/zl-mall-backstage/js/shop/goodsspecification.js
  83. 1 128
      admins/zl-mall-backstage/js/shop/helpissue.js
  84. 1 113
      admins/zl-mall-backstage/js/shop/helptype.js
  85. 1 119
      admins/zl-mall-backstage/js/shop/keywords.js
  86. 1 409
      admins/zl-mall-backstage/js/shop/linkhotspot.js
  87. 1 298
      admins/zl-mall-backstage/js/shop/order.js
  88. 1 245
      admins/zl-mall-backstage/js/shop/product.js
  89. 1 99
      admins/zl-mall-backstage/js/shop/searchhistory.js
  90. 1 201
      admins/zl-mall-backstage/js/shop/shopuser.js
  91. 1 110
      admins/zl-mall-backstage/js/shop/specification.js
  92. 1 184
      admins/zl-mall-backstage/js/shop/topic.js
  93. 1 133
      admins/zl-mall-backstage/js/shop/topiccategory.js
  94. 1 113
      admins/zl-mall-backstage/js/shop/usercoupon.js
  95. 1 112
      admins/zl-mall-backstage/js/shop/userlevel.js
  96. 1 114
      admins/zl-mall-backstage/js/sys/config.js
  97. 1 196
      admins/zl-mall-backstage/js/sys/dept.js
  98. 1 47
      admins/zl-mall-backstage/js/sys/generator.js
  99. 1 42
      admins/zl-mall-backstage/js/sys/log.js
  100. 0 0
      admins/zl-mall-backstage/js/sys/macro.js

+ 3 - 0
.babelrc

@@ -0,0 +1,3 @@
+{
+  "presets": ["@babel/preset-env"]
+}

+ 2 - 1
.gitignore

@@ -1,2 +1,3 @@
 node_modules
-dist
+dist
+.tmp

+ 0 - 512
.tmp/admins/fd-mall-backstage/index.html

@@ -1,512 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <title>四维商圈管理平台</title>
-    <!-- Tell the browser to be responsive to screen width -->
-    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
-    <link rel="shortcut icon" href="statics/img/favicon.ico" type="image/x-icon">
-    <link rel="stylesheet" href="statics/css/bootstrap.min.css">
-    <link rel="stylesheet" href="statics/css/font-awesome.min.css">
-    <link rel="stylesheet" href="statics/css/style.css">
-    <link rel="stylesheet" href="statics/css/login.css">
-    <link rel="stylesheet" href="statics/css/main.css">
-    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
-    <link rel="stylesheet" href="statics/css/iview.css">
-    <link rel="shortcut icon" href=//4dkk.4dage.com/FDKKIMG/icon/kankan_icon.ico>
-    <link rel=icon type=image/png href=//4dkk.4dage.com/FDKKIMG/icon/kankan_icon192.png sizes=192x192>
-    <link rel=apple-touch-icon sizes=180x180 href=//4dkk.4dage.com/FDKKIMG/icon/kankan_icon180.png>
-    <!--[if lt IE 9]>
-    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
-    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
-    <![endif]-->
-    <script src="https://cdn.bootcss.com/babel-polyfill/7.8.7/polyfill.min.js"></script>
-    <script>
-        var _hmt = _hmt || [];
-        (function() {
-            var hm = document.createElement("script");
-            hm.src = "https://hm.baidu.com/hm.js?4656e49e8efa9f2ad6868ea26fb8984c";
-            var s = document.getElementsByTagName("script")[0];
-            s.parentNode.insertBefore(hm, s);
-        })();
-    </script>
-    <style>
-        .navbar-header div{
-            position: absolute;
-            top: 53%;
-            left: 4%;
-            transform: translate(-50%, -50%);
-            font-size: 22px;
-        }
-
-        .navbar-header div span{
-            margin-left: 20px;
-        }
-
-    </style>
-</head>
-<!-- ADD THE CLASS layout-boxed TO GET A BOXED LAYOUT -->
-<body class="fixed-sidebar full-height-layout gray-bg" style="overflow:hidden">
-<div id="mainApp" v-cloak>
-    <!--左侧导航开始-->
-    <nav class="navbar-default navbar-static-side" role="navigation">
-        <div class="nav-close"><i class="fa fa-times-circle"></i>
-        </div>
-        <div class="sidebar-collapse">
-            <ul class="nav" id="side-menu">
-                <li class="nav-header">
-                    <div class="dropdown profile-element"
-                         style="text-align: center;font-size: 18px;font-weight: 600;color: white;">
-                        四维商圈管理平台
-                    </div>
-                    <div class="logo-element">四维商圈
-                    </div>
-                </li>
-                <menu-item :item="item" v-for="item in menuList"></menu-item>
-            </ul>
-        </div>
-    </nav>
-    <!--左侧导航结束-->
-    <!--右侧部分开始-->
-    <div id="page-wrapper" class="gray-bg dashbard-1">
-        <div class="border-bottom">
-            <nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
-                <div class="navbar-header">
-                    <div><i class="iconfont iconmy"></i><span>{{user.username}}</span></div>
-                    <!-- <a class="navbar-minimalize minimalize-styl-2 btn btn-primary " href="#"><i
-                        class="fa fa-bars"></i> </a> -->
-                    <!-- <form role="search" class="navbar-form-custom" method="post" action="#">
-                        <div class="form-group">
-                            <input type="text" placeholder="请输入您需要查找的内容 …" class="form-control" name="top-search"
-                                   id="top-search">
-                        </div>
-                    </form> -->
-                </div>
-                <ul class="nav navbar-top-links navbar-right">
-
-                    <!-- <li class="dropdown">
-                        <a href="javascript:;" @click="toggleFullScreen"><i class="fa fa-arrows-alt"></i> &nbsp;全屏</a>
-                    </li> -->
-                    <li><a href="javascript:;" @click="updatePassword"><i class="fa fa-lock"></i> &nbsp;修改密码</a></li>
-                    <!-- <li class="dropdown hidden-xs">
-                        <a class="right-sidebar-toggle" aria-expanded="false">
-                            <i class="fa fa-tasks"></i> 主题
-                        </a>
-                    </li> -->
-                    <li><a @click="logout"><i class="fa fa fa-sign-out"></i>退出</a></li>
-                </ul>
-            </nav>
-        </div>
-        <div class="content-tabs">
-            <button class="roll-nav roll-left J_tabLeft"><i class="fa fa-backward"></i>
-            </button>
-            <nav class="page-tabs J_menuTabs">
-                <div class="page-tabs-content">
-                    <a href="javascript:;" class="active J_menuTab" data-id="main">首页</a>
-                </div>
-            </nav>
-            <button class="roll-nav roll-right J_tabRight"><i class="fa fa-forward"></i>
-            </button>
-            <div class="btn-group roll-nav roll-right">
-                <button class="dropdown J_tabClose" data-toggle="dropdown">关闭操作<span class="caret"></span>
-
-                </button>
-                <ul role="menu" class="dropdown-menu dropdown-menu-right">
-                    <!-- <li class="J_tabShowActive"><a>定位当前选项卡</a></li> -->
-                    <!-- <li class="divider"></li> -->
-                    <li class="J_tabCloseItem"><a>关闭当前选项卡</a></li>
-                    <li class="J_tabCloseAll"><a>关闭全部选项卡</a></li>
-                    <li class="J_tabCloseOther"><a>关闭其他选项卡</a>
-                    </li>
-                </ul>
-            </div>
-            <a class="roll-nav roll-right J_tabRefresh"><i class="fa fa-refresh"></i> &nbsp;刷新</a>
-        </div>
-        <div class="J_mainContent" id="content-main">
-            <iframe class="J_iframe" name="iframe0" width="100%" height="100%" src="sys/main.html" frameborder="0"
-                    data-id="main" seamless></iframe>
-        </div>
-        <div class="footer">
-            <div class="pull-right">珠海市四维时代网络科技有限公司 <a href="http://www.4dage.com/" target="_blank">Copyright © 2019 4DAGE Co., Ltd. All rights reserved.</a>
-            </div>
-        </div>
-    </div>
-    <!--右侧部分结束-->
-    <!--右侧边栏开始-->
-    <div id="right-sidebar">
-        <div class="sidebar-container">
-
-            <ul class="nav nav-tabs navs-3">
-
-                <li class="active">
-                    <a data-toggle="tab" href="#tab-1">
-                        <i class="fa fa-gear"></i> 主题
-                    </a>
-                </li>
-                <li class="">
-                    <a data-toggle="tab" href="#tab-2">通知</a>
-                </li>
-            </ul>
-
-            <div class="tab-content">
-                <div id="tab-1" class="tab-pane active">
-                    <div class="sidebar-title">
-                        <h3><i class="fa fa-comments-o"></i> 主题设置</h3>
-                        <small><i class="fa fa-tim"></i> 你可以从这里选择和预览主题的布局和样式,这些设置会被保存在本地,下次打开的时候会直接应用这些设置。</small>
-                    </div>
-                    <div class="skin-setttings">
-                        <div class="title">主题设置</div>
-                        <div class="setings-item">
-                            <span>收起左侧菜单</span>
-                            <div class="switch">
-                                <div class="onoffswitch">
-                                    <input type="checkbox" name="collapsemenu" class="onoffswitch-checkbox"
-                                           id="collapsemenu">
-                                    <label class="onoffswitch-label" for="collapsemenu">
-                                        <span class="onoffswitch-inner"></span>
-                                        <span class="onoffswitch-switch"></span>
-                                    </label>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="setings-item">
-                            <span>固定顶部</span>
-
-                            <div class="switch">
-                                <div class="onoffswitch">
-                                    <input type="checkbox" name="fixednavbar" class="onoffswitch-checkbox"
-                                           id="fixednavbar">
-                                    <label class="onoffswitch-label" for="fixednavbar">
-                                        <span class="onoffswitch-inner"></span>
-                                        <span class="onoffswitch-switch"></span>
-                                    </label>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="setings-item">
-                            <span>固定宽度</span>
-
-                            <div class="switch">
-                                <div class="onoffswitch">
-                                    <input type="checkbox" name="boxedlayout" class="onoffswitch-checkbox"
-                                           id="boxedlayout">
-                                    <label class="onoffswitch-label" for="boxedlayout">
-                                        <span class="onoffswitch-inner"></span>
-                                        <span class="onoffswitch-switch"></span>
-                                    </label>
-                                </div>
-                            </div>
-                        </div>
-                        <div class="title">皮肤选择</div>
-                        <div class="setings-item default-skin nb">
-                                <span class="skin-name ">
-                         <a href="#" class="s-skin-0">
-                             默认皮肤
-                         </a>
-                    </span>
-                        </div>
-                        <div class="setings-item blue-skin nb">
-                                <span class="skin-name ">
-                        <a href="#" class="s-skin-1">
-                            蓝色主题
-                        </a>
-                    </span>
-                        </div>
-                        <div class="setings-item yellow-skin nb">
-                                <span class="skin-name ">
-                        <a href="#" class="s-skin-3">
-                            黄色/紫色主题
-                        </a>
-                    </span>
-                        </div>
-                    </div>
-                </div>
-                <div id="tab-2" class="tab-pane">
-
-                    <div class="sidebar-title">
-                        <h3><i class="fa fa-comments-o"></i> 最新通知</h3>
-                        <small><i class="fa fa-tim"></i> 您当前有1条未读信息</small>
-                    </div>
-
-                    <div>
-                        <div class="sidebar-message">
-                            <a href="#">
-                                <div class="pull-left text-center">
-
-                                    <div class="m-t-xs">
-                                        <i class="fa fa-star text-warning"></i>
-                                        <i class="fa fa-star text-warning"></i>
-                                    </div>
-                                </div>
-                                <div class="media-body">
-
-                                    这是一条测试消息
-                                    <br>
-                                    <small class="text-muted">今天 4:21</small>
-                                </div>
-                            </a>
-                        </div>
-                    </div>
-
-                </div>
-            </div>
-
-        </div>
-    </div>
-    <!--右侧边栏结束-->
-    <!-- 修改密码 -->
-    <div id="passwordLayer" style="display: none;">
-        <form class="form-horizontal" style="width: 350px;">
-            <div class="form-group">
-                <div class="form-group">
-                    <div class="col-sm-2 control-label">账号</div>
-                    <span class="label label-success" style="vertical-align: bottom;">{{user.username}}</span>
-                </div>
-                <div class="form-group">
-                    <div class="col-sm-2 control-label">原密码</div>
-                    <div class="col-sm-10">
-                        <i-input type="password" v-model="password" placeholder="原密码"/>
-                    </div>
-                </div>
-                <div class="form-group">
-                    <div class="col-sm-2 control-label">新密码</div>
-                    <div class="col-sm-10">
-                        <i-input v-model="newPassword" placeholder="新密码"/>
-                    </div>
-                </div>
-            </div>
-        </form>
-    </div>
-</div>
-<script src="../../bundle.js"></script></body>
-
-<body class="hold-transition skin-blue sidebar-mini">
-
-<script src="statics/libs/jquery.min.js"></script>
-<script src="statics/libs/vue.min.js"></script>
-<script src="statics/libs/iview.min.js"></script>
-<script src="statics/libs/bootstrap.min.js"></script>
-<script src="statics/plugins/layer/layer.js"></script>
-<script src="statics/libs/contabs.js"></script>
-<script src="statics/libs/content.js"></script>
-<script src="statics/libs/hplus.js"></script>
-<script src="statics/plugins/metisMenu/jquery.metisMenu.js"></script>
-<script src="statics/plugins/slimscroll/jquery.slimscroll.min.js"></script>
-<script src="js/common.js"></script>
-<script>
-    //生成菜单
-    var menuItem = Vue.extend({
-        name: 'menu-item',
-        props: {item: {}},
-        template: [
-            '<li>',
-            '<a v-if="item.type === 0" href="#">',
-            '<i v-if="item.icon != null" :class="item.icon"></i>',
-            '<span class="nav-label">{{item.name}}</span>',
-            '<span class="fa arrow"></span>',
-            '</a>',
-            '<ul v-if="item.type === 0" class="nav nav-second-level">',
-            '<menu-item :item="item" v-for="item in item.list"></menu-item>',
-            '</ul>',
-            '<a v-if="item.type === 1" class="J_menuItem" :href="item.url"><i :class="item.icon"></i>{{item.name}}</a>',
-            '</li>'
-        ].join('')
-    });
-    //注册菜单组件
-    Vue.component('menuItem', menuItem);
-
-    var vm = new Vue({
-        el: '#mainApp',
-        data: {
-            password: '',
-            newPassword: '',
-            menuList: {},
-            user: {}
-        },
-        methods: {
-            getMenuList: function (event) {
-                $.getJSON("sys/menu/user?_" + $.now(), function (r) {
-                    vm.menuList = r.menuList;
-                });
-            },
-            getUser: function () {
-                $.getJSON("sys/user/info?_" + $.now(), function (r) {
-                    vm.user = r.user;
-                });
-            },
-            updatePassword: function () {
-                openWindow({
-                    title: "修改密码",
-                    area: ['350px', '280px'],
-                    content: jQuery("#passwordLayer"),
-                    btn: ['修改', '取消'],
-                    btn1: function (index) {
-                        var data = "password=" + vm.password + "&newPassword=" + vm.newPassword;
-                        $.ajax({
-                            type: "POST",
-                            url: "sys/user/password",
-                            data: data,
-                            dataType: "json",
-                            success: function (result) {
-                                if (result.code == 0) {
-                                    layer.close(index);
-                                    layer.alert('修改成功', function (index) {
-                                        location.reload();
-                                    });
-                                } else {
-                                    layer.alert(result.msg);
-                                }
-                            }
-                        });
-                    }
-                });
-            },
-            toggleFullScreen: function () {
-                var isFullscreen = document.fullScreenElement//W3C
-			    	||document.msFullscreenElement //IE
-			    	||document.mozFullScreenElement //火狐
-			    	||document.webkitFullscreenElement //谷歌
-			    	||false;
-   	if(!isFullscreen){
-	   	var el = document.documentElement;
-   		if (el.requestFullscreen) { 
-   			el.requestFullscreen(); 
-	    } else if (el.mozRequestFullScreen) { 
-	    	el.mozRequestFullScreen(); 
-	    } else if (el.webkitRequestFullscreen) { 
-	    	el.webkitRequestFullscreen(); 
-	    } else if (el.msRequestFullscreen) { 
-	    	el.msRequestFullscreen(); 
-	    } 
-   	}else{
-   		if (document.exitFullscreen) { 
-   			document.exitFullscreen(); 
-	    } else if (document.msExitFullscreen) { 
-	    	document.msExitFullscreen(); 
-	    } else if (document.mozCancelFullScreen) { 
-	    	document.mozCancelFullScreen(); 
-	    } else if (document.webkitCancelFullScreen) { 
-	    	document.webkitCancelFullScreen(); 
-	    } 
-   	}
-            },
-            logout: function () {
-                confirm('注:您确定要安全退出本次登录吗?', function () {
-                    dialogLoading(true);
-                    setTimeout(function () {
-                        toUrl('logout?_' + $.now());
-                    }, 500);
-                });
-            }
-        },
-        created: function () {
-            this.getUser();
-            this.getMenuList();
-        },
-        updated: function () {
-            // MetsiMenu
-            $('#side-menu').metisMenu();
-
-            //通过遍历给菜单项加上data-index属性
-            $(".J_menuItem").each(function (index) {
-                if (!$(this).attr('data-index')) {
-                    $(this).attr('data-index', index);
-                }
-            });
-
-            $('.J_menuItem').on('click', menuItem);
-
-            function menuItem() {
-                // 获取标识数据
-                var dataUrl = $(this).attr('href'),
-                    dataIndex = $(this).data('index'),
-                    menuName = $.trim($(this).text()),
-                    flag = true;
-                if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
-
-                // 选项卡菜单已存在
-                $('.J_menuTab').each(function () {
-                    if ($(this).data('id') == dataUrl) {
-                        if (!$(this).hasClass('active')) {
-                            $(this).addClass('active').siblings('.J_menuTab').removeClass('active');
-                            scrollToTab(this);
-                            // 显示tab对应的内容区
-                            $('.J_mainContent .J_iframe').each(function () {
-                                if ($(this).data('id') == dataUrl) {
-                                    $(this).show().siblings('.J_iframe').hide();
-                                    return false;
-                                }
-                            });
-                        }
-                        flag = false;
-                        return false;
-                    }
-                });
-
-                // 选项卡菜单不存在
-                if (flag) {
-                    var str = '<a href="javascript:;" class="active J_menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
-                    $('.J_menuTab').removeClass('active');
-
-                    // 添加选项卡对应的iframe
-                    var str1 = '<iframe class="J_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
-                    $('.J_mainContent').find('iframe.J_iframe').hide().parents('.J_mainContent').append(str1);
-
-                    // 显示loading提示
-                    var loading = layer.load();
-
-                    $('.J_mainContent iframe:visible').load(function () {
-                        //iframe加载完成后隐藏loading提示
-                        layer.close(loading);
-                    });
-                    // 添加选项卡
-                    $('.J_menuTabs .page-tabs-content').append(str);
-                    scrollToTab($('.J_menuTab.active'));
-                }
-                return false;
-            }
-
-            //滚动到指定选项卡
-            function scrollToTab(element) {
-                var marginLeftVal = calSumWidth($(element).prevAll()),
-                    marginRightVal = calSumWidth($(element).nextAll());
-                // 可视区域非tab宽度
-                var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));
-                //可视区域tab宽度
-                var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
-                //实际滚动宽度
-                var scrollVal = 0;
-                if ($(".page-tabs-content").outerWidth() < visibleWidth) {
-                    scrollVal = 0;
-                } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
-                    if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
-                        scrollVal = marginLeftVal;
-                        var tabElement = element;
-                        while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
-                            scrollVal -= $(tabElement).prev().outerWidth();
-                            tabElement = $(tabElement).prev();
-                        }
-                    }
-                } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
-                    scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
-                }
-                $('.page-tabs-content').animate({
-                    marginLeft: 0 - scrollVal + 'px'
-                }, "fast");
-            }
-
-            //计算元素集合的总宽度
-            function calSumWidth(elements) {
-                var width = 0;
-                $(elements).each(function () {
-                    width += $(this).outerWidth(true);
-                });
-                return width;
-            }
-        }
-    });
-</script>
-</body>
-</html>

+ 0 - 100
.tmp/bundle.js

@@ -1,100 +0,0 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ 	// The module cache
-/******/ 	var installedModules = {};
-/******/
-/******/ 	// The require function
-/******/ 	function __webpack_require__(moduleId) {
-/******/
-/******/ 		// Check if module is in cache
-/******/ 		if(installedModules[moduleId]) {
-/******/ 			return installedModules[moduleId].exports;
-/******/ 		}
-/******/ 		// Create a new module (and put it into the cache)
-/******/ 		var module = installedModules[moduleId] = {
-/******/ 			i: moduleId,
-/******/ 			l: false,
-/******/ 			exports: {}
-/******/ 		};
-/******/
-/******/ 		// Execute the module function
-/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ 		// Flag the module as loaded
-/******/ 		module.l = true;
-/******/
-/******/ 		// Return the exports of the module
-/******/ 		return module.exports;
-/******/ 	}
-/******/
-/******/
-/******/ 	// expose the modules object (__webpack_modules__)
-/******/ 	__webpack_require__.m = modules;
-/******/
-/******/ 	// expose the module cache
-/******/ 	__webpack_require__.c = installedModules;
-/******/
-/******/ 	// define getter function for harmony exports
-/******/ 	__webpack_require__.d = function(exports, name, getter) {
-/******/ 		if(!__webpack_require__.o(exports, name)) {
-/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/ 		}
-/******/ 	};
-/******/
-/******/ 	// define __esModule on exports
-/******/ 	__webpack_require__.r = function(exports) {
-/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/ 		}
-/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
-/******/ 	};
-/******/
-/******/ 	// create a fake namespace object
-/******/ 	// mode & 1: value is a module id, require it
-/******/ 	// mode & 2: merge all properties of value into the ns
-/******/ 	// mode & 4: return value when already ns object
-/******/ 	// mode & 8|1: behave like require
-/******/ 	__webpack_require__.t = function(value, mode) {
-/******/ 		if(mode & 1) value = __webpack_require__(value);
-/******/ 		if(mode & 8) return value;
-/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/ 		var ns = Object.create(null);
-/******/ 		__webpack_require__.r(ns);
-/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/ 		return ns;
-/******/ 	};
-/******/
-/******/ 	// getDefaultExport function for compatibility with non-harmony modules
-/******/ 	__webpack_require__.n = function(module) {
-/******/ 		var getter = module && module.__esModule ?
-/******/ 			function getDefault() { return module['default']; } :
-/******/ 			function getModuleExports() { return module; };
-/******/ 		__webpack_require__.d(getter, 'a', getter);
-/******/ 		return getter;
-/******/ 	};
-/******/
-/******/ 	// Object.prototype.hasOwnProperty.call
-/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ 	// __webpack_public_path__
-/******/ 	__webpack_require__.p = "";
-/******/
-/******/
-/******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = "./index.js");
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./index.js":
-/*!******************!*\
-  !*** ./index.js ***!
-  \******************/
-/*! no static exports found */
-/***/ (function(module, exports) {
-
-eval("\n\n//# sourceURL=webpack:///./index.js?");
-
-/***/ })
-
-/******/ });

+ 10 - 37
admins/fd-mall-backstage/WEB-INF/page/shop/brand.html

@@ -132,46 +132,15 @@
     
                 <Form-item label="店铺场景链接" prop="sceneUrl">
                     <div class="c-winput">
-                        <i-input v-model="brand.sceneUrl" placeholder="店铺场景链接"/>
+                        <i-button type="primary" @click='addSceneLink'>添加场景链接</i-button>
+                        <i-button type="primary" @click="addSceneLink">编辑场景链接</i-button>
+                        <!-- <div>{{brand.sceneUrl}}</div> -->
                     </div>
+                    <!-- <div class="c-winput">
+                        <i-input v-model="brand.sceneUrl" placeholder="店铺场景链接"/>
+                    </div> -->
                 </Form-item>
                 
-                <!-- <Form-item label="展示价格" prop="floorPrice">
-                    <Input-number :min="0" v-model="brand.floorPrice" placeholder="展示价格" style="width: 188px;"/>
-                </Form-item> -->
-                <!-- <Row>
-                    <i-col span="16">
-                        <Form-item label="封面图" prop="appListPicUrl">
-                            <i-input v-model="brand.appListPicUrl" placeholder="封面图" readonly/>
-                        </Form-item>
-                    </i-col>
-                    <i-col span="3">
-                        <Form-item :label-width="1">
-                            <Upload style="width: 300px;" action="../sys/oss/upload" :format="['jpg','jpeg','png']"
-                                    max-size="2048"
-                                    :on-success="handleSuccessAppListPicUrl" :on-format-error="handleFormatError"
-                                    :show-upload-list="false"
-                                    :on-exceeded-size="handleMaxSize">
-                                <i-button icon="ios-cloud-upload-outline">上传图片</i-button>
-                            </Upload>
-                        </Form-item>
-                    </i-col>
-                    <i-col span="3">
-                        <Form-item :label-width="1">
-                            <i-button icon="eye" @click="eyeImageAppListPicUrl">预览图片</i-button>
-                        </Form-item>
-                    </i-col>
-                </Row> -->
-                <!-- <Form-item label="新店铺" prop="isNew">
-                    <Radio-group v-model="brand.isNew">
-                        <Radio label="1">
-                            <span>是</span>
-                        </Radio>
-                        <Radio label="0">
-                            <span>否</span>
-                        </Radio>
-                    </Radio-group>
-                </Form-item> -->
                 <Form-item label="分享图" prop="newPicUrl">
                     <div class="c-winput">
                         <i-input v-model="brand.newPicUrl" placeholder="分享图(宽高比:(5:4))" readonly/>
@@ -203,6 +172,10 @@
             </div>
         </i-form>
     </Card>
+
+    <div id="loginLayer" style="display: none;height: 100%;">
+        <iframe id="loginfdkk" src="https://www.4dkankan.com/mall_login/login.html" style="height: 100%;width:100%" frameborder="0"></iframe>
+    </div>
 </div>
 
 <script src="${rc.contextPath}/js/shop/brand.js?_${date.systemTime}"></script>

+ 1 - 48
admins/fd-mall-backstage/WEB-INF/page/shop/goods.html

@@ -3,52 +3,7 @@
 <head>
     <title></title>
     #parse("sys/header.html")
-    <style>
-        .upload-list {
-            display: inline-block;
-            width: 60px;
-            height: 60px;
-            text-align: center;
-            line-height: 60px;
-            border: 1px solid transparent;
-            border-radius: 4px;
-            overflow: hidden;
-            background: #fff;
-            position: relative;
-            box-shadow: 0 1px 1px rgba(0, 0, 0, .2);
-            margin-right: 4px;
-        }
-
-        .upload-list img {
-            width: 100%;
-            height: 100%;
-        }
-
-        .upload-list-cover {
-            display: none;
-            position: absolute;
-            top: 0;
-            bottom: 0;
-            left: 0;
-            right: 0;
-            background: rgba(0, 0, 0, .6);
-        }
-
-        .upload-list:hover .upload-list-cover {
-            display: block;
-        }
-
-        .upload-list-cover i {
-            color: #fff;
-            font-size: 20px;
-            cursor: pointer;
-            margin: 0 2px;
-        }
-
-    </style>
-
-
-    <!-- <script type="text/javascript" src = "https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script> -->
+    <link rel="stylesheet" href="${rc.contextPath}/css/goods.css">
 </head>
 <body>
 <div id="rrapp" v-cloak>
@@ -85,8 +40,6 @@
                 #end
                 <i-button type="primary" @click="enSale"><i class="fa fa-hand-o-up"></i>&nbsp;上架</i-button>
                 <i-button type="dashed" @click="unSale"><i class="fa fa-hand-o-down"></i>&nbsp;下架</i-button>
-                <i-button type="warning" @click="openPro"><i class="fa fa-pencil-square-o"></i>&nbsp;产品</i-button>
-                <i-button type="warning" @click="openSpe"><i class="fa fa-pencil-square-o"></i>&nbsp;规格</i-button>
             </div>
         </Row>
         <table id="jqGrid"></table>

+ 22 - 21
admins/fd-mall-backstage/WEB-INF/page/sys/user.html

@@ -34,27 +34,6 @@
         <div id="jqGridPager"></div>
     </div>
 
-    <Modal
-        v-model="modal1"
-        title="添加店铺关联"
-        @on-ok="ok"
-        @on-cancel="cancel">
-        <!-- 
-           <CheckboxGroup v-model="social" @on-change="checkAllGroupChange">
-            <Checkbox  :label="brand.name" v-for="(brand,idx) in brandsList" :key='idx'>
-                <span>{{brand.name}}</span>
-            </Checkbox>
-        </CheckboxGroup> -->
-
-        <div class="checkbox-item" @click="clickCheck(brand,idx)" v-for="(brand,idx) in brandsList" :key='idx'>
-            <span class="checkbox-kuang"></span>
-            <img v-if="brand.checked" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/images/fdsq-click.png" alt="">
-            <span>{{brand.name}}</span>
-        </div>
-        
-        <Page style="margin-top: 20px;" :total="brandTotal" @on-change="pageChange" :page-size='brandPerPage' :current='brandPage'  size="small" />
-    </Modal>
-
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
         <i-form ref="formValidate" :model="user" :rules="ruleValidate" :label-width="80">
@@ -115,6 +94,28 @@
            </div>
         </i-form>
     </Card>
+
+    <Modal
+    v-model="modal1"
+    title="添加店铺关联"
+    @on-ok="ok"
+    @on-cancel="cancel">
+    <!-- 
+       <CheckboxGroup v-model="social" @on-change="checkAllGroupChange">
+        <Checkbox  :label="brand.name" v-for="(brand,idx) in brandsList" :key='idx'>
+            <span>{{brand.name}}</span>
+        </Checkbox>
+    </CheckboxGroup> -->
+
+    <div class="checkbox-item" @click="clickCheck(brand,idx)" v-for="(brand,idx) in brandsList" :key='idx'>
+        <span class="checkbox-kuang"></span>
+        <img v-if="brand.checked" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/images/fdsq-click.png" alt="">
+        <span>{{brand.name}}</span>
+    </div>
+    
+    <Page style="margin-top: 20px;" :total="brandTotal" @on-change="pageChange" :page-size='brandPerPage' :current='brandPage'  size="small" />
+</Modal>
+
 </div>
 <!-- 选择部门 -->
 <div id="deptLayer" style="display: none;padding:10px;">

+ 47 - 0
admins/fd-mall-backstage/css/goods.css

@@ -0,0 +1,47 @@
+.ip-layout {
+  flex: 1;
+}
+.upload-list {
+  display: inline-block;
+  width: 60px;
+  height: 60px;
+  text-align: center;
+  line-height: 60px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  overflow: hidden;
+  background: #fff;
+  position: relative;
+  box-shadow: 0 1px 1px rgba(0, 0, 0, .2);
+  margin-right: 4px;
+}
+
+.upload-list img {
+  width: 100%;
+  height: 100%;
+}
+
+.upload-list-cover {
+  display: none;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background: rgba(0, 0, 0, .6);
+}
+
+.upload-list:hover .upload-list-cover {
+  display: block;
+}
+
+.upload-list-cover i {
+  color: #fff;
+  font-size: 20px;
+  cursor: pointer;
+  margin: 0 2px;
+}
+.h-val li {
+  flex: 1;
+  text-align: center;
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 14 - 289
admins/fd-mall-backstage/index.html


+ 402 - 402
admins/fd-mall-backstage/js/common.js

@@ -1,502 +1,502 @@
 //iframe自适应
 $(window).on('resize', function () {
-    var $content = $('#mainApp');
-    $content.height($(this).height());
-    $content.find('iframe').each(function () {
-        $(this).height($content.height() - 150);
-    });
-    var $rrapp = $('#rrapp').parent();
-    $rrapp.height($(this).height());
-    $(this).height($content.height());
+  var $content = $('#mainApp');
+  $content.height($(this).height());
+  $content.find('iframe').each(function () {
+      $(this).height($content.height() - 150);
+  });
+  var $rrapp = $('#rrapp').parent();
+  $rrapp.height($(this).height());
+  $(this).height($content.height());
 }).resize();
 
 $.ajaxSetup({
-    dataType: "json",
-    cache: false
+  dataType: "json",
+  cache: false
 });
 
 //重写alert
 window.alert = function (msg, callback) {
-    // parent.layer.alert 弹出在iframe外的页面。
-    layer.alert(msg, function (index) {
-        layer.close(index);
-        if (typeof(callback) === "function") {
-            callback("ok");
-        }
-    });
+  // parent.layer.alert 弹出在iframe外的页面。
+  layer.alert(msg, function (index) {
+      layer.close(index);
+      if (typeof(callback) === "function") {
+          callback("ok");
+      }
+  });
 };
 
 //重写confirm式样框
 window.confirm = function (msg, callback) {
-    //如果没有定义回调函数,直接返回true
-    if (!callback) {
-        return true;
-    }
-    layer.confirm(msg, {
-            skin: 'layui-layer-molv', btn: ['确定', '取消']
-        },
-        function () {//确定事件
-            if (typeof(callback) === "function") {
-                callback("ok");
-            }
-        });
+  //如果没有定义回调函数,直接返回true
+  if (!callback) {
+      return true;
+  }
+  layer.confirm(msg, {
+          skin: 'layui-layer-molv', btn: ['确定', '取消']
+      },
+      function () {//确定事件
+          if (typeof(callback) === "function") {
+              callback("ok");
+          }
+      });
 };
 
 /**
- *
- * @param options
- */
+*
+* @param options
+*/
 window.openWindow = function (options) {
-    let globalParams = {
-        skin: 'layui-layer-molv',//皮肤
-        title: '标题',//标题
-        type: 1,//打开窗口的类型 1:html里的div内容 2:iframe方式,页面的路径
-        closeBtn: 1, //关闭按钮的形状 0、1
-        anim: -1,
-        isOutAnim: false,
-        shadeClose: false,
-        area: ['90%', '95%'],
-        content: '',
-        end:'',
-        btn: false, //按钮
-        top: false //窗口弹出是否在iframe上层
-    };
-    globalParams = $.extend(globalParams, options);
-    if (globalParams.top) {
-        parent.layer.open(globalParams);
-    } else {
-        layer.open(globalParams);
-    }
+  let globalParams = {
+      skin: 'layui-layer-molv',//皮肤
+      title: '标题',//标题
+      type: 1,//打开窗口的类型 1:html里的div内容 2:iframe方式,页面的路径
+      closeBtn: 1, //关闭按钮的形状 0、1
+      anim: -1,
+      isOutAnim: false,
+      shadeClose: false,
+      area: ['90%', '95%'],
+      content: '',
+      end:'',
+      btn: false, //按钮
+      top: false //窗口弹出是否在iframe上层
+  };
+  globalParams = $.extend(globalParams, options);
+  if (globalParams.top) {
+      parent.layer.open(globalParams);
+  } else {
+      layer.open(globalParams);
+  }
 };
 
 window.formClose = function(){
-    var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
-    console.log(index)
-    //layer.msg(index);
-    parent.layer.close(index); //再执行关闭   
+  var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+  console.log(index)
+  //layer.msg(index);
+  parent.layer.close(index); //再执行关闭   
 }
 
 //获取选中的数据
 function getSelectedRowData(gridId) {
-    var id = getSelectedRow(gridId);
-    return $(gridId).jqGrid('getRowData', id);
+  var id = getSelectedRow(gridId);
+  return $(gridId).jqGrid('getRowData', id);
 }
 
 //选择一条记录
 function getSelectedRow(gridId) {
-    var grid = $(gridId);
-    var rowKey = grid.getGridParam("selrow");
-    if (!rowKey) {
-        // iview.Message.error("请选择一条记录");
-        alert("请选择一条记录");
-        return;
-    }
-
-    var selectedIDs = grid.getGridParam("selarrrow");
-    if (selectedIDs.length > 1) {
-        alert("只能选择一条记录");
-
-        return;
-    }
-
-    return selectedIDs[0];
+  var grid = $(gridId);
+  var rowKey = grid.getGridParam("selrow");
+  if (!rowKey) {
+      // iview.Message.error("请选择一条记录");
+      alert("请选择一条记录");
+      return;
+  }
+
+  var selectedIDs = grid.getGridParam("selarrrow");
+  if (selectedIDs.length > 1) {
+      alert("只能选择一条记录");
+
+      return;
+  }
+
+  return selectedIDs[0];
 };
 
 //选择多条记录
 function getSelectedRows(gridId) {
-    var grid = $(gridId);
-    var rowKey = grid.getGridParam("selrow");
-    if (!rowKey) {
-        alert("请选择一条记录");
-        return;
-    }
-    return grid.getGridParam("selarrrow");
+  var grid = $(gridId);
+  var rowKey = grid.getGridParam("selrow");
+  if (!rowKey) {
+      alert("请选择一条记录");
+      return;
+  }
+  return grid.getGridParam("selarrrow");
 };
 
 /**
- * 预览图片
- * @param url
- */
+* 预览图片
+* @param url
+*/
 function eyeImage(url) {
-    if (!url) {
-        iview.Message.error('请先上传图片');
-        return;
-    }
-    layer.photos({
-        photos: {
-            "title": "预览", //相册标题
-            "start": 0, //初始显示的图片序号,默认0
-            "data": [   //相册包含的图片,数组格式
-                {
-                    "src": url //原图地址
-                }
-            ]
-        }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
-    });
+  if (!url) {
+      iview.Message.error('请先上传图片');
+      return;
+  }
+  layer.photos({
+      photos: {
+          "title": "预览", //相册标题
+          "start": 0, //初始显示的图片序号,默认0
+          "data": [   //相册包含的图片,数组格式
+              {
+                  "src": url //原图地址
+              }
+          ]
+      }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
+  });
 };
 
 /**
- * 预览图片
- * @param data
- */
+* 预览图片
+* @param data
+*/
 function eyeImages(data) {
-    layer.photos({
-        photos: {
-            "title": "预览", //相册标题
-            "start": 0, //初始显示的图片序号,默认0
-            "data": data
-        }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
-    });
+  layer.photos({
+      photos: {
+          "title": "预览", //相册标题
+          "start": 0, //初始显示的图片序号,默认0
+          "data": data
+      }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
+  });
 };
 
 /**
- * 重置验证
- * @param vue vue对象
- * @param name
- */
+* 重置验证
+* @param vue vue对象
+* @param name
+*/
 function handleResetForm(vue, name) {
-    vue.$refs[name].resetFields();
+  vue.$refs[name].resetFields();
 };
 
 /**
- * 表单验证
- * @param vue vue对象
- * @param name 验证规则
- * @param callback 验证通过回调函数
- */
+* 表单验证
+* @param vue vue对象
+* @param name 验证规则
+* @param callback 验证通过回调函数
+*/
 function handleSubmitValidate(vue, name, callback) {
-    vue.$refs[name].validate(function (valid) {
-        if (valid) {
-            callback();
-        } else {
-            iview.Message.error('请填写完整信息!');
-            return false;
-        }
-    })
+  vue.$refs[name].validate(function (valid) {
+      if (valid) {
+          callback();
+      } else {
+          iview.Message.error('请填写完整信息!');
+          return false;
+      }
+  })
 };
 
 /**
- * 翻译日期
- * @param date
- * @param fmt
- * @returns {*}
- */
+* 翻译日期
+* @param date
+* @param fmt
+* @returns {*}
+*/
 function transDate(date, fmt) {
-    if (date) {
-        if (typeof date == 'number') {
-            return new Date(date).dateFormat(fmt);
-        } else {
-            try {
-                return new Date(date.replace('-', '/').replace('-', '/')).dateFormat(fmt);
-            } catch (e) {
-                return '-';
-            }
-        }
-    } else {
-        return '-';
-    }
+  if (date) {
+      if (typeof date == 'number') {
+          return new Date(date).dateFormat(fmt);
+      } else {
+          try {
+              return new Date(date.replace('-', '/').replace('-', '/')).dateFormat(fmt);
+          } catch (e) {
+              return '-';
+          }
+      }
+  } else {
+      return '-';
+  }
 };
 
 /**
- * 翻译图片
- * @param url
- * @returns {*}
- */
+* 翻译图片
+* @param url
+* @returns {*}
+*/
 function transImg(url,width,height) {
 
-    if (url) {
-        return '<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
-    } else {
-        return '-';
-    }
+  if (url) {
+      return '<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
+  } else {
+      return '-';
+  }
 };
 
 /**
- * 翻译媒体文件
- * @param url
- * @returns {*}
- */
+* 翻译媒体文件
+* @param url
+* @returns {*}
+*/
 function transMedia(url,width,height) {
-    let video=['mp4','rmvb','rm','avi']
-    let audio=['mp3','wav','flac','ape']
-    let img = ['png','bmp','gif','jpg','jpeg']
-
-    if (url) {
-        let hz = url.split('.').pop().toLowerCase();
-        let type = '-'
-        console.log(hz)
-
-        video.forEach(function (v){
-            if (v===hz.toLowerCase()) {
-                type='<img width="60px" height="60px" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/wxmall/images/video-logo.png">'
-            }
-        })
-
-        audio.forEach(function (a){
-            if (a===hz.toLowerCase()) {
-                type='<span>'+url+'</span>'
-            }
-        })
-
-        img.forEach(function (i){
-            if (i===hz.toLowerCase()) {
-                type='<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
-            }
-        })
-
-        return type;
-    } else {
-        return '-';
-    }
+  let video=['mp4','rmvb','rm','avi']
+  let audio=['mp3','wav','flac','ape']
+  let img = ['png','bmp','gif','jpg','jpeg']
+
+  if (url) {
+      let hz = url.split('.').pop().toLowerCase();
+      let type = '-'
+      console.log(hz)
+
+      video.forEach(function (v){
+          if (v===hz.toLowerCase()) {
+              type='<img width="60px" height="60px" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/wxmall/images/video-logo.png">'
+          }
+      })
+
+      audio.forEach(function (a){
+          if (a===hz.toLowerCase()) {
+              type='<span>'+url+'</span>'
+          }
+      })
+
+      img.forEach(function (i){
+          if (i===hz.toLowerCase()) {
+              type='<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
+          }
+      })
+
+      return type;
+  } else {
+      return '-';
+  }
 };
 
 
 /**
- * 翻译性别
- * @param gender
- * @returns {*}
- */
+* 翻译性别
+* @param gender
+* @returns {*}
+*/
 function transGender(gender) {
-    if (gender == 1) {
-        return '男';
-    }
-    if (gender == 2) {
-        return '女';
-    }
-    return '未知';
+  if (gender == 1) {
+      return '男';
+  }
+  if (gender == 2) {
+      return '女';
+  }
+  return '未知';
 };
 
 function transIsNot(value) {
-    if (value == 1) {
-        return '<span class="label label-success">是</span>';
-    }
-    return '<span class="label label-danger">否</span>';
+  if (value == 1) {
+      return '<span class="label label-success">是</span>';
+  }
+  return '<span class="label label-danger">否</span>';
 };
 
 function transStatus(value) {
-    if (value == 1) {
-        return '<span class="label label-success">有效</span>';
-    }
-    return '<span class="label label-danger">无效</span>';
+  if (value == 1) {
+      return '<span class="label label-success">有效</span>';
+  }
+  return '<span class="label label-danger">无效</span>';
 };
 
 function toUrl(href) {
-    window.location.href = href;
+  window.location.href = href;
 }
 
 function dialogLoading(flag) {
-    if (flag) {
-        top.layer.load(0, {
-            shade: [0.5, '#fff'],
-            time: 5000,
-            content: '处理中...'
-        });
-    } else {
-        top.layer.closeAll('loading');
-    }
+  if (flag) {
+      top.layer.load(0, {
+          shade: [0.5, '#fff'],
+          time: 5000,
+          content: '处理中...'
+      });
+  } else {
+      top.layer.closeAll('loading');
+  }
 }
 
 /**
- * 用JS获取地址栏参数的方法
- * 使用示例 location.href = http://localhost:8080/index.html?id=123
- *          getQueryString('id') --> 123;
- * @param name
- * @returns {null}
- * @constructor
- */
+* 用JS获取地址栏参数的方法
+* 使用示例 location.href = http://localhost:8080/index.html?id=123
+*          getQueryString('id') --> 123;
+* @param name
+* @returns {null}
+* @constructor
+*/
 function getQueryString(name) {
-    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-    var r = window.location.search.substr(1).match(reg);
-    if (r != null) {
-        return unescape(r[2]);
-    }
-    return null;
+  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+  var r = window.location.search.substr(1).match(reg);
+  if (r != null) {
+      return unescape(r[2]);
+  }
+  return null;
 }
 
 /**
- * 主要功能:导出功能公共方法
- *
- * @param formId 表单ID,带'#'号,如'#formId'
- * @param url 请求后台地址
- * @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
- */
+* 主要功能:导出功能公共方法
+*
+* @param formId 表单ID,带'#'号,如'#formId'
+* @param url 请求后台地址
+* @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
+*/
 function exportFile(formId, url, extraObj) {
-    var form = $('<form>'); //定义一个form表单
-    form.attr('style', 'display: none');
-    form.attr('target', '');
-    form.attr('method', 'post');
-    form.attr('action', url);
-
-    var json = getJson(formId);
-    if (typeof extraObj != 'undefined') {
-        json = $.extend(json, extraObj);
-    }
-
-    $('body').append(form);//将表单放置在web中
-    for (var i in json) {
-        var input = $('<input>');
-        input.attr('type', 'hidden');
-        input.attr('name', i);
-        input.attr('value', json[i]);
-        form.append(input);
-    }
-
-    form.submit();//表单提交
+  var form = $('<form>'); //定义一个form表单
+  form.attr('style', 'display: none');
+  form.attr('target', '');
+  form.attr('method', 'post');
+  form.attr('action', url);
+
+  var json = getJson(formId);
+  if (typeof extraObj != 'undefined') {
+      json = $.extend(json, extraObj);
+  }
+
+  $('body').append(form);//将表单放置在web中
+  for (var i in json) {
+      var input = $('<input>');
+      input.attr('type', 'hidden');
+      input.attr('name', i);
+      input.attr('value', json[i]);
+      form.append(input);
+  }
+
+  form.submit();//表单提交
 }
 
 /**
- * 将form转化为json
- * @param form 传入 form表单的dom $("#baseFm")
- * @returns {___anonymous49_50}  序列化的键值对 {key:value,key2:value2,....}
- */
+* 将form转化为json
+* @param form 传入 form表单的dom $("#baseFm")
+* @returns {___anonymous49_50}  序列化的键值对 {key:value,key2:value2,....}
+*/
 function getJson(form) {
-    var o = {};
-    var $form = $(form).find('input,textarea,select');
-    $.each($form, function (i, item) {
-        var $this = $(item);
-
-        if ($this.attr("type") == 'radio') {
-            o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
-            return true;
-        }
-        o[$this.attr("name")] = $this.val();
-    })
-    return o;
+  var o = {};
+  var $form = $(form).find('input,textarea,select');
+  $.each($form, function (i, item) {
+      var $this = $(item);
+
+      if ($this.attr("type") == 'radio') {
+          o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
+          return true;
+      }
+      o[$this.attr("name")] = $this.val();
+  })
+  return o;
 }
 
 /**
- *
- Ajax.request({
-        url: '', //访问路径
-        dataType: 'json', //访问类型 'json','html'等
-        params: getJson(form),
-        resultMsg: true, false, //是否需要提示信息
-        type: 'GET',//,'get','post'
-        beforeSubmit: function (data) {},//提交前处理
-        successCallback: function (data) {} //提交后处理
-    });
- */
+*
+Ajax.request({
+      url: '', //访问路径
+      dataType: 'json', //访问类型 'json','html'等
+      params: getJson(form),
+      resultMsg: true, false, //是否需要提示信息
+      type: 'GET',//,'get','post'
+      beforeSubmit: function (data) {},//提交前处理
+      successCallback: function (data) {} //提交后处理
+  });
+*/
 Ajax = function () {
 
-    //var opt = { type:'GET',dataType:'json',resultMsg:true };
-    function request(opt) {
-
-        //添加遮罩层
-        dialogLoading(true);
-
-        if (typeof opt.cache == 'undefined') {
-            opt.cache = false;
-        }
-
-        if (typeof opt == 'undefined') {
-            return;
-        }
-        //opt = $.extend(opt, p);
-        if (typeof(opt.type) == 'undefined') {
-            opt.type = 'GET'
-        }
-        if (typeof(opt.async) == 'undefined') {
-            opt.async = false;
-        }
-        if (typeof(opt.dataType) == 'undefined') {
-            opt.dataType = 'json'
-        }
-        if (typeof(opt.contentType) == 'undefined') {
-            opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
-        }
-        if (typeof(opt.params) == 'undefined' || opt.params == null) {
-            opt.params = {};
-        }
-        opt.params.date = new Date();
-        if (typeof(opt.beforeSubmit) != 'undefined') {
-            var flag = opt.beforeSubmit(opt);
-            if (!flag) {
-                return;
-            }
-        }
-
-        if (typeof(opt.resultMsg) == 'undefined') {
-            opt.resultMsg = true;
-        }
-
-        $.ajax({
-            async: opt.async,
-            url: opt.url,
-            dataType: opt.dataType,
-            contentType: opt.contentType,
-            data: opt.params,
-            crossDomain: opt.crossDomain || false,
-            type: opt.type,
-            cache: opt.cache,
-            success: function (data) {
-                //关闭遮罩
-                dialogLoading(false);
-
-                if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
-                    var result = {code: null};
-                    if (typeof data == 'string') {
-                        result = eval('(' + data + ')')
-                    } else if (typeof data == 'object') {
-                        result = data;
-                    }
-
-                    if (opt.resultMsg && result.msg) {
-                        layer.alert(result.msg, {icon: 5});
-                    }
-                    return;
-                }
-                if (opt.resultMsg && data.msg) {
-                    layer.alert(data.msg, {icon: 6}, function () {
-                        if (typeof(opt.successCallback) != 'undefined') {
-                            opt.successCallback(data);
-                        }
-                    });
-                    return;
-                }
-
-                if (typeof(opt.successCallback) != 'undefined') {
-                    opt.successCallback(data);
-                }
-            },
-            error: function () {
-                //关闭遮罩
-                dialogLoading(false);
-                layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
-            }
-        });
-    }
-
-    return {
-        /**
-         * Ajax调用request
-         */
-        request: request
-    };
+  //var opt = { type:'GET',dataType:'json',resultMsg:true };
+  function request(opt) {
+
+      //添加遮罩层
+      dialogLoading(true);
+
+      if (typeof opt.cache == 'undefined') {
+          opt.cache = false;
+      }
+
+      if (typeof opt == 'undefined') {
+          return;
+      }
+      //opt = $.extend(opt, p);
+      if (typeof(opt.type) == 'undefined') {
+          opt.type = 'GET'
+      }
+      if (typeof(opt.async) == 'undefined') {
+          opt.async = false;
+      }
+      if (typeof(opt.dataType) == 'undefined') {
+          opt.dataType = 'json'
+      }
+      if (typeof(opt.contentType) == 'undefined') {
+          opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
+      }
+      if (typeof(opt.params) == 'undefined' || opt.params == null) {
+          opt.params = {};
+      }
+      opt.params.date = new Date();
+      if (typeof(opt.beforeSubmit) != 'undefined') {
+          var flag = opt.beforeSubmit(opt);
+          if (!flag) {
+              return;
+          }
+      }
+
+      if (typeof(opt.resultMsg) == 'undefined') {
+          opt.resultMsg = true;
+      }
+
+      $.ajax({
+          async: opt.async,
+          url: opt.url,
+          dataType: opt.dataType,
+          contentType: opt.contentType,
+          data: opt.params,
+          crossDomain: opt.crossDomain || false,
+          type: opt.type,
+          cache: opt.cache,
+          success: function (data) {
+              //关闭遮罩
+              dialogLoading(false);
+
+              if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
+                  var result = {code: null};
+                  if (typeof data == 'string') {
+                      result = eval('(' + data + ')')
+                  } else if (typeof data == 'object') {
+                      result = data;
+                  }
+
+                  if (opt.resultMsg && result.msg) {
+                      layer.alert(result.msg, {icon: 5});
+                  }
+                  return;
+              }
+              if (opt.resultMsg && data.msg) {
+                  layer.alert(data.msg, {icon: 6}, function () {
+                      if (typeof(opt.successCallback) != 'undefined') {
+                          opt.successCallback(data);
+                      }
+                  });
+                  return;
+              }
+
+              if (typeof(opt.successCallback) != 'undefined') {
+                  opt.successCallback(data);
+              }
+          },
+          error: function () {
+              //关闭遮罩
+              dialogLoading(false);
+              layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
+          }
+      });
+  }
+
+  return {
+      /**
+       * Ajax调用request
+       */
+      request: request
+  };
 }();
 
 /**
- * 缓存字典数据
- * 使用方法:字典 调用方式为在table的列或者columns 的列中 formatter:function(value){ return Dict.getDictValue(groupCode,value);}
- * 其中value为类型code  返回值为类型名称
- */
+* 缓存字典数据
+* 使用方法:字典 调用方式为在table的列或者columns 的列中 formatter:function(value){ return Dict.getDictValue(groupCode,value);}
+* 其中value为类型code  返回值为类型名称
+*/
 Dict = function () {
-    return {
-        getDictValue: function (groupCode, dictKey) {
-            var dictValue = '-';
-            Ajax.request({
-                url: '/sys/dict/getDictValue',
-                dataType: 'json',
-                params: {
-                    groupCode: groupCode, dictKey: dictKey
-                },
-                cache: true,
-                async: false,
-                type: 'GET',
-                successCallback: function (data) {
-                    dictValue = data.dictValue;
-                }
-            });
-            return dictValue;
-        }
-    };
+  return {
+      getDictValue: function (groupCode, dictKey) {
+          var dictValue = '-';
+          Ajax.request({
+              url: '/sys/dict/getDictValue',
+              dataType: 'json',
+              params: {
+                  groupCode: groupCode, dictKey: dictKey
+              },
+              cache: true,
+              async: false,
+              type: 'GET',
+              successCallback: function (data) {
+                  dictValue = data.dictValue;
+              }
+          });
+          return dictValue;
+      }
+  };
 }();

+ 119 - 119
admins/fd-mall-backstage/js/navtab.js

@@ -1,121 +1,121 @@
 layui.define(['element'], function (exports) {
-    var element = layui.element(),
-        $ = layui.jquery,
-        layer = parent.layer === undefined ? layui.layer : parent.layer,
-        module_name = 'navtab',
-        globalTabIdIndex = 0,
-        LarryTab = function () {
-            this.config = {
-                elem: undefined,
-                closed: true
-            };
-        };
-    var ELEM = {};
-    /**
-     * [参数设置 options]
-     */
-    LarryTab.prototype.set = function (options) {
-        var _this = this;
-        $.extend(true, _this.config, options);
-        return _this;
-    };
-    /**
-     * [init 对象初始化]
-     * @return {[type]} [返回对象初始化结果]
-     */
-    LarryTab.prototype.init = function () {
-        var _this = this;
-        var _config = _this.config;
-        if (typeof(_config.elem) !== 'string' && typeof(_config.elem) !== 'object') {
-            layer.alert('Tab选项卡错误提示: elem参数未定义或设置出错,具体设置格式请参考文档API.');
-        }
-        var $container;
-        if (typeof(_config.elem) === 'string') {
-            $container = $('' + _config.elem + '');
-            //console.log($container);
-        }
-        if (typeof(_config.elem) === 'object') {
-            $container = _config.elem;
-        }
-        if ($container.length === 0) {
-            layer.alert('Tab选项卡错误提示:找不到elem参数配置的容器,请检查.');
-        }
-        var filter = $container.attr('lay-filter');
-        if (filter === undefined || filter === '') {
-            layer.alert('Tab选项卡错误提示:请为elem容器设置一个lay-filter过滤器');
-        }
-        _config.elem = $container;
-        ELEM.titleBox = $container.children('ul.layui-tab-title');
-        ELEM.contentBox = $container.children('div.layui-tab-content');
-        ELEM.tabFilter = filter;
-        return _this;
-    };
-    /**
-     * [exists 在layui-tab中检查对应layui-tab-title是否存在,如果存在则返回索引值,不存在返回-1]
-     * @param  {[type]} title [description]
-     * @return {[type]}       [description]
-     */
-    LarryTab.prototype.exists = function (title) {
-        var _this = ELEM.titleBox === undefined ? this.init() : this,
-            tabIndex = -1;
-        ELEM.titleBox.find('li').each(function (i, e) {
-            var $em = $(this).children('em');
-            if ($em.text() === title) {
-                tabIndex = i;
-            }
-            ;
-        });
-        return tabIndex;
-    };
-    /**
-     * [tabAdd 增加选项卡,如果已存在则增加this样式]
-     * @param  {[type]} data [description]
-     * @return {[type]}      [description]
-     */
-    LarryTab.prototype.tabAdd = function (data) {
-        var _this = this;
-        var tabIndex = _this.exists(data.title);
-        // 若不存在
-        if (tabIndex === -1) {
-            globalTabIdIndex++;
-            var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '" class="larry-iframe"></iframe>';
-            var title = '';
-            // 若icon有定义
-            if (data.icon !== undefined) {
-                if (data.icon.indexOf('fa-') !== -1) {
-                    title += '<i class="' + data.icon + '"></i>';
-                } else {
-                    title += '<i class="layui-icon ">' + data.icon + '</i>';
-                }
-            }
-            title += '<em>' + data.title + '</em>';
-            if (_this.config.closed) {
-                title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + globalTabIdIndex + '">&#x1006;</i>';
-            }
-            //添加tab
-            element.tabAdd(ELEM.tabFilter, {
-                title: title,
-                content: content
-            });
-            //iframe 自适应
-            ELEM.contentBox.find('iframe[data-id=' + globalTabIdIndex + ']').each(function () {
-                $(this).height(ELEM.contentBox.height());
-            });
-            if (_this.config.closed) {
-                //监听关闭事件
-                ELEM.titleBox.find('li').children('i.layui-tab-close[data-id=' + globalTabIdIndex + ']').on('click', function () {
-                    element.tabDelete(ELEM.tabFilter, $(this).parent('li').index()).init();
-                });
-            }
-            ;
-            //切换到当前打开的选项卡
-            element.tabChange(ELEM.tabFilter, ELEM.titleBox.find('li').length - 1);
-        } else {
-            element.tabChange(ELEM.tabFilter, tabIndex);
-        }
-    };
-    var navtab = new LarryTab();
-    exports(module_name, function (options) {
-        return navtab.set(options);
-    });
+  var element = layui.element(),
+      $ = layui.jquery,
+      layer = parent.layer === undefined ? layui.layer : parent.layer,
+      module_name = 'navtab',
+      globalTabIdIndex = 0,
+      LarryTab = function () {
+          this.config = {
+              elem: undefined,
+              closed: true
+          };
+      };
+  var ELEM = {};
+  /**
+   * [参数设置 options]
+   */
+  LarryTab.prototype.set = function (options) {
+      var _this = this;
+      $.extend(true, _this.config, options);
+      return _this;
+  };
+  /**
+   * [init 对象初始化]
+   * @return {[type]} [返回对象初始化结果]
+   */
+  LarryTab.prototype.init = function () {
+      var _this = this;
+      var _config = _this.config;
+      if (typeof(_config.elem) !== 'string' && typeof(_config.elem) !== 'object') {
+          layer.alert('Tab选项卡错误提示: elem参数未定义或设置出错,具体设置格式请参考文档API.');
+      }
+      var $container;
+      if (typeof(_config.elem) === 'string') {
+          $container = $('' + _config.elem + '');
+          //console.log($container);
+      }
+      if (typeof(_config.elem) === 'object') {
+          $container = _config.elem;
+      }
+      if ($container.length === 0) {
+          layer.alert('Tab选项卡错误提示:找不到elem参数配置的容器,请检查.');
+      }
+      var filter = $container.attr('lay-filter');
+      if (filter === undefined || filter === '') {
+          layer.alert('Tab选项卡错误提示:请为elem容器设置一个lay-filter过滤器');
+      }
+      _config.elem = $container;
+      ELEM.titleBox = $container.children('ul.layui-tab-title');
+      ELEM.contentBox = $container.children('div.layui-tab-content');
+      ELEM.tabFilter = filter;
+      return _this;
+  };
+  /**
+   * [exists 在layui-tab中检查对应layui-tab-title是否存在,如果存在则返回索引值,不存在返回-1]
+   * @param  {[type]} title [description]
+   * @return {[type]}       [description]
+   */
+  LarryTab.prototype.exists = function (title) {
+      var _this = ELEM.titleBox === undefined ? this.init() : this,
+          tabIndex = -1;
+      ELEM.titleBox.find('li').each(function (i, e) {
+          var $em = $(this).children('em');
+          if ($em.text() === title) {
+              tabIndex = i;
+          }
+          ;
+      });
+      return tabIndex;
+  };
+  /**
+   * [tabAdd 增加选项卡,如果已存在则增加this样式]
+   * @param  {[type]} data [description]
+   * @return {[type]}      [description]
+   */
+  LarryTab.prototype.tabAdd = function (data) {
+      var _this = this;
+      var tabIndex = _this.exists(data.title);
+      // 若不存在
+      if (tabIndex === -1) {
+          globalTabIdIndex++;
+          var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '" class="larry-iframe"></iframe>';
+          var title = '';
+          // 若icon有定义
+          if (data.icon !== undefined) {
+              if (data.icon.indexOf('fa-') !== -1) {
+                  title += '<i class="' + data.icon + '"></i>';
+              } else {
+                  title += '<i class="layui-icon ">' + data.icon + '</i>';
+              }
+          }
+          title += '<em>' + data.title + '</em>';
+          if (_this.config.closed) {
+              title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + globalTabIdIndex + '">&#x1006;</i>';
+          }
+          //添加tab
+          element.tabAdd(ELEM.tabFilter, {
+              title: title,
+              content: content
+          });
+          //iframe 自适应
+          ELEM.contentBox.find('iframe[data-id=' + globalTabIdIndex + ']').each(function () {
+              $(this).height(ELEM.contentBox.height());
+          });
+          if (_this.config.closed) {
+              //监听关闭事件
+              ELEM.titleBox.find('li').children('i.layui-tab-close[data-id=' + globalTabIdIndex + ']').on('click', function () {
+                  element.tabDelete(ELEM.tabFilter, $(this).parent('li').index()).init();
+              });
+          }
+          ;
+          //切换到当前打开的选项卡
+          element.tabChange(ELEM.tabFilter, ELEM.titleBox.find('li').length - 1);
+      } else {
+          element.tabChange(ELEM.tabFilter, tabIndex);
+      }
+  };
+  var navtab = new LarryTab();
+  exports(module_name, function (options) {
+      return navtab.set(options);
+  });
 });

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 167
admins/fd-mall-backstage/js/shop/ad.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 69
admins/fd-mall-backstage/js/shop/address.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 112
admins/fd-mall-backstage/js/shop/adposition.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 125
admins/fd-mall-backstage/js/shop/attribute.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 134
admins/fd-mall-backstage/js/shop/attributecategory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 258
admins/fd-mall-backstage/js/shop/brand.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 111
admins/fd-mall-backstage/js/shop/cart.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 232
admins/fd-mall-backstage/js/shop/category.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 151
admins/fd-mall-backstage/js/shop/channel.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 100
admins/fd-mall-backstage/js/shop/collect.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 117
admins/fd-mall-backstage/js/shop/comment.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 247
admins/fd-mall-backstage/js/shop/coupon.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 136
admins/fd-mall-backstage/js/shop/feedback.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 97
admins/fd-mall-backstage/js/shop/footprint.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 852
admins/fd-mall-backstage/js/shop/goods.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 110
admins/fd-mall-backstage/js/shop/goodshistory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 432
admins/fd-mall-backstage/js/shop/goodshotspot.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 109
admins/fd-mall-backstage/js/shop/goodsissue.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 183
admins/fd-mall-backstage/js/shop/goodsspecification.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 128
admins/fd-mall-backstage/js/shop/helpissue.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 113
admins/fd-mall-backstage/js/shop/helptype.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 119
admins/fd-mall-backstage/js/shop/keywords.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 409
admins/fd-mall-backstage/js/shop/linkhotspot.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 298
admins/fd-mall-backstage/js/shop/order.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 245
admins/fd-mall-backstage/js/shop/product.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 99
admins/fd-mall-backstage/js/shop/searchhistory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 201
admins/fd-mall-backstage/js/shop/shopuser.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 110
admins/fd-mall-backstage/js/shop/specification.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 184
admins/fd-mall-backstage/js/shop/topic.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 133
admins/fd-mall-backstage/js/shop/topiccategory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 113
admins/fd-mall-backstage/js/shop/usercoupon.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 112
admins/fd-mall-backstage/js/shop/userlevel.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 114
admins/fd-mall-backstage/js/sys/config.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 196
admins/fd-mall-backstage/js/sys/dept.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 47
admins/fd-mall-backstage/js/sys/generator.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 42
admins/fd-mall-backstage/js/sys/log.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 190
admins/fd-mall-backstage/js/sys/macro.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 261
admins/fd-mall-backstage/js/sys/menu.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 181
admins/fd-mall-backstage/js/sys/oss.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 145
admins/fd-mall-backstage/js/sys/region.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 266
admins/fd-mall-backstage/js/sys/role.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 180
admins/fd-mall-backstage/js/sys/schedule.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 74
admins/fd-mall-backstage/js/sys/schedule_log.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 106
admins/fd-mall-backstage/js/sys/smslog.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 303
admins/fd-mall-backstage/js/sys/user.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 188
admins/fd-mall-backstage/js/test/iviewDemo.js


+ 2 - 47
admins/zl-mall-backstage/WEB-INF/page/shop/goods.html

@@ -3,50 +3,7 @@
 <head>
     <title></title>
     #parse("sys/header.html")
-    <style>
-        .upload-list {
-            display: inline-block;
-            width: 60px;
-            height: 60px;
-            text-align: center;
-            line-height: 60px;
-            border: 1px solid transparent;
-            border-radius: 4px;
-            overflow: hidden;
-            background: #fff;
-            position: relative;
-            box-shadow: 0 1px 1px rgba(0, 0, 0, .2);
-            margin-right: 4px;
-        }
-
-        .upload-list img {
-            width: 100%;
-            height: 100%;
-        }
-
-        .upload-list-cover {
-            display: none;
-            position: absolute;
-            top: 0;
-            bottom: 0;
-            left: 0;
-            right: 0;
-            background: rgba(0, 0, 0, .6);
-        }
-
-        .upload-list:hover .upload-list-cover {
-            display: block;
-        }
-
-        .upload-list-cover i {
-            color: #fff;
-            font-size: 20px;
-            cursor: pointer;
-            margin: 0 2px;
-        }
-
-    </style>
-
+    <link rel="stylesheet" href="${rc.contextPath}/css/goods.css">
 
     <!-- <script type="text/javascript" src = "https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script> -->
 </head>
@@ -85,8 +42,6 @@
                 #end
                 <i-button type="primary" @click="enSale"><i class="fa fa-hand-o-up"></i>&nbsp;上架</i-button>
                 <i-button type="dashed" @click="unSale"><i class="fa fa-hand-o-down"></i>&nbsp;下架</i-button>
-                <i-button type="warning" @click="openPro"><i class="fa fa-pencil-square-o"></i>&nbsp;产品</i-button>
-                <i-button type="warning" @click="openSpe"><i class="fa fa-pencil-square-o"></i>&nbsp;规格</i-button>
             </div>
         </Row>
         <table id="jqGrid"></table>
@@ -198,7 +153,7 @@
                                 <div class="">
                                     <div class="t-header">
                                         <ul class="h-val">
-                                            <li v-for="(item,i) in ggname">{{item.name}}</li>
+                                            <li v-for="(item, i) in ggname" >{{item.name}}</li>
                                         </ul>
                                         <ul>
                                             <li v-for="(item,i) in ggheader">

+ 22 - 21
admins/zl-mall-backstage/WEB-INF/page/sys/user.html

@@ -34,27 +34,6 @@
         <div id="jqGridPager"></div>
     </div>
 
-    <Modal
-        v-model="modal1"
-        title="添加店铺关联"
-        @on-ok="ok"
-        @on-cancel="cancel">
-        <!-- 
-           <CheckboxGroup v-model="social" @on-change="checkAllGroupChange">
-            <Checkbox  :label="brand.name" v-for="(brand,idx) in brandsList" :key='idx'>
-                <span>{{brand.name}}</span>
-            </Checkbox>
-        </CheckboxGroup> -->
-
-        <div class="checkbox-item" @click="clickCheck(brand,idx)" v-for="(brand,idx) in brandsList" :key='idx'>
-            <span class="checkbox-kuang"></span>
-            <img v-if="brand.checked" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/images/fdsq-click.png" alt="">
-            <span>{{brand.name}}</span>
-        </div>
-        
-        <Page style="margin-top: 20px;" :total="brandTotal" @on-change="pageChange" :page-size='brandPerPage' :current='brandPage'  size="small" />
-    </Modal>
-
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
         <i-form ref="formValidate" :model="user" :rules="ruleValidate" :label-width="80">
@@ -115,6 +94,28 @@
            </div>
         </i-form>
     </Card>
+
+    <Modal
+    v-model="modal1"
+    title="添加店铺关联"
+    @on-ok="ok"
+    @on-cancel="cancel">
+    <!-- 
+       <CheckboxGroup v-model="social" @on-change="checkAllGroupChange">
+        <Checkbox  :label="brand.name" v-for="(brand,idx) in brandsList" :key='idx'>
+            <span>{{brand.name}}</span>
+        </Checkbox>
+    </CheckboxGroup> -->
+
+    <div class="checkbox-item" @click="clickCheck(brand,idx)" v-for="(brand,idx) in brandsList" :key='idx'>
+        <span class="checkbox-kuang"></span>
+        <img v-if="brand.checked" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/images/fdsq-click.png" alt="">
+        <span>{{brand.name}}</span>
+    </div>
+    
+    <Page style="margin-top: 20px;" :total="brandTotal" @on-change="pageChange" :page-size='brandPerPage' :current='brandPage'  size="small" />
+</Modal>
+
 </div>
 <!-- 选择部门 -->
 <div id="deptLayer" style="display: none;padding:10px;">

+ 47 - 0
admins/zl-mall-backstage/css/goods.css

@@ -0,0 +1,47 @@
+.ip-layout {
+  flex: 1;
+}
+.upload-list {
+  display: inline-block;
+  width: 60px;
+  height: 60px;
+  text-align: center;
+  line-height: 60px;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  overflow: hidden;
+  background: #fff;
+  position: relative;
+  box-shadow: 0 1px 1px rgba(0, 0, 0, .2);
+  margin-right: 4px;
+}
+
+.upload-list img {
+  width: 100%;
+  height: 100%;
+}
+
+.upload-list-cover {
+  display: none;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  background: rgba(0, 0, 0, .6);
+}
+
+.upload-list:hover .upload-list-cover {
+  display: block;
+}
+
+.upload-list-cover i {
+  color: #fff;
+  font-size: 20px;
+  cursor: pointer;
+  margin: 0 2px;
+}
+.h-val li {
+  flex: 1;
+  text-align: center;
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 14 - 289
admins/zl-mall-backstage/index.html


+ 402 - 402
admins/zl-mall-backstage/js/common.js

@@ -1,502 +1,502 @@
 //iframe自适应
 $(window).on('resize', function () {
-    var $content = $('#mainApp');
-    $content.height($(this).height());
-    $content.find('iframe').each(function () {
-        $(this).height($content.height() - 150);
-    });
-    var $rrapp = $('#rrapp').parent();
-    $rrapp.height($(this).height());
-    $(this).height($content.height());
+  var $content = $('#mainApp');
+  $content.height($(this).height());
+  $content.find('iframe').each(function () {
+      $(this).height($content.height() - 150);
+  });
+  var $rrapp = $('#rrapp').parent();
+  $rrapp.height($(this).height());
+  $(this).height($content.height());
 }).resize();
 
 $.ajaxSetup({
-    dataType: "json",
-    cache: false
+  dataType: "json",
+  cache: false
 });
 
 //重写alert
 window.alert = function (msg, callback) {
-    // parent.layer.alert 弹出在iframe外的页面。
-    layer.alert(msg, function (index) {
-        layer.close(index);
-        if (typeof(callback) === "function") {
-            callback("ok");
-        }
-    });
+  // parent.layer.alert 弹出在iframe外的页面。
+  layer.alert(msg, function (index) {
+      layer.close(index);
+      if (typeof(callback) === "function") {
+          callback("ok");
+      }
+  });
 };
 
 //重写confirm式样框
 window.confirm = function (msg, callback) {
-    //如果没有定义回调函数,直接返回true
-    if (!callback) {
-        return true;
-    }
-    layer.confirm(msg, {
-            skin: 'layui-layer-molv', btn: ['确定', '取消']
-        },
-        function () {//确定事件
-            if (typeof(callback) === "function") {
-                callback("ok");
-            }
-        });
+  //如果没有定义回调函数,直接返回true
+  if (!callback) {
+      return true;
+  }
+  layer.confirm(msg, {
+          skin: 'layui-layer-molv', btn: ['确定', '取消']
+      },
+      function () {//确定事件
+          if (typeof(callback) === "function") {
+              callback("ok");
+          }
+      });
 };
 
 /**
- *
- * @param options
- */
+*
+* @param options
+*/
 window.openWindow = function (options) {
-    let globalParams = {
-        skin: 'layui-layer-molv',//皮肤
-        title: '标题',//标题
-        type: 1,//打开窗口的类型 1:html里的div内容 2:iframe方式,页面的路径
-        closeBtn: 1, //关闭按钮的形状 0、1
-        anim: -1,
-        isOutAnim: false,
-        shadeClose: false,
-        area: ['90%', '95%'],
-        content: '',
-        end:'',
-        btn: false, //按钮
-        top: false //窗口弹出是否在iframe上层
-    };
-    globalParams = $.extend(globalParams, options);
-    if (globalParams.top) {
-        parent.layer.open(globalParams);
-    } else {
-        layer.open(globalParams);
-    }
+  let globalParams = {
+      skin: 'layui-layer-molv',//皮肤
+      title: '标题',//标题
+      type: 1,//打开窗口的类型 1:html里的div内容 2:iframe方式,页面的路径
+      closeBtn: 1, //关闭按钮的形状 0、1
+      anim: -1,
+      isOutAnim: false,
+      shadeClose: false,
+      area: ['90%', '95%'],
+      content: '',
+      end:'',
+      btn: false, //按钮
+      top: false //窗口弹出是否在iframe上层
+  };
+  globalParams = $.extend(globalParams, options);
+  if (globalParams.top) {
+      parent.layer.open(globalParams);
+  } else {
+      layer.open(globalParams);
+  }
 };
 
 window.formClose = function(){
-    var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
-    console.log(index)
-    //layer.msg(index);
-    parent.layer.close(index); //再执行关闭   
+  var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
+  console.log(index)
+  //layer.msg(index);
+  parent.layer.close(index); //再执行关闭   
 }
 
 //获取选中的数据
 function getSelectedRowData(gridId) {
-    var id = getSelectedRow(gridId);
-    return $(gridId).jqGrid('getRowData', id);
+  var id = getSelectedRow(gridId);
+  return $(gridId).jqGrid('getRowData', id);
 }
 
 //选择一条记录
 function getSelectedRow(gridId) {
-    var grid = $(gridId);
-    var rowKey = grid.getGridParam("selrow");
-    if (!rowKey) {
-        // iview.Message.error("请选择一条记录");
-        alert("请选择一条记录");
-        return;
-    }
-
-    var selectedIDs = grid.getGridParam("selarrrow");
-    if (selectedIDs.length > 1) {
-        alert("只能选择一条记录");
-
-        return;
-    }
-
-    return selectedIDs[0];
+  var grid = $(gridId);
+  var rowKey = grid.getGridParam("selrow");
+  if (!rowKey) {
+      // iview.Message.error("请选择一条记录");
+      alert("请选择一条记录");
+      return;
+  }
+
+  var selectedIDs = grid.getGridParam("selarrrow");
+  if (selectedIDs.length > 1) {
+      alert("只能选择一条记录");
+
+      return;
+  }
+
+  return selectedIDs[0];
 };
 
 //选择多条记录
 function getSelectedRows(gridId) {
-    var grid = $(gridId);
-    var rowKey = grid.getGridParam("selrow");
-    if (!rowKey) {
-        alert("请选择一条记录");
-        return;
-    }
-    return grid.getGridParam("selarrrow");
+  var grid = $(gridId);
+  var rowKey = grid.getGridParam("selrow");
+  if (!rowKey) {
+      alert("请选择一条记录");
+      return;
+  }
+  return grid.getGridParam("selarrrow");
 };
 
 /**
- * 预览图片
- * @param url
- */
+* 预览图片
+* @param url
+*/
 function eyeImage(url) {
-    if (!url) {
-        iview.Message.error('请先上传图片');
-        return;
-    }
-    layer.photos({
-        photos: {
-            "title": "预览", //相册标题
-            "start": 0, //初始显示的图片序号,默认0
-            "data": [   //相册包含的图片,数组格式
-                {
-                    "src": url //原图地址
-                }
-            ]
-        }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
-    });
+  if (!url) {
+      iview.Message.error('请先上传图片');
+      return;
+  }
+  layer.photos({
+      photos: {
+          "title": "预览", //相册标题
+          "start": 0, //初始显示的图片序号,默认0
+          "data": [   //相册包含的图片,数组格式
+              {
+                  "src": url //原图地址
+              }
+          ]
+      }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
+  });
 };
 
 /**
- * 预览图片
- * @param data
- */
+* 预览图片
+* @param data
+*/
 function eyeImages(data) {
-    layer.photos({
-        photos: {
-            "title": "预览", //相册标题
-            "start": 0, //初始显示的图片序号,默认0
-            "data": data
-        }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
-    });
+  layer.photos({
+      photos: {
+          "title": "预览", //相册标题
+          "start": 0, //初始显示的图片序号,默认0
+          "data": data
+      }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
+  });
 };
 
 /**
- * 重置验证
- * @param vue vue对象
- * @param name
- */
+* 重置验证
+* @param vue vue对象
+* @param name
+*/
 function handleResetForm(vue, name) {
-    vue.$refs[name].resetFields();
+  vue.$refs[name].resetFields();
 };
 
 /**
- * 表单验证
- * @param vue vue对象
- * @param name 验证规则
- * @param callback 验证通过回调函数
- */
+* 表单验证
+* @param vue vue对象
+* @param name 验证规则
+* @param callback 验证通过回调函数
+*/
 function handleSubmitValidate(vue, name, callback) {
-    vue.$refs[name].validate(function (valid) {
-        if (valid) {
-            callback();
-        } else {
-            iview.Message.error('请填写完整信息!');
-            return false;
-        }
-    })
+  vue.$refs[name].validate(function (valid) {
+      if (valid) {
+          callback();
+      } else {
+          iview.Message.error('请填写完整信息!');
+          return false;
+      }
+  })
 };
 
 /**
- * 翻译日期
- * @param date
- * @param fmt
- * @returns {*}
- */
+* 翻译日期
+* @param date
+* @param fmt
+* @returns {*}
+*/
 function transDate(date, fmt) {
-    if (date) {
-        if (typeof date == 'number') {
-            return new Date(date).dateFormat(fmt);
-        } else {
-            try {
-                return new Date(date.replace('-', '/').replace('-', '/')).dateFormat(fmt);
-            } catch (e) {
-                return '-';
-            }
-        }
-    } else {
-        return '-';
-    }
+  if (date) {
+      if (typeof date == 'number') {
+          return new Date(date).dateFormat(fmt);
+      } else {
+          try {
+              return new Date(date.replace('-', '/').replace('-', '/')).dateFormat(fmt);
+          } catch (e) {
+              return '-';
+          }
+      }
+  } else {
+      return '-';
+  }
 };
 
 /**
- * 翻译图片
- * @param url
- * @returns {*}
- */
+* 翻译图片
+* @param url
+* @returns {*}
+*/
 function transImg(url,width,height) {
 
-    if (url) {
-        return '<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
-    } else {
-        return '-';
-    }
+  if (url) {
+      return '<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
+  } else {
+      return '-';
+  }
 };
 
 /**
- * 翻译媒体文件
- * @param url
- * @returns {*}
- */
+* 翻译媒体文件
+* @param url
+* @returns {*}
+*/
 function transMedia(url,width,height) {
-    let video=['mp4','rmvb','rm','avi']
-    let audio=['mp3','wav','flac','ape']
-    let img = ['png','bmp','gif','jpg','jpeg']
-
-    if (url) {
-        let hz = url.split('.').pop().toLowerCase();
-        let type = '-'
-        console.log(hz)
-
-        video.forEach(function (v){
-            if (v===hz.toLowerCase()) {
-                type='<img width="60px" height="60px" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/wxmall/images/video-logo.png">'
-            }
-        })
-
-        audio.forEach(function (a){
-            if (a===hz.toLowerCase()) {
-                type='<span>'+url+'</span>'
-            }
-        })
-
-        img.forEach(function (i){
-            if (i===hz.toLowerCase()) {
-                type='<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
-            }
-        })
-
-        return type;
-    } else {
-        return '-';
-    }
+  let video=['mp4','rmvb','rm','avi']
+  let audio=['mp3','wav','flac','ape']
+  let img = ['png','bmp','gif','jpg','jpeg']
+
+  if (url) {
+      let hz = url.split('.').pop().toLowerCase();
+      let type = '-'
+      console.log(hz)
+
+      video.forEach(function (v){
+          if (v===hz.toLowerCase()) {
+              type='<img width="60px" height="60px" src="http://4d-tjw.oss-cn-shenzhen.aliyuncs.com/wxmall/images/video-logo.png">'
+          }
+      })
+
+      audio.forEach(function (a){
+          if (a===hz.toLowerCase()) {
+              type='<span>'+url+'</span>'
+          }
+      })
+
+      img.forEach(function (i){
+          if (i===hz.toLowerCase()) {
+              type='<img width="'+(width||50)+'px" height="'+(height||50)+'px" src="' + url + '">';
+          }
+      })
+
+      return type;
+  } else {
+      return '-';
+  }
 };
 
 
 /**
- * 翻译性别
- * @param gender
- * @returns {*}
- */
+* 翻译性别
+* @param gender
+* @returns {*}
+*/
 function transGender(gender) {
-    if (gender == 1) {
-        return '男';
-    }
-    if (gender == 2) {
-        return '女';
-    }
-    return '未知';
+  if (gender == 1) {
+      return '男';
+  }
+  if (gender == 2) {
+      return '女';
+  }
+  return '未知';
 };
 
 function transIsNot(value) {
-    if (value == 1) {
-        return '<span class="label label-success">是</span>';
-    }
-    return '<span class="label label-danger">否</span>';
+  if (value == 1) {
+      return '<span class="label label-success">是</span>';
+  }
+  return '<span class="label label-danger">否</span>';
 };
 
 function transStatus(value) {
-    if (value == 1) {
-        return '<span class="label label-success">有效</span>';
-    }
-    return '<span class="label label-danger">无效</span>';
+  if (value == 1) {
+      return '<span class="label label-success">有效</span>';
+  }
+  return '<span class="label label-danger">无效</span>';
 };
 
 function toUrl(href) {
-    window.location.href = href;
+  window.location.href = href;
 }
 
 function dialogLoading(flag) {
-    if (flag) {
-        top.layer.load(0, {
-            shade: [0.5, '#fff'],
-            time: 5000,
-            content: '处理中...'
-        });
-    } else {
-        top.layer.closeAll('loading');
-    }
+  if (flag) {
+      top.layer.load(0, {
+          shade: [0.5, '#fff'],
+          time: 5000,
+          content: '处理中...'
+      });
+  } else {
+      top.layer.closeAll('loading');
+  }
 }
 
 /**
- * 用JS获取地址栏参数的方法
- * 使用示例 location.href = http://localhost:8080/index.html?id=123
- *          getQueryString('id') --> 123;
- * @param name
- * @returns {null}
- * @constructor
- */
+* 用JS获取地址栏参数的方法
+* 使用示例 location.href = http://localhost:8080/index.html?id=123
+*          getQueryString('id') --> 123;
+* @param name
+* @returns {null}
+* @constructor
+*/
 function getQueryString(name) {
-    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-    var r = window.location.search.substr(1).match(reg);
-    if (r != null) {
-        return unescape(r[2]);
-    }
-    return null;
+  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+  var r = window.location.search.substr(1).match(reg);
+  if (r != null) {
+      return unescape(r[2]);
+  }
+  return null;
 }
 
 /**
- * 主要功能:导出功能公共方法
- *
- * @param formId 表单ID,带'#'号,如'#formId'
- * @param url 请求后台地址
- * @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
- */
+* 主要功能:导出功能公共方法
+*
+* @param formId 表单ID,带'#'号,如'#formId'
+* @param url 请求后台地址
+* @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
+*/
 function exportFile(formId, url, extraObj) {
-    var form = $('<form>'); //定义一个form表单
-    form.attr('style', 'display: none');
-    form.attr('target', '');
-    form.attr('method', 'post');
-    form.attr('action', url);
-
-    var json = getJson(formId);
-    if (typeof extraObj != 'undefined') {
-        json = $.extend(json, extraObj);
-    }
-
-    $('body').append(form);//将表单放置在web中
-    for (var i in json) {
-        var input = $('<input>');
-        input.attr('type', 'hidden');
-        input.attr('name', i);
-        input.attr('value', json[i]);
-        form.append(input);
-    }
-
-    form.submit();//表单提交
+  var form = $('<form>'); //定义一个form表单
+  form.attr('style', 'display: none');
+  form.attr('target', '');
+  form.attr('method', 'post');
+  form.attr('action', url);
+
+  var json = getJson(formId);
+  if (typeof extraObj != 'undefined') {
+      json = $.extend(json, extraObj);
+  }
+
+  $('body').append(form);//将表单放置在web中
+  for (var i in json) {
+      var input = $('<input>');
+      input.attr('type', 'hidden');
+      input.attr('name', i);
+      input.attr('value', json[i]);
+      form.append(input);
+  }
+
+  form.submit();//表单提交
 }
 
 /**
- * 将form转化为json
- * @param form 传入 form表单的dom $("#baseFm")
- * @returns {___anonymous49_50}  序列化的键值对 {key:value,key2:value2,....}
- */
+* 将form转化为json
+* @param form 传入 form表单的dom $("#baseFm")
+* @returns {___anonymous49_50}  序列化的键值对 {key:value,key2:value2,....}
+*/
 function getJson(form) {
-    var o = {};
-    var $form = $(form).find('input,textarea,select');
-    $.each($form, function (i, item) {
-        var $this = $(item);
-
-        if ($this.attr("type") == 'radio') {
-            o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
-            return true;
-        }
-        o[$this.attr("name")] = $this.val();
-    })
-    return o;
+  var o = {};
+  var $form = $(form).find('input,textarea,select');
+  $.each($form, function (i, item) {
+      var $this = $(item);
+
+      if ($this.attr("type") == 'radio') {
+          o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
+          return true;
+      }
+      o[$this.attr("name")] = $this.val();
+  })
+  return o;
 }
 
 /**
- *
- Ajax.request({
-        url: '', //访问路径
-        dataType: 'json', //访问类型 'json','html'等
-        params: getJson(form),
-        resultMsg: true, false, //是否需要提示信息
-        type: 'GET',//,'get','post'
-        beforeSubmit: function (data) {},//提交前处理
-        successCallback: function (data) {} //提交后处理
-    });
- */
+*
+Ajax.request({
+      url: '', //访问路径
+      dataType: 'json', //访问类型 'json','html'等
+      params: getJson(form),
+      resultMsg: true, false, //是否需要提示信息
+      type: 'GET',//,'get','post'
+      beforeSubmit: function (data) {},//提交前处理
+      successCallback: function (data) {} //提交后处理
+  });
+*/
 Ajax = function () {
 
-    //var opt = { type:'GET',dataType:'json',resultMsg:true };
-    function request(opt) {
-
-        //添加遮罩层
-        dialogLoading(true);
-
-        if (typeof opt.cache == 'undefined') {
-            opt.cache = false;
-        }
-
-        if (typeof opt == 'undefined') {
-            return;
-        }
-        //opt = $.extend(opt, p);
-        if (typeof(opt.type) == 'undefined') {
-            opt.type = 'GET'
-        }
-        if (typeof(opt.async) == 'undefined') {
-            opt.async = false;
-        }
-        if (typeof(opt.dataType) == 'undefined') {
-            opt.dataType = 'json'
-        }
-        if (typeof(opt.contentType) == 'undefined') {
-            opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
-        }
-        if (typeof(opt.params) == 'undefined' || opt.params == null) {
-            opt.params = {};
-        }
-        opt.params.date = new Date();
-        if (typeof(opt.beforeSubmit) != 'undefined') {
-            var flag = opt.beforeSubmit(opt);
-            if (!flag) {
-                return;
-            }
-        }
-
-        if (typeof(opt.resultMsg) == 'undefined') {
-            opt.resultMsg = true;
-        }
-
-        $.ajax({
-            async: opt.async,
-            url: opt.url,
-            dataType: opt.dataType,
-            contentType: opt.contentType,
-            data: opt.params,
-            crossDomain: opt.crossDomain || false,
-            type: opt.type,
-            cache: opt.cache,
-            success: function (data) {
-                //关闭遮罩
-                dialogLoading(false);
-
-                if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
-                    var result = {code: null};
-                    if (typeof data == 'string') {
-                        result = eval('(' + data + ')')
-                    } else if (typeof data == 'object') {
-                        result = data;
-                    }
-
-                    if (opt.resultMsg && result.msg) {
-                        layer.alert(result.msg, {icon: 5});
-                    }
-                    return;
-                }
-                if (opt.resultMsg && data.msg) {
-                    layer.alert(data.msg, {icon: 6}, function () {
-                        if (typeof(opt.successCallback) != 'undefined') {
-                            opt.successCallback(data);
-                        }
-                    });
-                    return;
-                }
-
-                if (typeof(opt.successCallback) != 'undefined') {
-                    opt.successCallback(data);
-                }
-            },
-            error: function () {
-                //关闭遮罩
-                dialogLoading(false);
-                layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
-            }
-        });
-    }
-
-    return {
-        /**
-         * Ajax调用request
-         */
-        request: request
-    };
+  //var opt = { type:'GET',dataType:'json',resultMsg:true };
+  function request(opt) {
+
+      //添加遮罩层
+      dialogLoading(true);
+
+      if (typeof opt.cache == 'undefined') {
+          opt.cache = false;
+      }
+
+      if (typeof opt == 'undefined') {
+          return;
+      }
+      //opt = $.extend(opt, p);
+      if (typeof(opt.type) == 'undefined') {
+          opt.type = 'GET'
+      }
+      if (typeof(opt.async) == 'undefined') {
+          opt.async = false;
+      }
+      if (typeof(opt.dataType) == 'undefined') {
+          opt.dataType = 'json'
+      }
+      if (typeof(opt.contentType) == 'undefined') {
+          opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
+      }
+      if (typeof(opt.params) == 'undefined' || opt.params == null) {
+          opt.params = {};
+      }
+      opt.params.date = new Date();
+      if (typeof(opt.beforeSubmit) != 'undefined') {
+          var flag = opt.beforeSubmit(opt);
+          if (!flag) {
+              return;
+          }
+      }
+
+      if (typeof(opt.resultMsg) == 'undefined') {
+          opt.resultMsg = true;
+      }
+
+      $.ajax({
+          async: opt.async,
+          url: opt.url,
+          dataType: opt.dataType,
+          contentType: opt.contentType,
+          data: opt.params,
+          crossDomain: opt.crossDomain || false,
+          type: opt.type,
+          cache: opt.cache,
+          success: function (data) {
+              //关闭遮罩
+              dialogLoading(false);
+
+              if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
+                  var result = {code: null};
+                  if (typeof data == 'string') {
+                      result = eval('(' + data + ')')
+                  } else if (typeof data == 'object') {
+                      result = data;
+                  }
+
+                  if (opt.resultMsg && result.msg) {
+                      layer.alert(result.msg, {icon: 5});
+                  }
+                  return;
+              }
+              if (opt.resultMsg && data.msg) {
+                  layer.alert(data.msg, {icon: 6}, function () {
+                      if (typeof(opt.successCallback) != 'undefined') {
+                          opt.successCallback(data);
+                      }
+                  });
+                  return;
+              }
+
+              if (typeof(opt.successCallback) != 'undefined') {
+                  opt.successCallback(data);
+              }
+          },
+          error: function () {
+              //关闭遮罩
+              dialogLoading(false);
+              layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
+          }
+      });
+  }
+
+  return {
+      /**
+       * Ajax调用request
+       */
+      request: request
+  };
 }();
 
 /**
- * 缓存字典数据
- * 使用方法:字典 调用方式为在table的列或者columns 的列中 formatter:function(value){ return Dict.getDictValue(groupCode,value);}
- * 其中value为类型code  返回值为类型名称
- */
+* 缓存字典数据
+* 使用方法:字典 调用方式为在table的列或者columns 的列中 formatter:function(value){ return Dict.getDictValue(groupCode,value);}
+* 其中value为类型code  返回值为类型名称
+*/
 Dict = function () {
-    return {
-        getDictValue: function (groupCode, dictKey) {
-            var dictValue = '-';
-            Ajax.request({
-                url: '/sys/dict/getDictValue',
-                dataType: 'json',
-                params: {
-                    groupCode: groupCode, dictKey: dictKey
-                },
-                cache: true,
-                async: false,
-                type: 'GET',
-                successCallback: function (data) {
-                    dictValue = data.dictValue;
-                }
-            });
-            return dictValue;
-        }
-    };
+  return {
+      getDictValue: function (groupCode, dictKey) {
+          var dictValue = '-';
+          Ajax.request({
+              url: '/sys/dict/getDictValue',
+              dataType: 'json',
+              params: {
+                  groupCode: groupCode, dictKey: dictKey
+              },
+              cache: true,
+              async: false,
+              type: 'GET',
+              successCallback: function (data) {
+                  dictValue = data.dictValue;
+              }
+          });
+          return dictValue;
+      }
+  };
 }();

+ 119 - 119
admins/zl-mall-backstage/js/navtab.js

@@ -1,121 +1,121 @@
 layui.define(['element'], function (exports) {
-    var element = layui.element(),
-        $ = layui.jquery,
-        layer = parent.layer === undefined ? layui.layer : parent.layer,
-        module_name = 'navtab',
-        globalTabIdIndex = 0,
-        LarryTab = function () {
-            this.config = {
-                elem: undefined,
-                closed: true
-            };
-        };
-    var ELEM = {};
-    /**
-     * [参数设置 options]
-     */
-    LarryTab.prototype.set = function (options) {
-        var _this = this;
-        $.extend(true, _this.config, options);
-        return _this;
-    };
-    /**
-     * [init 对象初始化]
-     * @return {[type]} [返回对象初始化结果]
-     */
-    LarryTab.prototype.init = function () {
-        var _this = this;
-        var _config = _this.config;
-        if (typeof(_config.elem) !== 'string' && typeof(_config.elem) !== 'object') {
-            layer.alert('Tab选项卡错误提示: elem参数未定义或设置出错,具体设置格式请参考文档API.');
-        }
-        var $container;
-        if (typeof(_config.elem) === 'string') {
-            $container = $('' + _config.elem + '');
-            //console.log($container);
-        }
-        if (typeof(_config.elem) === 'object') {
-            $container = _config.elem;
-        }
-        if ($container.length === 0) {
-            layer.alert('Tab选项卡错误提示:找不到elem参数配置的容器,请检查.');
-        }
-        var filter = $container.attr('lay-filter');
-        if (filter === undefined || filter === '') {
-            layer.alert('Tab选项卡错误提示:请为elem容器设置一个lay-filter过滤器');
-        }
-        _config.elem = $container;
-        ELEM.titleBox = $container.children('ul.layui-tab-title');
-        ELEM.contentBox = $container.children('div.layui-tab-content');
-        ELEM.tabFilter = filter;
-        return _this;
-    };
-    /**
-     * [exists 在layui-tab中检查对应layui-tab-title是否存在,如果存在则返回索引值,不存在返回-1]
-     * @param  {[type]} title [description]
-     * @return {[type]}       [description]
-     */
-    LarryTab.prototype.exists = function (title) {
-        var _this = ELEM.titleBox === undefined ? this.init() : this,
-            tabIndex = -1;
-        ELEM.titleBox.find('li').each(function (i, e) {
-            var $em = $(this).children('em');
-            if ($em.text() === title) {
-                tabIndex = i;
-            }
-            ;
-        });
-        return tabIndex;
-    };
-    /**
-     * [tabAdd 增加选项卡,如果已存在则增加this样式]
-     * @param  {[type]} data [description]
-     * @return {[type]}      [description]
-     */
-    LarryTab.prototype.tabAdd = function (data) {
-        var _this = this;
-        var tabIndex = _this.exists(data.title);
-        // 若不存在
-        if (tabIndex === -1) {
-            globalTabIdIndex++;
-            var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '" class="larry-iframe"></iframe>';
-            var title = '';
-            // 若icon有定义
-            if (data.icon !== undefined) {
-                if (data.icon.indexOf('fa-') !== -1) {
-                    title += '<i class="' + data.icon + '"></i>';
-                } else {
-                    title += '<i class="layui-icon ">' + data.icon + '</i>';
-                }
-            }
-            title += '<em>' + data.title + '</em>';
-            if (_this.config.closed) {
-                title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + globalTabIdIndex + '">&#x1006;</i>';
-            }
-            //添加tab
-            element.tabAdd(ELEM.tabFilter, {
-                title: title,
-                content: content
-            });
-            //iframe 自适应
-            ELEM.contentBox.find('iframe[data-id=' + globalTabIdIndex + ']').each(function () {
-                $(this).height(ELEM.contentBox.height());
-            });
-            if (_this.config.closed) {
-                //监听关闭事件
-                ELEM.titleBox.find('li').children('i.layui-tab-close[data-id=' + globalTabIdIndex + ']').on('click', function () {
-                    element.tabDelete(ELEM.tabFilter, $(this).parent('li').index()).init();
-                });
-            }
-            ;
-            //切换到当前打开的选项卡
-            element.tabChange(ELEM.tabFilter, ELEM.titleBox.find('li').length - 1);
-        } else {
-            element.tabChange(ELEM.tabFilter, tabIndex);
-        }
-    };
-    var navtab = new LarryTab();
-    exports(module_name, function (options) {
-        return navtab.set(options);
-    });
+  var element = layui.element(),
+      $ = layui.jquery,
+      layer = parent.layer === undefined ? layui.layer : parent.layer,
+      module_name = 'navtab',
+      globalTabIdIndex = 0,
+      LarryTab = function () {
+          this.config = {
+              elem: undefined,
+              closed: true
+          };
+      };
+  var ELEM = {};
+  /**
+   * [参数设置 options]
+   */
+  LarryTab.prototype.set = function (options) {
+      var _this = this;
+      $.extend(true, _this.config, options);
+      return _this;
+  };
+  /**
+   * [init 对象初始化]
+   * @return {[type]} [返回对象初始化结果]
+   */
+  LarryTab.prototype.init = function () {
+      var _this = this;
+      var _config = _this.config;
+      if (typeof(_config.elem) !== 'string' && typeof(_config.elem) !== 'object') {
+          layer.alert('Tab选项卡错误提示: elem参数未定义或设置出错,具体设置格式请参考文档API.');
+      }
+      var $container;
+      if (typeof(_config.elem) === 'string') {
+          $container = $('' + _config.elem + '');
+          //console.log($container);
+      }
+      if (typeof(_config.elem) === 'object') {
+          $container = _config.elem;
+      }
+      if ($container.length === 0) {
+          layer.alert('Tab选项卡错误提示:找不到elem参数配置的容器,请检查.');
+      }
+      var filter = $container.attr('lay-filter');
+      if (filter === undefined || filter === '') {
+          layer.alert('Tab选项卡错误提示:请为elem容器设置一个lay-filter过滤器');
+      }
+      _config.elem = $container;
+      ELEM.titleBox = $container.children('ul.layui-tab-title');
+      ELEM.contentBox = $container.children('div.layui-tab-content');
+      ELEM.tabFilter = filter;
+      return _this;
+  };
+  /**
+   * [exists 在layui-tab中检查对应layui-tab-title是否存在,如果存在则返回索引值,不存在返回-1]
+   * @param  {[type]} title [description]
+   * @return {[type]}       [description]
+   */
+  LarryTab.prototype.exists = function (title) {
+      var _this = ELEM.titleBox === undefined ? this.init() : this,
+          tabIndex = -1;
+      ELEM.titleBox.find('li').each(function (i, e) {
+          var $em = $(this).children('em');
+          if ($em.text() === title) {
+              tabIndex = i;
+          }
+          ;
+      });
+      return tabIndex;
+  };
+  /**
+   * [tabAdd 增加选项卡,如果已存在则增加this样式]
+   * @param  {[type]} data [description]
+   * @return {[type]}      [description]
+   */
+  LarryTab.prototype.tabAdd = function (data) {
+      var _this = this;
+      var tabIndex = _this.exists(data.title);
+      // 若不存在
+      if (tabIndex === -1) {
+          globalTabIdIndex++;
+          var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '" class="larry-iframe"></iframe>';
+          var title = '';
+          // 若icon有定义
+          if (data.icon !== undefined) {
+              if (data.icon.indexOf('fa-') !== -1) {
+                  title += '<i class="' + data.icon + '"></i>';
+              } else {
+                  title += '<i class="layui-icon ">' + data.icon + '</i>';
+              }
+          }
+          title += '<em>' + data.title + '</em>';
+          if (_this.config.closed) {
+              title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + globalTabIdIndex + '">&#x1006;</i>';
+          }
+          //添加tab
+          element.tabAdd(ELEM.tabFilter, {
+              title: title,
+              content: content
+          });
+          //iframe 自适应
+          ELEM.contentBox.find('iframe[data-id=' + globalTabIdIndex + ']').each(function () {
+              $(this).height(ELEM.contentBox.height());
+          });
+          if (_this.config.closed) {
+              //监听关闭事件
+              ELEM.titleBox.find('li').children('i.layui-tab-close[data-id=' + globalTabIdIndex + ']').on('click', function () {
+                  element.tabDelete(ELEM.tabFilter, $(this).parent('li').index()).init();
+              });
+          }
+          ;
+          //切换到当前打开的选项卡
+          element.tabChange(ELEM.tabFilter, ELEM.titleBox.find('li').length - 1);
+      } else {
+          element.tabChange(ELEM.tabFilter, tabIndex);
+      }
+  };
+  var navtab = new LarryTab();
+  exports(module_name, function (options) {
+      return navtab.set(options);
+  });
 });

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 167
admins/zl-mall-backstage/js/shop/ad.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 69
admins/zl-mall-backstage/js/shop/address.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 112
admins/zl-mall-backstage/js/shop/adposition.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 125
admins/zl-mall-backstage/js/shop/attribute.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 134
admins/zl-mall-backstage/js/shop/attributecategory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 258
admins/zl-mall-backstage/js/shop/brand.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 111
admins/zl-mall-backstage/js/shop/cart.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 232
admins/zl-mall-backstage/js/shop/category.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 151
admins/zl-mall-backstage/js/shop/channel.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 100
admins/zl-mall-backstage/js/shop/collect.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 117
admins/zl-mall-backstage/js/shop/comment.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 247
admins/zl-mall-backstage/js/shop/coupon.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 136
admins/zl-mall-backstage/js/shop/feedback.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 97
admins/zl-mall-backstage/js/shop/footprint.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 852
admins/zl-mall-backstage/js/shop/goods.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 110
admins/zl-mall-backstage/js/shop/goodshistory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 432
admins/zl-mall-backstage/js/shop/goodshotspot.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 109
admins/zl-mall-backstage/js/shop/goodsissue.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 183
admins/zl-mall-backstage/js/shop/goodsspecification.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 128
admins/zl-mall-backstage/js/shop/helpissue.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 113
admins/zl-mall-backstage/js/shop/helptype.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 119
admins/zl-mall-backstage/js/shop/keywords.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 409
admins/zl-mall-backstage/js/shop/linkhotspot.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 298
admins/zl-mall-backstage/js/shop/order.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 245
admins/zl-mall-backstage/js/shop/product.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 99
admins/zl-mall-backstage/js/shop/searchhistory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 201
admins/zl-mall-backstage/js/shop/shopuser.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 110
admins/zl-mall-backstage/js/shop/specification.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 184
admins/zl-mall-backstage/js/shop/topic.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 133
admins/zl-mall-backstage/js/shop/topiccategory.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 113
admins/zl-mall-backstage/js/shop/usercoupon.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 112
admins/zl-mall-backstage/js/shop/userlevel.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 114
admins/zl-mall-backstage/js/sys/config.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 196
admins/zl-mall-backstage/js/sys/dept.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 47
admins/zl-mall-backstage/js/sys/generator.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 42
admins/zl-mall-backstage/js/sys/log.js


+ 0 - 0
admins/zl-mall-backstage/js/sys/macro.js


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio