Commit 913a52ac authored by shilei's avatar shilei

Merge branch 'dev' of http://101.201.78.203/cfld-front/liyeyun into dev

parents 177d5148 d861230c
VITE_BASE_URL=https://prod.api.liyeyun.com VITE_BASE_URL=https://www.liyeyun.com
VITE_BASE_USER_URL=https://prod.user.liyeyun.com VITE_BASE_USER_URL=https://www.liyeyun.com
...@@ -79,15 +79,6 @@ body { ...@@ -79,15 +79,6 @@ body {
} }
} }
.el-input .el-input__wrapper.el-input__wrapper {
&.is-focus.is-focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
}
.el-textarea__inner:focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
$namespace: 'lyy'; // change the 'mx' to 'xmx'. then <date-picker prefix-class="lyy" /> $namespace: 'lyy'; // change the 'mx' to 'xmx'. then <date-picker prefix-class="lyy" />
$default-color: #555; $default-color: #555;
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
" "
> >
<div <div
class="flex w-[167px] items-center pl-2" class="flex w-[167px] items-center justify-end pl-2"
@click=" @click="
() => { () => {
route.name === 'home' && toUserCenter(); route.name === 'home' && toUserCenter();
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
> >
<img src="@/assets/images/icon-avatar.png" class="mr-3 h-[26px] w-[26px]" /> <img src="@/assets/images/icon-avatar.png" class="mr-3 h-[26px] w-[26px]" />
<span <span
class="mr-2 cursor-pointer text-base text-[#333333]" class="cursor-pointer text-base text-[#333333]"
:class="route.name !== 'home' ? 'text-[#333333]' : 'text-white'" :class="route.name !== 'home' ? 'text-[#333333]' : 'text-white'"
> >
{{ userInfo.phone }} {{ userInfo.phone }}
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
</div> </div>
</template> </template>
</ElDropdown> </ElDropdown>
<span class="ml-5 cursor-pointer" @click="handleLogout">退出</span> <span class="ml-3 cursor-pointer" @click="handleLogout">退出</span>
</div> </div>
<div v-else class="cursor-pointer"> <div v-else class="cursor-pointer">
<span @click="handleLogin('loginByPhone')">登录</span> <span @click="handleLogin('loginByPhone')">登录</span>
......
...@@ -2,19 +2,42 @@ ...@@ -2,19 +2,42 @@
<template> <template>
<ElImage :src="src"> <ElImage :src="src">
<template #placeholder> <template #placeholder>
<img class="h-full w-full" src="@/assets/images/default-pic.png" /> <img class="h-full w-full" :src="currentdefault" />
</template> </template>
<template #error><img class="h-full w-full" src="@/assets/images/default-pic.png" /></template> <template #error><img class="h-full w-full" :src="currentdefault" /></template>
</ElImage> </ElImage>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
withDefaults( import defaultPicIcon from '@/assets/images/default-pic.png';
import defaultParkPic from '@/assets/images/default-pic__park.png';
import defaultDevelopPic from '@/assets/images/default-pic__develop.png';
import defaultCarrierPic from '@/assets/images/default-pic__carrier.png';
import defaultLandPic from '@/assets/images/default-pic__land.png';
import { DetailType } from '@/types/enum.ts';
import { computed } from 'vue';
const props = withDefaults(
defineProps<{ defineProps<{
src?: string | null; src?: string | null;
defaultPic?: string;
type?: DetailType | null;
}>(), }>(),
{ {
src: null, src: null,
defaultPic: defaultPicIcon,
type: null,
}, },
); );
const currentdefault = computed(() => {
const config: Record<DetailType, string> = {
[DetailType.carrier]: defaultCarrierPic,
[DetailType.land]: defaultLandPic,
[DetailType.industrial]: defaultParkPic,
[DetailType.develop]: defaultDevelopPic,
[DetailType.startDevelop]: defaultDevelopPic,
};
return props.type ? config[props.type] : defaultPicIcon;
});
</script> </script>
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
class="h-[434px] w-full" class="h-[434px] w-full"
:class="{ 'cursor-pointer': image?.href }" :class="{ 'cursor-pointer': image?.href }"
:src="image?.url" :src="image?.url"
:type="detailType"
@click="handleClick(image?.href)" @click="handleClick(image?.href)"
/> />
<div <div
...@@ -36,6 +37,7 @@ ...@@ -36,6 +37,7 @@
class="h-[92px] w-[130px] cursor-pointer rounded" class="h-[92px] w-[130px] cursor-pointer rounded"
:class="{ 'border border-[#2878ff] p-1': index === currentIndex }" :class="{ 'border border-[#2878ff] p-1': index === currentIndex }"
:src="image.url" :src="image.url"
:type="detailType"
/> />
</SwiperSlide> </SwiperSlide>
</Swiper> </Swiper>
...@@ -65,10 +67,12 @@ import { Swiper, SwiperSlide } from 'swiper/vue'; ...@@ -65,10 +67,12 @@ import { Swiper, SwiperSlide } from 'swiper/vue';
import { computed, ref } from 'vue'; import { computed, ref } from 'vue';
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import type { Swiper as SwiperType } from 'swiper/types'; import type { Swiper as SwiperType } from 'swiper/types';
import type { DetailType } from '@/types/enum.ts';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
images: { url: string; href?: string }[]; images: { url: string; href?: string }[];
detailType: DetailType;
}>(), }>(),
{ {
images: () => [], images: () => [],
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<!-- main content --> <!-- main content -->
<div class="mt-4 flex"> <div class="mt-4 flex">
<div> <div>
<ImageList :images="mainImageList"></ImageList> <ImageList :images="mainImageList" :detail-type="type"></ImageList>
</div> </div>
<div class="ml-[30px] mt-4 flex flex-1 flex-col"> <div class="ml-[30px] mt-4 flex flex-1 flex-col">
<div> <div>
......
...@@ -2,7 +2,11 @@ ...@@ -2,7 +2,11 @@
<template> <template>
<div v-if="detail" class="w-[274px]"> <div v-if="detail" class="w-[274px]">
<div @click="handleDetail"> <div @click="handleDetail">
<CommonImage class="h-[204px] w-full cursor-pointer rounded-sm" :src="detail.imgUrl" /> <CommonImage
class="h-[204px] w-full cursor-pointer rounded-sm"
:src="detail.imgUrl"
:type="detailType"
/>
</div> </div>
<div <div
class="ell2 mt-3 cursor-pointer font-yahei text-lg leading-6 text-[#1A1A1A]" class="ell2 mt-3 cursor-pointer font-yahei text-lg leading-6 text-[#1A1A1A]"
...@@ -17,6 +21,7 @@ ...@@ -17,6 +21,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import type { DetailType } from '@/types/enum.ts';
export interface MiniDetail { export interface MiniDetail {
imgUrl: string; imgUrl: string;
...@@ -27,6 +32,7 @@ export interface MiniDetail { ...@@ -27,6 +32,7 @@ export interface MiniDetail {
withDefaults( withDefaults(
defineProps<{ defineProps<{
detail: MiniDetail; detail: MiniDetail;
detailType: DetailType;
}>(), }>(),
{}, {},
); );
......
...@@ -166,5 +166,8 @@ const changeShowSelect = (b: boolean) => { ...@@ -166,5 +166,8 @@ const changeShowSelect = (b: boolean) => {
.el-select { .el-select {
width: 100%; width: 100%;
} }
.el-input-number {
width: 100% !important;
}
} }
</style> </style>
...@@ -11,9 +11,10 @@ ...@@ -11,9 +11,10 @@
<div <div
v-if="isShowPhone" v-if="isShowPhone"
class="star-contact-info absolute right-[50px] top-0 flex h-[145px] w-[328px] rounded bg-white p-5" class="star-contact-info absolute right-[50px] top-0 flex h-[145px] w-[328px] rounded bg-white p-5"
:class="{ 'w-[186px]': !detail.contactPerson }"
> >
<div class="flex w-[288px]"> <div class="flex w-[288px]" :class="{ 'w-[146px]': !detail.contactPerson }">
<div class="flex h-[105px] flex-none flex-col"> <div v-if="detail.contactPerson" class="flex h-[105px] flex-none flex-col">
<div> <div>
<div class="flex h-5 items-center justify-center"> <div class="flex h-5 items-center justify-center">
<div <div
......
...@@ -26,7 +26,12 @@ ...@@ -26,7 +26,12 @@
:src="item.videourl" :src="item.videourl"
:cover="item.videoCover!" :cover="item.videoCover!"
></CommonVideo> ></CommonVideo>
<CommonImage v-else class="h-full w-full" :src="item.videourl"></CommonImage> <CommonImage
v-else
class="h-full w-full"
:src="item.videourl"
:type="DetailType.develop"
></CommonImage>
</SwiperSlide> </SwiperSlide>
</Swiper> </Swiper>
<div <div
...@@ -76,6 +81,7 @@ import { Swiper, SwiperSlide } from 'swiper/vue'; ...@@ -76,6 +81,7 @@ import { Swiper, SwiperSlide } from 'swiper/vue';
import type { Swiper as SwiperType } from 'swiper/types'; import type { Swiper as SwiperType } from 'swiper/types';
import { Autoplay } from 'swiper/modules'; import { Autoplay } from 'swiper/modules';
import { computed, ref, nextTick, onMounted } from 'vue'; import { computed, ref, nextTick, onMounted } from 'vue';
import { DetailType } from '@/types/enum.ts';
import CommonVideo from '../common/CommonVideo.vue'; import CommonVideo from '../common/CommonVideo.vue';
import CommonImage from '../common/CommonImage.vue'; import CommonImage from '../common/CommonImage.vue';
......
...@@ -483,3 +483,13 @@ watch( ...@@ -483,3 +483,13 @@ watch(
width: 80px; width: 80px;
} }
</style> </style>
<style lang="scss">
.filter-view {
.el-input .el-input__wrapper.el-input__wrapper {
&.is-focus.is-focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
}
}
</style>
...@@ -146,6 +146,14 @@ const commit = debounce( ...@@ -146,6 +146,14 @@ const commit = debounce(
.el-input__wrapper { .el-input__wrapper {
height: 38px; height: 38px;
} }
.el-input .el-input__wrapper.el-input__wrapper {
&.is-focus.is-focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
}
.el-textarea__inner:focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
} }
.lyy .el-select-dropdown__item.selected { .lyy .el-select-dropdown__item.selected {
color: #c0322b; color: #c0322b;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<CommonImage <CommonImage
class="h-[156px] w-[208px] cursor-pointer rounded-sm" class="h-[156px] w-[208px] cursor-pointer rounded-sm"
:src="item.imgUrl" :src="item.imgUrl"
:type="isDevelop ? DetailType.develop : DetailType.industrial"
:alt="isDevelop ? '开发区' : '产业园'" :alt="isDevelop ? '开发区' : '产业园'"
/> />
<div <div
...@@ -59,7 +60,7 @@ import type { IndustrialParkItem } from '@/types/api/industrialParkList.ts'; ...@@ -59,7 +60,7 @@ import type { IndustrialParkItem } from '@/types/api/industrialParkList.ts';
import { filterAddress, formatNumber } from '@/utils/filters.ts'; import { filterAddress, formatNumber } from '@/utils/filters.ts';
import { computed } from 'vue'; import { computed } from 'vue';
import type { DevelopZoneItem } from '@/types/api/developZoneList'; import type { DevelopZoneItem } from '@/types/api/developZoneList';
import { ParkItemType } from '@/types/enum.ts'; import { DetailType, ParkItemType } from '@/types/enum.ts';
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import ListInfo from './ListInfo.vue'; import ListInfo from './ListInfo.vue';
......
<template> <template>
<div class="flex"> <div class="flex">
<div class="media-left relative mr-4 cursor-pointer" @click="handleDetail"> <div class="media-left relative mr-4 cursor-pointer" @click="handleDetail">
<CommonImage class="h-[156px] w-[208px]" :src="detail.imgUrl" alt="" /> <CommonImage
class="h-[156px] w-[208px]"
:src="detail.imgUrl"
:type="DetailType.carrier"
alt=""
/>
<div v-if="detail.isVr" class="absolute bottom-2 left-2"> <div v-if="detail.isVr" class="absolute bottom-2 left-2">
<img class="h-[45px] w-[45px] rounded-[50%]" src="@/assets/images/vr-icon.png" /> <img class="h-[45px] w-[45px] rounded-[50%]" src="@/assets/images/vr-icon.png" />
</div> </div>
...@@ -36,6 +41,7 @@ ...@@ -36,6 +41,7 @@
import type { CarrierListItem } from '@/types/api/carrierList'; import type { CarrierListItem } from '@/types/api/carrierList';
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import { formatNumber } from '@/utils/filters.ts'; import { formatNumber } from '@/utils/filters.ts';
import { DetailType } from '@/types/enum.ts';
withDefaults( withDefaults(
defineProps<{ defineProps<{
......
<template> <template>
<div class="flex"> <div class="flex">
<div class="media-left relative mr-4 cursor-pointer" @click="handleDetail"> <div class="media-left relative mr-4 cursor-pointer" @click="handleDetail">
<CommonImage class="h-[156px] w-[208px]" :src="detail.imgUrl" alt="" /> <CommonImage
class="h-[156px] w-[208px]"
:type="DetailType.land"
:src="detail.imgUrl"
alt=""
/>
<div v-if="detail.isVr" class="absolute bottom-2 left-2"> <div v-if="detail.isVr" class="absolute bottom-2 left-2">
<img class="h-[45px] w-[45px] rounded-[50%]" src="@/assets/images/vr-icon.png" /> <img class="h-[45px] w-[45px] rounded-[50%]" src="@/assets/images/vr-icon.png" />
</div> </div>
...@@ -42,6 +47,7 @@ ...@@ -42,6 +47,7 @@
import type { LandListItem } from '@/types/api/landList'; import type { LandListItem } from '@/types/api/landList';
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import { formatNumber } from '@/utils/filters.ts'; import { formatNumber } from '@/utils/filters.ts';
import { DetailType } from '@/types/enum.ts';
withDefaults( withDefaults(
defineProps<{ defineProps<{
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
{{ detail.content.trim() }} {{ detail.content.trim() }}
</p> </p>
<div class="mt-4 flex justify-between text-sm leading-[22px] text-[#4d4d4d]"> <div class="mt-4 flex justify-between text-sm leading-[22px] text-[#4d4d4d]">
<div>{{ detail.publisher }} | {{ detail.ctime }}</div> <div class="flex items-center">{{ infos }}</div>
<div class="read-more flex items-center"> <div class="read-more flex items-center">
<span>了解详情</span> <span>了解详情</span>
<img src="@/assets/images/icon-arrow_red.png" class="ml-1 h-4 w-4" alt="" /> <img src="@/assets/images/icon-arrow_red.png" class="ml-1 h-4 w-4" alt="" />
...@@ -30,8 +30,10 @@ ...@@ -30,8 +30,10 @@
<script setup lang="ts"> <script setup lang="ts">
import type { PolicyListItem } from '@/types/api/policyList'; import type { PolicyListItem } from '@/types/api/policyList';
import CommonImage from '@/components/common/CommonImage.vue'; import CommonImage from '@/components/common/CommonImage.vue';
import { computed } from 'vue';
import { haveValue } from '@/utils/filters.ts';
withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
detail: PolicyListItem; detail: PolicyListItem;
}>(), }>(),
...@@ -45,6 +47,10 @@ const emit = defineEmits<{ ...@@ -45,6 +47,10 @@ const emit = defineEmits<{
const handleDetail = () => { const handleDetail = () => {
emit('to-detail'); emit('to-detail');
}; };
const infos = computed(() => {
const { publisher, publishTime } = props.detail;
return [publisher, publishTime].filter(haveValue).join(' | ');
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.media-main { .media-main {
......
<template> <template>
<div> <div class="my-park-list">
<div class="flex"> <div class="flex">
<div class="flex space-x-[10px]"> <div class="flex space-x-[10px]">
<div> <div>
<ElSelect v-model="params.isSystem" clearable placeholder="请选择来源方式"> <ElSelect
v-model="params.isSystem"
clearable
placeholder="请选择来源方式"
popper-class="source-select"
>
<ElOption <ElOption
v-for="source of sourceList" v-for="source of sourceList"
:key="source.dictCode" :key="source.dictCode"
...@@ -46,7 +51,12 @@ ...@@ -46,7 +51,12 @@
></DatePicker> ></DatePicker>
</div> </div>
<div> <div>
<ElSelect v-model="params.status" clearable placeholder="请选择审批状态"> <ElSelect
v-model="params.status"
clearable
placeholder="请选择审批状态"
popper-class="source-select"
>
<ElOption <ElOption
v-for="status of statusList" v-for="status of statusList"
:key="status.dictCode" :key="status.dictCode"
...@@ -265,3 +275,21 @@ const tableHeaderStyle = { ...@@ -265,3 +275,21 @@ const tableHeaderStyle = {
// } // }
} }
</style> </style>
<style lang="scss">
.my-park-list {
.el-input .el-input__wrapper.el-input__wrapper {
&.is-focus.is-focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
}
.el-textarea__inner:focus {
box-shadow: 0 0 0 1px rgb(220, 223, 230) inset !important;
}
}
.source-select {
.el-select-dropdown__item.selected {
color: #c0322b;
}
}
</style>
// 列表 // 列表
export interface PolicyListItem { export interface PolicyListItem {
content: string; content: string;
ctime: string; publishTime: string;
id: number; id: number;
industryList: string; industryList: string;
publisher: string; publisher: string;
......
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<DetailInfoCell v-if="industryFund.length" :infos="industryFund" title="产业基金"> <DetailInfoCell v-if="industryFund.length" :infos="industryFund" title="产业基金">
<DetailInfo :infos="industryFund"></DetailInfo> <DetailInfo :infos="industryFund"></DetailInfo>
</DetailInfoCell> </DetailInfoCell>
<DetailInfoCell title="周边配套" title-center v-if="detail.latitude"> <DetailInfoCell v-if="detail.latitude" title="周边配套" title-center>
<MapView :lat="detail.latitude" :lng="detail.longitude"></MapView> <MapView :lat="detail.latitude" :lng="detail.longitude"></MapView>
</DetailInfoCell> </DetailInfoCell>
<DetailInfoCell <DetailInfoCell
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
v-for="item of industrials.slice(0, 4)" v-for="item of industrials.slice(0, 4)"
:key="item.name" :key="item.name"
:detail="item" :detail="item"
:detail-type="DetailType.industrial"
@to-detail="toIndustrialDetail(item)" @to-detail="toIndustrialDetail(item)"
></MiniListItem> ></MiniListItem>
</div> </div>
...@@ -91,6 +92,7 @@ ...@@ -91,6 +92,7 @@
v-for="item of lands.slice(0, 4)" v-for="item of lands.slice(0, 4)"
:key="item.name" :key="item.name"
:detail="item" :detail="item"
:detail-type="DetailType.land"
@to-detail="toLandDetail(item)" @to-detail="toLandDetail(item)"
></MiniListItem> ></MiniListItem>
</div> </div>
......
...@@ -162,7 +162,12 @@ ...@@ -162,7 +162,12 @@
class="relative w-[272px] cursor-pointer" class="relative w-[272px] cursor-pointer"
@click="toDetail(item)" @click="toDetail(item)"
> >
<CommonImage class="h-[205px] w-[272px] rounded-sm" :src="item.imgUrl" alt="" /> <CommonImage
:type="currentListType"
class="h-[205px] w-[272px] rounded-sm"
:src="item.imgUrl"
alt=""
/>
<span <span
v-if="item.isSuper" v-if="item.isSuper"
class="absolute left-0 top-0 block rounded-tl-sm bg-[#C0322B] px-3 text-sm font-semibold leading-[26px] text-white" class="absolute left-0 top-0 block rounded-tl-sm bg-[#C0322B] px-3 text-sm font-semibold leading-[26px] text-white"
...@@ -298,6 +303,7 @@ import { filterAddress, formatNumber } from '@/utils/filters.ts'; ...@@ -298,6 +303,7 @@ import { filterAddress, formatNumber } from '@/utils/filters.ts';
import ListInfo from '@/components/list/ListInfo.vue'; import ListInfo from '@/components/list/ListInfo.vue';
import { useMessage } from '@/composable/useMessage.ts'; import { useMessage } from '@/composable/useMessage.ts';
import { useSearchParamsStore } from '@/stores/searchParams.ts'; import { useSearchParamsStore } from '@/stores/searchParams.ts';
import { DetailType } from '@/types/enum.ts';
const { open } = useJump(); const { open } = useJump();
const searchParamsStore = useSearchParamsStore(); const searchParamsStore = useSearchParamsStore();
...@@ -336,6 +342,17 @@ const selectedCity = computed(() => { ...@@ -336,6 +342,17 @@ const selectedCity = computed(() => {
return searchParamsStore.globalProvinceName; return searchParamsStore.globalProvinceName;
}); });
/** 当前列表类型 */
const currentListType = computed(() => {
const config: Record<string, DetailType> = {
develop: DetailType.develop,
carrier: DetailType.carrier,
industrial: DetailType.industrial,
land: DetailType.land,
};
return config[activeTab.value]!;
});
const toList = (type: string = 'search') => { const toList = (type: string = 'search') => {
let name: RouteName = RouteName.developZoneList; let name: RouteName = RouteName.developZoneList;
let filterType: string = searchType.value; let filterType: string = searchType.value;
......
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
</div> </div>
</div> </div>
</DetailInfoCell> </DetailInfoCell>
<DetailInfoCell title="周边配套" title-center v-if="detail.latitude"> <DetailInfoCell v-if="detail.latitude" title="周边配套" title-center>
<MapView :lat="detail.latitude" :lng="detail.longitude"></MapView> <MapView :lat="detail.latitude" :lng="detail.longitude"></MapView>
</DetailInfoCell> </DetailInfoCell>
<DetailInfoCell <DetailInfoCell
...@@ -107,6 +107,7 @@ ...@@ -107,6 +107,7 @@
v-for="item of carriers.slice(0, 4)" v-for="item of carriers.slice(0, 4)"
:key="item.name" :key="item.name"
:detail="item" :detail="item"
:detail-type="DetailType.carrier"
@to-detail="toCarrierDetail(item)" @to-detail="toCarrierDetail(item)"
></MiniListItem> ></MiniListItem>
</div> </div>
......
...@@ -58,33 +58,35 @@ ...@@ -58,33 +58,35 @@
<span class="text-[#C0322B]">{{ totalCount }}</span> <span class="text-[#C0322B]">{{ totalCount }}</span>
个相关{{ tabList[activeTab].name }} 个相关{{ tabList[activeTab].name }}
</p> </p>
<div v-for="item in datas" :key="item.id"> <div class="space-y-[15px]">
<!-- 土地 --> <div v-for="item in datas" :key="item.id">
<LandListItemView <!-- 土地 -->
v-if="activeTab === 2" <LandListItemView
:detail="item as any" v-if="activeTab === 2"
@to-detail="handleDetail(RouteName.landDetail, item)" :detail="item as any"
></LandListItemView> @to-detail="handleDetail(RouteName.landDetail, item)"
<!-- 载体 --> ></LandListItemView>
<CarrierListItemView <!-- 载体 -->
v-else-if="activeTab === 3" <CarrierListItemView
:detail="item as any" v-else-if="activeTab === 3"
@to-detail="handleDetail(RouteName.carrierDetail, item)" :detail="item as any"
></CarrierListItemView> @to-detail="handleDetail(RouteName.carrierDetail, item)"
<!-- 开发区 --> ></CarrierListItemView>
<ParkItem <!-- 开发区 -->
v-else-if="activeTab === 0" <ParkItem
:item="item" v-else-if="activeTab === 0"
:type="ParkItemType.develop" :item="item"
@to-detail="handleDetail(RouteName.developZoneDetail, item)" :type="ParkItemType.develop"
></ParkItem> @to-detail="handleDetail(RouteName.developZoneDetail, item)"
<!-- 产业园 --> ></ParkItem>
<ParkItem <!-- 产业园 -->
v-else <ParkItem
:item="item" v-else
:type="ParkItemType.industrial" :item="item"
@to-detail="handleDetail(RouteName.industrialParkDetail, item)" :type="ParkItemType.industrial"
></ParkItem> @to-detail="handleDetail(RouteName.industrialParkDetail, item)"
></ParkItem>
</div>
</div> </div>
<ListPagination <ListPagination
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<div class="mx-auto w-[800px]"> <div class="mx-auto w-[800px]">
<p class="mb-5 text-2xl font-semibold text-[#1a1a1a]">{{ detail.title }}</p> <p class="mb-5 text-2xl font-semibold text-[#1a1a1a]">{{ detail.title }}</p>
<div class="mb-5 mt-4 text-sm leading-[22px] text-[#4d4d4d]"> <div class="mb-5 mt-4 text-sm leading-[22px] text-[#4d4d4d]">
<div>发文机构:{{ detail.publisher }} | 发文时间:{{ detail.ctime }}</div> <div class="flex items-center">{{ infos }}</div>
</div> </div>
<div class="mb-[17px] flex flex-wrap"> <div class="mb-[17px] flex flex-wrap">
<span <span
...@@ -52,7 +52,7 @@ const { request: getDetail } = useRequest<PolicyListItem>( ...@@ -52,7 +52,7 @@ const { request: getDetail } = useRequest<PolicyListItem>(
); );
const detail = ref<PolicyListItem>({ const detail = ref<PolicyListItem>({
title: '', title: '',
ctime: '', publishTime: '',
publisher: '', publisher: '',
content: '', content: '',
id: 0, id: 0,
...@@ -85,6 +85,17 @@ const breadcrumbs = computed(() => { ...@@ -85,6 +85,17 @@ const breadcrumbs = computed(() => {
}, },
]; ];
}); });
const infos = computed(() => {
const { publisher, publishTime } = detail.value;
return [
{ name: '发文机构:', value: publisher },
{ name: '发文时间:', value: publishTime },
]
.filter(({ value }) => !!value)
.map(({ value, name }) => name + value)
.join(' | ');
});
</script> </script>
<style lang="scss"> <style lang="scss">
.detail-main { .detail-main {
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
v-for="img of detail.imgUrlList" v-for="img of detail.imgUrlList"
:key="img" :key="img"
class="h-[124px] w-[124px]" class="h-[124px] w-[124px]"
:type="DetailType.develop"
:src="img" :src="img"
></CommonImage> ></CommonImage>
</div> </div>
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
:key="img" :key="img"
class="h-[124px] w-[124px]" class="h-[124px] w-[124px]"
:src="img" :src="img"
:type="DetailType.industrial"
></CommonImage> ></CommonImage>
</div> </div>
</DetailInfoCell> </DetailInfoCell>
......
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