Browse Source

ip前端修改

master
[yxf] 3 weeks ago
parent
commit
20a7b468a7
  1. 6
      im-web/src/api/date.js
  2. 43
      im-web/src/components/chat/ChatBox.vue
  3. 4
      im-web/src/view/Home.vue

6
im-web/src/api/date.js

@ -4,16 +4,16 @@ let toTimeText = (timeStamp, simple) => {
var timeDiff = currentTime - dateTime; //与当前时间误差 var timeDiff = currentTime - dateTime; //与当前时间误差
var timeText = ''; var timeText = '';
if (timeDiff <= 60000) { //一分钟内 if (timeDiff <= 60000) { //一分钟内
timeText = 'Just now'; timeText = '刚刚';
} else if (timeDiff > 60000 && timeDiff < 3600000) { } else if (timeDiff > 60000 && timeDiff < 3600000) {
//1小时内 //1小时内
timeText = Math.floor(timeDiff / 60000) + ' minutes ago'; timeText = Math.floor(timeDiff / 60000) + '分钟前';
} else if (timeDiff >= 3600000 && timeDiff < 86400000 && !isYestday(dateTime)) { } else if (timeDiff >= 3600000 && timeDiff < 86400000 && !isYestday(dateTime)) {
//今日 //今日
timeText = formatDateTime(dateTime).substr(11, 5); timeText = formatDateTime(dateTime).substr(11, 5);
} else if (isYestday(dateTime)) { } else if (isYestday(dateTime)) {
//昨天 //昨天
timeText = 'Yesterday ' + formatDateTime(dateTime).substr(11, 5); timeText = '昨天' + formatDateTime(dateTime).substr(11, 5);
} else if (isYear(dateTime)) { } else if (isYear(dateTime)) {
//今年 //今年
timeText = formatDateTime(dateTime).substr(5, simple ? 5 : 14); timeText = formatDateTime(dateTime).substr(5, simple ? 5 : 14);

43
im-web/src/components/chat/ChatBox.vue

@ -863,11 +863,17 @@ export default {
url: `/user/find/${friendId}`, url: `/user/find/${friendId}`,
method: "GET", method: "GET",
}); });
this.userInfo = userInfo;
// IP
let location = "";
if (userInfo.lastLoginIp) { if (userInfo.lastLoginIp) {
const location = await this.getIpLocation(userInfo.lastLoginIp); location = await this.getIpLocation(userInfo.lastLoginIp);
this.ipLocation = location; this.ipLocation = location;
} }
// userInfoIP
this.userInfo = userInfo;
this.updateFriendInfo(); this.updateFriendInfo();
await this.loadLabelOptions(friendId); await this.loadLabelOptions(friendId);
this.selectedLabels = []; this.selectedLabels = [];
@ -1036,34 +1042,13 @@ export default {
async getIpLocation(ip) { async getIpLocation(ip) {
if (!ip) return ""; if (!ip) return "";
try { try {
const response = await fetch(`http://ip-api.com/json/${ip}?lang=zh-CN`); //
const data = await response.json(); const res = await this.$http.get(`/user/ip/location?ip=${ip}`);
if (data && data.status === "success") { console.log("IP定位结果:", res);
let location = []; // res data
if (data.country) location.push(data.country); return res || "";
if (data.regionName) location.push(data.regionName);
if (data.city) location.push(data.city);
return location.join(" ");
}
return "";
} catch (error) { } catch (error) {
console.error("获取IP地理位置失败:", error); console.error("IP定位失败:", error);
try {
const backupResponse = await fetch(
`https://whois.pconline.com.cn/ipJson.jsp?ip=${ip}&json=true`
);
const text = await backupResponse.text();
const data = JSON.parse(text);
if (data) {
let location = [];
if (data.pro) location.push(data.pro);
if (data.city) location.push(data.city);
if (data.addr) location.push(data.addr);
return location.join(" ");
}
} catch (backupError) {
console.error("备用API也失败了:", backupError);
}
return ""; return "";
} }
}, },

4
im-web/src/view/Home.vue

@ -39,7 +39,6 @@
</router-link> --> </router-link> -->
</div> </div>
</div> </div>
<div class="botoom"> <div class="botoom">
<div class="bottom-item" @click="onSwtichFullScreen"> <div class="bottom-item" @click="onSwtichFullScreen">
<i class="el-icon-full-screen"></i> <i class="el-icon-full-screen"></i>
@ -84,7 +83,6 @@
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import HeadImage from '../components/common/HeadImage.vue'; import HeadImage from '../components/common/HeadImage.vue';
import Setting from '../components/setting/Setting.vue'; import Setting from '../components/setting/Setting.vue';
@ -94,7 +92,6 @@ import RtcPrivateVideo from '../components/rtc/RtcPrivateVideo.vue';
import RtcPrivateAcceptor from '../components/rtc/RtcPrivateAcceptor.vue'; import RtcPrivateAcceptor from '../components/rtc/RtcPrivateAcceptor.vue';
import RtcGroupVideo from '../components/rtc/RtcGroupVideo.vue'; import RtcGroupVideo from '../components/rtc/RtcGroupVideo.vue';
import AccountSwitchMenu from '../components/account/AccountSwitchMenu.vue'; import AccountSwitchMenu from '../components/account/AccountSwitchMenu.vue';
export default { export default {
components: { components: {
HeadImage, HeadImage,
@ -596,7 +593,6 @@ export default {
} }
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.home-page { .home-page {
height: 100vh; height: 100vh;

Loading…
Cancel
Save