Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
S
shuchengMiniPro
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
cfld-frontend
shuchengMiniPro
Commits
e2fe0da5
Commit
e2fe0da5
authored
Dec 20, 2023
by
shilei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://101.201.78.203/cfld-front/shuchengminipro
into dev
parents
c6f0e158
3854ab39
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
140 additions
and
82 deletions
+140
-82
index.js
src/api/url/index.js
+2
-0
dropdown.vue
src/components/dropdown/dropdown.vue
+4
-5
park-card.vue
src/components/media/park-card.vue
+9
-6
index.vue
src/pages/entryPark/index.vue
+124
-70
industryDetail.vue
src/pages/inviteInvestment/industryDetail.vue
+1
-1
No files found.
src/api/url/index.js
View file @
e2fe0da5
...
@@ -30,4 +30,6 @@ export default {
...
@@ -30,4 +30,6 @@ export default {
queryFiltersList
:
'/postcard/api/sysDictData/listByCodes'
,
queryFiltersList
:
'/postcard/api/sysDictData/listByCodes'
,
/** 登录 */
/** 登录 */
login
:
'/postcard/user/login'
,
login
:
'/postcard/user/login'
,
/** 主导产业 */
queryIndustryList
:
'/postcard/api/parkInfo/v1.0/industryList'
,
}
}
src/components/dropdown/dropdown.vue
View file @
e2fe0da5
...
@@ -164,8 +164,7 @@ export default {
...
@@ -164,8 +164,7 @@ export default {
},
},
computed
:
{
computed
:
{
popupBox
()
{
popupBox
()
{
return
`top :
${
this
.
top
+
"rpx"
}
;
return
`border-radius: 0 0
${
this
.
radius
}
${
this
.
radius
}
;`
;
border-radius: 0 0
${
this
.
radius
}
${
this
.
radius
}
;`
;
},
},
scrollPopup
()
{
scrollPopup
()
{
return
`opacity:
${
this
.
isShow
?
1
:
0
}
;`
;
return
`opacity:
${
this
.
isShow
?
1
:
0
}
;`
;
...
@@ -305,10 +304,10 @@ export default {
...
@@ -305,10 +304,10 @@ export default {
.popup-box
{
.popup-box
{
width
:
100%
;
width
:
100%
;
height
:
auto
;
height
:
auto
;
position
:
fixed
;
position
:
relative
;
overflow
:
hidden
;
overflow
:
hidden
;
background-color
:
#ffffff
;
background-color
:
#ffffff
;
z-index
:
99999
!
important
;
z-index
:
5001
;
.scroll-popup
{
.scroll-popup
{
width
:
100%
;
width
:
100%
;
...
@@ -385,7 +384,7 @@ export default {
...
@@ -385,7 +384,7 @@ export default {
right
:
0
;
right
:
0
;
bottom
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
0
.8
);
background
:
rgba
(
0
,
0
,
0
,
0
.8
);
z-index
:
99998
!
important
;
z-index
:
5000
!
important
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
</
style
>
</
style
>
src/components/media/park-card.vue
View file @
e2fe0da5
...
@@ -10,13 +10,13 @@
...
@@ -10,13 +10,13 @@
<template
v-slot:rightMedia
>
<template
v-slot:rightMedia
>
<view>
<view>
<div
class=
"f24 flex right-footer"
>
<div
class=
"f24 flex right-footer"
>
<div
style=
"width: 200rpx"
>
<div
class=
"nowrap"
style=
"width: 200rpx"
>
<span
class=
"c80"
>
级别:
</span>
<span
class=
"c80"
>
产业园
级别:
</span>
<span>
{{
detail
.
levelName
||
"--"
}}
</span>
<span>
{{
parkInfo
.
levelName
||
"--"
}}
</span>
</div>
</div>
<div
style=
"margin-left: 10rpx"
>
<div
class=
"nowrap"
style=
"margin-left: 10rpx"
>
<span
class=
"c80"
>
面积:
</span
<span
class=
"c80"
>
占地
面积:
</span
>
{{
detail
.
coverArea
?
detail
.
coverArea
+
"亩"
:
"--"
}}
>
{{
parkInfo
.
coverArea
?
parkInfo
.
coverArea
+
"亩"
:
"--"
}}
</div>
</div>
</div>
</div>
</view>
</view>
...
@@ -64,4 +64,7 @@ export default {
...
@@ -64,4 +64,7 @@ export default {
.c80
{
.c80
{
color
:
#808080
;
color
:
#808080
;
}
}
.nowrap
{
white-space
:
nowrap
;
}
</
style
>
</
style
>
src/pages/entryPark/index.vue
View file @
e2fe0da5
<!-- 走进园区 -->
<!-- 走进园区 -->
<
template
>
<
template
>
<view
class=
"container"
>
<view
class=
"container"
>
<view
class=
"tab_bar"
>
<div
class=
"top-cell"
>
<view
<view
class=
"tab_bar relative z-5001"
>
class=
"tab_item"
<view
:class=
"
{ active: activeBar === index }"
class=
"tab_item"
@click="changeTab(index)"
:class=
"
{ active: activeBar === index }"
v-for="(tab, index) in tabBarList"
@click="changeTab(index)"
:key="index"
v-for="(tab, index) in tabBarList"
>
:key="index"
<p>
{{
tab
}}
</p>
>
<span
class=
"line"
v-if=
"activeBar === index"
></span>
<p>
{{
tab
}}
</p>
<span
class=
"line"
v-if=
"activeBar === index"
></span>
</view>
</view>
</view>
</view>
<div
<div
class=
"flex align-center justify-between relative z-5001"
class=
"flex align-center justify-between"
style=
"padding: 25rpx 23rpx;background: #fff;width: 100vw "
style=
"padding: 25rpx 23rpx;background: #fff;position: fixed;top: 60rpx;width: 100vw "
>
>
<div
class=
"flex align-center"
>
<div
class=
"flex align-center"
>
<div
class=
"search-input"
>
<div
class=
"search-input"
>
...
@@ -48,27 +49,28 @@
...
@@ -48,27 +49,28 @@
</div>
</div>
</div>
</div>
</div>
</div>
<dropdown-vue
<div
v-show=
"activeBar !== 1"
>
ref=
"dropDown"
<dropdown-vue
:menuList=
"$u.deepClone(menuList[activeBar])"
ref=
"dropDown"
:dataObj=
"$u.deepClone(filterList[activeBar])"
:menuList=
"$u.deepClone(menuList[activeBar])"
@
change=
"change"
:dataObj=
"$u.deepClone(filterList[activeBar])"
themeColor=
"#4374EF"
@
change=
"change"
:top=
"166"
themeColor=
"#4374EF"
></dropdown-vue>
:top=
"166"
<div
style=
"height: 246rpx"
></div>
></dropdown-vue>
<div
v-if=
"mode === 'list'"
>
</div>
<view
class=
"tab-contant"
>
</div>
<view
class=
"media-card"
<view
v-if=
"mode === 'list'"
class=
"tab-contant content"
:class=
"
{'no-filter': activeBar === 1}">
v-for=
"cardInfo in dataList"
<view
:key=
"cardInfo.id"
class=
"media-card"
@
click=
"toDetail(cardInfo)"
v-for=
"cardInfo in dataList"
>
:key=
"cardInfo.id"
<park-card-vue
:key-words=
"keyWords"
:detail=
"cardInfo"
v-if=
"activeBar == 0"
></park-card-vue>
@
click=
"toDetail(cardInfo)"
<land-card-vue
:key-words=
"keyword"
:detail=
"cardInfo"
v-if=
"activeBar == 1"
></land-card-vue>
>
<carrier-card-vue
:key-words=
"keyword"
:detail=
"cardInfo"
v-if=
"activeBar == 2"
></carrier-card-vue>
<park-card-vue
:key-words=
"keyWords"
:detail=
"cardInfo"
v-if=
"activeBar == 0"
></park-card-vue>
</view>
<land-card-vue
:key-words=
"keyword"
:detail=
"cardInfo"
v-if=
"activeBar == 1"
></land-card-vue>
<carrier-card-vue
:key-words=
"keyword"
:detail=
"cardInfo"
v-if=
"activeBar == 2"
></carrier-card-vue>
</view>
</view>
<u-loadmore
<u-loadmore
v-if=
"dataList.length && (!haveMore || isLoading)"
v-if=
"dataList.length && (!haveMore || isLoading)"
...
@@ -92,8 +94,8 @@
...
@@ -92,8 +94,8 @@
marginTop=
"120"
marginTop=
"120"
>
>
</u-empty>
</u-empty>
</
div
>
</
view
>
<div
v-else
>
<div
v-else
class=
"content z-100"
>
<map
id=
"mapId"
@
markertap=
"handleMarkerClick"
@
callouttap=
"handleMarkerClick"
:scale=
'10'
style=
"width: 100%;height: calc(100vh - 246rpx)"
latitude=
"31.464086"
longitude=
"116.944909"
class=
"map"
:markers=
"markers"
>
<map
id=
"mapId"
@
markertap=
"handleMarkerClick"
@
callouttap=
"handleMarkerClick"
:scale=
'10'
style=
"width: 100%;height: calc(100vh - 246rpx)"
latitude=
"31.464086"
longitude=
"116.944909"
class=
"map"
:markers=
"markers"
>
</map>
</map>
<div
v-if=
"activeInfo.id"
:key=
"activeInfo.id"
@
click=
"toDetail(activeInfo)"
style=
"position: fixed;padding: 0 30rpx;bottom: 30rpx;width: 100vw;z-index: 999;box-sizing: border-box;"
>
<div
v-if=
"activeInfo.id"
:key=
"activeInfo.id"
@
click=
"toDetail(activeInfo)"
style=
"position: fixed;padding: 0 30rpx;bottom: 30rpx;width: 100vw;z-index: 999;box-sizing: border-box;"
>
...
@@ -133,7 +135,7 @@ export default {
...
@@ -133,7 +135,7 @@ export default {
[
[
{
{
id
:
1
,
id
:
1
,
name
:
"
级别
"
,
name
:
"
主导产业
"
,
isMultiple
:
false
,
//是否多选
isMultiple
:
false
,
//是否多选
showType
:
3
,
//下拉框类型(1、2、3、4)
showType
:
3
,
//下拉框类型(1、2、3、4)
},
},
...
@@ -146,18 +148,18 @@ export default {
...
@@ -146,18 +148,18 @@ export default {
},
},
],
],
[
[
{
//
{
id
:
1
,
//
id: 1,
name
:
"土地类型"
,
//
name: "土地类型",
isMultiple
:
false
,
//是否多选
//
isMultiple: false, //是否多选
showType
:
3
,
//下拉框类型(1、2、3、4)
//
showType: 3, //下拉框类型(1、2、3、4)
},
//
},
{
//
{
id
:
2
,
//
id: 2,
name
:
"面积"
,
//
name: "面积",
isMultiple
:
false
,
//是否多选
//
isMultiple: false, //是否多选
showType
:
3
,
//下拉框类型(1、2、3、4)
//
showType: 3, //下拉框类型(1、2、3、4)
},
//
},
],
],
[
[
{
{
...
@@ -170,7 +172,7 @@ export default {
...
@@ -170,7 +172,7 @@ export default {
id
:
2
,
id
:
2
,
name
:
"建筑结构"
,
name
:
"建筑结构"
,
isMultiple
:
false
,
//是否多选
isMultiple
:
false
,
//是否多选
showType
:
1
,
//下拉框类型(1、2、3、4)
showType
:
3
,
//下拉框类型(1、2、3、4)
},
},
{
{
id
:
3
,
id
:
3
,
...
@@ -205,25 +207,53 @@ export default {
...
@@ -205,25 +207,53 @@ export default {
},
},
mounted
()
{
mounted
()
{
this
.
getList
();
this
.
getList
();
store
.
dispatch
(
'getFilterEnum'
).
then
(()
=>
{
this
.
initFilterList
();
this
.
filterList
=
[
{
itemList1
:
this
.
filterEnum
.
park_level
,
itemList2
:
this
.
filterEnum
.
park_area
,
},
{
itemList1
:
this
.
filterEnum
.
land_type
,
itemList2
:
this
.
filterEnum
.
land_area
,
},
{
itemList1
:
this
.
filterEnum
.
carrier_type
,
itemList2
:
this
.
filterEnum
.
carrier_construction
,
itemList3
:
this
.
filterEnum
.
carrier_area
,
}
]
})
},
},
methods
:
{
methods
:
{
initFilterList
()
{
const
list
=
[
this
.
initIndustryList
(),
store
.
dispatch
(
'getFilterEnum'
)];
Promise
.
all
(
list
).
then
(([
industryList
])
=>
{
this
.
filterList
=
[
{
itemList1
:
industryList
.
map
((
i
)
=>
({
dictLabel
:
i
,
dictValue
:
i
,
dictType
:
'primaryIndustry'
})),
itemList2
:
this
.
filterEnum
.
park_area
,
},
{
itemList1
:
this
.
filterEnum
.
land_type
,
itemList2
:
this
.
filterEnum
.
land_area
,
},
{
itemList1
:
this
.
filterEnum
.
carrier_type
,
itemList2
:
this
.
filterEnum
.
carrier_construction
,
itemList3
:
this
.
filterEnum
.
carrier_area
,
}
]
})
},
initIndustryList
()
{
return
this
.
$fetch
({
url
:
API
.
queryIndustryList
,
methods
:
"get"
,
data
:
{},
});
}
,
handleParams
(
params
)
{
const
config
=
{
park_area
:
'parkArea'
,
carrier_type
:
'carrierType'
,
carrier_construction
:
'carrierConstruction'
,
carrier_area
:
'carrierArea'
,
}
const
result
=
Object
.
entries
(
params
).
map
(([
key
,
value
])
=>
{
const
target
=
config
[
key
];
if
(
target
)
{
return
[
target
,
value
];
}
else
{
return
[
key
,
value
];
}
});
return
Object
.
fromEntries
(
result
);
},
getList
()
{
getList
()
{
if
(
!
this
.
haveMore
)
return
;
if
(
!
this
.
haveMore
)
return
;
this
.
isLoading
=
true
;
this
.
isLoading
=
true
;
...
@@ -240,6 +270,7 @@ export default {
...
@@ -240,6 +270,7 @@ export default {
}
}
}
}
searchCondition
.
name
=
this
.
searchKey
searchCondition
.
name
=
this
.
searchKey
searchCondition
=
this
.
handleParams
(
searchCondition
);
this
.
$fetch
({
this
.
$fetch
({
url
:
this
.
api
,
url
:
this
.
api
,
methods
:
"post"
,
methods
:
"post"
,
...
@@ -385,8 +416,8 @@ export default {
...
@@ -385,8 +416,8 @@ export default {
padding: 0 10rpx;
padding: 0 10rpx;
padding-top: 15rpx;
padding-top: 15rpx;
background-color: #fff;
background-color: #fff;
position: fixed;
//
position: fixed;
top: 0;
//
top: 0;
width: 100vw;
width: 100vw;
box-sizing: border-box;
box-sizing: border-box;
}
}
...
@@ -414,6 +445,12 @@ export default {
...
@@ -414,6 +445,12 @@ export default {
.tab-contant {
.tab-contant {
padding: 20rpx 30rpx;
padding: 20rpx 30rpx;
}
}
.content {
padding-top: 250rpx + 20rpx;
&.no-filter {
padding-top: 250rpx + 20rpx - 80rpx;
}
}
.media-card {
.media-card {
margin-bottom: 15rpx;
margin-bottom: 15rpx;
}
}
...
@@ -452,4 +489,21 @@ export default {
...
@@ -452,4 +489,21 @@ export default {
margin-right: 16rpx;
margin-right: 16rpx;
}
}
}
}
.top-cell {
position: fixed;
top: 0;
right: 0;
left: 0;;
background-color: white;
z-index: 101;
}
.z-5001 {
z-index: 5001;
}
.z-100 {
z-index: 100;
}
.relative {
position: relative;
}
</
style
>
</
style
>
src/pages/inviteInvestment/industryDetail.vue
View file @
e2fe0da5
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<p
class=
"many-content"
style=
"color: #606266;padding-left: 6rpx;"
>
{{
primaryIndustryList
[
pageId
].
titleIntroduce
}}
</p>
<p
class=
"many-content"
style=
"color: #606266;padding-left: 6rpx;"
>
{{
primaryIndustryList
[
pageId
].
titleIntroduce
}}
</p>
</div>
</div>
<div
v-if=
"primaryIndustryList[pageId].parkList.length > 0"
>
<div
v-if=
"primaryIndustryList[pageId].parkList.length > 0"
>
<section-title
title=
"相关
载体
"
>
<section-title
title=
"相关
产业园
"
>
</section-title>
</section-title>
<div
v-for=
"item in primaryIndustryList[pageId].parkList"
:key=
"item.id"
style=
"margin-bottom: 20rpx;"
@
click=
"toDetail(item)"
>
<div
v-for=
"item in primaryIndustryList[pageId].parkList"
:key=
"item.id"
style=
"margin-bottom: 20rpx;"
@
click=
"toDetail(item)"
>
<park-card
:detail=
"item"
></park-card>
<park-card
:detail=
"item"
></park-card>
...
...
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