Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes-pad
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
ximai
mes-pad
Commits
97a0ed43
Commit
97a0ed43
authored
Feb 24, 2024
by
李驰骋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
登录改为选择作业单元
parent
d0ca3384
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
219 additions
and
209 deletions
+219
-209
http.api.js
common/http.api.js
+2
-0
index.vue
pages/index/index.vue
+204
-198
index.vue
pages/mes/prodReport/index.vue
+9
-8
index.js
store/index.js
+4
-3
No files found.
common/http.api.js
View file @
97a0ed43
...
@@ -26,6 +26,8 @@ const install = (Vue, vm) => {
...
@@ -26,6 +26,8 @@ const install = (Vue, vm) => {
params
),
params
),
getWorkstationList
:
(
params
=
{})
=>
vm
.
$u
.
get
(
config
.
adminPath
+
getWorkstationList
:
(
params
=
{})
=>
vm
.
$u
.
get
(
config
.
adminPath
+
'/mobile/md/workstation/getWorkstationList'
,
params
),
'/mobile/md/workstation/getWorkstationList'
,
params
),
getWorkUnitList
:
(
params
=
{})
=>
vm
.
$u
.
get
(
config
.
adminPath
+
'/md/workunit/getListByUser'
,
params
),
/**
/**
* 生产管理相关API
* 生产管理相关API
**/
**/
...
...
pages/index/index.vue
View file @
97a0ed43
...
@@ -18,21 +18,16 @@
...
@@ -18,21 +18,16 @@
</view>
</view>
<u-modal
width=
"90%"
v-model=
"showWorkstationFlag"
:showConfirmButton=
"false"
:showCancelButton=
"true"
<u-modal
width=
"90%"
v-model=
"showWorkstationFlag"
:showConfirmButton=
"false"
:showCancelButton=
"true"
title=
"请选择工作站"
content=
"操作内容"
>
title=
"请选择工作站"
content=
"操作内容"
>
<!--
<u-tabs
:list=
"processList"
:is-scroll=
"true"
:current=
"currentFlag"
name=
"processName"
@
change=
"getWorkstationList"
>
</u-tabs>
-->
<uv-tabs
:list=
"processList"
:current=
"currentFlag"
keyName=
"processName"
@
change=
"getWorkstationList"
v-if=
"showWorkstationFlag"
></uv-tabs>
<view
class=
"station_list"
>
<view
class=
"station_list"
>
<u-empty
text=
"暂无工作
站"
mode=
"list"
v-if=
"workstation
List.length==0"
<u-empty
text=
"暂无工作
单元"
mode=
"list"
v-if=
"workUnit
List.length==0"
style=
"margin: 0 auto;display: block;height: 360rpx;padding: 100rpx 0;"
></u-empty>
style=
"margin: 0 auto;display: block;height: 360rpx;padding: 100rpx 0;"
></u-empty>
<template
v-else
>
<template
v-else
>
<u-card
class=
"station_card"
:show-foot=
"false"
:title=
"'工作
站'+card.workstationCode"
:key=
"index
"
<u-card
class=
"station_card"
:show-foot=
"false"
:title=
"'工作
单元'+card.workunitCode
"
v-for=
"(card,index) in work
station
List"
>
v-for=
"(card,index) in work
Unit
List"
>
<view
class=
"station_card_text"
slot=
"body"
>
<view
class=
"station_card_text"
slot=
"body"
>
{{
'工作
站名称:'
+
card
.
workstation
Name
}}
{{
'工作
单元名称:'
+
card
.
workunit
Name
}}
<u-button
type=
"primary"
@
click=
"setWork
station
(card)"
<u-button
type=
"primary"
@
click=
"setWork
Unit
(card)"
style=
"margin-top: 30rpx;"
>
选择
style=
"margin-top: 30rpx;"
>
选择
</u-button>
</u-button>
</view>
</view>
...
@@ -45,7 +40,7 @@
...
@@ -45,7 +40,7 @@
title=
"请选择操作"
>
title=
"请选择操作"
>
<view
class=
"logoutmenu"
>
<view
class=
"logoutmenu"
>
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
""
type=
"primary"
>
更改密码
</u-button>
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
""
type=
"primary"
>
更改密码
</u-button>
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
"handleCommand('work
station
')"
type=
"warning"
>
切换工作站
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
"handleCommand('work
unit
')"
type=
"warning"
>
切换工作站
</u-button>
</u-button>
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
"handleCommand('exit')"
type=
"error"
>
退出登录
</u-button>
<u-button
shape=
"circle"
class=
"menu_button"
@
click=
"handleCommand('exit')"
type=
"error"
>
退出登录
</u-button>
</view>
</view>
...
@@ -54,151 +49,162 @@
...
@@ -54,151 +49,162 @@
</template>
</template>
<
script
>
<
script
>
import
TabHeader
from
"./TabHeader.vue"
import
TabHeader
from
"./TabHeader.vue"
import
ProContent
from
"../mes/pro/index.vue"
import
ProContent
from
"../mes/pro/index.vue"
import
GxContent
from
"../mes/gx/index.vue"
import
GxContent
from
"../mes/gx/index.vue"
import
QcContent
from
"../mes/qc/index.vue"
import
QcContent
from
"../mes/qc/index.vue"
import
ProdReport
from
"../mes/prodReport/index.vue"
import
ProdReport
from
"../mes/prodReport/index.vue"
import
DictData
from
'@/components/DictData'
import
DictData
from
'@/components/DictData'
export
default
{
export
default
{
name
:
'HomePage'
,
name
:
'HomePage'
,
components
:
{
components
:
{
TabHeader
,
TabHeader
,
ProContent
,
ProContent
,
GxContent
,
GxContent
,
QcContent
,
QcContent
,
ProdReport
ProdReport
},
data
()
{
return
{
tabIndex
:
"PRO"
,
showWorkstationFlag
:
false
,
showLogoutMenu
:
false
,
activeProcess
:
null
,
userInfo
:
{
nickName
:
'张三'
,
avatar
:
require
(
"@/static/images/head.png"
),
},
processList
:
[],
//工序清单
workstationList
:
[],
//工作站清单
currentFlag
:
0
}
},
created
()
{
uni
.
$on
(
'switchTab'
,
(
indexCode
)
=>
{
this
.
tabIndex
=
indexCode
;
})
uni
.
$on
(
'changeWorkstation'
,
(
indexCode
)
=>
{
this
.
handleCommand
(
'workstation'
);
})
this
.
checkWorkstation
();
this
.
getProcessList
();
},
destroyed
()
{
uni
.
$off
(
'switchTab'
);
uni
.
$off
(
'changeWorkstation'
);
},
methods
:
{
//用户部分点击
handleUserTaped
()
{
console
.
log
(
"TAPED"
)
// this.$refs.menu_dialog.open();
this
.
showLogoutMenu
=
true
;
},
},
data
()
{
//检查工作站设置情况
return
{
checkWorkstation
()
{
tabIndex
:
"PRO"
,
if
(
this
.
vuex_workstation
==
null
)
{
showWorkstationFlag
:
false
,
this
.
showWorkstationFlag
=
true
;
showLogoutMenu
:
false
,
this
.
$u
.
toast
(
"请设置当前触控屏的工作站!"
);
activeProcess
:
null
,
userInfo
:
{
nickName
:
'张三'
,
avatar
:
require
(
"@/static/images/head.png"
),
},
processList
:
[],
//工序清单
workstationList
:
[],
//工作站清单
workUnitList
:[],
//工作站清单
currentFlag
:
0
}
}
},
},
//获取工序清单
created
()
{
getProcessList
()
{
uni
.
$on
(
'switchTab'
,
(
indexCode
)
=>
{
this
.
$u
.
api
.
getProcessList
({}).
then
(
res
=>
{
this
.
tabIndex
=
indexCode
;
if
(
res
.
code
===
200
)
{
})
this
.
processList
=
res
.
data
;
uni
.
$on
(
'changeWorkunit'
,
(
indexCode
)
=>
{
this
.
activeProcess
=
res
.
data
[
0
].
processCode
;
this
.
handleCommand
(
'workunit'
);
this
.
getWorkstationList
({
index
:
0
});
})
}
else
{
this
.
$u
.
toast
(
"获取工序清单异常"
+
res
.
msg
);
}
});
this
.
checkWorkstation
();
this
.
getWorkUnitList
();
},
},
//获取工作站清单
destroyed
()
{
getWorkstationList
(
item
)
{
uni
.
$off
(
'switchTab'
);
this
.
currentFlag
=
item
.
index
;
uni
.
$off
(
'changeWorkunit'
);
this
.
activeProcess
=
this
.
processList
[
item
.
index
].
processCode
;
this
.
$u
.
api
.
getWorkstationList
({
processCode
:
this
.
activeProcess
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
workstationList
=
res
.
data
;
}
else
{
this
.
$u
.
toast
(
"获取工作站清单异常"
+
res
.
msg
);
}
});
},
//设置当前触控屏的工作站
setWorkstation
(
station
)
{
this
.
$u
.
vuex
(
'vuex_workstation'
,
station
);
this
.
showWorkstationFlag
=
false
;
uni
.
$emit
(
'switchWorkstation'
,
station
);
},
},
handleCommand
(
command
)
{
methods
:
{
if
(
command
===
'exit'
)
{
//用户部分点击
this
.
loading
=
true
;
handleUserTaped
()
{
this
.
$u
.
api
.
logout
().
then
(
res
=>
{
console
.
log
(
"TAPED"
)
this
.
loading
=
false
;
// this.$refs.menu_dialog.open();
if
(
res
.
msg
)
{
this
.
showLogoutMenu
=
true
;
this
.
$u
.
toast
(
res
.
msg
);
},
//检查工作站设置情况
checkWorkstation
()
{
if
(
this
.
vuex_workunit
==
null
)
{
this
.
showWorkstationFlag
=
true
;
this
.
$u
.
toast
(
"请设置当前触控屏的工作单元!"
);
}
},
//获取工序清单
getProcessList
()
{
this
.
$u
.
api
.
getProcessList
({}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
processList
=
res
.
data
;
this
.
activeProcess
=
res
.
data
[
0
].
processCode
;
this
.
getWorkstationList
({
index
:
0
});
}
else
{
this
.
$u
.
toast
(
"获取工序清单异常"
+
res
.
msg
);
}
}
});
},
//获取工作站清单
getWorkstationList
(
item
)
{
this
.
currentFlag
=
item
.
index
;
this
.
activeProcess
=
this
.
processList
[
item
.
index
].
processCode
;
this
.
$u
.
api
.
getWorkstationList
({
processCode
:
this
.
activeProcess
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
setTimeout
(()
=>
{
this
.
workstationList
=
res
.
data
;
DictData
.
logout
();
}
else
{
uni
.
reLaunch
({
this
.
$u
.
toast
(
"获取工作站清单异常"
+
res
.
msg
);
url
:
'/pages/sys/login/login'
});
},
500
);
}
}
})
});
}
else
if
(
command
==
'workstation'
)
{
},
this
.
showLogoutMenu
=
false
;
getWorkUnitList
(
item
)
{
this
.
showWorkstationFlag
=
true
;
this
.
$u
.
api
.
getWorkUnitList
({
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
workUnitList
=
res
.
rows
;
}
else
{
this
.
$u
.
toast
(
"获取工作单元清单异常"
+
res
.
msg
);
}
});
},
//设置当前触控屏的工作站
setWorkUnit
(
station
)
{
this
.
$u
.
vuex
(
'vuex_workunit'
,
station
);
this
.
showWorkstationFlag
=
false
;
uni
.
$emit
(
'switchWorkunit'
,
station
);
},
handleCommand
(
command
)
{
if
(
command
===
'exit'
)
{
this
.
loading
=
true
;
this
.
$u
.
api
.
logout
().
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
msg
)
{
this
.
$u
.
toast
(
res
.
msg
);
}
if
(
res
.
code
===
200
)
{
setTimeout
(()
=>
{
DictData
.
logout
();
uni
.
reLaunch
({
url
:
'/pages/sys/login/login'
});
},
500
);
}
})
}
else
if
(
command
==
'workunit'
)
{
this
.
showLogoutMenu
=
false
;
this
.
showWorkstationFlag
=
true
;
}
}
}
}
}
}
}
}
</
script
>
</
script
>
<
style
>
<
style
>
.common-container
{
.common-container
{
width
:
100vw
;
width
:
100vw
;
height
:
100vh
;
height
:
100vh
;
display
:
flex
;
display
:
flex
;
}
}
.common-head
{
.common-head
{
height
:
40px
;
height
:
40px
;
background-color
:
rgb
(
3
,
26
,
60
);
background-color
:
rgb
(
3
,
26
,
60
);
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
padding
:
0
15px
;
padding
:
0
15px
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
}
.header
{
.header
{
width
:
120px
;
width
:
120px
;
background-color
:
#132138
;
background-color
:
#132138
;
color
:
aliceblue
;
color
:
aliceblue
;
font-size
:
25px
;
font-size
:
25px
;
font-family
:
华文楷体
;
font-family
:
华文楷体
;
line-height
:
80
rpx
;
line-height
:
80
rpx
;
height
:
inherit
;
height
:
inherit
;
.header-logo
{
.header-logo
{
width
:
200
rpx
;
width
:
200
rpx
;
...
@@ -206,83 +212,83 @@ export default {
...
@@ -206,83 +212,83 @@ export default {
margin
:
40
rpx
auto
;
margin
:
40
rpx
auto
;
display
:
block
;
display
:
block
;
}
}
}
}
.header
.divItem
{
.header
.divItem
{
height
:
100%
;
height
:
100%
;
align-items
:
center
;
align-items
:
center
;
}
}
.header
.workstation
{
.header
.workstation
{
text-align
:
center
;
text-align
:
center
;
flex-grow
:
1
;
flex-grow
:
1
;
}
}
.header
.user
{
.header
.user
{
width
:
30%
;
width
:
30%
;
}
}
.header
.user
.user-icon
{
.header
.user
.user-icon
{
float
:
right
;
float
:
right
;
}
}
img
{
img
{
width
:
40px
;
width
:
40px
;
height
:
40px
;
height
:
40px
;
border-radius
:
20px
;
border-radius
:
20px
;
margin-left
:
10px
;
margin-left
:
10px
;
}
}
.header
.user
.user-text
{
.header
.user
.user-text
{
float
:
right
;
float
:
right
;
}
}
.logoutmenu
{
.logoutmenu
{
width
:
100%
;
width
:
100%
;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
}
}
.menu_button
{
.menu_button
{
width
:
100px
;
width
:
100px
;
margin
:
10px
;
margin
:
10px
;
}
}
.station_modal
{
.station_modal
{
}
}
.station_list
{
.station_list
{
display
:
flex
;
display
:
flex
;
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
}
}
.station_card
{
.station_card
{
width
:
250px
;
width
:
250px
;
height
:
150px
;
height
:
150px
;
}
}
.common-main
{
.common-main
{
flex
:
1
;
flex
:
1
;
height
:
100%
;
height
:
100%
;
padding
:
6px
6px
6px
0
;
padding
:
6px
6px
6px
0
;
margin
:
0
;
margin
:
0
;
width
:
100%
;
width
:
100%
;
overflow
:
auto
;
overflow
:
auto
;
background-image
:
linear-gradient
(
to
top
right
,
rgb
(
19
26
56
),
rgb
(
33
64
128
));
background-image
:
linear-gradient
(
to
top
right
,
rgb
(
19
26
56
),
rgb
(
33
64
128
));
}
}
.setting-body
{
.setting-body
{
position
:
absolute
;
position
:
absolute
;
bottom
:
20
rpx
;
bottom
:
20
rpx
;
width
:
200
rpx
;
width
:
200
rpx
;
margin
:
0
auto
;
margin
:
0
auto
;
font-size
:
36
rpx
;
font-size
:
36
rpx
;
font-weight
:
initial
;
font-weight
:
initial
;
text-align
:
center
;
text-align
:
center
;
.setting-icon
{
.setting-icon
{
margin
:
10
rpx
10
rpx
;
margin
:
10
rpx
10
rpx
;
}
}
}
}
</
style
>
</
style
>
pages/mes/prodReport/index.vue
View file @
97a0ed43
...
@@ -63,9 +63,9 @@
...
@@ -63,9 +63,9 @@
</view>
</view>
<view
class=
"prod-body-right"
>
<view
class=
"prod-body-right"
>
<view
style=
"text-align: center;line-height: 80rpx;font-size: 28rpx;font-weight: 600;"
>
<view
style=
"text-align: center;line-height: 80rpx;font-size: 28rpx;font-weight: 600;"
>
{{
this
.
vuex_work
station
==
null
?
'请选择工作站'
:
this
.
vuex_workstation
.
workstation
Name
}}
{{
this
.
vuex_work
unit
==
null
?
'请选择工作单元'
:
this
.
vuex_workunit
.
workunit
Name
}}
</view>
</view>
<u-button
type=
"primary"
@
click=
"changeWorkstation"
>
切换工作
站
</u-button>
<u-button
type=
"primary"
@
click=
"changeWorkstation"
>
切换工作
单元
</u-button>
<br/>
<br/>
<u-button
type=
"warning"
@
click=
"commonClick('KnifeTemp')"
>
刀模版上下机
</u-button>
<u-button
type=
"warning"
@
click=
"commonClick('KnifeTemp')"
>
刀模版上下机
</u-button>
<u-button
type=
"primary"
@
click=
"commonClick('Refresh')"
>
刷新
</u-button>
<u-button
type=
"primary"
@
click=
"commonClick('Refresh')"
>
刷新
</u-button>
...
@@ -716,7 +716,7 @@ export default {
...
@@ -716,7 +716,7 @@ export default {
}
}
},
},
mounted
()
{
//监听工作站切换事件
mounted
()
{
//监听工作站切换事件
uni
.
$on
(
'switchWork
station
'
,
(
station
)
=>
{
uni
.
$on
(
'switchWork
unit
'
,
(
station
)
=>
{
this
.
getTaskList
();
this
.
getTaskList
();
})
})
},
},
...
@@ -728,7 +728,7 @@ export default {
...
@@ -728,7 +728,7 @@ export default {
}
}
})
})
//监听工作站切换事件
//监听工作站切换事件
uni
.
$on
(
'switchWork
station
'
,
(
station
)
=>
{
uni
.
$on
(
'switchWork
unit
'
,
(
station
)
=>
{
// this.reset();
// this.reset();
this
.
getTaskList
();
this
.
getTaskList
();
})
})
...
@@ -737,7 +737,7 @@ export default {
...
@@ -737,7 +737,7 @@ export default {
this
.
getTaskList
();
//刷新任务状态
this
.
getTaskList
();
//刷新任务状态
})
})
if
(
this
.
vuex_work
station
!=
null
)
{
if
(
this
.
vuex_work
unit
!=
null
)
{
this
.
getTaskList
();
this
.
getTaskList
();
}
}
// if (this.vuex_task != null) {
// if (this.vuex_task != null) {
...
@@ -745,7 +745,7 @@ export default {
...
@@ -745,7 +745,7 @@ export default {
// }
// }
},
},
destroyed
()
{
destroyed
()
{
uni
.
$off
(
'switchWork
station
'
);
uni
.
$off
(
'switchWork
unit
'
);
uni
.
$off
(
'taskStatusChanged'
);
uni
.
$off
(
'taskStatusChanged'
);
},
},
methods
:
{
methods
:
{
...
@@ -759,7 +759,7 @@ export default {
...
@@ -759,7 +759,7 @@ export default {
console
.
log
(
'99999999'
,
arg
)
console
.
log
(
'99999999'
,
arg
)
},
},
changeWorkstation
()
{
changeWorkstation
()
{
uni
.
$emit
(
'changeWork
station
'
);
uni
.
$emit
(
'changeWork
unit
'
);
},
},
commonClick
(
oper
)
{
commonClick
(
oper
)
{
if
([
'Refresh'
,
'MaterialUsageRecord'
].
indexOf
(
oper
)
===
-
1
&&
this
.
tableSelectData
.
length
===
0
)
{
if
([
'Refresh'
,
'MaterialUsageRecord'
].
indexOf
(
oper
)
===
-
1
&&
this
.
tableSelectData
.
length
===
0
)
{
...
@@ -929,8 +929,9 @@ export default {
...
@@ -929,8 +929,9 @@ export default {
},
},
getTaskList
()
{
getTaskList
()
{
this
.
form
=
{}
this
.
form
=
{}
const
t
=
this
;
this
.
$u
.
api
.
getTaskList
({
this
.
$u
.
api
.
getTaskList
({
work
stationId
:
this
.
vuex_workstation
.
workstation
Id
,
work
unitId
:
t
.
vuex_workunit
.
workunit
Id
,
}).
then
(
res
=>
{
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
this
.
tableData
=
res
.
rows
;
this
.
tableData
=
res
.
rows
;
...
...
store/index.js
View file @
97a0ed43
...
@@ -12,7 +12,7 @@ try{
...
@@ -12,7 +12,7 @@ try{
// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
lifeData
=
uni
.
getStorageSync
(
'lifeData'
);
lifeData
=
uni
.
getStorageSync
(
'lifeData'
);
}
catch
(
e
){
}
catch
(
e
){
}
}
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
...
@@ -41,14 +41,15 @@ const store = new Vuex.Store({
...
@@ -41,14 +41,15 @@ const store = new Vuex.Store({
vuex_remember
:
lifeData
.
vuex_remember
?
lifeData
.
vuex_remember
:
''
,
vuex_remember
:
lifeData
.
vuex_remember
?
lifeData
.
vuex_remember
:
''
,
vuex_locale
:
lifeData
.
vuex_locale
?
lifeData
.
vuex_locale
:
''
,
vuex_locale
:
lifeData
.
vuex_locale
?
lifeData
.
vuex_locale
:
''
,
vuex_isAgent
:
lifeData
.
vuex_isAgent
?
lifeData
.
vuex_isAgent
:
''
,
vuex_isAgent
:
lifeData
.
vuex_isAgent
?
lifeData
.
vuex_isAgent
:
''
,
// 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
// 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
vuex_config
:
config
,
vuex_config
:
config
,
//当前设备绑定的工作站
//当前设备绑定的工作站
vuex_workstation
:
null
,
vuex_workstation
:
null
,
vuex_workunit
:
null
,
//当前工作站正在进行的生产任务
//当前工作站正在进行的生产任务
vuex_task
:
null
,
vuex_task
:
null
,
// 自定义tabbar数据
// 自定义tabbar数据
// vuex_tabbar: [{
// vuex_tabbar: [{
// iconPath: "/static/uview/example/component.png",
// iconPath: "/static/uview/example/component.png",
...
...
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