xgwangman 5 жил өмнө
parent
commit
e8be047a17
50 өөрчлөгдсөн 2300 нэмэгдсэн , 249 устгасан
  1. 0 68
      public/index.html
  2. 49 35
      src/App.vue
  3. 274 0
      src/assets/css/common.css
  4. BIN
      src/assets/images/404.png
  5. BIN
      src/assets/images/bg_1.png
  6. 1 0
      src/assets/images/dingdan.svg
  7. BIN
      src/assets/images/frut.jpg
  8. 0 0
      src/assets/images/gailan.svg
  9. 0 0
      src/assets/images/huobban.svg
  10. BIN
      src/assets/images/login_logo.png
  11. BIN
      src/assets/images/logo-white.png
  12. BIN
      src/assets/images/logo.png
  13. 1 0
      src/assets/images/mingxi.svg
  14. 1 0
      src/assets/images/riqi.svg
  15. 1 0
      src/assets/images/shoujihao.svg
  16. BIN
      src/assets/images/u15.png
  17. 1 0
      src/assets/images/xinxi.svg
  18. 1 0
      src/assets/images/yongjin.svg
  19. 1 0
      src/assets/images/youxiang.svg
  20. 8 7
      src/components/LeftMenu.vue
  21. 43 12
      src/components/Login.vue
  22. 1 1
      src/components/pageBar.vue
  23. 24 8
      src/components/tableLists.vue
  24. 9 5
      src/components/uploadFile.vue
  25. 0 31
      src/components/uploadImg.vue
  26. 2 2
      src/components/userSetting.vue
  27. 4 1
      src/main.js
  28. 2 0
      src/plugins/api.js
  29. 26 1
      src/router.js
  30. 0 1
      src/store/admin.js
  31. 30 0
      src/views/error.vue
  32. 1 1
      src/views/example.vue
  33. 158 0
      src/views/order/components/details.vue
  34. 37 0
      src/views/order/manageDetail.vue
  35. 210 0
      src/views/order/manageList.vue
  36. 172 0
      src/views/sales/commissionList.vue
  37. 133 0
      src/views/sales/components/details.vue
  38. 409 0
      src/views/sales/partnerDetail.vue
  39. 162 0
      src/views/sales/partnerList.vue
  40. 168 0
      src/views/sales/settleList.vue
  41. 37 0
      src/views/sales/withdrawDetail.vue
  42. 199 0
      src/views/sales/withdrawList.vue
  43. 16 5
      src/views/system/auth.vue
  44. 1 1
      src/views/system/components/AssignRequest.vue
  45. 15 2
      src/views/system/menu.vue
  46. 2 2
      src/views/system/order/dataExport.vue
  47. 53 42
      src/views/system/request.vue
  48. 16 4
      src/views/system/user.vue
  49. 16 4
      src/views/system/userGroup.vue
  50. 16 16
      vue.config.js

+ 0 - 68
public/index.html

@@ -6,74 +6,6 @@
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title>管理后台</title>
-    <style>
-        #loading {
-            width: 100%;
-            height: 100%;
-            background-color: #FFF;
-            position: absolute;
-            top: 0;
-            left: 0;
-            z-index: 99999;
-        }
-
-        #loading .spinner {
-            margin: 200px auto 0;
-            width: 50px;
-            height: 60px;
-            text-align: center;
-            font-size: 10px;
-        }
-
-        #loading .spinner > div {
-            background-color: #67CF22;
-            height: 100%;
-            width: 6px;
-            display: inline-block;
-            -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
-            animation: stretchdelay 1.2s infinite ease-in-out;
-        }
-
-        #loading .spinner .rect2 {
-            -webkit-animation-delay: -1.1s;
-            animation-delay: -1.1s;
-        }
-
-        #loading .spinner .rect3 {
-            -webkit-animation-delay: -1.0s;
-            animation-delay: -1.0s;
-        }
-
-        #loading .spinner .rect4 {
-            -webkit-animation-delay: -0.9s;
-            animation-delay: -0.9s;
-        }
-
-        #loading .spinner .rect5 {
-            -webkit-animation-delay: -0.8s;
-            animation-delay: -0.8s;
-        }
-
-        @-webkit-keyframes stretchdelay {
-            0%, 40%, 100% {
-                -webkit-transform: scaleY(0.4)
-            }
-            20% {
-                -webkit-transform: scaleY(1.0)
-            }
-        }
-
-        @keyframes stretchdelay {
-            0%, 40%, 100% {
-                transform: scaleY(0.4);
-                -webkit-transform: scaleY(0.4);
-            }
-            20% {
-                transform: scaleY(1.0);
-                -webkit-transform: scaleY(1.0);
-            }
-        }
-    </style>
 </head>
 <body>
 <noscript>

+ 49 - 35
src/App.vue

@@ -2,47 +2,56 @@
     <div id="app">
         <Login v-if="!isLogin"></Login>
         <div class="main layout" v-if="isLogin">
-            <Layout>
-                <Sider class="left-sider" ref="side1" hide-trigger collapsible :collapsed-width="80"
-                       v-model="isCollapsed">
-                    <LeftMenu :menuClass="menuitemClasses" :isCollapsed="isCollapsed"></LeftMenu>
-                </Sider>
-                <Layout :style="{position: 'relative',marginLeft: '200px'}">
-                    <Header style="padding: 0;height:50px;line-height: 50px" class="layout-header-bar">
-                        <!-- <Icon @click.native="collapsedSider" :class="rotateIcon" :style="{margin: '0 10px 0 20px'}"
-                              type="md-menu" size="28"></Icon> -->
-                        <Breadcrumb class="nav">
-                            <BreadcrumbItem v-for="item in nav" :key="item.id">
-                                <Icon :type="item.icon"></Icon>
-                                {{item.name}}
-                            </BreadcrumbItem>
-                        </Breadcrumb>
-                        <Dropdown @on-click="selectDropdown" style="float: right;margin-right: 20px">
-                            <a href="javascript:void(0)">
-                                <Avatar src="" icon="ios-person" size="small" style="marginRight:5px" />
-                                {{user.username}}
-                                <Icon type="ios-arrow-down"></Icon>
-                            </a>
-                            <DropdownMenu slot="list">
-                                <DropdownItem name="userSetting">用户设置</DropdownItem>
-                                <DropdownItem name="logout">退出</DropdownItem>
-                            </DropdownMenu>
-                        </Dropdown>
-                    </Header>
-                    <Content style="margin:10px;background: #fff;padding: 10px">
-                        <router-view/>
-                    </Content>
+            <div style="min-height: calc(100vh - 80px);">
+                <Layout>
+                    <Sider width="220px" class="left-sider" ref="side1" hide-trigger collapsible :collapsed-width="80"
+                        v-model="isCollapsed">
+                        <LeftMenu :menuClass="menuitemClasses" :isCollapsed="isCollapsed"></LeftMenu>
+                    </Sider>
+                    <Layout :style="{position: 'relative',marginLeft: '220px'}">
+                        <Header style="padding: 0;height:50px;line-height: 50px" class="layout-header-bar">
+                            <!-- <Icon @click.native="collapsedSider" :class="rotateIcon" :style="{margin: '0 10px 0 20px'}"
+                                type="md-menu" size="28"></Icon> -->
+                            <Row>
+                                <Col :span="12">
+                                    <Breadcrumb class="nav">
+                                        <!-- <BreadcrumbItem v-for="item in nav" :key="item.id">
+                                            <Icon :type="item.icon"></Icon>
+                                            {{item.name}}
+                                        </BreadcrumbItem> -->
+                                    </Breadcrumb>
+                                </Col>
+                                <Col :span="12">
+                                    <Dropdown @on-click="selectDropdown" style="float: right;margin-right: 20px">
+                                        <a href="javascript:void(0)">
+                                            <Avatar src="" icon="ios-person" size="small" style="marginRight:5px" />
+                                            {{user.username}}
+                                            <Icon type="ios-arrow-down"></Icon>
+                                        </a>
+                                        <DropdownMenu slot="list">
+                                            <DropdownItem name="userSetting">用户设置</DropdownItem>
+                                            <DropdownItem name="logout">退出</DropdownItem>
+                                        </DropdownMenu>
+                                    </Dropdown>
+                                </Col>
+                            </Row>
+                        </Header>
+                        <Content style="margin:15px">
+                            <router-view/>
+                        </Content>
+                    </Layout>
                 </Layout>
-            </Layout>
+            </div>
             <userSetting ref="userSetting"></userSetting>
+            <div class="foot">©2015-2019 <a href="https://www.jianyu360.com/" target="_blank">jianyu360.com</a> 版权所有 | <a href="#" target="_blank">京ICP备14030217号-3</a></div>
         </div>
     </div>
 </template>
 
 <script>
-    import Login from './views/system/components/Login.vue'
-    import LeftMenu from './views/system/components/LeftMenu.vue'
-    import userSetting from './views/system/components/userSetting.vue'
+    import Login from './components/Login.vue'
+    import LeftMenu from './components/LeftMenu.vue'
+    import userSetting from './components/userSetting.vue'
     import {setTitle} from './router'
     import {token} from './helper'
     import _ from 'lodash'
@@ -55,7 +64,7 @@
         },
         data() {
             return {
-                isCollapsed: false,
+                isCollapsed: false
             }
         },
         computed: {
@@ -159,4 +168,9 @@
         vertical-align: middle;
         padding-left: 20px;
     }
+    .foot {
+        margin: 40px 0 20px 220px;
+        text-align: center;
+        color: #aea79f;
+    }
 </style>

+ 274 - 0
src/assets/css/common.css

