Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
saas-manage
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chehuidong
saas-manage
Commits
df1e88c0
Commit
df1e88c0
authored
Jun 19, 2024
by
zhuzhequan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
应用中心
parent
77287ba0
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
639 additions
and
28 deletions
+639
-28
package-lock.json
+0
-0
src/router/index.js
+32
-23
src/utils/commonUtil.js
+2
-3
src/views/home/navMenu.vue
+8
-0
src/views/system/app.vue
+586
-0
vue.config.js
+11
-2
No files found.
package-lock.json
View file @
df1e88c0
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/router/index.js
View file @
df1e88c0
...
@@ -6,6 +6,7 @@ import LoginPage from '@/views/LoginPage.vue'
...
@@ -6,6 +6,7 @@ import LoginPage from '@/views/LoginPage.vue'
import
menuPage
from
'@/views/menu.vue'
import
menuPage
from
'@/views/menu.vue'
import
TaskManage
from
'@/views/taskManage/index.vue'
import
TaskManage
from
'@/views/taskManage/index.vue'
import
HomePage
from
'@/views/homePage/index.vue'
import
HomePage
from
'@/views/homePage/index.vue'
export
const
DEFAULT_DASHBOARD
=
'home'
export
const
DEFAULT_DASHBOARD
=
'home'
Vue
.
use
(
VueRouter
)
Vue
.
use
(
VueRouter
)
...
@@ -14,7 +15,7 @@ const routes = [
...
@@ -14,7 +15,7 @@ const routes = [
{
{
path
:
'/login'
,
path
:
'/login'
,
name
:
'login'
,
name
:
'login'
,
component
:
LoginPage
,
component
:
LoginPage
},
},
{
{
...
@@ -27,110 +28,118 @@ const routes = [
...
@@ -27,110 +28,118 @@ const routes = [
path
:
'/saas/home'
,
path
:
'/saas/home'
,
name
:
'home'
,
name
:
'home'
,
component
:
HomePage
,
component
:
HomePage
,
meta
:
{
title
:
'首页'
}
,
meta
:
{
title
:
'首页'
}
},
},
{
{
path
:
'/saas/manage'
,
path
:
'/saas/manage'
,
name
:
'saasManage'
,
name
:
'saasManage'
,
meta
:
{
title
:
'ERP管理'
},
meta
:
{
title
:
'ERP管理'
},
component
:
SaasManage
,
component
:
SaasManage
},
},
{
{
path
:
'/saas/menu'
,
path
:
'/saas/menu'
,
component
:
menuPage
,
component
:
menuPage
,
name
:
'saasMenu'
,
name
:
'saasMenu'
,
meta
:
{
title
:
'菜单管理'
}
,
meta
:
{
title
:
'菜单管理'
}
},
},
{
{
path
:
'/saas/taskManage'
,
path
:
'/saas/taskManage'
,
component
:
TaskManage
,
component
:
TaskManage
,
name
:
'taskManage'
,
name
:
'taskManage'
,
meta
:
{
title
:
'工单管理'
}
,
meta
:
{
title
:
'工单管理'
}
},
},
{
{
path
:
'/saas/user'
,
path
:
'/saas/user'
,
component
:
()
=>
import
(
'@/views/system/users.vue'
),
component
:
()
=>
import
(
'@/views/system/users.vue'
),
name
:
'system_user'
,
name
:
'system_user'
,
meta
:
{
title
:
'用户管理'
}
,
meta
:
{
title
:
'用户管理'
}
},
},
{
{
path
:
'/saas/currency'
,
path
:
'/saas/currency'
,
component
:
()
=>
import
(
'@/views/basics/currency.vue'
),
component
:
()
=>
import
(
'@/views/basics/currency.vue'
),
name
:
'basics_currency'
,
name
:
'basics_currency'
,
meta
:
{
title
:
'汇率币种'
}
,
meta
:
{
title
:
'汇率币种'
}
},
},
{
{
path
:
'/saas/timed_task'
,
path
:
'/saas/timed_task'
,
component
:
()
=>
import
(
'@/views/system/timed_task.vue'
),
component
:
()
=>
import
(
'@/views/system/timed_task.vue'
),
name
:
'system_timed_task'
,
name
:
'system_timed_task'
,
meta
:
{
title
:
'定时任务'
}
,
meta
:
{
title
:
'定时任务'
}
},
},
{
{
path
:
'/saas/announceManage'
,
path
:
'/saas/announceManage'
,
component
:
()
=>
import
(
'@/views/system/announceManage.vue'
),
component
:
()
=>
import
(
'@/views/system/announceManage.vue'
),
name
:
'system_announce_manage'
,
name
:
'system_announce_manage'
,
meta
:
{
title
:
'公告管理'
}
,
meta
:
{
title
:
'公告管理'
}
},
},
{
{
path
:
'/saas/countryCode'
,
path
:
'/saas/countryCode'
,
component
:
()
=>
import
(
'@/views/system/countryCode.vue'
),
component
:
()
=>
import
(
'@/views/system/countryCode.vue'
),
name
:
'system_countryCode'
,
name
:
'system_countryCode'
,
meta
:
{
title
:
'国家代码'
}
,
meta
:
{
title
:
'国家代码'
}
},
},
{
{
path
:
'/saas/abbreviation'
,
path
:
'/saas/abbreviation'
,
component
:
()
=>
import
(
'@/views/system/abbreviation.vue'
),
component
:
()
=>
import
(
'@/views/system/abbreviation.vue'
),
name
:
'system_abbreviation'
,
name
:
'system_abbreviation'
,
meta
:
{
title
:
'州省简称'
}
,
meta
:
{
title
:
'州省简称'
}
},
},
{
{
path
:
'/saas/management'
,
path
:
'/saas/management'
,
component
:
()
=>
import
(
'@/views/system/management.vue'
),
component
:
()
=>
import
(
'@/views/system/management.vue'
),
name
:
'system_management'
,
name
:
'system_management'
,
meta
:
{
title
:
'客户管理'
}
,
meta
:
{
title
:
'客户管理'
}
},
},
{
{
path
:
'/saas/logistics/transporters'
,
path
:
'/saas/logistics/transporters'
,
component
:
()
=>
import
(
'@/views/system/transporters.vue'
),
component
:
()
=>
import
(
'@/views/system/transporters.vue'
),
name
:
'system_transporters'
,
name
:
'system_transporters'
,
meta
:
{
title
:
'运输商列表'
}
,
meta
:
{
title
:
'运输商列表'
}
},
},
{
{
path
:
'/saas/category-style'
,
path
:
'/saas/category-style'
,
component
:
()
=>
import
(
'@/views/system/category-style.vue'
),
component
:
()
=>
import
(
'@/views/system/category-style.vue'
),
name
:
'system_category_style'
,
name
:
'system_category_style'
,
meta
:
{
title
:
'类别风格'
}
,
meta
:
{
title
:
'类别风格'
}
},
},
{
{
path
:
'/saas/sku-sort'
,
path
:
'/saas/sku-sort'
,
component
:
()
=>
import
(
'@/views/system/sku-sort.vue'
),
component
:
()
=>
import
(
'@/views/system/sku-sort.vue'
),
name
:
'system_sku-sort'
,
name
:
'system_sku-sort'
,
meta
:
{
meta
:
{
title
:
'属性类管理'
,
title
:
'属性类管理'
}
,
}
},
},
{
{
path
:
'/saas/sku-manage'
,
path
:
'/saas/sku-manage'
,
component
:
()
=>
import
(
'@/views/system/sku-manage.vue'
),
component
:
()
=>
import
(
'@/views/system/sku-manage.vue'
),
name
:
'system_sku-manage'
,
name
:
'system_sku-manage'
,
meta
:
{
meta
:
{
title
:
'属性值管理'
,
title
:
'属性值管理'
},
}
},
{
path
:
'/saas/app'
,
component
:
()
=>
import
(
'@/views/system/app.vue'
),
name
:
'system_app'
,
meta
:
{
title
:
'应用中心'
}
},
},
{
{
path
:
'/operation/lossOrder'
,
path
:
'/operation/lossOrder'
,
component
:
()
=>
import
(
'@/views/operation/lossOrder/index.vue'
),
component
:
()
=>
import
(
'@/views/operation/lossOrder/index.vue'
),
name
:
'system_management'
,
name
:
'system_management'
,
meta
:
{
title
:
'丢单管理'
}
,
meta
:
{
title
:
'丢单管理'
}
}
,
}
]
,
]
}
,
}
]
]
const
router
=
new
VueRouter
({
const
router
=
new
VueRouter
({
mode
:
'history'
,
mode
:
'history'
,
base
:
process
.
env
.
BASE_URL
,
base
:
process
.
env
.
BASE_URL
,
routes
,
routes
})
})
export
default
router
export
default
router
src/utils/commonUtil.js
View file @
df1e88c0
...
@@ -4,7 +4,7 @@ function getStaticPath() {
...
@@ -4,7 +4,7 @@ function getStaticPath() {
}
}
return
window
.
apiHostSetting
.
VUE_APP_BASE_URL
return
window
.
apiHostSetting
.
VUE_APP_BASE_URL
}
}
export
const
isMobile
=
()
=>
window
.
innerWidth
<=
1100
// zimg图片服务器地址
// zimg图片服务器地址
export
const
zImgPath
=
window
.
apiHostSetting
.
VUE_APP_ZIMG_URL
export
const
zImgPath
=
window
.
apiHostSetting
.
VUE_APP_ZIMG_URL
// 文件存储路径地址
// 文件存储路径地址
...
@@ -25,4 +25,4 @@ export function delChildren(list, callback, name) {
...
@@ -25,4 +25,4 @@ export function delChildren(list, callback, name) {
recursive
(
list
,
callback
,
0
)
recursive
(
list
,
callback
,
0
)
return
list
return
list
}
}
\ No newline at end of file
src/views/home/navMenu.vue
View file @
df1e88c0
...
@@ -262,6 +262,14 @@ export default {
...
@@ -262,6 +262,14 @@ export default {
icon
:
'el-icon-box'
,
icon
:
'el-icon-box'
,
index
:
'/saas/sku-manage'
,
index
:
'/saas/sku-manage'
,
children
:
[]
children
:
[]
},
{
id
:
11
,
path
:
''
,
label
:
'应用中心'
,
icon
:
'el-icon-s-grid'
,
index
:
'/saas/app'
,
children
:
[]
}
}
]
]
},
},
...
...
src/views/system/app.vue
0 → 100644
View file @
df1e88c0
<
template
>
<div
class=
"announce-manage card"
>
<el-form
ref=
"form"
:model=
"searchForm"
size=
"mini"
v-enter-submit=
"search"
@
submit
.
native
.
prevent
:inline=
"true"
>
<el-form-item
label=
"应用名称"
>
<el-input
style=
"width: 120px"
clearable
v-model=
"searchForm.employeeName"
placeholder=
"应用名称"
></el-input>
</el-form-item>
<el-form-item
label=
"应用分类"
>
<el-select
v-model=
"searchForm.creator"
placeholder=
"请选择"
clearable
filterable
>
<el-option
v-for=
"user in userList"
:key=
"user.id"
:label=
"user.realName"
:value=
"user.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"创建时间"
>
<el-date-picker
style=
"width: 164px"
v-model=
"searchForm.time"
align=
"right"
type=
"date"
placeholder=
"选择日期"
value-format=
"yyyy-MM-dd"
></el-date-picker>
<!--
<el-input
v-model=
"searchForm.time"
></el-input>
-->
</el-form-item>
<el-form-item
label
>
<el-button
type=
"primary"
native-type=
"submit"
@
click=
"search()"
>
查询
</el-button>
</el-form-item>
<el-form-item
label
>
<el-button
type=
"success"
@
click=
"editDialog()"
>
新增
</el-button
>
</el-form-item>
<el-form-item
label
>
<el-button
type=
"danger"
@
click=
"editDialog()"
>
删除
</el-button
>
</el-form-item>
</el-form>
<div
class=
"table_wrap"
style=
"padding: 0"
>
<table-view
:sourceData=
"sourceData"
:serialNumber=
"false"
:tableColumns=
"tableColumns"
></table-view>
</div>
<pagination
:setValue=
"setpaginationOptions"
:options=
"paginationOptions"
/>
<el-dialog
:title=
"isEdit ? '编辑' : '新增'"
:close-on-click-modal=
"false"
:visible
.
sync=
"dialogVisible"
width=
"80%"
>
<div
class=
"app-form"
>
<div
class=
"img"
>
<img
src=
"https://img0.baidu.com/it/u=2426072799,1960439289&fm=253&app=120&size=w931&n=0&f=JPEG&fmt=auto?sec=1718902800&t=11922fc3c027b8ac0f9bd5ef82d518c7"
alt=
""
>
</div>
<div
class=
"form"
>
<el-form
:model=
"editForm"
:inline=
"true"
label-width=
"80px"
:rules=
"addrules"
size=
"mini"
ref=
"editForm"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"应用名称"
size=
"small"
prop=
"title"
>
<el-input
style=
"width: 100%"
v-model=
"editForm.title"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"应用分类"
size=
"small"
prop=
"title"
>
<el-select
style=
"width: 100%;"
v-model=
"searchForm.creator"
placeholder=
"请选择"
clearable
filterable
>
<el-option
v-for=
"user in userList"
:key=
"user.id"
:label=
"user.realName"
:value=
"user.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"应用简述"
size=
"small"
prop=
"title"
>
<el-input
style=
"width: 100%"
type=
"textarea"
:rows=
"4"
v-model=
"editForm.title"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"应用详情"
size=
"small"
prop=
"title"
>
<v-editor
filename=
"files"
style=
"width: 100%"
v-model=
"editForm.content"
ref=
"wangeditor"
height=
"300px"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
style=
"width: 100%;"
>
<el-col
:span=
"11"
>
<el-form-item
label=
"应用价格"
size=
"small"
prop=
"title"
>
<el-input
style=
"width: 100%"
v-model=
"editForm.title"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"11"
>
<el-form-item
label=
"应用周期"
size=
"small"
prop=
"title"
>
<el-select
style=
"width: 100%"
v-model=
"searchForm.creator"
placeholder=
"请选择"
clearable
filterable
>
<el-option
v-for=
"user in userList"
:key=
"user.id"
:label=
"user.realName"
:value=
"user.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
style=
"display: flex;margin-top: 3px;"
:span=
"2"
>
<el-button
size=
"mini"
type=
"success"
icon=
"el-icon-plus"
></el-button>
<el-button
style=
"margin-left: 15px"
size=
"mini"
type=
"danger"
icon=
"el-icon-minus"
></el-button>
</el-col>
</el-row>
</el-form>
</div>
</div>
<div
style=
"display: flex;justify-content: flex-end"
slot=
"footer"
>
<el-button
size=
"mini"
style=
"width: 80px;"
@
click=
"dialogVisible = false"
>
取 消
</el-button
>
<el-button
size=
"mini"
style=
"margin-left: 20px;width: 80px;"
type=
"primary"
@
click=
"submit"
>
确 定
</el-button
>
</div>
</el-dialog>
<el-dialog
:visible
.
sync=
"releaseVisible"
:close-on-click-modal=
"false"
title=
"发布"
width=
"600px"
>
<el-checkbox
:indeterminate=
"isIndeterminate"
v-model=
"checkAll"
@
change=
"handleCheckAllChange"
>
全选
</el-checkbox
>
<div
style=
"margin: 15px 0"
></div>
<el-checkbox-group
v-model=
"checkedCompany"
@
change=
"handleCheckedCompanyChange"
>
<el-checkbox
style=
"width: 100px"
v-for=
"c in releaseList"
:label=
"c.id"
:key=
"c.id"
>
{{
c
.
apiName
}}
</el-checkbox
>
</el-checkbox-group>
<span
slot=
"footer"
>
<el-button
size=
"mini"
@
click=
"releaseVisible = false"
>
取消
</el-button
>
<el-button
size=
"mini"
@
click=
"confirmRelease"
type=
"primary"
>
确认
</el-button
>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
Editor
from
'@/components/wangeditor/index.vue'
import
tableView
from
'@/common/components/base/tableView.vue'
import
{
get
,
post
}
from
'@/common/api/axios'
import
{
getSystemUserList
}
from
'@/common/api/system'
export
default
{
name
:
'system_announce_manage'
,
components
:
{
'v-editor'
:
Editor
,
tableView
},
data
()
{
return
{
checkAll
:
false
,
isIndeterminate
:
false
,
checkedCompany
:
[],
userList
:
[],
pageSize
:
50
,
currentPage
:
1
,
total
:
1
,
paginationOptions
:
{
pageSize
:
100
,
currentPage
:
1
,
total
:
0
},
addrules
:
{
title
:
[
{
required
:
true
,
message
:
'请输入标题'
,
trigger
:
'blur'
}
]
},
sourceData
:
[],
searchForm
:
{},
isEdit
:
false
,
dialogVisible
:
false
,
editForm
:
{
title
:
''
},
defaultEditFrom
:
{
title
:
''
,
enableFlag
:
false
,
content
:
''
,
priority
:
false
},
releaseVisible
:
false
,
releaseList
:
[]
}
},
mounted
()
{
this
.
getList
()
this
.
getSystemUserList
()
},
computed
:
{
tableColumns
()
{
return
[
{
label
:
'应用名称'
,
key
:
'title'
,
align
:
'left'
},
{
label
:
'应用分类'
,
key
:
'creatorName'
},
{
label
:
'应用简述'
,
key
:
'creatorName'
},
{
label
:
'应用服务期'
,
key
:
'creatorName'
},
{
label
:
'创建时间'
,
key
:
'creationTime'
},
{
label
:
'操作'
,
width
:
100
,
render
:
(
item
)
=>
(
<
div
>
<
span
class
=
"icon-view icon-edit-view"
title
=
"编辑"
onClick
=
{()
=>
this
.
editDialog
(
item
)}
>
<
i
class
=
"el-icon-edit"
><
/i
>
<
/span
>
<
span
class
=
"icon-view icon-del-view"
title
=
"删除"
onClick
=
{()
=>
this
.
deleteAnnounces
(
item
)}
>
<
i
class
=
"el-icon-delete"
><
/i
>
<
/span
>
<
/div
>
)
}
]
}
},
methods
:
{
handleCheckAllChange
(
val
)
{
this
.
checkedCompany
=
val
?
this
.
releaseList
.
map
((
e
)
=>
e
.
id
)
:
[]
this
.
isIndeterminate
=
false
},
handleCheckedCompanyChange
(
value
)
{
const
checkedCount
=
value
.
length
this
.
checkAll
=
checkedCount
===
this
.
releaseList
.
length
this
.
isIndeterminate
=
checkedCount
>
0
&&
checkedCount
<
this
.
releaseList
.
length
},
search
()
{
this
.
getList
()
},
async
getSystemUserList
()
{
try
{
const
res
=
await
getSystemUserList
()
this
.
userList
=
res
.
data
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
setpaginationOptions
(
opt
)
{
for
(
const
key
in
opt
)
{
this
.
paginationOptions
[
key
]
=
opt
[
key
]
}
this
.
getList
()
},
async
getList
()
{
try
{
const
{
pageSize
,
currentPage
}
=
this
.
paginationOptions
const
res
=
await
post
(
'sys/announcement/list'
,
{
pageSize
,
currentPage
,
...
this
.
searchForm
})
if
(
res
.
code
!==
200
)
return
this
.
sourceData
=
res
.
data
.
records
this
.
paginationOptions
.
total
=
res
.
data
.
total
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
currentChange
(
i
)
{
this
.
currentPage
=
i
this
.
getList
()
},
async
editDialog
(
item
)
{
if
(
item
)
{
try
{
const
res
=
await
get
(
'sys/announcement/get/'
+
item
.
id
)
if
(
res
.
code
!==
200
)
return
this
.
editForm
=
{
...
this
.
editForm
,
...
res
.
data
}
this
.
isEdit
=
true
}
catch
(
e
)
{
console
.
error
(
e
)
}
}
else
{
this
.
editForm
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
defaultEditFrom
)
)
this
.
$nextTick
(()
=>
{
this
.
$refs
.
editForm
.
clearValidate
()
})
this
.
isEdit
=
false
}
this
.
dialogVisible
=
true
},
async
submit
()
{
try
{
await
this
.
$refs
.
editForm
.
validate
()
}
catch
{
return
}
try
{
const
url
=
this
.
isEdit
?
'sys/announcement/edit'
:
'sys/announcement/add'
const
res
=
await
post
(
url
,
{
...
this
.
editForm
})
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
res
.
message
)
this
.
dialogVisible
=
false
this
.
getList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
async
enableChange
(
item
,
val
)
{
try
{
const
res
=
await
post
(
'sys/announcement/edit'
,
{
id
:
item
.
id
,
enableFlag
:
val
})
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
res
.
message
)
this
.
getList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
async
release
(
item
)
{
try
{
const
res
=
await
post
(
'sys/domain/list'
)
if
(
res
.
code
!==
200
)
return
this
.
releaseList
=
res
.
data
this
.
rowId
=
item
.
id
this
.
checkedCompany
=
[]
this
.
releaseVisible
=
true
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
async
deleteAnnounces
(
item
)
{
try
{
const
res
=
await
get
(
'sys/announcement/delete/'
+
item
.
id
)
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
res
.
message
)
this
.
getList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
},
async
confirmRelease
()
{
if
(
this
.
checkedCompany
.
length
===
0
)
{
return
this
.
$message
.
warning
(
'请至少选择一条记录'
)
}
try
{
const
res
=
await
post
(
'sys/announcement/publish'
,
{
id
:
this
.
rowId
,
dataSourcelist
:
this
.
checkedCompany
})
if
(
res
.
code
!==
200
)
return
this
.
$message
.
success
(
res
.
message
)
this
.
releaseVisible
=
false
this
.
getList
()
}
catch
(
e
)
{
console
.
error
(
e
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.announce-manage
{
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
padding
:
10px
20px
0
;
overflow
:
hidden
;
}
.app-form
{
display
:
flex
;
align-items
:
flex-start
;
.form
{
flex
:
1
;
flex-shrink
:
0
;
overflow
:
hidden
;
::v-deep
.el-form-item__label
{
white-space
:
nowrap
;
}
::v-deep
.el-form-item
{
display
:
flex
;
}
::v-deep
.el-form
{
display
:
flex
;
flex-wrap
:
wrap
;
}
::v-deep
.el-form-item__content
{
flex
:
1
;
flex-shrink
:
0
;
overflow
:
hidden
;
}
}
.img
{
width
:
150px
;
height
:
150px
;
margin-right
:
25px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
}
.el-row
{
align-items
:
center
;
}
</
style
>
vue.config.js
View file @
df1e88c0
...
@@ -3,6 +3,15 @@ module.exports = defineConfig({
...
@@ -3,6 +3,15 @@ module.exports = defineConfig({
transpileDependencies
:
true
,
transpileDependencies
:
true
,
devServer
:
{
devServer
:
{
port
:
8082
,
port
:
8082
,
host
:
''
host
:
''
,
},
proxy
:
{
'/api'
:
{
target
:
'http://192.168.31.188:8096'
,
changeOrigin
:
true
// 路径重写规则,这里将 /api 开头的请求路径替换为空字符串,即去掉 /api 前缀
}
}
}
})
})
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