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 timeText = '';
if (timeDiff <= 60000) { //一分钟内
timeText = 'Just now';
timeText = '刚刚';
} else if (timeDiff > 60000 && timeDiff < 3600000) {
//1小时内
timeText = Math.floor(timeDiff / 60000) + ' minutes ago';
timeText = Math.floor(timeDiff / 60000) + '分钟前';
} else if (timeDiff >= 3600000 && timeDiff < 86400000 && !isYestday(dateTime)) {
//今日
timeText = formatDateTime(dateTime).substr(11, 5);
} else if (isYestday(dateTime)) {
//昨天
timeText = 'Yesterday ' + formatDateTime(dateTime).substr(11, 5);
timeText = '昨天' + formatDateTime(dateTime).substr(11, 5);
} else if (isYear(dateTime)) {
//今年
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}`,
method: "GET",
});
this.userInfo = userInfo;
// IP
let location = "";
if (userInfo.lastLoginIp) {
const location = await this.getIpLocation(userInfo.lastLoginIp);
location = await this.getIpLocation(userInfo.lastLoginIp);
this.ipLocation = location;
}
// userInfoIP
this.userInfo = userInfo;
this.updateFriendInfo();
await this.loadLabelOptions(friendId);
this.selectedLabels = [];
@ -1036,34 +1042,13 @@ export default {
async getIpLocation(ip) {
if (!ip) return "";
try {
const response = await fetch(`http://ip-api.com/json/${ip}?lang=zh-CN`);
const data = await response.json();
if (data && data.status === "success") {
let location = [];
if (data.country) location.push(data.country);
if (data.regionName) location.push(data.regionName);
if (data.city) location.push(data.city);
return location.join(" ");
}
return "";
//
const res = await this.$http.get(`/user/ip/location?ip=${ip}`);
console.log("IP定位结果:", res);
// res data
return res || "";
} catch (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);
}
console.error("IP定位失败:", error);
return "";
}
},

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

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

Loading…
Cancel
Save