Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
corporateCulture-qd
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王立鹏
corporateCulture-qd
Commits
8e1b042a
Commit
8e1b042a
authored
Dec 23, 2025
by
lijiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【需求 17679】 perf: 继续优化类型
parent
b034b191
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
41 additions
and
130 deletions
+41
-130
env.d.ts
env.d.ts
+3
-0
IconCommunity.vue
src/components/icons/IconCommunity.vue
+0
-7
IconDocumentation.vue
src/components/icons/IconDocumentation.vue
+0
-7
IconEcosystem.vue
src/components/icons/IconEcosystem.vue
+0
-7
IconSupport.vue
src/components/icons/IconSupport.vue
+0
-7
IconTooling.vue
src/components/icons/IconTooling.vue
+0
-19
config.ts
src/config.ts
+2
-2
enums.ts
src/constants/enums.ts
+0
-1
useHintAnimation.ts
src/hooks/useHintAnimation.ts
+1
-1
publishDialog.vue
src/layoutCulture/components/publishDialog.vue
+19
-5
guards.ts
src/router/guards.ts
+6
-21
index.ts
src/router/index.ts
+2
-34
route.ts
src/router/route.ts
+0
-17
index.vue
src/views/userPage/index.vue
+8
-2
No files found.
env.d.ts
View file @
8e1b042a
...
@@ -12,3 +12,6 @@ declare module 'vue' {
...
@@ -12,3 +12,6 @@ declare module 'vue' {
dayjs
:
typeof
dayjs
dayjs
:
typeof
dayjs
}
}
}
}
// src/types/wangeditor.d.ts
declare
module
'@wangeditor/editor-for-vue'
{}
src/components/icons/IconCommunity.vue
deleted
100644 → 0
View file @
b034b191
<
template
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"20"
height=
"20"
fill=
"currentColor"
>
<path
d=
"M15 4a1 1 0 1 0 0 2V4zm0 11v-1a1 1 0 0 0-1 1h1zm0 4l-.707.707A1 1 0 0 0 16 19h-1zm-4-4l.707-.707A1 1 0 0 0 11 14v1zm-4.707-1.293a1 1 0 0 0-1.414 1.414l1.414-1.414zm-.707.707l-.707-.707.707.707zM9 11v-1a1 1 0 0 0-.707.293L9 11zm-4 0h1a1 1 0 0 0-1-1v1zm0 4H4a1 1 0 0 0 1.707.707L5 15zm10-9h2V4h-2v2zm2 0a1 1 0 0 1 1 1h2a3 3 0 0 0-3-3v2zm1 1v6h2V7h-2zm0 6a1 1 0 0 1-1 1v2a3 3 0 0 0 3-3h-2zm-1 1h-2v2h2v-2zm-3 1v4h2v-4h-2zm1.707 3.293l-4-4-1.414 1.414 4 4 1.414-1.414zM11 14H7v2h4v-2zm-4 0c-.276 0-.525-.111-.707-.293l-1.414 1.414C5.42 15.663 6.172 16 7 16v-2zm-.707 1.121l3.414-3.414-1.414-1.414-3.414 3.414 1.414 1.414zM9 12h4v-2H9v2zm4 0a3 3 0 0 0 3-3h-2a1 1 0 0 1-1 1v2zm3-3V3h-2v6h2zm0-6a3 3 0 0 0-3-3v2a1 1 0 0 1 1 1h2zm-3-3H3v2h10V0zM3 0a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1V0zM0 3v6h2V3H0zm0 6a3 3 0 0 0 3 3v-2a1 1 0 0 1-1-1H0zm3 3h2v-2H3v2zm1-1v4h2v-4H4zm1.707 4.707l.586-.586-1.414-1.414-.586.586 1.414 1.414z"
/>
</svg>
</
template
>
src/components/icons/IconDocumentation.vue
deleted
100644 → 0
View file @
b034b191
<
template
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"20"
height=
"17"
fill=
"currentColor"
>
<path
d=
"M11 2.253a1 1 0 1 0-2 0h2zm-2 13a1 1 0 1 0 2 0H9zm.447-12.167a1 1 0 1 0 1.107-1.666L9.447 3.086zM1 2.253L.447 1.42A1 1 0 0 0 0 2.253h1zm0 13H0a1 1 0 0 0 1.553.833L1 15.253zm8.447.833a1 1 0 1 0 1.107-1.666l-1.107 1.666zm0-14.666a1 1 0 1 0 1.107 1.666L9.447 1.42zM19 2.253h1a1 1 0 0 0-.447-.833L19 2.253zm0 13l-.553.833A1 1 0 0 0 20 15.253h-1zm-9.553-.833a1 1 0 1 0 1.107 1.666L9.447 14.42zM9 2.253v13h2v-13H9zm1.553-.833C9.203.523 7.42 0 5.5 0v2c1.572 0 2.961.431 3.947 1.086l1.107-1.666zM5.5 0C3.58 0 1.797.523.447 1.42l1.107 1.666C2.539 2.431 3.928 2 5.5 2V0zM0 2.253v13h2v-13H0zm1.553 13.833C2.539 15.431 3.928 15 5.5 15v-2c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM5.5 15c1.572 0 2.961.431 3.947 1.086l1.107-1.666C9.203 13.523 7.42 13 5.5 13v2zm5.053-11.914C11.539 2.431 12.928 2 14.5 2V0c-1.92 0-3.703.523-5.053 1.42l1.107 1.666zM14.5 2c1.573 0 2.961.431 3.947 1.086l1.107-1.666C18.203.523 16.421 0 14.5 0v2zm3.5.253v13h2v-13h-2zm1.553 12.167C18.203 13.523 16.421 13 14.5 13v2c1.573 0 2.961.431 3.947 1.086l1.107-1.666zM14.5 13c-1.92 0-3.703.523-5.053 1.42l1.107 1.666C11.539 15.431 12.928 15 14.5 15v-2z"
/>
</svg>
</
template
>
src/components/icons/IconEcosystem.vue
deleted
100644 → 0
View file @
b034b191
<
template
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"18"
height=
"20"
fill=
"currentColor"
>
<path
d=
"M11.447 8.894a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm0 1.789a1 1 0 1 0 .894-1.789l-.894 1.789zM7.447 7.106a1 1 0 1 0-.894 1.789l.894-1.789zM10 9a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0H8zm9.447-5.606a1 1 0 1 0-.894-1.789l.894 1.789zm-2.894-.789a1 1 0 1 0 .894 1.789l-.894-1.789zm2 .789a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zM18 5a1 1 0 1 0-2 0h2zm-2 2.5a1 1 0 1 0 2 0h-2zm-5.447-4.606a1 1 0 1 0 .894-1.789l-.894 1.789zM9 1l.447-.894a1 1 0 0 0-.894 0L9 1zm-2.447.106a1 1 0 1 0 .894 1.789l-.894-1.789zm-6 3a1 1 0 1 0 .894 1.789L.553 4.106zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zm-2-.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 2.789a1 1 0 1 0 .894-1.789l-.894 1.789zM2 5a1 1 0 1 0-2 0h2zM0 7.5a1 1 0 1 0 2 0H0zm8.553 12.394a1 1 0 1 0 .894-1.789l-.894 1.789zm-1.106-2.789a1 1 0 1 0-.894 1.789l.894-1.789zm1.106 1a1 1 0 1 0 .894 1.789l-.894-1.789zm2.894.789a1 1 0 1 0-.894-1.789l.894 1.789zM8 19a1 1 0 1 0 2 0H8zm2-2.5a1 1 0 1 0-2 0h2zm-7.447.394a1 1 0 1 0 .894-1.789l-.894 1.789zM1 15H0a1 1 0 0 0 .553.894L1 15zm1-2.5a1 1 0 1 0-2 0h2zm12.553 2.606a1 1 0 1 0 .894 1.789l-.894-1.789zM17 15l.447.894A1 1 0 0 0 18 15h-1zm1-2.5a1 1 0 1 0-2 0h2zm-7.447-5.394l-2 1 .894 1.789 2-1-.894-1.789zm-1.106 1l-2-1-.894 1.789 2 1 .894-1.789zM8 9v2.5h2V9H8zm8.553-4.894l-2 1 .894 1.789 2-1-.894-1.789zm.894 0l-2-1-.894 1.789 2 1 .894-1.789zM16 5v2.5h2V5h-2zm-4.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zm-2.894-1l-2 1 .894 1.789 2-1L8.553.106zM1.447 5.894l2-1-.894-1.789-2 1 .894 1.789zm-.894 0l2 1 .894-1.789-2-1-.894 1.789zM0 5v2.5h2V5H0zm9.447 13.106l-2-1-.894 1.789 2 1 .894-1.789zm0 1.789l2-1-.894-1.789-2 1 .894 1.789zM10 19v-2.5H8V19h2zm-6.553-3.894l-2-1-.894 1.789 2 1 .894-1.789zM2 15v-2.5H0V15h2zm13.447 1.894l2-1-.894-1.789-2 1 .894 1.789zM18 15v-2.5h-2V15h2z"
/>
</svg>
</
template
>
src/components/icons/IconSupport.vue
deleted
100644 → 0
View file @
b034b191
<
template
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"20"
height=
"20"
fill=
"currentColor"
>
<path
d=
"M10 3.22l-.61-.6a5.5 5.5 0 0 0-7.666.105 5.5 5.5 0 0 0-.114 7.665L10 18.78l8.39-8.4a5.5 5.5 0 0 0-.114-7.665 5.5 5.5 0 0 0-7.666-.105l-.61.61z"
/>
</svg>
</
template
>
src/components/icons/IconTooling.vue
deleted
100644 → 0
View file @
b034b191
<!-- This icon is from <https://github.com/Templarian/MaterialDesign>, distributed under Apache 2.0 (https://www.apache.org/licenses/LICENSE-2.0) license-->
<
template
>
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
aria-hidden=
"true"
role=
"img"
class=
"iconify iconify--mdi"
width=
"24"
height=
"24"
preserveAspectRatio=
"xMidYMid meet"
viewBox=
"0 0 24 24"
>
<path
d=
"M20 18v-4h-3v1h-2v-1H9v1H7v-1H4v4h16M6.33 8l-1.74 4H7v-1h2v1h6v-1h2v1h2.41l-1.74-4H6.33M9 5v1h6V5H9m12.84 7.61c.1.22.16.48.16.8V18c0 .53-.21 1-.6 1.41c-.4.4-.85.59-1.4.59H4c-.55 0-1-.19-1.4-.59C2.21 19 2 18.53 2 18v-4.59c0-.32.06-.58.16-.8L4.5 7.22C4.84 6.41 5.45 6 6.33 6H7V5c0-.55.18-1 .57-1.41C7.96 3.2 8.44 3 9 3h6c.56 0 1.04.2 1.43.59c.39.41.57.86.57 1.41v1h.67c.88 0 1.49.41 1.83 1.22l2.34 5.39z"
fill=
"currentColor"
></path>
</svg>
</
template
>
src/config.ts
View file @
8e1b042a
...
@@ -24,9 +24,9 @@ export const app_config: { [key: string]: IConfig } = {
...
@@ -24,9 +24,9 @@ export const app_config: { [key: string]: IConfig } = {
// 开发环境
// 开发环境
development
:
{
development
:
{
//
baseUrl: 'http://culture.yswg.com.cn:8089', // 线上测试机
baseUrl
:
'http://culture.yswg.com.cn:8089'
,
// 线上测试机
// baseUrl: 'http://192.168.2.168:8089', // 立鹏本地/
// baseUrl: 'http://192.168.2.168:8089', // 立鹏本地/
baseUrl
:
'http://192.168.2.55:8089'
,
// 首拥本地
//
baseUrl: 'http://192.168.2.55:8089', // 首拥本地
loginType
:
1
,
loginType
:
1
,
wxRedirect
:
''
,
wxRedirect
:
''
,
},
},
...
...
src/constants/enums.ts
View file @
8e1b042a
...
@@ -6,7 +6,6 @@ export enum ArticleTypeEnum {
...
@@ -6,7 +6,6 @@ export enum ArticleTypeEnum {
COLUMN
=
'column'
,
// 专栏
COLUMN
=
'column'
,
// 专栏
PRACTICE
=
'practice'
,
// 实践
PRACTICE
=
'practice'
,
// 实践
INTERVIEW
=
'interview'
,
// 专访
INTERVIEW
=
'interview'
,
// 专访
LONG_ARTICLE
=
'longArticle'
,
// 长文章
}
}
// 发布状态枚举
// 发布状态枚举
...
...
src/hooks/useHintAnimation.ts
View file @
8e1b042a
...
@@ -7,7 +7,7 @@ export const useHintAnimation = (
...
@@ -7,7 +7,7 @@ export const useHintAnimation = (
el
:
MaybeRef
<
HTMLElement
|
null
>
,
el
:
MaybeRef
<
HTMLElement
|
null
>
,
{
classes
=
[],
duration
=
200
}:
UseHintAnimationOptions
=
{},
{
classes
=
[],
duration
=
200
}:
UseHintAnimationOptions
=
{},
)
=>
{
)
=>
{
let
timer
:
number
|
null
=
null
let
timer
:
NodeJS
.
Timeout
|
null
=
null
const
triggerAnimation
=
()
=>
{
const
triggerAnimation
=
()
=>
{
const
dom
=
unref
(
el
)
const
dom
=
unref
(
el
)
if
(
!
dom
)
return
if
(
!
dom
)
return
...
...
src/layoutCulture/components/publishDialog.vue
View file @
8e1b042a
...
@@ -41,10 +41,24 @@ import type { Component } from 'vue'
...
@@ -41,10 +41,24 @@ import type { Component } from 'vue'
import
{
addOrUpdateArticle
,
addOrUpdatePractice
}
from
'@/api'
import
{
addOrUpdateArticle
,
addOrUpdatePractice
}
from
'@/api'
import
{
ArticleTypeEnum
,
ReleaseStatusTypeEnum
}
from
'@/constants'
import
{
ArticleTypeEnum
,
ReleaseStatusTypeEnum
}
from
'@/constants'
import
LoadingComponent
from
'@/components/common/LoadingComponent/index.vue'
import
LoadingComponent
from
'@/components/common/LoadingComponent/index.vue'
const
typeMap
:
Record
<
ArticleTypeEnum
,
interface
ApiMap
{
{
title
:
string
;
component
:
Component
;
api
?:
(
data
:
any
)
=>
Promise
<
any
>
}
[
ArticleTypeEnum
.
VIDEO
]:
typeof
addOrUpdateArticle
>
=
{
[
ArticleTypeEnum
.
QUESTION
]:
typeof
addOrUpdateArticle
[
ArticleTypeEnum
.
POST
]:
typeof
addOrUpdateArticle
[
ArticleTypeEnum
.
PRACTICE
]:
typeof
addOrUpdatePractice
[
ArticleTypeEnum
.
COLUMN
]:
typeof
addOrUpdateArticle
[
ArticleTypeEnum
.
INTERVIEW
]:
typeof
addOrUpdateArticle
}
interface
TypeConfig
<
T
extends
ArticleTypeEnum
>
{
title
:
string
component
:
Component
api
?:
ApiMap
[
T
]
}
const
typeMap
:
{
[
key
in
ArticleTypeEnum
]:
TypeConfig
<
key
>
}
=
{
[
ArticleTypeEnum
.
VIDEO
]:
{
[
ArticleTypeEnum
.
VIDEO
]:
{
title
:
'视频'
,
title
:
'视频'
,
component
:
defineAsyncComponent
({
component
:
defineAsyncComponent
({
...
@@ -148,7 +162,7 @@ const handleClosed = () => {
...
@@ -148,7 +162,7 @@ const handleClosed = () => {
const
handleSubmit
=
async
(
releaseStatus
:
ReleaseStatusTypeEnum
)
=>
{
const
handleSubmit
=
async
(
releaseStatus
:
ReleaseStatusTypeEnum
)
=>
{
loading
.
value
=
true
loading
.
value
=
true
try
{
try
{
const
formData
=
await
formComponentRef
.
value
?.
getValidatedFormData
(
releaseStatus
)
const
formData
=
(
await
formComponentRef
.
value
?.
getValidatedFormData
(
releaseStatus
))
as
any
if
(
!
formData
)
return
if
(
!
formData
)
return
console
.
log
(
formData
)
console
.
log
(
formData
)
await
typeMap
[
articleType
.
value
].
api
?.({
await
typeMap
[
articleType
.
value
].
api
?.({
...
...
src/router/guards.ts
View file @
8e1b042a
import
type
{
Router
}
from
'vue-router'
import
type
{
Router
}
from
'vue-router'
import
{
saveScrollPosition
}
from
'./scrollStorage'
import
{
saveScrollPosition
}
from
'./scrollStorage'
import
{
parseCode
,
parseIsCodeLogin
,
parseIsCutEmail
}
from
'@/utils/wxUtil'
import
{
parseCode
}
from
'@/utils/wxUtil'
import
{
useUserStore
}
from
'@/stores'
import
{
useUserStore
}
from
'@/stores'
// 白名单
// 白名单
...
@@ -9,8 +9,8 @@ const WHITE_LIST: string[] = ['/aa']
...
@@ -9,8 +9,8 @@ const WHITE_LIST: string[] = ['/aa']
export
function
registerRouterGuards
(
router
:
Router
)
{
export
function
registerRouterGuards
(
router
:
Router
)
{
router
.
beforeEach
(
async
(
to
,
from
)
=>
{
router
.
beforeEach
(
async
(
to
,
from
)
=>
{
console
.
log
(
'to'
,
to
)
//
console.log('to', to)
console
.
log
(
'from'
,
from
)
//
console.log('from', from)
// 保存当前页面的滚动位置
// 保存当前页面的滚动位置
if
(
from
.
fullPath
)
{
if
(
from
.
fullPath
)
{
saveScrollPosition
(
from
.
fullPath
,
window
.
scrollY
)
saveScrollPosition
(
from
.
fullPath
,
window
.
scrollY
)
...
@@ -27,32 +27,17 @@ export function registerRouterGuards(router: Router) {
...
@@ -27,32 +27,17 @@ export function registerRouterGuards(router: Router) {
// console.log(code, isCodeLogin, cutEmail)
// console.log(code, isCodeLogin, cutEmail)
const
userStore
=
useUserStore
()
const
userStore
=
useUserStore
()
if
(
code
)
{
if
(
code
)
{
console
.
log
(
'code'
,
code
)
//
console.log('code', code)
await
userStore
.
getUserInfoByCode
({
await
userStore
.
getUserInfoByCode
({
code
,
code
,
isCodeLogin
:
0
,
isCodeLogin
:
0
,
})
})
// 去除url里面的code 重定向 path 不能重定向首页 因为有消息推送
return
{
return
{
path
:
to
.
path
,
// 重定向到首页 去除code 重定向到首页 没有code 不会进入到这里了
path
:
to
.
path
,
replace
:
true
,
replace
:
true
,
}
}
}
}
else
{
// else if (
// to.fullPath.includes('/homePage/askTab#tabsRef?t=') &&
// !from.fullPath.includes('/homePage')
// ) {
// return {
// path: to.path,
// // replace: true,
// }
// }
else
{
return
true
return
true
}
}
})
})
// router.afterEach((to, from) => {
// console.log('afterEach to', to)
// console.log('afterEach from', from)
// })
}
}
src/router/index.ts
View file @
8e1b042a
...
@@ -6,41 +6,9 @@ import { constantsRoute } from './route'
...
@@ -6,41 +6,9 @@ import { constantsRoute } from './route'
const
router
=
createRouter
({
const
router
=
createRouter
({
history
:
createWebHistory
(
import
.
meta
.
env
.
BASE_URL
),
history
:
createWebHistory
(
import
.
meta
.
env
.
BASE_URL
),
routes
:
constantsRoute
,
routes
:
constantsRoute
,
// scrollBehavior(to, from, savedPosition) {
// return new Promise((resolve) => {
// // console.log(to, from, savedPosition)
// // 如果有浏览器保存的位置(前进/后退),优先使用
// if (savedPosition) {
// resolve(savedPosition)
// return
// }
// // 如果有锚点,滚动到锚点
// if (to.hash) {
// resolve({ el: to.hash })
// return
// }
// // 检查是否有保存的滚动位置
// const savedScrollY = scrollPositionMap.get(to.fullPath)
// if (savedScrollY !== undefined) {
// resolve({ top: savedScrollY })
// return
// }
// // 默认滚动到顶部
// resolve({ top: 0 })
// })
// },
scrollBehavior
,
scrollBehavior
,
})
})
// 在路由离开前保存当前滚动位置
// router.beforeEach((to, from, next) => {
// // 保存当前页面的滚动位置
// if (from.fullPath) {
// scrollPositionMap.set(from.fullPath, window.scrollY)
// }
// next()
// })
registerRouterGuards
(
router
)
registerRouterGuards
(
router
)
export
default
router
export
default
router
src/router/route.ts
View file @
8e1b042a
...
@@ -177,23 +177,6 @@ export const constantsRoute = [
...
@@ -177,23 +177,6 @@ export const constantsRoute = [
name
:
'CulturePublishLongArticle'
,
name
:
'CulturePublishLongArticle'
,
component
:
()
=>
import
(
'@/views/publishLongArticle/index.vue'
),
component
:
()
=>
import
(
'@/views/publishLongArticle/index.vue'
),
},
},
// 发布文章
// {
// {
// path: 'deshboard',
// name: 'CultureHome',
// component: () => import('@/views/home/index.vue')
// },
// {
// path: 'ya',
// name: 'CultureYa',
// component: () => import('@/views/ya/index.vue')
// },
// {
// path: 'ask',
// name: 'CultureAsk',
// component: () => import('@/views/ask/index.vue')
// }
],
],
},
},
{
{
...
...
src/views/userPage/index.vue
View file @
8e1b042a
...
@@ -28,9 +28,15 @@
...
@@ -28,9 +28,15 @@
@
click=
"handleBackUser"
@
click=
"handleBackUser"
>
返回个人账号
</el-button
>
返回个人账号
</el-button
>
>
<!-- v-if="userInfo.isAdmin || userInfo.isOfficialAccount" -->
<el-button
type=
"primary"
plain
size=
"small"
@
click=
"handleAdmin"
>
后台管理
</el-button>
<el-button
v-if=
"userInfo.isAdmin || userInfo.isOfficialAccount"
type=
"primary"
plain
size=
"small"
@
click=
"handleAdmin"
>
后台管理
</el-button
>
</div>
</div>
</div>
</div>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment