Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
B
bms-vue-obear
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
daywrite
bms-vue-obear
Commits
0fd0ae69
Commit
0fd0ae69
authored
May 04, 2019
by
daywrite
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加服务目录模块
parent
830f34ee
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
642 additions
and
0 deletions
+642
-0
index.ejs
index.ejs
+6
-0
api.js
src/api.js
+2
-0
service.js
src/apis/service.js
+30
-0
app.scss
src/assets/css/app.scss
+1
-0
service-app.scss
src/assets/css/service-app.scss
+1
-0
settingMixin.js
src/components/common/settingMixin.js
+25
-0
serviceForm.vue
src/components/service/serviceForm.vue
+126
-0
serviceModal.vue
src/components/service/serviceModal.vue
+85
-0
serviceHome.vue
src/components/service_list/serviceHome.vue
+232
-0
serviceItem.vue
src/components/service_list/serviceItem.vue
+66
-0
servicePagenation.vue
src/components/service_list/servicePagenation.vue
+55
-0
route.js
src/route.js
+6
-0
service.js
src/routes/service.js
+7
-0
No files found.
index.ejs
View file @
0fd0ae69
...
...
@@ -67,6 +67,12 @@
"title"
:
"个人信息"
,
"appName"
:
'profile'
,
"url"
:
"/profile"
},
{
"icon"
:
"fa-home"
,
"isRouteShow"
:
1
,
"title"
:
"服务目录"
,
"appName"
:
'services'
,
"url"
:
"/service"
}],
homePage
:
{
appName
:
'reimbursement'
,
...
...
src/api.js
View file @
0fd0ae69
...
...
@@ -6,6 +6,7 @@ import CaseApi from './apis/case.js'
import
SupplierApi
from
'./apis/supplier.js'
import
AccountApi
from
'./apis/account.js'
import
ProfileApi
from
'./apis/profile.js'
import
ServiceApi
from
'./apis/service.js'
const
API_HOST
=
process
.
env
.
API_HOST
const
API_PORT
=
process
.
env
.
API_PORT
...
...
@@ -38,6 +39,7 @@ apis = Object.assign(apis, CaseApi)
apis
=
Object
.
assign
(
apis
,
SupplierApi
)
apis
=
Object
.
assign
(
apis
,
AccountApi
)
apis
=
Object
.
assign
(
apis
,
ProfileApi
)
apis
=
Object
.
assign
(
apis
,
ServiceApi
)
export
default
{
option
,
...
...
src/apis/service.js
0 → 100644
View file @
0fd0ae69
const
type
=
'service'
export
default
{
[
`get
${
type
}
Filter`
]:
{
url
:
`/vue/
${
type
}
/get-filter`
},
[
`get
${
type
}
List`
]:
{
url
:
`/vue/
${
type
}
/list`
},
[
`get
${
type
}
New`
]:
{
url
:
`/vue/
${
type
}
/get-new`
},
[
`save
${
type
}
New`
]:
{
url
:
`/vue/
${
type
}
/save-new`
},
[
`get
${
type
}
Edit`
]:
{
url
:
`/vue/
${
type
}
/get-edit`
},
[
`save
${
type
}
Edit`
]:
{
url
:
`/vue/
${
type
}
/save-edit`
},
[
`delete
${
type
}
`
]:
{
url
:
`/vue/
${
type
}
/delete`
}
}
src/assets/css/app.scss
View file @
0fd0ae69
...
...
@@ -6,3 +6,4 @@
@import
'./supplier-app.scss'
;
@import
'./account-app.scss'
;
@import
'./profile-app.scss'
;
@import
'./service-app.scss'
;
src/assets/css/service-app.scss
0 → 100644
View file @
0fd0ae69
.service-app
{}
src/components/common/settingMixin.js
View file @
0fd0ae69
...
...
@@ -108,6 +108,16 @@ export default {
accountUserRoles
()
{
let
ret
=
this
.
getArrayByKey
(
'Users'
,
'userRoles'
)
return
ret
&&
[].
concat
(
ret
.
value
)
},
servicesBrandIds
()
{
let
ret
=
this
.
getArrayByKey
(
'Services'
,
'brand_id'
)
return
ret
&&
[].
concat
(
ret
.
value
)
},
servicesTypeIds
()
{
let
ret
=
this
.
getArrayByKey
(
'Services'
,
'type_id'
)
return
ret
&&
[].
concat
(
ret
.
value
)
}
},
...
...
@@ -136,6 +146,21 @@ export default {
return
methods
[
params
].
call
(
this
,
id
)
},
getServiceEdit
(
id
)
{
return
requestAPI
(
api
.
getserviceEdit
,
{
id
})
.
then
((
res
)
=>
{
this
.
retNewArray
=
res
.
options
return
res
.
model
})
},
getServiceNew
()
{
requestAPI
(
api
.
getserviceNew
)
.
then
((
res
)
=>
{
this
.
retNewArray
=
res
.
options
})
},
getAccountNew
()
{
requestAPI
(
api
.
getaccountNew
)
.
then
((
res
)
=>
{
...
...
src/components/service/serviceForm.vue
0 → 100644
View file @
0fd0ae69
<
template
>
<section
class=
"ec-page-wrapper"
style=
"overflow: hidden; padding-bottom: 0px;"
>
<el-form
label-width=
"120px"
ref=
"form"
:rules=
"rules"
:model=
"model"
class=
"ec-create-form"
>
<el-form-item
label=
"服务名称:"
prop=
"title"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.title"
>
</el-input>
</el-form-item>
<el-form-item
label=
"服务编号:"
prop=
"serial_no"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.serial_no"
>
</el-input>
</el-form-item>
<el-form-item
label=
"服务品牌:"
prop=
"brand_id"
class=
"ec-clear-left ec-form-item-lg is-required"
>
<el-select
v-model=
"model.brand_id"
size=
"small"
placeholder=
"请选择"
>
<el-option
v-for=
"(option, optKey) in servicesBrandIds"
:key=
"optKey"
:label=
"option.name"
:value=
"option.key"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"服务类型:"
prop=
"type_id"
class=
"ec-clear-left ec-form-item-lg is-required"
>
<el-select
v-model=
"model.type_id"
size=
"small"
placeholder=
"请选择"
>
<el-option
v-for=
"(option, optKey) in servicesTypeIds"
:key=
"optKey"
:label=
"option.name"
:value=
"option.key"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"服务描述:"
prop=
"description"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.description"
>
</el-input>
</el-form-item>
<el-form-item
label=
"工分(工作日工作时间):"
prop=
"points"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.points"
>
</el-input>
</el-form-item>
<el-form-item
label=
"工分(工作日工作外时间):"
prop=
"points_off_time"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.points_off_time"
>
</el-input>
</el-form-item>
<el-form-item
label=
"工分(节假日):"
prop=
"points_holiday"
class=
"ec-clear-left is-required"
>
<el-input
class=
"ec-input-normal"
size=
"mini"
v-model
.
trim=
"model.points_holiday"
>
</el-input>
</el-form-item>
</el-form>
</section>
</
template
>
<
script
>
import
settingMixin
from
'../common/settingMixin'
export
default
{
name
:
'serviceForm'
,
mixins
:
[
settingMixin
],
props
:
{
model
:
Object
},
components
:
{
},
data
()
{
return
{
rules
:
{
},
query
:
{}
}
},
created
()
{
},
mounted
()
{
},
computed
:
{
},
methods
:
{
getNew
()
{
this
.
initSetting
([
'getServiceNew'
])
},
getEdit
(
id
)
{
return
this
.
initEditSetting
(
'getServiceEdit'
,
id
)
},
_validate
(
cb
)
{
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
cb
&&
cb
()
}
})
},
_resetFields
()
{
this
.
$refs
[
'form'
].
resetFields
()
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.ec-create-form
.el-form-item
{
width
:
70%
;
}
// .ec-create-form .el-form-item {
// width: 100%;
// }
</
style
>
src/components/service/serviceModal.vue
0 → 100644
View file @
0fd0ae69
<
template
>
<section>
<sidePopup
ref=
"sidePopup"
title=
"新建服务目录"
:width=
"50"
@
update:close=
"() => btnClose()"
>
<ServiceForm
ref=
"form"
:model=
"model"
>
</ServiceForm>
<div
class=
"mt20"
style=
"margin-left: 150px;"
>
<el-button
type=
"confirm"
@
click
.
stop
.
prevent=
"save"
size=
"mini"
>
保 存
</el-button>
</div>
</sidePopup>
</section>
</
template
>
<
script
>
import
{
requestAPI
,
api
,
UTIL
}
from
'@/lib/commonMixin'
import
ServiceForm
from
'./serviceForm'
import
{
setModule
}
from
'@/lib/viewHelper'
export
default
{
components
:
{
ServiceForm
},
data
()
{
return
{
diaVis
:
false
,
model
:
{
id
:
''
,
title
:
''
,
serial_no
:
''
,
brand_id
:
''
,
type_id
:
''
,
description
:
''
,
points
:
''
,
points_off_time
:
''
,
points_holiday
:
''
}
}
},
methods
:
{
show
(
model
)
{
if
(
model
)
{
this
.
$refs
.
form
.
getEdit
(
model
.
id
)
.
then
((
_model
)
=>
{
UTIL
.
flatten
(
this
.
model
,
_model
)
})
}
else
{
this
.
$refs
.
form
.
getNew
()
}
this
.
$refs
.
sidePopup
.
show
()
},
handleClose
()
{
this
.
$refs
.
sidePopup
.
close
(()
=>
{
this
.
$refs
.
form
.
_resetFields
()
})
},
btnClose
()
{
this
.
$refs
.
form
.
_resetFields
()
},
save
()
{
let
_params
=
Object
.
assign
({},
setModule
(
this
.
model
,
'Services'
))
let
_apiUrl
=
!
this
.
model
.
id
?
api
.
saveserviceNew
:
api
.
saveserviceEdit
!
this
.
model
.
id
&&
delete
_params
[
'Services[id]'
]
this
.
$refs
[
'form'
].
_validate
(()
=>
{
requestAPI
(
Object
.
assign
(
_apiUrl
,
{
method
:
'POST'
}),
_params
)
.
then
((
res
)
=>
{
this
.
$refs
.
sidePopup
.
close
()
this
.
$message
.
success
(
'操作成功'
)
this
.
$parent
.
reload
()
})
// save
})
// validate
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
src/components/service_list/serviceHome.vue
0 → 100644
View file @
0fd0ae69
<
template
>
<section>
<div
class=
"content"
>
<search-header
ref=
"searchHeader"
:title=
"'服务目录'"
:search-key=
"'ClientSearch'"
:add-title=
"'新建服务目录'"
@
update:headerSearch=
"search => searchKeyword(search)"
@
update:headerAdd=
"() => addSch()"
@
update:headerClear=
"() => searchClear()"
>
</search-header>
<search-form
ref=
"clientForm"
:filter=
"filter"
@
update:clientList=
"form =>
{ updateForm(form) }">
</search-form>
<div
class=
"page-body-content"
>
<Item
:list=
"result.list"
>
</Item>
<Pagenation
@
update:pager=
"pager =>
{updatePage(pager)}"
:total="result.pagenation.totalcount">
</Pagenation>
</div>
</div>
<FormModal
ref=
"formModal"
></FormModal>
</section>
</
template
>
<
script
>
import
SearchHeader
from
'../common/searchHeader'
import
SearchForm
from
'../common/SearchForm'
import
Item
from
'./serviceItem'
import
FormModal
from
'../service/serviceModal'
import
Pagenation
from
'./servicePagenation'
import
SetParams
from
'../common/setParams'
import
singleRadioTool
from
'../common/singleRadioTool'
import
{
requestAPI
,
api
}
from
'@/lib/commonMixin'
export
default
{
name
:
'accountHome'
,
mixins
:
[
SetParams
],
components
:
{
SearchHeader
,
SearchForm
,
Item
,
FormModal
,
Pagenation
,
singleRadioTool
},
data
()
{
return
{
currKey
:
'service'
,
filter
:
[],
form
:
{
'ClientSearch[keyword]'
:
''
},
pagenation
:
{
thispage
:
1
,
pagesize
:
10
},
type
:
'all'
,
navArray
:
[],
result
:
{
list
:
[],
pagenation
:
{
totalcount
:
1
,
thispage
:
1
,
pagesize
:
10
},
thisUser
:
{
id
:
''
,
name
:
''
,
sex
:
''
}
}
}
},
mounted
()
{
this
.
init
()
this
.
getList
({})
},
methods
:
{
init
()
{
this
.
getFilter
()
},
// 1.查询条件
getFilter
()
{
requestAPI
(
api
[
`get
${
this
.
currKey
}
Filter`
]).
then
(
res
=>
{
this
.
filter
=
res
})
},
// 2.列表数据
getList
(
ret
)
{
requestAPI
(
api
[
`get
${
this
.
currKey
}
List`
],
ret
).
then
((
res
)
=>
{
const
{
list
=
[],
pagenation
=
{}
}
=
res
this
.
result
.
list
=
list
this
.
result
.
pagenation
=
pagenation
})
},
// 3.1关键字搜索
searchKeyword
(
search
)
{
let
ret
=
this
.
setParams
({
...
this
.
form
,
page
:
this
.
pagenation
.
thispage
},
search
)
this
.
getList
(
ret
)
},
// 3.2关键字后面的重置
searchClear
()
{
this
.
clearParams
()
this
.
$refs
.
timeSearchForm
.
resetForm
()
this
.
_reload
()
},
// 4.重新加载
_reload
()
{
let
ret
=
this
.
setParams
({
...
this
.
form
,
page
:
this
.
pagenation
.
thispage
},
{})
this
.
getList
(
ret
)
},
// 5.1查询条件
updateForm
(
search
)
{
let
ret
=
this
.
setParams
({
...
this
.
form
,
page
:
this
.
pagenation
.
thispage
},
search
)
this
.
getList
(
ret
)
},
// 5.2分页查询
updatePage
(
pager
)
{
let
ret
=
this
.
setParams
({
...
this
.
form
,
page
:
this
.
pagenation
.
thispage
},
{
page
:
pager
.
thispage
})
this
.
getList
(
ret
)
},
// 5.3 TimeSearchForm
timeSearchForm
(
search
)
{
let
ret
=
this
.
setParams
({
...
this
.
form
,
page
:
this
.
pagenation
.
thispage
},
search
)
this
.
getList
(
ret
)
},
// 6.1新增
addSch
()
{
this
.
$refs
.
formModal
.
show
()
},
// 6.2编辑
editEvent
(
item
)
{
this
.
$refs
.
formModal
.
show
(
item
)
},
// 7.操作
// 修改密码
changePasswordEvent
()
{},
// 删除
deleteEvent
(
id
)
{
let
deleteTip
=
'删除账户'
this
.
$confirm
(
`
${
deleteTip
}
?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
requestAPI
(
api
[
`delete
${
this
.
type
}
`
],
{
id
})
.
then
((
res
)
=>
{
this
.
$message
.
success
(
`
${
deleteTip
}
成功`
)
this
.
_reload
()
})
}).
catch
(()
=>
{
this
.
$message
.
info
(
`取消
${
deleteTip
}
`
)
})
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
@include
c
(
'opearate-button'
)
{
>
.el-button
{
margin-right
:
0px
;
}
&
.btn-primary
.badge
{
color
:
#333744
;
background-color
:
#fff
;
}
&
.badge
{
position
:
relative
;
top
:
0px
;
left
:
-5px
;
display
:
inline-block
;
padding
:
0px
5px
;
font-size
:
12px
;
font-weight
:
700
;
line-height
:
1
;
text-align
:
center
;
white-space
:
nowrap
;
vertical-align
:
baseline
;
border-radius
:
.25rem
;
background
:white
;
color
:
#333744
;
}
i
{
display
:
inline-block
;
padding-right
:
3px
;
}
}
</
style
>
src/components/service_list/serviceItem.vue
0 → 100644
View file @
0fd0ae69
<
template
>
<section>
<el-table
:data=
"list"
stripe
border
style=
"width: 100%"
>
<el-table-column
label=
"服务品牌"
width=
"180"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
brand
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"服务类型"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
type
.
name
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"服务编号"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
serial_no
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"服务名称"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
title
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"服务描述"
width=
"280"
>
<
template
slot-scope=
"scope"
>
<ol>
<li
v-for=
"item in scope.row.description"
>
<span>
{{
item
}}
</span>
</li>
</ol>
</
template
>
</el-table-column>
<el-table-column
prop=
"points"
label=
"工分(工作日工作时间)"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"points_off_time"
label=
"工分(工作日工作外时间)"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"points_holiday"
label=
"工分(节假日)"
width=
"180"
>
</el-table-column>
<el-table-column
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"mini"
@
click
.
prevent
.
stop=
"editEvent(scope.row)"
:disabled=
"!scope.row.can_update"
><i
class=
"fa fa-edit animated"
></i>
编辑
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click
.
prevent
.
stop=
"deleteEvent(scope.row)"
:disabled=
"!scope.row.can_delete"
><i
class=
"fa fa-edit animated"
></i>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
</section>
</template>
<
script
>
export
default
{
name
:
'serviceItem'
,
props
:
[
'list'
],
methods
:
{
editEvent
(
item
)
{
this
.
$parent
.
editEvent
(
item
)
},
deleteEvent
(
item
)
{
this
.
$parent
.
deleteEvent
(
item
)
}
}
}
</
script
>
<
style
scoped
>
</
style
>
src/components/service_list/servicePagenation.vue
0 → 100644
View file @
0fd0ae69
<
template
>
<section
class=
"pull-right"
>
<el-pagination
v-if=
"total > 0"
class=
"mb20 mt20"
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"pager.thispage"
:page-sizes=
"[10, 20, 40, 60, 80, 100]"
:page-size=
"pager.pagesize"
layout=
"total, prev, pager, next, jumper"
:total=
"total"
>
</el-pagination>
</section>
</
template
>
<
script
>
export
default
{
props
:
{
total
:
{
type
:
Number
,
default
:
0
}
},
data
()
{
return
{
pager
:
{
thispage
:
1
,
pagesize
:
20
,
totalcount
:
0
}
}
},
created
()
{
// this.$emit('update:pager', this.pager)
},
methods
:
{
handleSizeChange
(
val
)
{
this
.
pager
.
thispage
=
1
this
.
pager
.
pagesize
=
val
this
.
pager
.
totalcount
=
this
.
total
this
.
$emit
(
'update:pager'
,
this
.
pager
)
},
handleCurrentChange
(
val
)
{
this
.
pager
.
thispage
=
val
this
.
pager
.
totalcount
=
this
.
total
this
.
$emit
(
'update:pager'
,
this
.
pager
)
}
}
}
</
script
>
<
style
scoped
>
</
style
>
src/route.js
View file @
0fd0ae69
...
...
@@ -8,6 +8,7 @@ import CaseRoute from './routes/case'
import
SupplierRoute
from
'./routes/supplier'
import
AccountRoute
from
'./routes/account'
import
ProfileRoute
from
'./routes/profile'
import
ServiceRoute
from
'./routes/service'
let
routes
=
[]
let
reimRoutes
=
[]
...
...
@@ -17,6 +18,7 @@ let caseRoutes = []
let
supplierRoute
=
[]
let
accountRoute
=
[]
let
profileRoute
=
[]
let
serviceRoute
=
[]
const
appName
=
'schedule'
routes
=
[].
concat
(
ScheduleRoute
)
...
...
@@ -27,6 +29,7 @@ caseRoutes = [].concat(CaseRoute)
supplierRoute
=
[].
concat
(
SupplierRoute
)
accountRoute
=
[].
concat
(
AccountRoute
)
profileRoute
=
[].
concat
(
ProfileRoute
)
serviceRoute
=
[].
concat
(
ServiceRoute
)
let
RouterInit
=
()
=>
{
portal
.
createApp
(
appName
,
{},
app
=>
{
...
...
@@ -53,6 +56,9 @@ let RouterInit = () => {
portal
.
createApp
(
'profile'
,
{},
app
=>
{
app
.
mapRoute
(
profileRoute
)
})
portal
.
createApp
(
'services'
,
{},
app
=>
{
app
.
mapRoute
(
serviceRoute
)
})
// portal.createApp('client', {}, app => {
// app.mapRoute([
// {
...
...
src/routes/service.js
0 → 100644
View file @
0fd0ae69
import
ServiceHome
from
'../components/service_list/serviceHome'
const
routes
=
[{
path
:
'/service'
,
name
:
'serviceHome'
,
component
:
ServiceHome
}]
export
default
routes
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