Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
kadycui
game-admin
提交
f306468d
game-admin
项目概览
kadycui
/
game-admin
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
game-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f306468d
编写于
9月 20, 2023
作者:
kadycui
💻
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ADD: 封装query参数
上级
6508e0d1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
239 addition
and
14 deletion
+239
-14
src/api/good.js
src/api/good.js
+39
-0
src/api/manager.js
src/api/manager.js
+2
-10
src/composables/util.js
src/composables/util.js
+15
-0
src/pages/goods/list.vue
src/pages/goods/list.vue
+183
-4
未找到文件。
src/api/good.js
0 → 100644
浏览文件 @
f306468d
import
axios
from
'
@/axios
'
import
{
queryParams
}
from
'
@/composables/util
'
export
function
getGoodsList
(
page
,
query
=
{}){
let
r
=
queryParams
(
queryParams
)
return
axios
.
get
(
`/admin/goods/
${
page
}${
r
}
`
)
}
export
function
updateGoodsStatus
(
ids
,
status
){
return
axios
.
post
(
`/admin/goods/changestatus`
,
{
ids
,
status
})
}
export
function
createGoods
(
data
){
return
axios
.
post
(
`/admin/goods`
,
data
)
}
export
function
updateGoods
(
id
,
data
){
return
axios
.
post
(
`/admin/goods/
${
id
}
`
,
data
)
}
export
function
deleteGoods
(
ids
){
return
axios
.
post
(
`/admin/goods/delete_all`
,
{
ids
})
}
src/api/manager.js
浏览文件 @
f306468d
import
axios
from
'
@/axios
'
import
{
queryParams
}
from
'
@/composables/util
'
export
function
login
(
username
,
password
){
return
axios
.
post
(
"
/admin/login
"
,
{
...
...
@@ -23,16 +24,7 @@ export function updatepassword(data){
export
function
getManagerList
(
page
,
query
=
{}){
let
q
=
[]
for
(
const
key
in
query
)
{
if
(
query
[
key
]){
q
.
push
(
`
${
key
}
=
${
encodeURIComponent
(
query
[
key
])}
`
)
}
}
let
r
=
q
.
join
(
"
&
"
)
r
=
r
?
(
"
?
"
+
r
)
:
""
let
r
=
queryParams
(
queryParams
)
return
axios
.
get
(
`/admin/manager/
${
page
}${
r
}
`
)
}
...
...
src/composables/util.js
浏览文件 @
f306468d
...
...
@@ -48,3 +48,18 @@ export function hideFullLoading() {
// 将query对象转成url参数
export
function
queryParams
(
query
){
let
q
=
[]
for
(
const
key
in
query
)
{
if
(
query
[
key
]){
q
.
push
(
`
${
key
}
=
${
encodeURIComponent
(
query
[
key
])}
`
)
}
}
let
r
=
q
.
join
(
"
&
"
)
r
=
r
?
(
"
?
"
+
r
)
:
""
return
r
}
src/pages/goods/list.vue
浏览文件 @
f306468d
<
template
>
<div>
商品管理
</div>
</
template
>
\ No newline at end of file
<el-card
shadow=
"never"
class=
"border-0"
>
<el-form
:model=
"searchForm"
label-width=
"80px"
class=
"mb-3"
size=
"small"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
:offset=
"0"
>
<el-form-item
label=
"关键词"
>
<el-input
v-model=
"searchForm.keyword"
placeholder=
"管理员昵称"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"8"
:offset=
"8"
>
<div
class=
"flex items-center justify-end"
>
<el-button
type=
"primary"
@
click=
"getData"
>
搜索
</el-button>
<el-button
@
click=
"resetSearchForm"
>
重置
</el-button>
</div>
</el-col>
</el-row>
</el-form>
<!-- 新增 | 刷新 -->
<ListHeader
@
create=
"handleCreate"
@
refresh=
"getData"
/>
<el-table
v-loading=
"loading"
element-loading-text=
"加载中..."
element-loading-spinner=
"el-icon-loading"
:data=
"tableData"
stripe
style=
"width: 100%"
>
<el-table-column
label=
"管理员"
width=
"200"
>
<template
#default
="
{ row }">
<div
class=
"flex items-center"
>
<el-avatar
:size=
"40"
:src=
"row.avatar"
>
<img
src=
"https://cube.elemecdn.com/e/fd/0fc7d20532fdaf769a25683617711png.png"
/>
</el-avatar>
<div
class=
"ml-3"
>
<h6>
{{
row
.
username
}}
</h6>
<small>
ID:
{{
row
.
id
}}
</small>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"所属角色"
align=
"center"
>
<
template
#default=
"{ row }"
>
{{
row
.
role
?.
name
||
"
_
"
}}
</
template
>
</el-table-column>
<el-table-column
label=
"状态"
width=
"120"
>
<
template
#default=
"{ row }"
>
<el-switch
:modelValue=
"row.status"
:active-value=
"1"
:inactive-value=
"0"
:loading=
"row.statusLoading"
:disabled=
"row.super == 1"
@
change=
"handleStatusChange($event, row)"
>
</el-switch>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"180"
align=
"center"
>
<
template
#default=
"scope"
>
<small
v-if=
"scope.row.super == 1"
class=
"text-sm text-gray-500"
>
暂无操作
</small>
<div
v-else
>
<el-button
type=
"primary"
size=
"small"
text
@
click=
"handleEdit(scope.row)"
>
修改
</el-button>
<el-popconfirm
title=
"是否删除该管理员?"
confirm-button-text=
"确认"
cancel-button-text=
"取消"
@
confirm=
"handleDelete(scope.row.id)"
>
<template
#reference
>
<el-button
text
type=
"primary"
size=
"small"
>
删除
</el-button>
</
template
>
</el-popconfirm>
</div>
</template>
</el-table-column>
</el-table>
<div
class=
"flex items-center justify-center mt-5"
>
<el-pagination
background
layout=
"total, prev, pager, next, jumper"
:total=
"total"
:current-page=
"currentPage"
:page-size=
"limit"
@
current-change=
"getData"
/>
</div>
<FormDrawer
ref=
"formDrawerRef"
:title=
"drawerTitle"
@
submit=
"handleSubmit"
>
<el-form
:model=
"form"
ref=
"formRef"
:rules=
"rules"
label-width=
"80px"
:inline=
"false"
>
<el-form-item
label=
"用户名"
prop=
"username"
>
<el-input
v-model=
"form.username"
placeholder=
"用户名"
></el-input>
</el-form-item>
<el-form-item
label=
"密码"
prop=
"password"
>
<el-input
v-model=
"form.password"
placeholder=
"密码"
></el-input>
</el-form-item>
<el-form-item
label=
"头像"
prop=
"avatar"
>
<ChooseImage
v-model=
"form.avatar"
/>
</el-form-item>
<el-form-item
label=
"所属角色"
prop=
"role_id"
>
<el-select
v-model=
"form.role_id"
placeholder=
"选择所属角色"
>
<el-option
v-for=
"item in roles"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"content"
>
<el-switch
v-model=
"form.status"
:active-value=
"1"
:inactive-value=
"0"
>
</el-switch>
</el-form-item>
</el-form>
</FormDrawer>
</el-card>
</template>
<
script
setup
>
import
{
ref
}
from
"
vue
"
import
{
getManagerList
,
updateManagerStatus
,
createManager
,
updateManager
,
deleteManager
}
from
"
@/api/manager
"
import
FormDrawer
from
"
@/components/FormDrawer.vue
"
import
ListHeader
from
"
@/components/ListHeader.vue
"
import
ChooseImage
from
"
@/components/ChooseImage.vue
"
import
{
useInitTable
,
useInitForm
}
from
"
@/composables/useCommon.js
"
const
roles
=
ref
([])
const
{
searchForm
,
resetSearchForm
,
tableData
,
loading
,
currentPage
,
total
,
limit
,
getData
,
handleDelete
,
handleStatusChange
}
=
useInitTable
({
searchForm
:
{
keyword
:
""
},
getList
:
getManagerList
,
onGetListSuccess
:
(
res
)
=>
{
tableData
.
value
=
res
.
list
.
map
(
o
=>
{
o
.
statusLoading
=
false
return
o
})
total
.
value
=
res
.
totalCount
roles
.
value
=
res
.
roles
},
delete
:
deleteManager
,
updateStatus
:
updateManagerStatus
})
const
{
formDrawerRef
,
formRef
,
form
,
rules
,
drawerTitle
,
handleSubmit
,
handleCreate
,
handleEdit
,
}
=
useInitForm
(
{
form
:{
username
:
""
,
password
:
""
,
role_id
:
null
,
status
:
1
,
avatar
:
""
},
getData
,
update
:
updateManager
,
create
:
createManager
,
})
</
script
>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录