@@ -0,0 +1,274 @@
+@charset "utf-8";
+/* 初始化 */
+body,
+div,
+ul,
+li,
+ol,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+input,
+textarea,
+select,
+p,
+dl,
+dt,
+dd,
+a,
+img,
+button,
+form,
+table,
+th,
+tr,
+td,
+tbody,
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  margin: 0;
+  padding: 0;
+}
+
+body,
+html {
+  height: 100%;
+  background: #f5f7f9;
+  font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+  font-weight: 500;
+}
+
+* {
+  -webkit-touch-callout: inherit;
+  /*系统默认菜单被禁用*/
+  -webkit-user-select: auto;
+  /*webkit浏览器*/
+  -moz-user-select: auto;
+  /*火狐*/
+  -ms-user-select: auto;
+  /*IE10*/
+  user-select: auto;
+}
+
+input {
+  -webkit-user-select: auto;
+  /*webkit浏览器*/
+}
+
+/*单行溢出显示省略号*/
+.txt-cut {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+/*多行溢出显示省略号*/
+.txt-cut1 {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+}
+
+a {
+  outline: none;
+  text-decoration: none;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+  /*取消链接高亮  */
+  -webkit-tap-highlight-color: transparent;
+}
+
+/* 图片自适应 */
+img {
+  width: 100%;
+  height: auto;
+  width: auto\9;
+  /* ie8 */
+  display: block;
+  border: none;
+  -ms-interpolation-mode: bicubic;
+  /*为了照顾ie图片缩放失真*/
+}
+
+em,
+i,
+strong {
+  font-style: normal;
+}
+
+ul,
+li {
+  list-style-type: none;
+}
+
+/* 清除浮动 */
+.clearfix:before,
+.clearfix:after {
+  content: "";
+  display: table;
+}
+
+.clearfix:after {
+  clear: both;
+  overflow: hidden;
+}
+
+.clearfix {
+  zoom: 1;
+  /* for ie6 & ie7 */
+}
+
+.clear {
+  clear: both;
+  display: block;
+  font-size: 0;
+  height: 0;
+  line-height: 0;
+  overflow: hidden;
+}
+
+#app {
+  height: 100%;
+}
+
+/* 加载中效果 */
+#loading {
+  width: 100%;
+  height: 100%;
+  background-color: #FFF;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 99999;
+}
+
+#loading .spinner {
+  margin: 200px auto 0;
+  width: 50px;
+  height: 60px;
+  text-align: center;
+  font-size: 10px;
+}
+
+#loading .spinner > div {
+  background-color: #67CF22;
+  height: 100%;
+  width: 6px;
+  display: inline-block;
+  -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
+  animation: stretchdelay 1.2s infinite ease-in-out;
+}
+
+#loading .spinner .rect2 {
+  -webkit-animation-delay: -1.1s;
+  animation-delay: -1.1s;
+}
+
+#loading .spinner .rect3 {
+  -webkit-animation-delay: -1.0s;
+  animation-delay: -1.0s;
+}
+
+#loading .spinner .rect4 {
+  -webkit-animation-delay: -0.9s;
+  animation-delay: -0.9s;
+}
+
+#loading .spinner .rect5 {
+  -webkit-animation-delay: -0.8s;
+  animation-delay: -0.8s;
+}
+
+@-webkit-keyframes stretchdelay {
+  0%, 40%, 100% {
+      -webkit-transform: scaleY(0.4)
+  }
+  20% {
+      -webkit-transform: scaleY(1.0)
+  }
+}
+
+@keyframes stretchdelay {
+  0%, 40%, 100% {
+      transform: scaleY(0.4);
+      -webkit-transform: scaleY(0.4);
+  }
+  20% {
+      transform: scaleY(1.0);
+      -webkit-transform: scaleY(1.0);
+  }
+}
+
+/* 滚动条样式 */
+::-webkit-scrollbar {
+  /*滚动条整体样式*/
+  width: 5px;
+  height: 1px;
+}
+::-webkit-scrollbar-thumb {
+  /*滚动条里面小方块*/
+  border-radius: 10px;
+  box-shadow: inset 0 0 5px rgba(105,105,105, 0.8);
+  background: #535353;
+}
+::-webkit-scrollbar-track {
+  /*滚动条里面轨道*/
+  box-shadow: inset 0 0 5px rgba(105,105,105, 0.8);
+  border-radius: 10px;
+  background: #ededed;
+}
+
+/*设置input,textarea框placeholder的样式*/
+input::-webkit-input-placeholder {
+  color: red;
+}
+
+input:-moz-placeholder {
+  color: red;
+}
+
+input::-moz-placeholder {
+  color: red;
+}
+
+input:-ms-input-placeholder {
+  color: red;
+}
+
+textarea::-webkit-input-placeholder {
+  color: #cdcdcd;
+}
+textarea::-moz-placeholder {
+  /* Mozilla Firefox 19+ */
+  color: #cdcdcd;
+}
+textarea:-moz-placeholder {
+  /* Mozilla Firefox 4 to 18 */
+  color: #cdcdcd;
+}
+textarea:-ms-input-placeholder {
+  /* Internet Explorer 10-11 */
+  color: #cdcdcd;
+}

BIN
src/assets/images/404.png


BIN
src/assets/images/bg_1.png


+ 1 - 0
src/assets/images/dingdan.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596157729223" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4568" xmlns:xlink="http://www.w3.org/1999/xlink" width="50" height="50"><defs><style type="text/css"></style></defs><path d="M416.256 896H230.4c-17.408 0-32.256-14.336-32.256-32.256V165.376c0-17.408 14.336-32.256 32.256-32.256h564.736c17.408 0 32.256 14.336 32.256 32.256v250.88c0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256v-250.88c0-52.736-43.008-96.256-96.256-96.256H230.4c-52.736 0-96.256 43.008-96.256 96.256v698.88c0 52.736 43.008 96.256 96.256 96.256h185.856c17.92 0 32.256-14.336 32.256-32.256s-14.848-32.256-32.256-32.256z" p-id="4569" fill="#8a8a8a"></path><path d="M716.8 276.992c0-17.92-14.336-32.256-32.256-32.256H335.872c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h348.672c17.92-0.512 32.256-14.848 32.256-32.256z m0 146.944c0-17.92-14.336-32.256-32.256-32.256H335.872c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h348.672c17.92-0.512 32.256-14.848 32.256-32.256z m-380.928 120.32c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h218.112c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256H335.872zM864.256 768H768v-37.376c37.376-13.312 64-48.64 64-90.624 0-52.736-43.008-96.256-96.256-96.256S640 587.264 640 640c0 41.472 26.624 77.312 64 90.624v37.376h-96.256c-52.736 0-96.256 43.008-96.256 96.256v32.256c0 35.328 28.672 64 64 64H896c35.328 0 64-28.672 64-64v-32.256c0-53.248-43.008-96.256-95.744-96.256z m-128-159.744c17.408 0 32.256 14.336 32.256 32.256 0 17.408-14.336 32.256-32.256 32.256s-32.256-14.336-32.256-32.256 14.336-32.256 32.256-32.256zM896 896h-320v-32.256c0-17.408 14.336-32.256 32.256-32.256h256c17.408 0 32.256 14.336 32.256 32.256v32.256z" p-id="4570" fill="#8a8a8a"></path></svg>

BIN
src/assets/images/frut.jpg


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
src/assets/images/gailan.svg


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
src/assets/images/huobban.svg


BIN
src/assets/images/login_logo.png


BIN
src/assets/images/logo-white.png


BIN
src/assets/images/logo.png


+ 1 - 0
src/assets/images/mingxi.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596158025201" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5834" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20"><defs><style type="text/css"></style></defs><path d="M214.528 87.04h594.944c36.352 0 63.488 27.648 63.488 64v722.432c0 36.352-27.648 63.488-63.488 63.488H214.528c-36.352 0-64-27.648-64-63.488V151.04c0-36.352 27.648-64 64-64z m0 64v722.432h594.944V151.04H214.528zM486.4 380.416c16.896 0 29.696 12.8 29.696 29.696s-12.8 29.696-29.696 29.696H427.008v74.24c0 16.896-12.8 29.696-29.696 29.696s-29.696-12.8-29.696-29.696V439.808H308.224c-16.896 0-29.696-12.8-29.696-29.696s12.8-29.696 29.696-29.696h59.392v-25.6l-72.192-76.8c-10.752-12.8-10.752-31.744 0-44.544 10.752-12.8 29.696-12.8 40.448 0l61.44 66.048 61.44-66.048c10.752-12.8 29.696-12.8 40.448 0 10.752 12.8 10.752 31.744 0 44.544L424.96 354.816v25.6h61.44z m259.072 6.144c0 16.896-10.752 29.696-20.992 29.696h-131.584c-12.8 0-20.992-12.8-20.992-29.696s10.752-29.696 20.992-29.696h131.584c10.752 0 20.992 12.8 20.992 29.696z m0-133.632c0 16.896-10.752 29.696-20.992 29.696h-131.584c-12.8 0-20.992-12.8-20.992-29.696s10.752-29.696 20.992-29.696h131.584c10.752 0 20.992 12.8 20.992 29.696z m0 261.12c0 16.896-10.752 29.696-20.992 29.696h-131.584c-12.8 0-20.992-12.8-20.992-29.696s10.752-29.696 20.992-29.696h131.584c10.752 0 20.992 12.8 20.992 29.696z m0 125.44c0 16.896-10.752 29.696-25.6 29.696H303.616c-14.848 0-25.6-12.8-25.6-29.696s10.752-29.696 25.6-29.696h416.256c13.312 0 25.6 14.848 25.6 29.696z m0 127.488c0 16.896-10.752 29.696-25.6 29.696H303.616c-14.848 0-25.6-12.8-25.6-29.696s10.752-29.696 25.6-29.696h416.256c13.312 0 25.6 12.8 25.6 29.696z" p-id="5835" fill="#8a8a8a"></path></svg>

+ 1 - 0
src/assets/images/riqi.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596157676415" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4329" xmlns:xlink="http://www.w3.org/1999/xlink" width="50" height="50"><defs><style type="text/css"></style></defs><path d="M854.016 192H757.76v-32.256c0-17.92-14.336-32.256-32.256-32.256s-32.256 14.336-32.256 32.256v32.256h-363.52v-32.256c0-17.92-14.336-32.256-32.256-32.256S266.24 142.336 266.24 160.256v32.256H170.496C117.76 192.512 74.24 235.52 74.24 288.768v512c0 52.736 43.008 96.256 96.256 96.256h683.52c52.736 0 96.256-43.008 96.256-96.256v-512c-0.512-53.76-43.52-96.768-96.256-96.768zM170.496 256H266.24v32.256c0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256V256h363.52v32.256c0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256V256H855.04c17.408 0 32.256 14.336 32.256 32.256V384H138.24V288.256c0-17.92 14.336-32.256 32.256-32.256z m683.52 576H170.496c-17.408 0-32.256-14.336-32.256-32.256V448h747.52v352.256c0 17.408-14.336 31.744-31.744 31.744z" p-id="4330" fill="#8a8a8a"></path><path d="M640 608.256H384c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h256c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256z" p-id="4331" fill="#8a8a8a"></path></svg>

+ 1 - 0
src/assets/images/shoujihao.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596157895413" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4807" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M757.76 64H266.24c-52.736 0-96.256 43.008-96.256 96.256v704c0 52.736 43.008 96.256 96.256 96.256h491.52c52.736 0 96.256-43.008 96.256-96.256V160.256c0-53.248-43.52-96.256-96.256-96.256z m32.256 800.256c0 17.408-14.336 32.256-32.256 32.256H266.24c-17.408 0-32.256-14.336-32.256-32.256V160.256c0-17.408 14.336-32.256 32.256-32.256h491.52c17.408 0 32.256 14.336 32.256 32.256v704z" p-id="4808" fill="#8a8a8a"></path><path d="M608.256 192H416.256c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h192c17.92 0 32.256-14.336 32.256-32.256s-14.848-32.256-32.256-32.256zM512 736.256c-26.624 0-48.128 21.504-48.128 48.128s21.504 48.128 48.128 48.128 48.128-21.504 48.128-48.128-21.504-48.128-48.128-48.128z" p-id="4809" fill="#8a8a8a"></path></svg>

BIN
src/assets/images/u15.png


+ 1 - 0
src/assets/images/xinxi.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596158008601" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5581" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20"><defs><style type="text/css"></style></defs><path d="M864.256 128H160.256C107.52 128 64 171.008 64 224.256v576c0 52.736 43.008 96.256 96.256 96.256h704c52.736 0 96.256-43.008 96.256-96.256V224.256c-0.512-53.248-43.52-96.256-96.256-96.256z m31.744 672.256c0 17.408-14.336 32.256-32.256 32.256H160.256c-17.408 0-32.256-14.336-32.256-32.256V224.256c0-17.408 14.336-32.256 32.256-32.256h704c17.408 0 32.256 14.336 32.256 32.256v576z" p-id="5582" fill="#8a8a8a"></path><path d="M757.248 520.704c16.896-19.456 26.624-45.056 26.624-72.704 0-61.952-50.176-112.128-112.128-112.128s-112.128 50.176-112.128 112.128c0 27.648 10.24 53.248 26.624 72.704-45.056 28.16-74.752 78.336-74.752 135.168 0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256c0-52.736 43.008-96.256 96.256-96.256s96.256 43.008 96.256 96.256c0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256c-1.024-56.832-30.72-107.008-75.776-135.168z m-133.12-72.704c0-26.624 21.504-48.128 48.128-48.128s48.128 21.504 48.128 48.128-21.504 48.128-48.128 48.128-48.128-21.504-48.128-48.128zM384 352.256H256c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h128c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256z m0 128H256c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h128c17.92 0 32.256-14.336 32.256-32.256 0-18.432-14.336-32.256-32.256-32.256z m0 128H256c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h128c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256z" p-id="5583" fill="#8a8a8a"></path></svg>

