Browse Source

打包提交

panhui 7 years ago
parent
commit
0c3a7d3f2d
100 changed files with 1048 additions and 140 deletions
  1. 5 5
      src/main/java/com/izouma/awesomeadmin/web/MainController.java
  2. 39 36
      src/main/vue/src/RongIM/index.js
  3. 5 2
      src/main/vue/src/components/OrderItem.vue
  4. 0 1
      src/main/vue/src/entries/index.js
  5. 60 10
      src/main/vue/src/pagesPre/App.vue
  6. 171 41
      src/main/vue/src/pagesPre/ChatContent.vue
  7. 1 1
      src/main/vue/src/pagesPre/Product.vue
  8. 4 1
      src/main/vue/src/pagesPre/Shop.vue
  9. 570 0
      src/main/vue/src/pagesPre/StoreChat.vue
  10. 65 10
      src/main/vue/src/pagesPre/UserCenter.vue
  11. 35 4
      src/main/vue/src/pagesPre/UserShop.vue
  12. 56 26
      src/main/vue/src/routerPre/index.js
  13. 5 1
      src/main/vue/src/vuexPre/index.js
  14. 1 1
      src/main/webapp/WEB-INF/html/admin.html
  15. 27 0
      src/main/webapp/WEB-INF/html/index.html
  16. 0 0
      src/main/webapp/static/css/admin.da4f73e09f989b1618ebd295c1c6c122.css
  17. 1 0
      src/main/webapp/static/css/index.470ccda77c3658c3b2ad63e5c43dac30.css
  18. BIN
      src/main/webapp/static/img/Bitmap.f2538fd.png
  19. BIN
      src/main/webapp/static/img/Group1.bc4ac51.png
  20. BIN
      src/main/webapp/static/img/Group3.b1bbf30.png
  21. BIN
      src/main/webapp/static/img/contact1.d256d9d.png
  22. BIN
      src/main/webapp/static/img/join.999e208.png
  23. BIN
      src/main/webapp/static/img/loginBanner.500b551.png
  24. BIN
      src/main/webapp/static/img/logo.7b3265d.png
  25. BIN
      src/main/webapp/static/img/logoWhite.10121e4.png
  26. BIN
      src/main/webapp/static/img/nothingImg.63517a7.png
  27. BIN
      src/main/webapp/static/img/pay1.8861760.png
  28. BIN
      src/main/webapp/static/img/pay2.5e2b411.png
  29. BIN
      src/main/webapp/static/img/pay3.9459474.png
  30. BIN
      src/main/webapp/static/img/quckmenu.79af477.png
  31. 1 1
      src/main/webapp/static/img/weathericons-regular-webfont.f34c392.svg
  32. 0 0
      src/main/webapp/static/js/0.740e830a488fc4d9cbd6.js
  33. 0 0
      src/main/webapp/static/js/0.e086ef0c1ae90139e684.js
  34. 0 0
      src/main/webapp/static/js/1.7ea428a744a3dd94387a.js
  35. 0 0
      src/main/webapp/static/js/1.f51d3a141f940358f394.js
  36. 0 0
      src/main/webapp/static/js/10.b149b39f6702a59910aa.js
  37. 0 0
      src/main/webapp/static/js/10.b60fbe97ca1935257270.js
  38. 0 0
      src/main/webapp/static/js/100.75d8cbd295993a1e3591.js
  39. 1 0
      src/main/webapp/static/js/101.7c44d94544b337042b42.js
  40. 0 0
      src/main/webapp/static/js/102.07fa56cf68ddf2c80a74.js
  41. 0 0
      src/main/webapp/static/js/103.e7b085c57a498d8a3cbf.js
  42. 0 0
      src/main/webapp/static/js/104.5319925329101c5c575b.js
  43. 0 0
      src/main/webapp/static/js/105.695fa3d246c81d980ae8.js
  44. 0 0
      src/main/webapp/static/js/106.c17e6facbe498899e58e.js
  45. 0 0
      src/main/webapp/static/js/107.0b15a7b23c59bb37fe70.js
  46. 0 0
      src/main/webapp/static/js/108.4254d729b1cd64151e2d.js
  47. 0 0
      src/main/webapp/static/js/109.42417464f3f911d6afa0.js
  48. 0 0
      src/main/webapp/static/js/11.db2685fe936f484c4e19.js
  49. 0 0
      src/main/webapp/static/js/110.a0a684be46d31accd24a.js
  50. 0 0
      src/main/webapp/static/js/111.d0bc0138eb9ed0bb74d7.js
  51. 0 0
      src/main/webapp/static/js/112.d5a7dd6c46ea5ca459b6.js
  52. 0 0
      src/main/webapp/static/js/113.9bb79c3edbc8bc65d249.js
  53. 0 0
      src/main/webapp/static/js/114.d1de78377d3a58fbe03f.js
  54. 0 0
      src/main/webapp/static/js/115.d99c752b1208922fef2c.js
  55. 0 0
      src/main/webapp/static/js/116.c6b9a61b9ea99a024eaa.js
  56. 0 0
      src/main/webapp/static/js/117.47f084887f5b79d5d225.js
  57. 0 0
      src/main/webapp/static/js/118.557f9ee4f9df8790f780.js
  58. 0 0
      src/main/webapp/static/js/119.28dad383deb03adc9416.js
  59. 0 0
      src/main/webapp/static/js/12.72f1fbf4e275546d6297.js
  60. 0 0
      src/main/webapp/static/js/12.af5c1c0d3ce99e7fc791.js
  61. 0 0
      src/main/webapp/static/js/120.5626c77ebb4b0026cb08.js
  62. 0 0
      src/main/webapp/static/js/121.eb4c8279b28fe5487c58.js
  63. 0 0
      src/main/webapp/static/js/122.1c19f7102756a8b4e75e.js
  64. 0 0
      src/main/webapp/static/js/123.d57d120e896b25dc9968.js
  65. 0 0
      src/main/webapp/static/js/124.88ae28a841eba3d5e45d.js
  66. 1 0
      src/main/webapp/static/js/125.c8a3ef7d70bf525906b2.js
  67. 0 0
      src/main/webapp/static/js/126.b42dc955583f184220e4.js
  68. 0 0
      src/main/webapp/static/js/127.8aa6ac39faeec0edb1f9.js
  69. 0 0
      src/main/webapp/static/js/128.5e0809ba3c776b757789.js
  70. 0 0
      src/main/webapp/static/js/129.7118949c93b8283438e1.js
  71. 0 0
      src/main/webapp/static/js/13.73b4a386e5c561dd3b2a.js
  72. 0 0
      src/main/webapp/static/js/13.a7d93bd9f8d179582dc2.js
  73. 0 0
      src/main/webapp/static/js/130.83c738c8d067efc62e28.js
  74. 0 0
      src/main/webapp/static/js/131.ea248181e9eb71cc6bf5.js
  75. 0 0
      src/main/webapp/static/js/132.c57d668a19e754bdfbd1.js
  76. 0 0
      src/main/webapp/static/js/133.42ac012a225c6f5fa6ed.js
  77. 0 0
      src/main/webapp/static/js/134.c061a76d0601ab82a377.js
  78. 0 0
      src/main/webapp/static/js/135.460d1ba9ea3e8fdb1b16.js
  79. 0 0
      src/main/webapp/static/js/136.de367c3363ec76daf299.js
  80. 0 0
      src/main/webapp/static/js/137.53734c596da4e4daa99c.js
  81. 0 0
      src/main/webapp/static/js/138.2f30083705e4c96d628b.js
  82. 0 0
      src/main/webapp/static/js/139.fbd82d35c9eaaa8d5157.js
  83. 0 0
      src/main/webapp/static/js/14.6a5b0f021b14311ca00e.js
  84. 0 0
      src/main/webapp/static/js/14.d5da232cfab2ecca6899.js
  85. 0 0
      src/main/webapp/static/js/140.f288f435e12ce7525e43.js
  86. 0 0
      src/main/webapp/static/js/141.340492d60e398800860b.js
  87. 0 0
      src/main/webapp/static/js/142.4f11469e2381621eb481.js
  88. 0 0
      src/main/webapp/static/js/143.31684323cfd582e352d6.js
  89. 0 0
      src/main/webapp/static/js/144.03bf71d695c4e7f0e7e0.js
  90. 0 0
      src/main/webapp/static/js/145.ead951dc9bb416c945ac.js
  91. 0 0
      src/main/webapp/static/js/146.364e47a273ec603265c2.js
  92. 0 0
      src/main/webapp/static/js/147.7ab136beb06b3dbe791a.js
  93. 0 0
      src/main/webapp/static/js/148.a5bf7c482aa6210712e7.js
  94. 0 0
      src/main/webapp/static/js/149.4e147248c54166745922.js
  95. 0 0
      src/main/webapp/static/js/15.a43ed683cbff25e53c1c.js
  96. 0 0
      src/main/webapp/static/js/15.f9cd592279a3f3462052.js
  97. 0 0
      src/main/webapp/static/js/150.b25d8e718fe43f4042f8.js
  98. 0 0
      src/main/webapp/static/js/151.6974c78c7dffc8bd2198.js
  99. 0 0
      src/main/webapp/static/js/152.8d21fdd65c62ba32517f.js
  100. 0 0
      src/main/webapp/static/js/153.0dbc4b3223f1f3f44627.js

