@lambo-design/pro-layout 1.0.0-beta.271 → 1.0.0-beta.273

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/package.json +1 -1
  2. package/src/components/{pro-layout-header.vue → pro-layout-header/index.vue} +3 -3
  3. package/src/components/{pro-layout-logo.vue → pro-layout-header/pro-layout-logo/index.vue} +1 -1
  4. package/src/components/{pro-layout-nav-slide-btn.vue → pro-layout-header/pro-layout-nav/index-slide.vue} +3 -3
  5. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-collect.vue +77 -0
  6. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-fullscreen.vue +142 -0
  7. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-icons.vue +65 -0
  8. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-notice.vue +251 -0
  9. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-search.vue +185 -0
  10. package/src/components/pro-layout-header/pro-layout-tools/components/pro-layout-tools-quick-todo.vue +251 -0
  11. package/src/components/{pro-layout-tools.vue → pro-layout-header/pro-layout-tools/index.vue} +2 -2
  12. package/src/components/{pro-layout-sider-collapsed-menu.vue → pro-layout-sider/components/pro-layout-sider-collapsed-menu.vue} +2 -2
  13. package/src/components/{pro-layout-sider-icon.vue → pro-layout-sider/components/pro-layout-sider-icon.vue} +2 -2
  14. package/src/components/{pro-layout-sider-menu-item.vue → pro-layout-sider/components/pro-layout-sider-menu-item.vue} +3 -3
  15. package/src/components/{pro-layout-other-menu.vue → pro-layout-sider/components/pro-layout-sider-other-menu.vue} +1 -1
  16. package/src/components/{pro-layout-sider.vue → pro-layout-sider/index.vue} +8 -8
  17. package/src/styles/images/xiaoxitongzhi.png +0 -0
  18. package/src/utils/sider.js +1 -1
  19. package/src/components/pro-layout-tools-quick-icons.vue +0 -318
  20. /package/src/components/{pro-layout-nav-slide.vue → pro-layout-header/pro-layout-nav/components/pro-layout-nav-slide-menu.vue} +0 -0
  21. /package/src/components/{pro-layout-nav.vue → pro-layout-header/pro-layout-nav/index.vue} +0 -0
  22. /package/src/components/{pro-layout-tools-user.vue → pro-layout-header/pro-layout-tools/components/pro-layout-tools-user.vue} +0 -0
  23. /package/src/components/{pro-layout-trigger.vue → pro-layout-header/pro-layout-trigger/index.vue} +0 -0
  24. /package/src/components/{pro-layout-sider-search.vue → pro-layout-sider/components/pro-layout-sider-search.vue} +0 -0
  25. /package/src/components/{pro-layout-tabs.vue → pro-layout-tabs/index.vue} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/pro-layout",
3
- "version": "1.0.0-beta.271",
3
+ "version": "1.0.0-beta.273",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -13,7 +13,7 @@
13
13
  <LamboProTools></LamboProTools>
14
14
  </div>
15
15
  <div v-show="systemInfo && systemInfo.navType && systemInfo.navType == 'slide'">
16
- <LamboProNavSildeBtn></LamboProNavSildeBtn>
16
+ <LamboProNavSilde></LamboProNavSilde>
17
17
  </div>
18
18
  </div>
19
19
  </template>
@@ -22,7 +22,7 @@
22
22
  import LamboProTrigger from './pro-layout-trigger'
23
23
  import LamboProLogo from './pro-layout-logo'
24
24
  import LamboProNav from './pro-layout-nav'
25
- import LamboProNavSildeBtn from './pro-layout-nav-slide-btn'
25
+ import LamboProNavSilde from './pro-layout-nav/index-slide'
26
26
  import LamboProTools from './pro-layout-tools'
27
27
  import Bus from "@lambo-design/shared/utils/bus";
28
28
  export default {
@@ -42,7 +42,7 @@ export default {
42
42
  LamboProTrigger,
43
43
  LamboProLogo,
44
44
  LamboProNav,
45
- LamboProNavSildeBtn,
45
+ LamboProNavSilde,
46
46
  LamboProTools
47
47
  },
48
48
  computed:{
@@ -122,7 +122,7 @@ export default {
122
122
  .logo{
123
123
  width: 150px;
124
124
  height: 43px;
125
- background: url("../styles/images/inspur.png") no-repeat;
125
+ background: url("../../../styles/images/inspur.png") no-repeat;
126
126
  background-size: 100%;
127
127
  background-position: center; /* 图片在背景区域内居中显示 */
128
128
  //float: left;
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div class="pro-layout-nav-slide-wrapper">
3
3
  <div class="nav-box-slide">
4
- <LamboProNavSlide :accept-int="pointer" @topMen-list="handleCustomEvent" @topMen-num="topMen" @topMen-true="topMenTrue"></LamboProNavSlide>
4
+ <LamboProNavSlideMenu :accept-int="pointer" @topMen-list="handleCustomEvent" @topMen-num="topMen" @topMen-true="topMenTrue"></LamboProNavSlideMenu>
5
5
  </div>
6
6
  <!--slide按钮-->
7
7
  <div class="tools-box-slide">
@@ -25,7 +25,7 @@
25
25
  </template>
26
26
 
27
27
  <script>
28
- import LamboProNavSlide from './pro-layout-nav-slide.vue'
28
+ import LamboProNavSlideMenu from './components/pro-layout-nav-slide-menu'
29
29
  export default {
30
30
  data(){
31
31
  return {
@@ -36,7 +36,7 @@ export default {
36
36
  }
37
37
  },
38
38
  components: {
39
- LamboProNavSlide
39
+ LamboProNavSlideMenu
40
40
  },
41
41
  methods:{
42
42
  handleCustomEvent(data) {
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <Tooltip v-if="currentItem && currentItem.type == 2" content="收藏" placement="bottom">
3
+ <Icon @click="collectEvent" :type=" isCollected ? 'ios-star' : 'ios-star-outline'" size="16" style="cursor: pointer"/>
4
+ </Tooltip>
5
+ </template>
6
+
7
+ <script>
8
+ import Bus from '@lambo-design/shared/utils/bus'
9
+ import { deepCopy } from '@lambo-design/shared/utils/assist'
10
+
11
+ export default {
12
+ name: 'pro-layout-tools-quick-collect',
13
+ data() {
14
+ return {
15
+ menuList: [],
16
+ currentName: '',
17
+ currentItem: {},
18
+ collectMenuList: [],
19
+ isCollected:false
20
+ }
21
+ },
22
+ watch: {
23
+ collectMenuList(){
24
+ this.changeCollectMenu();
25
+ },
26
+ currentName(){
27
+ this.changeCollectMenu();
28
+ }
29
+ },
30
+ methods: {
31
+ initListener() {
32
+ Bus.$on('menu-list', (data) => {
33
+ this.initMenu(data);
34
+ })
35
+ Bus.$on('menu-click',(name,item) => {
36
+ this.initMenuClick(name, item)
37
+ })
38
+ Bus.$on('collect-menu-list',(data)=>{
39
+ this.initCollectMenu(data)
40
+ });
41
+ },
42
+ destroyListener() {
43
+ Bus.$off('menu-list')
44
+ Bus.$off('menu-click')
45
+ Bus.$off('collect-menu-list')
46
+ },
47
+ initMenu(data){
48
+ this.menuList = deepCopy(data);
49
+ },
50
+ initMenuClick(name, item){
51
+ this.currentName = name
52
+ if(item) {
53
+ this.currentItem = item;
54
+ } else {
55
+ this.currentItem = this.menuList.find(menu => menu.name == name)
56
+ }
57
+ },
58
+ initCollectMenu(data){
59
+ this.collectMenuList = deepCopy(data);
60
+ },
61
+ changeCollectMenu(){
62
+ this.isCollected = false
63
+ let collectMenu = this.collectMenuList.find(item => item.name == this.currentName)
64
+ this.isCollected = !!collectMenu;
65
+ },
66
+ collectEvent(){
67
+ Bus.$emit('toggle-collect-menu',!this.isCollected,this.currentItem)
68
+ }
69
+ },
70
+ created() {
71
+ this.initListener()
72
+ },
73
+ beforeDestroy() {
74
+ this.destroyListener()
75
+ }
76
+ }
77
+ </script>
@@ -0,0 +1,142 @@
1
+ <template>
2
+ <Tooltip :content="isFullScreen ? '退出全屏' : '全屏'" placement="bottom">
3
+ <Icon @click="handleFullScreen" :type="isFullScreen ? 'md-contract' : 'md-expand'" size="16" style="cursor: pointer"/>
4
+ </Tooltip>
5
+ </template>
6
+
7
+ <script>
8
+ import Bus from '@lambo-design/shared/utils/bus'
9
+ import { deepCopy } from '@lambo-design/shared/utils/assist'
10
+
11
+ export default {
12
+ name: 'pro-layout-tools-quick-fullscreen',
13
+ data() {
14
+ return {
15
+ isFullScreen:false
16
+ }
17
+ },
18
+ methods: {
19
+ handleKeyPress(event){
20
+ // 按下 F11 键时触发全屏切换
21
+ if (event.key === 'F11') {
22
+ event.preventDefault(); // 防止浏览器默认行为
23
+ this.handleFullScreen();
24
+ }
25
+ },
26
+ // 全屏事件
27
+ handleFullScreen() {
28
+ let element = document.documentElement;
29
+ // 如果是全屏,退出
30
+ if (this.isFullScreen) {
31
+ this.isFullScreen = !this.isFullScreen
32
+ if (document.exitFullscreen) {
33
+ document.exitFullscreen();
34
+ } else if (document.webkitCancelFullScreen) {
35
+ document.webkitCancelFullScreen();
36
+ } else if (document.mozCancelFullScreen) {
37
+ document.mozCancelFullScreen();
38
+ } else if (document.msExitFullscreen) {
39
+ document.msExitFullscreen();
40
+ }
41
+ } else { // 否则,进入全屏
42
+ this.isFullScreen = !this.isFullScreen
43
+ if (element.requestFullscreen) {
44
+ element.requestFullscreen();
45
+ } else if (element.webkitRequestFullScreen) {
46
+ element.webkitRequestFullScreen();
47
+ } else if (element.mozRequestFullScreen) {
48
+ element.mozRequestFullScreen();
49
+ } else if (element.msRequestFullscreen) {
50
+ // IE11
51
+ element.msRequestFullscreen();
52
+ }
53
+ }
54
+ // 改变当前全屏状态
55
+ // this.isFullScreen = !this.isFullScreen;
56
+ },
57
+ handleResize(){
58
+ //增加 timer 定时器的原因是全屏和退出全屏的事件会触发两次窗口大小改变事件,做一次过滤
59
+ if (this.timer) return;
60
+ this.timer = setTimeout(() => {
61
+ // 如果是按 "Esc" 键退出全屏,窗口状态已经是非全屏,但是之前记录的状态还是全屏的状态
62
+ if (!this.checkFull() && this.isFullScreen) {
63
+ //退出全屏状态。。。
64
+ this.isFullScreen = false;
65
+ }else{
66
+ //进入全屏状态。。。
67
+ }
68
+ clearTimeout(this.timer);
69
+ this.timer = null;
70
+ }, 0);
71
+ },
72
+ //判断浏览器是否处于全屏状态
73
+ checkFull() {
74
+ let isFull = document.mozFullScreen ||
75
+ document.fullScreen ||
76
+ document.webkitIsFullScreen ||
77
+ document.webkitRequestFullScreen ||
78
+ document.mozRequestFullScreen ||
79
+ document.msFullscreenEnabled;
80
+ if (isFull === undefined) isFull = false;
81
+ return isFull;
82
+ }
83
+ },
84
+ created() {
85
+ document.addEventListener('keydown', this.handleKeyPress);
86
+ //由于 全屏状态下 ,按 "Esc" 键退出全屏,浏览器监听不到 "Esc" 键的事件,所以需要通过浏览器窗口大小改变的事件去触发退出全屏事件
87
+ window.addEventListener("resize", this.handleResize);
88
+ },
89
+ beforeDestroy() {
90
+ document.removeEventListener('keydown', this.handleKeyPress);
91
+ window.removeEventListener("resize", this.handleResize)
92
+ }
93
+ }
94
+ </script>
95
+ <style lang="less" scoped>
96
+ .pro-layout-tools-quick-icons{
97
+ float: left;
98
+ .font-padding {
99
+ padding-right: 10px
100
+ }
101
+ .topInput{
102
+ float: right;
103
+ position: relative;
104
+ z-index: 1000;
105
+ margin-top: 0px;
106
+ margin-left: 10px;
107
+ }
108
+ .slide-enter-active,
109
+ .slide-leave-active{
110
+ transition: transform 0.5s;
111
+ }
112
+ .slide-enter{
113
+ transform: translateX(100%);
114
+ }
115
+ .slide-leave-to{
116
+ transform: translateX(175px);
117
+ }
118
+ }
119
+ </style>
120
+ <style lang="less">
121
+ @import '@lambo-design/core/src/styles/default.less';
122
+ .quick-search-fast-con-modal {
123
+ .modal-content {
124
+ .menu-style {
125
+ margin : 5px;
126
+ font-size : 16px;
127
+ display : inline-block;
128
+ cursor : pointer;
129
+ &:hover{
130
+ color: var(--primary-color,@_primary-color);
131
+ }
132
+ }
133
+ .label-style {
134
+ height : 13px;
135
+ font-size : 14px;
136
+ font-weight : 500;
137
+ margin-left : 5px;
138
+ line-height : 18px;
139
+ }
140
+ }
141
+ }
142
+ </style>
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <i-row class="pro-layout-tools-quick-icons">
3
+ <i-col v-for="(item,index) in rightTopOptButtonList" :key="index" class="font-padding">
4
+ <ProLayoutToolsQuickSearch v-if="item === 'search'"></ProLayoutToolsQuickSearch>
5
+ <ProLayoutToolsQuickCollect v-if="item === 'collect'"></ProLayoutToolsQuickCollect>
6
+ <ProLayoutToolsQuickFullscreen v-if="item === 'fullScreen'"></ProLayoutToolsQuickFullscreen>
7
+ <ProLayoutToolsQuickTodo v-if="item === 'todo'"></ProLayoutToolsQuickTodo>
8
+ <ProLayoutToolsQuickNotice v-if="item === 'notice'"></ProLayoutToolsQuickNotice>
9
+ </i-col>
10
+ </i-row>
11
+ </template>
12
+
13
+ <script>
14
+ import Bus from '@lambo-design/shared/utils/bus'
15
+ import ProLayoutToolsQuickSearch from './pro-layout-tools-quick-search';
16
+ import ProLayoutToolsQuickCollect from './pro-layout-tools-quick-collect';
17
+ import ProLayoutToolsQuickFullscreen from './pro-layout-tools-quick-fullscreen';
18
+ import ProLayoutToolsQuickTodo from './pro-layout-tools-quick-todo';
19
+ import ProLayoutToolsQuickNotice from './pro-layout-tools-quick-notice';
20
+
21
+ export default {
22
+ name: 'pro-layout-tools-quick-icons',
23
+ data() {
24
+ return {
25
+ rightTopOptButtonList: ['search','collect','fullScreen']
26
+ }
27
+ },
28
+ components:{
29
+ ProLayoutToolsQuickSearch,
30
+ ProLayoutToolsQuickCollect,
31
+ ProLayoutToolsQuickFullscreen,
32
+ ProLayoutToolsQuickTodo,
33
+ ProLayoutToolsQuickNotice
34
+ },
35
+ methods: {
36
+ initListener() {
37
+ Bus.$on('system-info',(data) => {
38
+ this.initSystemInfo(data);
39
+ })
40
+ },
41
+ destroyListener() {
42
+ Bus.$off('system-info')
43
+ },
44
+ initSystemInfo(data){
45
+ if (data && data.rightTopOptButtonList) {
46
+ this.rightTopOptButtonList = deepCopy(data.rightTopOptButtonList)
47
+ }
48
+ },
49
+ },
50
+ created() {
51
+ this.initListener()
52
+ },
53
+ beforeDestroy() {
54
+ this.destroyListener()
55
+ }
56
+ }
57
+ </script>
58
+ <style lang="less" scoped>
59
+ .pro-layout-tools-quick-icons{
60
+ float: left;
61
+ .font-padding {
62
+ padding-right: 10px
63
+ }
64
+ }
65
+ </style>
@@ -0,0 +1,251 @@
1
+ <template>
2
+ <div class="notice-nav">
3
+ <Dropdown >
4
+ <Badge :count="noticeDatas.length" :offset=[-3,-1] size="small">
5
+ <Icon type="ios-notifications-outline" size="20" style="cursor: pointer"></Icon>
6
+ </Badge>
7
+ <template #list>
8
+ <DropdownMenu slot="list" class="demo-dropdown-menu">
9
+ <Tabs v-model="activeTab">
10
+ <TabPane :label="'通知(' + noticeDatas.length + ')'" name="notice">
11
+ <div class="dropdown-content">
12
+ <DropdownItem v-for="(item, index) in noticeDatas" :key="index" class="dropdown-item" @click.native="detail(item)" >
13
+ <div class="item-image-container">
14
+ <img src="../../../../styles/images/xiaoxitongzhi.png" class="item-image" alt=""/>
15
+ <span class="red-dot"></span>
16
+ </div>
17
+ <div class="item-content">
18
+ <div class="item-title" >{{ item.noticeTitle }}</div>
19
+ <div class="item-time">
20
+ <span>
21
+ {{ item.publishTime.split(" ")[0] }}
22
+ </span>
23
+ <span style="margin-left: 5px">
24
+ {{ item.publishTime.split(" ")[1] }}
25
+ </span>
26
+ </div>
27
+ </div>
28
+ </DropdownItem>
29
+ <a @click="enterItem" class="display-more" v-if="noticeDatas.length>0">查看更多</a>
30
+ <div v-if="noticeDatas.length==0" style="text-align: center;font-size: 17px">暂无未读通知</div>
31
+ </div>
32
+ </TabPane>
33
+ <TabPane label="待办" name="todo">
34
+ <div class="dropdown-content">
35
+ <DropdownItem v-for="(item, index) in todos" :key="index" v-if="todos">
36
+ <div class="item-content">
37
+ <div class="item-title">{{ item.title }}</div>
38
+ <div class="item-time">{{ item.time }}</div>
39
+ </div>
40
+ </DropdownItem>
41
+ <dropdownItem>
42
+ <div style="text-align: center;font-size: 17px">暂无数据</div>
43
+ </dropdownItem>
44
+ </div>
45
+ </TabPane>
46
+ </Tabs>
47
+ <div class="dropdown-footer">
48
+ <DropdownItem class="mark-read">
49
+ <Button @click.native="markAllAsRead(noticeDatas) "
50
+ style="font-size: 13px;border-color:#3C7BF6;background-color: #3C7BF6;color: #FFFFFF;">一键已读
51
+ </Button>
52
+ </DropdownItem>
53
+ </div>
54
+ </DropdownMenu>
55
+ </template>
56
+ </Dropdown>
57
+ </div>
58
+ </template>
59
+
60
+ <script>
61
+ import config from '@lambo-design/shared/config/config'
62
+ import ajax from "@lambo-design/shared/utils/ajax";
63
+ import Bus from "@lambo-design/shared/utils/bus";
64
+ export default {
65
+ name: "pro-layout-tools-quick-notice",
66
+ data() {
67
+ return {
68
+ todos: [],
69
+ activeTab: 'notice',
70
+ noticeDatas:[],
71
+ noticeModel:false,
72
+ }
73
+ },
74
+ created() {
75
+ this.init()
76
+ },
77
+ methods: {
78
+
79
+ detail(item){
80
+ let requestParams ={
81
+ noticeId: item.noticeId,
82
+ categoryId:item.categoryId
83
+ }
84
+ ajax.post(
85
+ config.smartMsgServerContext + "/manage/notices/created",
86
+ requestParams
87
+ )
88
+ this.init()
89
+ Bus.$emit('system-modalList',true,item.noticeId)
90
+ },
91
+ markAllAsRead(noticeData){
92
+ let self = this
93
+ const noticeIds = noticeData
94
+ .map((news) => news.noticeId); // 获取所有未读公告的id数组
95
+ const categoryIds = noticeData
96
+ .map((news) => news.categoryId); // 获取所有未读公告的栏目id数组
97
+ let requestParams = {
98
+ noticeId: noticeIds.join(),
99
+ categoryId: categoryIds.join(),
100
+ };
101
+ if (requestParams.categoryId) {
102
+ ajax.post(
103
+ config.smartMsgServerContext + "/manage/notices/created",
104
+ requestParams
105
+ ).then(function (resp) {
106
+ if (resp.data.code === 1) {
107
+ self.init()
108
+ self.$Message.info("已读成功")
109
+ } else {
110
+ alert("请求失败");
111
+ }
112
+ });
113
+ }
114
+ },
115
+
116
+ init() {
117
+ let self = this
118
+ ajax.get(config.smartMsgServerContext + "/manage/notices/gonggaoList").then(function (resp) {
119
+ console.log(resp)
120
+ self.noticeDatas = resp.data.data
121
+ });
122
+ },
123
+ enterItem(val) {
124
+ this.$router.push({name: 'receiveList'});
125
+ }
126
+ }
127
+ }
128
+ </script>
129
+
130
+ <style lang="less" scoped>
131
+ .notice-nav {
132
+ .ivu-badge {
133
+ /deep/ .ivu-badge-count {
134
+ top: 0.5em !important;
135
+ }
136
+
137
+ .ivu-badge-count-primary {
138
+ background: #cd261d !important;
139
+ zoom: 90%
140
+ }
141
+ }
142
+ }
143
+
144
+ .notice-nav {
145
+ margin-right: 20px;
146
+ }
147
+
148
+ .demo-dropdown-menu {
149
+ width: 300px;
150
+ }
151
+
152
+ .dropdown-content {
153
+ max-height: 340px;
154
+ overflow-y: auto;
155
+ display: flex;
156
+ flex-direction: column;
157
+ padding: 10px;
158
+ margin-top: -6px;
159
+ }
160
+
161
+ .dropdown-content::-webkit-scrollbar {
162
+ width: 0;
163
+ height: 0;
164
+ }
165
+
166
+ .dropdown-item {
167
+ display: flex;
168
+ flex-direction: row; /* 修改为row,以便子元素水平排列 */
169
+ align-items: center; /* 确保所有子元素在交叉轴上居中对齐 */
170
+ padding: 14px 0; /* 根据需要添加一些垂直填充 */
171
+ }
172
+
173
+ .item-content {
174
+ flex-grow: 1; /* 允许内容区域填充剩余空间 */
175
+ overflow: hidden;
176
+ display: flex;
177
+ flex-direction: column; /* 保持文字内容的垂直布局 */
178
+ }
179
+
180
+ .item-title {
181
+ font-weight: bold;
182
+ white-space: nowrap;
183
+ overflow: hidden;
184
+ font-size: 13px;
185
+ text-overflow: ellipsis;
186
+ }
187
+
188
+ .item-time {
189
+ font-size: 12px;
190
+ color: #999999;
191
+ white-space: nowrap;
192
+ overflow: hidden;
193
+ text-overflow: ellipsis;
194
+ margin-top: 10px;
195
+
196
+ }
197
+
198
+ /deep/ .ivu-tabs-nav-container {
199
+ width: 100%;
200
+ }
201
+
202
+ /deep/ .ivu-tabs-nav {
203
+ display: flex;
204
+ width: 100%;
205
+ }
206
+
207
+ /deep/ .ivu-tabs-tab {
208
+ flex: 1; /* 使所有标签平均分配空间 */
209
+ text-align: center; /* 使文本居中显示 */
210
+ border: none; /* 根据需要去除标签的边框 */
211
+ font-size: 14px;
212
+ margin-bottom: 8px;
213
+ }
214
+
215
+ .item-image {
216
+ width: 40px; /* 或者您想要的任何尺寸 */
217
+ height: 37px; /* 或者您想要的任何尺寸 */
218
+ margin-left: 7px;
219
+ }
220
+
221
+ .display-more {
222
+ text-align: center;
223
+ margin: 22px 0 4px 0;
224
+ }
225
+
226
+ .dropdown-footer {
227
+ text-align: right;
228
+ border-top: 1px solid #bbbbbb;
229
+
230
+ }
231
+
232
+ .mark-read span {
233
+ margin-left: 5px;
234
+ }
235
+
236
+ .item-image-container {
237
+ position: relative;
238
+ display: inline-block; /* 或者 flex,根据需要 */
239
+ margin-right: 11px; /* 在图片和文本之间添加一些间距 */
240
+ }
241
+
242
+ .red-dot {
243
+ position: absolute;
244
+ margin: 0 0 0 -8px;
245
+ width: 10px; /* 小红点的大小 */
246
+ height: 10px; /* 小红点的大小 */
247
+ border-radius: 50%; /* 使其成为圆形 */
248
+ background-color: red; /* 红色背景 */
249
+ }
250
+
251
+ </style>