u
This commit is contained in:
1 parent
898d209594
commit
0189bf89c9
31 files changed
+745
-3
No files matched your search
@@ -34,7 +34,7 @@ public class FilePO {
|
||||
private String createTime;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_by",
|
||||
value = "b_create_user_id",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private String createBy;
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostCommentPO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostCommentMapper extends BaseMapper<PostCommentPO> {
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostFavoritePO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostFavoriteMapper extends BaseMapper<PostFavoritePO> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostLikePO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostLikeMapper extends BaseMapper<PostLikePO> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostPO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostMapper extends BaseMapper<PostPO> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostTagPO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostTagMapper extends BaseMapper<PostTagPO> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package cn.link56.forum.mapper;
|
||||
|
||||
import cn.link56.forum.model.po.PostViewPO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PostViewMapper extends BaseMapper<PostViewPO> {
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post_comment")
|
||||
public class PostCommentPO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_father_id")
|
||||
private Long fatherId;
|
||||
|
||||
@TableField("b_post_id")
|
||||
private Long postId;
|
||||
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_user_id",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createUserId;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createTime;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post_favorite")
|
||||
public class PostFavoritePO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_post_id")
|
||||
private Long postId;
|
||||
|
||||
@TableField("b_user_id")
|
||||
private Long userId;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createTime;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post_like")
|
||||
public class PostLikePO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_post_id")
|
||||
private Long postId;
|
||||
|
||||
@TableField("b_user_id")
|
||||
private Long userId;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createTime;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post")
|
||||
public class PostPO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_company_id")
|
||||
private Long companyId;
|
||||
|
||||
@TableField("b_title")
|
||||
private String title;
|
||||
|
||||
@TableField("b_content")
|
||||
private String content;
|
||||
|
||||
@TableField("b_summary")
|
||||
private String summary;
|
||||
|
||||
@TableField("b_tags")
|
||||
private String tags;
|
||||
|
||||
@TableField("b_cover")
|
||||
private String cover;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_user_id",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createUserId;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createTime;
|
||||
|
||||
@TableField(
|
||||
value = "b_update_user_id",
|
||||
fill = FieldFill.INSERT_UPDATE
|
||||
)
|
||||
private Long updateUserId;
|
||||
|
||||
@TableField(
|
||||
value = "b_update_time",
|
||||
fill = FieldFill.INSERT_UPDATE
|
||||
)
|
||||
private Long updateTime;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post_tag")
|
||||
public class PostTagPO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_name")
|
||||
private String name;
|
||||
|
||||
@TableField("b_canuse")
|
||||
private String canuse;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.link56.forum.model.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@TableName("b_post_view")
|
||||
public class PostViewPO {
|
||||
@TableId(value = "b_id")
|
||||
private Long id;
|
||||
|
||||
@TableField("b_post_id")
|
||||
private Long postId;
|
||||
|
||||
@TableField("b_user_id")
|
||||
private Long userId;
|
||||
|
||||
@TableField(
|
||||
value = "b_create_time",
|
||||
fill = FieldFill.INSERT
|
||||
)
|
||||
private Long createTime;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostCommentMapper;
|
||||
import cn.link56.forum.model.po.PostCommentPO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostCommentService extends ServiceImpl<PostCommentMapper, PostCommentPO> {
|
||||
@Resource
|
||||
private PostCommentMapper postCommentMapper;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostFavoriteMapper;
|
||||
import cn.link56.forum.model.po.PostFavoritePO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostFavoriteService extends ServiceImpl<PostFavoriteMapper, PostFavoritePO> {
|
||||
@Resource
|
||||
private PostFavoriteMapper postFavoriteMapper;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostLikeMapper;
|
||||
import cn.link56.forum.model.po.PostLikePO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostLikeService extends ServiceImpl<PostLikeMapper, PostLikePO> {
|
||||
@Resource
|
||||
private PostLikeMapper postLikeMapper;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostMapper;
|
||||
import cn.link56.forum.model.po.PostPO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostService extends ServiceImpl<PostMapper, PostPO> {
|
||||
@Resource
|
||||
private PostMapper postMapper;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostTagMapper;
|
||||
import cn.link56.forum.model.po.PostTagPO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostTagService extends ServiceImpl<PostTagMapper, PostTagPO> {
|
||||
@Resource
|
||||
private PostTagMapper postTagMapper;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package cn.link56.forum.service;
|
||||
|
||||
import cn.link56.forum.mapper.PostViewMapper;
|
||||
import cn.link56.forum.model.po.PostViewPO;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
public class PostViewService extends ServiceImpl<PostViewMapper, PostViewPO> {
|
||||
@Resource
|
||||
private PostViewMapper postViewMapper;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<?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 height="1024" node-id="1" sillyvg="true" template-height="1024" template-width="1630" version="1.1" viewBox="0 0 1630 1024" width="1630" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs node-id="22"></defs><g node-id="24"><path d="M 160.10 945.65 C -58.52 945.76 195.58 608.18 322.49 569.93 C 432.18 536.92 434.81 618.46 568.42 637.49 C 920.85 687.62 1085.93 212.99 1278.57 287.35 C 1401.11 334.87 1475.64 491.61 1425.96 667.56 C 1397.52 767.96 1317.69 907.04 1281.11 945.65 C 1090.59 945.58 934.29 945.58 812.22 945.65 C 593.60 945.76 378.72 945.53 160.10 945.65 Z" fill="#f0f1f9" fill-rule="nonzero" group-id="1" id="bg" node-id="6" stroke="none" target-height="732.7776" target-width="1534.1641" target-x="-58.52308" target-y="212.98712"></path><g node-id="25"><path d="M 530.87 377.18 L 1297.70 404.54 C 1311.44 405.03 1322.19 416.57 1321.70 430.31 C 1321.65 431.63 1321.50 432.94 1321.24 434.24 L 1219.96 948.69 C 1217.79 959.73 1207.59 967.31 1196.39 966.22 L 530.87 901.43 L 530.87 901.43 L 530.87 377.18 Z" fill="#3681fd" fill-rule="evenodd" group-id="1,2" id="路径-11" node-id="8" stroke="#555555" stroke-linecap="butt" stroke-width="9.309091" target-height="590.1376" target-width="791.31384" target-x="530.87366" target-y="377.1764"></path><g node-id="26"><path d="M 1418.25 252.37 C 1418.25 252.37 1182.83 305.68 1236.56 403.86 C 1252.71 433.38 1309.07 448.83 1326.99 422.25 C 1338.90 404.59 1347.94 397.55 1341.14 347.38 C 1334.26 296.57 1193.18 297.62 1166.01 364.28 C 1147.90 408.72 1137.29 451.35 1134.18 492.17" fill="none" group-id="1,2,3" id="路径-5" node-id="9" stroke="#555555" stroke-dasharray="43.72627 43.72627" stroke-linecap="butt" stroke-opacity="0.2" stroke-width="8.994358" target-height="239.79517" target-width="284.06567" target-x="1134.1833" target-y="252.37048"></path></g><path d="M 461.08 201.26 L 409.12 764.21 L 409.12 764.21 L 1180.82 962.27 C 1190.78 964.83 1200.93 958.83 1203.49 948.87 C 1203.85 947.45 1204.05 945.99 1204.07 944.52 L 1215.73 173.99 C 1215.94 160.24 1204.96 148.92 1191.21 148.72 C 1190.73 148.71 1190.25 148.72 1189.78 148.74 L 484.82 178.67 C 472.37 179.19 462.22 188.85 461.08 201.26 Z" fill="#ffffff" fill-rule="evenodd" group-id="1,2" id="路径-10" node-id="10" stroke="#555555" stroke-linecap="butt" stroke-width="9.309091" target-height="816.11804" target-width="806.81934" target-x="409.1222" target-y="148.70956"></path><path d="M 418.56 412.38 L 547.77 412.38 L 613.57 484.43 L 1055.52 484.43 L 1169.69 789.58 L 481.66 729.94 Z" fill="#3681fd" fill-rule="evenodd" group-id="1,2" id="矩形备份-2" node-id="11" stroke="none" target-height="377.20624" target-width="751.12854" target-x="418.5631" target-y="412.3786"></path><g node-id="27"><path d="M 1302.40 211.10 L 1387.75 259.69 L 1458.41 211.09 L 1412.41 273.78 L 1495.93 307.56 L 1563.84 131.21 Z" fill="#3681fd" fill-rule="evenodd" group-id="1,2,4" id="路径-4" node-id="12" stroke="none" target-height="176.34915" target-width="261.44397" target-x="1302.3955" target-y="131.20853"></path></g><path d="M 323.66 947.72 L 1189.18 967.53 C 1201.26 967.80 1211.27 958.24 1211.54 946.17 C 1211.58 944.66 1211.45 943.14 1211.17 941.65 L 1137.12 545.92 L 1137.12 545.92 L 553.80 544.05 L 417.85 378.20 L 181.36 363.49 L 315.11 940.75 C 316.03 944.76 319.56 947.62 323.66 947.72 Z" fill="#ffffff" fill-rule="evenodd" group-id="1,2" id="路径-7" node-id="13" stroke="#555555" stroke-linecap="butt" stroke-width="9.309091" target-height="604.31415" target-width="1030.2188" target-x="181.35751" target-y="363.49078"></path><path d="M 339.90 472.48 L 491.02 475.24 L 551.02 548.52 L 941.92 548.52 L 1042.31 762.66 L 428.19 746.71 Z" fill="#eff0f9" fill-rule="evenodd" group-id="1,2" id="矩形备份-2" node-id="14" stroke="none" target-height="290.18347" target-width="702.4082" target-x="339.90186" target-y="472.47754"></path><path d="M 722.23 839.60 C 719.54 842.37 717.00 845.64 714.60 849.40 C 710.98 855.09 709.02 861.68 708.92 868.44 C 708.65 888.37 724.41 904.74 744.12 905.02 L 746.63 904.92 C 763.20 903.33 780.81 884.70 784.45 869.44 C 792.62 835.13 748.18 812.89 722.23 839.60 Z M 773.86 866.77 C 771.24 877.79 757.01 892.83 745.86 893.91 L 743.94 893.99 C 730.59 893.79 719.66 882.44 719.85 868.63 C 719.92 863.94 721.28 859.37 723.79 855.43 C 725.81 852.26 727.91 849.56 730.07 847.34 C 747.99 828.89 777.64 842.96 774.24 864.87 L 773.86 866.77 Z" fill="#555555" fill-rule="nonzero" group-id="1,2" id="路径-3备份" node-id="15" stroke="none" target-height="92.13165" target-width="83.96948" target-x="708.65137" target-y="812.8887"></path><path d="M 900.24 835.76 C 898.77 835.70 897.27 835.71 895.74 835.78 C 886.42 836.21 877.56 840.07 870.85 846.64 C 855.72 861.46 855.32 885.81 869.94 901.04 L 871.88 902.87 C 885.88 914.91 913.31 915.54 927.28 907.28 C 958.71 888.67 939.60 837.1Line truncated
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
@@ -0,0 +1,90 @@
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
},
|
||||
subTitle: {
|
||||
type: String,
|
||||
},
|
||||
inContainer: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
})
|
||||
|
||||
const containerClass = computed(() => {
|
||||
return props.inContainer ? 'container-inner' : 'container-fixed'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div :class="containerClass">
|
||||
<div class="empty-wrapper">
|
||||
<img class="empty-image" src="/no-data.svg">
|
||||
|
||||
<div v-if="title" class="empty-title">
|
||||
{{ title }}
|
||||
</div>
|
||||
|
||||
<div v-if="subTitle" class="empty-subtitle">
|
||||
{{ subTitle }}
|
||||
</div>
|
||||
|
||||
<div v-if="$slots.extra" class="empty-extra">
|
||||
<slot name="extra" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container-inner {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container-fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.empty-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
.empty-image {
|
||||
width: 360px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.empty-title {
|
||||
margin-top: 24px;
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.empty-subtitle {
|
||||
margin-top: 12px;
|
||||
font-size: 18px;
|
||||
color: #666;
|
||||
line-height: 1.6;
|
||||
max-width: 360px;
|
||||
}
|
||||
|
||||
.empty-extra {
|
||||
margin-top: 28px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,76 @@
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
inContainer: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
})
|
||||
|
||||
const containerClass = computed(() => {
|
||||
return props.inContainer ? 'container-inner' : 'container-fixed'
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div :class="containerClass">
|
||||
<!-- From Uiverse.io by nazeer004 -->
|
||||
<div class="loader">
|
||||
<span>link56.net</span>
|
||||
<span>link56.net</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container-inner {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container-fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
/* From Uiverse.io by nazeer004 */
|
||||
.loader {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.loader span {
|
||||
position: absolute;
|
||||
color: #fff;
|
||||
transform: translate(-50%, -50%);
|
||||
font-size: 38px;
|
||||
letter-spacing: 5px;
|
||||
}
|
||||
|
||||
.loader span:nth-child(1) {
|
||||
color: transparent;
|
||||
-webkit-text-stroke: 0.3px rgb(0, 57, 244);
|
||||
}
|
||||
|
||||
.loader span:nth-child(2) {
|
||||
color: rgb(0, 4, 255);
|
||||
-webkit-text-stroke: 1px rgb(17, 0, 255);
|
||||
animation: uiverse723 3s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes uiverse723 {
|
||||
0%,
|
||||
100% {
|
||||
clip-path: polygon(0% 45%, 15% 44%, 32% 50%, 54% 60%, 70% 61%, 84% 59%, 100% 52%, 100% 100%, 0% 100%);
|
||||
}
|
||||
|
||||
50% {
|
||||
clip-path: polygon(0% 60%, 16% 65%, 34% 66%, 51% 62%, 67% 50%, 84% 45%, 100% 46%, 100% 100%, 0% 100%);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -13,8 +13,8 @@ const userStore = useUserStore()
|
||||
const menuList = [
|
||||
{ name: '首页', path: '/' },
|
||||
{ name: '企业名录', path: '/company' },
|
||||
{ name: '论坛中心', path: '/forum' },
|
||||
{ name: '关于我们', path: '/companies' },
|
||||
{ name: '论坛中心', path: '/post' },
|
||||
{ name: '关于我们', path: '/aboutus' },
|
||||
{ name: '联系我们', path: '/forum' },
|
||||
]
|
||||
|
||||
|
||||
@@ -18,6 +18,19 @@ const router = createRouter({
|
||||
path: '/company',
|
||||
component: () => import('@/views/company/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/post',
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: () => import('@/views/post/home/index.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/aboutus',
|
||||
component: () => import('@/views/aboutus/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/company/detail',
|
||||
component: () => import('@/views/company/detail/index.vue'),
|
||||
|
||||
@@ -13,6 +13,8 @@ declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
AnchorMenu: typeof import('./../components/anchor-menu/index.vue')['default']
|
||||
AreaSelect: typeof import('./../components/AreaSelect.vue')['default']
|
||||
CustomEmpty: typeof import('./../components/CustomEmpty.vue')['default']
|
||||
CustomLoading: typeof import('./../components/custom-loading/index.vue')['default']
|
||||
Directory: typeof import('./../components/wang-editor/modules/directory.vue')['default']
|
||||
EmailCodeInput: typeof import('./../components/EmailCodeInput.vue')['default']
|
||||
HelloWorld: typeof import('./../components/HelloWorld.vue')['default']
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>123</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
//
|
||||
</style>
|
||||
@@ -0,0 +1,10 @@
|
||||
<script lang="ts" setup>
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="" />
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
//
|
||||
</style>
|
||||
@@ -0,0 +1,146 @@
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue'
|
||||
import CustomLoading from '@/components/custom-loading/index.vue'
|
||||
import CustomEmpty from '@/components/CustomEmpty.vue'
|
||||
|
||||
const loading = ref<boolean>(false)
|
||||
|
||||
const dataResult = ref<BasePageResult<any>>({
|
||||
total: 0,
|
||||
records: [],
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="loading">
|
||||
<CustomLoading />
|
||||
</div>
|
||||
<CustomEmpty v-else-if="dataResult.total === 0" title="🍵 帖子空空如也" sub-title="快来创建第一个贴子吧">
|
||||
<template #extra>
|
||||
<el-button type="primary">
|
||||
创建帖子
|
||||
</el-button>
|
||||
</template>
|
||||
</CustomEmpty>
|
||||
|
||||
|
||||
<div v-else class="post-container">
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.post-container {
|
||||
height: 100%;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.post-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.post-item {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
padding: 16px;
|
||||
background-color: #ffffff;
|
||||
transition: all 0.3s ease;
|
||||
border-bottom: 1px solid #f6f6f6;
|
||||
}
|
||||
.post-content {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
.post-title {
|
||||
font-weight: blod;
|
||||
font-size: 18px;
|
||||
width: 500px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: #005da6;
|
||||
text-decoration: underline;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
}
|
||||
.post-title:hover {
|
||||
color: #fa8c16;
|
||||
}
|
||||
.post-summary {
|
||||
font-size: 13px;
|
||||
color: #999;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
|
||||
line-clamp: 2;
|
||||
box-orient: vertical;
|
||||
}
|
||||
.post-footer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
.post-meta {
|
||||
display: flex;
|
||||
color: #777;
|
||||
.post-meta-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
.post-author {
|
||||
max-width: 300px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.post-tags {
|
||||
max-width: 300px;
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
flex-wrap: wrap;
|
||||
.post-tag {
|
||||
background-color: #165dff;
|
||||
border-radius: 2px;
|
||||
font-size: 10px;
|
||||
padding: 4px 8px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
display: inline-block;
|
||||
line-height: 12px;
|
||||
max-width: 80px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.post-cover {
|
||||
width: 180px;
|
||||
overflow: hidden;
|
||||
max-height: 140px;
|
||||
min-height: 120px;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
||||
.spin-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 24px 0px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,10 @@
|
||||
<script lang="ts" setup>
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class=""></div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
//
|
||||
</style>
|
||||
@@ -0,0 +1,31 @@
|
||||
<script lang="ts" setup>
|
||||
import Nav from './components/nav.vue' // 导航栏组件
|
||||
import PostList from './components/post-list.vue' // 帖子列表组件
|
||||
import Sidebar from './components/sidebar.vue' // 推荐组件
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="post">
|
||||
<Nav class="nav" />
|
||||
<PostList class="post-list" />
|
||||
<Sidebar class="sidebar" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.post {
|
||||
display: flex;
|
||||
padding: 0px 60px;
|
||||
width: 100%;
|
||||
}
|
||||
.nav {
|
||||
width: 200px;
|
||||
}
|
||||
.sidebar {
|
||||
width: 250px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.post-list {
|
||||
flex: 1;
|
||||
}
|
||||
</style>
|
||||
@@ -68,6 +68,7 @@ const dataResult = reactive<BasePageResult<ForumPostPageResult>>({
|
||||
total: 0,
|
||||
record: []
|
||||
});
|
||||
|
||||
const loading = ref<boolean>(true);
|
||||
|
||||
const searchParams = reactive<ForumPostPageParams>({
|
||||
|
||||
Reference in new issue
Block a user