@sugarat/easypicker2-client 2.4.1
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.
- package/.env +6 -0
- package/.env.production +3 -0
- package/.env.test +4 -0
- package/.eslintignore +0 -0
- package/.eslintrc.json +57 -0
- package/.github/workflows/main.yml +61 -0
- package/.prettierrc.js +9 -0
- package/LICENSE +21 -0
- package/README.md +86 -0
- package/auto-imports.d.ts +6 -0
- package/components.d.ts +56 -0
- package/docker/ep_backup/easypicker2.sql +214 -0
- package/docker/ep_backup/mongodb/easypicker2/action.bson +0 -0
- package/docker/ep_backup/mongodb/easypicker2/action.metadata.json +1 -0
- package/docker/ep_backup/mongodb/easypicker2/log.bson +0 -0
- package/docker/ep_backup/mongodb/easypicker2/log.metadata.json +1 -0
- package/docker/ep_backup/user-config.json +176 -0
- package/docs/.env +1 -0
- package/docs/.env.production +2 -0
- package/docs/.vitepress/config.ts +204 -0
- package/docs/.vitepress/theme/bg.png +0 -0
- package/docs/.vitepress/theme/index.scss +41 -0
- package/docs/.vitepress/theme/index.ts +5 -0
- package/docs/author.md +24 -0
- package/docs/auto-imports.d.ts +6 -0
- package/docs/components.d.ts +17 -0
- package/docs/deploy/design/api.md +3 -0
- package/docs/deploy/design/db.md +3 -0
- package/docs/deploy/design/index.md +3 -0
- package/docs/deploy/design/shell.md +9 -0
- package/docs/deploy/faq.md +86 -0
- package/docs/deploy/index.md +9 -0
- package/docs/deploy/local.md +275 -0
- package/docs/deploy/online-new.md +610 -0
- package/docs/deploy/online.md +683 -0
- package/docs/deploy/qiniu.md +183 -0
- package/docs/index.md +40 -0
- package/docs/introduction/about/code.md +26 -0
- package/docs/introduction/about/index.md +33 -0
- package/docs/introduction/feature/index.md +3 -0
- package/docs/plan/log.md +333 -0
- package/docs/plan/todo.md +127 -0
- package/docs/plan/wish.md +29 -0
- package/docs/praise/index.md +45 -0
- package/docs/public/favicon.ico +0 -0
- package/docs/public/logo.png +0 -0
- package/docs/public/robots.txt +2 -0
- package/docs/src/apis/ajax.ts +66 -0
- package/docs/src/apis/index.ts +1 -0
- package/docs/src/apis/modules/wish.ts +20 -0
- package/docs/src/components/Avatar.vue +60 -0
- package/docs/src/components/Home.vue +85 -0
- package/docs/src/components/Picture.vue +13 -0
- package/docs/src/components/Praise.vue +52 -0
- package/docs/src/components/WishBtn.vue +98 -0
- package/docs/src/components/WishPanel.vue +170 -0
- package/docs/src/components/callme/index.vue +72 -0
- package/docs/vite.config.ts +42 -0
- package/index.html +127 -0
- package/package.json +52 -0
- package/public/favicon.ico +0 -0
- package/public/logo.png +0 -0
- package/scripts/deploy/docs.mjs +24 -0
- package/scripts/deploy/prod.mjs +24 -0
- package/scripts/deploy/test.mjs +26 -0
- package/src/@types/ajax.d.ts +5 -0
- package/src/@types/api.d.ts +305 -0
- package/src/@types/lib.d.ts +26 -0
- package/src/@types/page.d.ts +18 -0
- package/src/App.vue +36 -0
- package/src/apis/ajax.ts +70 -0
- package/src/apis/index.ts +20 -0
- package/src/apis/modules/action.ts +17 -0
- package/src/apis/modules/category.ts +20 -0
- package/src/apis/modules/config.ts +19 -0
- package/src/apis/modules/file.ts +150 -0
- package/src/apis/modules/people.ts +81 -0
- package/src/apis/modules/public.ts +49 -0
- package/src/apis/modules/super/overview.ts +56 -0
- package/src/apis/modules/super/user.ts +62 -0
- package/src/apis/modules/task.ts +67 -0
- package/src/apis/modules/user.ts +56 -0
- package/src/apis/modules/wish.ts +31 -0
- package/src/assets/i/EasyPicker.png +0 -0
- package/src/assets/logo.png +0 -0
- package/src/assets/styles/app.css +69 -0
- package/src/components/HomeFooter/index.vue +134 -0
- package/src/components/HomeHeader/index.vue +156 -0
- package/src/components/InfosForm/index.vue +73 -0
- package/src/components/MessageList/index.vue +155 -0
- package/src/components/MessagePanel/index.vue +42 -0
- package/src/components/Praise/index.vue +102 -0
- package/src/components/QrCode.vue +44 -0
- package/src/components/linkDialog.vue +104 -0
- package/src/components/loginPanel.vue +92 -0
- package/src/constants/index.ts +83 -0
- package/src/env.d.ts +8 -0
- package/src/main.ts +19 -0
- package/src/pages/404/index.vue +59 -0
- package/src/pages/about/index.vue +152 -0
- package/src/pages/callme/index.vue +155 -0
- package/src/pages/dashboard/config/index.vue +264 -0
- package/src/pages/dashboard/files/index.vue +1152 -0
- package/src/pages/dashboard/index.vue +335 -0
- package/src/pages/dashboard/manage/config/index.vue +97 -0
- package/src/pages/dashboard/manage/index.vue +105 -0
- package/src/pages/dashboard/manage/overview/index.vue +488 -0
- package/src/pages/dashboard/manage/user/index.vue +679 -0
- package/src/pages/dashboard/manage/wish/index.vue +257 -0
- package/src/pages/dashboard/tasks/components/CategoryPanel.vue +208 -0
- package/src/pages/dashboard/tasks/components/CreateTask.vue +93 -0
- package/src/pages/dashboard/tasks/components/TaskInfo.vue +129 -0
- package/src/pages/dashboard/tasks/components/infoPanel/ddl.vue +96 -0
- package/src/pages/dashboard/tasks/components/infoPanel/file.vue +175 -0
- package/src/pages/dashboard/tasks/components/infoPanel/info.vue +477 -0
- package/src/pages/dashboard/tasks/components/infoPanel/people.vue +567 -0
- package/src/pages/dashboard/tasks/components/infoPanel/template.vue +146 -0
- package/src/pages/dashboard/tasks/components/infoPanel/tip.vue +55 -0
- package/src/pages/dashboard/tasks/components/infoPanel/tipInfo.vue +196 -0
- package/src/pages/dashboard/tasks/index.vue +302 -0
- package/src/pages/dashboard/tasks/public.ts +32 -0
- package/src/pages/disabled/index.vue +47 -0
- package/src/pages/feedback/index.vue +5 -0
- package/src/pages/home/index.vue +72 -0
- package/src/pages/login/index.vue +270 -0
- package/src/pages/register/index.vue +211 -0
- package/src/pages/reset/index.vue +186 -0
- package/src/pages/task/index.vue +897 -0
- package/src/pages/wish/index.vue +152 -0
- package/src/router/Interceptor/index.ts +112 -0
- package/src/router/index.ts +13 -0
- package/src/router/routes/index.ts +197 -0
- package/src/shims-vue.d.ts +6 -0
- package/src/store/index.ts +17 -0
- package/src/store/modules/category.ts +44 -0
- package/src/store/modules/public.ts +27 -0
- package/src/store/modules/task.ts +55 -0
- package/src/store/modules/user.ts +57 -0
- package/src/utils/elementUI.ts +8 -0
- package/src/utils/networkUtil.ts +236 -0
- package/src/utils/other.ts +25 -0
- package/src/utils/regExp.ts +11 -0
- package/src/utils/stringUtil.ts +242 -0
- package/tsconfig.json +24 -0
- package/vite.config.ts +55 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import ajax from '../ajax'
|
|
2
|
+
|
|
3
|
+
function importPeople(
|
|
4
|
+
key: string,
|
|
5
|
+
filename: string,
|
|
6
|
+
type: string
|
|
7
|
+
): PeopleApiTypes.importPeople {
|
|
8
|
+
return ajax.post(`/people/${key}`, {
|
|
9
|
+
filename,
|
|
10
|
+
type
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getPeople(key: string, detail = '0'): PeopleApiTypes.getPeople {
|
|
15
|
+
return ajax.get(`/people/${key}`, {
|
|
16
|
+
params: {
|
|
17
|
+
detail
|
|
18
|
+
}
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function deletePeople(key: string, id: number): PeopleApiTypes.deletePeople {
|
|
23
|
+
return ajax.delete(`/people/${key}`, {
|
|
24
|
+
params: {
|
|
25
|
+
id
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function updatePeopleStatus(
|
|
31
|
+
key: string,
|
|
32
|
+
filename: string,
|
|
33
|
+
name: string,
|
|
34
|
+
hash: string
|
|
35
|
+
): PeopleApiTypes.updatePeopleStatus {
|
|
36
|
+
return ajax.put(`/people/${key}`, {
|
|
37
|
+
filename,
|
|
38
|
+
name,
|
|
39
|
+
hash
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function checkPeopleIsExist(
|
|
44
|
+
key: string,
|
|
45
|
+
name: string
|
|
46
|
+
): PeopleApiTypes.checkPeopleIsExist {
|
|
47
|
+
return ajax.post(`/people/check/${key}`, {
|
|
48
|
+
name
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function getUsefulTemplate(key: string): PeopleApiTypes.getUsefulTemplate {
|
|
53
|
+
return ajax.get(`/people/template/${key}`)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function importPeopleFromTpl(
|
|
57
|
+
taskKey: string,
|
|
58
|
+
tplKey: string,
|
|
59
|
+
type: string
|
|
60
|
+
): PeopleApiTypes.importFromTpl {
|
|
61
|
+
return ajax.put(`/people/template/${taskKey}`, {
|
|
62
|
+
key: tplKey,
|
|
63
|
+
type
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function addPeopleByUser(name: string, key: string) {
|
|
68
|
+
return ajax.post(`/people/add/${key}`, {
|
|
69
|
+
name
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
export default {
|
|
73
|
+
importPeopleFromTpl,
|
|
74
|
+
importPeople,
|
|
75
|
+
getPeople,
|
|
76
|
+
deletePeople,
|
|
77
|
+
updatePeopleStatus,
|
|
78
|
+
checkPeopleIsExist,
|
|
79
|
+
getUsefulTemplate,
|
|
80
|
+
addPeopleByUser
|
|
81
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import ajax from '../ajax'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 获取验证码
|
|
5
|
+
* @param mobile 手机号
|
|
6
|
+
*/
|
|
7
|
+
function getCode(phone: string): PublicApiTypes.getCode {
|
|
8
|
+
return ajax.get('public/code', {
|
|
9
|
+
params: {
|
|
10
|
+
phone
|
|
11
|
+
}
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function reportPv(path: string): PublicApiTypes.reportPv {
|
|
16
|
+
return ajax.post<any, BaseResponse>('public/report/pv', {
|
|
17
|
+
path
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function checkPhone(phone: string): PublicApiTypes.checkPhone {
|
|
22
|
+
return ajax.get<any, BaseResponse>('public/check/phone', {
|
|
23
|
+
params: {
|
|
24
|
+
phone
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function getTipImageUrl(
|
|
30
|
+
key: string,
|
|
31
|
+
data: {
|
|
32
|
+
uid: number
|
|
33
|
+
name: string
|
|
34
|
+
}[]
|
|
35
|
+
) {
|
|
36
|
+
return ajax.post<any, BaseResponse<{ cover: string; preview: string }[]>>(
|
|
37
|
+
'public/tip/image',
|
|
38
|
+
{
|
|
39
|
+
key,
|
|
40
|
+
data
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
export default {
|
|
45
|
+
getCode,
|
|
46
|
+
reportPv,
|
|
47
|
+
checkPhone,
|
|
48
|
+
getTipImageUrl
|
|
49
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ajax from '../../ajax'
|
|
2
|
+
|
|
3
|
+
const baseUrl = '/super/overview'
|
|
4
|
+
function getCount(): OverviewApiTypes.getCount {
|
|
5
|
+
return ajax.get(`${baseUrl}/count`)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function getAllLogMsg(): OverviewApiTypes.getAllLogMsg {
|
|
9
|
+
return ajax.get(`${baseUrl}/log`)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function getLogMsg(
|
|
13
|
+
pageSize: number,
|
|
14
|
+
pageIndex: number,
|
|
15
|
+
type: string,
|
|
16
|
+
search: string
|
|
17
|
+
): OverviewApiTypes.getLogMsg {
|
|
18
|
+
return ajax.post(`${baseUrl}/log`, {
|
|
19
|
+
pageSize,
|
|
20
|
+
pageIndex,
|
|
21
|
+
type,
|
|
22
|
+
search
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getLogMsgDetail(id: string): any {
|
|
27
|
+
return ajax.get(`${baseUrl}/log/${id}`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function clearExpiredCompressFile() {
|
|
31
|
+
return ajax.delete(`${baseUrl}/compress`)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function checkDisabledRoute(route: string): OverviewApiTypes.disabledStatus {
|
|
35
|
+
return ajax.get(`${baseUrl}/route/disabled`, {
|
|
36
|
+
params: {
|
|
37
|
+
route
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function addDisabledRoute(route: string, status: boolean) {
|
|
43
|
+
return ajax.post(`${baseUrl}/route/disabled`, {
|
|
44
|
+
route,
|
|
45
|
+
status
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
export default {
|
|
49
|
+
getCount,
|
|
50
|
+
getAllLogMsg,
|
|
51
|
+
getLogMsg,
|
|
52
|
+
getLogMsgDetail,
|
|
53
|
+
clearExpiredCompressFile,
|
|
54
|
+
checkDisabledRoute,
|
|
55
|
+
addDisabledRoute
|
|
56
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import ajax from '../../ajax'
|
|
2
|
+
|
|
3
|
+
const baseUrl = '/super/user'
|
|
4
|
+
function getUserList(): SuperUserApiTypes.getUserList {
|
|
5
|
+
return ajax.get(`${baseUrl}/list`)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function updateUserStatus(id: number, status: number, openTime: string) {
|
|
9
|
+
return ajax.put(`${baseUrl}/status`, {
|
|
10
|
+
id,
|
|
11
|
+
status,
|
|
12
|
+
openTime
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
function resetPassword(id: number, password: string) {
|
|
16
|
+
return ajax.put(`${baseUrl}/password`, {
|
|
17
|
+
id,
|
|
18
|
+
password
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function resetPhone(id: number, phone: string, code: string) {
|
|
23
|
+
return ajax.put(`${baseUrl}/phone`, {
|
|
24
|
+
id,
|
|
25
|
+
phone,
|
|
26
|
+
code
|
|
27
|
+
})
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function clearOssFile(id: number, type: string) {
|
|
31
|
+
return ajax.delete(`${baseUrl}/clear/oss`, {
|
|
32
|
+
params: { id, type }
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function getMessageList(): SuperUserApiTypes.getMessageList {
|
|
37
|
+
return ajax.get(`${baseUrl}/message`)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function readMessage(id: string) {
|
|
41
|
+
return ajax.put(`${baseUrl}/message`, {
|
|
42
|
+
id
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function sendMessage(text: string, type: number, target?: number) {
|
|
47
|
+
return ajax.post(`${baseUrl}/message`, {
|
|
48
|
+
text,
|
|
49
|
+
type,
|
|
50
|
+
target
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
export default {
|
|
54
|
+
getUserList,
|
|
55
|
+
updateUserStatus,
|
|
56
|
+
resetPassword,
|
|
57
|
+
resetPhone,
|
|
58
|
+
clearOssFile,
|
|
59
|
+
getMessageList,
|
|
60
|
+
readMessage,
|
|
61
|
+
sendMessage
|
|
62
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import ajax from '../ajax'
|
|
2
|
+
|
|
3
|
+
function getList(): TaskApiTypes.getList {
|
|
4
|
+
return ajax.get('task')
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
function create(name: string, category: string): TaskApiTypes.create {
|
|
8
|
+
return ajax.post('task/create', {
|
|
9
|
+
name,
|
|
10
|
+
category
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function deleteOne(key: string): TaskApiTypes.deleteOne {
|
|
15
|
+
return ajax.delete(`task/${key}`)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function updateBaseInfo(
|
|
19
|
+
key: string,
|
|
20
|
+
name: string,
|
|
21
|
+
category: string
|
|
22
|
+
): TaskApiTypes.updateBaseInfo {
|
|
23
|
+
return ajax.put(`task/${key}`, {
|
|
24
|
+
name,
|
|
25
|
+
category
|
|
26
|
+
})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function getTaskInfo(key: string): TaskApiTypes.getTaskInfo {
|
|
30
|
+
return ajax.get(`task/${key}`)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function getTaskMoreInfo(key: string): TaskApiTypes.getTaskMoreInfo {
|
|
34
|
+
return ajax.get(`task_info/${key}`)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function updateTaskMoreInfo(
|
|
38
|
+
key: string,
|
|
39
|
+
options: TaskApiTypes.TaskInfo
|
|
40
|
+
): TaskApiTypes.updateTaskMoreInfo {
|
|
41
|
+
return ajax.put(`task_info/${key}`, options)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function getUsefulTemplate(key: string): TaskApiTypes.getUsefulTemplate {
|
|
45
|
+
return ajax.get(`/task_info/template/${key}`)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function delTipImage(key: string, uid: number, name: string) {
|
|
49
|
+
return ajax.delete(`/task_info/tip/image/${key}`, {
|
|
50
|
+
params: {
|
|
51
|
+
uid,
|
|
52
|
+
name
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default {
|
|
58
|
+
getList,
|
|
59
|
+
create,
|
|
60
|
+
deleteOne,
|
|
61
|
+
updateBaseInfo,
|
|
62
|
+
getTaskInfo,
|
|
63
|
+
getTaskMoreInfo,
|
|
64
|
+
updateTaskMoreInfo,
|
|
65
|
+
getUsefulTemplate,
|
|
66
|
+
delTipImage
|
|
67
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ajax from '../ajax'
|
|
2
|
+
|
|
3
|
+
function register(
|
|
4
|
+
options: UserApiTypes.RegisterOptions
|
|
5
|
+
): UserApiTypes.register {
|
|
6
|
+
return ajax.post('user/register', {
|
|
7
|
+
...options
|
|
8
|
+
})
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function login(account: string, pwd: string): UserApiTypes.login {
|
|
12
|
+
return ajax.post('user/login', {
|
|
13
|
+
account,
|
|
14
|
+
pwd
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function codeLogin(phone: string, code: string): UserApiTypes.codeLogin {
|
|
19
|
+
return ajax.post('user/login/code', {
|
|
20
|
+
phone,
|
|
21
|
+
code
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function resetPwd(
|
|
26
|
+
phone: string,
|
|
27
|
+
code: string,
|
|
28
|
+
pwd: string
|
|
29
|
+
): UserApiTypes.resetPwd {
|
|
30
|
+
return ajax.put('user/password', {
|
|
31
|
+
phone,
|
|
32
|
+
code,
|
|
33
|
+
pwd
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function checkPower(): UserApiTypes.checkPower {
|
|
38
|
+
return ajax.get('user/power/super')
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function checkLoginStatus(): UserApiTypes.checkLoginStatus {
|
|
42
|
+
return ajax.get('user/login')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function logout(): UserApiTypes.logout {
|
|
46
|
+
return ajax.get('user/logout')
|
|
47
|
+
}
|
|
48
|
+
export default {
|
|
49
|
+
register,
|
|
50
|
+
login,
|
|
51
|
+
codeLogin,
|
|
52
|
+
resetPwd,
|
|
53
|
+
checkPower,
|
|
54
|
+
checkLoginStatus,
|
|
55
|
+
logout
|
|
56
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { WishStatus } from '@/constants'
|
|
2
|
+
import ajax from '../ajax'
|
|
3
|
+
|
|
4
|
+
function addWish(wish: Partial<WishApiTypes.Wish>): WishApiTypes.addWish {
|
|
5
|
+
return ajax.post('/wish/add', wish)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function findAllWish(): WishApiTypes.allWishData {
|
|
9
|
+
return ajax.get('/wish/all')
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function updateWishStatus(
|
|
13
|
+
id: string,
|
|
14
|
+
status: WishStatus
|
|
15
|
+
): WishApiTypes.updateWish {
|
|
16
|
+
return ajax.put('/wish/update', { id, status })
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function updateWishDes(
|
|
20
|
+
id: string,
|
|
21
|
+
title: string,
|
|
22
|
+
des: string
|
|
23
|
+
): WishApiTypes.updateWish {
|
|
24
|
+
return ajax.put(`/wish/update/${id}`, { title, des })
|
|
25
|
+
}
|
|
26
|
+
export default {
|
|
27
|
+
addWish,
|
|
28
|
+
findAllWish,
|
|
29
|
+
updateWishStatus,
|
|
30
|
+
updateWishDes
|
|
31
|
+
}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/* element ui 重写 */
|
|
2
|
+
.el-message__content {
|
|
3
|
+
width: 325px;
|
|
4
|
+
word-break: break-all;
|
|
5
|
+
line-height: 1.5;
|
|
6
|
+
}
|
|
7
|
+
.el-progress {
|
|
8
|
+
margin-top: 0 !important;
|
|
9
|
+
position: static !important;
|
|
10
|
+
}
|
|
11
|
+
.el-progress__text {
|
|
12
|
+
top: 8px !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.el-dialog {
|
|
16
|
+
max-width: 766px;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.el-select-dropdown {
|
|
20
|
+
max-width: 200px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.el-card {
|
|
24
|
+
max-width: 400px;
|
|
25
|
+
}
|
|
26
|
+
@media screen and (max-width: 700px) {
|
|
27
|
+
.el-message-box {
|
|
28
|
+
width: auto;
|
|
29
|
+
max-width: 300px;
|
|
30
|
+
}
|
|
31
|
+
.el-pagination {
|
|
32
|
+
flex-wrap: wrap;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
}
|
|
35
|
+
.el-pagination > * {
|
|
36
|
+
margin-bottom: 10px !important;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* 一些高频公共样式 */
|
|
41
|
+
.flex {
|
|
42
|
+
display: flex;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.fc {
|
|
46
|
+
justify-content: center;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.fac {
|
|
50
|
+
align-items: center;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.tc {
|
|
54
|
+
text-align: center;
|
|
55
|
+
}
|
|
56
|
+
.p10 {
|
|
57
|
+
padding: 10px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ellipsis {
|
|
61
|
+
text-overflow: ellipsis;
|
|
62
|
+
white-space: nowrap;
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
}
|
|
65
|
+
.ellipsis label {
|
|
66
|
+
text-overflow: ellipsis;
|
|
67
|
+
white-space: nowrap;
|
|
68
|
+
overflow: hidden;
|
|
69
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="footer">
|
|
3
|
+
<ul>
|
|
4
|
+
<li v-for="(item, index) in navList" :key="index">
|
|
5
|
+
<a target="_blank" rel="noopener" v-bind:href="item.link">{{
|
|
6
|
+
item.title
|
|
7
|
+
}}</a>
|
|
8
|
+
</li>
|
|
9
|
+
</ul>
|
|
10
|
+
<p>
|
|
11
|
+
<a
|
|
12
|
+
href="https://docs.ep.sugarat.top/plan/log.html"
|
|
13
|
+
target="_blank"
|
|
14
|
+
rel="noopener"
|
|
15
|
+
>v{{ version }}</a
|
|
16
|
+
>
|
|
17
|
+
© 2019 - {{ currentYear }} by
|
|
18
|
+
<a
|
|
19
|
+
target="_blank"
|
|
20
|
+
rel="noopener"
|
|
21
|
+
href="https://docs.ep.sugarat.top/author.html"
|
|
22
|
+
>粥里有勺糖</a
|
|
23
|
+
>
|
|
24
|
+
</p>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script lang="ts" setup>
|
|
29
|
+
import { computed } from 'vue'
|
|
30
|
+
import { version } from '../../../package.json'
|
|
31
|
+
|
|
32
|
+
const props = defineProps<{
|
|
33
|
+
type?: 'home' | 'dashboard' | 'task'
|
|
34
|
+
}>()
|
|
35
|
+
|
|
36
|
+
const navList = computed(() => {
|
|
37
|
+
const navMap = {
|
|
38
|
+
home: [
|
|
39
|
+
{
|
|
40
|
+
title: '应用介绍',
|
|
41
|
+
link: 'https://docs.ep.sugarat.top/'
|
|
42
|
+
},
|
|
43
|
+
// {
|
|
44
|
+
// title: 'GitHub',
|
|
45
|
+
// link: 'https://github.com/ATQQ/easypicker2-client'
|
|
46
|
+
// },
|
|
47
|
+
{
|
|
48
|
+
title: '问题反馈',
|
|
49
|
+
link: 'https://support.qq.com/product/444158'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
title: '联系作者',
|
|
53
|
+
link: 'https://docs.ep.sugarat.top/author.html'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: '请喝奶茶🧋',
|
|
57
|
+
link: 'https://docs.ep.sugarat.top/praise/index.html'
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
dashboard: [
|
|
61
|
+
{
|
|
62
|
+
title: '页面&功能问题反馈,点这里😊',
|
|
63
|
+
link: 'https://support.qq.com/product/444158'
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
task: [
|
|
67
|
+
{
|
|
68
|
+
title: '页面&功能问题反馈,点这里😊',
|
|
69
|
+
link: 'https://support.qq.com/product/444158'
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return navMap[props.type || 'home'] || []
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
const currentYear = new Date().getFullYear()
|
|
78
|
+
const fontColor = computed(() => {
|
|
79
|
+
const colors = {
|
|
80
|
+
home: '#fff',
|
|
81
|
+
dashboard: '#7f7f7f',
|
|
82
|
+
task: '#a4a4a4'
|
|
83
|
+
}
|
|
84
|
+
return colors[props.type || 'home']
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
const shadowColor = computed(() => {
|
|
88
|
+
const colors = {
|
|
89
|
+
home: '#ddd',
|
|
90
|
+
dashboard: '#9b9b9b',
|
|
91
|
+
task: '#d5d5d5'
|
|
92
|
+
}
|
|
93
|
+
return colors[props.type || 'home']
|
|
94
|
+
})
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<style lang="scss" scoped>
|
|
98
|
+
.footer {
|
|
99
|
+
ul {
|
|
100
|
+
margin: 10px auto;
|
|
101
|
+
display: flex;
|
|
102
|
+
justify-content: center;
|
|
103
|
+
li {
|
|
104
|
+
min-width: 80px;
|
|
105
|
+
list-style: none;
|
|
106
|
+
text-align: center;
|
|
107
|
+
a {
|
|
108
|
+
text-align: center;
|
|
109
|
+
color: v-bind(fontColor);
|
|
110
|
+
opacity: 0.8;
|
|
111
|
+
font-size: 1rem;
|
|
112
|
+
line-height: 1rem;
|
|
113
|
+
&:hover {
|
|
114
|
+
opacity: 1;
|
|
115
|
+
text-shadow: 0 0 2px v-bind(shadowColor);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
p {
|
|
122
|
+
margin-top: 28px;
|
|
123
|
+
padding-bottom: 20px;
|
|
124
|
+
color: v-bind(shadowColor);
|
|
125
|
+
a {
|
|
126
|
+
color: v-bind(shadowColor);
|
|
127
|
+
margin-left: 10px;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
p {
|
|
131
|
+
text-align: center;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
</style>
|