+ 1 - 0
src/assets/images/yongjin.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596157572278" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3995" xmlns:xlink="http://www.w3.org/1999/xlink" width="50" height="50"><defs><style type="text/css"></style></defs><path d="M924.672 337.408c-22.528-53.248-54.784-101.376-95.744-142.336s-89.088-73.216-142.336-95.744c-55.296-23.552-114.176-35.328-174.592-35.328s-119.296 11.776-174.592 35.328c-53.248 22.528-101.376 54.784-142.336 95.744S121.856 284.16 99.328 337.408c-23.552 55.296-35.328 114.176-35.328 174.592s11.776 119.296 35.328 174.592c22.528 53.248 54.784 101.376 95.744 142.336s89.088 73.216 142.336 95.744c55.296 23.552 114.176 35.328 174.592 35.328s119.296-11.776 174.592-35.328c53.248-22.528 101.376-54.784 142.336-95.744s73.216-89.088 95.744-142.336c23.552-55.296 35.328-114.176 35.328-174.592s-11.776-119.296-35.328-174.592zM783.36 783.36c-72.704 72.704-168.96 112.64-271.36 112.64s-199.168-39.936-271.36-112.64-112.64-168.96-112.64-271.36 39.936-199.168 112.64-271.36c72.704-72.704 168.96-112.64 271.36-112.64s199.168 39.936 271.36 112.64 112.64 168.96 112.64 271.36-39.936 199.168-112.64 271.36z" p-id="3996" fill="#8a8a8a"></path><path d="M655.872 496.128c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256h-98.304l105.472-105.472c12.288-12.288 12.288-32.768 0-45.056-12.288-12.288-32.768-12.288-45.056 0L512 387.072 406.528 281.6c-12.288-12.288-32.768-12.288-45.056 0-12.288 12.288-12.288 32.768 0 45.056l104.96 104.96H368.128c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h112.128v64H368.128c-17.92 0-32.256 14.336-32.256 32.256s14.336 32.256 32.256 32.256h112.128v96.256c0 17.92 14.336 32.256 32.256 32.256s32.256-14.336 32.256-32.256V624.64h112.128c17.92 0 32.256-14.336 32.256-32.256s-14.336-32.256-32.256-32.256h-112.128V496.128h111.104z" p-id="3997" fill="#8a8a8a"></path></svg>

+ 1 - 0
src/assets/images/youxiang.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1596157917463" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5088" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M864.256 138.24H160.256C107.52 138.24 64 181.248 64 234.496v555.52c0 52.736 43.008 96.256 96.256 96.256h704c52.736 0 96.256-43.008 96.256-96.256V234.496c-0.512-53.248-43.52-96.256-96.256-96.256z m31.744 651.776c0 17.408-14.336 32.256-32.256 32.256H160.256c-17.408 0-32.256-14.336-32.256-32.256V234.496c0-17.408 14.336-32.256 32.256-32.256h704c17.408 0 32.256 14.336 32.256 32.256v555.52z" p-id="5089" fill="#8a8a8a"></path><path d="M747.52 281.088l-235.52 199.168-235.52-199.168c-13.312-11.264-33.792-9.728-45.056 3.584-11.264 13.312-9.728 33.792 3.584 45.056l256 216.576c0.512 0.512 0.512 0.512 1.024 0.512l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512 0.512 0.512 1.024 1.024 2.048 1.024l0.512 0.512c0.512 0 0.512 0.512 1.024 0.512 0 0 0.512 0 0.512 0.512 0.512 0 1.024 0.512 1.536 0.512h0.512c0.512 0 1.024 0.512 1.024 0.512h0.512c0.512 0 1.024 0.512 1.024 0.512h0.512c1.536 0.512 3.072 1.024 4.608 1.024 1.024 0 2.048 0.512 3.072 0.512H514.56c1.024 0 2.048 0 3.072-0.512 1.536-0.512 3.072-0.512 4.608-1.024h0.512c0.512 0 1.024-0.512 1.024-0.512h0.512c0.512 0 1.024-0.512 1.024-0.512h0.512c0.512 0 1.024-0.512 1.536-0.512 0 0 0.512 0 0.512-0.512 0.512 0 0.512-0.512 1.024-0.512l0.512-0.512c0.512-0.512 1.024-0.512 1.536-1.024 0 0 0.512 0 0.512-0.512 0.512 0 0.512-0.512 1.024-0.512l0.512-0.512c0.512 0 0.512-0.512 1.024-0.512l256-216.576c13.312-11.264 15.36-31.744 3.584-45.056-12.8-12.8-32.768-14.336-46.08-3.072z" p-id="5090" fill="#8a8a8a"></path></svg>

+ 8 - 7
src/views/system/components/LeftMenu.vue → src/components/LeftMenu.vue

@@ -2,8 +2,9 @@
     <Menu :active-name="active" :open-names="openNames" theme="dark" width="auto" :class="menuClass"
           @on-select="goto" :accordion="true">
         <MenuItem name="site-name">
-            <Icon type="ios-home"/>
-            <span>{{siteName}}</span>
+            <!-- <Icon type="ios-home"/> -->
+            <!-- <span>{{siteName}}</span> -->
+            <img src="../assets/images/logo-white.png" alt="">
         </MenuItem>
         <div v-for="menu in menus" :key="menu.id">
             <MenuItem :name="menu.id" v-if="menu.url">
@@ -39,8 +40,8 @@
 </template>
 
 <script>
-    import _ from "lodash";
-    import { config } from '../../../helper'
+    import _ from "lodash"
+    import { config } from '../helper'
 
     let tree = function (menus, pid) {
         let menu = [];
@@ -94,9 +95,9 @@
         },
         methods: {
             goto(menuId) {
-                // if (menuId === "site-name") {
-                //     return this.$router.push('/');
-                // }
+                if (menuId === "site-name") {
+                    return this.$router.push('/');
+                }
                 this.pageMenus.forEach(({url, id}) => {
                     if (id === menuId) {
                         if (url.indexOf('://') !== -1) {

+ 43 - 12
src/views/system/components/Login.vue → src/components/Login.vue

@@ -1,10 +1,11 @@
 <template>
-    <div class="login">
-        <Row style="margin-top: 150px">
+    <div class="logins">
+        <Row>
             <Col span="6" offset="9">
-                <Card>
-                    <p slot="title">用户登录</p>
-                    <Form ref="form" :model="form" :rules="rule">
+                <div class="cards">
+                    <img src="@/assets/images/login_logo.png" alt="">
+                    <p slot="title">管理员登录</p>
+                    <Form ref="form" :model="form" :rules="rule" style="width: 600px">
                         <FormItem prop="username">
                             <Input size="large" type="text" v-model="form.username" placeholder="用户名">
                                 <Icon type="ios-person-outline" slot="prepend"></Icon>
@@ -15,18 +16,21 @@
                                 <Icon type="ios-lock-outline" slot="prepend"></Icon>
                             </Input>
                         </FormItem>
-                        <FormItem style="margin-bottom: 5px">
+                        <FormItem class="remember">
+                            <Checkbox v-model="single">&nbsp;记住密码</Checkbox>
+                        </FormItem>
+                        <FormItem style="width:200px;margin: 80px auto">
                             <Button size="large" type="primary" long @click="handleSubmit('form')">登 录</Button>
                         </FormItem>
                     </Form>
-                </Card>
+                </div>
             </Col>
         </Row>
     </div>
 </template>
 
 <script>
-    import {setTitle} from '../../../router'
+    import {setTitle} from '../router'
 
     export default {
         name: 'Login',
@@ -43,7 +47,8 @@
                     password: [
                         {required: true, message: '请填写密码', trigger: 'blur'}
                     ]
-                }
+                },
+                single: false
             }
         },
         methods: {
@@ -71,14 +76,40 @@
         }
     }
 </script>
-<style scoped>
-    .login {
+<style lang="scss" scoped>
+    .logins {
         width: 100%;
         height: 100%;
         position: absolute;
         top: 0;
         left: 0;
-        background: url(../../../assets/images/bg.svg) #f0f2f5 no-repeat center 110px;
+        background: url(../assets/images/bg_1.png) #f0f2f5 no-repeat center center;
         background-size: 100%;
+        padding-top: 50px;
+        .cards {
+            display: flex;
+            flex-direction: column;
+            justify-content: center;
+            align-items: center;
+            img {
+                width: 82px;
+            }
+            p {
+                font-size: 30px;
+                height: 80px;
+                line-height: 80px;
+                margin: 50px 0 30px 0;
+                color: #aea79f;
+            }
+            button {
+                height: 50px;
+                background: none;
+                color: #1e1e1e;
+                border-color: #cdcdcd;
+            }
+            .remember {
+                color: #aea79f;
+            }
+        }
     }
 </style>

+ 1 - 1
src/components/pageBar.vue

@@ -19,7 +19,7 @@
         props: {
             rightWidth: {
                 type: [Number, String],
-                default: 100
+                default: 200
             },
         },
     }

+ 24 - 8
src/components/tableLists.vue

@@ -1,9 +1,10 @@
 <template>
     <div class="table-lists">
-        <page-bar v-if="!hiddenFilter">
+        <page-bar v-if="!hiddenFilter" class="top-bar">
             <slot name="filterContent"></slot>
-            <slot name="filterButton" v-if="filterType === 1">
-                <Button type="primary" @click="reload()">查 询</Button>
+            <slot name="filterButton">
+                <Button type="primary" @click="reload()" v-if="filterType === 1">查 询</Button>
+                <Button type="primary" @click="reload()" style="margin-left: 10px" v-if="filterReset === 1">重 置</Button>
             </slot>
             <div slot="right">
                 <slot name="filterRight"></slot>
@@ -22,8 +23,7 @@
                     show-elevator 
                     show-sizer 
                     @on-page-size-change="pageSizeChange" 
-                    transfer 
-                    :page-size-opts="[10,20,50,100,200]"
+                    :page-size-opts="[10,20,50,100]"
                 />
             </div>
         </page-bar>
@@ -57,7 +57,7 @@
             },
             pageSize: {
                 type: Number,
-                default: 20
+                default: 10
             },
             requestApi: {
                 type: String,
@@ -71,10 +71,15 @@
                 type: Boolean,
                 default: false
             },
-            // 0 不显示按钮 1 搜索按钮触发 2 筛选条件发生变化触发筛选
+            // 0 不显示查询按钮 1 搜索按钮触发 2 筛选条件发生变化触发筛选
             filterType: {
                 type: Number,
                 default: 1
+            },
+            // 0 不显示重置按钮 1 搜索按钮触发 2 筛选条件发生变化触发筛选
+            filterReset: {
+                type: Number,
+                default: 1
             }
         },
         watch: {
@@ -102,11 +107,13 @@
                 this.reload();
             },
             load() {
+                this.$emit('loading', true);
                 this.$request(this.requestApi).data({
                     offset: (this.page - 1) * this.pageSizeData,
                     pageSize: this.pageSizeData,
                     ..._.cloneDeep(this.filter)
                 }).success((r) => {
+                    this.$emit('loading', false);
                     this.total = r.data['total'];
                     this.$emit('input', r.data);
                 }).get()
@@ -119,4 +126,13 @@
             },
         },
     }
-</script>
+</script>
+
+<style lang="scss" scoped>
+.table-lists {
+   .top-bar {
+        padding: 10px 0;
+    } 
+}
+
+</style>

+ 9 - 5
src/components/uploadFile.vue

@@ -8,7 +8,7 @@
                         :format="format"
                         :max-size="maxSize"
                         :show-upload-list="false"
-                        :action="url"
+                        action="//jsonplaceholder.typicode.com/posts/"
                         :on-progress="onUploadProgress"
                         :on-success="onUploadSuccess"
                         :on-error="onUploadError"
@@ -22,6 +22,7 @@
                 </Upload>
                 <Button icon="md-search" @click="view"></Button>
                 <Button icon="md-backspace" @click="remove"></Button>
+                <img :src="'/upload/'+imgs" alt="">
             </div>
         </Input>
     </div>