+ 5 - 5
src/main/java/com/izouma/awesomeadmin/web/MainController.java

@@ -18,11 +18,11 @@ import javax.servlet.http.HttpServletRequest;
 public class MainController {
 
 
-    @RequestMapping(value = "/index", method = RequestMethod.GET)
-    @ResponseBody
-    public ModelAndView home() {
-        return new ModelAndView("redirect:/admin");
-    }
+//    @RequestMapping(value = "/index", method = RequestMethod.GET)
+//    @ResponseBody
+//    public ModelAndView home() {
+//        return new ModelAndView("redirect:/admin");
+//    }
 
     @RequestMapping("/{viewName}")
     public ModelAndView index(HttpServletRequest request, @PathVariable("viewName") String viewName) {

+ 39 - 36
src/main/vue/src/RongIM/index.js

@@ -8,21 +8,23 @@ export default {
         Vue.prototype.$IM = this
     },
     init(appKey, token) {
+
+
         console.log(appKey, token)
         RongIMLib.RongIMClient.init(appKey)
-
         RongIMLib.RongIMClient.setOnReceiveMessageListener({
             onReceived: (message) => {
-                console.log('onReceiveMessage', message)
+                console.log(message)
                 if (message.messageType === RongIMClient.MessageType.TextMessage) {
                     store.dispatch('receiveMessage', {
                         content: message.content.content,
-                        contentType: 1,
+                        contentType: 0,
                         state: 0,
                         time: message.sentTime,
-                        toUserId: store.state.userInfo.id,
-                        userId: message.senderUserId,
-                        storeId: message.content.extra ? message.content.extra : null
+                        // toUserId: store.state.userInfo.id,
+                        userId: message.content.extra.userId,
+                        storeId: message.content.extra ? message.content.extra.storeId : null,
+                        typeFlag: message.content.extra.typeFlag
                     })
                 }
             }
@@ -53,11 +55,13 @@ export default {
         let target = options.target || ''
         let content = options.content || ''
         let userId = options.userId || ''
-        let typeFlag = options.typeFlag || 0
+        let typeFlag = Number(options.typeFlag)
         let customer = options.customer || ''
         let msg = new RongIMLib.TextMessage(content)
         let success = options.success || function() {}
 
+        console.log(options)
+
         RongIMClient.getInstance().sendMessage(RongIMLib.ConversationType.PRIVATE, typeFlag ? userId : customer, msg, {
             onSuccess: (message) => {
                 // let formData = {
@@ -70,6 +74,8 @@ export default {
                 //     'typeFlag': typeFlag
                 // }
 
+                console.log(message)
+
                 var formData = new FormData()
                 formData.append('content', content.content)
                 formData.append('contentType', 0)
@@ -78,7 +84,7 @@ export default {
                 formData.append('storeId', target)
                 formData.append('userId', userId)
                 formData.append('typeFlag', typeFlag)
-                formData.append('customer', customer)
+                formData.append('serviceName', customer)
 
 
                 // vue.$http.post(api.saveChatInfo, formData).then(res => { success(res.body.data) })
@@ -97,47 +103,44 @@ export default {
         })
     },
     newConversation: (options) => {
-        let userId = store.state.userInfo.id
-        let toUserId = options.toUserId
+        let userId = options.userId
         let storeId = options.storeId
+        let type = options.type
         let success = options.success || function() {}
 
         function addConversation() {
             let index = _.findIndex(store.state.conversationList, i => {
-                    if (storeId) {
-                        return Number(i.storeId) === Number(storeId) && projectId === i.projectId
-                    } else {
-                        return Number(i.toUserId) === Number(toUserId)
-                    }
-
-                })
-                // if (index === -1) {
-                //     let newCon = {
-                //         'userId': store.state.userInfo.id,
-                //         'toUserId': toUserId
-                //     }
-
-            //     if (projectId) {
-            //         newCon.projectId = projectId
-            //             // newCon.append('projectId', projectId)
-            //     }
-            //     // return vue.$http.post(api.addConversation, newCon)
-
-            //     return axios.post('/usersSession/save', newCon)
-            // } else {
-            return new Promise((resolve, reject) => resolve())
-                // }
+                if (storeId) {
+                    return Number(i.storeId) === Number(storeId) && Number(userId) === Number(i.userId) && Number(type) === Number(i.type)
+                }
+
+            })
+            if (index === -1) {
+
+                var newCon = new FormData()
+                newCon.append('userId', userId)
+                newCon.append('storeId', storeId)
+                newCon.append('type', type)
+
+
+                // return vue.$http.post(api.addConversation, newCon)
+
+                return axios.post('/usersSession/save', newCon)
+            } else {
+                return new Promise((resolve, reject) => resolve())
+            }
         }
 
         addConversation().then(() => {
             return axios.get('/usersSession/all', {
                 params: {
-                    userId: store.state.userInfo.id
+                    userId: store.state.userInfo.id,
+                    type: 1
                 }
             })
         }).then(res => {
-            if (res.success) {
-                store.commit('updateConversationList', res.data)
+            if (res.data.success) {
+                store.commit('updateConversationList', res.data.data)
                 success()
             }
         })

+ 5 - 2
src/main/vue/src/components/OrderItem.vue

@@ -4,12 +4,12 @@
             <span style="margin-left:25px;">{{getTime(info.createTime)}}</span>
             <span style="margin-left:30px;">订单号:{{info.orderCode}}</span>
 
-            <span style="float:right;position: relative;" v-if="type=='user'">
+            <span style="float:right;position: relative;cursor: pointer;" v-if="type=='user'">
                 <span style="margin-right:66px;">店铺:{{info.productInfo.storeInfo.storeName}}</span>
                 <img style="width:30px;height:25px;position: absolute;right: 30px;top: 9px;" src="../assetsPre/kefu.png" alt="">
             </span>
 
-            <span style="float:right;position: relative;" v-else>
+            <span style="float:right;position: relative;cursor: pointer;" v-else  @click="goChat">
                 <span style="margin-right:66px;">用户:{{info.userInfo.nickname}}</span>
                 <img style="width:30px;height:25px;position: absolute;right: 30px;top: 9px;" src="../assetsPre/kefu.png" alt="">
             </span>
@@ -202,6 +202,9 @@ export default {
 
 
             window.location.href = baseUrl + '/orderImage/zipFilesDown?orderId=' + this.info.id + '&typeFlag=' + typeFlag
+        },
+        goChat(){
+            window.open(window.location.origin + window.location.pathname + '?storeId=' + this.info.storeId + '#/storeChat?chatUserId='+this.info.userId)
         }
     }
 }

+ 0 - 1
src/main/vue/src/entries/index.js

@@ -41,7 +41,6 @@ axios.defaults.baseURL = baseUrl;
 Vue.prototype.$http = {
     get(params) {
         return new Promise((resolve, reject) => {
-            console.log('xxx')
             if (params instanceof String) {
                 params = { url: params };
             } else if (!params instanceof Object) {

+ 60 - 10
src/main/vue/src/pagesPre/App.vue

@@ -52,20 +52,22 @@
                 </div>
             </div>
             <keep-alive exclude="shop,product">
-                <router-view ref='child'></router-view>
+                <router-view ref='child' @startChat='startChat'></router-view>
             </keep-alive>
             <logo-foot :isBottom='false'></logo-foot>
         </div>
 
         <div class="little-menu">
-            <div class="little-item" @click="sendMsg">
-                <img src="../assetsPre/fankui1.png" style="width:17px;height:18px;" alt="">
-                <div>咨询</div>
+            <div class="little-item" @click="sendMsg" >
+                <el-badge is-dot :hidden="hasNew==0">
+                    <img src="../assetsPre/fankui1.png" style="width:17px;height:18px;" alt="">
+                    <div>咨询</div>
+                </el-badge>
             </div>
-            <div class="little-item">
+            <!-- <div class="little-item">
                 <img src="../assetsPre/fankui2.png" style="width:20px;height:20px;" alt="">
                 <div>反馈</div>
-            </div>
+            </div> -->
             <div class="little-item" @click="goTop">
                 <img src="../assetsPre/fankui3.png" style="width:24px;height:20px;" alt="">
             </div>
@@ -156,14 +158,14 @@ export default {
             nowMenu: 0,
             searchKey: '',
             lineLeft: -2,
-            isBottom: false
+            isBottom: false,
         }
     },
     beforeDestroy() {
         eventBus.$off('receiveMessage', this.onReceiveMessage)
     },
     computed: {
-        ...mapState(['userInfo', 'serviceType', 'conversationList']),
+        ...mapState(['userInfo', 'serviceType', 'conversationList','IMConnected','myStoreInfo']),
         lineWidth() {
             var width = 40
             if (document.getElementById('menuItem' + this.nowMenu)) {
@@ -193,6 +195,16 @@ export default {
                 }
             })
             return list
+        },
+        routeName() {
+            return this.$route.name
+        },
+        hasNew() {
+            var num = 0
+            this.conversationList.forEach(item => {
+                num += item.amount
+            })
+            return num
         }
     },
     methods: {
@@ -232,10 +244,48 @@ export default {
             })
         },
         onReceiveMessage(message) {
-            console.log('收到啦' + JSON.stringify(message))
+            this.$http.get({
+                url: '/usersSession/all',
+                data: {
+                    userId: this.userInfo.id,
+                    type: 1
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.$store.commit('updateConversationList', res.data)
+                }
+            })
+
         },
         sendMsg() {
-            this.$refs.chatContent.showBox = true
+            if (!this.userInfo) {
+                this.$router.push({
+                    name: 'login'
+                })
+            }
+            else if( this.userInfo.storeFlag=='Y' ){
+                 window.open(window.location.origin + window.location.pathname + '?storeId=' + this.myStoreInfo.id + '#/storeChat')
+            }
+            else {
+                this.$refs.chatContent.showBox = true
+                this.$refs.chatContent.isLeft = true
+                this.$refs.chatContent.storeId = 0
+                this.$refs.chatContent.canBack = true
+            }
+
+        },
+        startChat(id) {
+            if (!this.userInfo) {
+                this.$router.push({
+                    name: 'login'
+                })
+            }
+            else {
+                this.$refs.chatContent.showBox = true
+                this.$refs.chatContent.storeId = id
+                this.$refs.chatContent.getChatInfo(id)
+                this.$refs.chatContent.canBack = false
+            }
         }
     },
     watch: {

+ 171 - 41
src/main/vue/src/pagesPre/ChatContent.vue

@@ -8,7 +8,7 @@
                 </div>
                 <div class='leftList' v-if="conversationList.length>0">
 
-                    <div class="left-item" v-for="item in conversationList" @click="readAll(item)">
+                    <div class="left-item" v-for="(item,index) in conversationList" @click="readAll(item)">
                         <img class="icon" :src="item.storeInfo.icon+'?x-oss-process=image/resize,m_fill,h_40,w_40'" alt="">
                         <div class="content">
                             <div class="name">{{item.storeInfo.storeName}}</div>
@@ -19,13 +19,16 @@
                             </el-badge>
                             <span>{{getTime(item.updateTime)}}</span>
                         </div>
+                        <div class="close" @click.stop='del(item,index)'>
+                            <i class="el-icon-error"></i>
+                        </div>
 
                     </div>
 
                 </div>
 
                 <div class="nothing" v-else>
-                    还没有聊天记录哦,快去和人聊天吧~
+                    还没有聊天记录哦,快去咨询店铺吧~
                 </div>
 
             </div>
@@ -37,14 +40,14 @@
                     <span>{{storeInfo.storeName}}</span>
                     <span style="font-size:14px;margin-left:20px;">{{storeInfo.citye}}</span>
                 </div>
-                <div class="chatList" ref='chatList'>
+                <div class="chatList" ref='chatList' @scroll='scrollChat'>
                     <div class="chat-item" v-for="item in orderedHistory" :style="{flexDirection:item.typeFlag?'row':'row-reverse'}">
                         <img class="icon" :src="(item.typeFlag?storeInfo.icon:userInfo.icon)+'?x-oss-process=image/resize,m_fill,h_40,w_40'" alt="">
                         <div class="chatInfo">{{item.content}}</div>
                     </div>
                 </div>
                 <div class="inputContent">
-                    <el-input type="textarea" maxlength="200" resize='none' :autosize="{ minRows:6}" placeholder="请输入内容" v-model="textarea3">
+                    <el-input type="textarea" @keydown="keyDownEvent" maxlength="200" resize='none' :autosize="{ minRows:6}" placeholder="请输入内容" v-model="textarea3">
                     </el-input>
 
                     <el-button type="primary" class="submit" @click="send">发送</el-button>
@@ -64,23 +67,26 @@
 import { mapState } from 'vuex'
 import moment from 'moment'
 import 'moment/locale/zh-cn'
+import eventBus from '../eventBus'
 export default {
     created() {
-        if (this.$route.name == 'shop') {
-            this.storeId = this.$route.query.id
-            this.getChatInfo(this.storeId)
-            this.canBack = false
-        }
-        else if (this.$route.name == 'product') {
-            this.storeId = this.$route.query.storeId
-            this.getChatInfo(this.storeId)
-            this.canBack = false
-        }
-        else {
-            this.isLeft = true
-            this.storeId = 0
-            this.canBack = true
-        }
+        eventBus.$on('receiveMessage', this.onReceiveMessage)
+        // if (this.$route.name == 'shop') {
+        //     this.storeId = this.$route.query.id
+        //     this.getChatInfo(this.storeId)
+        //     this.canBack = false
+        // }
+        // else if (this.$route.name == 'product') {
+        //     this.storeId = this.$route.query.storeId
+        //     this.getChatInfo(this.storeId)
+        //     this.canBack = false
+        // }
+        // else {
+
+        // }
+        this.isLeft = true
+        this.storeId = 0
+        this.canBack = true
     },
     name: 'chatContent',
     data() {
@@ -93,7 +99,8 @@ export default {
             currentPage: 1,
             isLeft: true,
             showBox: false,
-            canBack: true
+            canBack: true,
+            chatFlag: false
         }
     },
     computed: {
@@ -102,27 +109,38 @@ export default {
             return this.chatList.sort((a, b) => {
                 return a.time - b.time
             })
+        },
+        coventIndex() {
+            var index = -1
+            if (this.storeId) {
+                this.conversationList.forEach((item, i) => {
+                    if (item.storeId == this.storeId && item.userId == this.userInfo.id) {
+                        index = i
+                    }
+                });
+            }
+            return index
         }
     },
     watch: {
-        $route() {
-            console.log(this.$route.name)
-            if (this.$route.name == 'shop') {
-                this.storeId = this.$route.query.id
-                this.getChatInfo(this.storeId)
-                this.canBack = false
-            }
-            else if (this.$route.name == 'product') {
-                this.storeId = this.$route.query.storeId
-                this.getChatInfo(this.storeId)
-                this.canBack = false
-            }
-            else {
-                this.isLeft = true
-                this.storeId = 0
-                this.canBack = true
-            }
-        },
+        // $route() {
+        //     console.log(this.$route.name)
+        //     if (this.$route.name == 'shop') {
+        //         this.storeId = this.$route.query.id
+        //         this.getChatInfo(this.storeId)
+        //         this.canBack = false
+        //     }
+        //     else if (this.$route.name == 'product') {
+        //         this.storeId = this.$route.query.storeId
+        //         this.getChatInfo(this.storeId)
+        //         this.canBack = false
+        //     }
+        //     else {
+        //         this.isLeft = true
+        //         this.storeId = 0
+        //         this.canBack = true
+        //     }
+        // },
         isLeft() {
             if (!this.isLeft) {
                 this.goBottom()
@@ -134,16 +152,22 @@ export default {
             }
         }
     },
+    beforeDestroy() {
+        eventBus.$off('receiveMessage', this.onReceiveMessage)
+    },
     methods: {
-        readAll(item) {
+        readAll(item, type) {
             this.$http.get({
                 url: '/chatInfo/readAll',
                 data: {
                     storeId: item.storeId,
                     userId: item.userId,
-                    typeFlag: 0
+                    typeFlag: 1
                 }
             })
+            if (type) {
+                return
+            }
             this.storeId = item.storeId
             this.getChatInfo(item.storeId)
         },
@@ -167,6 +191,10 @@ export default {
             }).then(res => {
                 if (res.success) {
                     this.storeInfo = res.data
+
+
+
+
                 }
             }).catch(e => {
                 console.log(e)
@@ -183,7 +211,9 @@ export default {
                             res.data.splice(0, 0, item)
                         }
                     })
+                    console.log(res.data)
                     this.customerList = res.data
+                    console.log(this.customerList)
 
                 }
             }).catch(e => {
@@ -196,6 +226,7 @@ export default {
 
         },
         getPageChat() {
+            this.chatFlag = false
             this.$http.get({
                 url: '/chatInfo/page',
                 data: {
@@ -210,6 +241,50 @@ export default {
                         this.chatList.push(item)
                     });
 
+                    if (res.data.currentPage < res.data.totalPage) {
+                        this.chatFlag = true
+                    }
+
+                    if (this.chatList.length == 0) {
+                        setTimeout(() => {
+                            // this.$IM.newConversation({
+                            //     userId: this.userInfo.id,
+                            //     type: 0,
+                            //     storeId: this.storeId,
+                            //     success: (res) => {
+
+                            //     }
+                            // })
+
+                            // this.$IM.newConversation({
+                            //     userId: this.userInfo.id,
+                            //     type: 1,
+                            //     storeId: this.storeId,
+                            //     success: (res) => {
+
+                            //     }
+                            // })
+                            this.$http.post({
+                                url: '/chatInfo/save',
+                                data: {
+                                    'content': '您好,感谢您对' + this.storeInfo.storeName + '的关注,我们会尽快回复您的咨询。',
+                                    'contentType': 0,
+                                    'state': 1,
+                                    'storeId': this.storeId,
+                                    'userId': this.userInfo.id,
+                                    'typeFlag': 1
+                                }
+                            }).then(res2 => {
+                                if (res2.success) {
+                                    this.chatList.push(res2.data)
+                                }
+                            })
+                        }, 1000)
+                    }
+
+
+
+
                     // this.chatList = res.data.pp
 
                 }
@@ -227,6 +302,8 @@ export default {
 
         },
         send() {
+
+
             var customer = ''
             if (this.customerList.length > 0) {
                 customer = this.customerList[0].username
@@ -235,7 +312,11 @@ export default {
                 target: this.storeId,
                 content: {
                     content: this.textarea3,
-                    extra: this.storeId
+                    extra: {
+                        storeId: this.storeId,
+                        typeFlag: "0",
+                        userId: this.userInfo.id.toString()
+                    }
                 },
                 userId: this.userInfo.id,
                 typeFlag: 0,
@@ -247,6 +328,43 @@ export default {
                     this.goBottom()
                 }
             })
+        },
+        onReceiveMessage(message) {
+            if (!this.isLeft && message.storeId == this.storeId) {
+                this.chatList.push(message)
+                console.log('收到啦' + JSON.stringify(message))
+                this.goBottom()
+                this.readAll({
+                    storeId: this.storeId,
+                    userId: this.userInfo.userId,
+                }, 1)
+            }
+
+        },
+        del(item, index) {
+            console.log(item)
+
+
+            this.$http.post({
+                url: '/usersSession/del',
+                data: {
+                    id: item.id
+                }
+            }).then(res => {
+                if (res.success) {
+                    var list = [...this.conversationList]
+                    list.splice(index, 1)
+                    this.$store.commit('updateConversationList', list);
+                }
+            })
+        },
+        scrollChat() {
+            if (this.$refs.chatList.scrollTop == 0 && this.chatFlag) {
+                this.getChatInfo()
+            }
+        },
+        keyDownEvent(e) {
+            console.log(e)
         }
     }
 }
@@ -300,6 +418,7 @@ export default {
 
     .left {
         width: 300px;
+        min-height: 583px;
 
         .item {
             display: block;
@@ -351,6 +470,17 @@ export default {
             &:not(:last-child) {
                 border-bottom: 1px solid #ebebeb;
             }
+
+            .close {
+                color: #999;
+                display: none;
+            }
+
+            &:hover {
+                .close {
+                    display: block;
+                }
+            }
         }
 
         .nothing {

+ 1 - 1
src/main/vue/src/pagesPre/Product.vue

@@ -73,7 +73,7 @@
                     <span>{{storeInfo.reworkRate}}%</span>
                 </div>
 
-                <div class="ask">
+                <div class="ask" v-if="userInfo.storeFlag=='N'">
                     <img src="../assetsPre/kefu.png" alt="">
                     <span>在线咨询</span>
                 </div>

+ 4 - 1
src/main/vue/src/pagesPre/Shop.vue

@@ -38,7 +38,7 @@
                 <el-button v-if="collectID" type="warning" icon="el-icon-star-on" @click="collect" class="collection" size="mini">已收藏</el-button>
                 <el-button v-else type="warning" icon="el-icon-star-off" @click="collect" class="collection" size="mini" plain>收藏店铺</el-button>
 
-                <div class="ask">
+                <div class="ask" @click="chat" v-if='userInfo.storeFlag=="N"'>
                     <img src="../assetsPre/kefu.png" alt="">
                     <span>在线咨询</span>
                 </div>
@@ -339,6 +339,9 @@ export default {
                 console.log(e)
             })
 
+        },
+        chat(){
+            this.$emit("startChat",this.$route.query.id)
         }
     },
     components: {

+ 570 - 0
src/main/vue/src/pagesPre/StoreChat.vue

@@ -0,0 +1,570 @@
+<template>
+    <div class="conatiner">
+        <div class="content" v-if="!Customer">
+            <div class="title">
+                选择登录客服
+            </div>
+            <div class="customerList">
+
+                <div class="customerItem" v-for="item in customerList" @click="useCustomer(item)">
+                    <img :src="item.icon+'?x-oss-process=image/resize,m_mfit,h_120,w_120'" style="border-radius:100%;width:120px;height:120px" />
+                    <div class="name">{{item.serviceName}}</div>
+                </div>
+            </div>
+
+            <el-pagination v-if="totalNumber>pageSize" style="margin-top:50px" background @current-change="currentPageChange" :current-page="currentPage" :page-size="pageSize" layout="total, prev, pager, next" :total="totalNumber">
+            </el-pagination>
+        </div>
+
+        <div class="chatContent" v-else>
+            <div class="top">
+                <img class="icon" :src="myStoreInfo.icon+'?x-oss-process=image/resize,m_fill,h_50,w_50'" alt="">
+                <span style="font-weight:bold;">{{myStoreInfo.storeName}}</span>
+                <span style="font-size:14px;margin-left:20px;">客服{{Customer.username}}</span>
+                <img style="margin-left:5px" :src="Customer.icon+'?x-oss-process=image/resize,m_fill,h_30,w_30'" alt="">
+            </div>
+
+            <div class="chatmain">
+                <div class="left">
+                    <div class="left-content">
+                        <div class="left-item" :class="{active:chatUserId==item.userId}" v-for="(item,index) in storeConversationList" @click="readAll(item)">
+                            <img class="icon" :src="item.storeInfo.icon+'?x-oss-process=image/resize,m_fill,h_40,w_40'" alt="">
+                            <div class="chatName">
+                                <div class="name">{{item.storeInfo.storeName}}</div>
+                                <div class="subtitle" v-if="item.chatInfo">{{item.chatInfo.content}}</div>
+                            </div>
+                            <div class="time" v-if="item.amount">
+                                <el-badge :value="item.amount" :hidden='item.amount?false:true' class='item'>
+                                </el-badge>
+                                <span>{{getTime(item.updateTime)}}</span>
+                            </div>
+                            <div class="close" @click.stop='del(item,index)'>
+                                <i class="el-icon-error"></i>
+                            </div>
+
+                        </div>
+                    </div>
+                </div>
+                <div class="right" v-if="chatUserId">
+                    <div class="chatList" ref='chatList'>
+                        <div class="chat-item" v-for="item in orderedHistory" :style="{flexDirection:item.typeFlag?'row-reverse':'row'}">
+                            <img class="icon" :src="(item.typeFlag?myStoreInfo.icon:item.icon)+'?x-oss-process=image/resize,m_fill,h_40,w_40'" alt="">
+                            <div class="chatInfo">{{item.content}}</div>
+                            <span class="serviceName" v-if="item.typeFlag">{{item.serviceName}}</span>
+                        </div>
+                    </div>
+                    <div class="inputContent">
+                        <el-input type="textarea" maxlength="200" resize='none' :autosize="{ minRows:6}" placeholder="请输入内容" v-model="textarea3">
+                        </el-input>
+
+                        <el-button type="primary" class="submit" @click="send">发送</el-button>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+import orderItem from '../components/OrderItem'
+import moment from 'moment'
+import 'moment/locale/zh-cn'
+import eventBus from '../eventBus'
+export default {
+    name: 'order',
+    created() {
+        eventBus.$on('receiveMessage', this.onReceiveMessage)
+        if (this.$route.query.chatUserId) {
+            this.chatUserId = this.$route.query.chatUserId
+        }
+    },
+    data() {
+        return {
+            customerList: [],
+            totalNumber: 0,
+            totalPage: 10,
+            currentPage: 1,
+            pageSize: 5,
+            Customer: null,
+            chatUserId: null,
+            chatCurrent: 1,
+            chatFlag: false,
+            chatList: [],
+            textarea3: ''
+        }
+    },
+    computed: {
+        ...mapState(['userInfo', 'myStoreInfo', 'storeConversationList']),
+        orderedHistory() {
+            return this.chatList.sort((a, b) => {
+                return a.time - b.time
+            })
+        }
+    },
+    mounted() {
+        this.getData()
+
+    },
+    beforeDestroy() {
+        eventBus.$off('receiveMessage', this.onReceiveMessage)
+    },
+    methods: {
+        getCustomer() {
+            this.$http.get({
+                url: '/customerService/all',
+                data: {
+                    storeId: this.myStoreInfo.id,
+                    useFlag: 'Y'
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.customerList = res.data
+                }
+            })
+        },
+        getData() {
+
+            var data = {
+                currentPage: this.currentPage,
+                pageNumber: this.pageSize,
+                storeId: this.userInfo.storeInfo.id,
+                useFlag: 'Y'
+            }
+            this.$http.get({
+                url: '/customerService/page',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.totalNumber = res.data.page.totalNumber;
+                    this.customerList = res.data.pp;
+                }
+            })
+        },
+        currentPageChange(page) {
+            this.currentPage = page;
+            this.getData();
+        },
+        useCustomer(item) {
+            this.Customer = item
+            this.$http.get({
+                url: '/rong/getToken',
+                data: {
+                    rongKey: item.username,
+                }
+            }).then(res => {
+                if (res.appKey && res.token) {
+                    this.$IM.init(res.appKey, res.token)
+                }
+            })
+
+            this.$http.get({
+                url: '/usersSession/all',
+                data: {
+                    storeId: this.myStoreInfo.id,
+                    type: 0
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.$store.commit('updateStoreConversationList', res.data)
+                }
+            }).catch(e => {
+                console.log(e)
+            })
+
+            if (this.chatUserId) {
+                this.getChatInfo(this.chatUserId)
+                this.goBottom()
+            }
+
+
+        },
+        readAll(item, type) {
+            this.$http.get({
+                url: '/chatInfo/readAll',
+                data: {
+                    storeId: item.storeId,
+                    userId: item.userId,
+                    typeFlag: 0
+                }
+            })
+            if (type) {
+                return
+            }
+            this.chatUserId = item.userId
+            this.getChatInfo(item.userId)
+            this.goBottom()
+        },
+        getChatInfo(id) {
+            this.chatList = []
+            this.chatCurrent = 1
+            this.getPageChat()
+        },
+        getPageChat() {
+            this.chatFlag = false
+            this.$http.get({
+                url: '/chatInfo/page',
+                data: {
+                    currentPage: this.chatCurrent,
+                    pageNumber: 10,
+                    storeId: this.myStoreInfo.id,
+                    userId: this.chatUserId
+                }
+            }).then(res => {
+                if (res.success) {
+                    res.data.pp.forEach(item => {
+                        this.chatList.push(item)
+                    });
+
+                    if (res.data.currentPage < res.data.totalPage) {
+                        this.chatFlag = true
+                    }
+
+                    if (this.chatList.length == 0) {
+                        setTimeout(() => {
+                            this.$http.post({
+                                url: '/chatInfo/save',
+                                data: {
+                                    'content': '您好,感谢您在' + this.storeInfo.storeName + '店铺下的订单。',
+                                    'contentType': 0,
+                                    'state': 0,
+                                    'storeId': this.myStoreInfo.id,
+                                    'userId': this.chatUserId,
+                                    'typeFlag': 1
+                                }
+                            }).then(res2 => {
+                                if (res2.success) {
+                                    this.chatList.push(res2.data)
+                                    this.updateList()
+                                }
+                            })
+                        }, 1000)
+                    }
+                }
+            }).catch(e => {
+                console.log(e)
+            })
+        },
+        getTime(str) {
+            var time = ''
+            if (str) {
+                time = moment(str).fromNow()
+            }
+            return time
+        },
+        del(item, index) {
+            console.log(item)
+
+            if (item.id == this.chatUserId) {
+                this.chatUserId = ''
+            }
+
+
+            this.$http.post({
+                url: '/usersSession/del',
+                data: {
+                    id: item.id
+                }
+            }).then(res => {
+                if (res.success) {
+                    var list = [...this.storeConversationList]
+                    list.splice(index, 1)
+                    this.$store.commit('updateStoreConversationList', list);
+                }
+            })
+        },
+        goBottom() {
+            setTimeout(() => {
+                if (this.$refs.chatList) {
+                    this.$refs.chatList.scrollTop = this.$refs.chatList.scrollHeight
+                }
+
+            }, 50)
+
+        },
+        send() {
+
+            this.$IM.sendMessage({
+                target: this.myStoreInfo.id,
+                content: {
+                    content: this.textarea3,
+                    extra: {
+                        storeId: this.myStoreInfo.id,
+                        typeFlag: "1",
+                        userId: this.chatUserId
+                    }
+                },
+                userId: this.chatUserId.toString(),
+                typeFlag: 1,
+                customer: this.Customer.username,
+                success: (res) => {
+                    this.textarea3 = ''
+                    console.log(res)
+                    this.chatList.push(res)
+                    this.goBottom()
+                    this.updateList()
+                }
+            })
+        },
+        onReceiveMessage(message) {
+            console.log(message)
+            if (this.chatUserId == message.userId) {
+                message.icon = this.chatList[0].icon
+                this.chatList.push(message)
+                this.goBottom()
+                this.readAll({
+                    storeId: message.storeId,
+                    userId: message.userId,
+                }, 1)
+            }
+            else {
+                this.$http.get({
+                    url: '/usersSession/all',
+                    data: {
+                        storeId: this.myStoreInfo.id,
+                        type: 0
+                    }
+                }).then(res => {
+                    if (res.success) {
+                        this.$store.commit('updateStoreConversationList', res.data)
+                    }
+                }).catch(e => {
+                    console.log(e)
+                })
+            }
+
+        },
+        updateList(){
+            this.$http.get({
+                    url: '/usersSession/all',
+                    data: {
+                        storeId: this.myStoreInfo.id,
+                        type: 0
+                    }
+                }).then(res => {
+                    if (res.success) {
+                        this.$store.commit('updateStoreConversationList', res.data)
+                    }
+                }).catch(e => {
+                    console.log(e)
+                })
+        }
+    },
+    components: {
+        orderItem
+    }
+}
+</script>
+
+<style lang="less" scoped>
+.conatiner {
+    background-color: rgba(0, 0, 0, 0.4);
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
+.content {
+    width: 1190px;
+    height: 610px;
+    background-color: #fff;
+    margin: 100px auto;
+    border: 1px solid #ebebeb;
+    border-radius: 4px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    .title {
+        font-size: 30px;
+        font-weight: bold;
+        color: #000;
+        margin-bottom: 50px;
+    }
+}
+
+.customerList {
+    display: flex;
+    align-items: center;
+    justify-content: space-around;
+    min-width: 500px;
+    .customerItem {
+        padding: 20px;
+        cursor: pointer;
+        .name {
+            text-align: center;
+            font-size: 24px;
+            line-height: 30px;
+            font-weight: bold;
+            margin-top: 5px;
+        }
+
+        &:hover {
+            opacity: 0.9;
+        }
+    }
+}
+
+.chatContent {
+    width: 1190px;
+    height: 610px;
+    background-color: #fff;
+    margin: 100px auto;
+    // border: 1px solid #ebebeb;
+    border-radius: 4px;
+    display: flex;
+    flex-direction: column;
+
+    .top {
+        display: flex;
+        align-items: center;
+        padding: 10px 20px;
+        background: linear-gradient(151deg, rgba(27, 184, 172, 1) 0%, rgba(0, 142, 205, 1) 100%);
+        box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2);
+        border-radius: 4px;
+        min-height: 50px;
+
+        img {
+            border-radius: 100%;
+            margin-right: 20px;
+        }
+
+        span {
+            font-size: 16px;
+        }
+    }
+
+    .chatmain {
+        flex-grow: 1;
+        display: flex;
+        align-self: stretch;
+        .left {
+            width: 25%;
+            overflow: auto;
+            border-right: 1px solid #ebebeb;
+
+            .left-item {
+                padding: 10px;
+                display: flex;
+                align-items: center;
+                cursor: pointer;
+
+                &.active {
+                    background-color: #ebebeb;
+                }
+
+                .icon {
+                    border-radius: 100%;
+                    min-width: 40px;
+                }
+
+                .chatName {
+                    flex-grow: 1;
+                    margin-left: 5px;
+                    overflow: hidden;
+                    .name {
+                        font-size: 16px;
+                        color: #333;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap;
+                    }
+
+                    .subtitle {
+                        font-size: 12px;
+                        color: #999;
+                        margin-top: 5px;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        white-space: nowrap;
+                    }
+                }
+
+                .time {
+                    font-size: 12px;
+                    color: #999;
+                    display: flex;
+                    flex-direction: column;
+                    text-align: right;
+                    min-width: 60px;
+                }
+
+                // &:not(:last-child) {
+                border-bottom: 1px solid #ebebeb;
+                // }
+
+                .close {
+                    color: #999;
+                    display: none;
+                    margin-left: 10px;
+                }
+
+                &:hover {
+                    .close {
+                        display: block;
+                    }
+                }
+            }
+        }
+        .right {
+            width: 75%;
+            display: flex;
+            flex-direction: column;
+            .chatList {
+                // height: 425px;
+                overflow: auto;
+                // border-bottom: 1px solid #ebebeb;
+                padding-bottom: 20px;
+                flex-grow: 1;
+            }
+            .inputContent {
+                position: relative;
+                .submit {
+                    position: absolute;
+                    bottom: 16px;
+                    right: 23px;
+                    width: 93px;
+                }
+            }
+            .chat-item {
+                display: flex;
+                align-items: flex-start;
+                margin-top: 10px;
+                padding: 0 15px;
+                position: relative;
+                .serviceName {
+                    position: absolute;
+                    right: 35px;
+                    bottom: 0;
+                    font-size: 12px;
+                    color: #666;
+                    width: 40px;
+                    text-align: center;
+                    overflow: hidden;
+                    text-overflow: ellipsis;
+                    white-space: nowrap;
+                }
+                .icon {
+                    min-width: 40px;
+                    margin: 0 20px;
+                    border-radius: 100%;
+                }
+
+                .chatInfo {
+                    // flex-grow: 1;
+
+                    padding: 10px 20px;
+                    font-size: 14px;
+                    font-weight: 400;
+                    color: rgb(12, 4, 4);
+                    line-height: 20px;
+                    border: 1px solid #979797;
+                    border-radius: 4px;
+                    margin-top: 18px;
+                }
+            }
+        }
+    }
+}
+</style>

+ 65 - 10
src/main/vue/src/pagesPre/UserCenter.vue

@@ -41,6 +41,10 @@
                         </el-menu>
                     </el-aside>
                     <el-main :style="{paddingLeft:nowMenuList.length>0?'20px':0}">
+
+                        <el-alert v-if="coveListNum>0" :title="'当前有'+coveListNum+'条未读消息,请尽快去客户咨询处回复。'" type="warning" show-icon style='margin-bottom:10px;'>
+                        </el-alert>
+
                         <router-view ref='child'></router-view>
                     </el-main>
                 </el-container>
@@ -58,8 +62,27 @@
 import miniHead from '../components/MiniHead'
 import menuFoot from '../pagesPre/MenuFoot'
 import logoFoot from '../pagesPre/LogoFoot'
+import { mapState } from 'vuex'
 export default {
     name: 'order',
+    mounted() {
+        if (this.pageMenu == '商家中心') {
+            this.$http.get({
+                url: '/usersSession/all',
+                data: {
+                    storeId: this.userInfo.storeInfo.id,
+                    type: 0
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.$store.commit('updateStoreConversationList', res.data)
+                }
+            }).catch(e => {
+                console.log(e)
+
+            })
+        }
+    },
     data() {
         return {
             isBottom: false,
@@ -79,11 +102,11 @@ export default {
                         index: '3',
                         href: 'userComment'
                     }
-                    // , {
-                    //     name: '我的图库',
-                    //     index: '4'
-                    // }
-                    , {
+                        // , {
+                        //     name: '我的图库',
+                        //     index: '4'
+                        // }
+                        , {
                         name: '我的积分',
                         index: '6',
                         href: 'memberPoint'
@@ -122,11 +145,11 @@ export default {
                     }, {
                         name: '店铺评论',
                         index: '4',
-                        href:'storeComment'
+                        href: 'storeComment'
                     }, {
                         name: '客户咨询',
                         index: '5',
-                        href: 'userComment'
+                        href: 'userChat'
                     }],
                     '账户设置': [{
                         name: '客服管理',
@@ -139,8 +162,27 @@ export default {
         }
     },
     watch: {
+        $route() {
+            if (this.pageMenu == '商家中心') {
+                this.$http.get({
+                    url: '/usersSession/all',
+                    data: {
+                        storeId: this.userInfo.storeInfo.id,
+                        type: 0
+                    }
+                }).then(res => {
+                    if (res.success) {
+                        this.$store.commit('updateStoreConversationList', res.data)
+                    }
+                }).catch(e => {
+                    console.log(e)
+
+                })
+            }
+        }
     },
     computed: {
+        ...mapState(['storeConversationList', 'myStoreInfo']),
         pageMenu() {
             var str = '个人中心'
             if (this.$route.meta.pageMenu) {
@@ -170,6 +212,13 @@ export default {
                 menu = 1
             }
             return menu
+        },
+        coveListNum() {
+            var num = 0
+            this.storeConversationList.forEach(item => {
+                num += item.amount
+            })
+            return num
         }
     },
     mounted() {
@@ -177,9 +226,15 @@ export default {
     methods: {
         goNext(nextName) {
             if (nextName) {
-                this.$router.push({
-                    name: nextName,
-                })
+                if (nextName == 'userChat') {
+                    window.open(window.location.origin + window.location.pathname + '?storeId=' + this.myStoreInfo.id + '#/storeChat')
+                }
+                else {
+                    this.$router.push({
+                        name: nextName,
+                    })
+                }
+
             }
 
         },

+ 35 - 4
src/main/vue/src/pagesPre/UserShop.vue

@@ -20,10 +20,10 @@
             <div class="top-item" style="width:38%">
                 存储空间
                 <div class="line">
-                    <div class="use">
-                        <span>已用 850G</span>
+                    <div class="use" :style="{width:useWidth+'%'}">
+                        <span style="position: absolute;">已用 {{isUseSize}}G</span>
                     </div>
-                    <span>可用150G</span>
+                    <span style="position: absolute;right:0;">可用{{canUse}}G</span>
 
                 </div>
                 <img style="width:17px;height:17px; vertical-align: middle;" src="../assetsPre/add.png" alt="">
@@ -51,11 +51,23 @@ export default {
     name: 'order',
     data() {
         return {
-            orderList: []
+            orderList: [],
+            isUseSize:0
         }
     },
     computed: {
         ...mapState(['userInfo', 'myStoreInfo']),
+        canUse(){
+            var num=this.myStoreInfo.memorySpace/1024
+            num=num-parseFloat(this.isUseSize)
+
+            return num.toFixed(0)
+        },
+        useWidth(){
+            var num=0
+            num=parseFloat(this.isUseSize)/parseFloat(this.myStoreInfo.memorySpace/1024)
+            return (num*100).toFixed(0)
+        }
     },
     mounted() {
         this.$http.get({
@@ -74,6 +86,22 @@ export default {
 
         })
 
+
+
+        this.$http.get({
+            url: '/orderImage/getMemorySize',
+            data: {
+              storeId: this.myStoreInfo.id
+            }
+        }).then(res => {
+            if (res.success) {
+                this.isUseSize=(res.data.totalSize/1024).toFixed(2)
+            }
+        }).catch(e => {
+            console.log(e)
+
+        })
+
     },
     methods: {
 
@@ -161,6 +189,7 @@ export default {
             font-size: 0;
             text-align: left;
             margin: 0 10px;
+            position: relative;
 
             .use {
                 width: 180px;
@@ -173,6 +202,7 @@ export default {
                     color: #fff;
                     float: left;
                     margin-left: 10px;
+                    text-shadow: #666 0.1em 0.1em 0.2em
                 }
             }
             span {
@@ -184,6 +214,7 @@ export default {
                 vertical-align: middle;
                 float: right;
                 margin-right: 10px;
+                // text-shadow: black 0.1em 0.1em 0.2em
             }
         }
     }

+ 56 - 26
src/main/vue/src/routerPre/index.js

@@ -373,6 +373,15 @@ const router = new Router({
             name: 'login',
             component: () =>
                 import ('../pagesPre/Login')
+        }, {
+            path: '/storeChat',
+            name: 'storeChat',
+            component: () =>
+                import ('../pagesPre/StoreChat'),
+            meta: {
+                checkLogin: true,
+                title: '客服聊天',
+            }
         },
         {
             path: '/404',
@@ -406,7 +415,7 @@ router.beforeEach((to, from, next) => {
         axios.get('/usersSession/all', {
             params: {
                 userId: store.state.userInfo.id,
-                type: 0
+                type: 1
             }
         }).then(res => {
             if (res.data.success) {
@@ -420,31 +429,9 @@ router.beforeEach((to, from, next) => {
             if (res.status === 200) {
                 if (res.data.success && res.data.data) {
                     store.commit('updateUserInfo', res.data.data);
-                    axios.get('rong/getToken?rongKey=' + store.state.userInfo.id)
-                        .then(res => {
-                            if (res.data.appKey && res.data.token) {
-                                RongIM.init(res.data.appKey, res.data.token)
-                            }
-                        })
-                        .catch(e => {
-                            console.log(e)
-                        })
-
-                    axios.get('/usersSession/all', {
-                        params: {
-                            userId: store.state.userInfo.id,
-                            type: 0
-                        }
-                    }).then(res => {
-                        if (res.data.success) {
-                            store.commit('updateConversationList', res.data.data)
-                        }
-                    })
-
-
-
-                    if (store.state.userInfo.storeFlag == 'Y') {
-                        axios.get('storeInfo/getOne?userId=' + store.state.userInfo.id)
+                    console.log(getQueryString('storeId'))
+                    if (getQueryString('storeId')) {
+                        axios.get('storeInfo/getOne?id=' + getQueryString('storeId'))
                             .then(res => {
                                 if (res.data.success) {
                                     store.commit('updateStoreInfo', res.data.data);
@@ -453,10 +440,45 @@ router.beforeEach((to, from, next) => {
                             .catch(e => {
                                 console.log(e)
                             })
+                    } else {
+
+                        if (store.state.userInfo.storeFlag == 'Y') {
+
+                            axios.get('storeInfo/getOne?userId=' + store.state.userInfo.id)
+                                .then(res => {
+                                    if (res.data.success) {
+                                        store.commit('updateStoreInfo', res.data.data);
+                                    }
+                                })
+                                .catch(e => {
+                                    console.log(e)
+                                })
+                        } else {
+                            axios.get('/usersSession/all', {
+                                params: {
+                                    userId: store.state.userInfo.id,
+                                    type: 1
+                                }
+                            }).then(res => {
+                                if (res.data.success) {
+                                    store.commit('updateConversationList', res.data.data)
+                                }
+                            })
+                            axios.get('rong/getToken?rongKey=' + store.state.userInfo.id)
+                                .then(res => {
+                                    if (res.data.appKey && res.data.token) {
+                                        RongIM.init(res.data.appKey, res.data.token)
+                                    }
+                                })
+                                .catch(e => {
+                                    console.log(e)
+                                })
+                        }
                     }
 
 
 
+
                     next()
                     return;
                 }
@@ -483,4 +505,12 @@ router.afterEach((to, from) => {
     window.onresize();
 });
 
+function getQueryString(name) {
+    let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
+    let r = window.location.search.substr(1).match(reg)
+    if (r != null) return unescape(r[2])
+    return null
+}
+
+
 export default router;

+ 5 - 1
src/main/vue/src/vuexPre/index.js

@@ -21,7 +21,8 @@ export default new Vuex.Store({
         }, //订单状态
         IMConnected: false,
         conversationList: [],
-        myStoreInfo: {}
+        myStoreInfo: {},
+        storeConversationList: []
     },
     mutations: {
         updateTableHeight(state, height) {
@@ -70,6 +71,9 @@ export default new Vuex.Store({
                 state.conversationList.splice(index, 1)
             }
         },
+        updateStoreConversationList(state, conversationList) {
+            state.storeConversationList = conversationList
+        },
         updateConversationList(state, conversationList) {
             // state.conversationList = conversationList.map(item => {
             //     return {

+ 1 - 1
src/main/webapp/WEB-INF/html/admin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.9181f5d0547aa2d387417530a535c3b9.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.152a6abf74ab3490721e.js></script><script type=text/javascript src=/static/js/vendor.01b93b1069baaa2f0da9.js></script><script type=text/javascript src=/static/js/admin.b87537cd97fc25bdecc3.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.da4f73e09f989b1618ebd295c1c6c122.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.bbae90170d73baa607fa.js></script><script type=text/javascript src=/static/js/vendor.56194c28c58ef2af2fdb.js></script><script type=text/javascript src=/static/js/admin.12be83e20111b1ad918d.js></script></body></html>

+ 27 - 0
src/main/webapp/WEB-INF/html/index.html

@@ -0,0 +1,27 @@
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>图途象</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><script type=text/javascript src="https://webapi.amap.com/maps?v=1.4.8&key=dd8f1d46b89cb06d842c321d0d021672"></script><script src=http://cdn.ronghub.com/RongIMLib-2.2.5.min.js></script><style>#app {
+            width: 100%;
+            height: 100%;
+            overflow: auto;
+            position: absolute;
+            top: 0;
+            left: 0;
+        }</style><link href=/static/css/index.470ccda77c3658c3b2ad63e5c43dac30.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.bbae90170d73baa607fa.js></script><script type=text/javascript src=/static/js/vendor.56194c28c58ef2af2fdb.js></script><script type=text/javascript src=/static/js/index.9acb49ce3db31962e115.js></script></body><script>var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
+    var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
+    var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
+    var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
+    if (isIE) {
+        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
+        reIE.test(userAgent);
+        var fIEVersion = parseFloat(RegExp["$1"]);
+        if (fIEVersion == 11) {
+
+        } else {
+            alert('检测到浏览器使用的ie内核版本过低,为了更好的用户体验,请切换成极速模式,或者更换360等其他类型浏览器')
+        }
+    } else if (isEdge) {
+
+    } else if (isIE11) {
+
+    } else {
+
+    }</script></html>

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/css/admin.da4f73e09f989b1618ebd295c1c6c122.css


File diff suppressed because it is too large
+ 1 - 0
src/main/webapp/static/css/index.470ccda77c3658c3b2ad63e5c43dac30.css


BIN
src/main/webapp/static/img/Bitmap.f2538fd.png


BIN
src/main/webapp/static/img/Group1.bc4ac51.png


BIN
src/main/webapp/static/img/Group3.b1bbf30.png


BIN
src/main/webapp/static/img/contact1.d256d9d.png


BIN
src/main/webapp/static/img/join.999e208.png


BIN
src/main/webapp/static/img/loginBanner.500b551.png


BIN
src/main/webapp/static/img/logo.7b3265d.png


BIN
src/main/webapp/static/img/logoWhite.10121e4.png


BIN
src/main/webapp/static/img/nothingImg.63517a7.png


BIN
src/main/webapp/static/img/pay1.8861760.png


BIN
src/main/webapp/static/img/pay2.5e2b411.png


BIN
src/main/webapp/static/img/pay3.9459474.png


BIN
src/main/webapp/static/img/quckmenu.79af477.png


+ 1 - 1
src/main/webapp/static/img/weathericons-regular-webfont.ecaf8b4.svg → src/main/webapp/static/img/weathericons-regular-webfont.f34c392.svg

@@ -102,7 +102,7 @@
 <glyph unicode="&#xf04e;" horiz-adv-x="851" d="M0 1027q0 41 40.5 108t77.5 111q10 12 25 29.5t17 19.5l39 -46q44 -49 81 -114t37 -108q0 -66 -45.5 -113t-111.5 -47t-113 47t-47 113zM333 584q0 46 26 107.5t64 113.5q73 98 140 163q7 5 28 26l27 -26q62 -59 141 -162q41 -55 66.5 -115t25.5 -107q0 -110 -75 -184.5 t-185 -74.5q-108 0 -183 76t-75 183zM495 1320q0 69 107 181l27 -30q30 -35 54 -78.5t24 -72.5q0 -44 -30.5 -73.5t-74.5 -29.5q-46 0 -76.5 29.5t-30.5 73.5z" />
 <glyph unicode="&#xf050;" horiz-adv-x="2539" d="M0 521q0 -39 30 -66q26 -30 67 -30h1567q46 0 78 -32t32 -79q0 -46 -31.5 -76.5t-78.5 -30.5t-78 31q-26 28 -64 28q-40 0 -68.5 -27.5t-28.5 -65.5q0 -40 30 -67q90 -88 209 -88q125 0 214 86t89 210t-89.5 213.5t-213.5 89.5h-1567q-40 0 -68.5 -28t-28.5 -68zM0 871 q0 -37 30 -65q28 -28 67 -28h2138q125 0 214.5 87t89.5 210q0 124 -89.5 212t-214.5 88q-123 0 -208 -85q-29 -26 -29 -71q0 -41 27.5 -67t67.5 -26q39 0 67 26q30 33 75 33q46 0 77.5 -32t31.5 -78t-31.5 -77t-77.5 -31h-2138q-40 0 -68.5 -28t-28.5 -68z" />
 <glyph unicode="&#xf051;" horiz-adv-x="2613" d="M0 693q0 40 32 74q36 31 75 31h248q43 0 72 -31t29 -74q0 -46 -29 -77t-72 -31h-248q-43 0 -75 32.5t-32 75.5zM355 1544q0 43 28 73q36 31 75 31q42 0 73 -31l175 -176q30 -35 30 -74q0 -45 -29 -75t-70 -30q-39 0 -75 31l-179 173q-28 34 -28 78zM568 104q0 45 31 73 q28 28 73 28h281l332 312q16 13 36 0l337 -312h295q43 0 73.5 -29.5t30.5 -71.5q0 -43 -30.5 -74t-73.5 -31h-361q-16 0 -31 8l-257 242l-255 -242q-13 -8 -30 -8h-347q-43 0 -73.5 31t-30.5 74zM667 693q0 -155 66 -282q4 -19 27 -19h201q12 0 16 9t-2 20 q-102 123 -102 272q0 180 128 306t308 126q179 0 305.5 -126t126.5 -306q0 -150 -101 -272q-7 -11 -3.5 -20t16.5 -9h203q21 0 25 19q66 123 66 282q0 130 -51 248t-136.5 203.5t-203.5 136t-247 50.5q-130 0 -248.5 -50.5t-205 -136t-137.5 -203.5t-51 -248zM1203 1648v245 q0 46 30 75.5t76 29.5q45 0 74.5 -30t29.5 -75v-245q0 -46 -29.5 -75.5t-74.5 -29.5q-46 0 -76 29.5t-30 75.5zM1880 1367q0 40 29 74l173 176q31 31 75 31t74 -30.5t30 -73.5q0 -46 -28 -78l-180 -173q-34 -31 -75 -31q-43 0 -70.5 29.5t-27.5 75.5zM2159 693q0 43 28.5 74 t70.5 31h251q43 0 74 -31t31 -74q0 -44 -31 -76t-74 -32h-251q-43 0 -71 31t-28 77z" />
-<glyph unicode="&#xf052;" horiz-adv-x="2585" d="M0 681q0 44 32 72q28 28 73 28h246q43 0 71 -28.5t28 -71.5q0 -45 -28.5 -75.5t-70.5 -30.5h-246q-43 0 -74 31.5t-31 74.5zM351 1519q0 45 27 72q32 32 75 32q46 0 72 -32l173 -174q74 -70 0 -144q-30 -30 -69 -30q-35 0 -72 30l-179 174q-27 29 -27 72zM561 103 q0 42 32 74q29 29 72 29h343q17 0 30 -8l251 -237l255 237q11 8 31 8h352q43 0 73.5 -30t30.5 -73t-30.5 -73.5t-73.5 -30.5h-286l-335 -303q-20 -14 -35 0l-329 303h-277q-43 0 -73.5 30.5t-30.5 73.5zM661 681q0 -159 62 -280q9 -17 29 -17h199q13 0 16 8t-8 19 q-95 119 -95 270q0 176 126 299.5t304 123.5q176 0 301.5 -124t125.5 -299q0 -151 -95 -270q-11 -11 -8 -19t16 -8h201q21 0 26 17q66 125 66 280q0 127 -50.5 244.5t-135.5 202.5t-202 135.5t-245 50.5t-245 -50.5t-202 -135.5t-135.5 -202.5t-50.5 -244.5zM1190 1621v248 q0 43 30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5v-248q0 -43 -30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5zM1859 1345q0 45 28 72l174 174q26 32 72 32q44 0 73 -30.5t29 -73.5q0 -45 -27 -72l-177 -174q-37 -30 -74 -30q-42 0 -70 29.5t-28 72.5zM2135 681 q0 43 28 71.5t71 28.5h247q43 0 73.5 -29t30.5 -71q0 -43 -30.5 -74.5t-73.5 -31.5h-247q-42 0 -70.5 30.5t-28.5 75.5z" />
+<glyph unicode="&#xf052;" horiz-adv-x="2585" d="M0 681q0 44 32 72q28 28 73 28h246q43 0 71 -28.5t28 -71.5q0 -45 -28.5 -75.5t-70.5 -30.5h-246q-43 0 -74 31.5t-31 74.5zM351 1519q0 45 27 72q32 32 75 32q46 0 72 -32l173 -174q74 -70 0 -144q-30 -30 -69 -30q-35 0 -72 30l-179 174q-27 29 -27 72zM561 103 q0 42 32 74q29 29 72 29h343q17 0 30 -8l251 -237l255 237q11 8 31 8h352q43 0 73.5 -30t30.5 -73t-30.5 -73.5t-73.5 -30.5h-286l-335 -303q-20 -14 -35 0l-329 303h-277q-43 0 -73.5 30.5t-30.5 73.5zM661 681q0 -159 62 -280q9 -17 29 -17h199q13 0 16 8t-8 19 q-95 119 -95 270q0 176 126 299.5t304 123.5q176 0 301.5 -124t125.5 -299q0 -151 -95 -270q-11 -11 -8 -19t16 -8h201q21 0 26 17q66 125 66 280q0 127 -50.5 244.5t-135.5 202.5t-202 135.5t-245 50.5t-245 -50.5t-202 -135.5t-135.5 -202.5t-50.5 -244.5zM1196 1621v248 q0 43 30.5 73.5t73.5 30.5t73.5 -30.5t30.5 -73.5v-248q0 -43 -30.5 -73.5t-73.5 -30.5t-73.5 30.5t-30.5 73.5zM1859 1345q0 45 28 72l174 174q26 32 72 32q44 0 73 -30.5t29 -73.5q0 -45 -27 -72l-177 -174q-37 -30 -74 -30q-42 0 -70 29.5t-28 72.5zM2135 681 q0 43 28 71.5t71 28.5h247q43 0 73.5 -29t30.5 -71q0 -43 -30.5 -74.5t-73.5 -31.5h-247q-42 0 -70.5 30.5t-28.5 75.5z" />
 <glyph unicode="&#xf053;" horiz-adv-x="1085" d="M0 245q0 136 63 253.5t176 196.5v1058q0 128 88 217t216 89q129 0 217.5 -89t88.5 -217v-1058q113 -79 175 -196.5t62 -253.5q0 -148 -72.5 -273t-197.5 -197.5t-273 -72.5q-147 0 -272 72.5t-198 197.5t-73 273zM187 245q0 -149 104.5 -254.5t251.5 -105.5 q149 0 256.5 107t107.5 253q0 100 -51.5 184.5t-140.5 131.5l-30 15q-16 7 -16 31v1146q0 52 -36 86t-90 34q-52 0 -88.5 -34t-36.5 -86v-1146q0 -24 -15 -31l-29 -15q-88 -47 -137.5 -131t-49.5 -185z" />
 <glyph unicode="&#xf054;" horiz-adv-x="538" d="M0 245q0 -114 78 -194t188 -80t191 80.5t81 193.5q0 101 -69 178t-168 91v783q0 10 -11 20.5t-24 10.5q-14 0 -22.5 -9t-8.5 -22v-783q-98 -14 -166.5 -91t-68.5 -178z" />
 <glyph unicode="&#xf055;" horiz-adv-x="1085" d="M0 245q0 136 63 253.5t176 196.5v1058q0 128 88 217t216 89q129 0 217.5 -89t88.5 -217v-1058q113 -79 175 -196.5t62 -253.5q0 -148 -72.5 -273t-197.5 -197.5t-273 -72.5q-147 0 -272 72.5t-198 197.5t-73 273zM187 245q0 -149 104.5 -254.5t251.5 -105.5 q149 0 256.5 107t107.5 253q0 100 -51.5 184.5t-140.5 131.5l-30 15q-16 7 -16 31v1146q0 52 -36 86t-90 34q-52 0 -88.5 -34t-36.5 -86v-1146q0 -24 -15 -31l-29 -15q-88 -47 -137.5 -131t-49.5 -185zM270 245q0 -114 78 -194t188 -80t191 80.5t81 193.5q0 101 -69.5 178 t-168.5 91v783q0 10 -10.5 20.5t-23.5 10.5q-14 0 -22.5 -9t-8.5 -22v-783q-98 -14 -166.5 -91t-68.5 -178z" />

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/0.740e830a488fc4d9cbd6.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/0.e086ef0c1ae90139e684.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/1.7ea428a744a3dd94387a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/1.f51d3a141f940358f394.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/10.b149b39f6702a59910aa.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/10.b60fbe97ca1935257270.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/100.75d8cbd295993a1e3591.js


+ 1 - 0
src/main/webapp/static/js/101.7c44d94544b337042b42.js

@@ -0,0 +1 @@
+webpackJsonp([101],{TH6L:function(e,t){},Wh3M:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"form",staticStyle:{"max-width":"500px"},attrs:{model:e.formData,rules:e.rules,"label-width":"80px","label-position":"right",size:"small"}},[a("el-form-item",{attrs:{prop:"dataruleName",label:"权限名称"}},[a("el-input",{model:{value:e.formData.dataruleName,callback:function(t){e.$set(e.formData,"dataruleName",t)},expression:"formData.dataruleName"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"permission",label:"权限标识"}},[a("el-input",{model:{value:e.formData.permission,callback:function(t){e.$set(e.formData,"permission",t)},expression:"formData.permission"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{loading:e.$store.state.fetchingData,type:"primary"},on:{click:e.onSave}},[e._v("保存")]),e._v(" "),a("el-button",{on:{click:function(t){e.$router.go(-1)}}},[e._v("取消")])],1)],1)],1)},staticRenderFns:[]};var s=a("VU/8")({created:function(){var e=this;this.$route.query.id&&this.$http.get({url:"/sysDatarule/getOne",data:{id:this.$route.query.id}}).then(function(t){t.success&&(e.formData=t.data)})},data:function(){return{saving:!1,formData:{},rules:{dataruleName:[{required:!0,message:"请填写权限名称",trigger:"blur"}],permission:[{required:!0,message:"请填写权限标识",trigger:"blur"}]},menus:[]}},methods:{onSave:function(){var e=this;this.$refs.form.validate(function(t){if(!t)return!1;e.submit()})},submit:function(){var e=this;this.$http.post({url:this.formData.id?"/sysDatarule/update":"/sysDatarule/save",data:this.formData}).then(function(t){t.success?(e.$message.success("成功"),e.$router.go(-1)):e.$message.warning("失败")})}}},r,!1,function(e){a("TH6L")},"data-v-f8763b4a",null);t.default=s.exports}});

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/102.07fa56cf68ddf2c80a74.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/103.e7b085c57a498d8a3cbf.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/104.5319925329101c5c575b.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/105.695fa3d246c81d980ae8.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/106.c17e6facbe498899e58e.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/107.0b15a7b23c59bb37fe70.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/108.4254d729b1cd64151e2d.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/109.42417464f3f911d6afa0.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/11.db2685fe936f484c4e19.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/110.a0a684be46d31accd24a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/111.d0bc0138eb9ed0bb74d7.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/112.d5a7dd6c46ea5ca459b6.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/113.9bb79c3edbc8bc65d249.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/114.d1de78377d3a58fbe03f.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/115.d99c752b1208922fef2c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/116.c6b9a61b9ea99a024eaa.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/117.47f084887f5b79d5d225.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/118.557f9ee4f9df8790f780.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/119.28dad383deb03adc9416.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/12.72f1fbf4e275546d6297.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/12.af5c1c0d3ce99e7fc791.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/120.5626c77ebb4b0026cb08.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/121.eb4c8279b28fe5487c58.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/122.1c19f7102756a8b4e75e.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/123.d57d120e896b25dc9968.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/124.88ae28a841eba3d5e45d.js


+ 1 - 0
src/main/webapp/static/js/125.c8a3ef7d70bf525906b2.js

@@ -0,0 +1 @@
+webpackJsonp([125],{V8wA:function(t,e){},izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("V8wA")},"data-v-6d20da16",null);e.default=c.exports}});

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/126.b42dc955583f184220e4.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/127.8aa6ac39faeec0edb1f9.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/128.5e0809ba3c776b757789.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/129.7118949c93b8283438e1.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/13.73b4a386e5c561dd3b2a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/13.a7d93bd9f8d179582dc2.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/130.83c738c8d067efc62e28.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/131.ea248181e9eb71cc6bf5.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/132.c57d668a19e754bdfbd1.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/133.42ac012a225c6f5fa6ed.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/134.c061a76d0601ab82a377.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/135.460d1ba9ea3e8fdb1b16.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/136.de367c3363ec76daf299.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/137.53734c596da4e4daa99c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/138.2f30083705e4c96d628b.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/139.fbd82d35c9eaaa8d5157.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/14.6a5b0f021b14311ca00e.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/14.d5da232cfab2ecca6899.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/140.f288f435e12ce7525e43.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/141.340492d60e398800860b.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/142.4f11469e2381621eb481.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/143.31684323cfd582e352d6.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/144.03bf71d695c4e7f0e7e0.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/145.ead951dc9bb416c945ac.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/146.364e47a273ec603265c2.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/147.7ab136beb06b3dbe791a.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/148.a5bf7c482aa6210712e7.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/149.4e147248c54166745922.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/15.a43ed683cbff25e53c1c.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/15.f9cd592279a3f3462052.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/150.b25d8e718fe43f4042f8.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/151.6974c78c7dffc8bd2198.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/152.8d21fdd65c62ba32517f.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/static/js/153.0dbc4b3223f1f3f44627.js


Some files were not shown because too many files changed in this diff