Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Z
zjk-ui
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zjk
zjk-ui
Commits
84490505
Commit
84490505
authored
Aug 07, 2025
by
zhangyao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'3'
parent
69000c8b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
52 additions
and
43 deletions
+52
-43
dist.zip
dist.zip
+0
-0
src/views/study/studyFeedback/add.vue
src/views/study/studyFeedback/add.vue
+7
-15
src/views/study/studyFeedback/index.vue
src/views/study/studyFeedback/index.vue
+0
-6
src/views/study/studyPlan/add.vue
src/views/study/studyPlan/add.vue
+16
-18
src/views/study/studyRecommend/add.vue
src/views/study/studyRecommend/add.vue
+18
-3
src/views/study/studyRecommend/index.vue
src/views/study/studyRecommend/index.vue
+11
-1
No files found.
dist.zip
View file @
84490505
No preview for this file type
src/views/study/studyFeedback/add.vue
View file @
84490505
...
...
@@ -3,11 +3,7 @@
<transition
:enter-active-class=
"proxy?.animate.searchAnimate.enter"
:leave-active-class=
"proxy?.animate.searchAnimate.leave"
>
<el-card
class=
"h-[100%]"
shadow=
"never"
>
<template
#header
>
<el-page-header
@
back=
"Cancel"
>
<template
#content
>
<span
class=
"text-large font-600 mr-3"
>
反馈提交
</span>
</
template
>
</el-page-header>
<span
class=
"text-large font-600 mr-3 text-[18px]"
>
反馈提交
</span>
</
template
>
<div
class=
"flex gap-[20px] h-[100%]"
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
class=
"flex-1 h-[100%] overflow-auto"
label-width=
"120px"
>
...
...
@@ -27,7 +23,7 @@
</el-form-item>
<el-form-item>
<div
class=
"text-right flex-1"
>
<el-button
@
click=
"
Cancel"
>
取消
</el-button>
<el-button
@
click=
"
clear"
>
清空
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
提交
</el-button>
</div>
</el-form-item>
...
...
@@ -66,13 +62,9 @@ const rules = {
backName
:
[{
required
:
true
,
message
:
'
请输入标题
'
,
trigger
:
'
blur
'
}],
backContent
:
[{
required
:
true
,
message
:
'
请输入反馈内容
'
,
trigger
:
'
blur
'
}]
};
const
Cancel
=
()
=>
{
proxy
?.
$tab
.
closePage
(
proxy
?.
$route
).
then
(()
=>
{
proxy
?.
$router
.
replace
({
path
:
'
/study/studyFeedback
'
});
});
};
const
clear
=
()
=>
{
formRef
.
value
&
formRef
.
value
.
resetFields
()
}
const
submit
=
()
=>
{
formRef
.
value
.
validate
(
async
(
valid
:
any
)
=>
{
if
(
!
valid
)
return
;
...
...
@@ -83,7 +75,8 @@ const submit = () => {
message
:
'
新增成功
'
,
type
:
'
success
'
});
Cancel
()
clear
();
getLogList
()
return
;
}
ElNotification
({
...
...
@@ -96,7 +89,6 @@ const submit = () => {
const
logList
=
ref
([]);
const
getLogList
=
async
()
=>
{
const
res
=
await
getLogs
();
console
.
log
(
res
.
data
);
logList
.
value
=
res
.
data
||
[]
};
onMounted
(()
=>
{
...
...
src/views/study/studyFeedback/index.vue
View file @
84490505
...
...
@@ -18,7 +18,6 @@
<template
#header
>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
plain
type=
"primary"
@
click=
"OpenPlan"
v-hasPermi=
"['study:studyFeedback:add']"
>
新增
</el-button>
</el-col>
<right-toolbar
v-model:showSearch=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
...
...
@@ -134,11 +133,6 @@ const resetQuery = () => {
handleQuery
();
};
const
activeRow
=
ref
<
any
>
({});
const
OpenPlan
=
()
=>
{
proxy
.
$router
.
push
({
path
:
'
/study/studyFeedbackAdd
'
});
};
const
showDialog
=
ref
(
false
);
const
closeDialog
=
()
=>
{
showDialog
.
value
=
false
;
...
...
src/views/study/studyPlan/add.vue
View file @
84490505
<
template
>
<div
class=
"p-2"
>
<transition
:enter-active-class=
"proxy?.animate.searchAnimate.enter"
:leave-active-class=
"proxy?.animate.searchAnimate.leave"
>
<transition
:enter-active-class=
"proxy?.animate.searchAnimate.enter"
:leave-active-class=
"proxy?.animate.searchAnimate.leave"
>
<div>
<el-card
shadow=
"never"
>
<template
#header
>
...
...
@@ -13,7 +12,7 @@
</template>
<el-form
ref=
"form"
:model=
"planDialog.form"
:rules=
"planDialog.rules"
label-width=
"170px"
>
<el-form-item
label=
"计划名称:"
prop=
"planName"
>
<el-input
v-model=
"planDialog.form.planName"
placeholder=
"请输入计划名称"
></el-input>
<el-input
v-model=
"planDialog.form.planName"
placeholder=
"请输入计划名称"
:maxlength=
"20"
show-word-limit
></el-input>
</el-form-item>
<el-form-item
label=
"计划执行时间:"
prop=
"date"
>
<el-date-picker
...
...
@@ -24,25 +23,23 @@
range-separator=
"至"
start-placeholder=
"开始日期"
style=
"flex: 1"
type=
"date
time
range"
value-format=
"YYYY-MM-DD
HH:mm:ss
"
type=
"daterange"
value-format=
"YYYY-MM-DD"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"学习目标:"
prop=
"studyTarget"
>
<el-input
v-model=
"planDialog.form.studyTarget"
cl
placeholder=
"请输入学习目标"
></el-input>
<el-input
v-model=
"planDialog.form.studyTarget"
:maxlength=
"20"
show-word-limit
placeholder=
"请输入学习目标"
></el-input>
</el-form-item>
<el-form-item
:rules=
"{
required: true
}"
label=
"学习内容:"
>
<el-form-item
:rules=
"{
required: true
}"
label=
"学习内容:"
>
<div
class=
"content-main"
>
<div
v-for=
"(item, index) in planDialog.form.content"
:key=
"index"
class=
"content-list"
>
<el-form-item
:prop=
"`content[${index}][classify]`"
:rules=
"planDialog.rules.classify"
label=
""
label-width=
"0"
>
<el-form-item
:prop=
"`content[${index}][classify]`"
:rules=
"planDialog.rules.classify"
label=
""
label-width=
"0"
>
<el-select
v-model=
"item.classify"
@
change=
"getCourseList(item.classify, index)"
placeholder=
"请选择课程分类"
>
<el-option
v-for=
"e in classIfyLists"
:label=
"e.label"
:value=
"e.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:prop=
"`content[${index}][courseName]`"
:rules=
"planDialog.rules.courseName"
label=
""
label-width=
"0"
>
<el-form-item
:prop=
"`content[${index}][courseName]`"
:rules=
"planDialog.rules.courseName"
label=
""
label-width=
"0"
>
<el-select
v-model=
"item.courseName"
placeholder=
"请选择课程"
>
<el-option
v-for=
"e in item.courseLists"
:label=
"e.label"
:value=
"e.value"
></el-option>
</el-select>
...
...
@@ -84,6 +81,7 @@ const disabledDate = (time: Date) => {
return
time
.
getTime
()
<
Date
.
now
()
-
8.64e7
;
};
const
emit
=
defineEmits
([
'
update
'
]);
let
today
=
new
Date
().
toISOString
().
split
(
'
T
'
)[
0
];
const
planDialog
=
ref
<
StateData
>
({
form
:
{
planName
:
''
,
...
...
@@ -109,7 +107,7 @@ const form = ref<ElFormInstance>(null);
const
Cancel
=
()
=>
{
proxy
?.
$tab
.
closePage
(
proxy
?.
$route
).
then
(()
=>
{
proxy
?.
$router
.
replace
({
path
:
'
/study/studyPlan
'
,
path
:
'
/study/studyPlan
'
});
});
};
...
...
@@ -118,12 +116,12 @@ const ConfirmLeave = () => {
if
(
!
valid
)
return
;
const
params
:
any
=
{
...
planDialog
.
value
.
form
,
startTime
:
planDialog
.
value
.
form
.
date
?.[
0
],
endTime
:
planDialog
.
value
.
form
.
date
?.[
1
],
courseIds
:
planDialog
.
value
.
form
.
content
.
map
(
e
=>
e
.
courseName
)
startTime
:
planDialog
.
value
.
form
.
date
?.[
0
]
+
'
00:00:00
'
,
endTime
:
planDialog
.
value
.
form
.
date
?.[
1
]
+
'
23:59:59
'
,
courseIds
:
planDialog
.
value
.
form
.
content
.
map
(
(
e
)
=>
e
.
courseName
)
};
delete
params
.
date
delete
params
.
content
delete
params
.
date
;
delete
params
.
content
;
let
res
=
await
PlanSubmit
(
params
);
if
(
res
.
code
!=
200
)
{
ElNotification
({
...
...
@@ -158,7 +156,7 @@ const getCourseList = async (classifyId: any, index: number) => {
planDialog
.
value
.
form
.
content
[
index
].
courseName
=
''
;
planDialog
.
value
.
form
.
content
[
index
].
courseLists
=
[];
const
res
=
await
listLearningCourse
({
pageNum
:
1
,
pageSize
:
10000000
,
status
:
'
2
'
,
courseClassify
:
classifyId
});
planDialog
.
value
.
form
.
content
[
index
].
courseLists
=
res
.
rows
.
map
(
item
=>
{
planDialog
.
value
.
form
.
content
[
index
].
courseLists
=
res
.
rows
.
map
(
(
item
)
=>
{
return
{
label
:
item
.
courseName
,
value
:
item
.
id
...
...
src/views/study/studyRecommend/add.vue
View file @
84490505
...
...
@@ -39,6 +39,7 @@
drag
style=
"flex: 1"
:file-list=
"fileLists"
:timeout=
"60000"
>
<el-icon
class=
"el-icon--upload"
>
<upload-filled
/>
...
...
@@ -80,7 +81,7 @@
</div>
</template>
<
script
lang=
"ts"
setup
>
import
{
setRecommend
,
getLogs
}
from
'
@/api/study/studyRecommend
'
;
import
{
setRecommend
,
getLogs
,
delRecommend
}
from
'
@/api/study/studyRecommend
'
;
import
{
globalHeaders
}
from
'
@/utils/request
'
;
import
{
getFile
}
from
'
@/api/filemanage
'
;
const
upload
=
reactive
<
UploadOption
>
({
...
...
@@ -168,8 +169,22 @@ const DelLog = ({ id, suggestName }) => {
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
type
:
'
warning
'
}).
then
(()
=>
{
console
.
log
(
id
);
}).
then
(
async
()
=>
{
let
res
=
await
delRecommend
(
id
);
if
(
res
.
code
===
200
)
{
ElNotification
({
title
:
'
提示
'
,
message
:
'
删除成功
'
,
type
:
'
success
'
});
getLogList
();
return
;
}
ElNotification
({
title
:
'
提示
'
,
message
:
res
.
msg
,
type
:
'
error
'
});
});
};
onMounted
(()
=>
{
...
...
src/views/study/studyRecommend/index.vue
View file @
84490505
...
...
@@ -43,7 +43,7 @@
<
template
#default
="{
row
}"
>
<el-button
link
type=
"primary"
@
click=
"handleShow(row)"
>
查看
</el-button>
<el-divider
direction=
"vertical"
/>
<el-button
link
type=
"primary"
@
click=
"deletePlan(row)"
>
删除
</el-button>
<el-button
link
type=
"primary"
@
click=
"deletePlan(row)"
:disabled=
"!delPermission(row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -72,6 +72,7 @@
<
script
lang=
"ts"
setup
>
import
{
getRecommendList
,
delRecommend
}
from
'
@/api/study/studyRecommend
'
;
import
{
getFile
}
from
'
@/api/filemanage
'
;
import
useUserStore
from
'
@/store/modules/user
'
;
const
{
proxy
}
=
getCurrentInstance
()
as
ComponentInternalInstance
;
...
...
@@ -81,6 +82,15 @@ const showSearch = ref(true);
const
queryFormRef
=
ref
<
ElFormInstance
>
();
const
userStore
=
useUserStore
();
const
roles
=
ref
(
userStore
.
roles
);
const
userId
=
ref
(
userStore
.
userId
);
const
delPermission
=
(
row
)
=>
{
if
(
!
roles
.
value
.
includes
(
'
expert
'
))
return
true
;
return
row
.
createBy
===
userId
.
value
}
interface
Header
{
label
:
string
;
prop
:
string
;
...
...
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