From 374083231b5748d5efd59a6d88cff0653374f6f7 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Thu, 25 Mar 2021 15:43:30 +0800 Subject: [PATCH 01/25] modify --- .../src/main/resources/static/browse.html | 135 +------- .../resources/static/css/bootstrap.min.css | 7 + .../resources/static/css/choice-register.css | 2 +- .../resources/static/css/company-register.css | 100 +++--- .../resources/static/css/fakeLoader.min.css | 1 + .../src/main/resources/static/css/index.css | 76 ++++- .../resources/static/css/person-register.css | 304 +++++++++--------- .../src/main/resources/static/css/search.css | 70 ++++ .../src/main/resources/static/images/line.png | Bin 0 -> 999 bytes .../src/main/resources/static/index.html | 103 +++--- .../resources/static/individual-register.html | 77 +++-- .../resources/static/js/fakeLoader.min.js | 1 + .../main/resources/static/js/page/browse.js | 98 ++++-- .../static/js/page/choice-register.js | 8 +- .../main/resources/static/js/page/index.js | 0 .../main/resources/static/js/page/isLogin.js | 44 ++- .../main/resources/static/js/page/login.js | 39 ++- .../main/resources/static/js/page/search.js | 22 ++ .../src/main/resources/static/search.html | 99 ++++-- 19 files changed, 677 insertions(+), 509 deletions(-) create mode 100644 share_project/src/main/resources/static/css/bootstrap.min.css create mode 100644 share_project/src/main/resources/static/css/fakeLoader.min.css create mode 100644 share_project/src/main/resources/static/images/line.png create mode 100644 share_project/src/main/resources/static/js/fakeLoader.min.js create mode 100644 share_project/src/main/resources/static/js/page/index.js create mode 100644 share_project/src/main/resources/static/js/page/search.js diff --git a/share_project/src/main/resources/static/browse.html b/share_project/src/main/resources/static/browse.html index 883e1ed9..e55725a0 100644 --- a/share_project/src/main/resources/static/browse.html +++ b/share_project/src/main/resources/static/browse.html @@ -13,7 +13,7 @@
-
+
+
+
@@ -82,7 +84,7 @@
{{item.friendName}}
-
文字太长会咋样文字太长会咋样文字太长会咋样文字太长会咋样文字太长会咋样
+
{{item.lastMessage}}
{{item.sendTime}}
@@ -93,81 +95,48 @@
{{currentFriendName}}
-
-
+
+
-
    -
  • -
    - -
    - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - -
  • -
  • - +
      + +
    • - -
      - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉啊啊啊啊顶顶顶顶的点点滴滴 - -
    • -
    • -
      - +
      - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 + + {{item.content}}
      +
      +
      {{item.sendTime}}
    • -
    • - -
      - -
      - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉啊啊啊啊顶顶顶顶的点点滴滴 - -
    • -
    • +
    • - +
      - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉 + + {{item.content}} +
      +
      {{item.sendTime}}
    • -
    • - -
      - -
      - 巴拉巴拉巴拉巴拉巴拉巴拉巴拉巴拉啊啊啊啊顶顶顶顶的点点滴滴 - -
    +
    + 请和你的好友开始聊天吧! +
diff --git a/share_project/src/main/resources/static/css/browse.css b/share_project/src/main/resources/static/css/browse.css index 6faecbc0..cc1a0fb3 100644 --- a/share_project/src/main/resources/static/css/browse.css +++ b/share_project/src/main/resources/static/css/browse.css @@ -10,6 +10,9 @@ textarea { box-sizing: border-box; } + +/* 遮罩层 也就是加载的时候显示的动画 */ + .mask { position: fixed; width: 100%; diff --git a/share_project/src/main/resources/static/css/chats.css b/share_project/src/main/resources/static/css/chats.css index 1db1124b..212aeae3 100644 --- a/share_project/src/main/resources/static/css/chats.css +++ b/share_project/src/main/resources/static/css/chats.css @@ -13,6 +13,21 @@ input:focus { outline: none; } + +/* 遮罩层 也就是加载的时候显示的动画 */ + +.mask { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 99999; + background: url(../images/loading2.gif) no-repeat center center; + background-size: 300px auto; + background-color: rgba(255, 255, 255, .7); +} + .large { position: absolute; top: 0px; @@ -444,7 +459,20 @@ input:focus { border-radius: 10px; } -.chat-time { + +/* 还没有打开对话框的时候 提示信息 */ + +.chatMsg { + text-align: center; + font-size: 16px; + color: #FADA3C; + font-weight: bold; + margin-top: 10px; + letter-spacing: 1px; +} + + +/* .chat-time { position: relative; height: 63px; } @@ -457,21 +485,7 @@ input:focus { font-family: SourceHanSansCN-Light; font-weight: 300; color: #AAAAAA; -} - -.line { - position: absolute; - top: -64px; - left: 58px; - background: linear-gradient(to left, #F6F6F6, #C0C0C0, #F6F6F6); - height: .8px; - width: 125px; - margin-top: 100px; -} - -.chat-time .line:last-child { - left: 358px; -} +} */ .you, .me { @@ -511,6 +525,16 @@ input:focus { max-width: 305px; } + +/* 聊天时间上面的分割线 */ + +.line { + border-top: 0.8px dashed black; + width: 100%; + margin-top: 6px; + font-size: 8px; +} + .image-friend, .image-me { float: left; diff --git a/share_project/src/main/resources/static/index.html b/share_project/src/main/resources/static/index.html index 9bc3b0da..9b5aedd7 100644 --- a/share_project/src/main/resources/static/index.html +++ b/share_project/src/main/resources/static/index.html @@ -29,7 +29,7 @@
- + diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index b24c91f1..bd5bdf32 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -17,9 +17,10 @@ const app = new Vue({ el: "#chat", data: { + isMask: false, // 用户个人信息 - username: "", - userPicture: "", + username: "admin", + userPicture: "images/pic.jpg", searchInfo: "", // 获取到的好友列表 friendsList: [], @@ -28,14 +29,92 @@ const app = new Vue({ // focus类 focusID: '-1', // 存一下当前点击的好友的名字 - currentFriendName: '' + currentFriendName: '', + // 存一下当前点击好友的头像 + currentFriendPic: '', + // 存储和当前好友的聊天记录 + currentChatHistory: [], + // 存储和当前聊天的linkId + linkId: '', + // 存储聊天框里面的值 + msgContent: '', + // 即时聊天webSokect + websocket: null }, created() { // this.getCurrentUserInfo(); this.getChatList(); - + // this.initWebSocket(); }, methods: { + // 初始化webSocket + initWebSocket: function() { + //TODO 这个地址需要修改 + const target = "ws://zshare.free.idcfengye.com/share/websocket"; + + //判断当前浏览器是否支持WebSocket + if ('WebSocket' in window) { + this.websocket = new WebSocket(target); + } else { + alert('Not support websocket') + }; + //连接发生错误的回调方法 + this.websocket.onerror = function() { + // setMessageInnerHTML("error"); + alert('连接发生错误!') + }; + //连接成功建立的回调方法 + this.websocket.onopen = function(event) { + // setMessageInnerHTML("Loc MSG: 建立连接"); + alert('连接成功!') + }; + //接收到消息的回调方法 + this.websocket.onmessage = function(event) { + // setMessageInnerHTML(event.data); + // data: "{"fromUser":"admin","content":"hhh","sendTime":1617023867997}" + var chatContent = JSON.parse(event); + // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 + if (chatContent.fromUser == this.currentFriendName) { + // 将消息放进去对应的数组中 + this.currentChatHistory.push(event); + } else { + // 如果不是正在聊天的那个人 就将该user的未读消息+1 + // 查找对应的friend的下标 + var index = this.friendsList.findIndex(item => { + return item.friendName == event.sendUser; + }); + if (index != -1) { + // 说明找到了 将其的unread+1 + this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); + console.log(parseInt(this.friendsList[index].unread) + 1); + } else { + alert('有未读消息不知道往哪去!'); + } + } + console.log(event); + }; + //连接关闭的回调方法 + this.websocket.onclose = function() { + // setMessageInnerHTML("Loc MSG:关闭连接"); + console.log('关闭连接!'); + }; + //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 + window.onbeforeunload = function() { + this.websocket.close(); + }; + }, + + // 使用websocket发送消息 + websocketSend: function() { + var chatMsg = { + content: this.messageInput, + toUser: this.currentFriendName, + linkId: this.linkId + } + this.websocket.send(JSON.stringify(chatMsg)); + }, + + //获取当前用户的用户名和头像 getCurrentUserInfo: function() { axios.get("/share/user/isLogin").then(function(response) { @@ -48,11 +127,14 @@ const app = new Vue({ //获取当前用户的聊天列表 getChatList: function() { + this.isMask = true; axios.get("http://zshare.free.idcfengye.com/share/chat/getChatList?fromUser=admin") .then(res => { //获取json数据 if (res.data.status == '1') { this.friendsList = res.data.data; + this.isMask = false; + console.log(this.friendsList); } }).catch(err => { @@ -61,15 +143,29 @@ const app = new Vue({ }, // 当点击用户想要打开对话框时 发送下面两个请求 拿历史记录、建立连接 getHistory: function(friendName) { + this.isMask = true; var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + friendName + '?fromUser=admin¤tIndex=1' axios.get(url).then(res => { - console.log(res.data); + if (res.data.status == '1') { + console.log(res.data); + this.currentChatHistory = res.data.data; + this.isMask = false; + + } }) }, + // 跟对方建立连接 判断对方是否在线 getStaus: function(friendName) { var url = 'http://zshare.free.idcfengye.com/share/chat/inWindows/' + friendName + '?fromUser=admin'; axios.get(url).then(res => { console.log(friendName); + + // 建立连接的同时会把全部消息设置为已读 这个因为没有重新去请求后台,所以自己做一个就行 + var index = this.friendsList.findIndex(item => { + return item.friendName == friendName; + }); + // console.log(index); + this.$set(this.friendsList[index], 'unread', 0); }) }, @@ -80,10 +176,14 @@ const app = new Vue({ // 输入消息的对话框自动对焦 this.$nextTick(function() { //DOM 更新了 - this.$refs.messageInput.focus() + this.$refs.messageInput.focus(); }); // 记住当前聊天的好友 this.currentFriendName = item.friendName; + // 记住当前聊天好友的头像 + this.currentFriendPic = item.friendPicture; + // 记住当前好友的linkID + this.linkId = item.linkId; }, // 当点击上面的小搜索框 需要展示出大的搜索框 showBigSearch: function() { @@ -98,6 +198,17 @@ const app = new Vue({ this.flagOfSearch = true; }, - + }, + // 监听,当信息数组发送变化时自动滚动到最下面 + watch: { + currentChatHistory: function() { + setTimeout(() => { + this.$nextTick(() => { + var container = this.$el.querySelector("#chatContainer"); + console.log(container); + container.scrollTop = container.scrollHeight; + }); + }, 0); + } } }) \ No newline at end of file diff --git a/share_project/src/main/resources/static/js/page/isLogin.js b/share_project/src/main/resources/static/js/page/isLogin.js index ba28e217..3a5b075b 100644 --- a/share_project/src/main/resources/static/js/page/isLogin.js +++ b/share_project/src/main/resources/static/js/page/isLogin.js @@ -2,7 +2,7 @@ const header = new Vue({ el: "#nav", data: { // 暂时先填true来测试 - isLogin: "", + isLogin: "true", userPicture: "", unread: 0, isShow: 'none' diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index fba63ff5..6e84ff7b 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -28,7 +28,7 @@
- + @@ -82,7 +82,7 @@ - + \ No newline at end of file diff --git a/share_project/src/main/resources/static/webSocketTest.html b/share_project/src/main/resources/static/webSocketTest.html index 9ca1a274..0cd26645 100644 --- a/share_project/src/main/resources/static/webSocketTest.html +++ b/share_project/src/main/resources/static/webSocketTest.html @@ -2,16 +2,15 @@ -     + -     My WebSocket -     + My WebSocket + @@ -20,14 +19,13 @@
-
- 消息: - 频道号: +
消息: + 频道号: +
-- Gitee From 2a7d10f40e743a5cca8520e867d8b2c1a6b3ed4b Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 09:54:06 +0800 Subject: [PATCH 09/25] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/chats.html | 2 -- share_project/src/main/resources/static/js/page/chat.js | 2 -- share_project/src/main/resources/static/search.html | 2 +- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index d7bfee44..0240dca4 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -18,7 +18,6 @@ -
-
diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index bd5bdf32..e90803b8 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -113,8 +113,6 @@ const app = new Vue({ } this.websocket.send(JSON.stringify(chatMsg)); }, - - //获取当前用户的用户名和头像 getCurrentUserInfo: function() { axios.get("/share/user/isLogin").then(function(response) { diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index 6e84ff7b..92ff5a58 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -82,7 +82,7 @@ - + \ No newline at end of file -- Gitee From da812def6baa6d5584e4ddce6913dbcb20cdc6fd Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 09:43:27 +0800 Subject: [PATCH 10/25] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=B0=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/js/page/chat.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index e90803b8..ffd99d62 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -44,7 +44,8 @@ const app = new Vue({ created() { // this.getCurrentUserInfo(); this.getChatList(); - // this.initWebSocket(); + // 初始化webSocket + this.initWebSocket(); }, methods: { // 初始化webSocket -- Gitee From c47a66429359a7812f159954019eafa648f8732e Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 11:19:36 +0800 Subject: [PATCH 11/25] =?UTF-8?q?=E5=8D=B3=E6=97=B6=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E5=A4=8Dbug=201.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/chats.html | 3 +-- .../src/main/resources/static/js/page/chat.js | 16 +++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index 0240dca4..1ecc37fa 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -101,7 +101,6 @@
-->
diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index ffd99d62..60b5b163 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -72,12 +72,13 @@ const app = new Vue({ //接收到消息的回调方法 this.websocket.onmessage = function(event) { // setMessageInnerHTML(event.data); - // data: "{"fromUser":"admin","content":"hhh","sendTime":1617023867997}" - var chatContent = JSON.parse(event); + // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" + var chatContent = JSON.parse(event.data); + console.log(chatContent); // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 - if (chatContent.fromUser == this.currentFriendName) { + if (chatContent.sendUser == this.currentFriendName) { // 将消息放进去对应的数组中 - this.currentChatHistory.push(event); + this.currentChatHistory.push(chatContent); } else { // 如果不是正在聊天的那个人 就将该user的未读消息+1 // 查找对应的friend的下标 @@ -111,8 +112,13 @@ const app = new Vue({ content: this.messageInput, toUser: this.currentFriendName, linkId: this.linkId - } + }; + // 发送消息 this.websocket.send(JSON.stringify(chatMsg)); + // 添加sendUser属性 然后添加到本来的列表中 + chatMsg.sendUser = this.username; + chatMsg.sendTime = 'now'; + this.currentChatHistory.push(chatMsg); }, //获取当前用户的用户名和头像 getCurrentUserInfo: function() { -- Gitee From 4e4f41d65551c4983349029c9255a6d0a7fdaa0f Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 09:54:06 +0800 Subject: [PATCH 12/25] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/search.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index 6e84ff7b..92ff5a58 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -82,7 +82,7 @@ - + \ No newline at end of file -- Gitee From 34415a4a4b69445ec8445bafb70a6f0c3f2b8b31 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 15:44:42 +0800 Subject: [PATCH 13/25] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/search.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index 92ff5a58..6e84ff7b 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -82,7 +82,7 @@ - + \ No newline at end of file -- Gitee From 0fe8002d90875162f7cc63b4b7d9a686b92a1020 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 15:48:26 +0800 Subject: [PATCH 14/25] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/chats.html | 1 + share_project/src/main/resources/static/js/page/chat.js | 1 + share_project/src/main/resources/static/search.html | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index 1ecc37fa..442babcf 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -55,6 +55,7 @@
+
diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index 60b5b163..2a38eb99 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -40,6 +40,7 @@ const app = new Vue({ msgContent: '', // 即时聊天webSokect websocket: null + }, created() { // this.getCurrentUserInfo(); diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index 6e84ff7b..92ff5a58 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -82,7 +82,7 @@ - + \ No newline at end of file -- Gitee From eac185afd8c5c4526a23309d43ccfadd1e895528 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 15:05:11 +0800 Subject: [PATCH 15/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=B3=E6=97=B6?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/js/page/chat.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index 2a38eb99..83a7ffa5 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -84,7 +84,7 @@ const app = new Vue({ // 如果不是正在聊天的那个人 就将该user的未读消息+1 // 查找对应的friend的下标 var index = this.friendsList.findIndex(item => { - return item.friendName == event.sendUser; + return item.friendName == chatContent.sendUser; }); if (index != -1) { // 说明找到了 将其的unread+1 @@ -110,7 +110,7 @@ const app = new Vue({ // 使用websocket发送消息 websocketSend: function() { var chatMsg = { - content: this.messageInput, + content: this.msgContent, toUser: this.currentFriendName, linkId: this.linkId }; @@ -119,6 +119,7 @@ const app = new Vue({ // 添加sendUser属性 然后添加到本来的列表中 chatMsg.sendUser = this.username; chatMsg.sendTime = 'now'; + // 添加進去聊天历史列表 this.currentChatHistory.push(chatMsg); }, //获取当前用户的用户名和头像 -- Gitee From c53bcec7fc4b3e3f787ac77bc49b98e7fd1fa2ac Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 17:11:43 +0800 Subject: [PATCH 16/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8D=B3=E6=97=B6?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=B0=8Fbug1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- share_project/src/main/resources/static/js/page/chat.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index 83a7ffa5..a215fe66 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -71,7 +71,7 @@ const app = new Vue({ alert('连接成功!') }; //接收到消息的回调方法 - this.websocket.onmessage = function(event) { + this.websocket.onmessage = (event) => { // setMessageInnerHTML(event.data); // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" var chatContent = JSON.parse(event.data); @@ -94,7 +94,6 @@ const app = new Vue({ alert('有未读消息不知道往哪去!'); } } - console.log(event); }; //连接关闭的回调方法 this.websocket.onclose = function() { -- Gitee From 5f1f26fb8ba7edd381839d895e4a562848941bec Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Tue, 30 Mar 2021 20:09:48 +0800 Subject: [PATCH 17/25] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8D=B3=E6=97=B6?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/js/page/chat.js | 92 +++++++++++++++++-- 1 file changed, 83 insertions(+), 9 deletions(-) diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index a215fe66..8036aae4 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -18,7 +18,7 @@ const app = new Vue({ el: "#chat", data: { isMask: false, - // 用户个人信息 + // TODO 用户个人信息 到时候要发个请求 将这个当前的用户信息更新 username: "admin", userPicture: "images/pic.jpg", searchInfo: "", @@ -38,8 +38,12 @@ const app = new Vue({ linkId: '', // 存储聊天框里面的值 msgContent: '', + + // 即时聊天webSokect - websocket: null + websocket: null, + // 防止一直重连websocket + lockReconnect: false }, created() { @@ -80,6 +84,16 @@ const app = new Vue({ if (chatContent.sendUser == this.currentFriendName) { // 将消息放进去对应的数组中 this.currentChatHistory.push(chatContent); + + // 设置上一条消息 + var index = this.friendsList.findIndex(item => { + return item.friendName == this.currentFriendName; + }); + if (index != -1) { + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + } else { + console.log('有经过的消息未设置为上一条消息!' + chatContent); + } } else { // 如果不是正在聊天的那个人 就将该user的未读消息+1 // 查找对应的friend的下标 @@ -90,8 +104,11 @@ const app = new Vue({ // 说明找到了 将其的unread+1 this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); console.log(parseInt(this.friendsList[index].unread) + 1); + // 设置当前好友的上一条消息为这个 + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + } else { - alert('有未读消息不知道往哪去!'); + console.log('发出去的消息经过这里了!' + chatContent); } } }; @@ -101,8 +118,10 @@ const app = new Vue({ console.log('关闭连接!'); }; //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 - window.onbeforeunload = function() { - this.websocket.close(); + window.onbeforeunload = async() => { + var url = 'http://zshare.free.idcfengye.com/share/chat/resetWindows?username=' + this.username; + await axios.get(url); + console.log('切换了窗口嘛!'); }; }, @@ -117,9 +136,25 @@ const app = new Vue({ this.websocket.send(JSON.stringify(chatMsg)); // 添加sendUser属性 然后添加到本来的列表中 chatMsg.sendUser = this.username; - chatMsg.sendTime = 'now'; + // 格式化日期 + chatMsg.sendTime = this.dateFormat(new Date(), 'yyyy-mm-dd hh:mm:ss'); // 添加進去聊天历史列表 this.currentChatHistory.push(chatMsg); + + // 设置上一条消息为这一条 暂时不确定 应该不需要这个 + var index = this.friendsList.findIndex(item => { + return item.friendName == this.currentFriendName; + }); + if (index != -1) { + // 说明找到了 将其的unread+1 + this.$set(this.friendsList[index], 'lastMessage', this.msgContent); + } else { + console.log('没有将这个发出去的消息设置为未读消息那里!!' + chatMsg); + } + + // 清空输入内容框 + this.msgContent = ''; + }, //获取当前用户的用户名和头像 getCurrentUserInfo: function() { @@ -134,7 +169,8 @@ const app = new Vue({ //获取当前用户的聊天列表 getChatList: function() { this.isMask = true; - axios.get("http://zshare.free.idcfengye.com/share/chat/getChatList?fromUser=admin") + var url = "http://zshare.free.idcfengye.com/share/chat/getChatList?fromUser=" + this.username; + axios.get(url) .then(res => { //获取json数据 if (res.data.status == '1') { @@ -150,7 +186,7 @@ const app = new Vue({ // 当点击用户想要打开对话框时 发送下面两个请求 拿历史记录、建立连接 getHistory: function(friendName) { this.isMask = true; - var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + friendName + '?fromUser=admin¤tIndex=1' + var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + friendName + '?fromUser=' + this.username + '¤tIndex=1' axios.get(url).then(res => { if (res.data.status == '1') { console.log(res.data); @@ -162,7 +198,7 @@ const app = new Vue({ }, // 跟对方建立连接 判断对方是否在线 getStaus: function(friendName) { - var url = 'http://zshare.free.idcfengye.com/share/chat/inWindows/' + friendName + '?fromUser=admin'; + var url = 'http://zshare.free.idcfengye.com/share/chat/inWindows/' + friendName + '?fromUser=' + this.username; axios.get(url).then(res => { console.log(friendName); @@ -204,6 +240,44 @@ const app = new Vue({ this.flagOfSearch = true; }, + + // 格式化日期 + dateFormat: function(date, format) { + if (typeof date === "string") { + var mts = date.match(/(\/Date\((\d+)\)\/)/); + if (mts && mts.length >= 3) { + date = parseInt(mts[2]); + } + } + date = new Date(date); + if (!date || date.toUTCString() == "Invalid Date") { + return ""; + } + var map = { + "M": date.getMonth() + 1, //月份 + "d": date.getDate(), //日 + "h": date.getHours(), //小时 + "m": date.getMinutes(), //分 + "s": date.getSeconds(), //秒 + "q": Math.floor((date.getMonth() + 3) / 3), //季度 + "S": date.getMilliseconds() //毫秒 + }; + + format = format.replace(/([yMdhmsqS])+/g, function(all, t) { + var v = map[t]; + if (v !== undefined) { + if (all.length > 1) { + v = '0' + v; + v = v.substr(v.length - 2); + } + return v; + } else if (t === 'y') { + return (date.getFullYear() + '').substr(4 - all.length); + } + return all; + }); + return format; + } }, // 监听,当信息数组发送变化时自动滚动到最下面 watch: { -- Gitee From 93e0aee13b07500e36f078ad1b4c355efd7ccaf6 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Fri, 2 Apr 2021 09:55:45 +0800 Subject: [PATCH 18/25] =?UTF-8?q?=E8=81=8A=E5=A4=A9=E4=BF=AE=E5=BE=A9bug1.?= =?UTF-8?q?3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/js/page/chat.js | 124 ++++++++++++------ .../src/main/resources/static/test.html | 42 ++++++ 2 files changed, 128 insertions(+), 38 deletions(-) create mode 100644 share_project/src/main/resources/static/test.html diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index 8036aae4..463e3e05 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -43,9 +43,34 @@ const app = new Vue({ // 即时聊天webSokect websocket: null, // 防止一直重连websocket - lockReconnect: false + // lockReconnect: false, + // 心跳检测 + // heartCheck: { + // timeout: 1000, //1分钟发一次心跳 + // timeoutObj: null, + // serverTimeoutObj: null, + // reset: function() { + // clearTimeout(this.timeoutObj); + // clearTimeout(this.serverTimeoutObj); + // return this; + // }, + // start: function() { + // var self = this; + // this.timeoutObj = setTimeout(function() { + // //这里发送一个心跳,后端收到后,返回一个心跳消息, + // //onmessage拿到返回的心跳就说明连接正常 + // ws.send("ping"); + // console.log("ping!") + // self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了 + // ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次 + // }, self.timeout) + // }, this.timeout) + // } + // }, }, + + created() { // this.getCurrentUserInfo(); this.getChatList(); @@ -65,58 +90,71 @@ const app = new Vue({ alert('Not support websocket') }; //连接发生错误的回调方法 - this.websocket.onerror = function() { + this.websocket.onerror = () => { + // this.reconnect(target); // setMessageInnerHTML("error"); alert('连接发生错误!') }; + //连接关闭的回调方法 + this.websocket.onclose = () => { + // setMessageInnerHTML("Loc MSG:关闭连接"); + // this.reconnect(target); + console.log('关闭连接!'); + }; + //连接成功建立的回调方法 - this.websocket.onopen = function(event) { + this.websocket.onopen = (event) => { + // this.heartCheck.reset().start(); //心跳检测重置 + // setMessageInnerHTML("Loc MSG: 建立连接"); alert('连接成功!') }; //接收到消息的回调方法 this.websocket.onmessage = (event) => { - // setMessageInnerHTML(event.data); - // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" - var chatContent = JSON.parse(event.data); - console.log(chatContent); - // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 - if (chatContent.sendUser == this.currentFriendName) { - // 将消息放进去对应的数组中 - this.currentChatHistory.push(chatContent); + // this.heartCheck.reset().start(); //拿到任何消息都说明当前连接是正常的 - // 设置上一条消息 - var index = this.friendsList.findIndex(item => { - return item.friendName == this.currentFriendName; - }); - if (index != -1) { - this.$set(this.friendsList[index], 'lastMessage', chatContent.content); - } else { - console.log('有经过的消息未设置为上一条消息!' + chatContent); - } - } else { - // 如果不是正在聊天的那个人 就将该user的未读消息+1 - // 查找对应的friend的下标 - var index = this.friendsList.findIndex(item => { - return item.friendName == chatContent.sendUser; - }); - if (index != -1) { - // 说明找到了 将其的unread+1 - this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); - console.log(parseInt(this.friendsList[index].unread) + 1); - // 设置当前好友的上一条消息为这个 - this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + // 说明不是心跳检测 + if (event.data != 'pong') { + // setMessageInnerHTML(event.data); + // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" + var chatContent = JSON.parse(event.data); + console.log(chatContent); + // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 + if (chatContent.sendUser == this.currentFriendName) { + // 将消息放进去对应的数组中 + // 这里要格式化时间 + chatContent.sendTime = this.dateFormat(chatContent.sendTime, 'yyyy-mm-dd hh:mm:ss') + this.currentChatHistory.push(chatContent); + // 设置上一条消息 + var index = this.friendsList.findIndex(item => { + return item.friendName == this.currentFriendName; + }); + if (index != -1) { + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + } else { + console.log('有经过的消息未设置为上一条消息!' + chatContent); + } } else { - console.log('发出去的消息经过这里了!' + chatContent); + // 如果不是正在聊天的那个人 就将该user的未读消息+1 + // 查找对应的friend的下标 + var index = this.friendsList.findIndex(item => { + return item.friendName == chatContent.sendUser; + }); + if (index != -1) { + // 说明找到了 将其的unread+1 + this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); + console.log(parseInt(this.friendsList[index].unread) + 1); + // 设置当前好友的上一条消息为这个 + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + + } else { + console.log('发出去的消息经过这里了!' + chatContent); + } } } }; - //连接关闭的回调方法 - this.websocket.onclose = function() { - // setMessageInnerHTML("Loc MSG:关闭连接"); - console.log('关闭连接!'); - }; + //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = async() => { var url = 'http://zshare.free.idcfengye.com/share/chat/resetWindows?username=' + this.username; @@ -124,6 +162,15 @@ const app = new Vue({ console.log('切换了窗口嘛!'); }; }, + // websocket重新连接 + // reconnect: (url) => { + // if (this.lockReconnect) return; + // this.lockReconnect = true; + // setTimeout(() => { //没连接上会一直重连,设置延迟避免请求过多 + // this.initWebSocket(); + // this.lockReconnect = false; + // }, 2000); + // }, // 使用websocket发送消息 websocketSend: function() { @@ -156,6 +203,7 @@ const app = new Vue({ this.msgContent = ''; }, + //获取当前用户的用户名和头像 getCurrentUserInfo: function() { axios.get("/share/user/isLogin").then(function(response) { diff --git a/share_project/src/main/resources/static/test.html b/share_project/src/main/resources/static/test.html new file mode 100644 index 00000000..b3907fba --- /dev/null +++ b/share_project/src/main/resources/static/test.html @@ -0,0 +1,42 @@ + + + + + + + + Document + + + +
点我
+ + + + + + \ No newline at end of file -- Gitee From a852b8bcabc8758bdaac350fe09e270efd5c6582 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Sat, 3 Apr 2021 00:15:07 +0800 Subject: [PATCH 19/25] =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/chats.html | 15 ++++++- .../src/main/resources/static/css/chats.css | 3 +- .../src/main/resources/static/js/page/chat.js | 40 +++++++++++++------ 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index 1ecc37fa..a4e574e0 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -93,7 +93,7 @@
{{currentFriendName}}
-
+
+
+ + +  + + +  + + +
+
 diff --git a/share_project/src/main/resources/static/css/chats.css b/share_project/src/main/resources/static/css/chats.css index 212aeae3..a4064509 100644 --- a/share_project/src/main/resources/static/css/chats.css +++ b/share_project/src/main/resources/static/css/chats.css @@ -425,11 +425,12 @@ input:focus { .chat-middle { width: 533px; - height: 340px; + height: 327px; background: #FFFFFF; border: 1px solid #E6E6E6; overflow-x: hidden; overflow-y: hidden; + padding-top: 13px; } .chat-middle:hover { diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index 463e3e05..bd448aa8 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -38,6 +38,8 @@ const app = new Vue({ linkId: '', // 存储聊天框里面的值 msgContent: '', + // 存储聊天记录的总页数 + totalHistoryNum: 1, // 即时聊天webSokect @@ -234,7 +236,7 @@ const app = new Vue({ // 当点击用户想要打开对话框时 发送下面两个请求 拿历史记录、建立连接 getHistory: function(friendName) { this.isMask = true; - var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + friendName + '?fromUser=' + this.username + '¤tIndex=1' + var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + friendName + '?fromUser=' + this.username + '&startIndex=0&pageSize=6'; axios.get(url).then(res => { if (res.data.status == '1') { console.log(res.data); @@ -244,6 +246,19 @@ const app = new Vue({ } }) }, + // 向上滚动获取历史记录 + scrollHistory: async function(event) { + if (event.target.scrollTop == 0) { + // 更新聊天记录 + // 当前有多少条记录 + var currentIndex = this.currentChatHistory.length; + var pageSize = 6; + var url = 'http://zshare.free.idcfengye.com/share/chat/getChatRecords/' + this.currentFriendName + '?fromUser=' + this.username + '&startIndex=' + currentIndex + '&pageSize=' + pageSize; + var history = await axios.get(url); + var tempHistory = history.data.data; + this.currentChatHistory = tempHistory.concat(this.currentChatHistory); + } + }, // 跟对方建立连接 判断对方是否在线 getStaus: function(friendName) { var url = 'http://zshare.free.idcfengye.com/share/chat/inWindows/' + friendName + '?fromUser=' + this.username; @@ -274,6 +289,7 @@ const app = new Vue({ this.currentFriendPic = item.friendPicture; // 记住当前好友的linkID this.linkId = item.linkId; + console.log(this.linkId); }, // 当点击上面的小搜索框 需要展示出大的搜索框 showBigSearch: function() { @@ -328,15 +344,15 @@ const app = new Vue({ } }, // 监听,当信息数组发送变化时自动滚动到最下面 - watch: { - currentChatHistory: function() { - setTimeout(() => { - this.$nextTick(() => { - var container = this.$el.querySelector("#chatContainer"); - console.log(container); - container.scrollTop = container.scrollHeight; - }); - }, 0); - } - } + // watch: { + // currentChatHistory: function() { + // setTimeout(() => { + // this.$nextTick(() => { + // var container = this.$el.querySelector("#chatContainer"); + // console.log(container); + // container.scrollTop = container.scrollHeight; + // }); + // }, 0); + // } + // } }) \ No newline at end of file -- Gitee From f84bb4ef0668f588855888970225674247a9beb2 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Sat, 3 Apr 2021 17:09:39 +0800 Subject: [PATCH 20/25] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=B6=E6=9C=89=E6=B6=88=E6=81=AF=E8=BF=87?= =?UTF-8?q?=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/chats.html | 4 ++ .../src/main/resources/static/css/chats.css | 34 +++++++++ .../src/main/resources/static/js/page/chat.js | 72 ++++++++++++++++++- .../main/resources/static/js/page/isLogin.js | 5 +- 4 files changed, 110 insertions(+), 5 deletions(-) diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index a4e574e0..5ca5f6fd 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -92,6 +92,10 @@
+
+   ↓↓ 有新消息未读  | +  ×  +
{{currentFriendName}}
+ + 注册 + + + + + + +
+ +
+ - diff --git a/share_project/src/main/resources/static/chats.html b/share_project/src/main/resources/static/chats.html index 289fe946..eada8768 100644 --- a/share_project/src/main/resources/static/chats.html +++ b/share_project/src/main/resources/static/chats.html @@ -19,37 +19,45 @@
-
+ + + 注册 + + + + +
- @@ -159,6 +167,7 @@ + diff --git a/share_project/src/main/resources/static/company-register.html b/share_project/src/main/resources/static/company-register.html index c47d4025..fd20faf5 100644 --- a/share_project/src/main/resources/static/company-register.html +++ b/share_project/src/main/resources/static/company-register.html @@ -2,40 +2,40 @@ - - - - 公司注册-最share - - + + + + 公司注册-最share + + -
- -
- - 公司注册 - +
+ +
+ + 公司注册 + +
+
+
+ + 公司名:
+ 密码:
+ 确定密码:
+ 邮箱:
+ 验证码: + +
+ 我已认真阅读 + 《用户协议》 +
+ +
+
+
-
-
- - 公司名:
- 密码:
- 确定密码:
- 邮箱:
- 验证码: - -
- 我已完成阅读 - 《用户协议》 -
- -
-
-
-
diff --git a/share_project/src/main/resources/static/css/browse.css b/share_project/src/main/resources/static/css/browse.css index 36210949..8cbd256e 100644 --- a/share_project/src/main/resources/static/css/browse.css +++ b/share_project/src/main/resources/static/css/browse.css @@ -13,17 +13,8 @@ textarea { /* 遮罩层 也就是加载的时候显示的动画 */ -/*.mask {*/ -/* position: fixed;*/ -/* width: 100%;*/ -/* height: 100%;*/ -/* top: 0;*/ -/* left: 0;*/ -/* z-index: 99999;*/ -/* background: url(../images/loading2.gif) no-repeat center center;*/ -/* background-size: 300px auto;*/ -/* background-color: rgba(255, 255, 255, .7);*/ -/*}*/ + +/* */ .large { position: absolute; @@ -89,6 +80,37 @@ textarea { } +/* 登录注册按钮代码 */ + +.register, +.login { + position: absolute; + top: 12px; + right: 125px; + width: 48px; + height: 24px; + background: #FFFDF4; + border: 1px solid #F0CA10; + border-radius: 12px; + font-family: SourceHanSansCN-Light; + font-size: 12px; + font-weight: 300; + color: #F0CA10; + line-height: 24px; + text-align: center; +} + +#nav .login { + right: 53px; +} + +.register:hover, +.login:hover { + background-color: #FADA3C; + color: #fff; +} + + /* 头像 */ .message { @@ -112,6 +134,21 @@ textarea { height: 13px; } +.message span { + display: block; + position: absolute; + top: -6px; + right: -5px; + width: 17px; + height: 17px; + background-color: red; + border-radius: 50%; + font-size: 10px; + color: #fff; + line-height: 17px; + text-align: center; +} + .pic { position: absolute; top: 12px; @@ -618,6 +655,10 @@ input:-ms-input-placeholder { height: 60px; } +.bottom { + height: 30px; +} + /* 修改radio默认样式代码 */ diff --git a/share_project/src/main/resources/static/css/chats.css b/share_project/src/main/resources/static/css/chats.css index 208db4c5..d578a386 100644 --- a/share_project/src/main/resources/static/css/chats.css +++ b/share_project/src/main/resources/static/css/chats.css @@ -93,6 +93,37 @@ input:focus { } +/* 登录注册按钮 */ + +.register, +.login { + position: absolute; + top: 12px; + right: 125px; + width: 48px; + height: 24px; + background: #FFFDF4; + border: 1px solid #F0CA10; + border-radius: 12px; + font-family: SourceHanSansCN-Light; + font-size: 12px; + font-weight: 300; + color: #F0CA10; + line-height: 24px; + text-align: center; +} + +#nav .login { + right: 53px; +} + +.register:hover, +.login:hover { + background-color: #FADA3C; + color: #fff; +} + + /* 头像 */ .message { @@ -116,6 +147,21 @@ input:focus { height: 13px; } +.message span { + display: block; + position: absolute; + top: -6px; + right: -5px; + width: 17px; + height: 17px; + background-color: red; + border-radius: 50%; + font-size: 10px; + color: #fff; + line-height: 17px; + text-align: center; +} + .pic { position: absolute; top: 12px; diff --git a/share_project/src/main/resources/static/css/choice-register.css b/share_project/src/main/resources/static/css/choice-register.css index 6672e1d1..23c57358 100644 --- a/share_project/src/main/resources/static/css/choice-register.css +++ b/share_project/src/main/resources/static/css/choice-register.css @@ -65,6 +65,15 @@ a { margin: 213px auto; } +.box a>div { + cursor: pointer; + transition: all .3s; +} + +.box a>div:hover { + transform: scale(1.15); +} + .left, .right { float: left; diff --git a/share_project/src/main/resources/static/css/company-register.css b/share_project/src/main/resources/static/css/company-register.css index d6ea1595..e96ad312 100644 --- a/share_project/src/main/resources/static/css/company-register.css +++ b/share_project/src/main/resources/static/css/company-register.css @@ -5,38 +5,44 @@ body { background-color: #FEFDFA; } +input { + text-indent: 9px; + line-height: 1.5; +} + .container { margin: 0 120px; position: relative; } + @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Bold; - src: url('../fonts/siyuan/SOURCEHANSANSCN-BOLD.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Bold; + src: url('../fonts/siyuan/SOURCEHANSANSCN-BOLD.OTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Light; - src: url('../fonts/siyuan/SOURCEHANSANSCN-LIGHT.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Light; + src: url('../fonts/siyuan/SOURCEHANSANSCN-LIGHT.OTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Mediem; - src: url('../fonts/siyuan/SOURCEHANSANSCN-MEDIUM.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Mediem; + src: url('../fonts/siyuan/SOURCEHANSANSCN-MEDIUM.OTF'); } - + @font-face { - /* font-properties */ - font-family: zcoolqingkehuangyouti; - src: url('../fonts/siyuan/ZCOOL_QINGKEHUANGYOUTI.TTF'); + /* font-properties */ + font-family: zcoolqingkehuangyouti; + src: url('../fonts/siyuan/ZCOOL_QINGKEHUANGYOUTI.TTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Regular; - src: url('../fonts/siyuan/SOURCEHANSANSCN-REGULAR.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Regular; + src: url('../fonts/siyuan/SOURCEHANSANSCN-REGULAR.OTF'); } @media screen and (max-width:767px) { @@ -62,26 +68,26 @@ body { width: 1120px; } } + #logo { - width: 91px; - height: 29px; - position: fixed; - left: 54px; - top: 27px; - color: #FADA3C; + width: 91px; + height: 29px; + position: fixed; + left: 54px; + top: 27px; + color: #FADA3C; } #logo img { - width: 100%; - height: auto; + width: 100%; + height: auto; } #logo img { - width: 100%; - height: auto; + width: 100%; + height: auto; } - #top img:first-child { width: 300px; height: 2px; @@ -103,10 +109,11 @@ body { height: 24px; position: absolute; left: 470px; - top: 60px; + top: 58px; color: #FADA3C; font-family: 'SourceHanSansCN-Bold'; font-weight: bold; + font-size: 18px; } #middle { @@ -208,21 +215,23 @@ body { #middle #btn01 { position: absolute; left: 500px; - top: 400px; - width: 90px; - height: 20px; + top: 399px; + width: 85px; + height: 23px; font-size: 12px; color: #FEFDFA; background-color: #FADA3C; border-radius: 15px; - line-height: 18px; + line-height: 23px; border: none; + text-align: center; + cursor: pointer; } #middle input:last-of-type { position: absolute; left: 350px; - top: 450px; + top: 490px; width: 18px; height: 18px; background: #FFFDF4; @@ -231,9 +240,9 @@ body { #middle #middle-text { position: absolute; - left: 370px; - top: 450px; - width: 250px; + left: 379px; + top: 490px; + width: 175px; height: 16px; text-align: center; font-family: SourceHanSansCN-Regular; @@ -248,23 +257,31 @@ body { } #middle #btn02 { - width: 200px; - height: 25px; + width: 319px; + height: 29px; + border-radius: 17px; background: #FADA3C; - border-radius: 18px; position: absolute; - left: 350px; - top: 500px; + left: 285px; + top: 538px; border: 18px; - font-size: 18px; + font-size: 14px; text-align: center; color: #FFFDF4; font-family: SourceHanSansCN-Bold; font-weight: bold; + letter-spacing: 1.5px; + line-height: 29px; + cursor: pointer; +} + +#middle #btn02:hover { + background-color: #FFB800; } #middle input:focus { outline: none; + border: 2px solid #FADA3C; } #middle input:hover { @@ -275,6 +292,11 @@ body { outline: none; } + /*#middle button:hover {*/ + + /* box-shadow: 0 5px 5px 0 rgba(0, 0, 0, 0.24), 0 8px 8px 0 rgba(0, 0, 0, 0.19);*/ + + /*}*/ \ No newline at end of file diff --git a/share_project/src/main/resources/static/css/index.css b/share_project/src/main/resources/static/css/index.css index 994ab319..34d522b1 100644 --- a/share_project/src/main/resources/static/css/index.css +++ b/share_project/src/main/resources/static/css/index.css @@ -59,6 +59,12 @@ body { right: 53px; } +.register:hover, +.login:hover { + background-color: #FADA3C; + color: #fff; +} + /* 登录之后显示头像和消息框 */ @@ -86,6 +92,21 @@ body { height: 13px; } +.message span { + display: block; + position: absolute; + top: -6px; + right: -5px; + width: 17px; + height: 17px; + background-color: red; + border-radius: 50%; + font-size: 10px; + color: #fff; + line-height: 17px; + text-align: center; +} + .pic { position: absolute; top: 56px; diff --git a/share_project/src/main/resources/static/css/login.css b/share_project/src/main/resources/static/css/login.css index 81f4eee2..fab72f6b 100644 --- a/share_project/src/main/resources/static/css/login.css +++ b/share_project/src/main/resources/static/css/login.css @@ -125,6 +125,10 @@ a { border-radius: 16px; } +.box .btn:hover { + background-color: #FFB800; +} + .phone, .forget { position: absolute; diff --git a/share_project/src/main/resources/static/css/person-register.css b/share_project/src/main/resources/static/css/person-register.css index d6cfb551..301b02b7 100644 --- a/share_project/src/main/resources/static/css/person-register.css +++ b/share_project/src/main/resources/static/css/person-register.css @@ -10,55 +10,59 @@ body { padding: 0; } +input { + text-indent: 9px; + line-height: 1.5; +} + .container { width: 750px; margin: 0 120px; position: relative; } + @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Bold; - src: url('../fonts/siyuan/SOURCEHANSANSCN-BOLD.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Bold; + src: url('../fonts/siyuan/SOURCEHANSANSCN-BOLD.OTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Light; - src: url('../fonts/siyuan/SOURCEHANSANSCN-LIGHT.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Light; + src: url('../fonts/siyuan/SOURCEHANSANSCN-LIGHT.OTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Mediem; - src: url('../fonts/siyuan/SOURCEHANSANSCN-MEDIUM.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Mediem; + src: url('../fonts/siyuan/SOURCEHANSANSCN-MEDIUM.OTF'); } - + @font-face { - /* font-properties */ - font-family: zcoolqingkehuangyouti; - src: url('../fonts/siyuan/ZCOOL_QINGKEHUANGYOUTI.TTF'); + /* font-properties */ + font-family: zcoolqingkehuangyouti; + src: url('../fonts/siyuan/ZCOOL_QINGKEHUANGYOUTI.TTF'); } @font-face { - /* font-properties */ - font-family: SourceHanSansCN-Regular; - src: url('../fonts/siyuan/SOURCEHANSANSCN-REGULAR.OTF'); + /* font-properties */ + font-family: SourceHanSansCN-Regular; + src: url('../fonts/siyuan/SOURCEHANSANSCN-REGULAR.OTF'); } + @media screen and (max-width:767px) { .container { width: 100%; } } - - @media screen and (max-width:767px) { .container { width: 100%; } } - #logo { width: 91px; height: 29px; @@ -94,10 +98,11 @@ body { height: 24px; position: absolute; left: 470px; - top: 60px; + top: 58px; color: #FADA3C; font-family: 'SourceHanSansCN-Bold'; font-weight: bold; + font-size: 18px; } #middle { @@ -110,6 +115,7 @@ body { #middle #username, #password, #password2, +#email, #phone-number, #node { font-size: 15px; @@ -149,9 +155,16 @@ body { height: 18px; } +#middle #email { + left: 265px; + top: 400px; + width: 50px; + height: 18px; +} + #middle #node { left: 260px; - top: 400px; + top: 450px; width: 62px; height: 20px; } @@ -163,7 +176,7 @@ body { border-radius: 18px; position: absolute; left: 330px; - text-indent: 5px; + text-indent: 9px; } #middle input:nth-of-type(1) { @@ -187,35 +200,41 @@ body { } #middle input:nth-of-type(5) { + border: 1px solid #3C3B36; + top: 400px; +} + +#middle input:nth-of-type(6) { width: 150px; height: 20px; border-radius: 18px; background-color: #FEFDFA; position: absolute; left: 330px; - top: 400px; + top: 450px; border: 1px solid #3C3B36; } #middle #btn01 { position: absolute; left: 500px; - top: 400px; - width: 90px; - height: 20px; + top: 449px; + width: 85px; + height: 23px; font-size: 12px; color: #FEFDFA; background-color: #FADA3C; border-radius: 15px; - line-height: 18px; + line-height: 23px; border: none; + text-align: center; cursor: pointer; } #middle input:last-of-type { position: absolute; left: 350px; - top: 450px; + top: 530px; width: 18px; height: 18px; background: #FFFDF4; @@ -224,9 +243,9 @@ body { #middle #middle-text { position: absolute; - left: 380px; - top: 450px; - width: 205px; + left: 379px; + top: 530px; + width: 175px; height: 16px; text-align: center; font-family: SourceHanSansCN-Regular; @@ -241,26 +260,33 @@ body { } #middle #btn02 { - width: 200px; - height: 25px; + width: 319px; + height: 29px; + border-radius: 17px; background: #FADA3C; - border-radius: 18px; position: absolute; - left: 350px; - top: 500px; + left: 285px; + top: 578px; border: 18px; - font-size: 18px; + font-size: 14px; text-align: center; color: #FFFDF4; font-family: SourceHanSansCN-Bold; font-weight: bold; + letter-spacing: 1.5px; + line-height: 29px; cursor: pointer; } +#middle #btn02:hover { + background-color: #FFB800; +} + #middle input:focus { outline: none; + border: 2px solid #FADA3C; } - + #middle input:hover { border: 2px solid #FADA3C; } diff --git a/share_project/src/main/resources/static/css/search.css b/share_project/src/main/resources/static/css/search.css index 4f2d2f87..bd86483a 100644 --- a/share_project/src/main/resources/static/css/search.css +++ b/share_project/src/main/resources/static/css/search.css @@ -61,6 +61,12 @@ body { right: 53px; } +.register:hover, +.login:hover { + background-color: #FADA3C; + color: #fff; +} + /* 登录之后显示头像和消息框 */ @@ -88,6 +94,21 @@ body { height: 13px; } +.message span { + display: block; + position: absolute; + top: -6px; + right: -5px; + width: 17px; + height: 17px; + background-color: red; + border-radius: 50%; + font-size: 10px; + color: #fff; + line-height: 17px; + text-align: center; +} + .pic { position: absolute; top: 56px; diff --git a/share_project/src/main/resources/static/index.html b/share_project/src/main/resources/static/index.html index ab4d39e0..bd55fa22 100644 --- a/share_project/src/main/resources/static/index.html +++ b/share_project/src/main/resources/static/index.html @@ -11,7 +11,7 @@ -
+ +
+
diff --git a/share_project/src/main/resources/static/individual-register.html b/share_project/src/main/resources/static/individual-register.html index 991ab77e..6a40650a 100644 --- a/share_project/src/main/resources/static/individual-register.html +++ b/share_project/src/main/resources/static/individual-register.html @@ -6,7 +6,7 @@ 个人注册-最share - + @@ -16,8 +16,8 @@
- - 个人注册 + + 个人注册
@@ -30,11 +30,12 @@ 确定密码:
手机号:
+ 邮箱:
验证码:
- 我已完成阅读 + 我已认真阅读 《用户协议》
diff --git a/share_project/src/main/resources/static/js/page/chat.js b/share_project/src/main/resources/static/js/page/chat.js index c910ad99..d1d18350 100644 --- a/share_project/src/main/resources/static/js/page/chat.js +++ b/share_project/src/main/resources/static/js/page/chat.js @@ -1,19 +1,3 @@ -// $('.friends li').on('click', function() { -// $(this).addClass('current2').siblings().removeClass('current2'); -// }); - -// $('.search-friends').on('click', function() { -// $('.header').css('display', 'none'); -// $('.search-input').css('display', 'block'); -// $('.search-input input')[0].focus(); -// }); - -// $('.search-input input').on('blur', function() { -// $('.header').css('display', 'block'); -// $('.search-input').css('display', 'none'); -// }); - - const app = new Vue({ el: "#chat", data: { @@ -43,35 +27,9 @@ const app = new Vue({ // 在查看历史记录的时候有新消息 hasUnread: false, - // 即时聊天webSokect websocket: null, - // 防止一直重连websocket - // lockReconnect: false, - // 心跳检测 - // heartCheck: { - // timeout: 1000, //1分钟发一次心跳 - // timeoutObj: null, - // serverTimeoutObj: null, - // reset: function() { - // clearTimeout(this.timeoutObj); - // clearTimeout(this.serverTimeoutObj); - // return this; - // }, - // start: function() { - // var self = this; - // this.timeoutObj = setTimeout(function() { - // //这里发送一个心跳,后端收到后,返回一个心跳消息, - // //onmessage拿到返回的心跳就说明连接正常 - // ws.send("ping"); - // console.log("ping!") - // self.serverTimeoutObj = setTimeout(function() { //如果超过一定时间还没重置,说明后端主动断开了 - // ws.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次 - // }, self.timeout) - // }, this.timeout) - // } - // }, }, @@ -91,104 +49,93 @@ const app = new Vue({ if ('WebSocket' in window) { this.websocket = new WebSocket(target); } else { - alert('Not support websocket') + alert('Not support websocket'); }; //连接发生错误的回调方法 this.websocket.onerror = () => { - // this.reconnect(target); - // setMessageInnerHTML("error"); alert('连接发生错误!') }; //连接关闭的回调方法 this.websocket.onclose = () => { - // setMessageInnerHTML("Loc MSG:关闭连接"); - // this.reconnect(target); console.log('关闭连接!'); }; //连接成功建立的回调方法 this.websocket.onopen = (event) => { - // this.heartCheck.reset().start(); //心跳检测重置 - - // setMessageInnerHTML("Loc MSG: 建立连接"); alert('连接成功!') }; //接收到消息的回调方法 this.websocket.onmessage = (event) => { - // this.heartCheck.reset().start(); //拿到任何消息都说明当前连接是正常的 - - // 说明不是心跳检测 - if (event.data != 'pong') { - // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" - var chatContent = JSON.parse(event.data); - console.log(chatContent); - // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 - if (chatContent.sendUser == this.currentFriendName) { - // 如果文档的高度-折叠起来的高度 == clientHeight - // 就是没有滚动 直接拉到底部 - // 如果文档的高度-折叠起来的高度 > clientHeight+10px 在查看历史记录状态 - // else 就是在底部的状态 直接拖到底 - - // 记住当前正在浏览的历史记录的bottom - var scBottom = 0; - var isScanHistory = false; - this.$nextTick(() => { - var container = this.$el.querySelector("#chatContainer"); - if (container.scrollHeight - container.scrollTop > container.clientHeight) { - // 表示在查看历史记录 显示按钮 并保持不动 - isScanHistory = true; - // 记住当前正在浏览的历史记录的bottom - scBottom = container.scrollHeight - container.scrollTop - container.offsetHeight; - } - }); - console.log(isScanHistory); - - // 将消息放进去对应的数组中 - // 这里要格式化时间 - chatContent.sendTime = this.dateFormat(chatContent.sendTime, 'yyyy-mm-dd hh:mm:ss') - this.currentChatHistory.push(chatContent); - - // 放进去之后 根据是否是在浏览历史记录 来做不同的处理 - this.$nextTick(() => { - var container = this.$el.querySelector("#chatContainer"); - if (isScanHistory) { - // 表示在查看历史记录 显示按钮 并保持不动 - container.scrollTop = container.scrollHeight - container.offsetHeight - scBottom; - this.hasUnread = true; - } else { - // 表示处于聊天整天 直接拉到底部 - container.scrollTop = container.scrollHeight; - this.hasUnread = false; - } - }); - - // 设置上一条消息 - var index = this.friendsList.findIndex(item => { - return item.friendName == this.currentFriendName; - }); - if (index != -1) { - this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + // data: "{"sendUser":"admin","content":"hhh","sendTime":1617023867997}" + var chatContent = JSON.parse(event.data); + console.log(chatContent); + // 判断是从哪里发过来的 如果是正在聊天的那个娃 就直接添加到正在聊天的历史记录的数组中 + if (chatContent.sendUser == this.currentFriendName) { + // 如果文档的高度-折叠起来的高度 == clientHeight + // 就是没有滚动 直接拉到底部 + // 如果文档的高度-折叠起来的高度 > clientHeight+10px 在查看历史记录状态 + // else 就是在底部的状态 直接拖到底 + + // 记住当前正在浏览的历史记录的bottom + var scBottom = 0; + var isScanHistory = false; + this.$nextTick(() => { + var container = this.$el.querySelector("#chatContainer"); + if (container.scrollHeight - container.scrollTop > container.clientHeight) { + // 表示在查看历史记录 显示按钮 并保持不动 + isScanHistory = true; + // 记住当前正在浏览的历史记录的bottom + scBottom = container.scrollHeight - container.scrollTop - container.offsetHeight; + } + }); + console.log(isScanHistory); + + // 将消息放进去对应的数组中 + // 这里要格式化时间 + chatContent.sendTime = this.dateFormat(chatContent.sendTime, 'yyyy-mm-dd hh:mm:ss') + this.currentChatHistory.push(chatContent); + + // 放进去之后 根据是否是在浏览历史记录 来做不同的处理 + this.$nextTick(() => { + var container = this.$el.querySelector("#chatContainer"); + if (isScanHistory) { + // 表示在查看历史记录 显示按钮 并保持不动 + container.scrollTop = container.scrollHeight - container.offsetHeight - scBottom; + this.hasUnread = true; } else { - console.log('有经过的消息未设置为上一条消息!' + chatContent); + // 表示处于聊天整天 直接拉到底部 + container.scrollTop = container.scrollHeight; + this.hasUnread = false; } + }); + + // 设置上一条消息 + var index = this.friendsList.findIndex(item => { + return item.friendName == this.currentFriendName; + }); + if (index != -1) { + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); } else { - // 如果不是正在聊天的那个人 就将该user的未读消息+1 - // 查找对应的friend的下标 - var index = this.friendsList.findIndex(item => { - return item.friendName == chatContent.sendUser; - }); - if (index != -1) { - // 说明找到了 将其的unread+1 - this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); - console.log(parseInt(this.friendsList[index].unread) + 1); - // 设置当前好友的上一条消息为这个 - this.$set(this.friendsList[index], 'lastMessage', chatContent.content); + console.log('有经过的消息未设置为上一条消息!' + chatContent); + } + } else { + // 如果不是正在聊天的那个人 就将该user的未读消息+1 + // 查找对应的friend的下标 + var index = this.friendsList.findIndex(item => { + return item.friendName == chatContent.sendUser; + }); + if (index != -1) { + // 说明找到了 将其的unread+1 + this.$set(this.friendsList[index], 'unread', parseInt(this.friendsList[index].unread) + 1); + console.log(parseInt(this.friendsList[index].unread) + 1); + // 设置当前好友的上一条消息为这个 + this.$set(this.friendsList[index], 'lastMessage', chatContent.content); - } else { - console.log('发出去的消息经过这里了!' + chatContent); - } + } else { + console.log('发出去的消息经过这里了!' + chatContent); } } + }; //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 @@ -198,15 +145,6 @@ const app = new Vue({ console.log('切换了窗口嘛!'); }; }, - // websocket重新连接 - // reconnect: (url) => { - // if (this.lockReconnect) return; - // this.lockReconnect = true; - // setTimeout(() => { //没连接上会一直重连,设置延迟避免请求过多 - // this.initWebSocket(); - // this.lockReconnect = false; - // }, 2000); - // }, // 使用websocket发送消息 websocketSend: function() { @@ -288,7 +226,6 @@ const app = new Vue({ var sHeight = 0; this.$nextTick(() => { var container = this.$el.querySelector("#chatContainer"); - console.log('1'); // 记住当前文档的高度 sHeight = container.scrollHeight; }); @@ -301,18 +238,21 @@ const app = new Vue({ var history = await axios.get(url); var tempHistory = history.data.data; this.currentChatHistory = tempHistory.concat(this.currentChatHistory); - console.log('2'); this.$nextTick(() => { var container = this.$el.querySelector("#chatContainer"); // 当前文档总高度-刚刚记录的文档的高度 就是需要被折叠起来的高度 container.scrollTop = container.scrollHeight - sHeight; - console.log('3'); }); } - if (event.target.scrollHeight - event.target.scrollTop == event.target.offsetHeight) { - this.hasUnread = false; - } + // 滚动到底部时 自动消失那个提示框 + this.$nextTick(() => { + var container = this.$el.querySelector("#chatContainer"); + if (container.scrollHeight - container.scrollTop <= container.clientHeight) { + this.hasUnread = false; + } + }); + }, // 聊天记录滚动到底部实现 @@ -343,7 +283,7 @@ const app = new Vue({ // 隐藏显示是否滚动到下面的按钮 hideUnreadBtn: function() { - this.hasUnread = fasle; + this.hasUnread = false; }, // 跟对方建立连接 判断对方是否在线 getStaus: function(friendName) { @@ -429,16 +369,4 @@ const app = new Vue({ return format; } }, - // 监听,当信息数组发送变化时自动滚动到最下面 - // watch: { - // currentChatHistory: function() { - // setTimeout(() => { - // this.$nextTick(() => { - // var container = this.$el.querySelector("#chatContainer"); - // console.log(container); - // container.scrollTop = container.scrollHeight; - // }); - // }, 0); - // } - // } }) \ No newline at end of file diff --git a/share_project/src/main/resources/static/js/page/isLogin.js b/share_project/src/main/resources/static/js/page/isLogin.js index d3baf416..25c4329f 100644 --- a/share_project/src/main/resources/static/js/page/isLogin.js +++ b/share_project/src/main/resources/static/js/page/isLogin.js @@ -43,7 +43,7 @@ const header = new Vue({ //获取json数据 let resultInfo = response.data; //未读数 - this.unread = resultInfo.data; + this.unread = resultInfo.data; }).catch(); } }, diff --git a/share_project/src/main/resources/static/search.html b/share_project/src/main/resources/static/search.html index 1ad6ec58..2e21018b 100644 --- a/share_project/src/main/resources/static/search.html +++ b/share_project/src/main/resources/static/search.html @@ -5,7 +5,7 @@ 搜索-最share - + @@ -31,7 +31,7 @@ diff --git a/share_project/src/main/resources/static/test.html b/share_project/src/main/resources/static/test.html deleted file mode 100644 index b3907fba..00000000 --- a/share_project/src/main/resources/static/test.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - Document - - - -
点我
- - - - - - \ No newline at end of file -- Gitee From be24121bd680f9c26519211cffa570ce073cbdce Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Sun, 4 Apr 2021 21:20:33 +0800 Subject: [PATCH 23/25] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=8F=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/browse.html | 32 +++++++++++++++++-- .../src/main/resources/static/css/base.css | 2 +- .../src/main/resources/static/css/browse.css | 5 +-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/share_project/src/main/resources/static/browse.html b/share_project/src/main/resources/static/browse.html index 7ecd4476..d95e64ff 100644 --- a/share_project/src/main/resources/static/browse.html +++ b/share_project/src/main/resources/static/browse.html @@ -6,10 +6,11 @@ 浏览-最share + - + @@ -199,9 +200,34 @@
- +
- +
diff --git a/share_project/src/main/resources/static/css/base.css b/share_project/src/main/resources/static/css/base.css index be837b2b..3b158977 100644 --- a/share_project/src/main/resources/static/css/base.css +++ b/share_project/src/main/resources/static/css/base.css @@ -4,7 +4,7 @@ } a { - text-decoration: none; + text-decoration: none!important; } li { diff --git a/share_project/src/main/resources/static/css/browse.css b/share_project/src/main/resources/static/css/browse.css index 8cbd256e..6770059a 100644 --- a/share_project/src/main/resources/static/css/browse.css +++ b/share_project/src/main/resources/static/css/browse.css @@ -296,7 +296,7 @@ input:-ms-input-placeholder { .publishtime, .classify { display: block; - height: 35px; + height: 25px; width: 100%; /* line-height: 35px; */ } @@ -656,7 +656,8 @@ input:-ms-input-placeholder { } .bottom { - height: 30px; + height: 100px; + text-align: center; } -- Gitee From 4652e27aa6897b79369ebb8cb3e457a8943c271c Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Mon, 5 Apr 2021 10:57:24 +0800 Subject: [PATCH 24/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=92=8C=E5=8F=91=E5=B8=83=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=9A=84=E6=97=B6=E5=80=99=E5=8F=8D=E5=A4=8D?= =?UTF-8?q?=E6=A8=AA=E8=B0=83=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/static/browse.html | 63 +++++----- .../main/resources/static/js/page/browse.js | 119 +++++++++--------- 2 files changed, 95 insertions(+), 87 deletions(-) diff --git a/share_project/src/main/resources/static/browse.html b/share_project/src/main/resources/static/browse.html index d95e64ff..307cdd3a 100644 --- a/share_project/src/main/resources/static/browse.html +++ b/share_project/src/main/resources/static/browse.html @@ -23,10 +23,11 @@
@@ -130,6 +131,35 @@
+ +
+ +
@@ -200,35 +230,6 @@
- -
- -
diff --git a/share_project/src/main/resources/static/js/page/browse.js b/share_project/src/main/resources/static/js/page/browse.js index b00b4531..7361b262 100644 --- a/share_project/src/main/resources/static/js/page/browse.js +++ b/share_project/src/main/resources/static/js/page/browse.js @@ -21,7 +21,6 @@ $(function() { } }); - function getPath() { // 获取地址栏的东西 看看是要做什么事情 var path = location.href; @@ -40,64 +39,72 @@ $(function() { // 获取url地址 if (getPath().type == 'publish') { - $(".choice a").eq(1)[0].click(); + $('.box2').css('display', 'block'); + $('.box1').css('display', 'none'); + $('.choice div').eq(1).addClass('current'); + $('.choice div').eq(0).removeClass('current'); + + } else if (getPath().type == 'search') { + $('.box2').css('display', 'none'); + $('.box1').css('display', 'block'); + $('.choice div').eq(1).removeClass('current'); + $('.choice div').eq(0).addClass('current'); } }) const box2 = new Vue({ - el:".box2", - data:{ - address:'', - endTime:11-22, - id:123456, - method:'', - operation:'1', - price:'', - projectDesc:'', - projectName:'', - publisher:'', - skill:'', - subsidy:'', - type:'', - username:'luo' + el: ".box2", + data: { + address: '', + endTime: 11 - 22, + id: 123456, + method: '', + operation: '1', + price: '', + projectDesc: '', + projectName: '', + publisher: '', + skill: '', + subsidy: '', + type: '', + username: 'luo' }, methods: { - clickSubmit:function(){ - axios({ - //TODO 需要修改username - url:"/share/demand/"+this.operation+ "?username="+this.username, - method:"post", - data:{ - - address:this.address, - endTime:this.endTime, - id:this.id, - method:this.method, - operation:this.operation, - price:this.price, - projectDesc:this.projectDesc, - projectName:this.projectName, - publisher:this.publisher, - skill:this.skill, - startTime:this.startTime, - subsidy:this.subsidy, - type:this.type - } - }) - .then( - function(res){ - if(res.data.status =200 && res.data.status <300){ - console.log(res.data.message) - //接下来跳到个人中心,个人中心待写 - } - else{ - alert(res.data.message) - } - - } - ) - + clickSubmit: function() { + axios({ + //TODO 需要修改username + url: "/share/demand/" + this.operation + "?username=" + this.username, + method: "post", + data: { + + address: this.address, + endTime: this.endTime, + id: this.id, + method: this.method, + operation: this.operation, + price: this.price, + projectDesc: this.projectDesc, + projectName: this.projectName, + publisher: this.publisher, + skill: this.skill, + startTime: this.startTime, + subsidy: this.subsidy, + type: this.type + } + }) + .then( + function(res) { + if (res.data.status = 200 && res.data.status < 300) { + console.log(res.data.message) + //接下来跳到个人中心,个人中心待写 + } else { + alert(res.data.message) + } + + } + ) + }, - } + } }) const box1 = new Vue({ el: '#box1', @@ -116,12 +123,12 @@ const box1 = new Vue({ listOfClassify: [] }, methods: { - + search: function() { // 在搜索之前可以做动画 // this.isMask = true; // 使用layui的加载动画 - const load = layer.load({time: 2000}) + const load = layer.load({ time: 2000 }) axios.get('/share/project/getProjectJson', { params: { keyword: this.searchInfo, @@ -164,7 +171,7 @@ const box1 = new Vue({ this.dateOfClassify = date; // this.isMask = true; // 使用layui的加载动画 - const load = layer.load({time: 2000}) + const load = layer.load({ time: 2000 }) axios.get('/share/project/getProjects', { params: { publishTime: this.dateOfClassify, -- Gitee From 84aed596ebeac7d992652ff1ef599252ecc87cb5 Mon Sep 17 00:00:00 2001 From: luo <1363066635@qq.com> Date: Mon, 5 Apr 2021 21:13:59 +0800 Subject: [PATCH 25/25] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/static/css/project-details.css | 518 ++++++++++++++++++ .../main/resources/static/images/bigchat.png | Bin 0 -> 3295 bytes .../src/main/resources/static/images/eye.png | Bin 0 -> 4885 bytes .../src/main/resources/static/images/home.png | Bin 0 -> 4982 bytes .../resources/static/project-details.html | 268 +++++++++ 5 files changed, 786 insertions(+) create mode 100644 share_project/src/main/resources/static/css/project-details.css create mode 100644 share_project/src/main/resources/static/images/bigchat.png create mode 100644 share_project/src/main/resources/static/images/eye.png create mode 100644 share_project/src/main/resources/static/images/home.png create mode 100644 share_project/src/main/resources/static/project-details.html diff --git a/share_project/src/main/resources/static/css/project-details.css b/share_project/src/main/resources/static/css/project-details.css new file mode 100644 index 00000000..d6114245 --- /dev/null +++ b/share_project/src/main/resources/static/css/project-details.css @@ -0,0 +1,518 @@ +body { + background-color: #FEFDFA; +} + +.large { + position: absolute; + top: 0px; + left: 0; + width: 100%; + height: 48px; + background: #FFFFFF; + box-shadow: 0px 7px 6px 1px rgba(60, 60, 60, 0.05); + z-index: 999; +} + +.logo { + position: absolute; + top: 11px; + left: 54px; + width: 75px; + height: 30px; +} + +.logo img { + width: 100%; + height: auto; +} + +.browse, +.publish { + position: absolute; + top: 0px; + left: 263px; + width: 120px; + height: 48px; + font-size: 15px; + font-weight: 300; + font-family: SourceHanSansCN-Light; + color: #3C3C3C; + text-align: center; + line-height: 48px; +} + +.choice .publish { + left: 383px; +} + +.current { + background: #FDFAEB; + font-family: SourceHanSansCN-Bold; + font-size: 15px; + font-weight: bold; + color: #FADA3C; + line-height: 48px; + height: 48px; +} + +.current::after { + content: ""; + display: block; + width: 31px; + height: 4px; + background: #FADA3C; + border-radius: 2px; + margin: -3px auto; +} + + +/* 登录注册按钮代码 */ + +.register, +.login { + position: absolute; + top: 12px; + right: 125px; + width: 48px; + height: 24px; + background: #FFFDF4; + border: 1px solid #F0CA10; + border-radius: 12px; + font-family: SourceHanSansCN-Light; + font-size: 12px; + font-weight: 300; + color: #F0CA10; + line-height: 24px; + text-align: center; +} + +#nav .login { + right: 53px; +} + +.register:hover, +.login:hover { + background-color: #FADA3C; + color: #fff; +} + + +/* 头像 */ + +.message { + position: absolute; + top: 13px; + right: 147px; + width: 19px; + height: 21px; +} + +.message img:nth-child(1) { + width: 100%; + height: auto; +} + +.message img:nth-child(2) { + position: absolute; + top: 0; + right: -3px; + width: 13px; + height: 13px; +} + +.message span { + display: block; + position: absolute; + top: -6px; + right: -5px; + width: 17px; + height: 17px; + background-color: red; + border-radius: 50%; + font-size: 10px; + color: #fff; + line-height: 17px; + text-align: center; +} + +.pic { + position: absolute; + top: 12px; + right: 80px; + width: 27px; + height: 27px; +} + +.pic img { + width: 100%; + height: 100%; + border-radius: 50%; +} + + +/* 头像下的列表 */ + +.pic ul { + margin-left: -10.5px; + width: 48px; + height: 52px; + background: #FFFFFF; + border: 1px solid #EEEEEE; + border-radius: 0px 0px 3px 3px; + display: none; +} + +.pic li { + width: 48px; + height: 26px; + font-size: 6px; + font-family: SourceHanSansCN-Light; + font-weight: 300; + color: #666666; + transform: scale(0.85); + line-height: 28px; +} + +.pic ul li:hover { + color: #EEC708; +} + +.msg span { + display: block; + font-size: 16px; + font-family: SourceHanSansCN-Regular; + font-weight: 400; + color: #3C3C3C; + margin-left: 506px; + margin-top: 76px; +} + +.box { + float: left; + margin: 50px 0 0 100px; +} + + +/* 雇佣者的那个框 左上角 */ + +.employer { + position: relative; + width: 700px; + height: 120px; + /* border: 1px solid red; */ +} + +.head-photo { + position: absolute; + top: 35px; + left: 20px; + width: 60px; + height: 60px; + border-radius: 50%; + box-shadow: 0px 7px 6px 3px rgba(60, 60, 60, 0.05); +} + +.head-photo img { + width: 100%; + height: 100%; + border-radius: 50%; +} + +.nickname { + position: absolute; + font-family: SourceHanSansCN-Regular; + top: 45px; + left: 108px; +} + +.publish-time { + position: absolute; + top: 70px; + left: 108px; + font-family: SourceHanSansCN-Normal; + font-size: 12px; + color: #aaa; +} + + +/* 眼睛小图片 */ + +.scan-num { + position: absolute; + top: 60px; + left: 456px; + width: 25px; + height: 20px; +} + +.scan-num span { + position: absolute; + left: 30px; + font-size: 14px; +} + +.scan-num img { + width: 20px; + height: 20px; +} + + +/* 对所有文本框进行限制 */ + +.textarea { + resize: none; + height: 90px; + width: 500px; + border: 2px solid #BFBFBF; + background-color: #FEFDFA; + padding: 7px; + overflow-y: auto; + font-family: SourceHanSansCN-Normal; + color: #666; +} + + +/* 每一个tr */ + +tr { + height: 35px; +} + + +/* 每一个格子 */ + +td { + width: 100px; + vertical-align: top; + text-align: right; + /* border: 1px solid #ccc; */ + font-size: 14px; + font-family: SourceHanSansCN-Normal; + font-weight: 300; + color: #666; +} + +.proj-name { + height: 55px; +} + +.proj-name-content { + font-weight: bold!important; + padding-bottom: 4px; + font-size: 24px; + margin-left: 14px; + padding-bottom: 10px; + color: #3C3C3C; +} + +tr td:last-child { + width: 300px; + text-align: left; + padding-left: 15px; + font-weight: normal; +} + + +/* 备注那一栏 */ + +.note { + height: 20px; + overflow: hidden; +} + +.submit { + border: 2px solid #F0CA10; + padding: 8px 18px; + border-radius: 10px; + cursor: pointer; + transition: all .3s; + background-color: #FADA3C; + color: #fff; + line-height: 30px; + font-size: 18px; + letter-spacing: 1.5px; + margin: 40px 0 15px 520px; + outline: none; +} + +.submit:hover { + transform: scale(1.1); +} + +.line1 { + width: 330px; + height: 0; + border-top: 2px solid #ccc; + margin: 90px 0 25px; +} + +.status { + display: block; + font-family: SourceHanSansCN-Normal; + font-size: 20px; + color: #333; +} + + +/* 关于竞选成功和参与竞选的人 */ + +.success, +.campaign { + float: left; + width: 300px; + padding-left: 31px; + padding-top: 16px; +} + +.success div, +.campaign div { + font-size: 14px; + font-family: SourceHanSansCN-Normal; + font-weight: 700; + color: #666; + margin-bottom: 15px; +} + +.success ul li, +.campaign ul li { + float: left; + list-style: none; + margin-right: 10px; +} + +.success-pic, +.campaign-pic { + width: 40px; + height: 40px; +} + +.success-pic img, +.campaign-pic img { + width: 100%; + height: 100%; + border-radius: 50%; +} + + +/* 右边那一栏 */ + +.right { + margin-top: 100px; + float: left; +} + +.type { + display: block; + float: left; + background: #FEFDFA; + border: 1px solid #CEAC23; + border-radius: 2px; + font-size: 14px; + font-weight: 300; + color: #CEAC23; + font-family: SourceHanSansCN-Light; + padding: 1.5px 10px; + margin-right: 13px; + margin-top: -1px; +} + + +/* 中线分隔 */ + +.line2 { + float: left; + width: 2px; + height: 613px; + background-color: #ccc; + margin-top: 100px; +} + +.right { + width: 300px; + height: 300px; + padding: 30px; + /* border: 1px solid red; */ +} + +.about-author { + display: block; + font-family: SourceHanSansCN-Normal; + font-size: 20px; + color: #333; +} + +.big-shortcut { + position: relative; + width: 250px; + height: 150px; + /* border: 1px solid blue; */ +} + +.big-head-pic { + position: absolute; + top: 25px; + width: 90px; + height: 90px; + border-radius: 50%; +} + +.big-head-pic img { + width: 100%; + height: 100%; + border-radius: 50%; +} + +.big-shortcut span, +.email { + position: absolute; + top: 44px; + left: 120px; + font-size: 18px; + font-family: SourceHanSansCN-Regular; + color: #333; +} + +.email { + font-size: 14px; + top: 74px; + color: #aaa; +} + +.chat-to-author, +.author-home { + float: left; + margin-left: 10px; + margin-top: 5px; + position: relative; + width: 110px; + height: 30px; + border: 2px solid #F0CA10; + padding: 8px; + border-radius: 10px; + cursor: pointer; + transition: all .3s; +} + +.author-home { + margin-left: 15px; +} + +.chat-to-author:hover, +.author-home:hover { + transform: scale(1.1); +} + +.chat-to-author img, +.author-home img { + width: 33px; + height: 30px; +} + +.chat-to-author span, +.author-home span { + position: absolute; + top: 10px; + left: 46px; + font-family: SourceHanSansCN-Regular; + color: #CEAC23; +} \ No newline at end of file diff --git a/share_project/src/main/resources/static/images/bigchat.png b/share_project/src/main/resources/static/images/bigchat.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0e22548d437bc953d4f398b37bf3ce83395dc9 GIT binary patch literal 3295 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 + + + + + + + 项目详情 + + + + + + + + + +
+ +
+
+ +
+
+ nickName + 发布于:2020-10-10 10:00 +
+
+ + 5 +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
帮忙拿东西去戏班
项目价格:¥5
截止日期:2021-4-6 12:00
技能需求: + +
工作地点: + 融创空间 +
项目状态: + 正在招募..... +
项目分类: + 前端 + 后端 + 设计 +
项目描述: +
+ 需要将一份资料拿到1215中。文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办 文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办 文字太长怎么办文字太长怎么办文字太长怎么办 文字太长怎么办文字太长怎么办 文字太长怎么办文字太长怎么办文字太长怎么办文字太长怎么办 文字太长怎么办文字太长怎么办文字太长怎么办 +
+
特别备注: + + 一定要准时! + 一定要准时!一定要准时!一定要准时!一定要准时!一定要准时! + +
+ + + +
+ +
+ +
+ 关于作者 +
+
+ +
+ nickname + +
+ +
+ + 和TA联系 +
+
+ + TA的主页 +
+ +
+ +
竞选状态
+
+
竞选成功:
+
    +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
+
+
+
正在竞选:
+
    +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • +
  • +
    + +
    +
  • + +
+
+
+ + + + + + + + + + \ No newline at end of file -- Gitee