mirror of
https://github.com/LC044/WeChatMsg
synced 2025-04-19 02:08:05 +08:00
5440 lines
413 KiB
HTML
5440 lines
413 KiB
HTML
|
<!DOCTYPE html>
|
|||
|
<html lang="zh-CN">
|
|||
|
|
|||
|
<head>
|
|||
|
<meta charset="UTF-8">
|
|||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|||
|
<meta name="referrer" content="no-referrer" />
|
|||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
|||
|
<style>
|
|||
|
.flatpickr-calendar {
|
|||
|
background: transparent;
|
|||
|
opacity: 0;
|
|||
|
display: none;
|
|||
|
text-align: center;
|
|||
|
visibility: hidden;
|
|||
|
padding: 0;
|
|||
|
-webkit-animation: none;
|
|||
|
animation: none;
|
|||
|
direction: ltr;
|
|||
|
border: 0;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 24px;
|
|||
|
border-radius: 5px;
|
|||
|
position: absolute;
|
|||
|
width: 307.875px;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
-ms-touch-action: manipulation;
|
|||
|
touch-action: manipulation;
|
|||
|
background: #fff;
|
|||
|
-webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08);
|
|||
|
box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.open,
|
|||
|
.flatpickr-calendar.inline {
|
|||
|
opacity: 1;
|
|||
|
max-height: 640px;
|
|||
|
visibility: visible
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.open {
|
|||
|
display: inline-block;
|
|||
|
z-index: 99999
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.animate.open {
|
|||
|
-webkit-animation: fpFadeInDown 300ms cubic-bezier(.23, 1, .32, 1);
|
|||
|
animation: fpFadeInDown 300ms cubic-bezier(.23, 1, .32, 1)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.inline {
|
|||
|
display: block;
|
|||
|
position: relative;
|
|||
|
top: 2px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.static {
|
|||
|
position: absolute;
|
|||
|
top: calc(100% + 2px)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.static.open {
|
|||
|
z-index: 999;
|
|||
|
display: block
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
|
|||
|
-webkit-box-shadow: none !important;
|
|||
|
box-shadow: none !important
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
|
|||
|
-webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
|||
|
box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar .hasWeeks .dayContainer,
|
|||
|
.flatpickr-calendar .hasTime .dayContainer {
|
|||
|
border-bottom: 0;
|
|||
|
border-bottom-right-radius: 0;
|
|||
|
border-bottom-left-radius: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar .hasWeeks .dayContainer {
|
|||
|
border-left: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.hasTime .flatpickr-time {
|
|||
|
height: 40px;
|
|||
|
border-top: 1px solid #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
|
|||
|
height: auto
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar:before,
|
|||
|
.flatpickr-calendar:after {
|
|||
|
position: absolute;
|
|||
|
display: block;
|
|||
|
pointer-events: none;
|
|||
|
border: solid transparent;
|
|||
|
content: '';
|
|||
|
height: 0;
|
|||
|
width: 0;
|
|||
|
left: 22px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.rightMost:before,
|
|||
|
.flatpickr-calendar.arrowRight:before,
|
|||
|
.flatpickr-calendar.rightMost:after,
|
|||
|
.flatpickr-calendar.arrowRight:after {
|
|||
|
left: auto;
|
|||
|
right: 22px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowCenter:before,
|
|||
|
.flatpickr-calendar.arrowCenter:after {
|
|||
|
left: 50%;
|
|||
|
right: 50%
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar:before {
|
|||
|
border-width: 5px;
|
|||
|
margin: 0 -5px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar:after {
|
|||
|
border-width: 4px;
|
|||
|
margin: 0 -4px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowTop:before,
|
|||
|
.flatpickr-calendar.arrowTop:after {
|
|||
|
bottom: 100%
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowTop:before {
|
|||
|
border-bottom-color: #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowTop:after {
|
|||
|
border-bottom-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowBottom:before,
|
|||
|
.flatpickr-calendar.arrowBottom:after {
|
|||
|
top: 100%
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowBottom:before {
|
|||
|
border-top-color: #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar.arrowBottom:after {
|
|||
|
border-top-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-calendar:focus {
|
|||
|
outline: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-wrapper {
|
|||
|
position: relative;
|
|||
|
display: inline-block
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months {
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-month {
|
|||
|
background: transparent;
|
|||
|
color: rgba(0, 0, 0, 0.9);
|
|||
|
fill: rgba(0, 0, 0, 0.9);
|
|||
|
height: 34px;
|
|||
|
line-height: 1;
|
|||
|
text-align: center;
|
|||
|
position: relative;
|
|||
|
-webkit-user-select: none;
|
|||
|
-moz-user-select: none;
|
|||
|
-ms-user-select: none;
|
|||
|
user-select: none;
|
|||
|
overflow: hidden;
|
|||
|
-webkit-box-flex: 1;
|
|||
|
-webkit-flex: 1;
|
|||
|
-ms-flex: 1;
|
|||
|
flex: 1
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month,
|
|||
|
.flatpickr-months .flatpickr-next-month {
|
|||
|
-webkit-user-select: none;
|
|||
|
-moz-user-select: none;
|
|||
|
-ms-user-select: none;
|
|||
|
user-select: none;
|
|||
|
text-decoration: none;
|
|||
|
cursor: pointer;
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
height: 34px;
|
|||
|
padding: 10px;
|
|||
|
z-index: 3;
|
|||
|
color: rgba(0, 0, 0, 0.9);
|
|||
|
fill: rgba(0, 0, 0, 0.9)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
|
|||
|
.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
|
|||
|
display: none
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month i,
|
|||
|
.flatpickr-months .flatpickr-next-month i {
|
|||
|
position: relative
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
|
|||
|
.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
|
|||
|
/*
|
|||
|
/*rtl:begin:ignore*/
|
|||
|
left: 0
|
|||
|
/*
|
|||
|
/*rtl:end:ignore*/
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
/*rtl:begin:ignore*/
|
|||
|
/*
|
|||
|
/*rtl:end:ignore*/
|
|||
|
.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
|
|||
|
.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
|
|||
|
/*
|
|||
|
/*rtl:begin:ignore*/
|
|||
|
right: 0
|
|||
|
/*
|
|||
|
/*rtl:end:ignore*/
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
/*rtl:begin:ignore*/
|
|||
|
/*
|
|||
|
/*rtl:end:ignore*/
|
|||
|
.flatpickr-months .flatpickr-prev-month:hover,
|
|||
|
.flatpickr-months .flatpickr-next-month:hover {
|
|||
|
color: #959ea9
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month:hover svg,
|
|||
|
.flatpickr-months .flatpickr-next-month:hover svg {
|
|||
|
fill: #f64747
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month svg,
|
|||
|
.flatpickr-months .flatpickr-next-month svg {
|
|||
|
width: 14px;
|
|||
|
height: 14px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-months .flatpickr-prev-month svg path,
|
|||
|
.flatpickr-months .flatpickr-next-month svg path {
|
|||
|
-webkit-transition: fill .1s;
|
|||
|
transition: fill .1s;
|
|||
|
fill: inherit
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper {
|
|||
|
position: relative;
|
|||
|
height: auto
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper input,
|
|||
|
.numInputWrapper span {
|
|||
|
display: inline-block
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper input {
|
|||
|
width: 100%
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper input::-ms-clear {
|
|||
|
display: none
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper input::-webkit-outer-spin-button,
|
|||
|
.numInputWrapper input::-webkit-inner-spin-button {
|
|||
|
margin: 0;
|
|||
|
-webkit-appearance: none
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span {
|
|||
|
position: absolute;
|
|||
|
right: 0;
|
|||
|
width: 14px;
|
|||
|
padding: 0 4px 0 2px;
|
|||
|
height: 50%;
|
|||
|
line-height: 50%;
|
|||
|
opacity: 0;
|
|||
|
cursor: pointer;
|
|||
|
border: 1px solid rgba(57, 57, 57, 0.15);
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span:hover {
|
|||
|
background: rgba(0, 0, 0, 0.1)
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span:active {
|
|||
|
background: rgba(0, 0, 0, 0.2)
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span:after {
|
|||
|
display: block;
|
|||
|
content: "";
|
|||
|
position: absolute
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span.arrowUp {
|
|||
|
top: 0;
|
|||
|
border-bottom: 0
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span.arrowUp:after {
|
|||
|
border-left: 4px solid transparent;
|
|||
|
border-right: 4px solid transparent;
|
|||
|
border-bottom: 4px solid rgba(57, 57, 57, 0.6);
|
|||
|
top: 26%
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span.arrowDown {
|
|||
|
top: 50%
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span.arrowDown:after {
|
|||
|
border-left: 4px solid transparent;
|
|||
|
border-right: 4px solid transparent;
|
|||
|
border-top: 4px solid rgba(57, 57, 57, 0.6);
|
|||
|
top: 40%
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span svg {
|
|||
|
width: inherit;
|
|||
|
height: auto
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper span svg path {
|
|||
|
fill: rgba(0, 0, 0, 0.5)
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper:hover {
|
|||
|
background: rgba(0, 0, 0, 0.05)
|
|||
|
}
|
|||
|
|
|||
|
.numInputWrapper:hover span {
|
|||
|
opacity: 1
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month {
|
|||
|
font-size: 135%;
|
|||
|
line-height: inherit;
|
|||
|
font-weight: 300;
|
|||
|
color: inherit;
|
|||
|
position: absolute;
|
|||
|
width: 75%;
|
|||
|
left: 12.5%;
|
|||
|
padding: 7.48px 0 0 0;
|
|||
|
line-height: 1;
|
|||
|
height: 34px;
|
|||
|
display: inline-block;
|
|||
|
text-align: center;
|
|||
|
-webkit-transform: translate3d(0, 0, 0);
|
|||
|
transform: translate3d(0, 0, 0)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month span.cur-month {
|
|||
|
font-family: inherit;
|
|||
|
font-weight: 700;
|
|||
|
color: inherit;
|
|||
|
display: inline-block;
|
|||
|
margin-left: .5ch;
|
|||
|
padding: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month span.cur-month:hover {
|
|||
|
background: rgba(0, 0, 0, 0.05)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .numInputWrapper {
|
|||
|
width: 6ch;
|
|||
|
width: 7ch\0;
|
|||
|
display: inline-block
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .numInputWrapper span.arrowUp:after {
|
|||
|
border-bottom-color: rgba(0, 0, 0, 0.9)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .numInputWrapper span.arrowDown:after {
|
|||
|
border-top-color: rgba(0, 0, 0, 0.9)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month input.cur-year {
|
|||
|
background: transparent;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
color: inherit;
|
|||
|
cursor: text;
|
|||
|
padding: 0 0 0 .5ch;
|
|||
|
margin: 0;
|
|||
|
display: inline-block;
|
|||
|
font-size: inherit;
|
|||
|
font-family: inherit;
|
|||
|
font-weight: 300;
|
|||
|
line-height: inherit;
|
|||
|
height: auto;
|
|||
|
border: 0;
|
|||
|
border-radius: 0;
|
|||
|
vertical-align: initial;
|
|||
|
-webkit-appearance: textfield;
|
|||
|
-moz-appearance: textfield;
|
|||
|
appearance: textfield
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month input.cur-year:focus {
|
|||
|
outline: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month input.cur-year[disabled],
|
|||
|
.flatpickr-current-month input.cur-year[disabled]:hover {
|
|||
|
font-size: 100%;
|
|||
|
color: rgba(0, 0, 0, 0.5);
|
|||
|
background: transparent;
|
|||
|
pointer-events: none
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .flatpickr-monthDropdown-months {
|
|||
|
appearance: menulist;
|
|||
|
background: transparent;
|
|||
|
border: none;
|
|||
|
border-radius: 0;
|
|||
|
box-sizing: border-box;
|
|||
|
color: inherit;
|
|||
|
cursor: pointer;
|
|||
|
font-size: inherit;
|
|||
|
font-family: inherit;
|
|||
|
font-weight: 300;
|
|||
|
height: auto;
|
|||
|
line-height: inherit;
|
|||
|
margin: -1px 0 0 0;
|
|||
|
outline: none;
|
|||
|
padding: 0 0 0 .5ch;
|
|||
|
position: relative;
|
|||
|
vertical-align: initial;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
-webkit-appearance: menulist;
|
|||
|
-moz-appearance: menulist;
|
|||
|
width: auto
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
|
|||
|
.flatpickr-current-month .flatpickr-monthDropdown-months:active {
|
|||
|
outline: none
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
|
|||
|
background: rgba(0, 0, 0, 0.05)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
|
|||
|
background-color: transparent;
|
|||
|
outline: none;
|
|||
|
padding: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekdays {
|
|||
|
background: transparent;
|
|||
|
text-align: center;
|
|||
|
overflow: hidden;
|
|||
|
width: 100%;
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex;
|
|||
|
-webkit-box-align: center;
|
|||
|
-webkit-align-items: center;
|
|||
|
-ms-flex-align: center;
|
|||
|
align-items: center;
|
|||
|
height: 28px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekdays .flatpickr-weekdaycontainer {
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex;
|
|||
|
-webkit-box-flex: 1;
|
|||
|
-webkit-flex: 1;
|
|||
|
-ms-flex: 1;
|
|||
|
flex: 1
|
|||
|
}
|
|||
|
|
|||
|
span.flatpickr-weekday {
|
|||
|
cursor: default;
|
|||
|
font-size: 90%;
|
|||
|
background: transparent;
|
|||
|
color: rgba(0, 0, 0, 0.54);
|
|||
|
line-height: 1;
|
|||
|
margin: 0;
|
|||
|
text-align: center;
|
|||
|
display: block;
|
|||
|
-webkit-box-flex: 1;
|
|||
|
-webkit-flex: 1;
|
|||
|
-ms-flex: 1;
|
|||
|
flex: 1;
|
|||
|
font-weight: bolder
|
|||
|
}
|
|||
|
|
|||
|
.dayContainer,
|
|||
|
.flatpickr-weeks {
|
|||
|
padding: 1px 0 0 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-days {
|
|||
|
position: relative;
|
|||
|
overflow: hidden;
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex;
|
|||
|
-webkit-box-align: start;
|
|||
|
-webkit-align-items: flex-start;
|
|||
|
-ms-flex-align: start;
|
|||
|
align-items: flex-start;
|
|||
|
width: 307.875px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-days:focus {
|
|||
|
outline: 0
|
|||
|
}
|
|||
|
|
|||
|
.dayContainer {
|
|||
|
padding: 0;
|
|||
|
outline: 0;
|
|||
|
text-align: left;
|
|||
|
width: 307.875px;
|
|||
|
min-width: 307.875px;
|
|||
|
max-width: 307.875px;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
display: inline-block;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: flex;
|
|||
|
-webkit-flex-wrap: wrap;
|
|||
|
flex-wrap: wrap;
|
|||
|
-ms-flex-wrap: wrap;
|
|||
|
-ms-flex-pack: justify;
|
|||
|
-webkit-justify-content: space-around;
|
|||
|
justify-content: space-around;
|
|||
|
-webkit-transform: translate3d(0, 0, 0);
|
|||
|
transform: translate3d(0, 0, 0);
|
|||
|
opacity: 1
|
|||
|
}
|
|||
|
|
|||
|
.dayContainer+.dayContainer {
|
|||
|
-webkit-box-shadow: -1px 0 0 #e6e6e6;
|
|||
|
box-shadow: -1px 0 0 #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day {
|
|||
|
background: none;
|
|||
|
border: 1px solid transparent;
|
|||
|
border-radius: 150px;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
color: #393939;
|
|||
|
cursor: pointer;
|
|||
|
font-weight: 400;
|
|||
|
width: 14.2857143%;
|
|||
|
-webkit-flex-basis: 14.2857143%;
|
|||
|
-ms-flex-preferred-size: 14.2857143%;
|
|||
|
flex-basis: 14.2857143%;
|
|||
|
max-width: 39px;
|
|||
|
height: 39px;
|
|||
|
line-height: 39px;
|
|||
|
margin: 0;
|
|||
|
display: inline-block;
|
|||
|
position: relative;
|
|||
|
-webkit-box-pack: center;
|
|||
|
-webkit-justify-content: center;
|
|||
|
-ms-flex-pack: center;
|
|||
|
justify-content: center;
|
|||
|
text-align: center
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.inRange,
|
|||
|
.flatpickr-day.prevMonthDay.inRange,
|
|||
|
.flatpickr-day.nextMonthDay.inRange,
|
|||
|
.flatpickr-day.today.inRange,
|
|||
|
.flatpickr-day.prevMonthDay.today.inRange,
|
|||
|
.flatpickr-day.nextMonthDay.today.inRange,
|
|||
|
.flatpickr-day:hover,
|
|||
|
.flatpickr-day.prevMonthDay:hover,
|
|||
|
.flatpickr-day.nextMonthDay:hover,
|
|||
|
.flatpickr-day:focus,
|
|||
|
.flatpickr-day.prevMonthDay:focus,
|
|||
|
.flatpickr-day.nextMonthDay:focus {
|
|||
|
cursor: pointer;
|
|||
|
outline: 0;
|
|||
|
background: #e6e6e6;
|
|||
|
border-color: #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.today {
|
|||
|
border-color: #959ea9
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.today:hover,
|
|||
|
.flatpickr-day.today:focus {
|
|||
|
border-color: #959ea9;
|
|||
|
background: #959ea9;
|
|||
|
color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.selected,
|
|||
|
.flatpickr-day.startRange,
|
|||
|
.flatpickr-day.endRange,
|
|||
|
.flatpickr-day.selected.inRange,
|
|||
|
.flatpickr-day.startRange.inRange,
|
|||
|
.flatpickr-day.endRange.inRange,
|
|||
|
.flatpickr-day.selected:focus,
|
|||
|
.flatpickr-day.startRange:focus,
|
|||
|
.flatpickr-day.endRange:focus,
|
|||
|
.flatpickr-day.selected:hover,
|
|||
|
.flatpickr-day.startRange:hover,
|
|||
|
.flatpickr-day.endRange:hover,
|
|||
|
.flatpickr-day.selected.prevMonthDay,
|
|||
|
.flatpickr-day.startRange.prevMonthDay,
|
|||
|
.flatpickr-day.endRange.prevMonthDay,
|
|||
|
.flatpickr-day.selected.nextMonthDay,
|
|||
|
.flatpickr-day.startRange.nextMonthDay,
|
|||
|
.flatpickr-day.endRange.nextMonthDay {
|
|||
|
background: #569ff7;
|
|||
|
-webkit-box-shadow: none;
|
|||
|
box-shadow: none;
|
|||
|
color: #fff;
|
|||
|
border-color: #569ff7
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.selected.startRange,
|
|||
|
.flatpickr-day.startRange.startRange,
|
|||
|
.flatpickr-day.endRange.startRange {
|
|||
|
border-radius: 50px 0 0 50px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.selected.endRange,
|
|||
|
.flatpickr-day.startRange.endRange,
|
|||
|
.flatpickr-day.endRange.endRange {
|
|||
|
border-radius: 0 50px 50px 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),
|
|||
|
.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),
|
|||
|
.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)) {
|
|||
|
-webkit-box-shadow: -10px 0 0 #569ff7;
|
|||
|
box-shadow: -10px 0 0 #569ff7
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.selected.startRange.endRange,
|
|||
|
.flatpickr-day.startRange.startRange.endRange,
|
|||
|
.flatpickr-day.endRange.startRange.endRange {
|
|||
|
border-radius: 50px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.inRange {
|
|||
|
border-radius: 0;
|
|||
|
-webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
|||
|
box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.flatpickr-disabled,
|
|||
|
.flatpickr-day.flatpickr-disabled:hover,
|
|||
|
.flatpickr-day.prevMonthDay,
|
|||
|
.flatpickr-day.nextMonthDay,
|
|||
|
.flatpickr-day.notAllowed,
|
|||
|
.flatpickr-day.notAllowed.prevMonthDay,
|
|||
|
.flatpickr-day.notAllowed.nextMonthDay {
|
|||
|
color: rgba(57, 57, 57, 0.3);
|
|||
|
background: transparent;
|
|||
|
border-color: transparent;
|
|||
|
cursor: default
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.flatpickr-disabled,
|
|||
|
.flatpickr-day.flatpickr-disabled:hover {
|
|||
|
cursor: not-allowed;
|
|||
|
color: rgba(57, 57, 57, 0.1)
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.week.selected {
|
|||
|
border-radius: 0;
|
|||
|
-webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
|
|||
|
box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-day.hidden {
|
|||
|
visibility: hidden
|
|||
|
}
|
|||
|
|
|||
|
.rangeMode .flatpickr-day {
|
|||
|
margin-top: 1px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekwrapper {
|
|||
|
float: left
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekwrapper .flatpickr-weeks {
|
|||
|
padding: 0 12px;
|
|||
|
-webkit-box-shadow: 1px 0 0 #e6e6e6;
|
|||
|
box-shadow: 1px 0 0 #e6e6e6
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekwrapper .flatpickr-weekday {
|
|||
|
float: none;
|
|||
|
width: 100%;
|
|||
|
line-height: 28px
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-weekwrapper span.flatpickr-day,
|
|||
|
.flatpickr-weekwrapper span.flatpickr-day:hover {
|
|||
|
display: block;
|
|||
|
width: 100%;
|
|||
|
max-width: none;
|
|||
|
color: rgba(57, 57, 57, 0.3);
|
|||
|
background: transparent;
|
|||
|
cursor: default;
|
|||
|
border: none
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-innerContainer {
|
|||
|
display: block;
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-rContainer {
|
|||
|
display: inline-block;
|
|||
|
padding: 0;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time {
|
|||
|
text-align: center;
|
|||
|
outline: 0;
|
|||
|
display: block;
|
|||
|
height: 0;
|
|||
|
line-height: 40px;
|
|||
|
max-height: 40px;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
overflow: hidden;
|
|||
|
display: -webkit-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time:after {
|
|||
|
content: "";
|
|||
|
display: table;
|
|||
|
clear: both
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time .numInputWrapper {
|
|||
|
-webkit-box-flex: 1;
|
|||
|
-webkit-flex: 1;
|
|||
|
-ms-flex: 1;
|
|||
|
flex: 1;
|
|||
|
width: 40%;
|
|||
|
height: 40px;
|
|||
|
float: left
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time .numInputWrapper span.arrowUp:after {
|
|||
|
border-bottom-color: #393939
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time .numInputWrapper span.arrowDown:after {
|
|||
|
border-top-color: #393939
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time.hasSeconds .numInputWrapper {
|
|||
|
width: 26%
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time.time24hr .numInputWrapper {
|
|||
|
width: 49%
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time input {
|
|||
|
background: transparent;
|
|||
|
-webkit-box-shadow: none;
|
|||
|
box-shadow: none;
|
|||
|
border: 0;
|
|||
|
border-radius: 0;
|
|||
|
text-align: center;
|
|||
|
margin: 0;
|
|||
|
padding: 0;
|
|||
|
height: inherit;
|
|||
|
line-height: inherit;
|
|||
|
color: #393939;
|
|||
|
font-size: 14px;
|
|||
|
position: relative;
|
|||
|
-webkit-box-sizing: border-box;
|
|||
|
box-sizing: border-box;
|
|||
|
-webkit-appearance: textfield;
|
|||
|
-moz-appearance: textfield;
|
|||
|
appearance: textfield
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time input.flatpickr-hour {
|
|||
|
font-weight: bold
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time input.flatpickr-minute,
|
|||
|
.flatpickr-time input.flatpickr-second {
|
|||
|
font-weight: 400
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time input:focus {
|
|||
|
outline: 0;
|
|||
|
border: 0
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time .flatpickr-time-separator,
|
|||
|
.flatpickr-time .flatpickr-am-pm {
|
|||
|
height: inherit;
|
|||
|
float: left;
|
|||
|
line-height: inherit;
|
|||
|
color: #393939;
|
|||
|
font-weight: bold;
|
|||
|
width: 2%;
|
|||
|
-webkit-user-select: none;
|
|||
|
-moz-user-select: none;
|
|||
|
-ms-user-select: none;
|
|||
|
user-select: none;
|
|||
|
-webkit-align-self: center;
|
|||
|
-ms-flex-item-align: center;
|
|||
|
align-self: center
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time .flatpickr-am-pm {
|
|||
|
outline: 0;
|
|||
|
width: 18%;
|
|||
|
cursor: pointer;
|
|||
|
text-align: center;
|
|||
|
font-weight: 400
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-time input:hover,
|
|||
|
.flatpickr-time .flatpickr-am-pm:hover,
|
|||
|
.flatpickr-time input:focus,
|
|||
|
.flatpickr-time .flatpickr-am-pm:focus {
|
|||
|
background: #eee
|
|||
|
}
|
|||
|
|
|||
|
.flatpickr-input[readonly] {
|
|||
|
cursor: pointer
|
|||
|
}
|
|||
|
|
|||
|
@-webkit-keyframes fpFadeInDown {
|
|||
|
from {
|
|||
|
opacity: 0;
|
|||
|
-webkit-transform: translate3d(0, -20px, 0);
|
|||
|
transform: translate3d(0, -20px, 0)
|
|||
|
}
|
|||
|
|
|||
|
to {
|
|||
|
opacity: 1;
|
|||
|
-webkit-transform: translate3d(0, 0, 0);
|
|||
|
transform: translate3d(0, 0, 0)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@keyframes fpFadeInDown {
|
|||
|
from {
|
|||
|
opacity: 0;
|
|||
|
-webkit-transform: translate3d(0, -20px, 0);
|
|||
|
transform: translate3d(0, -20px, 0)
|
|||
|
}
|
|||
|
|
|||
|
to {
|
|||
|
opacity: 1;
|
|||
|
-webkit-transform: translate3d(0, 0, 0);
|
|||
|
transform: translate3d(0, 0, 0)
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|
|||
|
<style>
|
|||
|
* {
|
|||
|
padding: 0;
|
|||
|
margin: 0;
|
|||
|
}
|
|||
|
|
|||
|
body {
|
|||
|
margin: 0;
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
height: 100vh;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
background-color: #f5f5f5
|
|||
|
}
|
|||
|
|
|||
|
::-webkit-scrollbar {
|
|||
|
width: 10px
|
|||
|
}
|
|||
|
|
|||
|
::-webkit-scrollbar-track {
|
|||
|
border-radius: 8px
|
|||
|
}
|
|||
|
|
|||
|
::-webkit-scrollbar-thumb {
|
|||
|
border-radius: 10px;
|
|||
|
background: 0 0
|
|||
|
}
|
|||
|
|
|||
|
.page {
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
max-width: 1200px;
|
|||
|
box-shadow: 1px 1px 3px #ebebeb;
|
|||
|
border-radius: 5px
|
|||
|
}
|
|||
|
|
|||
|
.page .side-bar {
|
|||
|
width: 50px;
|
|||
|
border-top-left-radius: 5px;
|
|||
|
border-bottom-left-radius: 5px
|
|||
|
}
|
|||
|
|
|||
|
.page .mid-bar {
|
|||
|
width: 300px;
|
|||
|
position: relative;
|
|||
|
--left: 60%;
|
|||
|
--color: #0d5dff
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body {
|
|||
|
flex: 1;
|
|||
|
display: flex;
|
|||
|
width: 100%;
|
|||
|
flex-direction: column;
|
|||
|
background-color: #f5f5f5;
|
|||
|
border-top-right-radius: 5px;
|
|||
|
border-bottom-right-radius: 5px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .title-bar {
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: flex-start;
|
|||
|
align-items: center;
|
|||
|
padding-top: 3px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .title-bar p {
|
|||
|
margin: 5px 25px;
|
|||
|
font-size: 18px;
|
|||
|
max-width: 180px;
|
|||
|
align-self: flex-start
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .container {
|
|||
|
flex: 1;
|
|||
|
border-top: solid 3px #f0f0f0;
|
|||
|
border-bottom: solid 3px #f0f0f0
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar,
|
|||
|
.page .main-body .nav-bar .turner-bar {
|
|||
|
display: flex;
|
|||
|
flex-direction: row;
|
|||
|
justify-content: center;
|
|||
|
align-items: center
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar {
|
|||
|
height: 50px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar {
|
|||
|
color: #2e2e2e;
|
|||
|
font-size: 16px;
|
|||
|
user-select: none
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar .button {
|
|||
|
display: inline-block;
|
|||
|
background-color: #d6d6d6;
|
|||
|
margin-left: 20px;
|
|||
|
margin-right: 20px;
|
|||
|
padding: 10px 15px;
|
|||
|
border-radius: 5px;
|
|||
|
font-size: 14px;
|
|||
|
cursor: pointer;
|
|||
|
transition: all .2s
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar .button:hover {
|
|||
|
background-color: #ebebeb
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar p {
|
|||
|
display: inline-block;
|
|||
|
margin-left: 5px;
|
|||
|
margin-right: 5px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar input {
|
|||
|
border: 0;
|
|||
|
resize: none;
|
|||
|
outline: 0;
|
|||
|
background: 0 0;
|
|||
|
border-bottom: solid 1px #1f1f1f;
|
|||
|
text-align: center;
|
|||
|
font-size: 18px;
|
|||
|
font-weight: 600;
|
|||
|
height: 24px;
|
|||
|
width: 50px
|
|||
|
}
|
|||
|
|
|||
|
.page .mid-bar .timeline-area,
|
|||
|
.timeline {
|
|||
|
position: relative;
|
|||
|
height: 100%;
|
|||
|
display: flex;
|
|||
|
overflow-y: auto;
|
|||
|
flex-direction: column
|
|||
|
}
|
|||
|
|
|||
|
.page .mid-bar .timeline-area {
|
|||
|
flex: 1;
|
|||
|
padding-right: 5px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-wrapper {
|
|||
|
flex: 1;
|
|||
|
overflow-y: auto;
|
|||
|
padding: 30% 0
|
|||
|
}
|
|||
|
|
|||
|
.timeline {
|
|||
|
width: 100%;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.timeline-item-year {
|
|||
|
height: 40px;
|
|||
|
position: relative;
|
|||
|
display: flex
|
|||
|
}
|
|||
|
|
|||
|
.timeline-item-month {
|
|||
|
height: 25px;
|
|||
|
display: flex
|
|||
|
}
|
|||
|
|
|||
|
.timeline::before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
left: var(--left);
|
|||
|
width: 1px;
|
|||
|
height: 600px;
|
|||
|
top: 20px;
|
|||
|
bottom: 0;
|
|||
|
background-image: linear-gradient(to bottom, rgba(144, 156, 173, .6) 60%, rgba(255, 255, 255, 0) 0%);
|
|||
|
background-position: left;
|
|||
|
background-size: 1px 5px;
|
|||
|
background-repeat: repeat-y
|
|||
|
}
|
|||
|
|
|||
|
.timeline-dot-month,
|
|||
|
.timeline-dot-year {
|
|||
|
left: var(--left);
|
|||
|
position: relative;
|
|||
|
border-radius: 50%;
|
|||
|
box-shadow: 0 0 0 1px #d8d8d8;
|
|||
|
text-align: center;
|
|||
|
top: 50%;
|
|||
|
transform: translateY(-50%);
|
|||
|
line-height: 40px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-dot-month {
|
|||
|
background: #fff;
|
|||
|
width: 7px;
|
|||
|
height: 7px;
|
|||
|
margin-left: -3px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-dot-year {
|
|||
|
width: 10px;
|
|||
|
height: 10px;
|
|||
|
background: #000;
|
|||
|
margin-left: -4.5px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-item-month.current .timeline-dot-month {
|
|||
|
width: 7px;
|
|||
|
height: 7px;
|
|||
|
background-color: var(--color);
|
|||
|
box-shadow: 0 0 4px var(--color);
|
|||
|
border: 1px solid #fff;
|
|||
|
margin-left: -3px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-item-month .timeline-right,
|
|||
|
.timeline-item-year .timeline-right {
|
|||
|
position: relative;
|
|||
|
margin: 0 0 0 calc(var(--left) + 15px);
|
|||
|
height: 40px;
|
|||
|
line-height: 40px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-item-month .timeline-right {
|
|||
|
height: 25px;
|
|||
|
line-height: 25px
|
|||
|
}
|
|||
|
|
|||
|
.timeline-right:hover {
|
|||
|
color: red
|
|||
|
}
|
|||
|
|
|||
|
.no-msg-month {
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.hidden-month {
|
|||
|
display: none
|
|||
|
}
|
|||
|
|
|||
|
.container {
|
|||
|
display: flex;
|
|||
|
overflow: hidden;
|
|||
|
justify-content: center
|
|||
|
}
|
|||
|
|
|||
|
.container .content {
|
|||
|
width: calc(100% - 40px);
|
|||
|
padding: 20px;
|
|||
|
overflow-y: scroll;
|
|||
|
flex: 1
|
|||
|
}
|
|||
|
|
|||
|
.container .content:hover::-webkit-scrollbar-thumb {
|
|||
|
background: rgba(0, 0, 0, .1)
|
|||
|
}
|
|||
|
|
|||
|
.container .content:hover::-webkit-scrollbar-thumb:hover {
|
|||
|
background: rgba(0, 0, 0, .3)
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width:768px) {
|
|||
|
.container .content {
|
|||
|
width: calc(100% - 40px);
|
|||
|
padding: 10px;
|
|||
|
overflow-y: scroll;
|
|||
|
flex: 1
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.bubble,
|
|||
|
.chat-refer {
|
|||
|
max-width: 400px;
|
|||
|
position: relative;
|
|||
|
word-wrap: break-word;
|
|||
|
word-break: normal
|
|||
|
}
|
|||
|
|
|||
|
.bubble {
|
|||
|
white-space: pre-wrap;
|
|||
|
padding: 10px 11px;
|
|||
|
border-radius: 5px;
|
|||
|
color: #1f1f1f;
|
|||
|
font-size: 14px
|
|||
|
}
|
|||
|
|
|||
|
.chat-refer {
|
|||
|
margin-top: 5px;
|
|||
|
padding: 8px 10px;
|
|||
|
border-radius: 3px;
|
|||
|
color: #797979;
|
|||
|
font-size: 12px;
|
|||
|
background-color: #e8e8e8;
|
|||
|
display: -webkit-box;
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
-webkit-line-clamp: 2; /* 这里添加 */
|
|||
|
line-clamp: 2; /* 这里添加 */
|
|||
|
white-space: normal; /* 这里添加 */
|
|||
|
}
|
|||
|
|
|||
|
.chat-refer-right {
|
|||
|
margin-right: 15px
|
|||
|
}
|
|||
|
|
|||
|
.chat-refer-left {
|
|||
|
margin-left: 15px
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble:before,
|
|||
|
.item-right .bubble:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble:before {
|
|||
|
left: -18px;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #9eea6a
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble:before {
|
|||
|
border-left: 10px solid #9eea6a;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
right: -18px
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width: 768px) {
|
|||
|
.bubble {
|
|||
|
max-width: 280px;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble {
|
|||
|
margin-right: 8px;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble {
|
|||
|
margin-left: 8px;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 8px solid transparent;
|
|||
|
border-top: 8px solid transparent;
|
|||
|
border-right: 8px solid #fff;
|
|||
|
border-bottom: 8px solid transparent;
|
|||
|
left: -13px;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 8px solid #9eea6a;
|
|||
|
border-top: 8px solid transparent;
|
|||
|
border-right: 8px solid transparent;
|
|||
|
border-bottom: 8px solid transparent;
|
|||
|
right: -13px;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.item {
|
|||
|
margin-top: 15px;
|
|||
|
display: flex;
|
|||
|
width: 100%;
|
|||
|
}
|
|||
|
|
|||
|
.item-refer {
|
|||
|
margin-top: 4px;
|
|||
|
}
|
|||
|
|
|||
|
.item.item-right {
|
|||
|
justify-content: flex-end;
|
|||
|
}
|
|||
|
|
|||
|
.item.item-center {
|
|||
|
justify-content: center;
|
|||
|
}
|
|||
|
|
|||
|
.item.item-center span {
|
|||
|
font-size: 12px;
|
|||
|
padding: 2px 4px;
|
|||
|
color: #fff;
|
|||
|
background-color: #dadada;
|
|||
|
border-radius: 3px;
|
|||
|
-moz-user-select: none;
|
|||
|
/*火狐*/
|
|||
|
-webkit-user-select: none;
|
|||
|
/*webkit浏览器*/
|
|||
|
-ms-user-select: none;
|
|||
|
/*IE10*/
|
|||
|
-khtml-user-select: none;
|
|||
|
/*早期浏览器*/
|
|||
|
user-select: none;
|
|||
|
}
|
|||
|
|
|||
|
.content-wrapper {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
max-width: 50%;
|
|||
|
}
|
|||
|
|
|||
|
.content-wrapper-left {
|
|||
|
align-items: baseline;
|
|||
|
}
|
|||
|
|
|||
|
.content-wrapper-right {
|
|||
|
align-items: flex-end;
|
|||
|
}
|
|||
|
|
|||
|
.displayname {
|
|||
|
margin-left: 13px;
|
|||
|
margin-left: 13px;
|
|||
|
font-size: 13px;
|
|||
|
margin-bottom: 5px;
|
|||
|
color: darkgray;
|
|||
|
}
|
|||
|
.avatar img {
|
|||
|
width: 42px;
|
|||
|
height: 42px;
|
|||
|
border-radius: 3px;
|
|||
|
user-select: none;
|
|||
|
}
|
|||
|
|
|||
|
.chat-video video {
|
|||
|
margin-right: 18px;
|
|||
|
margin-left: 18px;
|
|||
|
max-width: 350px;
|
|||
|
}
|
|||
|
|
|||
|
.chat-audio {
|
|||
|
max-width: 400px;
|
|||
|
}
|
|||
|
|
|||
|
audio {
|
|||
|
margin-left: 9px;
|
|||
|
margin-right: 9px;
|
|||
|
}
|
|||
|
.chat-image img,
|
|||
|
.chat-file img {
|
|||
|
margin-right: 18px;
|
|||
|
margin-left: 18px;
|
|||
|
max-width: 250px;
|
|||
|
max-height: 250px;
|
|||
|
}
|
|||
|
.emoji-image img {
|
|||
|
margin-right: 18px;
|
|||
|
margin-left: 18px;
|
|||
|
max-width: 150px;
|
|||
|
max-height: 150px;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width: 768px) {
|
|||
|
|
|||
|
.chat-image img,
|
|||
|
.chat-file img {
|
|||
|
margin-right: 8px;
|
|||
|
margin-left: 8px;
|
|||
|
max-width: 250px;
|
|||
|
/*max-height: auto;*/
|
|||
|
}
|
|||
|
.displayname {
|
|||
|
margin-left: 13px;
|
|||
|
margin-left: 13px;
|
|||
|
font-size: 10px;
|
|||
|
margin-bottom: 5px;
|
|||
|
color: darkgray;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.chat-file {
|
|||
|
max-width: 80%;
|
|||
|
width: 300px;
|
|||
|
margin-right: 20px;
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
padding: 10px;
|
|||
|
background-color: #fff;
|
|||
|
border-radius: 4px;
|
|||
|
cursor: pointer;
|
|||
|
/* height: 100px; */
|
|||
|
margin-left: 10px;
|
|||
|
}
|
|||
|
|
|||
|
.chat-file img {
|
|||
|
width: 50px;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width: 768px) {
|
|||
|
.chat-file {
|
|||
|
margin-left: 8px;
|
|||
|
margin-right: 8px;
|
|||
|
}
|
|||
|
.chat-file img {
|
|||
|
width: 40px;
|
|||
|
}
|
|||
|
.chat-image img,
|
|||
|
.chat-file img {
|
|||
|
margin-right: 8px;
|
|||
|
margin-left: 8px;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio {
|
|||
|
margin: 0 10px;
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .player-box,
|
|||
|
.chat-file .file-box {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
cursor: pointer;
|
|||
|
/* height: 80px; */
|
|||
|
}
|
|||
|
|
|||
|
.player-box {
|
|||
|
background-color: #939AA1;
|
|||
|
border-radius: 5px;
|
|||
|
width: 300px;
|
|||
|
}
|
|||
|
|
|||
|
.player-box .cover-image {
|
|||
|
width: 80px;
|
|||
|
height: 80px;
|
|||
|
border-radius: 5px 0 0 5px;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.player-box .player-info {
|
|||
|
width: 160px;
|
|||
|
margin: 0 14px;
|
|||
|
overflow: hidden;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.player-box .player-info .title {
|
|||
|
font-size: 16px;
|
|||
|
color: #fff;
|
|||
|
margin-bottom: 5px;
|
|||
|
}
|
|||
|
|
|||
|
.player-box .player-info .artist {
|
|||
|
font-size: 14px;
|
|||
|
color: #cecece;
|
|||
|
}
|
|||
|
|
|||
|
.player-box .player-button {
|
|||
|
width: 16px;
|
|||
|
height: 16px;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.player-original {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
height: 20px;
|
|||
|
}
|
|||
|
|
|||
|
.player-original p {
|
|||
|
color: #b6b6b6;
|
|||
|
font-size: 12px;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.player-original-img {
|
|||
|
width: 12px;
|
|||
|
height: 12px;
|
|||
|
margin: 0 5px;
|
|||
|
}
|
|||
|
|
|||
|
.chat-file .app-info {
|
|||
|
border-top: 1px solid #ede3e3;
|
|||
|
}
|
|||
|
|
|||
|
.chat-file .app-info p {
|
|||
|
margin-top: 3px;
|
|||
|
color: #888;
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .player-controls,
|
|||
|
.chat-file .file-img {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
}
|
|||
|
|
|||
|
.file-title{
|
|||
|
font-size: 14px;
|
|||
|
display: -webkit-box;
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
}
|
|||
|
|
|||
|
.description>p {
|
|||
|
font-size: 12px;
|
|||
|
color: #BDBDBD;
|
|||
|
display: -webkit-box;
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
}
|
|||
|
|
|||
|
.card-title{
|
|||
|
font-size: 14px;
|
|||
|
}
|
|||
|
|
|||
|
.file-title,
|
|||
|
.card-content>h2 {
|
|||
|
-webkit-line-clamp: 2;
|
|||
|
font: 14px sans-serif;
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width: 768px) {
|
|||
|
.file-title {
|
|||
|
font-size: 13px;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.description>p {
|
|||
|
-webkit-line-clamp: 3;
|
|||
|
margin-top: 2px;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
.chat-music-audio .flex1,
|
|||
|
.chat-file .flex1 {
|
|||
|
flex: 1;
|
|||
|
justify-content: start;
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .flex2,
|
|||
|
.chat-file .flex2 {
|
|||
|
flex: 2;
|
|||
|
justify-content: end;
|
|||
|
}
|
|||
|
|
|||
|
.chat-file .file-info {
|
|||
|
width: 200px;
|
|||
|
/* height: 80px; */
|
|||
|
margin-left: 4px;
|
|||
|
/* margin-top: 15px; */
|
|||
|
white-space: normal;
|
|||
|
flex-basis: 200px;
|
|||
|
word-break: break-word;
|
|||
|
}
|
|||
|
|
|||
|
.chat-file .file-name,
|
|||
|
.chat-music-audio .song-title {
|
|||
|
font-weight: 700;
|
|||
|
overflow-wrap: break-word
|
|||
|
}
|
|||
|
|
|||
|
.chat-file .file-size {
|
|||
|
margin-top: 5px;
|
|||
|
color: #888
|
|||
|
}
|
|||
|
|
|||
|
.app-info {
|
|||
|
font-size: 13px;
|
|||
|
margin-left: 3px;
|
|||
|
margin-right: 3px
|
|||
|
}
|
|||
|
|
|||
|
.file-size,
|
|||
|
textarea {
|
|||
|
font-size: 12px
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .play-button {
|
|||
|
width: 50px;
|
|||
|
height: 50px;
|
|||
|
background-color: transparent;
|
|||
|
border-radius: 50%;
|
|||
|
border: 0;
|
|||
|
outline: 0;
|
|||
|
cursor: pointer
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .play-button.playing {
|
|||
|
background: url(data:image/png;base64,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) no-repeat center;
|
|||
|
background-size: 18px 18px;
|
|||
|
}
|
|||
|
|
|||
|
.chat-music-audio .play-button.paused {
|
|||
|
background: url(data:image/png;base64,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) no-repeat center;
|
|||
|
background-size: 18px 18px;
|
|||
|
}
|
|||
|
|
|||
|
.input-area {
|
|||
|
border-top: .5px solid #e0e0e0;
|
|||
|
height: 150px;
|
|||
|
display: flex;
|
|||
|
flex-flow: column;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
textarea {
|
|||
|
flex: 1;
|
|||
|
padding: 5px;
|
|||
|
border: 0;
|
|||
|
cursor: pointer;
|
|||
|
overflow-y: auto;
|
|||
|
overflow-x: hidden;
|
|||
|
outline: 0;
|
|||
|
resize: none
|
|||
|
}
|
|||
|
|
|||
|
.button-area {
|
|||
|
display: flex;
|
|||
|
height: 40px;
|
|||
|
margin-right: 10px;
|
|||
|
line-height: 40px;
|
|||
|
padding: 5px;
|
|||
|
justify-content: flex-end
|
|||
|
}
|
|||
|
|
|||
|
.button-area button,
|
|||
|
button {
|
|||
|
border: 0;
|
|||
|
border-radius: 4px;
|
|||
|
cursor: pointer
|
|||
|
}
|
|||
|
|
|||
|
.button-area button {
|
|||
|
width: 80px;
|
|||
|
outline: 0;
|
|||
|
float: right
|
|||
|
}
|
|||
|
|
|||
|
#paginationInfo,
|
|||
|
.button-row,
|
|||
|
.jump-row {
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
margin-bottom: 10px
|
|||
|
}
|
|||
|
|
|||
|
button,
|
|||
|
input {
|
|||
|
font-size: 14px
|
|||
|
}
|
|||
|
|
|||
|
button {
|
|||
|
background-color: #3498db;
|
|||
|
color: #fff;
|
|||
|
margin: 0 14px;
|
|||
|
transition: background-color .3s;
|
|||
|
padding: 10px 25px
|
|||
|
}
|
|||
|
|
|||
|
button:hover {
|
|||
|
background-color: #2980b9
|
|||
|
}
|
|||
|
|
|||
|
input {
|
|||
|
padding: 8px;
|
|||
|
width: 120px;
|
|||
|
box-sizing: border-box;
|
|||
|
margin-right: 0;
|
|||
|
margin-left: 15px
|
|||
|
}
|
|||
|
|
|||
|
#paginationInfo {
|
|||
|
color: #555;
|
|||
|
font-size: 14px
|
|||
|
}
|
|||
|
|
|||
|
.card {
|
|||
|
background-color: #fff;
|
|||
|
border-radius: 10px;
|
|||
|
overflow: hidden;
|
|||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, .1);
|
|||
|
max-width: 80%;
|
|||
|
width: 280px;
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
text-align: left;
|
|||
|
margin: 0 15px 10px 20px
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width:768px) {
|
|||
|
.card {
|
|||
|
margin: 0 8px
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.card a {
|
|||
|
text-decoration: none;
|
|||
|
color: inherit
|
|||
|
}
|
|||
|
|
|||
|
.card-content {
|
|||
|
padding: 10px;
|
|||
|
flex: 1
|
|||
|
}
|
|||
|
|
|||
|
.thumbnail {
|
|||
|
width: 50px;
|
|||
|
height: 50px;
|
|||
|
object-fit: cover
|
|||
|
}
|
|||
|
|
|||
|
.description,
|
|||
|
.link-info {
|
|||
|
display: flex;
|
|||
|
justify-content: space-between
|
|||
|
}
|
|||
|
|
|||
|
.link-info {
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
padding: 2px;
|
|||
|
background-color: #f0f0f0
|
|||
|
}
|
|||
|
|
|||
|
.app-logo {
|
|||
|
width: 20px;
|
|||
|
height: 20px;
|
|||
|
margin-right: 10px;
|
|||
|
border-radius: 50%
|
|||
|
}
|
|||
|
|
|||
|
.app-name {
|
|||
|
font-size: 12px;
|
|||
|
font-weight: bold;
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box {
|
|||
|
width: 200px;
|
|||
|
height: 80px;
|
|||
|
margin-left: 18px;
|
|||
|
margin-right: 18px;
|
|||
|
border-radius: 3px;
|
|||
|
padding-left: 11px;
|
|||
|
padding-right: 11px;
|
|||
|
position: relative
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[paysubtype="1"],
|
|||
|
.transfer-box[paysubtype="1"]::before {
|
|||
|
background: #f79c46
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[paysubtype="1"] i {
|
|||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAIAAAC2BqGFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU0QUVDQ0YxRUZGRTExRUFCNjUwQTEzMEE4ODE1MDNGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU0QUVDQ0YyRUZGRTExRUFCNjUwQTEzMEE4ODE1MDNGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTRBRUNDRUZFRkZFMTFFQUI2NTBBMTMwQTg4MTUwM0YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTRBRUNDRjBFRkZFMTFFQUI2NTBBMTMwQTg4MTUwM0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz56YfhrAAAaqUlEQVR42uxdWXNc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
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box:not([paysubtype="1"]),
|
|||
|
.transfer-box:not([paysubtype="1"])::before {
|
|||
|
background: #f8e2c6
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[paysubtype="3"] i {
|
|||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAIAAAC2BqGFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQwIDc5LjE2MDQ1MSwgMjAxNy8wNS8wNi0wMTowODoyMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU0QUVDQ0Y1RUZGRTExRUFCNjUwQTEzMEE4ODE1MDNGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU0QUVDQ0Y2RUZGRTExRUFCNjUwQTEzMEE4ODE1MDNGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTRBRUNDRjNFRkZFMTFFQUI2NTBBMTMwQTg4MTUwM0YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTRBRUNDRjRFRkZFMTFFQUI2NTBBMTMwQTg4MTUwM0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6wJRTaAAAWHUlEQVR42uxdiXbi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
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[paysubtype="4"] i {
|
|||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA4CAYAAABHRFAgAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAULSURBVGhD3ZvZUxtHEId7FnZXHAapApg4wQG/5K6kkqqk8pBUkv88KVdu5/CDyzmqArZsY0MAIyO0K6RJd09L1sne2l2+KkA7oKV/TO9MH4NqPfhOQ4o4ag5UbQdg8RUAZcloCHQX4PwI9PG/4HcvZDAdUhHpuCugrr0KUFnFO87hCN7SOwV9+Fdog92Nd/DTCr5S+PaOeX/jKfitY/MDCUgkksVtvIuv8BYXLZyJE/BOds03E+BWt/EPVgWwK3ilQB/cTyQ2tkh380NjxPkxeId/ymj6uGtvAizUADo+eI9/ldFoRBbp1m4BLK3hO+dA138AX8d2hNA46PLqjc+NGzePwDv6R74Tjkgi3RsfAVg2wIunqbhlVNiNl6+zWO/RLzIaTOjlz73xMf70PHR3v8lFIEG/16v/iFNjGXtCEijSwQ/39U/4tVf/CdrztBjkC9lBkF1OCHsCRSoSiM+E9/iOjBQDtufCB7X5gYxM51KR7BJd9P+Yq1rWePu/8wQEue5UkWaRmSvcDI7C9qGdlwmdKJK3CVxFu7vfykixYTtxUXTXMWqawJhIu3Vq9kHcJoqwyISB7NTPH+DsXJORYcZEWttf8Eaf1zYRF7/xxGwtFImNMCSSYlEK1SiSKSN67zbb71QwDBxgSCQH2xiLziJUywIfFyCyX62/JSOGvkieRcwmuvWfzUBJMcmCBofCP6EvkvNBTJfaFRJbcvwzUEsbcjHorpTwYj54FdC4M4C9IFcikkoWZVxRp+GfPWM9rAthkVyToew+A+z2ubyaNVp09dyVik4eBgEp465ugXXra7maMRTUkC7EiMRNlIpOaeFceLgpY3aw8pqMzB59cI91EeYzklYZ0K1tg9r5Ev10Ea+UGcwBX77a7SZYo9FBElwKJpZxKyoQavUmWGqhKpfxcRbXTPWAA4pioSpVUNprUHgA3sPvZTgapjT5ck/KFHQ9b/8PuQjG3foM/fYFPpPzrgxFh28yK4EEP+cRwTTMAlwJS0OcPbfjobs29jXVMuO6q4MxoqrexHXalpFx4t47KexpZwdgaUxNkkAhFBV6NVe1i5ei6dYJiny+J5fJ8PEv5j3EZJsaPwXCbx6C1ZZl31HpbNzek9+4C0XPQp4z61C/UzARDw6o9bf5ZRpQm41qtTyzOaE23mNdhBF5fpTZRp7XogOU/JMuhEVSCzvPODMblOgSkRyc645pjV0BaFsjPb2ko5+FcD5JLewrgFpaHwoc+iJNXaQcFfNAqJIuzyPRF+lzUKBMj77EGPsVOuYjM4C8dFeEV8KFGvfoSwvaP7qiD4lkOr45hFBCOFZF+0cZE8kN1xKutA4Vx3Hzn9QwHp9JookP7UCZvQyo1S1cWBpyNcxEkXxOhmZTDkQUHbaTZvHZPRkZJvAcD7Wpi9xS77XRL7NxsrsOQv34CY3NIuBefx/tmw+chECRev8uUB0o6ITFrGF77EVzeCmAQJE+JsG9GxXlGe3ZEUYgEeyuArtElxajT81ynQP0e/uLTIR1IvopSTpGQrEh9U/2bpsWdsbY6E3WzlcsjraJaavoNGKdd6VjMHxKRM67Ugs+qw51LuddB6E+ijmEgLfwzziT4QZoQrjMSekSn8vB5Pe/v7kgFZdEIns4y5vGKKqmc3dXR67v8GPA3iBn0CkfxHRpMJuISyoiB7my/01wGdQfpPYZdZd4pukoG5Ur/SYXfvVpPePjbQD/A1/vC7XhnXAdAAAAAElFTkSuQmCC)
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box::before {
|
|||
|
content: "";
|
|||
|
width: 8px;
|
|||
|
height: 8px;
|
|||
|
position: absolute;
|
|||
|
transform: rotate(45deg);
|
|||
|
top: 18px
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[issend="0"]::before {
|
|||
|
left: -3px
|
|||
|
}
|
|||
|
|
|||
|
.transfer-box[issend="1"]::before {
|
|||
|
left: 218px
|
|||
|
}
|
|||
|
|
|||
|
.trans-content {
|
|||
|
display: flex;
|
|||
|
height: 60px;
|
|||
|
align-items: center;
|
|||
|
position: relative
|
|||
|
}
|
|||
|
|
|||
|
.trans-content>i {
|
|||
|
display: block;
|
|||
|
width: 36px;
|
|||
|
height: 36px;
|
|||
|
background-repeat: no-repeat;
|
|||
|
background-size: cover
|
|||
|
}
|
|||
|
|
|||
|
.transfer-texts {
|
|||
|
margin-left: 7px;
|
|||
|
display: flex;
|
|||
|
align-items: flex-start;
|
|||
|
flex-direction: column
|
|||
|
}
|
|||
|
|
|||
|
.trans-bottom>span,
|
|||
|
.transfer-texts>font,
|
|||
|
.transfer-texts>span {
|
|||
|
color: #fff;
|
|||
|
font-weight: 500
|
|||
|
}
|
|||
|
|
|||
|
.transfer-texts>span {
|
|||
|
font-size: 15px
|
|||
|
}
|
|||
|
|
|||
|
.transfer-texts>font {
|
|||
|
font-size: 12px;
|
|||
|
padding-left: 2px
|
|||
|
}
|
|||
|
|
|||
|
.transfer {
|
|||
|
height: 60px
|
|||
|
}
|
|||
|
|
|||
|
.trans-bottom {
|
|||
|
height: 16px;
|
|||
|
margin-top: 1px;
|
|||
|
display: flex;
|
|||
|
align-items: center
|
|||
|
}
|
|||
|
|
|||
|
.trans-bottom>span {
|
|||
|
font-size: 10px
|
|||
|
}
|
|||
|
|
|||
|
.call i {
|
|||
|
display: inline-block;
|
|||
|
background-repeat: no-repeat;
|
|||
|
background-size: cover;
|
|||
|
vertical-align: middle;
|
|||
|
margin-right: 4px;
|
|||
|
margin-top: -2px
|
|||
|
}
|
|||
|
|
|||
|
.call[calltype='1'] i {
|
|||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAQAAABecRxxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAE7mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZjM1NGVmYywgMjAyMy8xMS8wOS0xMjo0MDoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjQgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNC0wMi0wM1QwMDozNTo1MCswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQtMDItMDNUMDA6NDA6NDgrMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMDItMDNUMDA6NDA6NDgrMDg6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmU4MmI2NjdiLTViYjgtMWI0Mi1hZjE1LWYwN2I2MDZmYzc1YyIgeG1wTU06RG9jdW1lbnRJRD0i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
|
|||
|
}
|
|||
|
|
|||
|
.call[calltype='0'] i {
|
|||
|
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAE7mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDIgNzkuZjM1NGVmYywgMjAyMy8xMS8wOS0xMjo0MDoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjQgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNC0wMi0wM1QwMDo1OTo0OCswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjQtMDItMDNUMDE6MDE6MDErMDg6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMDItMDNUMDE6MDE6MDErMDg6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmViMGNiNGVkLTQ0ZGMtOTQ0OC1iZDdkLTUxNzJmMTQzOTc5ZSIgeG1wTU06RG9jdW1lbnRJRD0i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
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width:768px) {
|
|||
|
|
|||
|
#paginationInfo,
|
|||
|
.button-row,
|
|||
|
.jump-row {
|
|||
|
display: flex;
|
|||
|
justify-content: center;
|
|||
|
align-items: center;
|
|||
|
margin-bottom: 0
|
|||
|
}
|
|||
|
|
|||
|
.chat-video video {
|
|||
|
margin-right: 8px;
|
|||
|
margin-left: 8px;
|
|||
|
max-width: 280px
|
|||
|
}
|
|||
|
|
|||
|
button {
|
|||
|
padding: 5px 10px;
|
|||
|
background-color: #3498db;
|
|||
|
color: #fff;
|
|||
|
border: 0;
|
|||
|
border-radius: 4px;
|
|||
|
cursor: pointer;
|
|||
|
margin: 0 5px;
|
|||
|
transition: background-color .3s
|
|||
|
}
|
|||
|
|
|||
|
button:hover {
|
|||
|
background-color: #2980b9
|
|||
|
}
|
|||
|
|
|||
|
input {
|
|||
|
padding: 8px;
|
|||
|
width: 120px;
|
|||
|
box-sizing: border-box;
|
|||
|
margin-right: 0;
|
|||
|
margin-left: 5px
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.call i,
|
|||
|
.system-msg>.emoji_img {
|
|||
|
width: 18px;
|
|||
|
height: 18px
|
|||
|
}
|
|||
|
|
|||
|
.emoji_img {
|
|||
|
width: 22px;
|
|||
|
height: 22px;
|
|||
|
vertical-align: middle;
|
|||
|
margin-top: -4.4px
|
|||
|
}
|
|||
|
|
|||
|
.modal {
|
|||
|
display: none;
|
|||
|
position: fixed;
|
|||
|
z-index: 9999;
|
|||
|
top: 0;
|
|||
|
left: 0;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
background-color: rgba(0, 0, 0, .8)
|
|||
|
}
|
|||
|
|
|||
|
.modal-image {
|
|||
|
display: block;
|
|||
|
max-width: 90%;
|
|||
|
max-height: 90%;
|
|||
|
position: absolute;
|
|||
|
top: 50%;
|
|||
|
left: 50%;
|
|||
|
transform: translate(-50%, -50%)
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width:768px) {
|
|||
|
body {
|
|||
|
display: flex;
|
|||
|
flex-direction: column;
|
|||
|
align-items: center;
|
|||
|
justify-content: center
|
|||
|
}
|
|||
|
|
|||
|
::-webkit-scrollbar {
|
|||
|
display: none
|
|||
|
}
|
|||
|
|
|||
|
.page {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
box-shadow: none
|
|||
|
}
|
|||
|
|
|||
|
.page .mid-bar,
|
|||
|
.page .side-bar {
|
|||
|
display: none
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body {
|
|||
|
height: 95%
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar {
|
|||
|
transform: none;
|
|||
|
font-size: 12px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar .button {
|
|||
|
margin: 10px 5px
|
|||
|
}
|
|||
|
|
|||
|
.page .main-body .nav-bar .turner-bar input {
|
|||
|
font-size: 14px
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card,
|
|||
|
.personal-card {
|
|||
|
position: relative;
|
|||
|
width: 220px;
|
|||
|
height: 115px;
|
|||
|
border-radius: 5px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .contner {
|
|||
|
display: flex;
|
|||
|
margin: 12px 16px 5px;
|
|||
|
width: 100%;
|
|||
|
height: 68px
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner img,
|
|||
|
.personal-card .contner img {
|
|||
|
line-height: 100px;
|
|||
|
width: 50px;
|
|||
|
height: 50px;
|
|||
|
margin: 2px 0 0;
|
|||
|
border-radius: 5%;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .contner .text {
|
|||
|
width: 60%;
|
|||
|
margin-left: 10px;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .contner .text .nickname {
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #000
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .contner .text .nickname img {
|
|||
|
width: 14px;
|
|||
|
height: 14px;
|
|||
|
margin: 0
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .contner .text .other {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 16px;
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .bottom {
|
|||
|
width: 100%;
|
|||
|
height: 30px;
|
|||
|
font-size: 12px;
|
|||
|
color: #9e9898;
|
|||
|
background-color: #fafafa;
|
|||
|
border-top: #eee 1px solid
|
|||
|
}
|
|||
|
|
|||
|
.personal-card .bottom .text {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 28px;
|
|||
|
margin-left: 16px
|
|||
|
}
|
|||
|
|
|||
|
.personal-card:hover {
|
|||
|
background-color: #333
|
|||
|
}
|
|||
|
|
|||
|
.item-left .personal-card {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-left .personal-card:before,
|
|||
|
.item-right .personal-card:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent
|
|||
|
}
|
|||
|
|
|||
|
.item-left .personal-card:before {
|
|||
|
left: -18px;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .personal-card {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .personal-card:before {
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner {
|
|||
|
display: flex;
|
|||
|
margin: 12px 16px 5px;
|
|||
|
width: 100%;
|
|||
|
height: 68px
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text {
|
|||
|
width: 60%;
|
|||
|
margin-left: 10px;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text .nickname {
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #000
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text .desc {
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text .desc img {
|
|||
|
width: 14px;
|
|||
|
height: 14px;
|
|||
|
margin: 0px 0px 0px 0px;
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text .nickname img {
|
|||
|
width: 14px;
|
|||
|
height: 14px;
|
|||
|
margin: 0px 0px 0px 0px;
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .contner .text .other {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 16px;
|
|||
|
color: #9e9898;
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .bottom {
|
|||
|
width: 100%;
|
|||
|
height: 30px;
|
|||
|
/* margin-top: 6px; */
|
|||
|
font-size: 12px;
|
|||
|
color: #9e9898;
|
|||
|
background-color: #fafafa;
|
|||
|
border-top: #eeeeee 1px solid;
|
|||
|
border-radius: 0 0 5px 5px;
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card .bottom .text {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 28px;
|
|||
|
margin-left: 16px;
|
|||
|
}
|
|||
|
|
|||
|
.OpenIM-card:hover {
|
|||
|
background-color: #333;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .OpenIM-card {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .OpenIM-card {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .OpenIM-card:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
left: -18px;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .OpenIM-card {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .OpenIM-card:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px;
|
|||
|
}
|
|||
|
|
|||
|
/* 位置 */
|
|||
|
.location {
|
|||
|
position: relative;
|
|||
|
width: 220px;
|
|||
|
height: 180px;
|
|||
|
border-radius: 5px;
|
|||
|
background-color: #fff;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
.location .poiname {
|
|||
|
width: 90%;
|
|||
|
padding: 0 16px 0 10px;
|
|||
|
margin: 5px 0 5px 0;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
}
|
|||
|
|
|||
|
.location .label {
|
|||
|
width: 100%;
|
|||
|
padding: 0 16px 0 10px;
|
|||
|
font-size: 12px;
|
|||
|
color: #9e9898;
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
.location .map {
|
|||
|
width: 100%;
|
|||
|
height: 120px;
|
|||
|
overflow: hidden;
|
|||
|
}
|
|||
|
|
|||
|
.custom-content-marker {
|
|||
|
position: relative;
|
|||
|
width: 25px;
|
|||
|
height: 34px;
|
|||
|
}
|
|||
|
|
|||
|
.custom-content-marker img {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .location {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .location:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
left: -18px;
|
|||
|
top: 11px;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .location {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .location:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px;
|
|||
|
}
|
|||
|
|
|||
|
/* 合并消息 */
|
|||
|
.merge-message {
|
|||
|
position: relative;
|
|||
|
width: 220px;
|
|||
|
height: 110px;
|
|||
|
border-radius: 5px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.merge-message .title {
|
|||
|
width: 100%;
|
|||
|
margin: 10px 16px;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #000;
|
|||
|
}
|
|||
|
|
|||
|
.merge-message .msg {
|
|||
|
height: 16px;
|
|||
|
margin: 4px 16px;
|
|||
|
font-size: 12px;
|
|||
|
line-height: 16px;
|
|||
|
color: #9e9898;
|
|||
|
overflow: hidden;
|
|||
|
}
|
|||
|
|
|||
|
.merge-message .bottom {
|
|||
|
width: 100%;
|
|||
|
height: 28px;
|
|||
|
margin-top: 6px;
|
|||
|
font-size: 12px;
|
|||
|
color: #9e9898;
|
|||
|
background-color: #fafafa;
|
|||
|
border-top: #eeeeee 1px solid;
|
|||
|
}
|
|||
|
|
|||
|
.merge-message .bottom .text {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 28px;
|
|||
|
margin-left: 16px;
|
|||
|
}
|
|||
|
|
|||
|
.merge-message:hover {
|
|||
|
background-color: #333;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .merge-message {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-left .merge-message:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
left: -18px;
|
|||
|
top: 11px;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .merge-message {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.item-right .merge-message:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px;
|
|||
|
}
|
|||
|
|
|||
|
.search-modal,
|
|||
|
.merge-msg-modal {
|
|||
|
display: none;
|
|||
|
position: fixed;
|
|||
|
z-index: 1;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
background-color: rgb(0, 0, 0);
|
|||
|
background-color: rgba(0, 0, 0, 0.4);
|
|||
|
}
|
|||
|
|
|||
|
.search-modal-content,
|
|||
|
.merge-msg-modal-content {
|
|||
|
background-color: #fefefe;
|
|||
|
margin: 5% auto;
|
|||
|
/* 15% 从顶部和居中 */
|
|||
|
padding: 20px;
|
|||
|
border: 1px solid #888;
|
|||
|
width: 60%;
|
|||
|
height: 80%;
|
|||
|
}
|
|||
|
|
|||
|
/* 关闭按钮 */
|
|||
|
.merge-msg-modal-content .title .close {
|
|||
|
color: #aaa;
|
|||
|
float: right;
|
|||
|
font-size: 28px;
|
|||
|
font-weight: bold;
|
|||
|
margin-top: -20px;
|
|||
|
margin-right: -10px;
|
|||
|
}
|
|||
|
|
|||
|
.merge-msg-modal-content .title .close:hover,
|
|||
|
.merge-msg-modal-content .title .close:focus {
|
|||
|
color: black;
|
|||
|
text-decoration: none;
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
.merge-msg-modal-content .title {
|
|||
|
height: 40px;
|
|||
|
font-size: 14px;
|
|||
|
color: #9e9898;
|
|||
|
border-bottom: #eeeeee 1px solid;
|
|||
|
}
|
|||
|
|
|||
|
.modal-container {
|
|||
|
/* display: flex; */
|
|||
|
/* position: fixed; */
|
|||
|
height: 90%;
|
|||
|
overflow: hidden;
|
|||
|
overflow-y: auto;
|
|||
|
}
|
|||
|
|
|||
|
.modal-container .OnePersonmsg {
|
|||
|
display: flex;
|
|||
|
overflow: hidden;
|
|||
|
overflow-y: auto
|
|||
|
}
|
|||
|
|
|||
|
.search-modal-content .modal-container .OnePersonmsg:hover {
|
|||
|
background-color: #f0f0f0;
|
|||
|
}
|
|||
|
|
|||
|
.search-modal-content .modal-container .OnePersonmsg {
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
.tooltip {
|
|||
|
position: absolute;
|
|||
|
background-color: black;
|
|||
|
color: white;
|
|||
|
padding: 5px;
|
|||
|
border-radius: 3px;
|
|||
|
font-size: 12px;
|
|||
|
white-space: nowrap;
|
|||
|
/* 防止提示文本换行 */
|
|||
|
display: none;
|
|||
|
/* 默认隐藏 */
|
|||
|
z-index: 2;
|
|||
|
}
|
|||
|
|
|||
|
.search-modal-content .modal-container .OnePersonmsg:hover .tooltip {
|
|||
|
visibility: visible;
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .left {
|
|||
|
width: 12%;
|
|||
|
text-align: right
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .right {
|
|||
|
width: 88%
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .left .avatar {
|
|||
|
margin-left: 30px;
|
|||
|
margin-top: 10px
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .left .avatar img {
|
|||
|
width: 36px;
|
|||
|
height: 36px;
|
|||
|
user-select: none
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .right .msg-block {
|
|||
|
width: 80%;
|
|||
|
margin-left: 10px;
|
|||
|
margin-top: 10px;
|
|||
|
padding-bottom: 20px;
|
|||
|
border-bottom: #eee 1px solid
|
|||
|
}
|
|||
|
|
|||
|
.msg-block .msg-container-top {
|
|||
|
font-size: 14px;
|
|||
|
color: #9e9898;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
align-items: center
|
|||
|
}
|
|||
|
|
|||
|
.msg-block .msg-container {
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #000
|
|||
|
}
|
|||
|
|
|||
|
.msg-block .msg-container img,
|
|||
|
.msg-block .msg-container video {
|
|||
|
max-width: 280px
|
|||
|
}
|
|||
|
|
|||
|
.msg-block .inner-msgMerge-card {
|
|||
|
background-color: #f4f4f4;
|
|||
|
padding-top: 10px;
|
|||
|
height: 60px
|
|||
|
}
|
|||
|
|
|||
|
.inner-msgMerge-card .desc,
|
|||
|
.inner-msgMerge-card .title {
|
|||
|
height: 20px;
|
|||
|
margin: 0 0 0 10px;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 18px;
|
|||
|
color: #000;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.inner-msgMerge-card .desc {
|
|||
|
height: 16px;
|
|||
|
font-size: 12px;
|
|||
|
line-height: 16px;
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.modal-search-box {
|
|||
|
width: 90%;
|
|||
|
padding: 10px;
|
|||
|
margin: 10px auto;
|
|||
|
font-size: 16px;
|
|||
|
border: 1px solid #ccc;
|
|||
|
border-radius: 4px;
|
|||
|
}
|
|||
|
|
|||
|
.close-btn {
|
|||
|
color: #aaa;
|
|||
|
float: right;
|
|||
|
font-size: 28px;
|
|||
|
font-weight: bold;
|
|||
|
cursor: pointer;
|
|||
|
}
|
|||
|
|
|||
|
.close-btn:hover,
|
|||
|
.close-btn:focus {
|
|||
|
color: black;
|
|||
|
text-decoration: none;
|
|||
|
}
|
|||
|
|
|||
|
.mini-program,
|
|||
|
.video-number {
|
|||
|
position: relative;
|
|||
|
width: 220px;
|
|||
|
border-radius: 5px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.mini-program a {
|
|||
|
text-decoration: none
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .top {
|
|||
|
display: flex;
|
|||
|
margin: 0;
|
|||
|
width: 100%;
|
|||
|
height: 40px
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .top img {
|
|||
|
margin: 15px 0 0 15px;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .top .text {
|
|||
|
width: 60%;
|
|||
|
margin: 15px 0 0 10px;
|
|||
|
font-size: 12px;
|
|||
|
line-height: 20px;
|
|||
|
overflow: hidden;
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .title {
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
color: #000;
|
|||
|
margin: 0 0 0 15px
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .cover,
|
|||
|
.mini-program img {
|
|||
|
width: 190px;
|
|||
|
height: 170px;
|
|||
|
margin: 10px auto;
|
|||
|
color: #9e9898
|
|||
|
}
|
|||
|
|
|||
|
.mini-program img {
|
|||
|
margin: 0 auto
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .bottom {
|
|||
|
width: 100%;
|
|||
|
height: 30px;
|
|||
|
font-size: 12px;
|
|||
|
color: #9e9898;
|
|||
|
background-color: #fafafa;
|
|||
|
border-top: #eee 1px solid;
|
|||
|
border-radius: 0 0 5px 5px
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .bottom .text {
|
|||
|
font-size: 12px;
|
|||
|
line-height: 28px;
|
|||
|
margin-left: 16px
|
|||
|
}
|
|||
|
|
|||
|
.mini-program:hover {
|
|||
|
background-color: #333
|
|||
|
}
|
|||
|
|
|||
|
.item-left .mini-program {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-left .mini-program:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
left: -18px
|
|||
|
}
|
|||
|
|
|||
|
.item-right .mini-program {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .mini-program:before {
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px
|
|||
|
}
|
|||
|
|
|||
|
.video-number {
|
|||
|
width: 210px;
|
|||
|
height: 340px;
|
|||
|
background-color: #a56819;
|
|||
|
display: flex;
|
|||
|
flex-direction: column
|
|||
|
}
|
|||
|
|
|||
|
.video-number .title {
|
|||
|
width: 90%;
|
|||
|
height: 60px;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 20px;
|
|||
|
overflow: hidden;
|
|||
|
color: #333;
|
|||
|
margin: 5px auto
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container {
|
|||
|
width: 210px;
|
|||
|
height: 280px;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container .bottom {
|
|||
|
position: absolute;
|
|||
|
top: 240px;
|
|||
|
width: 100%;
|
|||
|
height: 100px;
|
|||
|
font-size: 12px;
|
|||
|
line-height: 16px;
|
|||
|
margin: auto 0 -100px;
|
|||
|
background: linear-gradient(to bottom, transparent, #000);
|
|||
|
border-radius: 0 0 5px 5px
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container .bottom .author {
|
|||
|
position: absolute;
|
|||
|
width: 100%;
|
|||
|
height: 30px;
|
|||
|
margin: 0 0 0 15px;
|
|||
|
bottom: 10px;
|
|||
|
overflow: hidden
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container .bottom .author img {
|
|||
|
width: 20px;
|
|||
|
height: 20px;
|
|||
|
border-radius: 50%;
|
|||
|
display: inline-block
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container .bottom .author .authIcon,
|
|||
|
.video-number .container .bottom .author .logo {
|
|||
|
width: 20px;
|
|||
|
height: 20px;
|
|||
|
border-radius: 50%;
|
|||
|
display: inline-block;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.mini-program .top img,
|
|||
|
.video-number .container .bottom .author .authIcon img,
|
|||
|
.video-number .container .bottom .author .logo img {
|
|||
|
width: 20px;
|
|||
|
height: 20px;
|
|||
|
border-radius: 50%
|
|||
|
}
|
|||
|
|
|||
|
.video-number .container .bottom .author .name {
|
|||
|
height: 30px;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 30px;
|
|||
|
color: #fff;
|
|||
|
margin: 0 4px;
|
|||
|
display: inline-block;
|
|||
|
vertical-align: middle
|
|||
|
}
|
|||
|
|
|||
|
.item-left .video-number {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-left .video-number:before,
|
|||
|
.item-right .mini-program:before,
|
|||
|
.item-right .video-number:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent
|
|||
|
}
|
|||
|
|
|||
|
.item-left .video-number:before {
|
|||
|
left: -18px;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .video-number {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .video-number:before {
|
|||
|
border-left: 10px solid #fff;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
right: -18px;
|
|||
|
top: 11px
|
|||
|
}
|
|||
|
|
|||
|
.bubble-audio-left,
|
|||
|
.bubble-audio-right {
|
|||
|
position: relative;
|
|||
|
min-width: 40px;
|
|||
|
max-width: 250px;
|
|||
|
border-radius: 5px;
|
|||
|
line-height: 40px
|
|||
|
}
|
|||
|
|
|||
|
.bubble-audio-left {
|
|||
|
background: url(data:image/png;base64,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) no-repeat center left 10px;
|
|||
|
background-size: 20px;
|
|||
|
padding-left: 30px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.bubble-audio-right {
|
|||
|
background: url(data:image/png;base64,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) no-repeat center right 10px;
|
|||
|
background-color: #9eea6a;
|
|||
|
background-size: 20px;
|
|||
|
padding-right: 30px;
|
|||
|
direction: rtl
|
|||
|
}
|
|||
|
|
|||
|
@keyframes spin {
|
|||
|
0% {
|
|||
|
transform: rotate(0deg)
|
|||
|
}
|
|||
|
|
|||
|
to {
|
|||
|
transform: rotate(360deg)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble-audio-left {
|
|||
|
margin-left: 15px;
|
|||
|
background-color: #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble-audio-left:before,
|
|||
|
.item-right .bubble-audio-right:before {
|
|||
|
content: "";
|
|||
|
position: absolute;
|
|||
|
width: 0;
|
|||
|
height: 0;
|
|||
|
border-top: 10px solid transparent;
|
|||
|
border-bottom: 10px solid transparent;
|
|||
|
top: 11px
|
|||
|
}
|
|||
|
|
|||
|
.item-left .bubble-audio-left:before {
|
|||
|
left: -18px;
|
|||
|
border-left: 10px solid transparent;
|
|||
|
border-right: 10px solid #fff
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble-audio-right {
|
|||
|
margin-right: 15px;
|
|||
|
background-color: #9eea6a
|
|||
|
}
|
|||
|
|
|||
|
.item-right .bubble-audio-right:before {
|
|||
|
border-left: 10px solid #9eea6a;
|
|||
|
border-right: 10px solid transparent;
|
|||
|
right: -18px
|
|||
|
}
|
|||
|
|
|||
|
.custom-menu-item {
|
|||
|
background-color: #fff;
|
|||
|
padding: 8px 12px;
|
|||
|
cursor: pointer
|
|||
|
}
|
|||
|
|
|||
|
.custom-menu-item:hover {
|
|||
|
background-color: #ddd
|
|||
|
}
|
|||
|
|
|||
|
.topnavbar-nav {
|
|||
|
display: flex;
|
|||
|
flex-wrap: wrap;
|
|||
|
align-items: center
|
|||
|
}
|
|||
|
|
|||
|
.topnavbar-nav .menu-button {
|
|||
|
max-width: 100px;
|
|||
|
height: 30px;
|
|||
|
font-size: 14px;
|
|||
|
line-height: 30px;
|
|||
|
text-align: center;
|
|||
|
background-color: #fff;
|
|||
|
padding: 0 10px;
|
|||
|
border-radius: 5px;
|
|||
|
margin: 5px 10px;
|
|||
|
cursor: pointer;
|
|||
|
overflow: hidden;
|
|||
|
z-index: 999
|
|||
|
}
|
|||
|
|
|||
|
.topnavbar-nav.show {
|
|||
|
display: flex
|
|||
|
}
|
|||
|
|
|||
|
.menu-toggle {
|
|||
|
display: none;
|
|||
|
font-size: 1.5em;
|
|||
|
cursor: pointer;
|
|||
|
align-self: flex-start
|
|||
|
}
|
|||
|
|
|||
|
@media screen and (max-width:768px) {
|
|||
|
.merge-msg-modal-content {
|
|||
|
background-color: #fefefe;
|
|||
|
margin: 5% auto;
|
|||
|
padding: 20px;
|
|||
|
border: 1px solid #888;
|
|||
|
width: 90%;
|
|||
|
height: 80%
|
|||
|
}
|
|||
|
|
|||
|
.OnePersonmsg .left .avatar {
|
|||
|
margin-left: 0;
|
|||
|
margin-top: 10px
|
|||
|
}
|
|||
|
|
|||
|
.topnavbar-nav {
|
|||
|
display: none;
|
|||
|
flex-direction: column;
|
|||
|
margin-left: auto;
|
|||
|
margin-right: -120px
|
|||
|
}
|
|||
|
|
|||
|
.topnavbar-nav,
|
|||
|
.topnavbar-nav .show {
|
|||
|
align-items: flex-start
|
|||
|
}
|
|||
|
|
|||
|
.menu-toggle {
|
|||
|
display: block;
|
|||
|
margin-left: auto;
|
|||
|
margin-right: 20px
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.loader {
|
|||
|
border: 16px solid #f3f3f3;
|
|||
|
border-top: 16px solid #dd512e;
|
|||
|
border-radius: 50%;
|
|||
|
width: 60px;
|
|||
|
height: 60px;
|
|||
|
animation: spin 2s linear infinite;
|
|||
|
position: absolute;
|
|||
|
top: 50%;
|
|||
|
left: 50%;
|
|||
|
transform: translate(-50%, -50%)
|
|||
|
}
|
|||
|
</style>
|
|||
|
<title>出错了</title>
|
|||
|
</head>
|
|||
|
|
|||
|
<body>
|
|||
|
<!-- 加载动画容器 -->
|
|||
|
<div class="loader" id="loader"></div>
|
|||
|
<div class="page" id="content" style="display: none;">
|
|||
|
<!-- <div class="side-bar"></div> -->
|
|||
|
<div class="mid-bar">
|
|||
|
<div class="timeline-area">
|
|||
|
<div class="timeline-wrapper">
|
|||
|
<div class="timeline" id="timeline">
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="main-body">
|
|||
|
<div class="title-bar" id="title-bar">
|
|||
|
<p id="title">出错了</p>
|
|||
|
<div class="topnavbar-nav" id="topnavbar-nav">
|
|||
|
</div>
|
|||
|
<span class="menu-toggle" id="menu-toggle">
|
|||
|
<i class="fas fa-bars"></i>
|
|||
|
</span>
|
|||
|
</div>
|
|||
|
<div class="container">
|
|||
|
<div class="content" id="chat-container" onscroll="checkScroll()">
|
|||
|
<div class="item item-center">
|
|||
|
<span>8:16</span>
|
|||
|
</div>
|
|||
|
<div class="item item-center">
|
|||
|
<span>错误提示</span>
|
|||
|
</div>
|
|||
|
<div class="item item-left">
|
|||
|
<div class="avatar">
|
|||
|
<img
|
|||
|
src="https://blog.lc044.love/static/img/a774ab7a32635db7b4254c8ff7caaa89.Camera_XHS_16984826124131040g2sg30qo1ggopgqe05oce.webp">
|
|||
|
</div>
|
|||
|
<div class="bubble bubble-left">
|
|||
|
很抱歉,由于程序出现未知错误,您的聊天记录未能成功展示。<br />您可以关注下方微信公众号,<b>回复:联系方式</b>,获取QQ交流群群号,并在群内寻求帮助。
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="item item-left">
|
|||
|
<div class="avatar">
|
|||
|
<img
|
|||
|
src="https://blog.lc044.love/static/img/a774ab7a32635db7b4254c8ff7caaa89.Camera_XHS_16984826124131040g2sg30qo1ggopgqe05oce.webp">
|
|||
|
</div>
|
|||
|
<div class="bubble bubble-left">您可自行排查问题所在,例如只选择文本或图片,反馈时请说明哪种消息类型出现了问题!!!
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="item item-left">
|
|||
|
<div class="avatar">
|
|||
|
<img src="https://blog.lc044.love/static/img/a774ab7a32635db7b4254c8ff7caaa89.Camera_XHS_16984826124131040g2sg30qo1ggopgqe05oce.webp"
|
|||
|
loading="lazy">
|
|||
|
</div>
|
|||
|
<div class="content-wrapper content-wrapper-left">
|
|||
|
<div class="chat-image">
|
|||
|
<img src="https://blog.lc044.love/static/img/3fd32f1732a2c8f53a7eb923472b8f19.clipboard-2023-12-18.webp"
|
|||
|
onclick="showModal(this)" loading="lazy">
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="item item-right">
|
|||
|
<div class="bubble bubble-right">好的</div>
|
|||
|
<div class="avatar">
|
|||
|
<img src="https://cdn.luogu.com.cn/upload/image_hosting/rbnmv4bu.png">
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="nav-bar">
|
|||
|
<div class="turner-bar">
|
|||
|
<div class="button pre-page" onclick="prevPage()">上一页</div>
|
|||
|
<div class="navigator-line">转到第
|
|||
|
<input class="navgator" value="1" id="gotoPage" onchange="gotoPage()"></input>页,共<p
|
|||
|
id="maxPage">0</p>页
|
|||
|
</div>
|
|||
|
<div class="button next-page" onclick="nextPage()">下一页</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="search-modal" class="search-modal">
|
|||
|
<div class="search-modal-content" id="search-modal-content">
|
|||
|
<span class="close-btn" onclick="closeSearchModal()">×</span>
|
|||
|
<input type="text" id="searchBox" class="modal-search-box" placeholder="Type your search...">
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
<div id="modal" class="modal" onclick="hideModal()">
|
|||
|
<img id="modal-image" class="modal-image">
|
|||
|
</div>
|
|||
|
<script>
|
|||
|
const FileIcons = {
|
|||
|
'DOCX': 'data:image/png;base64,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
|
|||
|
'XLS': 'data:image/png;base64,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
|
|||
|
'CSV': 'data:image/png;base64,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
|
|||
|
'TXT': 'data:image/png;base64,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
|
|||
|
'ZIP': 'data:image/png;base64,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
|
|||
|
'PPT': 'data:image/png;base64,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
|
|||
|
'PDF': 'data:image/png;base64,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
|
|||
|
'Default': 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB6klEQVR4nO2bT2oCMRSHX/LG5x8UQZispVfwBD1LD2ErbW1Lj9GzdKuiiIgLF17AjRsRHXEmXZSWumkxnfGped8+4ZcvLzNJIACCIAgeozLqN+j3+9elUinIqP89ENGuVqtZo9GYHdo2i4DU7XYf6vX6fbFYBKWycrzPcrl8BYBHALCHtEtbAHU6nXYYhi2tdcpd/06SJAo+K5pNAPV6vbYxpoWIEATB0Wb/P6QlgAaDwVMYhneFQgGSJAFETKnrbElDAA2Hw2djzG0+nwcigiiKQCnlRQXQaDTaGzwRwXa7TSXcMfiPABqPxy/GmObX4HO5HCDiWcz8F64CaDKZvNRqtWYcx7BeryGKIkBE0FpfvAA1nU5vqtVqc7fbQRAE34O21oK1Fogo9aBZ4SSgUqlclcvlvQ/dOc36T5yWgNb6bH5zf3Hc7doJ4r0A5yVwamve9ezhfQWIAO4A3IgA7gDciADuANw4H4dPbR/givcVIAK4A3AjArgDcOO9gIs5DrvifQWIAO4A3IgA7gDceC/gYk6DcivsiAjgDsCNCOAOwI0I4A7AjfcC5D6AOwA3IoA7ADcigDsANyLAoY1VSh30KuMYaK0tHPhaBMBtH2Dn8/nbYrF4j+P4JDYDiGg3m80MHAQIgiB4zQe8XGReoxLRtQAAAABJRU5ErkJggg=='
|
|||
|
}
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
/**
|
|||
|
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.7.0
|
|||
|
* Copyright (C) 2016 Oliver Nightingale
|
|||
|
* MIT Licensed
|
|||
|
* @license
|
|||
|
*/
|
|||
|
!function () { var t = function (e) { var n = new t.Index; return n.pipeline.add(t.trimmer, t.stopWordFilter, t.stemmer), e && e.call(n, n), n }; t.version = "0.7.0", t.utils = {}, t.utils.warn = function (t) { return function (e) { t.console && console.warn && console.warn(e) } }(this), t.utils.asString = function (t) { return void 0 === t || null === t ? "" : t.toString() }, t.EventEmitter = function () { this.events = {} }, t.EventEmitter.prototype.addListener = function () { var t = Array.prototype.slice.call(arguments), e = t.pop(), n = t; if ("function" != typeof e) throw new TypeError("last argument must be a function"); n.forEach(function (t) { this.hasHandler(t) || (this.events[t] = []), this.events[t].push(e) }, this) }, t.EventEmitter.prototype.removeListener = function (t, e) { if (this.hasHandler(t)) { var n = this.events[t].indexOf(e); this.events[t].splice(n, 1), this.events[t].length || delete this.events[t] } }, t.EventEmitter.prototype.emit = function (t) { if (this.hasHandler(t)) { var e = Array.prototype.slice.call(arguments, 1); this.events[t].forEach(function (t) { t.apply(void 0, e) }) } }, t.EventEmitter.prototype.hasHandler = function (t) { return t in this.events }, t.tokenizer = function (e) { return arguments.length && null != e && void 0 != e ? Array.isArray(e) ? e.map(function (e) { return t.utils.asString(e).toLowerCase() }) : e.toString().trim().toLowerCase().split(t.tokenizer.seperator) : [] }, t.tokenizer.seperator = /[\s\-]+/, t.tokenizer.load = function (t) { var e = this.registeredFunctions[t]; if (!e) throw new Error("Cannot load un-registered function: " + t); return e }, t.tokenizer.label = "default", t.tokenizer.registeredFunctions = { "default": t.tokenizer }, t.tokenizer.registerFunction = function (e, n) { n in this.registeredFunctions && t.utils.warn("Overwriting existing tokenizer: " + n), e.label = n, this.registeredFunctions[n] = e }, t.Pipeline = function () { this._stack = [] }, t.Pipeline.registeredFunctions = {}, t.Pipeline.registerFunction = function (e, n) { n in this.registeredFunctions && t.utils.warn("Overwriting existing registered function: " + n), e.label = n, t.Pipeline.registeredFunctions[e.label] = e }, t.Pipeline.warnIfFunctionNotRegistered = function (e) { var n = e.label && e.label in this.registeredFunctions; n || t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n", e) }, t.Pipeline.load = function (e) { var n = new t.Pipeline; return e.forEach(function (e) { var i = t.Pipeline.registeredFunctions[e]; if (!i) throw new Error("Cannot load un-registered function: " + e); n.add(i) }), n }, t.Pipeline.prototype.add = function () { var e = Array.prototype.slice.call(arguments); e.forEach(function (e) { t.Pipeline.warnIfFunctionNotRegistered(e), this._stack.push(e) }, this) }, t.Pipeline.prototype.after = function (e, n) { t.Pipeline.warnIfFunctionNotRegistered(n); var i = this._stack.indexOf(e); if (-1 == i) throw new Error("Cannot find existingFn"); i += 1, this._stack.splice(i, 0, n) }, t.Pipeline.prototype.before = function (e, n) { t.Pipeline.warnIfFunctionNotRegistered(n); var i = this._stack.indexOf(e); if (-1 == i) throw new Error("Cannot find existingFn"); this._stack.splice(i, 0, n) }, t.Pipeline.prototype.remove = function (t) { var e = this._stack.indexOf(t); -1 != e && this._stack.splice(e, 1) }, t.Pipeline.prototype.run = function (t) { for (var e = [], n = t.length, i = this._stack.length, r = 0; n > r; r++) { for (var o = t[r], s = 0; i > s && (o = this._stack[s](o, r, t), void 0 !== o && "" !== o); s++); void 0 !== o && "" !== o && e.push(o) } return e }, t.Pipeline.prototype.reset = function () { this._stack = [] }, t.Pipeline.prototype.toJSON = function () { return this._stack.map(function (e) { return t.Pipeline.warnIfFunctionNotRegistered(e), e.label }) }, t.Vector = function () { this._magnitude = null, this.list = void 0, this.length = 0 }, t.Vector.Node = function (t, e, n) { this.idx = t, this.val = e, this.next = n }, t.Vector.prototype.insert = function (e, n) { this.
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
/*!
|
|||
|
* Snowball JavaScript Library v0.3
|
|||
|
* http://code.google.com/p/urim/
|
|||
|
* http://snowball.tartarus.org/
|
|||
|
*
|
|||
|
* Copyright 2010, Oleg Mazko
|
|||
|
* http://www.mozilla.org/MPL/
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* export the module via AMD, CommonJS or as a browser global
|
|||
|
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
|
|||
|
*/
|
|||
|
; (function (root, factory) {
|
|||
|
if (typeof define === 'function' && define.amd) {
|
|||
|
// AMD. Register as an anonymous module.
|
|||
|
define(factory)
|
|||
|
} else if (typeof exports === 'object') {
|
|||
|
/**
|
|||
|
* Node. Does not work with strict CommonJS, but
|
|||
|
* only CommonJS-like environments that support module.exports,
|
|||
|
* like Node.
|
|||
|
*/
|
|||
|
module.exports = factory()
|
|||
|
} else {
|
|||
|
// Browser globals (root is window)
|
|||
|
factory()(root.lunr);
|
|||
|
}
|
|||
|
}(this, function () {
|
|||
|
/**
|
|||
|
* Just return a value to define the module export.
|
|||
|
* This example returns an object, but the module
|
|||
|
* can return a function as the exported value.
|
|||
|
*/
|
|||
|
return function (lunr) {
|
|||
|
/* provides utilities for the included stemmers */
|
|||
|
lunr.stemmerSupport = {
|
|||
|
Among: function (s, substring_i, result, method) {
|
|||
|
this.toCharArray = function (s) {
|
|||
|
var sLength = s.length, charArr = new Array(sLength);
|
|||
|
for (var i = 0; i < sLength; i++)
|
|||
|
charArr[i] = s.charCodeAt(i);
|
|||
|
return charArr;
|
|||
|
};
|
|||
|
|
|||
|
if ((!s && s != "") || (!substring_i && (substring_i != 0)) || !result)
|
|||
|
throw ("Bad Among initialisation: s:" + s + ", substring_i: "
|
|||
|
+ substring_i + ", result: " + result);
|
|||
|
this.s_size = s.length;
|
|||
|
this.s = this.toCharArray(s);
|
|||
|
this.substring_i = substring_i;
|
|||
|
this.result = result;
|
|||
|
this.method = method;
|
|||
|
},
|
|||
|
SnowballProgram: function () {
|
|||
|
var current;
|
|||
|
return {
|
|||
|
bra: 0,
|
|||
|
ket: 0,
|
|||
|
limit: 0,
|
|||
|
cursor: 0,
|
|||
|
limit_backward: 0,
|
|||
|
setCurrent: function (word) {
|
|||
|
current = word;
|
|||
|
this.cursor = 0;
|
|||
|
this.limit = word.length;
|
|||
|
this.limit_backward = 0;
|
|||
|
this.bra = this.cursor;
|
|||
|
this.ket = this.limit;
|
|||
|
},
|
|||
|
getCurrent: function () {
|
|||
|
var result = current;
|
|||
|
current = null;
|
|||
|
return result;
|
|||
|
},
|
|||
|
in_grouping: function (s, min, max) {
|
|||
|
if (this.cursor < this.limit) {
|
|||
|
var ch = current.charCodeAt(this.cursor);
|
|||
|
if (ch <= max && ch >= min) {
|
|||
|
ch -= min;
|
|||
|
if (s[ch >> 3] & (0X1 << (ch & 0X7))) {
|
|||
|
this.cursor++;
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
},
|
|||
|
in_grouping_b: function (s, min, max) {
|
|||
|
if (this.cursor > this.limit_backward) {
|
|||
|
var ch = current.charCodeAt(this.cursor - 1);
|
|||
|
if (ch <= max && ch >= min) {
|
|||
|
ch -= min;
|
|||
|
if (s[ch >> 3] & (0X1 << (ch & 0X7))) {
|
|||
|
this.cursor--;
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
},
|
|||
|
out_grouping: function (s, min, max) {
|
|||
|
if (this.cursor < this.limit) {
|
|||
|
var ch = current.charCodeAt(this.cursor);
|
|||
|
if (ch > max || ch < min) {
|
|||
|
this.cursor++;
|
|||
|
return true;
|
|||
|
}
|
|||
|
ch -= min;
|
|||
|
if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) {
|
|||
|
this.cursor++;
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
},
|
|||
|
out_grouping_b: function (s, min, max) {
|
|||
|
if (this.cursor > this.limit_backward) {
|
|||
|
var ch = current.charCodeAt(this.cursor - 1);
|
|||
|
if (ch > max || ch < min) {
|
|||
|
this.cursor--;
|
|||
|
return true;
|
|||
|
}
|
|||
|
ch -= min;
|
|||
|
if (!(s[ch >> 3] & (0X1 << (ch & 0X7)))) {
|
|||
|
this.cursor--;
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
},
|
|||
|
eq_s: function (s_size, s) {
|
|||
|
if (this.limit - this.cursor < s_size)
|
|||
|
return false;
|
|||
|
for (var i = 0; i < s_size; i++)
|
|||
|
if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i))
|
|||
|
return false;
|
|||
|
this.cursor += s_size;
|
|||
|
return true;
|
|||
|
},
|
|||
|
eq_s_b: function (s_size, s) {
|
|||
|
if (this.cursor - this.limit_backward < s_size)
|
|||
|
return false;
|
|||
|
for (var i = 0; i < s_size; i++)
|
|||
|
if (current.charCodeAt(this.cursor - s_size + i) != s
|
|||
|
.charCodeAt(i))
|
|||
|
return false;
|
|||
|
this.cursor -= s_size;
|
|||
|
return true;
|
|||
|
},
|
|||
|
find_among: function (v, v_size) {
|
|||
|
var i = 0, j = v_size, c = this.cursor, l = this.limit, common_i = 0, common_j = 0, first_key_inspected = false;
|
|||
|
while (true) {
|
|||
|
var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j
|
|||
|
? common_i
|
|||
|
: common_j, w = v[k];
|
|||
|
for (var i2 = common; i2 < w.s_size; i2++) {
|
|||
|
if (c + common == l) {
|
|||
|
diff = -1;
|
|||
|
break;
|
|||
|
}
|
|||
|
diff = current.charCodeAt(c + common) - w.s[i2];
|
|||
|
if (diff)
|
|||
|
break;
|
|||
|
common++;
|
|||
|
}
|
|||
|
if (diff < 0) {
|
|||
|
j = k;
|
|||
|
common_j = common;
|
|||
|
} else {
|
|||
|
i = k;
|
|||
|
common_i = common;
|
|||
|
}
|
|||
|
if (j - i <= 1) {
|
|||
|
if (i > 0 || j == i || first_key_inspected)
|
|||
|
break;
|
|||
|
first_key_inspected = true;
|
|||
|
}
|
|||
|
}
|
|||
|
while (true) {
|
|||
|
var w = v[i];
|
|||
|
if (common_i >= w.s_size) {
|
|||
|
this.cursor = c + w.s_size;
|
|||
|
if (!w.method)
|
|||
|
return w.result;
|
|||
|
var res = w.method();
|
|||
|
this.cursor = c + w.s_size;
|
|||
|
if (res)
|
|||
|
return w.result;
|
|||
|
}
|
|||
|
i = w.substring_i;
|
|||
|
if (i < 0)
|
|||
|
return 0;
|
|||
|
}
|
|||
|
},
|
|||
|
find_among_b: function (v, v_size) {
|
|||
|
var i = 0, j = v_size, c = this.cursor, lb = this.limit_backward, common_i = 0, common_j = 0, first_key_inspected = false;
|
|||
|
while (true) {
|
|||
|
var k = i + ((j - i) >> 1), diff = 0, common = common_i < common_j
|
|||
|
? common_i
|
|||
|
: common_j, w = v[k];
|
|||
|
for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) {
|
|||
|
if (c - common == lb) {
|
|||
|
diff = -1;
|
|||
|
break;
|
|||
|
}
|
|||
|
diff = current.charCodeAt(c - 1 - common) - w.s[i2];
|
|||
|
if (diff)
|
|||
|
break;
|
|||
|
common++;
|
|||
|
}
|
|||
|
if (diff < 0) {
|
|||
|
j = k;
|
|||
|
common_j = common;
|
|||
|
} else {
|
|||
|
i = k;
|
|||
|
common_i = common;
|
|||
|
}
|
|||
|
if (j - i <= 1) {
|
|||
|
if (i > 0 || j == i || first_key_inspected)
|
|||
|
break;
|
|||
|
first_key_inspected = true;
|
|||
|
}
|
|||
|
}
|
|||
|
while (true) {
|
|||
|
var w = v[i];
|
|||
|
if (common_i >= w.s_size) {
|
|||
|
this.cursor = c - w.s_size;
|
|||
|
if (!w.method)
|
|||
|
return w.result;
|
|||
|
var res = w.method();
|
|||
|
this.cursor = c - w.s_size;
|
|||
|
if (res)
|
|||
|
return w.result;
|
|||
|
}
|
|||
|
i = w.substring_i;
|
|||
|
if (i < 0)
|
|||
|
return 0;
|
|||
|
}
|
|||
|
},
|
|||
|
replace_s: function (c_bra, c_ket, s) {
|
|||
|
var adjustment = s.length - (c_ket - c_bra), left = current
|
|||
|
.substring(0, c_bra), right = current.substring(c_ket);
|
|||
|
current = left + s + right;
|
|||
|
this.limit += adjustment;
|
|||
|
if (this.cursor >= c_ket)
|
|||
|
this.cursor += adjustment;
|
|||
|
else if (this.cursor > c_bra)
|
|||
|
this.cursor = c_bra;
|
|||
|
return adjustment;
|
|||
|
},
|
|||
|
slice_check: function () {
|
|||
|
if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit
|
|||
|
|| this.limit > current.length)
|
|||
|
throw ("faulty slice operation");
|
|||
|
},
|
|||
|
slice_from: function (s) {
|
|||
|
this.slice_check();
|
|||
|
this.replace_s(this.bra, this.ket, s);
|
|||
|
},
|
|||
|
slice_del: function () {
|
|||
|
this.slice_from("");
|
|||
|
},
|
|||
|
insert: function (c_bra, c_ket, s) {
|
|||
|
var adjustment = this.replace_s(c_bra, c_ket, s);
|
|||
|
if (c_bra <= this.bra)
|
|||
|
this.bra += adjustment;
|
|||
|
if (c_bra <= this.ket)
|
|||
|
this.ket += adjustment;
|
|||
|
},
|
|||
|
slice_to: function () {
|
|||
|
this.slice_check();
|
|||
|
return current.substring(this.bra, this.ket);
|
|||
|
},
|
|||
|
eq_v_b: function (s) {
|
|||
|
return this.eq_s_b(s.length, s);
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
lunr.trimmerSupport = {
|
|||
|
generateTrimmer: function (wordCharacters) {
|
|||
|
var startRegex = new RegExp("^[^" + wordCharacters + "]+")
|
|||
|
var endRegex = new RegExp("[^" + wordCharacters + "]+$")
|
|||
|
|
|||
|
return function (token) {
|
|||
|
// for lunr version 2
|
|||
|
if (typeof token.update === "function") {
|
|||
|
return token.update(function (s) {
|
|||
|
return s
|
|||
|
.replace(startRegex, '')
|
|||
|
.replace(endRegex, '');
|
|||
|
})
|
|||
|
} else { // for lunr version 1
|
|||
|
return token
|
|||
|
.replace(startRegex, '')
|
|||
|
.replace(endRegex, '');
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}));
|
|||
|
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
/*!
|
|||
|
* Lunr languages, `Chinese` language
|
|||
|
* https://github.com/MihaiValentin/lunr-languages
|
|||
|
*
|
|||
|
* Copyright 2019, Felix Lian (repairearth)
|
|||
|
* http://www.mozilla.org/MPL/
|
|||
|
*/
|
|||
|
/*!
|
|||
|
* based on
|
|||
|
* Snowball zhvaScript Library v0.3
|
|||
|
* http://code.google.com/p/urim/
|
|||
|
* http://snowball.tartarus.org/
|
|||
|
*
|
|||
|
* Copyright 2010, Oleg Mazko
|
|||
|
* http://www.mozilla.org/MPL/
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* export the module via AMD, CommonJS or as a browser global
|
|||
|
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
|
|||
|
*/
|
|||
|
;
|
|||
|
(function (root, factory) {
|
|||
|
if (typeof define === 'function' && define.amd) {
|
|||
|
// AMD. Register as an anonymous module.
|
|||
|
define(factory)
|
|||
|
} else if (typeof exports === 'object') {
|
|||
|
/**
|
|||
|
* Node. Does not work with strict CommonJS, but
|
|||
|
* only CommonJS-like environments that support module.exports,
|
|||
|
* like Node.
|
|||
|
*/
|
|||
|
// module.exports = factory(require('@node-rs/jieba'))
|
|||
|
module.exports = factory()
|
|||
|
} else {
|
|||
|
// Browser globals (root is window)
|
|||
|
factory()(root.lunr);
|
|||
|
}
|
|||
|
}(this, function (Segment) {
|
|||
|
/**
|
|||
|
* Just return a value to define the module export.
|
|||
|
* This example returns an object, but the module
|
|||
|
* can return a function as the exported value.
|
|||
|
*/
|
|||
|
return function (lunr) {
|
|||
|
/* throw error if lunr is not yet included */
|
|||
|
if ('undefined' === typeof lunr) {
|
|||
|
throw new Error('Lunr is not present. Please include / require Lunr before this script.');
|
|||
|
}
|
|||
|
|
|||
|
/* throw error if lunr stemmer support is not yet included */
|
|||
|
if ('undefined' === typeof lunr.stemmerSupport) {
|
|||
|
throw new Error('Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.');
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
Chinese tokenization is trickier, since it does not
|
|||
|
take into account spaces.
|
|||
|
Since the tokenization function is represented different
|
|||
|
internally for each of the Lunr versions, this had to be done
|
|||
|
in order to try to try to pick the best way of doing this based
|
|||
|
on the Lunr version
|
|||
|
*/
|
|||
|
var isLunr2 = lunr.version[0] == "2";
|
|||
|
|
|||
|
/* register specific locale function */
|
|||
|
lunr.zh = function () {
|
|||
|
this.pipeline.reset();
|
|||
|
this.pipeline.add(
|
|||
|
lunr.zh.trimmer,
|
|||
|
lunr.zh.stopWordFilter,
|
|||
|
lunr.zh.stemmer
|
|||
|
);
|
|||
|
|
|||
|
// change the tokenizer for Chinese one
|
|||
|
if (isLunr2) { // for lunr version 2.0.0
|
|||
|
this.tokenizer = lunr.zh.tokenizer;
|
|||
|
} else {
|
|||
|
if (lunr.tokenizer) { // for lunr version 0.6.0
|
|||
|
lunr.tokenizer = lunr.zh.tokenizer;
|
|||
|
}
|
|||
|
if (this.tokenizerFn) { // for lunr version 0.7.0 -> 1.0.0
|
|||
|
this.tokenizerFn = lunr.zh.tokenizer;
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
lunr.zh.tokenizer = function (obj) {
|
|||
|
if (!arguments.length || obj == null || obj == undefined) return []
|
|||
|
if (Array.isArray(obj)) return obj.map(function (t) {
|
|||
|
return isLunr2 ? new lunr.Token(t.toLowerCase()) : t.toLowerCase()
|
|||
|
})
|
|||
|
|
|||
|
var tokens = [];
|
|||
|
try {
|
|||
|
var segmenter = new Intl.Segmenter('zh', { granularity: 'word' });
|
|||
|
var str = obj.toString().trim().toLowerCase();
|
|||
|
var segments = segmenter.segment(str)
|
|||
|
for (seg of segments) {
|
|||
|
if (seg.isWordLike) { tokens = tokens.concat(seg.segment) }
|
|||
|
}
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
|
|||
|
tokens = tokens.filter(function (token) {
|
|||
|
return !!token;
|
|||
|
});
|
|||
|
|
|||
|
var fromIndex = 0
|
|||
|
|
|||
|
return tokens.map(function (token, index) {
|
|||
|
if (isLunr2) {
|
|||
|
var start = str.indexOf(token, fromIndex)
|
|||
|
|
|||
|
var tokenMetadata = {}
|
|||
|
tokenMetadata["position"] = [start, token.length]
|
|||
|
tokenMetadata["index"] = index
|
|||
|
|
|||
|
fromIndex = start
|
|||
|
|
|||
|
return new lunr.Token(token, tokenMetadata);
|
|||
|
} else {
|
|||
|
return token
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/* lunr trimmer function */
|
|||
|
lunr.zh.wordCharacters = "\\w\u4e00-\u9fa5";
|
|||
|
lunr.zh.trimmer = lunr.trimmerSupport.generateTrimmer(lunr.zh.wordCharacters);
|
|||
|
lunr.Pipeline.registerFunction(lunr.zh.trimmer, 'trimmer-zh');
|
|||
|
|
|||
|
/* lunr stemmer function */
|
|||
|
lunr.zh.stemmer = (function () {
|
|||
|
|
|||
|
/* TODO Chinese stemmer */
|
|||
|
return function (word) {
|
|||
|
return word;
|
|||
|
}
|
|||
|
})();
|
|||
|
lunr.Pipeline.registerFunction(lunr.zh.stemmer, 'stemmer-zh');
|
|||
|
|
|||
|
/* lunr stop word filter. see https://www.ranks.nl/stopwords/chinese-stopwords */
|
|||
|
lunr.zh.stopWordFilter = lunr.generateStopWordFilter(
|
|||
|
'的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自'.split(' '));
|
|||
|
lunr.Pipeline.registerFunction(lunr.zh.stopWordFilter, 'stopWordFilter-zh');
|
|||
|
};
|
|||
|
}))
|
|||
|
</script>
|
|||
|
|
|||
|
<script>
|
|||
|
!function (n) { "use strict"; function t(n, t) { var r = (65535 & n) + (65535 & t); return (n >> 16) + (t >> 16) + (r >> 16) << 16 | 65535 & r } function r(n, t) { return n << t | n >>> 32 - t } function e(n, e, o, u, c, f) { return t(r(t(t(e, n), t(u, f)), c), o) } function o(n, t, r, o, u, c, f) { return e(t & r | ~t & o, n, t, u, c, f) } function u(n, t, r, o, u, c, f) { return e(t & o | r & ~o, n, t, u, c, f) } function c(n, t, r, o, u, c, f) { return e(t ^ r ^ o, n, t, u, c, f) } function f(n, t, r, o, u, c, f) { return e(r ^ (t | ~o), n, t, u, c, f) } function i(n, r) { n[r >> 5] |= 128 << r % 32, n[14 + (r + 64 >>> 9 << 4)] = r; var e, i, a, d, h, l = 1732584193, g = -271733879, v = -1732584194, m = 271733878; for (e = 0; e < n.length; e += 16)i = l, a = g, d = v, h = m, g = f(g = f(g = f(g = f(g = c(g = c(g = c(g = c(g = u(g = u(g = u(g = u(g = o(g = o(g = o(g = o(g, v = o(v, m = o(m, l = o(l, g, v, m, n[e], 7, -680876936), g, v, n[e + 1], 12, -389564586), l, g, n[e + 2], 17, 606105819), m, l, n[e + 3], 22, -1044525330), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 4], 7, -176418897), g, v, n[e + 5], 12, 1200080426), l, g, n[e + 6], 17, -1473231341), m, l, n[e + 7], 22, -45705983), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 8], 7, 1770035416), g, v, n[e + 9], 12, -1958414417), l, g, n[e + 10], 17, -42063), m, l, n[e + 11], 22, -1990404162), v = o(v, m = o(m, l = o(l, g, v, m, n[e + 12], 7, 1804603682), g, v, n[e + 13], 12, -40341101), l, g, n[e + 14], 17, -1502002290), m, l, n[e + 15], 22, 1236535329), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 1], 5, -165796510), g, v, n[e + 6], 9, -1069501632), l, g, n[e + 11], 14, 643717713), m, l, n[e], 20, -373897302), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 5], 5, -701558691), g, v, n[e + 10], 9, 38016083), l, g, n[e + 15], 14, -660478335), m, l, n[e + 4], 20, -405537848), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 9], 5, 568446438), g, v, n[e + 14], 9, -1019803690), l, g, n[e + 3], 14, -187363961), m, l, n[e + 8], 20, 1163531501), v = u(v, m = u(m, l = u(l, g, v, m, n[e + 13], 5, -1444681467), g, v, n[e + 2], 9, -51403784), l, g, n[e + 7], 14, 1735328473), m, l, n[e + 12], 20, -1926607734), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 5], 4, -378558), g, v, n[e + 8], 11, -2022574463), l, g, n[e + 11], 16, 1839030562), m, l, n[e + 14], 23, -35309556), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 1], 4, -1530992060), g, v, n[e + 4], 11, 1272893353), l, g, n[e + 7], 16, -155497632), m, l, n[e + 10], 23, -1094730640), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 13], 4, 681279174), g, v, n[e], 11, -358537222), l, g, n[e + 3], 16, -722521979), m, l, n[e + 6], 23, 76029189), v = c(v, m = c(m, l = c(l, g, v, m, n[e + 9], 4, -640364487), g, v, n[e + 12], 11, -421815835), l, g, n[e + 15], 16, 530742520), m, l, n[e + 2], 23, -995338651), v = f(v, m = f(m, l = f(l, g, v, m, n[e], 6, -198630844), g, v, n[e + 7], 10, 1126891415), l, g, n[e + 14], 15, -1416354905), m, l, n[e + 5], 21, -57434055), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 12], 6, 1700485571), g, v, n[e + 3], 10, -1894986606), l, g, n[e + 10], 15, -1051523), m, l, n[e + 1], 21, -2054922799), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 8], 6, 1873313359), g, v, n[e + 15], 10, -30611744), l, g, n[e + 6], 15, -1560198380), m, l, n[e + 13], 21, 1309151649), v = f(v, m = f(m, l = f(l, g, v, m, n[e + 4], 6, -145523070), g, v, n[e + 11], 10, -1120210379), l, g, n[e + 2], 15, 718787259), m, l, n[e + 9], 21, -343485551), l = t(l, i), g = t(g, a), v = t(v, d), m = t(m, h); return [l, g, v, m] } function a(n) { var t, r = "", e = 32 * n.length; for (t = 0; t < e; t += 8)r += String.fromCharCode(n[t >> 5] >>> t % 32 & 255); return r } function d(n) { var t, r = []; for (r[(n.length >> 2) - 1] = void 0, t = 0; t < r.length; t += 1)r[t] = 0; var e = 8 * n.length; for (t = 0; t < e; t += 8)r[t >> 5] |= (255 & n.charCodeAt(t / 8)) << t % 32; return r } function h(n) { return a(i(d(n), 8 * n.length)) } function l(n, t) { var r, e, o = d(n), u = [], c = []; for (u[15] = c[15] = void 0, o.length > 16 && (o = i(o, 8 * n.length)), r = 0; r < 16; r
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
/* flatpickr v4.6.13,, @license MIT */
|
|||
|
!function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (e = "undefined" != typeof globalThis ? globalThis : e || self).flatpickr = n() }(this, (function () { "use strict"; var e = function () { return (e = Object.assign || function (e) { for (var n, t = 1, a = arguments.length; t < a; t++)for (var i in n = arguments[t]) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]); return e }).apply(this, arguments) }; function n() { for (var e = 0, n = 0, t = arguments.length; n < t; n++)e += arguments[n].length; var a = Array(e), i = 0; for (n = 0; n < t; n++)for (var o = arguments[n], r = 0, l = o.length; r < l; r++, i++)a[i] = o[r]; return a } var t = ["onChange", "onClose", "onDayCreate", "onDestroy", "onKeyDown", "onMonthChange", "onOpen", "onParseConfig", "onReady", "onValueUpdate", "onYearChange", "onPreCalendarPosition"], a = { _disable: [], allowInput: !1, allowInvalidPreload: !1, altFormat: "F j, Y", altInput: !1, altInputClass: "form-control input", animate: "object" == typeof window && -1 === window.navigator.userAgent.indexOf("MSIE"), ariaDateFormat: "F j, Y", autoFillDefaultTime: !0, clickOpens: !0, closeOnSelect: !0, conjunction: ", ", dateFormat: "Y-m-d", defaultHour: 12, defaultMinute: 0, defaultSeconds: 0, disable: [], disableMobile: !1, enableSeconds: !1, enableTime: !1, errorHandler: function (e) { return "undefined" != typeof console && console.warn(e) }, getWeek: function (e) { var n = new Date(e.getTime()); n.setHours(0, 0, 0, 0), n.setDate(n.getDate() + 3 - (n.getDay() + 6) % 7); var t = new Date(n.getFullYear(), 0, 4); return 1 + Math.round(((n.getTime() - t.getTime()) / 864e5 - 3 + (t.getDay() + 6) % 7) / 7) }, hourIncrement: 1, ignoredFocusElements: [], inline: !1, locale: "default", minuteIncrement: 5, mode: "single", monthSelectorType: "dropdown", nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>", noCalendar: !1, now: new Date, onChange: [], onClose: [], onDayCreate: [], onDestroy: [], onKeyDown: [], onMonthChange: [], onOpen: [], onParseConfig: [], onReady: [], onValueUpdate: [], onYearChange: [], onPreCalendarPosition: [], plugins: [], position: "auto", positionElement: void 0, prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>", shorthandCurrentMonth: !1, showMonths: 1, static: !1, time_24hr: !1, weekNumbers: !1, wrap: !1 }, i = { weekdays: { shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], longhand: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] }, months: { shorthand: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], longhand: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] }, daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], firstDayOfWeek: 0, ordinal: function (e) { var n = e % 100; if (n > 3 && n < 21) return "th"; switch (n % 10) { case 1: return "st"; case 2: return "nd"; case 3: return "rd"; default: return "th" } }, rangeSeparator: " to ", weekAbbreviation: "Wk", scrollTitle: "Scroll to increment", toggleTitle: "Click to toggle", amPM: ["AM", "PM"], yearAriaLabel: "Year", monthAriaLabel: "Month", hourAriaLabel: "Hour", minuteAriaLabel: "Minute", time_24hr: !1 }, o = function (e, n) { return void 0 === n && (n = 2), ("000" + e).slice(-1 * n) }, r = function (e) { return !0 === e ? 1 : 0 }; function l(e, n) { var t; return function () { var a = this, i = arguments; clearTimeout(t), t = setTimeout((function () { return e.apply(a, i) }), n) } } var c = function (e) { return e instanceof Array ? e : [e] }; function s(e, n, t) { if (!
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
const loader = document.getElementById("loader");
|
|||
|
const content = document.getElementById("content");
|
|||
|
const gender = ['未知', '男', '女'];
|
|||
|
const wxid={{wxid}};
|
|||
|
const isChatroom = wxid.endsWith("@chatroom");
|
|||
|
const avatarPaths = {{avatarPaths}};
|
|||
|
const avatarUrls = {{avatarUrls}};
|
|||
|
const chatMessages = /*注意看这是分割线*/;
|
|||
|
var timelineData = {{timelineData}};
|
|||
|
var PageTimeline = {{PageTimeline}};
|
|||
|
var server_id_Page = {{server_id_Page}};
|
|||
|
var server_id_Idx = {{server_id_Idx}};
|
|||
|
const dateDataMap = {{dateDataMap}};
|
|||
|
const AllIndex = {{AllIndex}};
|
|||
|
const ImageIndex = {{ImageIndex}};
|
|||
|
const FileIndex = {{FileIndex}};
|
|||
|
const LinkIndex = {{LinkIndex}};
|
|||
|
const MusicIndex = {{MusicIndex}};
|
|||
|
const TransferIndex = {{TransferIndex}};
|
|||
|
const MiniProgramIndex = {{MiniProgramIndex}};
|
|||
|
const VideoNumberIndex = {{VideoNumberIndex}};
|
|||
|
</script>
|
|||
|
<script type="text/javascript">
|
|||
|
window._AMapSecurityConfig = {
|
|||
|
serviceHost: "https://api.memotrace.cn/_AMapService",
|
|||
|
|
|||
|
};
|
|||
|
</script>
|
|||
|
<script type="text/javascript"
|
|||
|
src="https://webapi.amap.com/maps?v=2.0&key=b999f45a5b06a184518f744681048368"></script>
|
|||
|
<script>
|
|||
|
// const markerContent = `<div class="custom-content-marker">
|
|||
|
// <img src="./icon/location.png">`
|
|||
|
var MapID = {};
|
|||
|
</script>
|
|||
|
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.10.0/jquery.min.js"></script>
|
|||
|
<script>
|
|||
|
class MessageType {
|
|||
|
static Unknown = -1;
|
|||
|
static Text = "1";
|
|||
|
static Image = "3";
|
|||
|
static Audio = "34";
|
|||
|
static BusinessCard = "42";
|
|||
|
static Video = "43";
|
|||
|
static Emoji = "47";
|
|||
|
static Position = "48";
|
|||
|
static Voip = "50";
|
|||
|
static OpenIMBCard = "66";
|
|||
|
static System = "10000";
|
|||
|
static File = "25769803825"; // Use BigInt for large numbers
|
|||
|
static LinkMessage = 21474836529n;
|
|||
|
static LinkMessage2 = 292057776177n;
|
|||
|
static LinkMessage3 = 12884901937n;
|
|||
|
static LinkMessage4 = 4294967345n;
|
|||
|
static LinkMessage5 = 326417514545n;
|
|||
|
static LinkMessage6 = 17179869233n;
|
|||
|
static RedEnvelope = 8594229559345n;
|
|||
|
static Transfer = 8589934592049n;
|
|||
|
static Quote = 244813135921n;
|
|||
|
static MergedMessages = 81604378673n;
|
|||
|
static Applet = "141733920817";
|
|||
|
static Applet2 = 154618822705n;
|
|||
|
// static Applet3 = 17179869233n; // Uncomment if needed
|
|||
|
static WeChatVideo = "219043332145";
|
|||
|
static Music = "12884901937";
|
|||
|
static FavNote = 103079215153n;
|
|||
|
static Pat = 266287972401n;
|
|||
|
}
|
|||
|
|
|||
|
const menuToggle = document.getElementById("menu-toggle");
|
|||
|
const navbarNav = document.getElementById("topnavbar-nav");
|
|||
|
|
|||
|
menuToggle.addEventListener("click", () => {
|
|||
|
navbarNav.classList.toggle("show");
|
|||
|
});
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
function renderPage(page) {
|
|||
|
if (ChatMsgIndex.length !== 0) {
|
|||
|
const currentYear = PageTimeline[page]['year'];
|
|||
|
const currentMonth = PageTimeline[page]['month'];
|
|||
|
const monthName = currentMonth < 10 ? '0' + currentMonth : currentMonth;
|
|||
|
// console.log(monthName+'月');
|
|||
|
toggleMonthsDisplay(currentYear);
|
|||
|
const yearIdElement = document.getElementById(currentYear + 'year');
|
|||
|
const monthElements = yearIdElement.querySelectorAll('.timeline-item-month');
|
|||
|
let targetMonthElement = null;
|
|||
|
monthElements.forEach(monthElement => {
|
|||
|
const monthText = monthElement.querySelector('.timeline-right').textContent; // 获取月份文本内容
|
|||
|
if (monthText.includes(String(monthName) + '月')) { // 检查是否包含指定的月份
|
|||
|
targetMonthElement = monthElement; // 如果包含,则将该月份元素赋值给targetMonthElement
|
|||
|
}
|
|||
|
});
|
|||
|
// console.log(targetMonthElement);
|
|||
|
toggleCurrentMonthDisplay(targetMonthElement);
|
|||
|
}
|
|||
|
|
|||
|
const totalPages = Math.ceil(ChatMsgIndex.length / itemsPerPage);
|
|||
|
// document.getElementById('curPage').innerHTML = currentPage;
|
|||
|
document.getElementById('gotoPage').value = currentPage;
|
|||
|
document.getElementById('maxPage').innerHTML = totalPages;
|
|||
|
const container = document.getElementById('chat-container');
|
|||
|
const OnePageMessage = document.createElement('div');
|
|||
|
|
|||
|
// 计算当前页应该显示的元素范围
|
|||
|
const startIndex = (page - 1) * itemsPerPage;
|
|||
|
const endIndex = startIndex + itemsPerPage;
|
|||
|
|
|||
|
var newMapID = {};
|
|||
|
|
|||
|
function checkImageExists(url, callback) {
|
|||
|
var img = new Image();
|
|||
|
img.onload = function () {
|
|||
|
callback(true); // 图片存在
|
|||
|
};
|
|||
|
img.onerror = function () {
|
|||
|
callback(false); // 图片不存在
|
|||
|
};
|
|||
|
img.src = url;
|
|||
|
}
|
|||
|
|
|||
|
// 工具类函数
|
|||
|
function replaceEmoji(text) {
|
|||
|
if (!text) {
|
|||
|
return '';
|
|||
|
}
|
|||
|
|
|||
|
// 定义替换规则
|
|||
|
var emoji_set = new Set(['右哼哼', '礼物', '傲慢', '打脸', '流泪', '失望', '猪头', '福', '抱拳', '憨笑', '拳头', '抓狂',
|
|||
|
'闭嘴', '白眼', '嘘', '害羞', '无语', '捂脸', '弱', '骷髅', '耶', '吐舌', '爱心', '吃瓜', '發', '囧',
|
|||
|
'再见', '睡', '恐惧', '撇嘴', '尴尬', '烟花', '咖啡', '裂开', '勾引', '亲亲', '阴险', '偷笑', '得意',
|
|||
|
'凋谢', '爆竹', '玫瑰', '翻白眼', 'Emm', '旺柴', '便便', '蛋糕', '天啊', '让我看看', '嘿哈', '难过',
|
|||
|
'发呆', '難受', '庆祝', '好的', '发抖', '心碎', '抠鼻', '机智', '炸弹', '擦汗', '疑问', '脸红',
|
|||
|
'呲牙', '委屈', '汗', '苦涩', '破涕为笑', '胜利', '菜刀', '惊恐', '太阳', 'OK', '悠闲', '合十',
|
|||
|
'快哭了', '鼓掌', '拥抱', '加油加油', '转圈', 'Whimper', '坏笑', '笑脸', '生病', '吐', '调皮',
|
|||
|
'叹气', '敲打', '可怜', '发怒', '阴脸', '晕', '衰', '跳跳', '困', '社会社会', '色', '红包', '鄙视',
|
|||
|
'愉快', '加油', '皱眉', '啤酒', '咒骂', '哇', '惊讶', '握手', '大哭', '666', '奸笑', '月亮', '强',
|
|||
|
'微笑', '嘴唇']);
|
|||
|
|
|||
|
var emoji_mapping = {
|
|||
|
"愉快": "愉快",
|
|||
|
"白眼": "白眼",
|
|||
|
"傲慢": "傲慢",
|
|||
|
"困": "困",
|
|||
|
"惊恐": "惊恐",
|
|||
|
"憨笑": "憨笑",
|
|||
|
"悠闲": "悠闲",
|
|||
|
"咒骂": "咒骂",
|
|||
|
"疑问": "疑问",
|
|||
|
"嘘": "嘘",
|
|||
|
"晕": "晕",
|
|||
|
"衰": "衰",
|
|||
|
"骷髅": "骷髅",
|
|||
|
"敲打": "敲打",
|
|||
|
"Bye": "再见",
|
|||
|
"擦汗": "擦汗",
|
|||
|
"抠鼻": "抠鼻",
|
|||
|
"鼓掌": "鼓掌",
|
|||
|
"坏笑": "坏笑",
|
|||
|
"右哼哼": "右哼哼",
|
|||
|
"鄙视": "鄙视",
|
|||
|
"委屈": "委屈",
|
|||
|
"快哭了": "快哭了",
|
|||
|
"阴险": "阴险",
|
|||
|
"亲亲": "亲亲",
|
|||
|
"可怜": "可怜",
|
|||
|
"Happy": "笑脸",
|
|||
|
"Sick": "生病",
|
|||
|
"Flushed": "脸红",
|
|||
|
"Lol": "破涕为笑",
|
|||
|
"Terror": "恐惧",
|
|||
|
"LetDown": "失望",
|
|||
|
"Duh": "无语",
|
|||
|
"Hey": "嘿哈",
|
|||
|
"Facepalm": "捂脸",
|
|||
|
"Smirk": "奸笑",
|
|||
|
"Smart": "机智",
|
|||
|
"Concerned": "皱眉",
|
|||
|
"Yeah!": "耶",
|
|||
|
"Onlooker": "吃瓜",
|
|||
|
"GoForIt": "加油",
|
|||
|
"Sweats": "汗",
|
|||
|
"OMG": "天啊",
|
|||
|
"Emm": "Emm",
|
|||
|
"Respect": "社会社会",
|
|||
|
"Doge": "旺柴",
|
|||
|
"NoProb": "好的",
|
|||
|
"MyBad": "打脸",
|
|||
|
"Wow": "哇",
|
|||
|
"Boring": "翻白眼",
|
|||
|
"666": "666",
|
|||
|
"LetMeSee": "让我看看",
|
|||
|
"Sigh": "叹气",
|
|||
|
"Hurt": "苦涩",
|
|||
|
"Broken": "裂开",
|
|||
|
"嘴唇": "嘴唇",
|
|||
|
"爱心": "爱心",
|
|||
|
"心碎": "心碎",
|
|||
|
"拥抱": "拥抱",
|
|||
|
"强": "强",
|
|||
|
"弱": "弱",
|
|||
|
"握手": "握手",
|
|||
|
"胜利": "胜利",
|
|||
|
"Salute": "抱拳",
|
|||
|
"勾引": "勾引",
|
|||
|
"拳头": "拳头",
|
|||
|
"OK": "OK",
|
|||
|
"Worship": "合十",
|
|||
|
"啤酒": "啤酒",
|
|||
|
"咖啡": "咖啡",
|
|||
|
"蛋糕": "蛋糕",
|
|||
|
"玫瑰": "玫瑰",
|
|||
|
"凋谢": "凋谢",
|
|||
|
"菜刀": "菜刀",
|
|||
|
"炸弹": "炸弹",
|
|||
|
"便便": "便便",
|
|||
|
"月亮": "月亮",
|
|||
|
"太阳": "太阳",
|
|||
|
"Party": "庆祝",
|
|||
|
"gift": "礼物",
|
|||
|
"Packet": "红包",
|
|||
|
"Rich": "發",
|
|||
|
"Blessing": "福",
|
|||
|
"Fireworks": "烟花",
|
|||
|
"Firecracker": "爆竹",
|
|||
|
"猪头": "猪头",
|
|||
|
"跳跳": "跳跳",
|
|||
|
"发抖": "发抖",
|
|||
|
"转圈": "转圈",
|
|||
|
"微笑": "微笑",
|
|||
|
"撇嘴": "撇嘴",
|
|||
|
"色": "色",
|
|||
|
"发呆": "发呆",
|
|||
|
"得意": "得意",
|
|||
|
"流泪": "流泪",
|
|||
|
"害羞": "害羞",
|
|||
|
"闭嘴": "闭嘴",
|
|||
|
"睡": "睡",
|
|||
|
"大哭": "大哭",
|
|||
|
"尴尬": "尴尬",
|
|||
|
"发怒": "发怒",
|
|||
|
"调皮": "调皮",
|
|||
|
"呲牙": "呲牙",
|
|||
|
"惊讶": "惊讶",
|
|||
|
"难过": "难过",
|
|||
|
"Blush": "脸红",
|
|||
|
"抓狂": "抓狂",
|
|||
|
"吐": "吐",
|
|||
|
"偷笑": "偷笑"
|
|||
|
}
|
|||
|
|
|||
|
// 使用正则表达式匹配形如 [xxx] 的字符串
|
|||
|
return text.replace(/\[([^\]]+)\]/g, function(match, p1) {
|
|||
|
// 获取匹配的内容
|
|||
|
var emojiName = p1.trim();
|
|||
|
if (emojiName in emoji_mapping) {
|
|||
|
emojiName = emoji_mapping[emojiName];
|
|||
|
}
|
|||
|
if (emoji_set.has(emojiName)){
|
|||
|
// 如果在 emojiMap 中找到了对应的图片路径,则替换
|
|||
|
return `<img src="./emoji/${emojiName}.png" id="${emojiName}" class="emoji_img">`;
|
|||
|
}
|
|||
|
// 如果没有找到对应的图片路径,则返回原始内容
|
|||
|
return match;
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function timestampToTime(timestamp) {
|
|||
|
let date = new Date(timestamp * 1000);
|
|||
|
let year = date.getFullYear() + '-';
|
|||
|
let month = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
|||
|
let day = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
|
|||
|
let hour = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
|
|||
|
let minute = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
|
|||
|
let second = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
|
|||
|
return year + month + day + hour + minute + second;
|
|||
|
}
|
|||
|
|
|||
|
// 生成各类标签的函数
|
|||
|
function add5MinTimeTag(message) {
|
|||
|
if (message.timestamp - lastTimeStamp > 300) {
|
|||
|
const newTimeMessage = document.createElement('div');
|
|||
|
newTimeMessage.className = "item item-center";
|
|||
|
newTimeMessage.innerHTML = `<span>${timestampToTime(message.timestamp)}</span>`;
|
|||
|
// chatContainer.appendChild(newTimeMessage);
|
|||
|
OnePageMessage.appendChild(newTimeMessage);
|
|||
|
lastTimeStamp = message.timestamp;
|
|||
|
// console.log("增加时间元素", timestampToTime(message.timestamp));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function messageBubble(message, side) {
|
|||
|
const messageBubbleTag = document.createElement('div');
|
|||
|
messageBubbleTag.className = `bubble bubble-${side}`;
|
|||
|
messageBubbleTag.innerHTML = replaceEmoji(message.text);
|
|||
|
return messageBubbleTag;
|
|||
|
}
|
|||
|
|
|||
|
function displayNameBox(message) {
|
|||
|
const displayName = document.createElement('div');
|
|||
|
displayName.className = "displayname";
|
|||
|
displayName.innerHTML = message.display_name;
|
|||
|
return displayName;
|
|||
|
}
|
|||
|
// function checkImageExists(url, callback) {
|
|||
|
// var img = new Image();
|
|||
|
// img.onload = function () {
|
|||
|
// callback(true); // 图片存在
|
|||
|
// };
|
|||
|
// img.onerror = function () {
|
|||
|
// callback(false); // 图片不存在
|
|||
|
// };
|
|||
|
// img.src = url;
|
|||
|
// }
|
|||
|
|
|||
|
function avatarBox(message) {
|
|||
|
const avatarTag = document.createElement('div');
|
|||
|
avatarTag.className = "avatar";
|
|||
|
// var avatar_path = '';
|
|||
|
// // 使用示例
|
|||
|
// var imageUrl = avatarPaths[message.avatar_path];
|
|||
|
var imageUrl = message.avatar_src;
|
|||
|
// checkImageExists(imageUrl, function (exists) {
|
|||
|
// if (exists) {
|
|||
|
// console.log('图片存在');
|
|||
|
// } else {
|
|||
|
// imageUrl = avatarUrls[message.avatar_path]
|
|||
|
// }
|
|||
|
// avatarTag.innerHTML = `<img src="${imageUrl}" loading="lazy" />`
|
|||
|
// });
|
|||
|
avatarTag.innerHTML = `<img src="${imageUrl}" loading="lazy" />`
|
|||
|
return avatarTag;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// function messageImgBox(message) {
|
|||
|
// const messageImgTag = document.createElement('div');
|
|||
|
// if(message.type == 47) {
|
|||
|
// messageImgTag.className = `emoji-image`;
|
|||
|
// }else{
|
|||
|
// messageImgTag.className = `chat-image`;
|
|||
|
// }
|
|||
|
// messageImgTag.innerHTML = `<img src="${message.path}" onclick="showModal(this)" loading="lazy"/>`;
|
|||
|
// return messageImgTag;
|
|||
|
// }
|
|||
|
function messageImgBox(message) {
|
|||
|
const messageImgTag = document.createElement('div');
|
|||
|
|
|||
|
if (message.type == 47) {
|
|||
|
messageImgTag.className = 'emoji-image';
|
|||
|
messageImgTag.innerHTML = `<img src="${message.path}" onclick="showModal(this)" loading="lazy"/>`;
|
|||
|
return messageImgTag;
|
|||
|
} else {
|
|||
|
messageImgTag.className = 'chat-image';
|
|||
|
}
|
|||
|
|
|||
|
const basePath = message.path; // 图片的原始路径(没有后缀名)
|
|||
|
console.log('basePath:', basePath);
|
|||
|
const extensions = ['.jpg','.png', '.jpeg', '.gif', '.bmp']; // 常见的图片后缀
|
|||
|
let imgLoaded = false;
|
|||
|
|
|||
|
// 尝试不同的后缀名
|
|||
|
extensions.forEach(extension => {
|
|||
|
const img = new Image();
|
|||
|
img.src = basePath + extension;
|
|||
|
|
|||
|
img.onload = function() {
|
|||
|
messageImgTag.innerHTML = `<img src="${img.src}" onclick="showModal(this)" loading="lazy"/>`;
|
|||
|
imgLoaded = true;
|
|||
|
};
|
|||
|
|
|||
|
img.onerror = function() {
|
|||
|
// 图片加载失败,继续尝试下一个后缀
|
|||
|
if (!imgLoaded) {
|
|||
|
// 这里可以选择在所有后缀都尝试完后进行处理
|
|||
|
}
|
|||
|
};
|
|||
|
});
|
|||
|
|
|||
|
return messageImgTag;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function messageVideoBox(message) {
|
|||
|
const messageVideoTag = document.createElement('div');
|
|||
|
messageVideoTag.className = `chat-video`;
|
|||
|
messageVideoTag.innerHTML = `<video src="${message.path}" controls />`;
|
|||
|
return messageVideoTag;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function messageElementReferText(message, side) {
|
|||
|
const messageElementRefer = document.createElement('div');
|
|||
|
messageElementRefer.className = `chat-refer chat-refer-${side}`;
|
|||
|
messageElementRefer.innerHTML = replaceEmoji(message.quote_text);
|
|||
|
messageElementRefer.addEventListener('contextmenu', function () {
|
|||
|
// 阻止默认的右键菜单
|
|||
|
event.preventDefault();
|
|||
|
// 创建右键菜单
|
|||
|
var contextMenu = document.createElement('div');
|
|||
|
contextMenu.className = 'custom-menu';
|
|||
|
contextMenu.style.position = 'absolute';
|
|||
|
contextMenu.style.left = event.pageX + 'px';
|
|||
|
contextMenu.style.top = event.pageY + 'px';
|
|||
|
|
|||
|
// 添加菜单项
|
|||
|
var menuItem = document.createElement('div');
|
|||
|
menuItem.className = 'custom-menu-item';
|
|||
|
menuItem.textContent = '定位到原文位置';
|
|||
|
menuItem.addEventListener('click', function () {
|
|||
|
contextMenu.remove();
|
|||
|
referId = message.quote_server_id;
|
|||
|
lastPage = currentPage;
|
|||
|
currentPage = server_id_Page[String(referId)];
|
|||
|
|
|||
|
if (lastPage != currentPage) {
|
|||
|
reachedBottom = false;
|
|||
|
reachedTop = false;
|
|||
|
renderPage(currentPage);
|
|||
|
}
|
|||
|
var targetSection = document.getElementById(referId);
|
|||
|
targetSection.scrollIntoView({ behavior: 'smooth' });
|
|||
|
});
|
|||
|
contextMenu.appendChild(menuItem);
|
|||
|
|
|||
|
// 将右键菜单添加到页面上
|
|||
|
document.body.appendChild(contextMenu);
|
|||
|
|
|||
|
// 点击页面其他地方时隐藏菜单
|
|||
|
document.addEventListener('click', function (event) {
|
|||
|
if (!contextMenu.contains(event.target)) {
|
|||
|
contextMenu.remove();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
});
|
|||
|
return messageElementRefer;
|
|||
|
}
|
|||
|
|
|||
|
function messageVoiceToTextBubble(message, side) {
|
|||
|
const messageVoiceToTextTag = document.createElement('div');
|
|||
|
messageVoiceToTextTag.className = `bubble bubble-${side}`;
|
|||
|
messageVoiceToTextTag.innerHTML = message.voice_to_text;
|
|||
|
return messageVoiceToTextTag;
|
|||
|
}
|
|||
|
|
|||
|
function messageAudioBox(message) {
|
|||
|
const messageAudioTag = document.createElement('div');
|
|||
|
if (message.is_send) {
|
|||
|
messageAudioTag.className = `bubble-audio-right`;
|
|||
|
var messageAudioTagID = message.server_id + "_audio_box";
|
|||
|
messageAudioTag.id = messageAudioTagID;
|
|||
|
var audioID = message.server_id + "_audio";
|
|||
|
AudioTag = document.createElement('audio');
|
|||
|
AudioTag.id = audioID;
|
|||
|
AudioTag.innerHTML = `<source src="${message.path}" type="audio/mpeg">`;
|
|||
|
// 根据语音时长设置气泡宽度
|
|||
|
var duration = Math.ceil(message.duration / 1000);
|
|||
|
var bubblewidth = 40 + duration * 5;
|
|||
|
if (bubblewidth < 250) {
|
|||
|
messageAudioTag.style.width = `${bubblewidth}px`;
|
|||
|
} else {
|
|||
|
messageAudioTag.style.width = `250px`;
|
|||
|
}
|
|||
|
messageAudioTag.innerHTML = `''${duration}`;
|
|||
|
messageAudioTag.appendChild(AudioTag);
|
|||
|
|
|||
|
$(function () {
|
|||
|
messageAudioTag.addEventListener('click', function () {
|
|||
|
event.stopPropagation();//防止冒泡
|
|||
|
var AudioTag = messageAudioTag.querySelector('audio');
|
|||
|
AudioTag.addEventListener('error', function () {
|
|||
|
// 文件加载错误时执行的操作
|
|||
|
alert('音频文件加载错误,文件不存在或无法访问。');
|
|||
|
});
|
|||
|
if (AudioTag !== null) {
|
|||
|
if (AudioTag.paused) {
|
|||
|
AudioTag.play();
|
|||
|
if (AudioTag.networkState === HTMLMediaElement.NETWORK_NO_SOURCE) {
|
|||
|
alert('音频文件加载错误,文件不存在或无法访问!');
|
|||
|
return;
|
|||
|
}
|
|||
|
messageAudioTag.style.background = 'url(data:image/gif;base64,R0lGODlhZABkAPf/ACMjIwEBASIiIhAQECMjIyMjIwEBAQEBARsbGyAgIAYGBgoKCiMjIwAAABUVFQICAiEhIRcXFx0dHRISEg0NDQMDAwcHBwICAhkZGRQUFBcXFxISEg4ODggICAwMDAcHByIiIh4eHiEhIRwcHBAQEBsbGwQEBAICAhcXFw0NDQMDAwEBARkZGRYWFg4ODgwMDB8fHxQUFB0dHRISEhQUFBERER4eHhwcHBsbGwYGBgoKCgMDAwcHBxkZGQgICAcHBxoaGgQEBAMDAxgYGBAQECAgIAYGBgoKChUVFQ0NDRQUFA4ODggICAwMDB4eHg8PDwQEBA0NDQ4ODgsLCx8fHxQUFBMTEx4eHgUFBQkJCQgICAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJNAD/ACwAAAAAZABkAAcI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1iz8gxgpYLWgy0AhDDxlSAFAGhhYCn770ECtGgTWCg7AS5cCB20NnhrFy2ELFk79LUrYArWAYP7UrgaNrHdJ1YxOO47oKrkyXArU22MGXLVGpgBLLaaZXJhrAH49hWwQGvdvni/VoBgVy5bDnDVshUYduxugVy9/h5OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDiwQfT146ACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJNAD/ACwAAAAAZABkAAcI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTygzgwIJSiw2GAICQ5SnFDACyClhgNSKFrGAFeOjq0IIAsGg5kF0YIATat0/WJpzwti4FuQaxnK0LFsEDvAWl8s0q4S/ggRYGZ4Wg4DDBCIoB3HUs0MRevkAaUBZYI3Ljzf8kKI6gMICVCk9NRHaasAWAECaUclA8QuHXrDCwJHU9eEDCBwnQJmBtVPRg4gbpvoXQwWiDy8s1H2wQvC7VoqoHI0jYQbGAKUQTD+pukXBAZMlDsyi20vo8gLhBpyiukRCDewC+gcofTB+hfff5/aTeYOwhxFtk8AElHl/kIdRZZJMFlR1f2yE0IF/fERUAdGhBIJ1BAVT31lbFKYZcQcp12JxRB9YVoEEVQCDciUPNNlhtCdkIQG5JYeGZQq7B9pRxfJGWkGmoPfXgYLqBNiFmoAkk2GARUqZAZBA0udmUfBUGmgIcvgVEAKBZcV6Vhz3gVm9R/mMWX2q1+c8TI44lp0AOhAXenQJFNVVVfA4UQAsrBmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpPwAAIf8LTkVUU0NBUEUyLjADAQAAACH5BAk0AP8ALAAAAABkAGQABwj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzpsEGESjYVIkTAIAnO082aOHTZ42gJa0ULWqlAdKQFJYudeD0accOAqQujRDA6sYKMLRKneA1YwMMYpcCeVAW45O0RRGwbWsRCwS4AEJUoHsRLVwIWPhanIIXwALBFQOEwGsFcUUOeEd0TRjAgQXHBgOETSvgcsIGQwBAyIKZIGS4GRZmKCrgcOkGi9MmmIsw6lIBHkovwAs0oYWsWjlgDp0WxuSDiuH25lsBuNgBCicU1sn3tFgItA1icS5WrmAgcB0o/ySeVkL2sg+4S+3gGy8EBYgJpw1R9WAEvNQFr07bGKEJ9WrVx9cIcJGGUA14wYdYAAD6JMBxBkkAVwQKBWDFXjZZABcCCZmAl2cIERWCCTbZJlZqCFmn1QgKmQhDYDRJl5ZwIcIFHUIPJLBUAiDGdF9a7CEkYVo9FiTjUhAEGRN4aZF4UAMNiiYgQQ3oqNVoMg0p1pQDeZgWhwh1AJcAU8S0mVYCtJdWCwkNMB1Md4mVQEJZwNXfQUQVthxLcWoVQkLyiXUUQn4VdiOf8wEK16AHFYrXoSv1KRUMdNqZUJ68vXSmVHMipOGaCSGIH0xaasWlQF52VylnZcLEpFhOZv8WJQSn/hOAlVK1JtOPYikZIVxFEnRkUUnONKxUNOJpY0IVSMojTSZqheJBKkrFYkLWvVjTp6oihEWCCokY60wBjAlhQaVKRSFlFwZFYFoGHiRqWjAitp9YdxqUqlhAYBaon7X+Q55Y+fGVHly+FqSAe/Xy9apW4iU0sFbmIVYtkucRpECUPgFxrlfNLZuQUqMKNvFSxiX0QGzPObabcgr9JlaygsEG12wKvXVbbqVdvFS+BznAWqul3TpmsFSGhmVpA+mclmQVtpBw0Szjy7RE/4rl2tUPOXplw1wvZBdeeoXtkNNfZmz2TV5rtdbaC1WAa1pkwa0QVhN+bHdBPgMuQNXeDJH8c8CADzTUUowWvlBPPyn+EE4FOy755JRXbvnlmGeu+eacd+7556BjBAA7) no-repeat center right 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#9eea6a';
|
|||
|
var checkAudioInterval = setInterval(function () {
|
|||
|
if (AudioTag.paused) {
|
|||
|
messageAudioTag.style.background = 'url(data:image/png;base64,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) no-repeat center right 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#9eea6a';
|
|||
|
clearInterval(checkAudioInterval);
|
|||
|
}
|
|||
|
}, 100);
|
|||
|
}
|
|||
|
else {
|
|||
|
messageAudioTag.style.background = 'url(data:image/png;base64,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) no-repeat center right 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#9eea6a';
|
|||
|
AudioTag.pause();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
});
|
|||
|
|
|||
|
} else {
|
|||
|
messageAudioTag.className = `bubble-audio-left`;
|
|||
|
var messageAudioTagID = message.server_id + "_audio_box";
|
|||
|
messageAudioTag.id = messageAudioTagID;
|
|||
|
var audioID = message.server_id + "_audio";
|
|||
|
AudioTag = document.createElement('audio');
|
|||
|
AudioTag.id = audioID;
|
|||
|
AudioTag.innerHTML = `<source src="${message.path}" type="audio/mpeg">`;
|
|||
|
var duration = Math.ceil(message.duration / 1000);
|
|||
|
var bubblewidth = 40 + duration * 5;
|
|||
|
if (bubblewidth < 250) {
|
|||
|
messageAudioTag.style.width = `${bubblewidth}px`;
|
|||
|
} else {
|
|||
|
messageAudioTag.style.width = `250px`;
|
|||
|
}
|
|||
|
messageAudioTag.innerHTML = `${duration}''`;
|
|||
|
messageAudioTag.appendChild(AudioTag);
|
|||
|
|
|||
|
$(function () {
|
|||
|
//播放器控制
|
|||
|
messageAudioTag.addEventListener('click', function () {
|
|||
|
event.stopPropagation();//防止冒泡
|
|||
|
var AudioTag = messageAudioTag.querySelector('audio');
|
|||
|
if (AudioTag !== null) {
|
|||
|
if (AudioTag.paused) {
|
|||
|
AudioTag.play();
|
|||
|
if (AudioTag.networkState === HTMLMediaElement.NETWORK_NO_SOURCE) {
|
|||
|
alert('音频文件加载错误,文件不存在或无法访问!');
|
|||
|
return;
|
|||
|
}
|
|||
|
messageAudioTag.style.background = 'url(data:image/gif;base64,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) no-repeat center left 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#fff';
|
|||
|
var checkAudioInterval = setInterval(function () {
|
|||
|
if (AudioTag.paused) {
|
|||
|
messageAudioTag.style.background = 'url(data:image/png;base64,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) no-repeat center left 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#fff';
|
|||
|
clearInterval(checkAudioInterval);
|
|||
|
}
|
|||
|
}, 100);
|
|||
|
}
|
|||
|
else {
|
|||
|
messageAudioTag.style.background = 'url(data:image/png;base64,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) no-repeat center left 10px';
|
|||
|
messageAudioTag.style.backgroundSize = '20px';
|
|||
|
messageAudioTag.style.backgroundColor = '#fff';
|
|||
|
AudioTag.pause();
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
return messageAudioTag;
|
|||
|
}
|
|||
|
|
|||
|
function messageCard(message) {
|
|||
|
const messageTag = document.createElement('div');
|
|||
|
messageTag.className = `card`;
|
|||
|
messageTag.innerHTML = `<a href="${message.url}" target="_blank">
|
|||
|
<div class="card-content">
|
|||
|
<div title="${message.title}" class="card-title">${message.title}</div>
|
|||
|
${message.description ? `
|
|||
|
<div class="description">
|
|||
|
<p title="${message.description}">${message.description}</p>
|
|||
|
<img loading="lazy" class="thumbnail" src="${message.cover_url}" alt="Thumbnail" onerror="this.style.display='none';">
|
|||
|
</div>` : ''}
|
|||
|
</div>
|
|||
|
<div class="link-info">
|
|||
|
${message.app_logo ? `<img loading="lazy" class="app-logo" src="${message.app_logo}" alt="App Logo" onerror="this.style.display='none';">` : ''}
|
|||
|
${message.app_name ? `<span class="app-name">${message.app_name}</span>` : `<span class="app-name">app-name</span>`}
|
|||
|
</div>
|
|||
|
</a>`;
|
|||
|
|
|||
|
return messageTag;
|
|||
|
}
|
|||
|
|
|||
|
function getFileSize(byteSize, format = 'MB') {
|
|||
|
// 定义转换因子
|
|||
|
const units = {
|
|||
|
'B': 1,
|
|||
|
'KB': 1024,
|
|||
|
'MB': 1024 ** 2,
|
|||
|
'GB': 1024 ** 3,
|
|||
|
};
|
|||
|
|
|||
|
// 检查格式是否支持
|
|||
|
if (units.hasOwnProperty(format)) {
|
|||
|
const sizeInFormat = byteSize / units[format];
|
|||
|
return `${sizeInFormat.toFixed(2)} ${format}`;
|
|||
|
} else {
|
|||
|
throw new Error(`Unsupported format: ${format}`);
|
|||
|
}
|
|||
|
}
|
|||
|
function getFileExtension(file_type) {
|
|||
|
icon_files = {
|
|||
|
'doc': 'DOCX',
|
|||
|
'docx': 'DOCX',
|
|||
|
'xls': 'XLSX',
|
|||
|
'xlsx': 'XLSX',
|
|||
|
'csv': 'CSV',
|
|||
|
'txt': 'TXT',
|
|||
|
'zip': 'ZIP',
|
|||
|
'7z': 'ZIP',
|
|||
|
'rar': 'ZIP',
|
|||
|
'ppt':'PPT',
|
|||
|
'pptx':'PPT',
|
|||
|
'pdf': 'PDF'
|
|||
|
}
|
|||
|
return icon_files.hasOwnProperty(file_type) ? icon_files[file_type] : 'Default';
|
|||
|
// 如果没有匹配到后缀名,返回 'Default'
|
|||
|
return 'Default';
|
|||
|
}
|
|||
|
function messageFileBox(message) {
|
|||
|
const messageFileTag = document.createElement('div');
|
|||
|
messageFileTag.className = `chat-file`;
|
|||
|
messageFileTag.onclick = function (event) {
|
|||
|
if (message.path !== '') {
|
|||
|
window.open(message.path, '_blank');
|
|||
|
} else {
|
|||
|
alert("文件可能丢失、过期或不存放在该主机上")
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
messageFileTag.innerHTML = `<div class="file-box">
|
|||
|
<div class="file-info flex1">
|
|||
|
<div class="file-title" title="${message.file_name}">${message.file_name}</div>
|
|||
|
<div class="file-size">${getFileSize(message.file_size)}</div>
|
|||
|
</div>
|
|||
|
<div class="file-img flex2">
|
|||
|
<img src="${FileIcons[getFileExtension(message.file_type)]}"/>
|
|||
|
</div>
|
|||
|
</div>` +
|
|||
|
(message.app_name ? `<div class="app-info"><p>${message.app_name}</p></div>` : "");
|
|||
|
return messageFileTag;
|
|||
|
}
|
|||
|
function messageVideoAudioCall(message, side) {
|
|||
|
const message_call_box = document.createElement('div');
|
|||
|
message_call_box.className = `bubble bubble-${side} call`;
|
|||
|
message_call_box.setAttribute("calltype", message.invite_type)
|
|||
|
message_call_box.innerHTML = `<i></i><span>${message.display_content}<span>`;
|
|||
|
return message_call_box;
|
|||
|
}
|
|||
|
function messageMusicAudioBox(message) {
|
|||
|
const messageMusicAudioTag = document.createElement('div');
|
|||
|
messageMusicAudioTag.className = `chat-music-audio`;
|
|||
|
messageMusicAudioTag.dataset.link = message.url;
|
|||
|
messageMusicAudioTag.onclick = function (event) {
|
|||
|
if (!event.target.classList.contains('play-button')) {
|
|||
|
window.open(message.url, '_blank');
|
|||
|
}
|
|||
|
}
|
|||
|
if (message.title.length >= 12) {
|
|||
|
message.title = message.title.slice(0, 12) + '...'
|
|||
|
}
|
|||
|
if (message.description.length >= 10) {
|
|||
|
message.description = message.description.slice(0, 10) + '...'
|
|||
|
}
|
|||
|
messageMusicAudioTag.innerHTML = `<div class="player-box">
|
|||
|
<div>
|
|||
|
<img src="${message.cover_url}" alt="Cover Image" class="cover-image">
|
|||
|
</div>
|
|||
|
<div class="player-info">
|
|||
|
<div class="title">${message.title}</div>
|
|||
|
<div class="artist">${message.description}</div>
|
|||
|
</div>
|
|||
|
<div class="player-controls">
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="player-original">
|
|||
|
<svg class="player-original-img" t="1727442389694" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4302" width="64" height="64"><path d="M35.84 529.92c0 263.68 215.04 478.72 478.72 478.72 263.68 0 478.72-215.04 478.72-478.72C993.28 266.24 780.8 51.2 514.56 51.2 250.88 51.2 35.84 266.24 35.84 529.92z" fill="#F8C913" p-id="4303"></path><path d="M660.48 10.24c-17.92 20.48-56.32 38.4-107.52 51.2-87.04 20.48-104.96 25.6-130.56 40.96-15.36 7.68-33.28 20.48-43.52 30.72-20.48 17.92-35.84 51.2-30.72 61.44 2.56 5.12 51.2 74.24 110.08 158.72 58.88 81.92 115.2 163.84 128 181.76 12.8 17.92 20.48 33.28 20.48 33.28 0 2.56-10.24 0-20.48-2.56-40.96-12.8-112.64 0-163.84 25.6-38.4 20.48-81.92 64-99.84 99.84-20.48 40.96-23.04 97.28-7.68 135.68 15.36 40.96 48.64 74.24 92.16 97.28 33.28 17.92 40.96 17.92 84.48 20.48 35.84 2.56 56.32 0 76.8-5.12 94.72-28.16 163.84-102.4 168.96-189.44 2.56-48.64-2.56-64-66.56-176.64-99.84-174.08-189.44-332.8-189.44-335.36 0 0 17.92-2.56 40.96-5.12 66.56-2.56 120.32-35.84 148.48-89.6 12.8-23.04 12.8-30.72 12.8-79.36 0-30.72-2.56-58.88-5.12-61.44-2.56-7.68-5.12-5.12-17.92 7.68z" fill="#02B053" p-id="4304"></path></svg>
|
|||
|
<p>${message.app_name}</p>
|
|||
|
</div>
|
|||
|
`
|
|||
|
if (message.text != '') {
|
|||
|
var audio = document.createElement('audio');
|
|||
|
audio.src = message.text;
|
|||
|
messageMusicAudioTag.querySelector('.player-controls').append(audio)
|
|||
|
}
|
|||
|
;
|
|||
|
var playButton = document.createElement('button');
|
|||
|
playButton.className = 'play-button paused';
|
|||
|
playButton.onclick = function (event) {
|
|||
|
event.stopPropagation(); // 阻止点击播放按钮时触发父级的点击事件
|
|||
|
toggleAudio(event.target);
|
|||
|
};
|
|||
|
if (message.is_send) {
|
|||
|
messageMusicAudioTag.querySelector('.player-controls').append(playButton)
|
|||
|
} else {
|
|||
|
messageMusicAudioTag.querySelector('.player-controls').prepend(playButton)
|
|||
|
}
|
|||
|
return messageMusicAudioTag;
|
|||
|
}
|
|||
|
function messageTransfer(message) {
|
|||
|
const transfer_box = document.createElement("div");
|
|||
|
transfer_box.className = "transfer-box";
|
|||
|
transfer_box.setAttribute("issend", message.is_send);
|
|||
|
transfer_box.setAttribute("paysubtype", message.pay_subtype);
|
|||
|
transfer_box.innerHTML = `<div class="transfer">
|
|||
|
<div class="trans-content"><i></i>
|
|||
|
<div class="transfer-texts"><span>${message.fee_desc}</span><font>${message.text}</font></div>
|
|||
|
</div>
|
|||
|
<div class="trans-bottom"><span>聊天转账</span></div>
|
|||
|
</div>`;
|
|||
|
return transfer_box;
|
|||
|
}
|
|||
|
function personalCard(message) {
|
|||
|
const personal_card = document.createElement("div");
|
|||
|
personal_card.className = "personal-card";
|
|||
|
const contner = document.createElement("div");
|
|||
|
contner.className = "contner";
|
|||
|
contner.innerHTML = `<img src="${message.small_head_url}" alt="headimg">`
|
|||
|
const contner_text = document.createElement("div");
|
|||
|
contner_text.className = "text";
|
|||
|
if (message.sex == '男') {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1704295160809" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4268" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M922.344176 152.209186v-0.050575c0-0.765851-0.0867-1.517251-0.130051-2.283101-0.036125-0.67915-0.04335-1.365526-0.108375-2.037452-0.0867-0.794751-0.2312-1.553376-0.36125-2.333676-0.07225-0.455175-0.122825-0.917576-0.209525-1.379976l-0.04335-0.296226-0.050575-0.281775c-0.15895-0.794751-0.397375-1.553376-0.599676-2.333677-0.15895-0.6069-0.289-1.228251-0.469625-1.820701-0.2601-0.816426-0.585225-1.618401-0.888676-2.420377l-0.27455-0.758625-0.166175-0.455176-0.13005-0.325125c-0.354025-0.830876-0.758626-1.625626-1.163226-2.427602-0.223975-0.455175-0.41905-0.917576-0.6647-1.358301-0.4335-0.801976-0.924801-1.553376-1.401651-2.319226-0.1445-0.223975-0.267325-0.4624-0.411826-0.671926-0.0867-0.13005-0.151725-0.267325-0.238425-0.397375l-0.1156-0.1734c-0.50575-0.751401-1.062076-1.445001-1.611176-2.153052-0.30345-0.39015-0.578-0.801976-0.888676-1.184901-0.556325-0.6647-1.163226-1.293276-1.755676-1.929076-0.354025-0.382925-0.67915-0.780301-1.040401-1.141551l-0.065025-0.065025-0.01445-0.021675-0.07225-0.0578c-0.527425-0.527425-1.098201-1.004276-1.668976-1.510026-0.426275-0.3757-0.823651-0.780301-1.271601-1.148776-0.599675-0.4913-1.249926-0.932026-1.878501-1.401651-0.484075-0.36125-0.953701-0.744176-1.452226-1.083751a5.086404 5.086404 0 0 1-0.332351-0.2023l-0.53465-0.310675a26.70362 26.70362 0 0 0-1.141551-0.693601c-0.5202-0.3179-1.025951-0.657475-1.567826-0.9537-0.67915-0.368475-1.394426-0.671925-2.095252-1.004276-0.56355-0.267325-1.112651-0.570775-1.690651-0.809201-0.151725-0.07225-0.325125-0.122825-0.4913-0.180625-0.18785-0.079475-0.39015-0.137275-0.578001-0.223975l-1.018725-0.368475c-0.628575-0.223975-1.242701-0.484075-1.892952-0.693601-0.643025-0.18785-1.307726-0.325125-1.965201-0.4913-0.729726-0.195075-1.445001-0.41905-2.189177-0.563551-0.151725-0.036125-0.310675-0.036125-0.4624-0.065025l-0.426275-0.07225c-0.527425-0.10115-1.069301-0.166175-1.618402-0.238425-0.599675-0.093925-1.184901-0.21675-1.784576-0.281775a42.772031 42.772031 0 0 0-4.428928-0.223975h-0.151725l-343.079377 1.235476a43.350032 43.350032 0 0 0 0.151726 86.700063h0.151725l238.417949-0.867-156.76094 157.895265c-53.710689-42.179581-121.170564-67.467099-194.150342-67.467099l-4.219403 0.021675c-174.093728 2.290327-313.85423 145.786157-311.563903 319.858209 2.261427 171.817851 143.849855 311.592803 315.631581 311.592803l4.219403-0.0289c84.330262-1.105426 163.18397-34.983476 222.031638-95.39897 58.854893-60.415494 90.644916-140.136203 89.532265-224.452014-0.881451-67.82835-23.553517-130.613646-61.159669-181.831708l157.61349-158.747816V495.418613a43.350032 43.350032 0 0 0 86.700064 0V152.346462v-0.050575-0.086701zM577.198448 751.978551c-39.990404 41.06693-93.585494 64.085797-150.901461 64.844422l-2.890002 0.01445c-116.73441 0-212.957031-95.001595-214.495957-211.77213C207.357652 486.748607 302.352021 389.23271 420.668708 387.672109l2.890002-0.007225c116.741636 0 212.971481 94.99437 214.488732 211.779355 0.758626 57.301517-20.851365 111.474607-60.848994 152.534312z" fill="#1296db" p-id="4269"></path></svg></div>`
|
|||
|
} else if (message.sex == '女') {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1704295202245" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5558" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M870.69952 153.30048c-66.10688-66.10944-154.00448-102.51776-247.49696-102.51904-93.49248 0-181.3888 36.40832-247.49696 102.51648-66.11072 66.10944-102.51648 154.00576-102.51648 247.49952-0.00128 76.19968 24.19072 148.6784 68.93056 208.67584l-60.2048 60.20352L138.18496 525.94688c-19.99488-19.99488-52.41216-19.99488-72.40704 0-19.99488 19.9936-19.99488 52.41216 0 72.40704l143.72992 143.72992-55.75552 55.75552c-19.9936 19.9936-19.9936 52.41216 0 72.40576 19.99616 19.99616 52.41344 19.99488 72.40832 0l55.75424-55.75424 143.7312 143.72992c19.9936 19.99488 52.41088 19.99488 72.40576 0 19.99616-19.99488 19.99616-52.41216 0-72.40704L354.32192 742.08512l60.2048-60.20352c59.99872 44.73856 132.47616 68.93184 208.67584 68.93184 93.49248 0 181.38752-36.40832 247.49696-102.51776s102.51776-154.00576 102.51776-247.49824C973.21728 307.30496 936.80768 219.40736 870.69952 153.30048zM798.29248 575.88736c-46.76736 46.76736-108.94976 72.5248-175.08992 72.5248s-128.32128-25.75744-175.08992-72.5248c-46.76864-46.76736-72.5248-108.94976-72.5248-175.08992 0.00128-66.14272 25.75616-128.32384 72.5248-175.0912 46.76736-46.76864 108.94976-72.5248 175.08992-72.5248 66.14016 0.00128 128.32256 25.75744 175.08992 72.52608 46.76736 46.76736 72.5248 108.94848 72.5248 175.08864C870.81728 466.9376 845.0624 529.11872 798.29248 575.88736z" fill="#d81e06" p-id="5559"></path></svg></div>`
|
|||
|
} else {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}</div>`
|
|||
|
}
|
|||
|
contner_text.innerHTML += `<div class="other">微信号: ${message.alias}</div>
|
|||
|
<div class="other">地区: ${message.province}${message.city}</div>`
|
|||
|
contner.appendChild(contner_text);
|
|||
|
personal_card.appendChild(contner);
|
|||
|
const card_bottom = document.createElement("div");
|
|||
|
card_bottom.className = "bottom";
|
|||
|
if (message.username.includes("gh_")) {
|
|||
|
card_bottom.innerHTML = `<div class="text">公众号名片</div>`
|
|||
|
} else {
|
|||
|
card_bottom.innerHTML = `<div class="text">个人名片</div>`
|
|||
|
}
|
|||
|
personal_card.appendChild(card_bottom);
|
|||
|
return personal_card;
|
|||
|
}
|
|||
|
function openIMCard(message) {
|
|||
|
const OpenIM_card = document.createElement("div");
|
|||
|
OpenIM_card.className = "OpenIM-card";
|
|||
|
const contner = document.createElement("div");
|
|||
|
contner.className = "contner";
|
|||
|
contner.innerHTML = `<img src="${message.smallheadimgurl}" alt="headimg">`
|
|||
|
const contner_text = document.createElement("div");
|
|||
|
contner_text.className = "text";
|
|||
|
if (message.sex == '男') {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1704295160809" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4268" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M922.344176 152.209186v-0.050575c0-0.765851-0.0867-1.517251-0.130051-2.283101-0.036125-0.67915-0.04335-1.365526-0.108375-2.037452-0.0867-0.794751-0.2312-1.553376-0.36125-2.333676-0.07225-0.455175-0.122825-0.917576-0.209525-1.379976l-0.04335-0.296226-0.050575-0.281775c-0.15895-0.794751-0.397375-1.553376-0.599676-2.333677-0.15895-0.6069-0.289-1.228251-0.469625-1.820701-0.2601-0.816426-0.585225-1.618401-0.888676-2.420377l-0.27455-0.758625-0.166175-0.455176-0.13005-0.325125c-0.354025-0.830876-0.758626-1.625626-1.163226-2.427602-0.223975-0.455175-0.41905-0.917576-0.6647-1.358301-0.4335-0.801976-0.924801-1.553376-1.401651-2.319226-0.1445-0.223975-0.267325-0.4624-0.411826-0.671926-0.0867-0.13005-0.151725-0.267325-0.238425-0.397375l-0.1156-0.1734c-0.50575-0.751401-1.062076-1.445001-1.611176-2.153052-0.30345-0.39015-0.578-0.801976-0.888676-1.184901-0.556325-0.6647-1.163226-1.293276-1.755676-1.929076-0.354025-0.382925-0.67915-0.780301-1.040401-1.141551l-0.065025-0.065025-0.01445-0.021675-0.07225-0.0578c-0.527425-0.527425-1.098201-1.004276-1.668976-1.510026-0.426275-0.3757-0.823651-0.780301-1.271601-1.148776-0.599675-0.4913-1.249926-0.932026-1.878501-1.401651-0.484075-0.36125-0.953701-0.744176-1.452226-1.083751a5.086404 5.086404 0 0 1-0.332351-0.2023l-0.53465-0.310675a26.70362 26.70362 0 0 0-1.141551-0.693601c-0.5202-0.3179-1.025951-0.657475-1.567826-0.9537-0.67915-0.368475-1.394426-0.671925-2.095252-1.004276-0.56355-0.267325-1.112651-0.570775-1.690651-0.809201-0.151725-0.07225-0.325125-0.122825-0.4913-0.180625-0.18785-0.079475-0.39015-0.137275-0.578001-0.223975l-1.018725-0.368475c-0.628575-0.223975-1.242701-0.484075-1.892952-0.693601-0.643025-0.18785-1.307726-0.325125-1.965201-0.4913-0.729726-0.195075-1.445001-0.41905-2.189177-0.563551-0.151725-0.036125-0.310675-0.036125-0.4624-0.065025l-0.426275-0.07225c-0.527425-0.10115-1.069301-0.166175-1.618402-0.238425-0.599675-0.093925-1.184901-0.21675-1.784576-0.281775a42.772031 42.772031 0 0 0-4.428928-0.223975h-0.151725l-343.079377 1.235476a43.350032 43.350032 0 0 0 0.151726 86.700063h0.151725l238.417949-0.867-156.76094 157.895265c-53.710689-42.179581-121.170564-67.467099-194.150342-67.467099l-4.219403 0.021675c-174.093728 2.290327-313.85423 145.786157-311.563903 319.858209 2.261427 171.817851 143.849855 311.592803 315.631581 311.592803l4.219403-0.0289c84.330262-1.105426 163.18397-34.983476 222.031638-95.39897 58.854893-60.415494 90.644916-140.136203 89.532265-224.452014-0.881451-67.82835-23.553517-130.613646-61.159669-181.831708l157.61349-158.747816V495.418613a43.350032 43.350032 0 0 0 86.700064 0V152.346462v-0.050575-0.086701zM577.198448 751.978551c-39.990404 41.06693-93.585494 64.085797-150.901461 64.844422l-2.890002 0.01445c-116.73441 0-212.957031-95.001595-214.495957-211.77213C207.357652 486.748607 302.352021 389.23271 420.668708 387.672109l2.890002-0.007225c116.741636 0 212.971481 94.99437 214.488732 211.779355 0.758626 57.301517-20.851365 111.474607-60.848994 152.534312z" fill="#1296db" p-id="4269"></path></svg></div>`
|
|||
|
} else if (message.sex == '女') {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1704295202245" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5558" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"><path d="M870.69952 153.30048c-66.10688-66.10944-154.00448-102.51776-247.49696-102.51904-93.49248 0-181.3888 36.40832-247.49696 102.51648-66.11072 66.10944-102.51648 154.00576-102.51648 247.49952-0.00128 76.19968 24.19072 148.6784 68.93056 208.67584l-60.2048 60.20352L138.18496 525.94688c-19.99488-19.99488-52.41216-19.99488-72.40704 0-19.99488 19.9936-19.99488 52.41216 0 72.40704l143.72992 143.72992-55.75552 55.75552c-19.9936 19.9936-19.9936 52.41216 0 72.40576 19.99616 19.99616 52.41344 19.99488 72.40832 0l55.75424-55.75424 143.7312 143.72992c19.9936 19.99488 52.41088 19.99488 72.40576 0 19.99616-19.99488 19.99616-52.41216 0-72.40704L354.32192 742.08512l60.2048-60.20352c59.99872 44.73856 132.47616 68.93184 208.67584 68.93184 93.49248 0 181.38752-36.40832 247.49696-102.51776s102.51776-154.00576 102.51776-247.49824C973.21728 307.30496 936.80768 219.40736 870.69952 153.30048zM798.29248 575.88736c-46.76736 46.76736-108.94976 72.5248-175.08992 72.5248s-128.32128-25.75744-175.08992-72.5248c-46.76864-46.76736-72.5248-108.94976-72.5248-175.08992 0.00128-66.14272 25.75616-128.32384 72.5248-175.0912 46.76736-46.76864 108.94976-72.5248 175.08992-72.5248 66.14016 0.00128 128.32256 25.75744 175.08992 72.52608 46.76736 46.76736 72.5248 108.94848 72.5248 175.08864C870.81728 466.9376 845.0624 529.11872 798.29248 575.88736z" fill="#d81e06" p-id="5559"></path></svg></div>`
|
|||
|
} else {
|
|||
|
contner_text.innerHTML = `<div class="nickname">
|
|||
|
${message.nickname}</div>`
|
|||
|
}
|
|||
|
contner_text.innerHTML += `<div class="desc"><img src="${message.open_im_desc_icon}">${message.open_im_desc}</div>`
|
|||
|
contner.appendChild(contner_text);
|
|||
|
OpenIM_card.appendChild(contner);
|
|||
|
const card_bottom = document.createElement("div");
|
|||
|
card_bottom.className = "bottom";
|
|||
|
card_bottom.innerHTML = `<div class="text">企业微信名片</div>`
|
|||
|
OpenIM_card.appendChild(card_bottom);
|
|||
|
return OpenIM_card;
|
|||
|
}
|
|||
|
|
|||
|
function messageLocation(message, newMapID) {
|
|||
|
const Location = document.createElement("div");
|
|||
|
Location.className = "location";
|
|||
|
Location.innerHTML = `<div class="poiname">${message.poiname}</div>
|
|||
|
<div class="label">${message.label}</div>
|
|||
|
`
|
|||
|
const map_box = document.createElement("div");
|
|||
|
map_box.className = "map";
|
|||
|
map_box.id = "map" + message.timestamp;
|
|||
|
Location.appendChild(map_box);
|
|||
|
|
|||
|
newMapID["map" + message.timestamp] = [message.x, message.y, message.label, message.scale]
|
|||
|
|
|||
|
return Location;
|
|||
|
}
|
|||
|
|
|||
|
function loadMap(MapID) {
|
|||
|
// 点标记显示内容,HTML要素字符串
|
|||
|
var markerContent = '' +
|
|||
|
'<div class="custom-content-marker">' +
|
|||
|
' <img src="https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png">' +
|
|||
|
'</div>';
|
|||
|
// 遍历MapID
|
|||
|
for (var key in MapID) {
|
|||
|
var map = new AMap.Map(key, {
|
|||
|
resizeEnable: true,
|
|||
|
center: [MapID[key][1], MapID[key][0]],
|
|||
|
zoom: MapID[key][3]
|
|||
|
});
|
|||
|
const position = new AMap.LngLat(MapID[key][1], MapID[key][0]); //Marker 经纬度
|
|||
|
|
|||
|
const marker = new AMap.Marker({
|
|||
|
position: position,
|
|||
|
// content: 'label', //将 html 传给 content
|
|||
|
// icon: "https://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-red.png",
|
|||
|
content: markerContent,
|
|||
|
title: MapID[key][2],
|
|||
|
offset: new AMap.Pixel(-13, -30), //以 icon 的 [center bottom] 为原点
|
|||
|
});
|
|||
|
map.add(marker);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function messageMergeCard(message, zindex=1, index=0) {
|
|||
|
const messageMergeCardTag = document.createElement('div');
|
|||
|
messageMergeCardTag.className = `merge-message`;
|
|||
|
console.log("mergeMessage", message);
|
|||
|
if (message.description && message.description !== null) {
|
|||
|
const splitResults = message.description.split("\n");
|
|||
|
const firstTwoItems = splitResults.slice(0, 2);
|
|||
|
|
|||
|
messageMergeCardTag.innerHTML = `<div class="title">${message.title}</div>
|
|||
|
<div class="msg">${firstTwoItems[0]}</div>
|
|||
|
<div class="msg">${firstTwoItems[1]}</div>`;
|
|||
|
} else {
|
|||
|
messageMergeCardTag.innerHTML = `<div class="title">${message.title}</div>
|
|||
|
<div class="msg"></div>
|
|||
|
<div class="msg"></div>`;
|
|||
|
}
|
|||
|
const bottomTag = document.createElement('div');
|
|||
|
bottomTag.className = `bottom`;
|
|||
|
bottomTag.innerHTML = `<div class="text">聊天记录</div>`;
|
|||
|
messageMergeCardTag.appendChild(bottomTag);
|
|||
|
|
|||
|
messageMergeCardTag.addEventListener('click', function () {
|
|||
|
modalID = `${message.server_id}-${zindex}-${index}Modal`;
|
|||
|
var modal = document.getElementById(modalID);
|
|||
|
modal.style.display = "block";
|
|||
|
|
|||
|
var span = modal.querySelector('.close');
|
|||
|
|
|||
|
span.onclick = function () {
|
|||
|
modal.style.display = "none";
|
|||
|
}
|
|||
|
});
|
|||
|
return messageMergeCardTag;
|
|||
|
}
|
|||
|
|
|||
|
function innermessageMergeCard(message, zindex=1, index=0, parent_server_id=0) {
|
|||
|
const innerMsgMerge_card = document.createElement("div")
|
|||
|
innerMsgMerge_card.className = "inner-msgMerge-card"
|
|||
|
if (message.description && message.description !== null) {
|
|||
|
const splitResults = message.description.split("\n");
|
|||
|
const firstTwoItems = splitResults.slice(0, 2);
|
|||
|
innerMsgMerge_card.innerHTML = `<div class="title">${message.title}</div>
|
|||
|
<div class="desc">${firstTwoItems[0]}</div>
|
|||
|
<div class="desc">${firstTwoItems[1]}</div>`
|
|||
|
} else {
|
|||
|
innerMsgMerge_card.innerHTML = `<div class="title">${message.title}</div>
|
|||
|
<div class="desc"></div>
|
|||
|
<div class="desc"></div>`
|
|||
|
}
|
|||
|
|
|||
|
innerMsgMerge_card.addEventListener('click', function () {
|
|||
|
modalID = `${parent_server_id}-${zindex}-${index}Modal`;
|
|||
|
var modal = document.getElementById(modalID);
|
|||
|
modal.style.display = "block";
|
|||
|
|
|||
|
var span = modal.querySelector('.close');
|
|||
|
|
|||
|
span.onclick = function () {
|
|||
|
modal.style.display = "none";
|
|||
|
}
|
|||
|
});
|
|||
|
return innerMsgMerge_card
|
|||
|
}
|
|||
|
|
|||
|
function messageMergeModaltitle(message) {
|
|||
|
const messageMergeModaltitle = document.createElement('div');
|
|||
|
messageMergeModaltitle.className = `title`;
|
|||
|
if (message.title) {
|
|||
|
messageMergeModaltitle.innerHTML = `<span class="close">×</span>
|
|||
|
<div class="title">${message.title}</div>`;
|
|||
|
} else {
|
|||
|
messageMergeModaltitle.innerHTML = `<span class="close">×</span>
|
|||
|
<div class="title">${message.description}</div>`;
|
|||
|
}
|
|||
|
return messageMergeModaltitle;
|
|||
|
}
|
|||
|
|
|||
|
function messageMergeModal(message, messageContent, zindex, index=0, parent_server_id=0) {
|
|||
|
var message_MergeModal = document.createElement('div');
|
|||
|
message_MergeModal.className = `merge-msg-modal`;
|
|||
|
message_MergeModal.style.zIndex = zindex;
|
|||
|
if (parent_server_id == 0) {
|
|||
|
parent_server_id = message.server_id;
|
|||
|
}
|
|||
|
message_MergeModal.id = `${parent_server_id}-${zindex}-${index}Modal`;
|
|||
|
// if (message.server_id) {
|
|||
|
// message_MergeModal.id = `${message.server_id}-${zindex}-${index}Modal`;
|
|||
|
// } else {
|
|||
|
// message_MergeModal.id = `${message.dataid}Modal`;
|
|||
|
// }
|
|||
|
|
|||
|
var ModalContent = document.createElement('div');
|
|||
|
ModalContent.className = `merge-msg-modal-content`;
|
|||
|
ModalContent.appendChild(messageMergeModaltitle(message));
|
|||
|
|
|||
|
var ModalContainer = document.createElement('div');
|
|||
|
ModalContainer.className = `modal-container`;
|
|||
|
|
|||
|
if (message.messages.length == 0) {
|
|||
|
var OnePersonMsg = document.createElement('div');
|
|||
|
OnePersonMsg.className = `OnePersonmsg`;
|
|||
|
OnePersonMsg.innerHTML = `<div class="left">
|
|||
|
<div class="avatar"><img src="" loading="lazy"></div>
|
|||
|
</div>
|
|||
|
`;
|
|||
|
|
|||
|
var OnePersonMsgRight = document.createElement('div');
|
|||
|
OnePersonMsgRight.className = `right`;
|
|||
|
OnePersonMsg.appendChild(OnePersonMsgRight);
|
|||
|
ModalContainer.appendChild(OnePersonMsg);
|
|||
|
ModalContent.appendChild(ModalContainer);
|
|||
|
message_MergeModal.appendChild(ModalContent);
|
|||
|
return message_MergeModal;
|
|||
|
}
|
|||
|
|
|||
|
var OnePersonMsg = document.createElement('div');
|
|||
|
OnePersonMsg.className = `OnePersonmsg`;
|
|||
|
OnePersonMsg.innerHTML = `<div class="left">
|
|||
|
<div class="avatar"><img src="${message.messages[0].avatar_src}" loading="lazy"></div>
|
|||
|
</div>
|
|||
|
`;
|
|||
|
|
|||
|
var OnePersonMsgRight = document.createElement('div');
|
|||
|
OnePersonMsgRight.className = `right`;
|
|||
|
|
|||
|
|
|||
|
var lastsrcname = message.messages[0].display_name;
|
|||
|
// 遍历message.recorditem
|
|||
|
for (let i = 0; i < message.messages.length; i++) {
|
|||
|
var record = message.messages[i];
|
|||
|
var currentsrcname = record.display_name;
|
|||
|
if (currentsrcname != lastsrcname) {
|
|||
|
OnePersonMsg.appendChild(OnePersonMsgRight);
|
|||
|
ModalContainer.appendChild(OnePersonMsg);
|
|||
|
lastsrcname = currentsrcname;
|
|||
|
var OnePersonMsg = document.createElement('div');
|
|||
|
OnePersonMsg.className = `OnePersonmsg`;
|
|||
|
OnePersonMsg.innerHTML = `<div class="left">
|
|||
|
<div class="avatar"><img src="${record.avatar_src}" loading="lazy"></div>
|
|||
|
</div>
|
|||
|
`;
|
|||
|
var OnePersonMsgRight = document.createElement('div');
|
|||
|
OnePersonMsgRight.className = `right`;
|
|||
|
}
|
|||
|
const recordItem = document.createElement('div');
|
|||
|
recordItem.className = `msg-block`;
|
|||
|
// console.log("type:",record.type);
|
|||
|
if (record.type == MessageType.Text || record.type == MessageType.Audio) {
|
|||
|
// console.log(record.datadesc)
|
|||
|
// 文本消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>
|
|||
|
<div class="msg-container">${record.text}</div>`;
|
|||
|
} else if (record.type == MessageType.MergedMessages) {
|
|||
|
// 嵌套合并消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>`;
|
|||
|
recordItem.appendChild(innermessageMergeCard(record, zindex + 1, i, parent_server_id));
|
|||
|
// messageContent.appendChild(messageMergeModal(record, messageContent));
|
|||
|
messageContent.insertBefore(messageMergeModal(record, messageContent, zindex + 1, i, parent_server_id), messageContent.firstChild);
|
|||
|
} else if (record.type == MessageType.Video) {
|
|||
|
// 视频消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>
|
|||
|
<div class="msg-container"><video src="${record.path}" controls=""></video></div>`;
|
|||
|
} else if (record.type == MessageType.Image || record.type == MessageType.Emoji) {
|
|||
|
// 文件消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>`;
|
|||
|
recordItem.appendChild(messageImgBox(record));
|
|||
|
|
|||
|
} else if (record.type == MessageType.File) {
|
|||
|
// 文件消息
|
|||
|
record.icon_path = getFileIcon(record.datafmt)
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>`;
|
|||
|
recordItem.appendChild(messageFileBox(record));
|
|||
|
} else if (record.type == MessageType.Position) {
|
|||
|
// 文件消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>`;
|
|||
|
recordItem.appendChild(messageLocation(record, newMapID));
|
|||
|
} else if (record.type == MessageType.LinkMessage) {
|
|||
|
// 文件消息
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${record.display_name}</span>
|
|||
|
<span style="font-size: 12px;">${timestampToTime(record.timestamp)}</span></div>`;
|
|||
|
recordItem.appendChild(messageCard(record));
|
|||
|
}
|
|||
|
OnePersonMsgRight.appendChild(recordItem);
|
|||
|
}
|
|||
|
|
|||
|
OnePersonMsg.appendChild(OnePersonMsgRight);
|
|||
|
ModalContainer.appendChild(OnePersonMsg);
|
|||
|
ModalContent.appendChild(ModalContainer);
|
|||
|
message_MergeModal.appendChild(ModalContent);
|
|||
|
|
|||
|
function getFileIcon(datafmt) {
|
|||
|
icon_files = {
|
|||
|
'DOCX': ['doc', 'docx'],
|
|||
|
'XLS': ['xls', 'xlsx'],
|
|||
|
'CSV': ['csv'],
|
|||
|
'TXT': ['txt'],
|
|||
|
'ZIP': ['zip', '7z', 'rar'],
|
|||
|
'PPT': ['ppt', 'pptx'],
|
|||
|
'PDF': ['pdf'],
|
|||
|
}
|
|||
|
|
|||
|
for (var key in icon_files) {
|
|||
|
if (icon_files[key].includes(datafmt)) {
|
|||
|
return key
|
|||
|
}
|
|||
|
}
|
|||
|
return 'Default'
|
|||
|
}
|
|||
|
|
|||
|
return message_MergeModal;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function messageMiniProgram(message) {
|
|||
|
const message_MiniProgram = document.createElement('div');
|
|||
|
message_MiniProgram.className = `mini-program`;
|
|||
|
|
|||
|
message_MiniProgram.innerHTML = `<a href="${message.url}" target="_blank">
|
|||
|
<div class="top">
|
|||
|
<img src='${message.app_logo}' alt='logo'>
|
|||
|
<div class='text'>${message.app_name}</div>
|
|||
|
</div>
|
|||
|
<div class="title">${message.title}</div>
|
|||
|
<div class="cover"><img src='${message.cover_url}' onerror="this.style.display='none';"></div>
|
|||
|
<div class="bottom"><div class="text">小程序</div></div>
|
|||
|
</a>`;
|
|||
|
return message_MiniProgram;
|
|||
|
}
|
|||
|
|
|||
|
function messageVideoNumber(message) {
|
|||
|
const message_VideoNumber = document.createElement('div');
|
|||
|
message_VideoNumber.className = `video-number`;
|
|||
|
const message_VideoNumber_title = document.createElement('div');
|
|||
|
message_VideoNumber_title.className = `title`;
|
|||
|
const message_VideoNumber_container = document.createElement('div');
|
|||
|
message_VideoNumber_container.className = `container`;
|
|||
|
message_VideoNumber_container.style.backgroundImage = `url(${message.cover_url})`;
|
|||
|
message_VideoNumber_container.style.backgroundSize = "cover";
|
|||
|
message_VideoNumber_container.style.backgroundRepeat = "no-repeat";
|
|||
|
message_VideoNumber_title.innerHTML = replaceEmoji(message.title);
|
|||
|
message_VideoNumber_container.innerHTML = `
|
|||
|
<div class="bottom">
|
|||
|
<div class="author">
|
|||
|
<div class="logo"><img src='${message.publisher_avatar}' onerror="this.style.display='none';"></div>
|
|||
|
<div class="name">${message.publisher_nickname}</div>
|
|||
|
<div class="authIcon"><img src='${message.authIconUrl}' onerror="this.style.display='none';"></div>
|
|||
|
</div>
|
|||
|
</div>`;
|
|||
|
|
|||
|
message_VideoNumber.appendChild(message_VideoNumber_title);
|
|||
|
message_VideoNumber.appendChild(message_VideoNumber_container);
|
|||
|
|
|||
|
return message_VideoNumber;
|
|||
|
}
|
|||
|
|
|||
|
// 从数据列表中取出对应范围的元素并添加到容器中
|
|||
|
for (let i = startIndex; i < endIndex && i < ChatMsgIndex.length; i++) {
|
|||
|
const message = chatMessages[ChatMsgIndex[i]];
|
|||
|
console.log(message.type);
|
|||
|
console.log(message);
|
|||
|
add5MinTimeTag(message);
|
|||
|
const messageElement = document.createElement('div'); // 下面那俩的合体
|
|||
|
const avatarTag = avatarBox(message); // 头像
|
|||
|
const messageContent = document.createElement('div'); // 除了avatar之外的所有
|
|||
|
messageElement.setAttribute('id', message.server_id);
|
|||
|
const side = message.is_send ? "right" : "left";
|
|||
|
if (isChatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
if (message.type == MessageType.Text && is_valid_data(message.server_id, message.token)) {
|
|||
|
// displayname 和 bubble
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
messageContent.appendChild(messageBubble(message, side));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.System) {
|
|||
|
messageElement.className = "item item-center";
|
|||
|
messageElement.innerHTML = `<span class="system-msg">${replaceEmoji(message.text.replace('\\"', '"'))}</span>`;
|
|||
|
} else if ((message.type == MessageType.Image || message.type == MessageType.Emoji)&& is_valid_data(message.server_id, message.token)) {
|
|||
|
// displayname 和 img
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(messageImgBox(message));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Video && is_valid_data(message.server_id, message.token)) {
|
|||
|
// displayname 和 video
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(messageVideoBox(message));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.File) {
|
|||
|
console.log('file');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
messageContent.appendChild(messageFileBox(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Transfer) {
|
|||
|
console.log('Transfer');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageTransfer(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.LinkMessage) {
|
|||
|
console.log('LinkMessage');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageCard(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Music) {
|
|||
|
console.log('LinkMessage');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMusicAudioBox(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Applet) {
|
|||
|
console.log('LinkMessage');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMiniProgram(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.MergedMessages) {
|
|||
|
console.log('MergedMessages');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMergeCard(message));
|
|||
|
// messageContent.appendChild(messageMergeModal(message, messageContent));
|
|||
|
messageContent.insertBefore(messageMergeModal(message, messageContent, 1), messageContent.firstChild);
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Quote) {
|
|||
|
console.log('Quote');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageBubble(message, side));
|
|||
|
if (message.quote_text) {
|
|||
|
messageContent.appendChild(messageElementReferText(message, side));
|
|||
|
}
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.WeChatVideo) {
|
|||
|
console.log('WeChatVideo');
|
|||
|
// displayname 和 file
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageVideoNumber(message));
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == 49 && is_valid_data(message.server_id, message.token)) {
|
|||
|
if (message.sub_type == 57) {
|
|||
|
// displayname 和 bubble 和 refer
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageBubble(message, side));
|
|||
|
if (message.refer_text) {
|
|||
|
messageContent.appendChild(messageElementReferText(message, side));
|
|||
|
}
|
|||
|
|
|||
|
} else if (message.sub_type == 3 || message.sub_type == 76) {
|
|||
|
// music share
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMusicAudioBox(message));
|
|||
|
} else if (message.sub_type == 5) {
|
|||
|
// displayname 和 card
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageCard(message));
|
|||
|
} else if (message.sub_type == 2000) {
|
|||
|
// displayname 和 messageTransfer
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageTransfer(message));
|
|||
|
} else if (message.sub_type == 19) {
|
|||
|
// displayname 和 messageMergeCard
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMergeCard(message));
|
|||
|
// messageContent.appendChild(messageMergeModal(message, messageContent));
|
|||
|
messageContent.insertBefore(messageMergeModal(message, messageContent, 1), messageContent.firstChild);
|
|||
|
|
|||
|
} else if (message.sub_type == 33 || message.sub_type == 36) {
|
|||
|
// 小程序
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageMiniProgram(message));
|
|||
|
} else if (message.sub_type == 51) {
|
|||
|
// 视频号
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
if (message.is_chatroom && !message.is_send) {
|
|||
|
messageContent.appendChild(displayNameBox(message));
|
|||
|
}
|
|||
|
messageContent.appendChild(messageVideoNumber(message));
|
|||
|
}
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == 34 && is_valid_data(message.server_id, message.token)) {
|
|||
|
// displayname 和 转的文字 和 audio
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(messageAudioBox(message));
|
|||
|
if (message.voice_to_text) {
|
|||
|
messageContent.appendChild(messageVoiceToTextBubble(message, side));
|
|||
|
}
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.Voip && is_valid_data(message.server_id, message.token)) {
|
|||
|
// displayname 和 转的文字 和 audio
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(messageVideoAudioCall(message, side));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == MessageType.BusinessCard) {
|
|||
|
// 个人名片
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(MessageType.is_open_im?openIMCard(message):personalCard(message));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
} else if (message.type == 48 && is_valid_data(message.server_id, message.token)) {
|
|||
|
// 定位
|
|||
|
messageContent.className = `content-wrapper content-wrapper-${side}`;
|
|||
|
|
|||
|
messageContent.appendChild(messageLocation(message, newMapID));
|
|||
|
|
|||
|
// 整合
|
|||
|
messageElement.className = `item item-${side}`;
|
|||
|
messageElement.appendChild(message.is_send ? messageContent : avatarTag);
|
|||
|
messageElement.appendChild(message.is_send ? avatarTag : messageContent);
|
|||
|
}
|
|||
|
OnePageMessage.appendChild(messageElement);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if (!reachedBottom && !reachedTop) {
|
|||
|
container.innerHTML = ''; // 清空容器
|
|||
|
lastScrollTop = 10;
|
|||
|
lastTimeStamp = 0;
|
|||
|
|
|||
|
chatContainer.appendChild(OnePageMessage);
|
|||
|
document.querySelector("#chat-container").scrollTop = lastScrollTop;
|
|||
|
|
|||
|
MapID = newMapID;
|
|||
|
} else if (reachedBottom) {
|
|||
|
|
|||
|
reachedBottom = false;
|
|||
|
|
|||
|
chatContainer.appendChild(OnePageMessage);
|
|||
|
document.querySelector("#chat-container").scrollTop = lastScrollTop;
|
|||
|
|
|||
|
Object.assign(MapID, newMapID);
|
|||
|
}
|
|||
|
else if (reachedTop) {
|
|||
|
lastTimeStamp = 0;
|
|||
|
reachedTop = false;
|
|||
|
var existingElement = chatContainer.firstChild; // 获取原有内容的第一个元素
|
|||
|
chatContainer.insertBefore(OnePageMessage, existingElement);
|
|||
|
|
|||
|
var targetSection = document.getElementById(String(endIndex));
|
|||
|
targetSection.scrollIntoView({ behavior: 'smooth' });
|
|||
|
Object.assign(MapID, newMapID);
|
|||
|
}
|
|||
|
// chatContainer.appendChild(OnePageMessage);
|
|||
|
// document.querySelector("#chat-container").scrollTop = lastScrollTop;
|
|||
|
// console.log("渲染完成"+lastScrollTop);
|
|||
|
updatePaginationInfo();
|
|||
|
refreshMediaListener();
|
|||
|
loadMap(MapID);
|
|||
|
}
|
|||
|
</script>
|
|||
|
<script>
|
|||
|
const chatContainer = document.getElementById('chat-container');
|
|||
|
|
|||
|
function checkEnter(event) {
|
|||
|
if (event.keyCode === 13) {
|
|||
|
gotoPage();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var showID = 'All';
|
|||
|
// 在title-bar下添加menu-button
|
|||
|
const menuItems = [['全部', 'All'], ['图片和视频', 'Image'], ['文件', 'File'], ['链接', 'Link'], ['音乐和音频', 'Music'], ['交易', 'Transfer'], ['小程序', 'MiniProgram'], ['视频号', 'VideoNumber'], ['日期', 'Date'], ['搜索', 'Search']];
|
|||
|
for (let i = 0; i < menuItems.length; i++) {
|
|||
|
const menuItem = document.createElement('div');
|
|||
|
menuItem.classList.add('menu-button');
|
|||
|
menuItem.innerHTML = menuItems[i][0];
|
|||
|
menuItems[i][0] === '全部' ? menuItem.style.backgroundColor = '#aed18d' : menuItem.style.backgroundColor = '#fff';
|
|||
|
if (menuItems[i][0] === '日期') {
|
|||
|
menuItem.id = 'datepicker';
|
|||
|
}
|
|||
|
menuItem.addEventListener('click', function () {
|
|||
|
navbarNav.classList.toggle("show");
|
|||
|
// 清除所有menuItem背景颜色
|
|||
|
for (let j = 0; j < menuItems.length; j++) {
|
|||
|
document.getElementsByClassName('menu-button')[j].style.backgroundColor = '#fff';
|
|||
|
}
|
|||
|
menuItem.style.backgroundColor = '#aed18d';
|
|||
|
showID = menuItems[i][1];
|
|||
|
if (showID === 'All') {
|
|||
|
ChatMsgIndex = AllIndex;
|
|||
|
resetTimeline()
|
|||
|
|
|||
|
}
|
|||
|
else if (showID === 'Image') {
|
|||
|
ChatMsgIndex = ImageIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'File') {
|
|||
|
ChatMsgIndex = FileIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'Link') {
|
|||
|
ChatMsgIndex = LinkIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'Music') {
|
|||
|
ChatMsgIndex = MusicIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'Transfer') {
|
|||
|
ChatMsgIndex = TransferIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'MiniProgram') {
|
|||
|
ChatMsgIndex = MiniProgramIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'VideoNumber') {
|
|||
|
ChatMsgIndex = VideoNumberIndex;
|
|||
|
resetTimeline()
|
|||
|
}
|
|||
|
else if (showID === 'Search') {
|
|||
|
openSearchModal();
|
|||
|
}
|
|||
|
|
|||
|
reachedBottom = false;
|
|||
|
reachedTop = false;
|
|||
|
if (showID !== 'Date' && showID !== 'Search') {
|
|||
|
renderPage(1);
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
const titleTag = document.getElementById('topnavbar-nav');
|
|||
|
titleTag.appendChild(menuItem);
|
|||
|
}
|
|||
|
|
|||
|
const itemsPerPage = 100; // 每页显示的元素个数
|
|||
|
let currentPage = 1; // 当前页
|
|||
|
var reachedBottom = false; // 到达底部的标记
|
|||
|
var reachedTop = false; // 到达顶部的标记
|
|||
|
var lastScrollTop = 10;
|
|||
|
var lastTimeStamp = 0;
|
|||
|
|
|||
|
// search init
|
|||
|
|
|||
|
var idx = lunr(function () {
|
|||
|
this.use(lunr.zh);
|
|||
|
this.ref('server_id')
|
|||
|
this.field('text')
|
|||
|
|
|||
|
chatMessages.forEach(function (doc) {
|
|||
|
this.add(doc);
|
|||
|
}, this);
|
|||
|
});
|
|||
|
var missingDates = [];
|
|||
|
var today = new Date();
|
|||
|
var startDate = today;
|
|||
|
var endDate = today;
|
|||
|
if (chatMessages.length !== 0) {
|
|||
|
var startDate = new Date(chatMessages[0].timestamp * 1000);
|
|||
|
var endDate = new Date(chatMessages[chatMessages.length - 1].timestamp * 1000);
|
|||
|
|
|||
|
for (let d = new Date(startDate); d <= endDate; d.setDate(d.getDate() + 1)) {
|
|||
|
var dateStr = d.toISOString().split('T')[0];
|
|||
|
if (!dateDataMap[dateStr]) {
|
|||
|
missingDates.push(dateStr);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
var input = document.querySelector("#datepicker");
|
|||
|
var fp = flatpickr(input, {
|
|||
|
disable: missingDates,
|
|||
|
minDate: startDate.toISOString().split('T')[0],
|
|||
|
maxDate: endDate.toISOString().split('T')[0],
|
|||
|
dateFormat: "Y-m-d",
|
|||
|
onChange: function (selectedDates, dateStr, instance) {
|
|||
|
ChatMsgIndex = AllIndex;
|
|||
|
resetTimeline();
|
|||
|
var selectedDate = selectedDates[0];
|
|||
|
referId = dateDataMap[dateStr][1];
|
|||
|
lastPage = currentPage;
|
|||
|
currentPage = dateDataMap[dateStr][0];
|
|||
|
|
|||
|
if (lastPage != currentPage) {
|
|||
|
reachedBottom = false;
|
|||
|
reachedTop = false;
|
|||
|
renderPage(currentPage);
|
|||
|
}
|
|||
|
|
|||
|
var targetSection = document.getElementById(referId);
|
|||
|
targetSection.scrollIntoView({ block: 'start' });
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
ChatMsgIndex = AllIndex;
|
|||
|
var years = Object.keys(timelineData);
|
|||
|
function resetTimeline() {
|
|||
|
timelineData = {};
|
|||
|
PageTimeline = {};
|
|||
|
MsgSvrID_Page = {};
|
|||
|
for (let i = 0; i < ChatMsgIndex.length; i++) {
|
|||
|
const message = chatMessages[ChatMsgIndex[i]];
|
|||
|
const date = new Date(message.timestamp * 1000);
|
|||
|
const month = date.getMonth() + 1;
|
|||
|
const year = date.getFullYear();
|
|||
|
const curpage = Math.ceil((i + 1) / itemsPerPage);
|
|||
|
|
|||
|
MsgSvrID_Page[message.server_id] = curpage;
|
|||
|
|
|||
|
if (!timelineData[year]) {
|
|||
|
timelineData[year] = {};
|
|||
|
}
|
|||
|
if (!timelineData[year][month]) {
|
|||
|
timelineData[year][month] = [];
|
|||
|
timelineData[year][month].push(curpage);
|
|||
|
timelineData[year][month].push(message.MsgSvrID);
|
|||
|
}
|
|||
|
|
|||
|
if (!PageTimeline[curpage]) {
|
|||
|
PageTimeline[curpage] = {};
|
|||
|
PageTimeline[curpage]['year'] = year;
|
|||
|
PageTimeline[curpage]['month'] = month;
|
|||
|
}
|
|||
|
}
|
|||
|
years = Object.keys(timelineData);
|
|||
|
if (ChatMsgIndex.length !== 0)
|
|||
|
initialTimeline()
|
|||
|
currentPage = 1
|
|||
|
}
|
|||
|
|
|||
|
function initialTimeline() {
|
|||
|
var initialYear = years[0];
|
|||
|
var currentYear = initialYear;
|
|||
|
var initialMonths = Object.keys(timelineData[initialYear]);
|
|||
|
var initialMonth = initialMonths[0];
|
|||
|
const timeline = document.getElementById('timeline');
|
|||
|
timeline.innerHTML = '';
|
|||
|
for (let year of years) {
|
|||
|
const currentMonths = Object.keys(timelineData[year]);
|
|||
|
const yearIdElement = document.createElement('div');
|
|||
|
yearIdElement.setAttribute('id', String(year) + 'year');
|
|||
|
const yearElement = document.createElement('div');
|
|||
|
yearElement.classList.add('timeline-item-year');
|
|||
|
yearElement.innerHTML = `
|
|||
|
<div class="timeline-dot-year"></div>
|
|||
|
<div class="timeline-right">${year}</div>
|
|||
|
`;
|
|||
|
|
|||
|
// 点击年份,显示该年份的月份
|
|||
|
yearElement.addEventListener('click', function () {
|
|||
|
currentYear = year;
|
|||
|
toggleMonthsDisplay(String(year));
|
|||
|
});
|
|||
|
|
|||
|
yearIdElement.appendChild(yearElement);
|
|||
|
|
|||
|
for (let month = 1; month <= 12; month++) {
|
|||
|
const monthName = month < 10 ? '0' + month : month;
|
|||
|
const monthElement = document.createElement('div');
|
|||
|
monthElement.classList.add('timeline-item-month');
|
|||
|
|
|||
|
if (currentMonths.includes(String(month))) {
|
|||
|
// 有消息的月份,添加点击事件
|
|||
|
monthElement.addEventListener('click', function () {
|
|||
|
// toggleCurrentMonthDisplay(monthElement);
|
|||
|
var parentElement = monthElement.parentElement;
|
|||
|
var parentId = parentElement.id;
|
|||
|
var parentyear = parentId.match(/\d+/)[0];
|
|||
|
|
|||
|
var lastpage = currentPage
|
|||
|
currentPage = timelineData[parentyear][month][0];
|
|||
|
currentId = timelineData[parentyear][month][1];
|
|||
|
|
|||
|
if (lastpage !== currentPage)
|
|||
|
renderPage(currentPage);
|
|||
|
|
|||
|
var targetSection = document.getElementById(currentId);
|
|||
|
// 别删
|
|||
|
console.log(targetSection);
|
|||
|
targetSection.scrollIntoView({ block: 'start' });
|
|||
|
|
|||
|
toggleCurrentMonthDisplay(monthElement);
|
|||
|
toggleMonthsDisplay(parentyear);
|
|||
|
|
|||
|
});
|
|||
|
}
|
|||
|
else {
|
|||
|
// 没有消息的月份,字体颜色变灰
|
|||
|
monthElement.classList.add('no-msg-month');
|
|||
|
}
|
|||
|
if (year === initialYear) {
|
|||
|
if (String(month) === initialMonth) {
|
|||
|
monthElement.classList.add('current');
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
monthElement.classList.add('hidden-month');
|
|||
|
}
|
|||
|
|
|||
|
monthElement.innerHTML = `
|
|||
|
<div class="timeline-dot-month"></div>
|
|||
|
<div class="timeline-right">${monthName}月</div>
|
|||
|
`;
|
|||
|
yearIdElement.appendChild(monthElement);
|
|||
|
}
|
|||
|
timeline.appendChild(yearIdElement);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function toggleMonthsDisplay(year) {
|
|||
|
// 遍历所有月份,给没有hidden-month类的元素添加hidden-month类
|
|||
|
const AllmonthElements = document.querySelectorAll('.timeline-item-month');
|
|||
|
AllmonthElements.forEach(monthElement => {
|
|||
|
// 如果该月份元素没有 hidden-month 类,则添加该类
|
|||
|
if (!monthElement.classList.contains('hidden-month')) {
|
|||
|
monthElement.classList.add('hidden-month');
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
const yearIdElement = document.getElementById(year + 'year');
|
|||
|
const monthElements = yearIdElement.querySelectorAll('.timeline-item-month');
|
|||
|
// const months = yearElement.children;
|
|||
|
monthElements.forEach(monthElement => {
|
|||
|
// 删除 .hidden-month 类属性
|
|||
|
monthElement.classList.remove('hidden-month');
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
function toggleCurrentMonthDisplay(monthElement) {
|
|||
|
lastmonthElement = document.querySelectorAll('.current');
|
|||
|
lastmonthElement[0].classList.remove('current');
|
|||
|
monthElement.classList.add('current');
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (chatMessages.length !== 0)
|
|||
|
initialTimeline()
|
|||
|
loader.style.display = "none";
|
|||
|
content.style.display = "flex"; // 显示内容
|
|||
|
function prevPage() {
|
|||
|
if (currentPage > 1) {
|
|||
|
currentPage--;
|
|||
|
reachedBottom = false;
|
|||
|
renderPage(currentPage);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function nextPage() {
|
|||
|
const totalPages = Math.ceil(ChatMsgIndex.length / itemsPerPage);
|
|||
|
if (currentPage < totalPages) {
|
|||
|
reachedTop = false;
|
|||
|
currentPage++;
|
|||
|
renderPage(currentPage);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function updatePaginationInfo() {
|
|||
|
const totalPages = Math.ceil(ChatMsgIndex.length / itemsPerPage);
|
|||
|
const paginationInfo = document.getElementById('gotoPage');
|
|||
|
paginationInfo.value = `${currentPage}`;
|
|||
|
}
|
|||
|
|
|||
|
function gotoPage() {
|
|||
|
const totalPages = Math.ceil(chatMessages.length / itemsPerPage);
|
|||
|
const inputElement = document.getElementById('gotoPage');
|
|||
|
const targetPage = parseInt(inputElement.value);
|
|||
|
|
|||
|
if (targetPage >= 1 && targetPage <= totalPages) {
|
|||
|
currentPage = targetPage;
|
|||
|
renderPage(currentPage);
|
|||
|
} else {
|
|||
|
alert('请输入有效的页码');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function checkScroll() {
|
|||
|
var chatContainer = document.getElementById("chat-container");
|
|||
|
|
|||
|
// 检查滚动条是否滑到底部
|
|||
|
if (chatContainer.scrollHeight - chatContainer.scrollTop - 10 <= chatContainer.clientHeight) {
|
|||
|
// 如果滚动条在底部
|
|||
|
if (!reachedBottom) {
|
|||
|
// 设置标记并返回
|
|||
|
reachedBottom = true;
|
|||
|
lastScrollTop = chatContainer.scrollTop;
|
|||
|
}
|
|||
|
if (reachedBottom) {
|
|||
|
nextPage();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if (chatContainer.scrollTop < 5) {
|
|||
|
reachedTop = true;
|
|||
|
prevPage();
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
// 初始化页面
|
|||
|
renderPage(currentPage);
|
|||
|
|
|||
|
function refreshMediaListener() {
|
|||
|
const audioTags = document.querySelectorAll('audio');
|
|||
|
const videoTags = document.querySelectorAll('video');
|
|||
|
|
|||
|
audioTags.forEach(audio => {
|
|||
|
audio.addEventListener('play', function () {
|
|||
|
pauseOtherMedia(audio);
|
|||
|
});
|
|||
|
});
|
|||
|
videoTags.forEach(video => {
|
|||
|
video.addEventListener('play', function () {
|
|||
|
pauseOtherMedia(video);
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
function pauseOtherMedia(currentMedia) {
|
|||
|
const audioTags = document.querySelectorAll('audio');
|
|||
|
const videoTags = document.querySelectorAll('video');
|
|||
|
audioTags.forEach(media => {
|
|||
|
if (media !== currentMedia && !media.paused) {
|
|||
|
media.pause();
|
|||
|
}
|
|||
|
});
|
|||
|
videoTags.forEach(media => {
|
|||
|
if (media !== currentMedia && !media.paused) {
|
|||
|
media.pause();
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
refreshMediaListener();
|
|||
|
|
|||
|
function showModal(image) {
|
|||
|
var modal = document.getElementById("modal");
|
|||
|
var modalImage = document.getElementById("modal-image");
|
|||
|
modal.style.display = "block";
|
|||
|
modalImage.src = image.src;
|
|||
|
// console.log(image.src);
|
|||
|
}
|
|||
|
|
|||
|
function is_valid_data(content, key) {
|
|||
|
return true;
|
|||
|
key_ = md5('sNZaKe6&YhpCVvB@3R:7:^5b!mZk|f"SEx3YITEQX4|$7gC-IMHGbGjUAO6Q' + content + 'v@:L7IyXYsY7u!yc~N+lA59AjBH$sMe:kj"];1VhGbN<aDMLCza0qdv`wa)~w_;').toString();
|
|||
|
return key_ === key;
|
|||
|
}
|
|||
|
|
|||
|
function hideModal() {
|
|||
|
var modal = document.getElementById("modal");
|
|||
|
modal.style.display = "none";
|
|||
|
}
|
|||
|
|
|||
|
function toggleAudio(buttonElm) {
|
|||
|
var audioPlayer = buttonElm.parentNode;
|
|||
|
var audio = audioPlayer.querySelector('audio');
|
|||
|
if (audio == null) {
|
|||
|
alert("该音频已失效或无法直接播放,有需要请点击音频链接查看")
|
|||
|
} else {
|
|||
|
if (audio.paused) {
|
|||
|
audio.play();
|
|||
|
buttonElm.classList.remove('paused');
|
|||
|
buttonElm.classList.add('playing');
|
|||
|
} else {
|
|||
|
audio.pause();
|
|||
|
buttonElm.classList.remove('playing');
|
|||
|
buttonElm.classList.add('paused');
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function openSearchModal() {
|
|||
|
document.getElementById("search-modal").style.display = "block";
|
|||
|
}
|
|||
|
|
|||
|
function closeSearchModal() {
|
|||
|
document.getElementById("search-modal").style.display = "none";
|
|||
|
}
|
|||
|
|
|||
|
function checkImageExists(url, callback) {
|
|||
|
var img = new Image();
|
|||
|
img.onload = function () {
|
|||
|
callback(true); // 图片存在
|
|||
|
};
|
|||
|
img.onerror = function () {
|
|||
|
callback(false); // 图片不存在
|
|||
|
};
|
|||
|
img.src = url;
|
|||
|
}
|
|||
|
|
|||
|
function avatarBox(message) {
|
|||
|
const avatarTag = document.createElement('div');
|
|||
|
avatarTag.className = "avatar";
|
|||
|
var avatar_path = '';
|
|||
|
// 使用示例
|
|||
|
// var imageUrl = avatarPaths[message.avatar_path];
|
|||
|
// checkImageExists(imageUrl, function (exists) {
|
|||
|
// if (exists) {
|
|||
|
// console.log('图片存在');
|
|||
|
// } else {
|
|||
|
// imageUrl = avatarUrls[message.avatar_path]
|
|||
|
// }
|
|||
|
// avatarTag.innerHTML = `<img src="${imageUrl}" loading="lazy" />`
|
|||
|
// });
|
|||
|
|
|||
|
var imageUrl = message.avatar_src;
|
|||
|
avatarTag.innerHTML = `<img src="${imageUrl}" loading="lazy" />`
|
|||
|
|
|||
|
return avatarTag;
|
|||
|
}
|
|||
|
|
|||
|
function renderResults(ID) {
|
|||
|
var message = chatMessages[ID["idx"]];
|
|||
|
// console.log(message.text)
|
|||
|
// avatarurl = avatarUrl(message);
|
|||
|
const date = new Date(message.timestamp * 1000);
|
|||
|
var dateStr = date.toISOString().split('T')[0];
|
|||
|
var displayname = ''
|
|||
|
if (message.display_name) {
|
|||
|
displayname = message.display_name;
|
|||
|
}
|
|||
|
if (message.type == MessageType.Text || message.type == MessageType.Text2 || message.type == MessageType.Quote) {
|
|||
|
var OnePersonMsg = document.createElement('div');
|
|||
|
OnePersonMsg.className = `OnePersonmsg`;
|
|||
|
OnePersonMsg.innerHTML = `<div class="left">`;
|
|||
|
const avatarTag = avatarBox(message);
|
|||
|
OnePersonMsg.appendChild(avatarTag);
|
|||
|
|
|||
|
var OnePersonMsgRight = document.createElement('div');
|
|||
|
OnePersonMsgRight.className = `right`;
|
|||
|
const recordItem = document.createElement('div');
|
|||
|
recordItem.className = `msg-block`;
|
|||
|
recordItem.innerHTML = `<div class="msg-container-top"><span>${displayname}</span>
|
|||
|
<span style="font-size: 12px;">${dateStr}</span></div>
|
|||
|
<div class="msg-container">${message.text}</div>`;
|
|||
|
OnePersonMsgRight.appendChild(recordItem);
|
|||
|
OnePersonMsg.appendChild(OnePersonMsgRight);
|
|||
|
const tooltip = document.createElement('div');
|
|||
|
tooltip.className = `tooltip`;
|
|||
|
tooltip.innerHTML = `双击跳转到该消息`;
|
|||
|
OnePersonMsg.appendChild(tooltip);
|
|||
|
OnePersonMsg.addEventListener('dblclick', function () {
|
|||
|
console.log('双击了消息')
|
|||
|
// 阻止默认的右键菜单
|
|||
|
event.preventDefault();
|
|||
|
closeSearchModal();
|
|||
|
referId = ID["server_id"];
|
|||
|
lastPage = currentPage;
|
|||
|
ChatMsgIndex = AllIndex;
|
|||
|
resetTimeline();
|
|||
|
currentPage = server_id_Page[String(referId)];
|
|||
|
reachedBottom = false;
|
|||
|
reachedTop = false;
|
|||
|
renderPage(currentPage);
|
|||
|
|
|||
|
var targetSection = document.getElementById(referId);
|
|||
|
targetSection.scrollIntoView({ block: 'start' });
|
|||
|
});
|
|||
|
return OnePersonMsg
|
|||
|
}
|
|||
|
else {
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function getSearchResults() {
|
|||
|
document.getElementById('searchBox').addEventListener('input', function () {
|
|||
|
const query = document.getElementById('searchBox').value;
|
|||
|
console.log(query);
|
|||
|
const results = idx.search(query);
|
|||
|
if (results.length > 0) {
|
|||
|
|
|||
|
}
|
|||
|
const SearchMContent = document.getElementById('search-modal-content');
|
|||
|
var oldmodalContainer = SearchMContent.querySelector('.modal-container');
|
|||
|
if (oldmodalContainer) {
|
|||
|
oldmodalContainer.remove();
|
|||
|
}
|
|||
|
// 获取modal-container
|
|||
|
const modalContainer = document.createElement('div');
|
|||
|
modalContainer.className = `modal-container`;
|
|||
|
modalContainer.id = 'modal-container';
|
|||
|
const IDresults = [];
|
|||
|
results.forEach(result => {
|
|||
|
IDresults.push({ "idx": server_id_Idx[result.ref], "server_id": result.ref });
|
|||
|
});
|
|||
|
IDresults.sort((a, b) => a["idx"] - b["idx"]);
|
|||
|
IDresults.forEach(ID => {
|
|||
|
// console.log(chatMessages[ID].text);
|
|||
|
var OnePersonMsg = renderResults(ID)
|
|||
|
if (OnePersonMsg) {
|
|||
|
modalContainer.appendChild(OnePersonMsg);
|
|||
|
}
|
|||
|
});
|
|||
|
SearchMContent.appendChild(modalContainer);
|
|||
|
|
|||
|
<!-- 添加提示信息 -->
|
|||
|
|
|||
|
document.getElementById('modal-container').querySelectorAll('.OnePersonmsg').forEach(element => {
|
|||
|
console.log('添加提示信息');
|
|||
|
const tooltip = element.querySelector('.tooltip');
|
|||
|
// console.log(tooltip);
|
|||
|
|
|||
|
// 显示提示文本
|
|||
|
element.addEventListener('mouseover', () => {
|
|||
|
tooltip.style.display = 'block';
|
|||
|
});
|
|||
|
|
|||
|
// 隐藏提示文本
|
|||
|
element.addEventListener('mouseout', () => {
|
|||
|
tooltip.style.display = 'none';
|
|||
|
});
|
|||
|
|
|||
|
// 更新提示文本位置
|
|||
|
element.addEventListener('mousemove', (event) => {
|
|||
|
const xOffset = 10;
|
|||
|
const yOffset = 20;
|
|||
|
tooltip.style.left = (event.pageX + xOffset) + 'px';
|
|||
|
tooltip.style.top = (event.pageY + yOffset) + 'px';
|
|||
|
});
|
|||
|
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
getSearchResults();
|
|||
|
</script>
|
|||
|
</body>
|
|||
|
|
|||
|
</html>
|