Commit b7297819 authored by 王玉鑫's avatar 王玉鑫

feat: 各详情页所属或包含列表

parent 4b46de35
......@@ -52,6 +52,7 @@ export interface LandDetailResp {
regionName: string;
/** 类型 */
type: string;
id: number;
};
/** */
energyRequire: string;
......
......@@ -13,7 +13,13 @@
<DetailInfo :infos="joinRequired"></DetailInfo>
</DetailInfoCell>
<DetailInfoCell title="配套设施"></DetailInfoCell>
<DetailInfoCell title="所属产业园"></DetailInfoCell>
<DetailInfoCell title-center title="所属产业园">
<ParkItem
:type="ParkItemType.industrial"
:item="detail.carrierParkVo"
@to-detail="toIndustrial"
></ParkItem>
</DetailInfoCell>
</div>
</div>
</template>
......@@ -22,13 +28,17 @@
import DetailInfo from '@/components/detail/DetailInfo.vue';
import DetailInfoCell from '@/components/detail/DetailInfoCell.vue';
import DetailMain from '@/components/detail/DetailMain.vue';
import ParkItem from '@/components/list/ParkItem.vue';
import { useDetail } from '@/composable/useDetail.ts';
import { useJoinRequired } from '@/composable/useJoinRequired.ts';
import { useJump } from '@/composable/useJump.ts';
import { RouteName } from '@/router/router.ts';
import { RequestUrl } from '@/types/api.ts';
import type { CarrierDetailResp } from '@/types/api/carrierDetail';
import { ParkItemType } from '@/types/enum.ts';
import { computed } from 'vue';
const { detail, initDetail } = useDetail<CarrierDetailResp>(RequestUrl.industrialParkDetal);
const { detail, initDetail } = useDetail<CarrierDetailResp>(RequestUrl.carrierDetail);
const { joinRequired } = useJoinRequired(
computed(() => {
......@@ -43,5 +53,16 @@ const { joinRequired } = useJoinRequired(
}),
);
const { open } = useJump();
const toIndustrial = () => {
open({
query: {
id: detail.value?.carrierParkVo.id,
},
path: RouteName.industrialParkDetail,
});
};
initDetail();
</script>
......@@ -43,6 +43,7 @@
v-for="item of industrials.slice(0, 4)"
:key="item.name"
:detail="item"
@to-detail="toIndustrialDetail(item)"
></MiniListItem>
</div>
</DetailInfoCell>
......@@ -58,6 +59,7 @@
v-for="item of lands.slice(0, 4)"
:key="item.name"
:detail="item"
@to-detail="toLandDetail(item)"
></MiniListItem>
</div>
</DetailInfoCell>
......@@ -235,11 +237,12 @@ const industryFund = computed(() => {
/** 产业园列表 */
const industrials = computed(() => {
if (detail.value) {
return detail.value.parkPageList.map(({ imgUrl, name, levelName, coverArea }) => {
return detail.value.parkPageList.map(({ imgUrl, name, levelName, coverArea, id }) => {
return {
imgUrl,
name,
info: [levelName, coverArea ? `${coverArea}㎡` : ''].filter(haveValue).join(' | '),
id,
};
});
} else {
......@@ -250,11 +253,12 @@ const industrials = computed(() => {
/** 开发区列表 */
const lands = computed(() => {
if (detail.value) {
return detail.value.landPageList.map(({ name, imgUrl, area, typeName }) => {
return detail.value.landPageList.map(({ name, imgUrl, area, typeName, id }) => {
return {
imgUrl,
name,
info: [area ? `${area}亩` : '', typeName].filter(haveValue).join(' | '),
id,
};
});
} else {
......@@ -270,5 +274,23 @@ const toLandList = () => {
open(RouteName.landList);
};
const toIndustrialDetail = ({ id }: { id: string | number }) => {
open({
name: RouteName.industrialParkDetail,
query: {
id,
},
});
};
const toLandDetail = ({ id }: { id: string | number }) => {
open({
name: RouteName.landDetail,
query: {
id,
},
});
};
initDetail();
</script>
......@@ -71,6 +71,7 @@
v-for="item of carriers.slice(0, 4)"
:key="item.name"
:detail="item"
@to-detail="toCarrierDetail(item as any)"
></MiniListItem>
</div>
</DetailInfoCell>
......@@ -255,5 +256,18 @@ const toCarrierList = () => {
open(RouteName.carrierList);
};
/**
* 载体详情
* todo id属性?
*/
const toCarrierDetail = ({ id }: { id: string }) => {
open({
name: RouteName.carrierDetail,
query: {
id,
},
});
};
initDetail();
</script>
......@@ -16,7 +16,13 @@
<DetailInfo :infos="joinRequired"></DetailInfo>
</DetailInfoCell>
<DetailInfoCell title="周边配套"></DetailInfoCell>
<DetailInfoCell title="所属开发区"></DetailInfoCell>
<DetailInfoCell title-center title="所属开发区">
<ParkItem
:type="ParkItemType.develop"
:item="detail.development"
@to-detail="toDevelop"
></ParkItem>
</DetailInfoCell>
</div>
</div>
</template>
......@@ -30,6 +36,9 @@ import { useJoinRequired } from '@/composable/useJoinRequired.ts';
import { RequestUrl } from '@/types/api.ts';
import type { LandDetailResp } from '@/types/api/landDetail';
import { computed } from 'vue';
import { ParkItemType } from '@/types/enum.ts';
import { useJump } from '@/composable/useJump.ts';
import { RouteName } from '@/router/router.ts';
const { detail, initDetail } = useDetail<LandDetailResp>(RequestUrl.landDetail);
......@@ -46,5 +55,20 @@ const { joinRequired } = useJoinRequired(
}),
);
const { open } = useJump();
/**
* 开发区
* todo id?
*/
const toDevelop = () => {
open({
name: RouteName.developZoneDetail,
query: {
id: detail.value?.development.id,
},
});
};
initDetail();
</script>
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