@@ -33,7 +34,9 @@
     export default {
         name: "uploadFile",
         data() {
-            return {}
+            return {
+                imgs: ''
+            }
         },
         props: {
             value: {
@@ -67,7 +70,7 @@
                 }
             },
             maxSize: {
-                type: Number, // 大小 单位kb
+                type: Number, // 文件大小 单位kb
             },
             onSuccess: {
                 type: Function,
@@ -104,6 +107,7 @@
             onUploadProgress() {
             },
             onUploadSuccess(response, file, fileList) {
+                this.imgs = file.name
                 requestSuccessHandle(this, response, true, true, () => {
                     this.onSuccess(response.data, file, fileList);
                     this.$emit('input', response.data.url);
@@ -122,10 +126,10 @@
             onUploadPreview() {
             },
             onUploadExceededSize(file) {
-                this.onUploadError("文件过大,最大文件大小为:" + this.maxSize + 'kb', file)
+                this.onUploadError("上传文件过大,最大文件大小为:" + this.maxSize + 'kb', file)
             },
             onUploadFormatError(file) {
-                this.onUploadError("文件格式错误,允许上传的文件格式为:" + this.format.join(','), file)
+                this.onUploadError("上传文件格式错误,允许上传的文件格式为:" + this.format.join(','), file)
             },
         },
     }

+ 0 - 31
src/components/uploadImg.vue

@@ -1,31 +0,0 @@
-<template>
-    <div class="upload-img">
-        <Upload
-            :before-upload="handleUpload"
-            action="//jsonplaceholder.typicode.com/posts/">
-            <Button icon="md-add"></Button>
-        </Upload>
-        
-    </div>
-</template>
-
-<script>
-export default {
-    data () {
-        return {
-            file: ''
-        }
-    },
-    methods:{
-        handleUpload (file) {
-            this.file = file;
-        }  
-    },
-}
-</script>
-
-<style lang="scss" scoped>
-.upload-img {
-    height: auto;
-}
-</style>

+ 2 - 2
src/views/system/components/userSetting.vue → src/components/userSetting.vue

@@ -21,11 +21,11 @@
 </template>
 
 <script>
-import imgLoad from '../../../components/uploadImg';
+// import imgLoad from './uploadFile';
 export default {
     name: 'userSetting',
     components: {
-      imgLoad
+      // imgLoad
     },
     data () {
         return {

+ 4 - 1
src/main.js

@@ -11,9 +11,12 @@ import authCheck from './components/authCheck'
 import uploadFile from './components/uploadFile'
 import fieldMap from './components/fieldMap'
 import App from './App.vue'
+import './assets/css/common.css'
 
 Vue.config.productionTip = false;
-Vue.use(iView);
+Vue.use(iView, {
+    transfer: true
+});
 Vue.use(vueRequest);
 
 Vue.component('page-bar',pageBar);

+ 2 - 0
src/plugins/api.js

@@ -0,0 +1,2 @@
+export const requestList = '/system/request/lists';
+export const reqType = '/system/request/type';

+ 26 - 1
src/router.js

@@ -10,7 +10,32 @@ const siteTitleTpl = config('SITE_TITLE_TPL');
 
 // 路由配置
 const routes = [
-    {path: '/', name: 'index', component: () => import('./views/index.vue')},
+    {
+        path: '/',
+        name: 'index',
+        component: () => import('./views/index.vue')
+    },
+    {
+        path: '*',
+        component: () => import('./views/error.vue')
+    },
+    {
+        path: '/sales/partnerList/partnerDetail',
+        name: 'partnerDetail',
+        component: () => import('./views/sales/partnerDetail.vue')
+    },
+    {
+        path: '/sales/withdrawList/withdrawDetail',
+        name: 'withdrawDetail',
+        alias: '/sales/settleList/settleDetail',
+        component: () => import('./views/sales/withdrawDetail.vue')
+    },
+    {
+        path: '/order/manageList/manageDetail',
+        name: 'manageDetail',
+        // alias: '/sales/settleList/settleDetail',
+        component: () => import('./views/order/manageDetail.vue')
+    }
 ];
 
 // 路由自动加载

+ 0 - 1
src/store/admin.js

@@ -71,7 +71,6 @@ export default {
         setAdminUserGroup (state, userGroup) {
             state.adminUserGroup = userGroup ? userGroup : []
         },
-
         setCurrentMenu (state, menu) {
             state.currentMenu = menu ? menu : {}
         }

+ 30 - 0
src/views/error.vue

@@ -0,0 +1,30 @@
+<template>
+    <div class="err">
+        <img src="../assets/images/404.png" alt="">
+        <p>很抱歉,页面找不到了</p>
+    </div>
+</template>
+
+<script>
+export default {
+    
+}
+</script>
+
+<style lang="scss" scoped>
+.err {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    padding-top: 180px;
+    img {
+        width: 200px;
+    }
+    p {
+        font-weight: 700;
+        color: #aea79f;
+        font-size: 16px;
+    }
+}
+</style>

+ 1 - 1
src/views/example.vue

@@ -51,7 +51,7 @@
             </div>
         </page-bar>
         <Card title="文件上传">
-            <upload-file v-model="uploadFileUrl"></upload-file>
+            <upload-file v-model="uploadFileUrl" :maxSize="1024"></upload-file>
         </Card>
     </div>
 </template>

+ 158 - 0
src/views/order/components/details.vue

@@ -0,0 +1,158 @@
+<template>
+    <div class="m-details">
+        <!-- 提现列表详情 -->
+        <div class="infor-card">
+            <div class="cont">
+                <div class="tit">订单信息</div>
+                <div class="classfity">
+                    <span>订单编号:232504673120</span>
+                    <span>订单时间:2020-07-25 23:25:08</span>
+                    <span>产品类型:线上课程</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <div class="infor-card" v-if="orderType == 0 || orderType == 1">
+            <div class="cont">
+                <div class="tit">课程信息</div>
+                <div class="classfity">
+                    <!-- 线上课程 -->
+                    <span>课程名称:控标案例实战分析,招标文件控标点揭秘</span>
+                    <span v-if="orderType == 0">课程时长:01:31:26</span>
+                    <span v-if="orderType == 0">有效周期:2020-12-31到期</span>
+                    <!-- 线下课程 -->
+                    <span v-if="orderType == 1">课程地点:南京</span>
+                    <span v-if="orderType == 1">课程时间:2020年02月2日-2020年02月2日</span>
+                    <span v-if="orderType == 1">联系人单位:铜陵泓景园林绿化工程有限公司</span>
+                    <span v-if="orderType == 1">联系人姓名:胡小平</span>
+                    <span v-if="orderType == 1">联系人邮箱:149837146@qq.com</span>
+                    <span v-if="orderType == 1">联系人电话:13856252510</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <!-- 数据报告 -->
+        <div class="infor-card" v-if="orderType == 2">
+            <div class="cont">
+                <div class="tit">报告信息</div>
+                <div class="classfity">
+                    <span>报告名称:2019-2020年大数据中心市场研究报告</span>
+                    <span>邮箱地址:149837146@qq.com</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <!-- 数据导出 -->
+        <div class="infor-card" v-if="orderType == 3">
+            <div class="cont">
+                <div class="tit">导出信息</div>
+                <div class="classfity">
+                    <span>筛选日期:2020年01月01日 - 2020年12月31日</span>
+                    <span>区域:</span>
+                    <span>行业:弱电安防_智能系统信息技术_系统集成及安全</span>
+                    <span>关键词:</span>
+                    <span>金额:100万元 - 3000万元</span>
+                    <span>信息类型:</span>
+                    <span>采购单位:</span>
+                    <span>中标单位:</span>
+                    <span>数据规格:</span>
+                    <span>数据数量:</span>
+                    <span>邮箱地址:</span>
+                    <span>手机号:</span>
+                    <span>下载链接:<a href="#" target="_blank">点击下载</a></span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <!-- VIP订阅 -->
+        <div class="infor-card">
+            <div class="cont">
+                <div class="tit">订阅信息</div>
+                <div class="classfity">
+                    <span>订购区域:1个省</span>
+                    <span>订购行业:3个行业</span>
+                    <span>订购周期:2020.01.01 - 20201.01.01</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <div class="infor-card">
+            <div class="cont">
+                <div class="tit">支付信息</div>
+                <div class="classfity">
+                    <span>支付单号:232504673120</span>
+                    <span>支付时间:2020-07-25 23:25:08</span>
+                    <span>支付方式:微信</span>
+                    <span v-if="orderType == 1">实付数量:1</span><!-- 线下课程 -->
+                    <span v-if="orderType == 4">实付金额:100.00</span><!-- VIP订阅 -->
+                    <span v-if="orderType != 4">支付金额:99.6</span>
+                    <span>支付状态:已付款</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <!-- 线下课程 -->
+        <div class="infor-card" v-if="orderType == 1">
+            <div class="cont">
+                <div class="tit">优惠信息</div>
+                <div class="classfity">
+                    <span>每单立减:23.00</span>
+                    <span>多人立减:0.00</span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+        <div class="infor-card">
+            <div class="cont">
+                <div class="tit">发票信息</div>
+                <div class="classfity">
+                    <span>发票类型:普通发票(电子发票)</span>
+                    <span>发票内容:明细</span>
+                    <span>发票抬头:单位</span>
+                    <span>开票单位名称:上海欧朝物联网技术有限公司</span>
+                    <span>纳税人识别号:91310230MA1K2LED0U</span>
+                    <span>邮箱地址:12421218123@qq.com</span>
+                    <span>发票状态:单位</span>
+                    <span>发票查看:<a href="#" target="_blank">点击查看</a></span>
+                </div>
+            </div>
+            <Divider />
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props:{
+        orderType: Number
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.m-details {
+    margin: 50px auto;
+    width: 600px;
+    .infor-card {
+        .cont {
+            display: flex;
+            flex-direction: initial;
+            .tit {
+                font-size: 16px;
+                font-weight: 700;
+                line-height: 30px;
+                margin-right: 50px;
+                color: #1e1e1e;
+            }
+            .classfity {
+                display: flex;
+                flex-direction: column;
+                justify-content: center;
+                font-size: 13px;
+                color: #333;
+                line-height: 30px;
+            }
+        }
+    }
+}
+</style>

+ 37 - 0
src/views/order/manageDetail.vue

@@ -0,0 +1,37 @@
+<template>
+    <div class="with-detail">
+        <h1>订单管理</h1>
+        <div class="det">
+            <div slot="title" class="right-fund">查看订单</div>
+            <Divider />
+            <v-detail :orderType="$route.query.id"></v-detail>
+        </div>
+    </div>
+</template>
+
+<script>
+import vDetail from './components/details'
+export default {
+    components: {
+        vDetail
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.with-detail {
+    .det {
+        background:#fff;
+        padding: 10px 0;
+    }
+    h1 {
+        padding: 10px 0 20px 100px;
+    }
+    .right-fund {
+        font-size: 20px;
+        color: #575962;
+        padding-left: 100px;
+        margin-top: 14px;
+    }
+}
+</style>

+ 210 - 0
src/views/order/manageList.vue

@@ -0,0 +1,210 @@
+<template>
+  <div class="ding-dan">
+    <h1>订单管理</h1>
+    <table-lists 
+        ref="tableLists" 
+        v-model="list" 
+        :filter="filter" 
+        requestApi="/system/request/lists" 
+        @loading="load" 
+        style="background:#fff;padding:10px"
+    >
+      <template slot="filterContent">
+        <FormItem label="产品类型:" :label-width="80">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="订单类型:" :label-width="80">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="订单状态:" :label-width="80">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="发票状态:" :label-width="80">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="订单日期:" :label-width="80" style="margin-right: 40px">
+            <DatePicker type="date" placeholder="起始时间" style="width: 102px" @on-change="handleChange1"></DatePicker>
+            <DatePicker type="date" placeholder="截止时间" style="width: 102px;margin-left:2px" @on-change="handleChange2"></DatePicker>
+        </FormItem>
+      </template>
+      <template slot="filterRight">
+          <Input prefix="md-search" type="text" v-model="filter.keyword7" placeholder="搜索..." clearable class="ser-ipt"/>
+      </template>
+      <Table ellipsis :loading="loading" ref="selection" :columns="columns" :data="datas" stripe>
+        <template slot-scope="{ row }" slot="type">
+          <field-map :value="row.type" :map="type"></field-map>
+        </template>
+        <template slot-scope="{ row }" slot="_action">
+          <Tooltip :content="row.call" :max-width="500">
+            {{row.action}}
+          </Tooltip>
+        </template>
+        <template slot-scope="{ row, index }" slot="op">
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="primary" 
+            style="margin-right:5px"
+            :to="{path:'/order/manageList/manageDetail',query:{id:index}}"
+          >查看</Button>
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="error" 
+            @click="refund(row.id,row.code)"
+          >退款</Button>
+        </template>
+      </Table>
+    </table-lists>
+  </div>
+</template>
+<script>
+    // import _ from 'lodash'
+    import marked from 'marked'
+
+    export default {
+        computed: {
+            type () {
+                return this.requestType.map((item) => {
+                    return { v: item.type, n: item.name }
+                })
+            },
+            currentTypeDescription () {
+                let description = "";
+                this.requestType.forEach((item)=>{
+                    if (item.type === this.current.data.type){
+                        description = item.description
+                    }
+                })
+                return marked(description)
+            }
+        },
+        created () {
+            this.$request('/system/request/type').success((r) => {
+                this.requestType = r.data
+            }).get()
+        },
+        methods: {
+          load (val) {
+            this.loading = val
+          },
+          handleChange1 (date) {
+              console.log(date)
+          },
+          handleChange2 (date) {
+              console.log(date)
+          },
+          refund (id,name) {
+            this.$Modal.confirm({
+                title: "确定给定编号为"+name+"退款吗?",
+                onOk: () => {
+                    // this.$request('/system/request/remove').data({ id: row.id }).showSuccessTip().success(() => {
+                    //     this.reload()
+                    // }).get()
+                }
+            })
+          }
+        },
+        data () {
+            return {
+              lis: '',
+              loading: false,
+              requestType: [],
+              filter: {
+                  keyword: '',
+                  type: ''
+              },
+              datas: [
+                  {id:11,code:'12345675687',pro:'线上课程',order:'分销',state:'已付款',invoice:'未申请'},
+                  {id:12,code:'22345675687',pro:'线下课程',order:'分销',state:'已付款',invoice:'未申请'},
+                  {id:13,code:'32345675687',pro:'数据报告',order:'分销',state:'已付款',invoice:'未申请'},
+                  {id:14,code:'42345675687',pro:'数据导出',order:'分销',state:'已付款',invoice:'未申请'},
+                  {id:15,code:'52345675687',pro:'VIP订阅',order:'分销',state:'已付款',invoice:'未申请'}
+              ],
+              columns: [
+                  {
+                      title: '订单编号',
+                      key: 'code',
+                      align: 'center'
+                  },
+                  {
+                      title: '产品类型',
+                      key: 'pro',
+                      align: 'center'
+                  },
+                  {
+                      title: '订单类型',
+                      key: 'order',
+                      align: 'center'
+                  },
+                  {
+                      title: '订单时间',
+                      key: 'state',
+                      align: 'center'
+                  },
+                  {
+                      title: '实付金额',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '订单状态',
+                      key: 'state',
+                      align: 'center'
+                  },
+                  {
+                      title: '发票状态',
+                      key: 'invoice',
+                      align: 'center'
+                  },
+                  {
+                      title: '操作',
+                      slot: 'op',
+                      align: 'center'
+                  },
+              ],
+              list: [],
+              current: {
+                  show: false,
+                  data: {},
+                  tips: ''
+              }
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.ding-dan {
+    h1 {
+        font-size:24px;
+        color:#3f4047;
+        padding: 10px 0 20px 50px;
+    }
+    // .find-btn {
+    //     background: none;
+    //     color:#36a3f7;
+    //     &:focus {
+    //         box-shadow: none;
+    //     }
+    // }
+    .tui-btn {
+        color: #f4516c;
+    }
+    .ser-ipt {
+        width: 162px;
+    }
+}
+</style>

+ 172 - 0
src/views/sales/commissionList.vue

@@ -0,0 +1,172 @@
+<template>
+  <div class="yong-jin">
+    <h1>佣金列表</h1>
+    <table-lists 
+        ref="tableLists" 
+        v-model="list" 
+        :filter="filter" 
+        requestApi="/system/request/lists" 
+        @loading="load" 
+        style="background:#fff;padding:10px"
+    >
+      <template slot="filterContent">
+        <FormItem label="产品:" :label-width="50">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="销售金额:" :label-width="80">
+            <Input style="width: 65px" type="text" v-model="filter.keyword1" placeholder="最小金额" clearable/>
+            <Input style="width: 65px;margin-left: 2px" type="text" v-model="filter.keyword2" placeholder="最大金额" clearable/>
+        </FormItem>
+        <FormItem label="佣金金额:" :label-width="80">
+            <Input style="width: 65px" type="text" v-model="filter.keyword3" placeholder="最小金额" clearable/>
+            <Input style="width: 65px;margin-left: 2px" type="text" v-model="filter.keyword4" placeholder="最大金额" clearable/>
+        </FormItem>
+        <FormItem label="订单日期:" :label-width="80" style="margin-right: 40px">
+            <DatePicker type="date" placeholder="起始时间" style="width: 102px" @on-change="handleChange1"></DatePicker>
+            <DatePicker type="date" placeholder="截止时间" style="width: 102px;margin-left:2px" @on-change="handleChange2"></DatePicker>
+        </FormItem>
+      </template>
+      <template slot="filterRight">
+          <Input prefix="md-search" type="text" v-model="filter.keyword7" placeholder="搜索..." clearable class="ser-ipt"/>
+      </template>
+      <Table ellipsis :loading="loading" ref="selection" :columns="columns" :data="list.lists" stripe>
+        <template slot-scope="{ row }" slot="type">
+          <field-map :value="row.type" :map="type"></field-map>
+        </template>
+        <template slot-scope="{ row }" slot="_action">
+          <Tooltip :content="row.call" :max-width="500">
+            {{row.action}}
+          </Tooltip>
+        </template>
+        <template slot-scope="{ row }" slot="op">
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="primary" 
+            :to="{path:'/order/manageList/manageDetail',query:{id:row.id}}"
+          >订单</Button>
+        </template>
+      </Table>
+    </table-lists>
+  </div>
+</template>
+<script>
+    import _ from 'lodash'
+    import marked from 'marked'
+
+    export default {
+        computed: {
+            type () {
+                return this.requestType.map((item) => {
+                    return { v: item.type, n: item.name }
+                })
+            },
+            currentTypeDescription () {
+                let description = "";
+                this.requestType.forEach((item)=>{
+                    if (item.type === this.current.data.type){
+                        description = item.description
+                    }
+                })
+                return marked(description)
+            }
+        },
+        created () {
+            this.$request('/system/request/type').success((r) => {
+                this.requestType = r.data
+            }).get()
+        },
+        methods: {
+          load (val) {
+            this.loading = val
+          },
+          handleChange1 (date) {
+              console.log(date)
+          },
+          handleChange2 (date) {
+              console.log(date)
+          }
+        },
+        data () {
+            return {
+              lis: '',
+              loading: false,
+              requestType: [],
+              filter: {
+                  keyword: '',
+                  type: ''
+              },
+              columns: [
+                  {
+                      title: '佣金单号',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '手机号',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '订单日期',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '产品名称',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '销售金额',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '佣金比例',
+                      align: 'center'
+                  },
+                  {
+                      title: '佣金金额',
+                      align: 'center'
+                  },
+                  {
+                      title: '操作',
+                      slot: 'op',
+                      align: 'center'
+                  },
+              ],
+              list: [],
+              current: {
+                  show: false,
+                  data: {},
+                  tips: ''
+              }
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.yong-jin {
+    h1 {
+    font-size:24px;
+    color:#3f4047;
+    padding: 10px 0 20px 50px;
+    }
+    // .find-btn {
+    //     background: none;
+    //     color:#36a3f7;
+    //     &:focus {
+    //         box-shadow: none;
+    //     }
+    // }
+    .ser-ipt {
+    
+    width: 162px;
+    }
+}
+</style>

+ 133 - 0
src/views/sales/components/details.vue

@@ -0,0 +1,133 @@
+<template>
+    <div class="details">
+        <!-- 提现列表详情 -->
+        <div class="infor-card" v-if="deType == 'tixian'">
+            <div v-if="peType == '个人'">
+                <div class="con">
+                    <span>支付宝实名</span>
+                    <span class="spa2">是打发发而</span>
+                </div>
+                <Divider />
+                <div class="con">
+                    <span>支付宝账户</span>
+                    <span class="spa2">134567768</span>
+                </div>
+            </div>
+            <div v-else>
+                <div class="con">
+                    <span>公司名称</span>
+                    <span class="spa2">北京拓普</span>
+                </div>
+                <Divider />
+                <div class="con">
+                    <span>银行名称</span>
+                    <span class="spa2">13849537934834</span>
+                </div>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>提现方式</span>
+                <span class="spa2">卡卡罗特</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>提现方金额</span>
+                <span class="spa2">588</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>提现单号</span>
+                <span class="spa2">1287321837213871391</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>提现时间</span>
+                <span class="spa2">卡卡罗特</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>当前状态</span>
+                <span class="spa2">卡卡罗特</span>
+            </div>
+            <Divider />
+        </div>
+        <!-- 结算列表详情 -->
+        <div class="infor-card" v-else>
+            <div class="con">
+                <span>手机号</span>
+                <span class="spa2">北京拓普</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>结算时间</span>
+                <span class="spa2">北京拓普</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>销售金额</span>
+                <span class="spa2">北京拓普</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>佣金金额</span>
+                <span class="spa2">13849537934834</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>个税金额</span>
+                <span class="spa2">卡卡罗特</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>认证金额</span>
+                <span class="spa2">588</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>提现金额</span>
+                <span class="spa2">678</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>当前状态</span>
+                <span class="spa2">卡卡罗特</span>
+            </div>
+            <Divider />
+            <div class="con">
+                <span>结算单号</span>
+                <span class="spa2">1287321837213871391</span>
+            </div>
+            <Divider />
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props:{
+        deType: String,
+        peType: String
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.details {
+    .infor-card {
+        margin: 50px auto;
+        width: 500px;
+        .con {
+            padding: 5px 30px;
+            font-size: 14px;
+            span {
+                display: inline-block;
+                width: 50%;
+            }
+            .spa2 {
+                text-align: right;
+                
+            }
+        }
+    }
+}
+</style>

+ 409 - 0
src/views/sales/partnerDetail.vue

@@ -0,0 +1,409 @@
+<template>
+    <div class="partner-detail">
+        <h1>剑鱼伙伴</h1>
+        <Row>
+            <Col :lg="6" class="top-col">
+                <Card>
+                    <div slot="title" class="top-tit">
+                        <div class="avatr">
+                            <img src="../../assets/images/login_logo.png" alt="">
+                        </div>
+                        <div class="names">卡卡罗特</div>
+                        <div class="msg1">183 8923 9821</div>
+                        <div class="msg1 msg2">mark.andre@gmail.com</div>
+                    </div>
+                    <div class="bot-tit">
+                        <div class="over-view" @click="tabClick(1)" :class="{active:infor === 1}"><span>概览</span></div>
+                        <div class="basic" @click="tabClick(2)" :class="{active:infor === 2}"><span>基本信息<i>已认证</i></span></div>
+                        <div class="fund" @click="tabClick(3)" :class="{active:infor === 3}"><span>资金明细</span></div>
+                    </div>
+                </Card>
+            </Col>
+            <Col :lg="17">
+                <Card v-if="infor == 1">
+                    <div slot="title" class="right-fund">概览</div>
+                    <div class="msg-card">
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/riqi.svg" />加入日期</div>
+                                <div class="time2">2020.02.02</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/riqi.svg" />最后使用日期</div>
+                                <div class="time2">2020.02.02</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/yongjin.svg" />累计销售额</div>
+                                <div class="time2">2020.02.02</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/dingdan.svg" />累计销售订单</div>
+                                <div class="time2">2020.02.02</div>
+                            </div>
+                        </Card>
+                        <Card>
+                            <div class="add-time">
+                                <div class="time1"><img src="../../assets/images/yongjin.svg" />累计佣金</div>
+                                <div class="time2">2020.02.02</div>
+                            </div>
+                        </Card>
+                    </div>
+                    <Table ellipsis :loading="loading" :columns="column1" :data="data" stripe style="margin-top: 30px">
+                        <template slot-scope="{ row }" slot="opt"></template>
+                    </Table>
+                </Card>
+                <Card v-else-if="infor == 2">
+                    <div slot="title" class="right-fund">基本信息</div>
+                    <div class="infor-card">
+                        <div class="con" v-if="types">
+                            <span>企业名称</span>
+                            <span class="spa2">北京拓普</span>
+                        </div>
+                        <div class="con" v-else>
+                            <span>用户名</span>
+                            <span class="spa2">卡卡罗特</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>手机</span>
+                            <span class="spa2">卡卡罗特</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>邮箱</span>
+                            <span class="spa2">卡卡罗特</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>类型</span>
+                            <span class="spa2">卡卡罗特</span>
+                        </div>
+                        <Divider />
+                        <div class="con">
+                            <span>渠道</span>
+                            <span class="spa2">卡卡罗特</span>
+                        </div>
+                        <Divider />
+                        <div class="con" v-if="types">
+                            <span class="spa1">营业执照</span>
+                            <img @click="fruit" src="../../assets/images/frut.jpg"/>
+                        </div>
+                        <Divider v-if="types" />
+                    </div>
+                </Card>
+                <Card v-else>
+                    <div slot="title" class="right-fund">资金明细</div>
+                    <Table ellipsis :loading="loading" :columns="column2" :data="data" stripe style="margin-top: 10px">
+                        <template slot-scope="{ row }" slot="opt">
+                            <Button 
+                                class="find-btn" 
+                                size="small" 
+                                type="primary" 
+                                :to="{path:'/sales/commissionList'}"
+                            >详情</Button>
+                        </template>
+                    </Table>
+                </Card>
+            </Col>
+        </Row>
+        <Modal v-model="preview">
+            <img src="../../assets/images/frut.jpg">
+            <div slot="footer"></div>
+        </Modal>
+    </div>
+</template>
+
+<script>
+export default {
+    methods: {
+        load(val) {
+            this.loading = val
+        },
+        tabClick(index) {
+            this.infor = index
+        },
+        fruit() {
+            this.preview = true
+        }
+    },
+    data () {
+        return {
+            loading: false,
+            infor: 1,
+            types: 1,
+            preview: false,
+            data: [
+                {
+                    name: 'VIP订阅',
+                    slat: '¥293.09',
+                    _action: 3,
+                    money: '¥293.09',
+                    aver: '¥293.09'
+                },
+                {
+                    name: 'VIP订阅',
+                    slat: '¥293.09',
+                    _action: 3,
+                    money: '¥293.09',
+                    aver: '¥293.09'
+                },
+                {
+                    name: 'VIP订阅',
+                    slat: '¥293.09',
+                    _action: 3,
+                    money: '¥293.09',
+                    aver: '¥293.09'
+                },
+                {
+                    name: 'VIP订阅',
+                    slat: '¥293.09',
+                    _action: 3,
+                    money: '¥293.09',
+                    aver: '¥293.09'
+                }
+            ],
+            column1: [
+                  {
+                      title: '产品名称',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计销售额',
+                      key: 'slat',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计销售订单',
+                      key: '_action',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计佣金',
+                      key: 'money',
+                      align: 'center'
+                  },
+                  {
+                      title: '平均佣金',
+                      key: 'money',
+                      align: 'center'
+                  }
+              ],
+            column2: [
+                  {
+                      title: '订单号',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '类型',
+                      key: 'slat',
+                      align: 'center'
+                  },
+                  {
+                      title: '时间',
+                      key: '_action',
+                      align: 'center'
+                  },
+                  {
+                      title: '金额',
+                      key: 'money',
+                      align: 'center'
+                  },
+                  {
+                      title: '操作',
+                      slot: 'opt',
+                      align: 'center'
+                  }
+              ]
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.partner-detail {
+    padding-left: 20px;
+    h1 {
+        font-size:24px;
+        color:#3f4047;
+        padding: 10px 0 20px 30px;
+    }
+    .top-col {
+        margin-right: 20px;
+        .ivu-card /deep/ {
+            .ivu-card-head {
+                padding: 28px 0;
+            }
+            .ivu-card-body {
+                padding: 0px;
+            }
+        }
+    }
+    .top-tit {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        .avatr {
+            width: 126px; 
+            height: 126px; 
+            border: 2px solid #f4f5f8;
+            border-radius: 63px;
+            overflow: hidden;
+            margin: 28px 0;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            img {
+                width: 100px;
+                height: 100px;
+            }
+        }
+        .names {
+            font-size: 20px;
+            font-weight: 700;
+            color: #1b1c1e;
+            margin-bottom: 15px;
+        }
+        .msg1 {
+            width: 200px;
+            height: 32px;
+            line-height: 32px;
+            color: #7b7e8a;
+            background: url(../../assets/images/shoujihao.svg) no-repeat left center; 
+            background-size: 26px 26px;
+            padding-left: 40px;
+        }
+        .msg2 {
+            background: url(../../assets/images/youxiang.svg) no-repeat left center;
+            background-size: 26px 26px;
+            margin-top: 5px;
+        }
+    }
+    .bot-tit {
+        padding: 20px 0;
+        div {
+            display: flex;
+            justify-content: center;
+            align-content: center;
+            align-items: center;
+            width: 100%!important;
+            height: 55px!important;
+            line-height: 55px!important;
+            color: #6f727d!important;
+            cursor: pointer;
+            &:hover {
+                span {
+                    color: #475962;
+                }
+            }
+            span {
+                width: 200px;
+                background-size: 20px 20px!important;
+                padding-left: 40px;
+            }
+        }
+        .over-view {
+            span {
+                background: url(../../assets/images/gailan.svg) no-repeat 6px center;
+            }
+        }
+        .basic {
+            span {
+                background: url(../../assets/images/xinxi.svg) no-repeat 6px center; 
+            }
+            i {
+                color: #70b603;
+                margin-left: 40px;
+            }
+        }
+        .fund {
+            span {
+                background: url(../../assets/images/mingxi.svg) no-repeat 6px center;
+            }
+        }
+        .active {
+            background:rgba(247, 248, 250, 1);
+        }
+    }
+    .right-fund {
+        font-size: 16px;
+        color: #575962;
+    }
+    .msg-card {
+        display: flex;
+        justify-content: center;
+        flex-direction: initial;
+        align-items: center;
+        .ivu-card {
+            overflow:hidden;
+            width: 220px;
+        }
+        .ivu-card:not(:last-child) {
+            margin-right: 20px;
+        }
+        .add-time {
+            display: flex;
+            flex-direction: column;
+            align-items: center;
+            font-weight: 700;
+            color: #1b1c1e;
+            .time1 {
+                display: flex;
+                flex-direction: initial;
+                align-items: center;
+                width: 100%;
+                height: 50px;
+                font-size: 15px;
+                img {
+                    width: 50px;
+                    height: 50px;
+                    margin-right: 20px;
+                }
+            }
+            .time2 {
+                font-size: 18px;
+                margin-top: 20px;
+            }
+        }
+    }
+    .infor-card {
+        margin: 30px auto;
+        width: 500px;
+        .con {
+            padding: 5px 30px;
+            font-size: 14px;
+            span {
+                display: inline-block;
+                width: 50%;
+            }
+            .spa2 {
+                text-align: right;
+                
+            }
+            .spa1 {
+                float: left;
+            }
+            img {
+                float: right;
+                width: 192px;
+                height: 197px;
+                margin-bottom: 30px;
+            }
+        }
+    }
+    // .find-btn {
+    //     background: none;
+    //     color:#36a3f7;
+    //     &:focus {
+    //         box-shadow: none;
+    //     }
+    // }
+}
+</style>

+ 162 - 0
src/views/sales/partnerList.vue

@@ -0,0 +1,162 @@
+<template>
+  <div class="huo-ban">
+    <h1>剑鱼伙伴</h1>
+    <table-lists ref="tableLists" v-model="list" :filter="filter" requestApi="/system/request/lists" @loading="load" style="background:#fff;padding:10px">
+      <template slot="filterContent">
+        <FormItem label="类型:" :label-width="50">
+            <Select placeholder="搜索类型" clearable v-model="filter.type" style="width:100px">
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="累计销售:" :label-width="80">
+            <Input style="width: 65px" type="text" v-model="filter.keyword1" placeholder="最小金额" clearable/>
+            <Input style="width: 65px;margin-left: 2px" type="text" v-model="filter.keyword2" placeholder="最大金额" clearable/>
+        </FormItem>
+        <FormItem label="累计佣金:" :label-width="80">
+            <Input style="width: 65px" type="text" v-model="filter.keyword3" placeholder="最小金额" clearable/>
+            <Input style="width: 65px;margin-left: 2px" type="text" v-model="filter.keyword4" placeholder="最大金额" clearable/>
+        </FormItem>
+        <FormItem label="累计单数:" :label-width="80" style="margin-right: 40px">
+            <Input style="width: 65px" type="text" v-model="filter.keyword5" placeholder="最小单数" clearable/>
+            <Input style="width: 65px;margin-left: 2px" type="text" v-model="filter.keyword6" placeholder="最大单数" clearable/>
+        </FormItem>
+      </template>
+      <template slot="filterRight">
+          <Input prefix="md-search" type="text" v-model="filter.keyword7" placeholder="搜索..." clearable class="ser-ipt"/>
+      </template>
+      <Table ellipsis :loading="loading" ref="selection" :columns="columns" :data="list.lists" stripe>
+        <template slot-scope="{ row }" slot="type">
+          <field-map :value="row.type" :map="type"></field-map>
+        </template>
+        <template slot-scope="{ row }" slot="_action">
+          <Tooltip :content="row.call" :max-width="500">
+            {{row.action}}
+          </Tooltip>
+        </template>
+        <template slot="op">
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="primary" 
+            :to="{path:'/sales/partnerList/partnerDetail',query:{id:1}}"
+          >查看</Button>
+        </template>
+      </Table>
+    </table-lists>
+  </div>
+</template>
+<script>
+    // import _ from 'lodash'
+    import marked from 'marked'
+
+    export default {
+        computed: {
+            type () {
+                return this.requestType.map((item) => {
+                    return { v: item.type, n: item.name }
+                })
+            },
+            currentTypeDescription () {
+                let description = "";
+                this.requestType.forEach((item)=>{
+                    if (item.type === this.current.data.type){
+                        description = item.description
+                    }
+                })
+                return marked(description)
+            }
+        },
+        created () {
+            this.$request('/system/request/type').success((r) => {
+                this.requestType = r.data
+            }).get()
+        },
+        methods: {
+          load (val) {
+            this.loading = val
+          }
+        },
+        data () {
+            return {
+              lis: '',
+              loading: false,
+              requestType: [],
+              filter: {
+                  keyword: '',
+                  type: ''
+              },
+              columns: [
+                  {
+                      title: '伙伴名称',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '手机号',
+                      key: 'name',
+                      align: 'center'
+                  },
+                  {
+                      title: '加入时间',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '最后登录日期',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计销售',
+                      key: 'create_time',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计佣金',
+                      align: 'center'
+                  },
+                  {
+                      title: '累计单数',
+                      align: 'center'
+                  },
+                  {
+                      title: '类型',
+                      slot: 'type',
+                      align: 'center'
+                  },
+                  {
+                      title: '操作',
+                      slot: 'op',
+                      align: 'center'
+                  },
+              ],
+              list: [],
+              current: {
+                  show: false,
+                  data: {},
+                  tips: ''
+              }
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.huo-ban {
+  h1 {
+    font-size:24px;
+    color:#3f4047;
+    padding: 10px 0 20px 50px;
+  }
+  // .find-btn {
+  //     background: none;
+  //     color:#36a3f7;
+  //     &:focus {
+  //         box-shadow: none;
+  //     }
+  // }
+  .ser-ipt {
+    width: 162px;
+  }
+}
+</style>

+ 168 - 0
src/views/sales/settleList.vue

@@ -0,0 +1,168 @@
+<template>
+  <div class="jie-suan">
+    <h1>结算列表</h1>
+    <table-lists 
+        ref="tableLists" 
+        v-model="list" 
+        :filter="filter" 
+        :filterType="0" 
+        :filterReset="0" 
+        requestApi="/system/order/dataExport" 
+        style="background:#fff;padding:10px"
+        @loading="load"
+    >
+      <template slot="filterRight">
+          <Input prefix="md-search" type="text" v-model="filter.keyword7" placeholder="搜索..." clearable class="ser-ipt"/>
+      </template>
+      <Table 
+        ellipsis 
+        :loading="loading" 
+        ref="selection" 
+        :columns="columns" 
+        :data="list.lists" 
+        stripe
+        @on-row-click="rowClick"
+        style="margin-top:10px"
+      >
+        <template slot-scope="{ row }" slot="type">
+          <field-map :value="row.type" :map="type"></field-map>
+        </template>
+        <template slot-scope="{ row }" slot="_action">
+          <Tooltip :content="row.call" :max-width="500">
+            {{row.action}}
+          </Tooltip>
+        </template>
+        <template slot="op">
+          <p class="find-btn">已完成</p>
+        </template>
+      </Table>
+    </table-lists>
+  </div>
+</template>
+<script>
+    // import _ from 'lodash'
+    import marked from 'marked'
+
+    export default {
+        computed: {
+            type () {
+                return this.requestType.map((item) => {
+                    return { v: item.type, n: item.name }
+                })
+            },
+            currentTypeDescription () {
+                let description = "";
+                this.requestType.forEach((item)=>{
+                    if (item.type === this.current.data.type){
+                        description = item.description
+                    }
+                })
+                return marked(description)
+            }
+        },
+        created () {
+            this.$request('/system/request/type').success((r) => {
+                this.requestType = r.data
+            }).get()
+        },
+        methods: {
+          load (val) {
+            this.loading = val
+          },
+          rowClick (data) {
+              this.$router.push({path:'/sales/settleList/settleDetail',query:{deType: 'jisuan',id:data.id}})
+          }
+        },
+        data () {
+            return {
+                lis: '',
+                loading: false,
+                requestType: [],
+                filter: {
+                    keyword: '',
+                    type: ''
+                },
+                columns: [
+                    {
+                        title: '结算单号',
+                        key: 'order_code',
+                        align: 'center'
+                    },
+                    {
+                        title: '手机号',
+                        key: 'order_code',
+                        align: 'center'
+                    },
+                    {
+                        title: '结算时间',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '销售金额',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '佣金金额',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '个税金额',
+                        align: 'center',
+                        render: (h, {row}) => {
+                            return h('div',(row.order_money/100).toFixed(2))
+                        }
+                    },
+                    {
+                        title: '认证金额',
+                        align: 'center',
+                        render: (h, {row}) => {
+                            return h('div',(row.order_money/100).toFixed(2))
+                        }
+                    },
+                    {
+                        title: '可提现金额',
+                        key: 'order_money',
+                        className: 'demo-table-info-column',
+                        align: 'center',
+                        render: (h, {row}) => {
+                            return h('div',(row.order_money/100).toFixed(2))
+                        }
+                    },
+                    {
+                        title: '状态',
+                        slot: 'op',
+                        align: 'center'
+                    },
+                ],
+                list: [],
+                current: {
+                    show: false,
+                    data: {},
+                    tips: ''
+                }
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.jie-suan {
+    h1 {
+        font-size:24px;
+        color:#3f4047;
+        padding: 10px 0 20px 50px;
+    }
+    .ivu-table td.demo-table-info-column {
+        color: #f4516c;
+    }
+    .find-btn {
+        color: #34bfa3;
+    }
+    .ser-ipt {
+    width: 200px;
+    }
+}
+</style>

+ 37 - 0
src/views/sales/withdrawDetail.vue

@@ -0,0 +1,37 @@
+<template>
+    <div class="with-detail">
+        <h1>{{$route.query.deType == "tixian" ? "提现" : "结算"}}列表</h1>
+        <div class="det">
+            <div slot="title" class="right-fund">查看详情</div>
+            <Divider />
+            <w-detail :deType="$route.query.deType" :peType="$route.query.peType"></w-detail>
+        </div>
+    </div>
+</template>
+
+<script>
+import wDetail from './components/details'
+export default {
+    components: {
+        wDetail
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.with-detail {
+    .det {
+        background:#fff;
+        padding: 10px 0;
+    }
+    h1 {
+        padding: 10px 0 20px 100px;
+    }
+    .right-fund {
+        font-size: 20px;
+        color: #575962;
+        padding-left: 100px;
+        margin-top: 14px;
+    }
+}
+</style>

+ 199 - 0
src/views/sales/withdrawList.vue

@@ -0,0 +1,199 @@
+<template>
+  <div class="ti-xian">
+    <h1>提现列表</h1>
+    <table-lists 
+        ref="tableLists" 
+        v-model="list" 
+        :filter="filter" 
+        :filterType="0" 
+        :filterReset="0" 
+        requestApi="/system/request/lists" 
+        style="background:#fff;padding:10px" 
+        @loading="load"
+    >
+      <template slot="filterContent">
+        <FormItem label="状态:" :label-width="50">
+            <Select placeholder="全部" clearable v-model="filter.type" style="width:100px">
+                <Option value="全部">全部</Option>
+                <Option v-for="item in type" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+        </FormItem>
+        <FormItem label="提现时间:" :label-width="80" style="margin-right: 40px">
+            <DatePicker type="date" placeholder="起始时间" style="width: 102px" @on-change="handleChange1"></DatePicker>
+            <DatePicker type="date" placeholder="截止时间" style="width: 102px;margin-left:2px" @on-change="handleChange2"></DatePicker>
+        </FormItem>
+        <Button type="primary" @click="exportd">导出结果</Button>
+        <Button type="primary" @click="batch" style="margin-left:30px">批量完成</Button>
+      </template>
+      <template slot="filterRight">
+          <Input prefix="md-search" type="text" v-model="filter.keyword7" placeholder="搜索..." clearable class="ser-ipt"/>
+      </template>
+      <Table ellipsis :loading="loading" ref="selection" :columns="columns" :data="list.lists" stripe>
+        <template slot-scope="{ row }" slot="type">
+          <field-map :value="row.type" :map="type"></field-map>
+        </template>
+        <template slot-scope="{ row }" slot="_action">
+          <Tooltip :content="row.call" :max-width="500">
+            {{row.action}}
+          </Tooltip>
+        </template>
+        <template slot-scope="{ row }" slot="op">
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="primary" 
+            style="margin-right:5px"
+            :to="{path:'/sales/withdrawList/withdrawDetail',query:{id: row.id,deType: 'tixian',peType: '个人'}}"
+          >查看</Button>
+          <Button 
+            class="find-btn" 
+            size="small" 
+            type="primary" 
+            :to="{path:'/sales/withdrawList/withdrawDetail',query:{id: row.id,deType: 'tixian',peType: '个人'}}"
+          >完成</Button>
+        </template>
+      </Table>
+    </table-lists>
+  </div>
+</template>
+<script>
+    // import _ from 'lodash'
+    import marked from 'marked'
+
+    export default {
+        computed: {
+            type () {
+                return this.requestType.map((item) => {
+                    return { v: item.type, n: item.name }
+                })
+            },
+            currentTypeDescription () {
+                let description = "";
+                this.requestType.forEach((item)=>{
+                    if (item.type === this.current.data.type){
+                        description = item.description
+                    }
+                })
+                return marked(description)
+            }
+        },
+        created () {
+            this.$request('/system/request/type').success((r) => {
+                this.requestType = r.data
+            }).get()
+        },
+        methods: {
+          load (val) {
+            this.loading = val
+          },
+          handleChange1 (date) {
+              console.log(date)
+          },
+          handleChange2 (date) {
+              console.log(date)
+          },
+          exportd() {
+            this.$Modal.confirm({
+                title: "确定导出所选内容",
+                onOk: () => {
+                    // this.$request('/system/request/remove').data({ id: row.id }).showSuccessTip().success(() => {
+                    //     this.reload()
+                    // }).get()
+                }
+            });
+          },
+          batch() {
+              this.$Modal.confirm({
+                title: "确定批量完成所选内容",
+                onOk: () => {
+                    // this.$request('/system/request/remove').data({ id: row.id }).showSuccessTip().success(() => {
+                    //     this.reload()
+                    // }).get()
+                }
+            });
+          }
+        },
+        data () {
+            return {
+                lis: '',
+                loading: false,
+                requestType: [],
+                filter: {
+                    keyword: '',
+                    type: ''
+                },
+                columns: [
+                    {
+                        type: 'selection',
+                        width: 60,
+                        align: 'center'
+                    },
+                    {
+                        title: '提现单号',
+                        key: 'name',
+                        align: 'center'
+                    },
+                    {
+                        title: '真实姓名',
+                        key: 'name',
+                        align: 'center'
+                    },
+                    {
+                        title: '手机号',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '提现时间',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '提现金额',
+                        key: 'create_time',
+                        align: 'center'
+                    },
+                    {
+                        title: '提现方式',
+                        align: 'center'
+                    },
+                    {
+                        title: '状态',
+                        align: 'center'
+                    },
+                    {
+                        title: '操作',
+                        slot: 'op',
+                        align: 'center'
+                    },
+                ],
+                list: [],
+                current: {
+                    show: false,
+                    data: {},
+                    tips: ''
+                }
+            }
+        },
+    }
+</script>
+
+<style lang="scss" scoped>
+.ti-xian {
+    h1 {
+        font-size:24px;
+        color:#3f4047;
+        padding: 10px 0 20px 50px;
+    }
+    // .find-btn {
+    //     background: none;
+    //     color:#36a3f7;
+    //     &:focus {
+    //         box-shadow: none;
+    //     }
+    // }
+    .ser-ipt {
+    width: 162px;
+    }
+}
+</style>

+ 16 - 5
src/views/system/auth.vue

@@ -1,6 +1,14 @@
 <template>
-    <div>
-        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" requestApi="/system/auth/lists">
+    <div style="background:#fff;padding:10px">
+        <table-lists 
+            ref="tableLists" 
+            v-model="list" 
+            :filter="filter" 
+            :filterType="2" 
+            :filterReset="0" 
+            requestApi="/system/auth/lists" 
+            @loading="load"
+        >
             <template slot="filterContent">
                 <FormItem>
                     <Input type="text" v-model="filter.keyword" placeholder="搜索关键词"/>
@@ -9,7 +17,7 @@
             <template slot="filterRight">
                 <Button type="success" icon="md-add" @click="add()">添加</Button>
             </template>
-            <Table :columns="columns" :data="list.lists" stripe>
+            <Table :loading="loading" :columns="columns" :data="list.lists" stripe>
                 <template slot-scope="{ row }" slot="_request">
                     <Button size="small" @click="showAssign(row,'request')">
                         关联请求({{row.request.length}})
@@ -26,8 +34,7 @@
                     </Button>
                 </template>
                 <template slot-scope="{ row }" slot="op">
-                    <Button size="small" type="primary" @click="edit(row)" style="margin-right: 5px">编辑
-                    </Button>
+                    <Button size="small" type="primary" @click="edit(row)" style="margin-right: 5px">编辑</Button>
                     <Button size="small" type="error" @click="remove(row)">删除</Button>
                 </template>
             </Table>
@@ -69,6 +76,9 @@
             AssignMenu
         },
         methods: {
+            load (val) {
+                this.loading = val
+            },
             add() {
                 this.current.data = {};
                 this.current.show = true;
@@ -104,6 +114,7 @@
         },
         data() {
             return {
+                loading: false,
                 assign:{
                     data:{},
                     show:{

+ 1 - 1
src/views/system/components/AssignRequest.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-        <table-lists ref="tableLists" v-model="data" :filter="filter" requestApi="/system/auth/getRequest">
+        <table-lists ref="tableLists" v-model="data" :filter="filter" :filterReset="0" requestApi="/system/auth/getRequest">
             <template slot="filterContent">
                 <FormItem>
                     <Input type="text" v-model="filter.keyword" placeholder="搜索关键词"/>

+ 15 - 2
src/views/system/menu.vue

@@ -189,6 +189,11 @@
                     this.lists = menuSort(r.data)
                 }).get()
             },
+            menuLoad() {
+                this.$request("/load").success((r) => {
+                        this.$store.dispatch('initialize', r.data)
+                    }).get()
+            },
             tree(menus, pid, level) {
                 let menu = [];
                 menus.forEach(item => {
@@ -218,6 +223,7 @@
                     onOk: () => {
                         this.$request('/system/menu/remove').data({id: data.menu.id}).showSuccessTip().success(() => {
                             this.load();
+                            this.menuLoad();// 刷新左边菜单
                         }).get();
                     }
                 });
@@ -242,6 +248,7 @@
                 this.$request('/system/menu/save').data(this.current).showSuccessTip().success(() => {
                     this.current = {};
                     this.load();
+                    this.menuLoad();// 刷新左边菜单
                     this.ieEditIng = false;
                 }).post()
             },
@@ -253,7 +260,10 @@
                 let menus = brother.map(function ({id}, sort) {
                     return {id, sort}
                 });
-                this.$request('/system/menu/sort').data({menus}).showSuccessTip().success(() => this.load()).post()
+                this.$request('/system/menu/sort').data({menus}).showSuccessTip().success(() => {
+                    this.load();
+                    this.menuLoad();// 刷新左边菜单
+                }).post()
             },
             up(brother, currentIndex) {
                 let current = brother[currentIndex];
@@ -263,7 +273,10 @@
                 let menus = brother.map(function ({id}, sort) {
                     return {id, sort}
                 });
-                this.$request('/system/menu/sort').data({menus}).showSuccessTip().success(() => this.load()).post()
+                this.$request('/system/menu/sort').data({menus}).showSuccessTip().success(() => {
+                    this.load();
+                    this.menuLoad();// 刷新左边菜单
+                }).post()
             },
             iconSelect() {
                 this.$refs.iconSelect.open();

+ 2 - 2
src/views/system/order/dataExport.vue

@@ -1,6 +1,6 @@
 <template>
-    <div>
-        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" requestApi="/system/order/dataExport">
+    <div style="background:#fff;padding:10px">
+        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" :filterReset="0" requestApi="/system/order/dataExport">
             <template slot="filterContent">
                 <FormItem>
                     <Input type="text" v-model="filter.keyword" placeholder="搜索关键词"/>

+ 53 - 42
src/views/system/request.vue

@@ -1,6 +1,14 @@
 <template>
-  <div>
-    <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" requestApi="/system/request/lists">
+  <div style="background:#fff;padding:10px">
+    <table-lists 
+      ref="tableLists" 
+      v-model="list" 
+      :filter="filter" 
+      :filterType="2" 
+      :filterReset="0" 
+      :requestApi="lis" 
+      @loading="load"
+    >
       <template slot="filterContent">
         <FormItem>
           <Input type="text" v-model="filter.keyword" placeholder="搜索关键词" clearable/>
@@ -14,17 +22,17 @@
       <template slot="filterRight">
         <Button type="success" icon="md-add" @click="add()">添加</Button>
       </template>
-      <Table ref="selection" :columns="columns" :data="list.lists" stripe>
+      <Table :loading="loading" ref="selection" :columns="columns" :data="list.lists" stripe>
         <template slot-scope="{ row }" slot="type">
           <field-map :value="row.type" :map="type"></field-map>
         </template>
         <template slot-scope="{ row }" slot="_action">
-          <Tooltip transfer :content="row.call" :max-width="500">
+          <Tooltip :content="row.call" :max-width="500">
             {{row.action}}
           </Tooltip>
         </template>
         <template slot-scope="{ row }" slot="_auth">
-          <Poptip trigger="click" word-wrap transfer>
+          <Poptip trigger="click" word-wrap>
             <Button size="small">权限({{row.auth.length}})</Button>
             <template slot="content">
               <div v-if="row.auth.length < 1" style="textAlign: center">暂无</div>
@@ -66,6 +74,7 @@
   </div>
 </template>
 <script>
+    import { requestList, reqType } from '../../plugins/api.js'
     import _ from 'lodash'
     import marked from 'marked'
 
@@ -87,45 +96,51 @@
             }
         },
         created () {
-            this.$request('/system/request/type').success((r) => {
+          this.lis = requestList
+            this.$request(reqType).success((r) => {
                 this.requestType = r.data
             }).get()
         },
         methods: {
-            add () {
-                this.current.data = { type: 'default' }
-                this.current.show = true
-            },
-            copy ({ type, name, action, call }) {
-                this.current.data = { type, name, action, call }
-                this.current.show = true
-            },
-            edit (row) {
-                this.current.data = _.cloneDeep(row)
-                this.current.show = true
-            },
-            remove (row) {
-                this.$Modal.confirm({
-                    title: '确认要删除[' + row.name + ']?',
-                    onOk: () => {
-                        this.$request('/system/request/remove').data({ id: row.id }).showSuccessTip().success(() => {
-                            this.reload()
-                        }).get()
-                    }
-                })
-            },
-            save () {
-                this.$request('/system/request/save').data(this.current.data).showSuccessTip().success(() => {
-                    this.reload()
-                    this.current.show = false
-                }).post()
-            },
-            reload () {
-                this.$refs.tableLists.reload(true)
-            }
+          load (val) {
+            this.loading = val
+          },
+          add () {
+              this.current.data = { type: 'default' }
+              this.current.show = true
+          },
+          copy ({ type, name, action, call }) {
+              this.current.data = { type, name, action, call }
+              this.current.show = true
+          },
+          edit (row) {
+              this.current.data = _.cloneDeep(row)
+              this.current.show = true
+          },
+          remove (row) {
+              this.$Modal.confirm({
+                  title: '确认要删除[' + row.name + ']?',
+                  onOk: () => {
+                      this.$request('/system/request/remove').data({ id: row.id }).showSuccessTip().success(() => {
+                          this.reload()
+                      }).get()
+                  }
+              })
+          },
+          save () {
+              this.$request('/system/request/save').data(this.current.data).showSuccessTip().success(() => {
+                  this.reload()
+                  this.current.show = false
+              }).post()
+          },
+          reload () {
+              this.$refs.tableLists.reload(true)
+          }
         },
         data () {
             return {
+              lis: '',
+              loading: false,
               requestType: [],
               filter: {
                   keyword: '',
@@ -142,13 +157,11 @@
                   {
                       title: '名称',
                       key: 'name',
-                      width: 260,
                       align: 'center'
                   },
                   {
                       title: '类型',
                       slot: 'type',
-                      width: 200,
                       align: 'center'
                   },
                   {
@@ -159,8 +172,7 @@
                   {
                       title: '创建时间',
                       key: 'create_time',
-                      align: 'center',
-                      width: 200
+                      align: 'center'
                   },
                   {
                       title: '权限',
@@ -171,7 +183,6 @@
                   {
                       title: '操作',
                       slot: 'op',
-                      width: 200,
                       align: 'center'
                   },
               ],

+ 16 - 4
src/views/system/user.vue

@@ -1,6 +1,14 @@
 <template>
-    <div>
-        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" requestApi="/system/user/lists">
+    <div style="background:#fff;padding:10px">
+        <table-lists 
+            ref="tableLists" 
+            v-model="list" 
+            :filter="filter" 
+            :filterType="2" 
+            :filterReset="0" 
+            requestApi="/system/user/lists" 
+            @loading="load"
+        >
             <template slot="filterContent">
                 <FormItem>
                     <Input type="text" v-model="filter.keyword" placeholder="搜索关键词" clearable/>
@@ -9,12 +17,12 @@
             <template slot="filterRight">
                 <Button type="success" icon="md-add" @click="add()">添加</Button>
             </template>
-            <Table :columns="columns" :data="list.lists" stripe>
+            <Table :loading="loading" :columns="columns" :data="list.lists" stripe>
                 <template slot-scope="{ row }" slot="_status">
                     <field-map :value="row.status" :map="map.status"></field-map>
                 </template>
                 <template slot-scope="{ row }" slot="_group">
-                    <Poptip trigger="click" word-wrap transfer>
+                    <Poptip trigger="click" word-wrap>
                         <Button size="small">用户组({{row.userGroup.length}})</Button>
                         <template slot="content">
                             <div v-if="row.userGroup.length < 1">暂无</div>
@@ -57,6 +65,9 @@
     import _ from "lodash";
     export default {
         methods: {
+            load (val) {
+                this.loading = val
+            },
             add() {
                 this.current.data = {status: 1};
                 this.current.show = true;
@@ -89,6 +100,7 @@
         },
         data() {
             return {
+                loading: false,
                 map: {
                     status: userStatus
                 },

+ 16 - 4
src/views/system/userGroup.vue

@@ -1,6 +1,14 @@
 <template>
-    <div>
-        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" requestApi="/system/userGroup/lists">
+    <div style="background:#fff;padding:10px">
+        <table-lists 
+            ref="tableLists" 
+            v-model="list" 
+            :filter="filter" 
+            :filterType="2" 
+            :filterReset="0" 
+            requestApi="/system/userGroup/lists" 
+            @loading="load"
+        >
             <template slot="filterContent">
                 <FormItem>
                     <Input type="text" v-model="filter.keyword" placeholder="搜索关键词" clearable/>
@@ -9,14 +17,14 @@
             <template slot="filterRight">
                 <Button type="success" icon="md-add" @click="add()">添加</Button>
             </template>
-            <Table :columns="columns" :data="list.lists" stripe>
+            <Table :loading="loading" :columns="columns" :data="list.lists" stripe>
                 <template slot-scope="{ row }" slot="_user">
                     <Button size="small" @click="showAssign(row,'user')">
                         用户({{row.user.length}})
                     </Button>
                 </template>
                 <template slot-scope="{ row }" slot="_auth">
-                    <Poptip trigger="click" word-wrap transfer>
+                    <Poptip trigger="click" word-wrap>
                         <Button size="small">权限({{row.auth.length}})</Button>
                         <template slot="content">
                             <div v-if="row.auth.length < 1">暂无</div>
@@ -57,6 +65,9 @@
             AssignUser
         },
         methods: {
+            load (val) {
+                this.loading = val
+            },
             add() {
                 this.current.data = {};
                 this.current.show = true;
@@ -91,6 +102,7 @@
         },
         data() {
             return {
+                loading: false,
                 assign:{
                     data:{},
                     show:{

+ 16 - 16
vue.config.js

@@ -1,20 +1,20 @@
 module.exports = {
   publicPath: './',
-  // outputDir: "wxlist",
+  outputDir: "dist",
   productionSourceMap: false,
-//   devServer: {
-//     port: '9090',
-//     open: true,
-//     disableHostCheck: true,
-//     proxy: {
-//       '/api': {
-//         target: 'https://cadmin-service-demo.baiy.org',
-//         changeOrigin: true,
-//         ws: true,
-//         pathRewrite: {
-//           '^/api': ''
-//         }
-//       }
-//     }
-//   }
+  // devServer: {
+  //   port: '8080',
+  //   open: true,
+  //   disableHostCheck: true,
+  //   proxy: {
+  //     '/api/admin/': {
+  //       target: 'http://kf-qmx-test.jianyu360.cn',
+  //       changeOrigin: true,
+  //       ws: true,
+  //       pathRewrite: {
+  //         '^/api/admin/': ''
+  //       }
+  //     }
+  //   }
+  // }
 }

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно