diff --git a/index.html b/index.html
index a7740e6e5..5c4167263 100644
--- a/index.html
+++ b/index.html
@@ -4,6 +4,7 @@
+
diff --git a/package.json b/package.json
index 98b90dce7..5a08a45ee 100644
--- a/package.json
+++ b/package.json
@@ -48,6 +48,7 @@
"axios": "^1.4.0",
"echarts": "^5.2.2",
"element-plus": "^2.3.4",
+ "font-awesome": "^4.7.0",
"nprogress": "^0.2.0",
"path-browserify": "^1.0.1",
"path-to-regexp": "^6.2.0",
diff --git a/src/api/knowledge/index.ts b/src/api/knowledge/index.ts
new file mode 100644
index 000000000..9a55625fe
--- /dev/null
+++ b/src/api/knowledge/index.ts
@@ -0,0 +1,38 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+import { UserDetail, UserQuery, NaviQuery, Navi ,PageParam,graphicformList} from './types';
+
+
+//获取当前用户详细信息
+export function getUserDetail(data: UserQuery): AxiosPromise {
+ return request({
+ url: '/javasys/user/detail',
+ method: 'post',
+ data: data,
+
+ });
+}
+
+//获取左侧导航栏信息
+export function getZxxyNavis(data: NaviQuery): AxiosPromise {
+ return request({
+ url: '/javasys/archive/zxxy',
+ method: 'post',
+ data: data,
+
+ });
+}
+
+//获取推荐分页
+export function getTuijian(data: PageParam): AxiosPromise {
+ return request({
+ url: '/javasys/graphicform/zxxy',
+ method: 'post',
+ data: data,
+
+ });
+}
+
+
+
+
diff --git a/src/api/knowledge/scroll.js b/src/api/knowledge/scroll.js
new file mode 100644
index 000000000..6518b46fd
--- /dev/null
+++ b/src/api/knowledge/scroll.js
@@ -0,0 +1,100 @@
+
+
+// 滚动监听器
+export function onScroll() {
+
+
+ // 获取所有锚点元素
+ const navContents = document.querySelectorAll('.models')
+
+ // 所有锚点元素的 offsetTop
+ const offsetTopArr = []
+ navContents.forEach(item => {
+ offsetTopArr.push(item.offsetTop)
+ })
+ // 获取当前文档流的 scrollTop
+ const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
+ // 定义当前点亮的导航下标
+ let navIndex = 0
+ for (let n = 0; n < offsetTopArr.length; n++) {
+ // 如果 scrollTop 大于等于第n个元素的 offsetTop 则说明 n-1 的内容已经完全不可见
+ // 那么此时导航索引就应该是n了
+ if (scrollTop+350 >= offsetTopArr[n]) {
+ navIndex = n
+ }
+ //若滚动条已经到底则直接激活最后一个导航
+ if (scrollTop + document.documentElement.clientHeight === document.documentElement.scrollHeight) {
+ navIndex = offsetTopArr.length - 1;
+ }
+ }
+ //active.value = navIndex
+ return navIndex;
+ }
+
+ // 跳转到指定索引的元素
+ export function scrollTo(index) {
+
+ // 获取目标的 offsetTop
+ // css选择器是从 1 开始计数,我们是从 0 开始,所以要 +1
+ const targetOffsetTop = document.querySelector(`.content .models:nth-child(${index + 1})`).offsetTop
+ // 获取当前 offsetTop
+ let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
+ // 定义一次跳 150 个像素
+ const STEP = 50
+ // 判断是往下滑还是往上滑
+ if (scrollTop > targetOffsetTop) {
+ // 往上滑
+ smoothUp()
+ } else {
+ // 往下滑
+ smoothDown()
+ }
+ // 定义往下滑函数
+ function smoothDown() {
+ // 如果当前 scrollTop 小于 targetOffsetTop 说明视口还没滑到指定位置
+ if (scrollTop < targetOffsetTop) {
+ // 如果和目标相差距离大于等于 STEP 就跳 STEP
+ // 否则直接跳到目标点,目标是为了防止跳过了。
+ if (targetOffsetTop - scrollTop >= STEP) {
+ scrollTop += STEP
+ } else {
+ scrollTop = targetOffsetTop
+ }
+ document.body.scrollTop = scrollTop
+ document.documentElement.scrollTop = scrollTop
+ // 关于 requestAnimationFrame 可以自己查一下,在这种场景下,相比 setInterval 性价比更高
+ requestAnimationFrame(smoothDown)
+ }
+ }
+ // 定义往上滑函数
+ function smoothUp() {
+ if (scrollTop > targetOffsetTop) {
+ if (scrollTop - targetOffsetTop >= STEP) {
+ scrollTop -= STEP
+ } else {
+ scrollTop = targetOffsetTop
+ }
+ document.body.scrollTop = scrollTop
+ document.documentElement.scrollTop = scrollTop
+ requestAnimationFrame(smoothUp)
+ }
+ }
+ }
+ export function formatDate(timestamp) {
+ var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+
+ var Y = date.getFullYear() + '-';
+
+ var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
+
+ var D = date.getDate() + ' ';
+
+ var h = date.getHours() + ':';
+
+ var m = date.getMinutes() + ':';
+
+ var s = date.getSeconds();
+
+ return Y+M+D+h+m+s;
+ }
+
diff --git a/src/api/knowledge/types.ts b/src/api/knowledge/types.ts
new file mode 100644
index 000000000..f370284c2
--- /dev/null
+++ b/src/api/knowledge/types.ts
@@ -0,0 +1,159 @@
+//用户查询
+export interface UserQuery {
+ userkey: string;
+ usertoken: string;
+}
+
+//用户信息
+export interface UserDetail {
+ //证件号码
+ idcardno?: string[];
+ //姓名
+ name: string;
+ //头像url
+ icon?: string;
+ //工号
+ wmNumber: string;
+ //唯一识别码
+ wmKey: number;
+ //adminorg
+ adminorg:number;
+
+}
+
+//导航栏查询
+export interface NaviQuery {
+ atParentId: string;
+
+}
+//导航栏信息
+export interface Navi{
+
+ atId:number;
+ //档案分类名称
+ atTitle:string;
+ //档案分类状态
+ atStater:number;
+ //档案分类父级
+ atParentId:number;
+ //写入时间
+ atTime:number;
+ //添加人员
+ atUid:number;
+ //排序
+ atSort:number;
+
+}
+export type cardList = PageResult
+//卡片
+export interface Graphicform {
+ gId?:number;
+ //标题
+ gTitle?:string;
+ //关键字
+ gKey?:string;
+ //描述
+ gDescribe?:string;
+ //父级
+ gParent?:number;
+ //分类
+ gParentSun?:number;
+ //文档来源(1:原创;2:转载)
+ gSource?:number;
+ //转载地址
+ gSourceUrl?:string;
+ //缩略图
+ gThumbnail?:string;
+ //排序
+ gSort?:number;
+ //评论设置(1:允许评论;2:禁止评论)
+ gComment?:number;
+ //访问权限(1:公开;2:分厂;3:工段;4:自定义)
+ gVisitStrat?:number;
+ //状态(1:草稿;2:发表;3:下架;4:删除)
+ gState?:number;
+ //写入时间
+ gAddTime?:number;
+ //修改时间
+ gEiteTime?:number;
+ //编辑人员
+ gUserKey?:number;
+ //分厂
+ gBfId?:number;
+ //工段
+ gWsId?:number;
+ //班组
+ gTeam?:number;
+ //是否允许下载(1:允许;2:禁止)
+ gDownloadState?:number;
+ //阅读量
+ gRead?:number;
+ //评论数
+ gComSum?:number;
+ //收藏数
+ gCollectionSum?:number;
+ //点赞数
+ gLikes?:number;
+ //推荐(1:推荐,2:不推荐)
+ gRecommend?:number;
+ //图文详情
+ gContent?:string;
+ //踩数量
+ gStepOn?:number;
+ //自定义可见范围
+ gRange?:string;
+ //写入分厂
+ gWriteBfid?:number;
+ //正文文档名称
+ gTextName?:string;
+ //正文文档URL
+ gTestUrl?:string;
+ //物理地址
+ gPhysicsPath?:string;
+ //写入人员组织
+ gWriteGroup?:number;
+ //外部链接
+ gOuterLink?:string;
+
+}
+export interface PageParam extends PageQuery{
+ total:number;
+ archivesTypeAtParentId?:string; //知识库or新闻资讯
+ gParentSun?:string; //标题分类
+ adminorg:string;
+ key:string;
+ userkey: string,
+ usertoken: string,
+
+}
+
+/**
+ * 卡片list
+ */
+export type graphicformList = PageResultJava
+
+/**
+ * 分页响应对象
+ */
+interface PageResultJava {
+ /**
+ * 数据列表
+ */
+ list: T;
+ /**
+ * 数据总数
+ */
+ total: number;
+ //每页条数
+ pageSize:number;
+ //总页数
+ pages:number;
+ //前一页
+ prePage:number;
+ //
+ size:number;
+ startRow:number;
+ //当前页
+ pageNum:number;
+
+}
\ No newline at end of file
diff --git a/src/assets/404_images/imgNotFound.png b/src/assets/404_images/imgNotFound.png
new file mode 100644
index 000000000..dfd587ac9
Binary files /dev/null and b/src/assets/404_images/imgNotFound.png differ
diff --git a/src/views/knowledge/knowledge/components/Navili.vue b/src/views/knowledge/knowledge/components/Navili.vue
new file mode 100644
index 000000000..4a2449614
--- /dev/null
+++ b/src/views/knowledge/knowledge/components/Navili.vue
@@ -0,0 +1,25 @@
+
+
+
+ {{ oneli?.atTitle }}
+
+
+
\ No newline at end of file
diff --git a/src/views/knowledge/knowledge/components/archivestype.vue b/src/views/knowledge/knowledge/components/archivestype.vue
new file mode 100644
index 000000000..846308d5b
--- /dev/null
+++ b/src/views/knowledge/knowledge/components/archivestype.vue
@@ -0,0 +1,297 @@
+
+
+
+
+
+
{{ props.liContent?.atTitle }}
+
+
+
+
+
+
+
+
+
+ {{ item.gTitle }}
+ {{ item.gDescribe }}
+
+ {{ formatDate(item.gAddTime) }}
+
+
+ 收藏({{ item.gCollectionSum }} ) 赞({{
+ item.gLikes }} ) 踩({{ item.gStepOn }} )
+ 阅读 ({{ item.gRead }} )
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/knowledge/knowledge/index.vue b/src/views/knowledge/knowledge/index.vue
new file mode 100644
index 000000000..f098a1c74
--- /dev/null
+++ b/src/views/knowledge/knowledge/index.vue
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+
+
+
+
推荐
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+ {{ item.gTitle }}
+ {{ item.gDescribe }}
+
+ {{ formatDate(item.gAddTime) }}
+
+
+ 收藏({{ item.gCollectionSum }} ) 赞({{
+ item.gLikes }} ) 踩({{ item.gStepOn }} )
+ 阅读 ({{ item.gRead }} )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tsconfig.json b/tsconfig.json
index b2fbbcf90..b764c8613 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,5 +1,6 @@
{
"compilerOptions": {
+ "outDir": "build",
"target": "esnext",
"useDefineForClassFields": true,
"module": "esnext",
@@ -19,8 +20,9 @@
"skipLibCheck": true /* Skip type checking all .d.ts files. */,
"allowSyntheticDefaultImports": true /* 允许默认导入 */,
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */
+
},
- "include": ["src/**/*.ts", "src/**/*.vue", "src/types/**/*.d.ts"],
+ "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.vue", "src/types/**/*.d.ts"],
"exclude": ["node_modules", "dist", "**/*.js"],
"references": [{ "path": "./tsconfig.node.json" }]
}