Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
courseSign
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
szh
courseSign
Commits
71e79bbf
Commit
71e79bbf
authored
Nov 28, 2024
by
szh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
adaea545
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
319 additions
and
255 deletions
+319
-255
course_action_users.go
server/api/v1/course/course_action_users.go
+21
-38
package.json
web/package.json
+10
-1
main.js
web/src/main.js
+1
-4
courseList.vue
web/src/view/courseList/courseList.vue
+182
-183
courseSignup.vue
web/src/view/courseSignup/courseSignup.vue
+85
-3
index.vue
web/src/view/dashboard/index.vue
+0
-6
index.vue
web/src/view/login/index.vue
+17
-17
person.vue
web/src/view/person/person.vue
+3
-3
No files found.
server/api/v1/course/course_action_users.go
View file @
71e79bbf
...
...
@@ -346,7 +346,16 @@ func (courseActionUsersApi *CourseActionUsersApi) WebSignAction(c *gin.Context)
response
.
FailWithMessage
(
err
.
Error
(),
c
)
return
}
// 检查课程活动 信息
if
!*
actionInfo
.
IsShow
{
response
.
FailWithMessage
(
"活动已下线"
,
c
)
return
}
if
actionInfo
.
ActionEnd
.
Unix
()
<
time
.
Now
()
.
Unix
()
{
response
.
FailWithMessage
(
"活动已结束"
,
c
)
return
}
user
,
err
:=
courseUsersService
.
GetCourseUsersByAddr
(
claims
.
Username
)
if
err
!=
nil
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
...
...
@@ -370,25 +379,6 @@ func (courseActionUsersApi *CourseActionUsersApi) WebSignAction(c *gin.Context)
return
}
// 检查课程活动 信息
courseAction
,
err
:=
courseActionService
.
GetCourseAction
(
uint
(
*
actionInfo
.
Cid
))
if
err
!=
nil
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
return
}
if
!*
courseAction
.
IsShow
{
response
.
FailWithMessage
(
"活动已下线"
,
c
)
return
}
if
courseAction
.
ActionEnd
.
Unix
()
<
time
.
Now
()
.
Unix
()
{
response
.
FailWithMessage
(
"活动已结束"
,
c
)
return
}
courseSign
,
err
:=
courseSignupService
.
GetCourseSignupByUidAndCid
(
uint
(
*
actionInfo
.
Cid
),
user
.
ID
)
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
...
...
@@ -450,6 +440,18 @@ func (courseActionUsersApi *CourseActionUsersApi) WebSignActionSimple(c *gin.Con
return
}
// 检查课程活动 信息
if
!*
actionInfo
.
IsShow
{
response
.
FailWithMessage
(
"活动已下线"
,
c
)
return
}
if
actionInfo
.
ActionEnd
.
Unix
()
<
time
.
Now
()
.
Unix
()
{
response
.
FailWithMessage
(
"活动已结束"
,
c
)
return
}
user
,
err
:=
courseUsersService
.
GetCourseUsersByAddr
(
address
)
if
err
!=
nil
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
...
...
@@ -473,25 +475,6 @@ func (courseActionUsersApi *CourseActionUsersApi) WebSignActionSimple(c *gin.Con
return
}
// 检查课程活动 信息
courseAction
,
err
:=
courseActionService
.
GetCourseAction
(
uint
(
*
actionInfo
.
Cid
))
if
err
!=
nil
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
return
}
if
!*
courseAction
.
IsShow
{
response
.
FailWithMessage
(
"活动已下线"
,
c
)
return
}
if
courseAction
.
ActionEnd
.
Unix
()
<
time
.
Now
()
.
Unix
()
{
response
.
FailWithMessage
(
"活动已结束"
,
c
)
return
}
courseSign
,
err
:=
courseSignupService
.
GetCourseSignupByUidAndCid
(
uint
(
*
actionInfo
.
Cid
),
user
.
ID
)
if
err
!=
nil
&&
err
!=
gorm
.
ErrRecordNotFound
{
response
.
FailWithMessage
(
err
.
Error
(),
c
)
...
...
web/package.json
View file @
71e79bbf
...
...
@@ -11,6 +11,9 @@
},
"dependencies"
:
{
"@element-plus/icons-vue"
:
"^0.2.7"
,
"@vueup/vue-quill"
:
"^1.2.0"
,
"@wangeditor/editor"
:
"^5.1.23"
,
"@wangeditor/editor-for-vue"
:
"^5.1.12"
,
"axios"
:
"^0.19.2"
,
"core-js"
:
"^3.6.5"
,
"echarts"
:
"5.3.2"
,
...
...
@@ -27,7 +30,8 @@
"spark-md5"
:
"^3.0.1"
,
"vue"
:
"^3.2.25"
,
"vue-quill-editor"
:
"^3.0.6"
,
"vue-router"
:
"^4.0.0-0"
"vue-router"
:
"^4.0.0-0"
,
"vue2-editor"
:
"^2.10.3"
},
"devDependencies"
:
{
"@vitejs/plugin-legacy"
:
"^2.0.0"
,
...
...
@@ -51,5 +55,10 @@
"vite"
:
"^3.0.1"
,
"vite-plugin-banner"
:
"^0.1.3"
,
"vite-plugin-importer"
:
"^0.2.5"
},
"eslintConfig"
:
{
"env"
:
{
"vue/setup-compiler-macros"
:
true
}
}
}
web/src/main.js
View file @
71e79bbf
...
...
@@ -14,9 +14,7 @@ import 'element-plus/es/components/loading/style/css'
import
'element-plus/es/components/notification/style/css'
import
'element-plus/es/components/message-box/style/css'
import
'./style/element_visiable.scss'
import
VueQuillEditor
from
'vue-quill-editor'
import
'quill/dist/quill.snow.css'
//
initDom
()
/**
...
...
@@ -40,7 +38,6 @@ app
.
use
(
store
)
.
use
(
auth
)
.
use
(
router
)
.
use
(
VueQuillEditor
)
.
mount
(
'#app'
)
export
default
app
web/src/view/courseList/courseList.vue
View file @
71e79bbf
...
...
@@ -2,29 +2,29 @@
<div>
<div
class=
"gva-search-box"
>
<el-form
:inline=
"true"
:model=
"searchInfo"
class=
"demo-form-inline"
@
keyup
.
enter=
"onSubmit"
>
<el-form-item
label=
"创建时间"
>
<el-date-picker
v-model=
"searchInfo.startCreatedAt"
type=
"datetime"
placeholder=
"开始时间"
></el-date-picker
>
—
<el-date-picker
v-model=
"searchInfo.endCreatedAt"
type=
"datetime"
placeholder=
"结束时间"
></el-date-picker
>
</el-form-item>
<el-form-item
label=
"创建时间"
>
<el-date-picker
v-model=
"searchInfo.startCreatedAt"
type=
"datetime"
placeholder=
"开始时间"
/
>
—
<el-date-picker
v-model=
"searchInfo.endCreatedAt"
type=
"datetime"
placeholder=
"结束时间"
/
>
</el-form-item>
<el-form-item
label=
"课程名称"
>
<el-input
v-model=
"searchInfo.courseName"
placeholder=
"搜索条件"
/>
<el-input
v-model=
"searchInfo.courseName"
placeholder=
"搜索条件"
/>
</el-form-item>
<el-form-item
label=
"状态 0 不显示 1 显示"
prop=
"isShow"
>
<el-select
v-model=
"searchInfo.isShow"
clearable
placeholder=
"请选择"
>
<el-option
key=
"true"
label=
"是"
value=
"true"
>
</el-option
>
<el-option
key=
"false"
label=
"否"
value=
"false"
>
</el-option
>
</el-select>
</el-form-item>
<el-form-item
label=
"状态 0 不显示 1 显示"
prop=
"isShow"
>
<el-select
v-model=
"searchInfo.isShow"
clearable
placeholder=
"请选择"
>
<el-option
key=
"true"
label=
"是"
value=
"true"
/
>
<el-option
key=
"false"
label=
"否"
value=
"false"
/
>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"search"
@
click=
"onSubmit"
>
查询
</el-button>
<el-button
icon=
"refresh"
@
click=
"onReset"
>
重置
</el-button>
...
...
@@ -32,83 +32,80 @@
</el-form>
</div>
<div
class=
"gva-table-box"
>
<div
class=
"gva-btn-list"
>
<el-button
type=
"primary"
icon=
"plus"
@
click=
"openDialog"
>
新增
</el-button>
<el-popover
v-model:visible=
"deleteVisible"
placement=
"top"
width=
"160"
>
<p>
确定要删除吗?
</p>
<div
style=
"text-align: right; margin-top: 8px;"
>
<el-button
type=
"primary"
link
@
click=
"deleteVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"onDelete"
>
确定
</el-button>
</div>
<template
#
reference
>
<el-button
icon=
"delete"
style=
"margin-left: 10px;"
:disabled=
"!multipleSelection.length"
@
click=
"deleteVisible = true"
>
删除
</el-button>
</
template
>
</el-popover>
</div>
<el-table
<div
class=
"gva-btn-list"
>
<el-button
type=
"primary"
icon=
"plus"
@
click=
"openDialog"
>
新增
</el-button>
<el-popover
v-model:visible=
"deleteVisible"
placement=
"top"
width=
"160"
>
<p>
确定要删除吗?
</p>
<div
style=
"text-align: right; margin-top: 8px;"
>
<el-button
type=
"primary"
link
@
click=
"deleteVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"onDelete"
>
确定
</el-button>
</div>
<template
#
reference
>
<el-button
icon=
"delete"
style=
"margin-left: 10px;"
:disabled=
"!multipleSelection.length"
@
click=
"deleteVisible = true"
>
删除
</el-button>
</
template
>
</el-popover>
</div>
<el-table
ref=
"multipleTable"
style=
"width: 100%"
tooltip-effect=
"dark"
:data=
"tableData"
row-key=
"ID"
@
selection-change=
"handleSelectionChange"
>
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
align=
"left"
label=
"日期"
width=
"180"
>
<
template
#
default=
"scope"
>
{{
formatDate
(
scope
.
row
.
CreatedAt
)
}}
</
template
>
<
template
#
default=
"scope"
>
{{
formatDate
(
scope
.
row
.
CreatedAt
)
}}
</
template
>
</el-table-column>
<el-table-column
align=
"left"
label=
"课程名称"
prop=
"courseName"
width=
"120"
/>
<el-table-column
align=
"left"
label=
"课程描述"
prop=
"courseDesc"
width=
"360"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
align=
"left"
label=
"课程描述"
prop=
"courseDesc"
width=
"360"
show-overflow-tooltip
/>
<el-table-column
align=
"left"
label=
"banner图"
prop=
"courseBanner"
width=
"120"
/>
<el-table-column
align=
"left"
label=
"状态 0 不显示 1 显示"
prop=
"isShow"
width=
"120"
>
<
template
#
default=
"scope"
>
{{
formatBoolean
(
scope
.
row
.
isShow
)
}}
</
template
>
<
template
#
default=
"scope"
>
{{
formatBoolean
(
scope
.
row
.
isShow
)
}}
</
template
>
</el-table-column>
<el-table-column
align=
"left"
label=
"按钮组"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
link
icon=
"edit"
class=
"table-button"
@
click=
"updateCourseListFunc(scope.row)"
>
变更
</el-button>
<el-button
type=
"primary"
link
icon=
"plus"
@
click=
"toCourseAction(scope.row)"
>
活动管理
</el-button>
<!--
<el-button
type=
"primary"
link
icon=
"delete"
@
click=
"deleteRow(scope.row)"
>
删除
</el-button>
-->
</
template
>
<el-button
type=
"primary"
link
icon=
"plus"
@
click=
"toCourseAction(scope.row)"
>
活动管理
</el-button>
<!--
<el-button
type=
"primary"
link
icon=
"delete"
@
click=
"deleteRow(scope.row)"
>
删除
</el-button>
-->
</
template
>
</el-table-column>
</el-table>
<div
class=
"gva-pagination"
>
<el-pagination
layout=
"total, sizes, prev, pager, next, jumper"
:current-page=
"page"
:page-size=
"pageSize"
:page-sizes=
"[10, 30, 50, 100]"
:total=
"total"
@
current-change=
"handleCurrentChange"
@
size-change=
"handleSizeChange"
/>
</div>
</el-table>
<div
class=
"gva-pagination"
>
<el-pagination
layout=
"total, sizes, prev, pager, next, jumper"
:current-page=
"page"
:page-size=
"pageSize"
:page-sizes=
"[10, 30, 50, 100]"
:total=
"total"
@
current-change=
"handleCurrentChange"
@
size-change=
"handleSizeChange"
/>
</div>
</div>
<el-dialog
v-model=
"dialogFormVisible"
:before-close=
"closeDialog"
title=
"添加课程"
custom-class=
"user-dialog"
>
<el-form
:model=
"formData"
label-position=
"right"
ref=
"elFormRef"
:rules=
"rule"
label-width=
"8
0px"
>
<el-form-item
label=
"课程名称:"
prop=
"courseName"
>
<el-input
v-model=
"formData.courseName"
:clearable=
"true"
placeholder=
"请输入"
/>
<el-form
ref=
"elFormRef"
:model=
"formData"
label-position=
"right"
:rules=
"rule"
label-width=
"80px"
content-height=
"50
0px"
>
<el-form-item
label=
"课程名称:"
prop=
"courseName"
>
<el-input
v-model=
"formData.courseName"
:clearable=
"true"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"课程描述:"
prop=
"courseDesc"
>
<!-- <el-form-item label="课程描述:" prop="courseDesc" >-->
<!-- <el-input v-model="formData.courseDesc" :clearable="true" type = "textarea" placeholder="请输入" />-->
<!-- </el-form-item>-->
<el-form-item
label=
"课程描述:"
prop=
"courseDesc"
style=
""
>
<!-- <div style="display:inline-block"><basic-editor ref="myEditorRef" v-model="formData.courseDesc" /></div>-->
<!-- <vue-editor v-model="formData.courseDesc"></vue-editor>-->
<!-- <div style="display:inline-block"><quill-editor v-model:value="formData.courseDesc"></quill-editor></div>-->
<el-input
v-model=
"formData.courseDesc"
:clearable=
"true"
type =
"textarea"
placeholder=
"请输入"
/>
</el-form-item>
<!-- <el-form-item label="课程描述:" prop="courseDescOne" >-->
<!-- <quill-editor-->
<!-- v-model="formData.courseDesc"-->
<!-- ref="myQuillEditor"-->
<!-- :options="editorOptions"-->
<!-- @blur="onEditorBlur"-->
<!-- @focus="onEditorFocus"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item
label=
"展示图"
label-width=
"80px"
>
<div
style=
"display:inline-block"
@
click=
"openBannerChange"
>
<img
v-if=
"formData.courseBanner"
alt=
"头像"
class=
"header-img-box"
:src=
"(formData.courseBanner && formData.courseBanner.slice(0, 4) !== 'http')?path+formData.courseBanner:formData.courseBanner"
>
<div
v-else
class=
"header-img-box"
>
从媒体库选择
</div>
</div>
</el-form-item>
<el-form-item
label=
"状态 0 不显示 1 显示:"
prop=
"isShow"
>
<el-switch
v-model=
"formData.isShow"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
></el-switch
>
<el-form-item
label=
"状态 0 不显示 1 显示:"
prop=
"isShow"
>
<el-switch
v-model=
"formData.isShow"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
/
>
</el-form-item>
</el-form>
<
template
#
footer
>
...
...
@@ -123,9 +120,13 @@
</template>
<
script
>
import
BasicEditor
from
'@/components/BasicEditor.vue'
export
default
{
name
:
'CourseList'
name
:
'CourseList'
,
components
:
{
BasicEditor
}
}
</
script
>
<
script
setup
>
...
...
@@ -147,41 +148,42 @@ import { useRouter } from 'vue-router'
const
path
=
ref
(
import
.
meta
.
env
.
VITE_BASE_API
+
'/'
)
const
router
=
useRouter
()
const
myEditorRef
=
ref
()
// 自动化生成的字典(可能为空)以及字段
const
formData
=
ref
({
courseName
:
''
,
courseDesc
:
''
,
courseBanner
:
''
,
isShow
:
false
,
})
courseName
:
''
,
courseDesc
:
''
,
courseBanner
:
''
,
isShow
:
false
,
})
// 验证规则
const
rule
=
reactive
({
courseName
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
courseDesc
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
courseBanner
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
isShow
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
courseName
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
courseDesc
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
courseBanner
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
isShow
:
[{
required
:
true
,
message
:
''
,
trigger
:
[
'input'
,
'blur'
],
}],
})
const
elFormRef
=
ref
()
const
elFormRef
=
ref
()
// =========== 表格控制部分 ===========
const
page
=
ref
(
1
)
...
...
@@ -200,8 +202,8 @@ const onReset = () => {
const
onSubmit
=
()
=>
{
page
.
value
=
1
pageSize
.
value
=
10
if
(
searchInfo
.
value
.
isShow
===
""
)
{
searchInfo
.
value
.
isShow
=
null
if
(
searchInfo
.
value
.
isShow
===
''
)
{
searchInfo
.
value
.
isShow
=
null
}
getTableData
()
}
...
...
@@ -234,30 +236,29 @@ getTableData()
// ============== 表格控制部分结束 ===============
// 获取需要的字典 可能为空 按需保留
const
setOptions
=
async
()
=>
{
const
setOptions
=
async
()
=>
{
}
// 获取需要的字典 可能为空 按需保留
setOptions
()
// 多选数据
const
multipleSelection
=
ref
([])
// 多选
const
handleSelectionChange
=
(
val
)
=>
{
multipleSelection
.
value
=
val
multipleSelection
.
value
=
val
}
// 删除行
const
deleteRow
=
(
row
)
=>
{
ElMessageBox
.
confirm
(
'确定要删除吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
deleteCourseListFunc
(
row
)
})
}
ElMessageBox
.
confirm
(
'确定要删除吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
deleteCourseListFunc
(
row
)
})
}
const
toCourseAction
=
(
row
)
=>
{
router
.
push
({
...
...
@@ -273,62 +274,60 @@ const deleteVisible = ref(false)
// 多选删除
const
onDelete
=
async
()
=>
{
const
ids
=
[]
if
(
multipleSelection
.
value
.
length
===
0
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择要删除的数据'
})
return
}
multipleSelection
.
value
&&
const
ids
=
[]
if
(
multipleSelection
.
value
.
length
===
0
)
{
ElMessage
({
type
:
'warning'
,
message
:
'请选择要删除的数据'
})
return
}
multipleSelection
.
value
&&
multipleSelection
.
value
.
map
(
item
=>
{
ids
.
push
(
item
.
ID
)
})
const
res
=
await
deleteCourseListByIds
({
ids
})
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'删除成功'
})
if
(
tableData
.
value
.
length
===
ids
.
length
&&
page
.
value
>
1
)
{
page
.
value
--
}
deleteVisible
.
value
=
false
getTableData
()
}
const
res
=
await
deleteCourseListByIds
({
ids
})
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'删除成功'
})
if
(
tableData
.
value
.
length
===
ids
.
length
&&
page
.
value
>
1
)
{
page
.
value
--
}
deleteVisible
.
value
=
false
getTableData
()
}
}
// 行为控制标记(弹窗内部需要增还是改)
const
type
=
ref
(
''
)
// 更新行
const
updateCourseListFunc
=
async
(
row
)
=>
{
const
res
=
await
findCourseList
({
ID
:
row
.
ID
})
type
.
value
=
'update'
if
(
res
.
code
===
0
)
{
formData
.
value
=
res
.
data
.
recourseList
dialogFormVisible
.
value
=
true
}
const
res
=
await
findCourseList
({
ID
:
row
.
ID
})
type
.
value
=
'update'
if
(
res
.
code
===
0
)
{
formData
.
value
=
res
.
data
.
recourseList
dialogFormVisible
.
value
=
true
}
}
// 删除行
const
deleteCourseListFunc
=
async
(
row
)
=>
{
const
res
=
await
deleteCourseList
({
ID
:
row
.
ID
})
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'删除成功'
})
if
(
tableData
.
value
.
length
===
1
&&
page
.
value
>
1
)
{
page
.
value
--
}
getTableData
()
const
deleteCourseListFunc
=
async
(
row
)
=>
{
const
res
=
await
deleteCourseList
({
ID
:
row
.
ID
})
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'删除成功'
})
if
(
tableData
.
value
.
length
===
1
&&
page
.
value
>
1
)
{
page
.
value
--
}
getTableData
()
}
}
const
chooseImg
=
ref
(
null
)
const
openBannerChange
=
()
=>
{
chooseImg
.
value
.
open
()
...
...
@@ -338,45 +337,45 @@ const dialogFormVisible = ref(false)
// 打开弹窗
const
openDialog
=
()
=>
{
type
.
value
=
'create'
dialogFormVisible
.
value
=
true
type
.
value
=
'create'
dialogFormVisible
.
value
=
true
}
// 关闭弹窗
const
closeDialog
=
()
=>
{
dialogFormVisible
.
value
=
false
formData
.
value
=
{
courseName
:
''
,
courseDesc
:
''
,
courseBanner
:
''
,
isShow
:
false
,
}
dialogFormVisible
.
value
=
false
formData
.
value
=
{
courseName
:
''
,
courseDesc
:
''
,
courseBanner
:
''
,
isShow
:
false
,
}
}
// 弹窗确定
const
enterDialog
=
async
()
=>
{
elFormRef
.
value
?.
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
return
let
res
switch
(
type
.
value
)
{
case
'create'
:
res
=
await
createCourseList
(
formData
.
value
)
break
case
'update'
:
res
=
await
updateCourseList
(
formData
.
value
)
break
default
:
res
=
await
createCourseList
(
formData
.
value
)
break
}
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'创建/更改成功'
})
closeDialog
()
getTableData
()
}
})
const
enterDialog
=
async
()
=>
{
elFormRef
.
value
?.
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
return
let
res
switch
(
type
.
value
)
{
case
'create'
:
res
=
await
createCourseList
(
formData
.
value
)
break
case
'update'
:
res
=
await
updateCourseList
(
formData
.
value
)
break
default
:
res
=
await
createCourseList
(
formData
.
value
)
break
}
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'创建/更改成功'
})
closeDialog
()
getTableData
()
}
})
}
</
script
>
...
...
web/src/view/courseSignup/courseSignup.vue
View file @
71e79bbf
...
...
@@ -59,8 +59,8 @@
</el-table-column>
<el-table-column
align=
"left"
label=
"按钮组"
>
<
template
#
default=
"scope"
>
<el-button
type=
"primary"
v-if=
"!scope.row.isPass"
link
icon=
"edit"
class=
"table-button"
@
click=
"updateCourseSignupFunc(scope.row)"
>
审核
</el-button>
<!--
<el-button
type=
"primary"
link
icon=
"delete"
@
click=
"deleteRow(scope.row)"
>
删除
</el-button>
--
>
<el-button
type=
"primary"
v-if=
"!scope.row.isPass
&& !scope.row.isFrozen
"
link
icon=
"edit"
class=
"table-button"
@
click=
"updateCourseSignupFunc(scope.row)"
>
审核
</el-button>
<el-button
type=
"primary"
v-if=
"!scope.row.isFrozen"
link
icon=
"edit"
@
click=
"frozenSign(scope.row)"
>
冻结
</el-button
>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -97,7 +97,7 @@
<el-switch
v-model=
"formData.isPass"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
></el-switch>
</el-form-item>
<el-form-item
label=
"冻结:"
prop=
"isFrozen"
>
<el-switch
v-model=
"formData.isFrozen"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
></el-switch>
<el-switch
v-model=
"formData.isFrozen"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
disabled
></el-switch>
</el-form-item>
</el-form>
<
template
#
footer
>
...
...
@@ -107,6 +107,38 @@
</div>
</
template
>
</el-dialog>
<el-dialog
v-model=
"dialogFormVisibleTwo"
:before-close=
"closeDialogTwo"
title=
"冻结操作"
>
<el-form
:model=
"formData"
label-position=
"right"
ref=
"elFormRef"
:rules=
"rule"
label-width=
"80px"
>
<el-form-item
label=
"用户:"
prop=
"addr"
>
<el-input
v-model=
"formData.addr"
:clearable=
"false"
placeholder=
"请输入"
disabled
/>
</el-form-item>
<el-form-item
label=
"性别 0 女性 1 男性:"
prop=
"sex"
>
<el-switch
v-model=
"formData.sex"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
disabled
></el-switch>
</el-form-item>
<el-form-item
label=
"年龄:"
prop=
"age"
>
<el-input
v-model
.
number=
"formData.age"
placeholder=
"请输入"
disabled
/>
</el-form-item>
<el-form-item
label=
"公司:"
prop=
"company"
>
<el-input
v-model
.
number=
"formData.company"
placeholder=
"请输入"
disabled
/>
</el-form-item>
<el-form-item
label=
"头像:"
prop=
"photo"
>
<img
v-if=
"formData.photo"
alt=
"头像"
class=
"header-img-box"
:src=
"(formData.photo && formData.photo.slice(0, 4) !== 'http')?path+formData.photo:formData.photo"
>
</el-form-item>
<el-form-item
label=
"通过:"
prop=
"isPass"
>
<el-switch
v-model=
"formData.isPass"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
disabled
></el-switch>
</el-form-item>
<el-form-item
label=
"冻结:"
prop=
"isFrozen"
>
<el-switch
v-model=
"formData.isFrozen"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
active-text=
"是"
inactive-text=
"否"
clearable
></el-switch>
</el-form-item>
</el-form>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"closeDialogTwo"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"enterDialogTwo"
>
确 定
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</template>
...
...
@@ -266,6 +298,16 @@ const updateCourseSignupFunc = async(row) => {
}
}
// 更新行
const
frozenSign
=
async
(
row
)
=>
{
const
res
=
await
findCourseSignup
({
ID
:
row
.
ID
})
type
.
value
=
'update'
if
(
res
.
code
===
0
)
{
formData
.
value
=
res
.
data
.
recourseSignup
dialogFormVisibleTwo
.
value
=
true
}
}
// 删除行
const
deleteCourseSignupFunc
=
async
(
row
)
=>
{
...
...
@@ -284,6 +326,7 @@ const deleteCourseSignupFunc = async (row) => {
// 弹窗控制标记
const
dialogFormVisible
=
ref
(
false
)
const
dialogFormVisibleTwo
=
ref
(
false
)
// 打开弹窗
const
openDialog
=
()
=>
{
...
...
@@ -291,6 +334,12 @@ const openDialog = () => {
dialogFormVisible
.
value
=
true
}
// 打开弹窗
const
openDialogTwo
=
()
=>
{
type
.
value
=
'edit'
dialogFormVisible
.
value
=
true
}
// 关闭弹窗
const
closeDialog
=
()
=>
{
dialogFormVisible
.
value
=
false
...
...
@@ -300,6 +349,15 @@ const closeDialog = () => {
isPass
:
false
,
}
}
const
closeDialogTwo
=
()
=>
{
dialogFormVisibleTwo
.
value
=
false
formData
.
value
=
{
uid
:
0
,
cid
:
0
,
isPass
:
false
,
}
}
// 弹窗确定
const
enterDialog
=
async
()
=>
{
elFormRef
.
value
?.
validate
(
async
(
valid
)
=>
{
...
...
@@ -326,6 +384,30 @@ const enterDialog = async () => {
}
})
}
// 弹窗确定
const
enterDialogTwo
=
async
()
=>
{
elFormRef
.
value
?.
validate
(
async
(
valid
)
=>
{
if
(
!
valid
)
return
let
res
switch
(
type
.
value
)
{
case
'update'
:
res
=
await
updateCourseSignup
(
formData
.
value
)
break
default
:
res
=
await
createCourseSignup
(
formData
.
value
)
break
}
if
(
res
.
code
===
0
)
{
ElMessage
({
type
:
'success'
,
message
:
'创建/更改成功'
})
closeDialogTwo
()
getTableData
()
}
})
}
</
script
>
<
style
lang=
"scss"
>
...
...
web/src/view/dashboard/index.vue
View file @
71e79bbf
<
template
>
<div
class=
"page"
>
<img
src=
"@/assets/air.png"
alt
>
<a
style=
"color:#409EFF"
target=
"view_window"
href=
"https://mainnet.bityuan.com/address/1QBGDgy6CRPJj1mCFE1S2MYNfqDuGq3bJu"
>
查询余额
</a>
<!--
<div
class=
"gva-card-box"
>
-->
<!--
<div
class=
"gva-card gva-top-card"
>
-->
<!--
<div
class=
"gva-top-card-left"
>
-->
...
...
web/src/view/login/index.vue
View file @
71e79bbf
...
...
@@ -70,23 +70,23 @@
</div>
<div
class=
"login_panel_right"
/>
<div
class=
"login_panel_foot"
>
<div
class=
"links"
>
<a
href=
"http://doc.henrongyi.top/"
target=
"_blank"
>
<img
src=
"@/assets/docs.png"
class=
"link-icon"
alt=
"文档"
>
</a
>
<a
href=
"https://support.qq.com/product/371961"
target=
"_blank"
>
<img
src=
"@/assets/kefu.png"
class=
"link-icon"
alt=
"客服"
>
</a
>
<a
href=
"https://reward"
target=
"_blank"
>
<img
src=
"@/assets/github.png"
class=
"link-icon"
alt=
"github"
>
</a
>
<a
href=
"https://space.bilibili.com/322210472"
target=
"_blank"
>
<img
src=
"@/assets/video.png"
class=
"link-icon"
alt=
"视频站"
>
</a
>
</div
>
<!--
<div
class=
"links"
>
--
>
<!--
<a
href=
"http://doc.henrongyi.top/"
target=
"_blank"
>
--
>
<!--
<img
src=
"@/assets/docs.png"
class=
"link-icon"
alt=
"文档"
>
--
>
<!--
</a>
--
>
<!--
<a
href=
"https://support.qq.com/product/371961"
target=
"_blank"
>
--
>
<!--
<img
src=
"@/assets/kefu.png"
class=
"link-icon"
alt=
"客服"
>
--
>
<!--
</a>
--
>
<!--
<a-->
<!-- href="https://reward"-->
<!-- target="_blank"-->
<!-- >--
>
<!--
<img
src=
"@/assets/github.png"
class=
"link-icon"
alt=
"github"
>
--
>
<!--
</a>
--
>
<!--
<a
href=
"https://space.bilibili.com/322210472"
target=
"_blank"
>
--
>
<!--
<img
src=
"@/assets/video.png"
class=
"link-icon"
alt=
"视频站"
>
--
>
<!--
</a>
--
>
<!--
</div>
--
>
<div
class=
"copyright"
>
<BottomInfo
/>
</div>
...
...
web/src/view/person/person.vue
View file @
71e79bbf
...
...
@@ -52,21 +52,21 @@
<el-tooltip
class=
"item"
effect=
"light"
content=
"
北京反转极光科技有限公司-技术部-前端事业群
"
content=
"
技术部
"
placement=
"top"
>
<li>
<el-icon>
<data-analysis
/>
</el-icon>
北京反转极光科技有限公司-技术部-前端事业群
技术部-前端
</li>
</el-tooltip>
<li>
<el-icon>
<video-camera
/>
</el-icon>
中国
·北京市·朝阳区
中国
</li>
<el-tooltip
class=
"item"
...
...
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