Commit 8cd999a0 authored by shilei's avatar shilei

feat: 开发区、政策文件、首页修改

parent a6ade69f
export default { export default {
// 首页 // 首页
homeInfo: '/postcard/api/developmentInfo/v1.0/source', homeInfo: "/postcard/api/developmentInfo/v1.0/source",
// 列表 // 列表
// 开发区列表
developList: "/postcard/api/developmentInfo/v1.0/page",
// 产业园列表 // 产业园列表
parkList: '/postcard/api/parkInfo/v1.0/page', parkList: "/postcard/api/parkInfo/v1.0/page",
// 土地列表 // 土地列表
landList: '/postcard/api/land/v1.0/page', landList: "/postcard/api/land/v1.0/page",
// 载体列表 // 载体列表
carrierList: '/postcard/api/carrier/v1.0/page', carrierList: "/postcard/api/carrier/v1.0/page",
// 开发区详情
developDetail: "/postcard/api/developmentInfo/v1.0/detail",
// 产业园详情 // 产业园详情
industrialDetail: '/postcard/api/parkInfo/v1.0/detail', industrialDetail: "/postcard/api/parkInfo/v1.0/detail",
// 载体详情 // 载体详情
carrierDetail: '/postcard/api/carrier/v1.0/detail', carrierDetail: "/postcard/api/carrier/v1.0/detail",
// 土地详情 // 土地详情
landDetail: '/postcard/api/land/v1.0/detail', landDetail: "/postcard/api/land/v1.0/detail",
// 招商引资-招商亮点 // 招商引资-招商亮点
investmentLights: '/postcard/api/developmentInfo/v1.0/detail', investmentLights: "/postcard/api/developmentInfo/v1.0/detail",
// 提交咨询信息 // 提交咨询信息
infoSubmit: '/postcard/api/investClueInfo/save', infoSubmit: "/postcard/api/investClueInfo/save",
// 查询条件列表(字典表) // 查询条件列表(字典表)
queryConditionList: '/postcard/api/sysDictData/listByCodes', queryConditionList: "/postcard/api/sysDictData/listByCodes",
// 查询是否有权限查看列表 // 查询是否有权限查看列表
haveAuth: '/postcard/api/investClueInfo/haveAuth', haveAuth: "/postcard/api/investClueInfo/haveAuth",
// 查询咨询列表 // 查询咨询列表
queryInvestInfos: '/postcard/api/investClueInfo/page', queryInvestInfos: "/postcard/api/investClueInfo/page",
// 联系我们列表 // 联系我们列表
queryContacts: '/postcard/api/scSourceInfo/contact', queryContacts: "/postcard/api/scSourceInfo/contact",
// 获取查询条件列表 // 获取查询条件列表
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', queryIndustryList: "/postcard/api/parkInfo/v1.0/industryList",
} };
<template>
<media-card
:img="detail.imgUrl || ''"
:title="detail.name || ''"
:keyWords="keyWords"
:cardId="detail.id"
@click="toDetail"
:key="detail.id"
>
<template v-slot:rightMedia>
<view>
<div class="f24 flex right-footer">
<div class="nowrap" style="width: 200rpx">
<span class="c80">开发区级别:</span>
<span>{{ detail.levelName || "--" }}</span>
</div>
<div class="nowrap" style="margin-left: 10rpx">
<span class="c80">规划面积:</span
>{{ detail.coverArea ? detail.planArea + "平方公里" : "--" }}
</div>
</div>
</view>
</template>
</media-card>
</template>
<script>
import mediaCard from "./card.vue";
export default {
components: { mediaCard },
props: {
isHeightLight: {
type: Boolean,
default: false,
},
detail: {
type: Object,
default: {},
},
keyWords: {
type: String,
default: "",
},
},
methods: {
toDetail() {
uni.navigateTo({
url: "/pages/detail/developDetail?id" + this.detail.id,
});
},
},
};
</script>
<style lang="scss" scoped>
.right-media {
color: #4d4d4d;
line-height: 34rpx;
margin-bottom: 10rpx;
}
.right-footer {
color: #4d4d4d;
line-height: 34rpx;
}
.c80 {
color: #808080;
}
.nowrap {
white-space: nowrap;
}
</style>
...@@ -4,7 +4,8 @@ switch (process.env.VUE_APP_ENV) { ...@@ -4,7 +4,8 @@ switch (process.env.VUE_APP_ENV) {
baseUrl = "https://prod-postcard-api.liyeyun.com"; baseUrl = "https://prod-postcard-api.liyeyun.com";
break; break;
case "development": case "development":
baseUrl = "https://test.postcard-api.liyeyun.com.cn"; baseUrl = "https://test-postcard-api.liyeyun.com";
// baseUrl = "http://58impx.natappfree.cc";
break; break;
} }
......
...@@ -25,6 +25,12 @@ ...@@ -25,6 +25,12 @@
"navigationBarTitleText": "招商引资" "navigationBarTitleText": "招商引资"
} }
}, },
{
"path": "pages/detail/developDetail",
"style": {
"navigationBarTitleText": "开发区详情"
}
},
{ {
"path": "pages/detail/industrialDetail", "path": "pages/detail/industrialDetail",
"style": { "style": {
......
<template>
<div class="industrial-detail">
<CommonDetail detail-type="industrial" :queryUrl="queryUrl">
<template #default="{ detail }">
<div v-if="detail">
<div class="detail-cell">
<div class="detail-cell__title">{{ detail.name }}</div>
<div class="detail-cell__body">
<div class="flex detail-cell__line">
<div class="detail-cell__info flex1">
<div class="detail-cell__info-name">开发区级别:</div>
<div class="detail-cell__info-value">
{{ handleValue(detail.levelName) }}
</div>
</div>
<div class="detail-cell__info flex1">
<div class="detail-cell__info-name">规划面积:</div>
<div class="detail-cell__info-value">
{{ handleValue(detail.planArea, "平方公里") }}
</div>
</div>
</div>
<div class="detail-cell__line">
<div class="detail-cell__info">
<div class="detail-cell__info-name">详细地址:</div>
<div class="detail-cell__info-value">
{{ handleValue(detail.address) }}
</div>
</div>
</div>
</div>
</div>
<!-- 园区介绍 -->
<div class="detail-cell">
<div class="detail-cell__title">园区介绍</div>
<div class="detail-cell__body text-26">
{{ detail.description }}
</div>
</div>
<!-- 产业基础 -->
<div class="detail-cell">
<div class="detail-cell__title">产业基础</div>
<div class="detail-cell__body">
<div class="detail-cell__line">
<div class="detail-cell__info text-26">
<div class="detail-cell__info-name">主导产业:</div>
<div class="detail-cell__info-value">
{{ handleValue(detail.primaryIndustry) }}
</div>
</div>
</div>
<div class="detail-cell__line">
<div class="detail-cell__info text-26">
<div class="detail-cell__info-name">招商方向:</div>
<div class="detail-cell__info-value">
{{ handleValue(businessInfo(detail)) }}
</div>
</div>
</div>
</div>
</div>
<!-- 产业支持 -->
<!-- <div v-if="detail.resources.length > 0" class="detail-cell">
<div class="detail-cell__title">产业支持</div>
<div class="detail-cell__body">
<div class="flex gap-20 flex-wrap">
<div
v-for="item of detail.resources"
:key="item"
class="detail-cell__word-info"
>
{{ item }}
</div>
</div>
</div>
</div> -->
<!-- 园内配套 -->
<!-- <div v-if="detail.setUp.length > 0" class="detail-cell">
<div class="detail-cell__title">园区内配套</div>
<div class="detail-cell__body">
<div class="flex gap-20 flex-wrap">
<div
v-for="item of detail.setUp"
:key="item"
class="detail-cell__word-info"
>
{{ item }}
</div>
</div>
</div>
</div> -->
<!-- 开发区内产业园 -->
<div v-if="detail.parkPageList.length > 0" class="detail-cell">
<div class="detail-cell__title">开发区关联的园区</div>
<div class="detail-cell__body">
<div
v-for="item of detail.parkPageList"
:key="item.id"
class="detail-cell__list-item"
@click="toIndustrial(item)"
style="margin-bottom: 20px; border-top: none; padding: 0"
>
<park-card-vue :detail="item"></park-card-vue>
<!-- <ListItem :item="item" @to-detail="toCarrier(item)" no-address>
<template>
<div>
<div
class="flex align-center flex1"
style="margin-bottom: 20rpx"
>
<div>载体类型:</div>
<div>{{ handleValue(item.type) }}</div>
</div>
<div class="flex align-center flex1">
<div>建筑面积:</div>
<div>{{ handleValue(item.area, "m²") }}</div>
</div>
</div>
</template>
</ListItem> -->
</div>
</div>
</div>
</div>
</template>
</CommonDetail>
</div>
</template>
<script>
import CommonDetail from "./components/CommonDetail.vue";
import api from "@/api/url/index.js";
import { handleValue } from "@/utils/utils.js";
import ListItem from "./components/ListItem.vue";
import parkCardVue from "../../components/media/park-card.vue";
export default {
name: "IndustrialDetail",
components: {
CommonDetail,
ListItem,
parkCardVue,
},
data() {
return {
queryUrl: api.developDetail,
};
},
methods: {
handleValue,
businessInfo(detail) {
const { investmentDetails } = detail;
return investmentDetails
? investmentDetails
.map(({ codeName, details }) => {
return `${codeName}-${details}`;
})
.join(";")
: "";
},
toIndustrial({ id }) {
uni.navigateTo({
url: `/pages/detail/industrialDetail?id=${id}`,
});
},
},
};
</script>
This diff is collapsed.
This diff is collapsed.
<template> <template>
<div> <div>
<view class="tab_bar"> <view class="tab_bar">
<view <view
class="tab_item" class="tab_item"
:class="{ active: activeBar === index }" :class="{ active: activeBar === index }"
...@@ -12,44 +12,84 @@ ...@@ -12,44 +12,84 @@
<span class="line" v-if="activeBar === index"></span> <span class="line" v-if="activeBar === index"></span>
</view> </view>
</view> </view>
<div style="height: 80rpx;" v-if="activeBar === 0"> </div> <div style="height: 80rpx" v-if="activeBar === 0"></div>
<img v-if="activeBar === 0" style="width: 100vw;" mode="widthFix" src="https://cfld-hw-obs-01.obs.cn-north-4.myhuaweicloud.com/lyy/img/shucheng/zsyz_04.jpg" /> <img
<div style="padding: 40rpx 23rpx;"> v-if="activeBar === 0"
style="width: 100vw"
mode="widthFix"
src="https://cfld-hw-obs-01.obs.cn-north-4.myhuaweicloud.com/lyy/img/shucheng/zsyz_04.jpg"
/>
<div style="padding: 40rpx 23rpx">
<!-- 招商亮点 --> <!-- 招商亮点 -->
<div v-if="activeBar === 0"> <div v-if="activeBar === 0">
<div v-for="light in lights" :key="light.title"> <div v-for="light in lights" :key="light.title">
<section-title :title="light.title"></section-title> <section-title :title="light.title"></section-title>
<p class="many-content" style="color: #606266;padding-left: 6rpx;">{{light.titleIntroduce}}</p> <p class="many-content" style="color: #606266; padding-left: 6rpx">
{{ light.titleIntroduce }}
</p>
</div> </div>
</div> </div>
<!-- 重点产业 --> <!-- 重点产业 -->
<div v-if="activeBar === 1" style="padding: 40rpx 23rpx;"> <div v-if="activeBar === 1" style="padding: 40rpx 23rpx">
<div class="section-box" @click="toIndustryDetail(1)"> <div class="section-box" @click="toIndustryDetail(1)">
<img class="icon-industry" style="width: 226rpx;" src="/static/img/icon-invest-industry_3.png" alt=""> <img
class="icon-industry"
style="width: 226rpx"
src="/static/img/icon-invest-industry_3.png"
alt=""
/>
<p class="industry-name">装备制造业</p> <p class="industry-name">装备制造业</p>
</div> </div>
<div class="section-box" @click="toIndustryDetail(0)"> <div class="section-box" @click="toIndustryDetail(0)">
<img class="icon-industry" src="/static/img/icon-invest-industry_2.png" alt=""> <img
class="icon-industry"
src="/static/img/icon-invest-industry_2.png"
alt=""
/>
<p class="industry-name">电子信息产业</p> <p class="industry-name">电子信息产业</p>
</div> </div>
<div class="section-box" @click="toIndustryDetail(2)"> <div class="section-box" @click="toIndustryDetail(2)">
<img class="icon-industry" src="/static/img/icon-invest-industry_4.png" alt=""> <img
class="icon-industry"
src="/static/img/icon-invest-industry_4.png"
alt=""
/>
<p class="industry-name">农副食品加工产业</p> <p class="industry-name">农副食品加工产业</p>
</div> </div>
</div> </div>
<!-- 招商政策 --> <!-- 招商政策 -->
<div v-if="activeBar === 2" style="padding: 60rpx 23rpx;"> <div v-if="activeBar === 2" style="padding: 60rpx 23rpx">
<div class="section-box policy-section" style="background: #F5FAFF;" @click="toPolicyDetail(0)"> <div class="section-box policy-section" @click="toPolicyDetail(0)">
<img class="icon-industry" src="/static/img/icon-invest-policy_1.png" alt=""> <img
<p class="industry-name" style="color: #0462C1">征地和购买厂房</p> class="icon-industry"
src="/static/img/icon-invest-policy_1.png"
alt=""
/>
<p class="industry-name" style="color: #0462c1">征地和购买厂房</p>
</div> </div>
<div class="section-box policy-section" style="background: #F2FDFC;" @click="toPolicyDetail(1)"> <div class="section-box policy-section" @click="toPolicyDetail(1)">
<img class="icon-industry" src="/static/img/icon-invest-industry_3.png" alt=""> <img
<p class="industry-name" style="color: #01A192">租赁厂房</p> class="icon-industry"
src="/static/img/icon-invest-policy_3.png"
alt=""
/>
<p class="industry-name" style="color: #01a192">租赁厂房</p>
</div> </div>
<div class="section-box policy-section" style="background: #F4F5FF;" @click="toPolicyDetail(2)"> <div class="section-box policy-section" @click="toPolicyDetail(2)">
<img class="icon-industry" src="/static/img/icon-invest-policy_2.png" alt=""> <img
<p class="industry-name" style="color: #8108C0;">其他</p> class="icon-industry"
src="/static/img/icon-invest-policy_2.png"
alt=""
/>
<p class="industry-name" style="color: #8108c0">其他</p>
</div>
<div class="section-box policy-section" @click="toPolicyDetail(3)">
<img
class="icon-industry"
src="/static/img/icon-invest-industry_4.png"
alt=""
/>
<p class="industry-name" style="color: #01a192">资料文件</p>
</div> </div>
</div> </div>
<!-- 要素成本 --> <!-- 要素成本 -->
...@@ -57,18 +97,15 @@ ...@@ -57,18 +97,15 @@
<ElementCost :detail="detail"></ElementCost> <ElementCost :detail="detail"></ElementCost>
</div> </div>
</div> </div>
<div> <div></div>
</div>
</div> </div>
<!-- <div>招商引资</div> --> <!-- <div>招商引资</div> -->
</template> </template>
<script> <script>
import API from '@/api/url'; import API from "@/api/url";
import sectionTitle from '../../components/section-title/section-title.vue'; import sectionTitle from "../../components/section-title/section-title.vue";
import {mapMutations} from 'vuex'; import { mapMutations } from "vuex";
import ElementCost from '@/components/element-cost/element-cost.vue'; import ElementCost from "@/components/element-cost/element-cost.vue";
export default { export default {
components: { sectionTitle, ElementCost }, components: { sectionTitle, ElementCost },
data() { data() {
...@@ -77,49 +114,44 @@ export default { ...@@ -77,49 +114,44 @@ export default {
activeBar: 0, activeBar: 0,
lights: [], lights: [],
detail: null, detail: null,
} };
}, },
mounted() { mounted() {
this.$fetch({ this.$fetch({
url: API.investmentLights, url: API.investmentLights,
methods: 'get', methods: "get",
success: res => { success: (res) => {
console.log(res) console.log(res);
this.detail = res; this.detail = res;
this.lights = res.investmentLights; this.lights = res.investmentLights;
this.setPolicyList(res.policys); this.setPolicyList(res.policys);
this.setPrimaryIndustryList(res.primaryIndustrys); this.setPrimaryIndustryList(res.primaryIndustrys);
} },
}) });
}, },
methods: { methods: {
...mapMutations(['setPolicyList', 'setPrimaryIndustryList']), ...mapMutations(["setPolicyList", "setPrimaryIndustryList"]),
changeTab(index) { changeTab(index) {
this.activeBar = index; this.activeBar = index;
}, },
toPolicyDetail(index) { toPolicyDetail(index) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/inviteInvestment/policyDetail?id=' + index, url: "/pages/inviteInvestment/policyDetail?id=" + index,
success: (result) => { success: (result) => {},
},
fail: () => {}, fail: () => {},
complete: () => {} complete: () => {},
}); });
}, },
toIndustryDetail(index) { toIndustryDetail(index) {
uni.navigateTo({ uni.navigateTo({
url: '/pages/inviteInvestment/industryDetail?id=' + index, url: "/pages/inviteInvestment/industryDetail?id=" + index,
success: (result) => { success: (result) => {},
},
fail: () => {}, fail: () => {},
complete: () => {} complete: () => {},
}); });
},
} },
} };
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.tab_bar { .tab_bar {
...@@ -133,6 +165,7 @@ export default { ...@@ -133,6 +165,7 @@ export default {
top: 0; top: 0;
width: 100vw; width: 100vw;
box-sizing: border-box; box-sizing: border-box;
z-index: 9;
} }
.tab_item { .tab_item {
display: flex; display: flex;
...@@ -149,7 +182,7 @@ export default { ...@@ -149,7 +182,7 @@ export default {
height: 10rpx; height: 10rpx;
border-radius: 10rpx; border-radius: 10rpx;
margin-top: -10rpx; margin-top: -10rpx;
background: linear-gradient(to right, #4374EF 0%, rgba(0,0,0,0) 100%); background: linear-gradient(to right, #4374ef 0%, rgba(0, 0, 0, 0) 100%);
display: inline-block; display: inline-block;
overflow: hidden; overflow: hidden;
} }
...@@ -161,17 +194,34 @@ export default { ...@@ -161,17 +194,34 @@ export default {
margin-bottom: 5rpx; margin-bottom: 5rpx;
} }
.policy-section { .policy-section {
height: 180rpx; height: 240rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
border-radius: 8rpx; border-radius: 10rpx;
&:nth-child(1) {
background: url("/static/img/bg-invest-policy_1.png") 100% 100% no-repeat;
background-size: cover;
}
&:nth-child(2) {
background: url("/static/img/bg-invest-policy_2.png") 100% 100% no-repeat;
background-size: cover;
}
&:nth-child(3) {
background: url("/static/img/bg-invest-policy_3.png") 100% 100% no-repeat;
background-size: cover;
}
&:nth-child(4) {
background: url("/static/img/bg-invest-policy_4.png") 100% 100% no-repeat;
background-size: cover;
}
.icon-industry { .icon-industry {
width: 127rpx; width: 154rpx;
height: 107rpx; height: 154rpx;
left: 100rpx; left: 71rpx;
top: 37rpx; top: 43rpx;
} }
.industry-name { .industry-name {
padding-left: 304rpx; padding-left: 363rpx;
padding-top: 100rpx;
} }
} }
.icon-industry { .icon-industry {
...@@ -183,9 +233,9 @@ export default { ...@@ -183,9 +233,9 @@ export default {
} }
.industry-name { .industry-name {
font-size: 34rpx; font-size: 34rpx;
color: #003AB9; color: #003ab9;
font-weight: bold; font-weight: bold;
padding-top: 73rpx; padding-top: 73rpx;
padding-left: 216rpx; padding-left: 216rpx;
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div style="padding: 40rpx 23rpx;"> <div style="padding: 40rpx 23rpx">
<div v-for="policy in policyList[pageId].info" :key='policy.name'> <div>
<section-title :title="policy.name"></section-title> <div class="section-box policy-section">
<p class="many-content" style="color: #606266;padding-left: 6rpx;">{{policy.content}}</p> <img
class="icon-industry"
src="/static/img/icon-invest-industry_4.png"
alt=""
/>
<p class="industry-name" style="color: #01a192">资料文件</p>
</div>
</div>
<div v-for="policy in policyList[pageId].info" :key="policy.name">
<template v-if="pageId != 3">
<section-title :title="policy.name"></section-title>
<p class="many-content" style="color: #606266; padding-left: 6rpx">
{{ policy.content }}
</p>
</template>
<template v-else>
<div
class="flex align-center"
style="
height: 80rpx;
margin: 0 auto 20rpx;
color: #666;
font-size: 30rpx;
width: 608rpx;
border-bottom: 1px solid rgba(0, 0, 0, 0.15);
"
@click="openFile(policy)"
>
<img style="width: 48rpx; height: 48rpx" src="" alt="" />
<p class="flex1 ell">{{ policy.name }}</p>
</div>
</template>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import store from '@/store' import store from "@/store";
import sectionTitle from '../../components/section-title/section-title.vue' import sectionTitle from "../../components/section-title/section-title.vue";
export default { export default {
components: { sectionTitle }, components: { sectionTitle },
data() { data() {
return { return {
pageId: 0 pageId: 0,
} };
}, },
computed: { computed: {
policyList() { policyList() {
return store.state.policyList return store.state.policyList;
} },
}, },
mounted(){ mounted() {
this.pageId = this.$root.$mp.query.id; this.pageId = this.$root.$mp.query.id;
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: this.policyList[this.pageId].type title: this.policyList[this.pageId].type,
}); });
},
methods: {
openFile(policy) {
wx.downloadFile({
// 示例 url,并非真实存在
url: policy.content,
success: function (res) {
const filePath = res.tempFilePath;
wx.openDocument({
filePath: filePath,
success: function (res) {
console.log("打开文档成功");
},
});
},
});
},
},
};
</script>
<style lang="scss" scoped>
// .section-box {
// background-size: contain;
// height: 183rpx;
// position: relative;
// margin-bottom: 5rpx;
// }
.policy-section {
height: 240rpx;
margin-bottom: 20rpx;
border-radius: 10rpx;
background: url("/static/img/bg-invest-policy_4.png") 100% 100% no-repeat;
background-size: cover;
position: relative;
.icon-industry {
position: absolute;
width: 154rpx;
height: 154rpx;
left: 71rpx;
top: 43rpx;
}
.industry-name {
font-size: 34rpx;
color: #003ab9;
font-weight: bold;
padding-top: 100rpx;
padding-left: 363rpx;
} }
} }
</script> </style>
<style></style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
src/static/img/icon-invest-policy_1.png

12.5 KB | W: | H:

src/static/img/icon-invest-policy_1.png

61.4 KB | W: | H:

src/static/img/icon-invest-policy_1.png
src/static/img/icon-invest-policy_1.png
src/static/img/icon-invest-policy_1.png
src/static/img/icon-invest-policy_1.png
  • 2-up
  • Swipe
  • Onion skin
src/static/img/icon-invest-policy_2.png

10.4 KB | W: | H:

src/static/img/icon-invest-policy_2.png

64.1 KB | W: | H:

src/static/img/icon-invest-policy_2.png
src/static/img/icon-invest-policy_2.png
src/static/img/icon-invest-policy_2.png
src/static/img/icon-invest-policy_2.png
  • 2-up
  • Swipe
  • Onion skin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment