|
@@ -1,7 +1,8 @@
|
|
|
<template>
|
|
<template>
|
|
|
<!-- 传承人提交首页 -->
|
|
<!-- 传承人提交首页 -->
|
|
|
<div class="about main-background main-background-type0">
|
|
<div class="about main-background main-background-type0">
|
|
|
- <div class="nav-placeholder"></div>
|
|
|
|
|
|
|
+ <div class="nav-placeholder">
|
|
|
|
|
+ </div>
|
|
|
<!-- 表单 -->
|
|
<!-- 表单 -->
|
|
|
<section class="main-section ">
|
|
<section class="main-section ">
|
|
|
<div class="content">
|
|
<div class="content">
|
|
@@ -12,26 +13,96 @@
|
|
|
<a-tabs v-model:activeKey="activeKey" centered>
|
|
<a-tabs v-model:activeKey="activeKey" centered>
|
|
|
<a-tab-pane key="1" tab="非遗项目">
|
|
<a-tab-pane key="1" tab="非遗项目">
|
|
|
<EmptyToRecord title="非遗项目" :model="ichData">
|
|
<EmptyToRecord title="非遗项目" :model="ichData">
|
|
|
- <a-descriptions v-if="ichData" bordered>
|
|
|
|
|
|
|
+ <a-descriptions class="mt-3" title="非遗项目信息" v-if="ichData" bordered :column="{ xs: 1, sm: 1, md: 1, lg: 2 }">
|
|
|
<a-descriptions-item label="标题"><ShowValueOrNull :value="ichData.title" /></a-descriptions-item>
|
|
<a-descriptions-item label="标题"><ShowValueOrNull :value="ichData.title" /></a-descriptions-item>
|
|
|
- <a-descriptions-item label="类别"><ShowValueOrNull :value="ichData.ichTypeText" /></a-descriptions-item>
|
|
|
|
|
|
|
+ <a-descriptions-item label="简介" :span="3"><SimpleRichHtml :contents="[ ichData.intro ]" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="描述" :span="3"><SimpleRichHtml :contents="[ ichData.description ]" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="类别"><ShowValueOrNull :value="ichData.ichTypeText" /></a-descriptions-item>
|
|
<a-descriptions-item label="类别"><ShowValueOrNull :value="ichData.ichTypeText" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="级别"><ShowValueOrNull :value="ichData.levelText" /></a-descriptions-item>
|
|
<a-descriptions-item label="级别"><ShowValueOrNull :value="ichData.levelText" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="级别"><ShowValueOrNull :value="ichData.levelText" /></a-descriptions-item>
|
|
<a-descriptions-item label="级别"><ShowValueOrNull :value="ichData.levelText" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="批次"><ShowValueOrNull :value="ichData.batchText" /></a-descriptions-item>
|
|
<a-descriptions-item label="批次"><ShowValueOrNull :value="ichData.batchText" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="区域"><ShowValueOrNull :value="ichData.regionText" /></a-descriptions-item>
|
|
<a-descriptions-item label="区域"><ShowValueOrNull :value="ichData.regionText" /></a-descriptions-item>
|
|
|
<a-descriptions-item label="保护单位"><ShowValueOrNull :value="ichData.unit" /></a-descriptions-item>
|
|
<a-descriptions-item label="保护单位"><ShowValueOrNull :value="ichData.unit" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="ichData.image" label="图片">
|
|
|
|
|
+ <a-image :src="ichData.image" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="ichData.video" label="视频">
|
|
|
|
|
+ <video controls :src="ichData.video" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="ichData.audio" label="音频">
|
|
|
|
|
+ <audio controls :src="ichData.audio" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="类型"><ShowValueOrNull :value="ichData.typeText" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="ichData.latitude && ichData.longitude" label="地图">
|
|
|
|
|
+ <SimplePointedMap :longitude="ichData.longitude" :latitude="ichData.latitude" :zoom="15" height="300px" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
</a-descriptions>
|
|
</a-descriptions>
|
|
|
</EmptyToRecord>
|
|
</EmptyToRecord>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
<a-tab-pane key="2" tab="传承人">
|
|
<a-tab-pane key="2" tab="传承人">
|
|
|
<EmptyToRecord title="传承人" :model="inheritorData">
|
|
<EmptyToRecord title="传承人" :model="inheritorData">
|
|
|
|
|
+ <a-descriptions class="mt-3" title="传承人信息" v-if="inheritorData" bordered :column="{ xs: 1, sm: 1, md: 1, lg: 2 }">
|
|
|
|
|
+ <a-descriptions-item label="名字"><ShowValueOrNull :value="inheritorData.title" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="inheritorData.image" label="头像">
|
|
|
|
|
+ <a-avatar :src="inheritorData.image" size="large" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="传承人等级"><ShowValueOrNull :value="inheritorData.levelText" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="传承人批次"><ShowValueOrNull :value="inheritorData.batchText" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="别称"><ShowValueOrNull :value="inheritorData.alsoName" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="时代"><ShowValueOrNull :value="inheritorData.age" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="出生地"><ShowValueOrNull :value="inheritorData.birthplace" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="民族"><ShowValueOrNull :value="inheritorData.nation" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="出生日期"><ShowValueOrNull :value="inheritorData.dateBirth" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="逝世日期"><ShowValueOrNull :value="inheritorData.deathBirth" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="单位"><ShowValueOrNull :value="inheritorData.unit" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="区域"><ShowValueOrNull :value="inheritorData.regionText" /></a-descriptions-item>
|
|
|
|
|
|
|
|
|
|
+ <a-descriptions-item label="简介" :span="3"><SimpleRichHtml :contents="[ inheritorData.intro ]" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="描述" :span="3"><SimpleRichHtml :contents="[ inheritorData.content! ]" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="奖项/成就" :span="3"><SimpleRichHtml :contents="[ inheritorData.prize ]" /></a-descriptions-item>
|
|
|
|
|
+
|
|
|
|
|
+ <a-descriptions-item v-if="inheritorData.typicalImages" label="代表性图片">
|
|
|
|
|
+ <ImageGrid :data="inheritorData.typicalImages" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="inheritorData.video" label="视频">
|
|
|
|
|
+ <video controls :src="inheritorData.video" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="inheritorData.audio" label="音频">
|
|
|
|
|
+ <audio controls :src="inheritorData.audio" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ </a-descriptions>
|
|
|
</EmptyToRecord>
|
|
</EmptyToRecord>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
<a-tab-pane key="3" tab="传习所">
|
|
<a-tab-pane key="3" tab="传习所">
|
|
|
<EmptyToRecord title="传习所" :model="seminarData">
|
|
<EmptyToRecord title="传习所" :model="seminarData">
|
|
|
|
|
+ <a-descriptions class="mt-3" title="传习所信息" v-if="seminarData" bordered :column="{ xs: 1, sm: 1, md: 1, lg: 2 }">
|
|
|
|
|
+ <a-descriptions-item label="标题"><ShowValueOrNull :value="seminarData.title" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="简介" :span="3"><SimpleRichHtml :contents="[ seminarData.desc as string ]" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="介绍" :span="3"><SimpleRichHtml :contents="[ seminarData.content as string ]" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="seminarData.latitude && seminarData.longitude" label="地图">
|
|
|
|
|
+ <SimplePointedMap :longitude="seminarData.longitude" :latitude="seminarData.latitude" :zoom="15" height="300px" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="地址"><ShowValueOrNull :value="seminarData.address" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="批次"><ShowValueOrNull :value="seminarData.batchText" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="级别"><ShowValueOrNull :value="seminarData.levelText" /></a-descriptions-item>
|
|
|
|
|
+
|
|
|
|
|
+ <a-descriptions-item label="联系人"><ShowValueOrNull :value="seminarData.contact" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="联系电话"><ShowValueOrNull :value="seminarData.mobile" /></a-descriptions-item>
|
|
|
|
|
+
|
|
|
|
|
+ <a-descriptions-item label="单位类型"><ShowValueOrNull :value="seminarData.ichSiteTypeText" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="单位"><ShowValueOrNull :value="seminarData.unit" /></a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="seminarData.image" label="图片">
|
|
|
|
|
+ <a-image :src="seminarData.image" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="seminarData.video" label="视频">
|
|
|
|
|
+ <video controls :src="seminarData.video" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item v-if="seminarData.audio" label="音频">
|
|
|
|
|
+ <audio controls :src="seminarData.audio" style="max-width:300px;" />
|
|
|
|
|
+ </a-descriptions-item>
|
|
|
|
|
+ <a-descriptions-item label="类型"><ShowValueOrNull :value="seminarData.typeText" /></a-descriptions-item>
|
|
|
|
|
|
|
|
|
|
+ </a-descriptions>
|
|
|
</EmptyToRecord>
|
|
</EmptyToRecord>
|
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
|
</a-tabs>
|
|
</a-tabs>
|
|
@@ -43,15 +114,23 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import type { IchInfo, InheritorInfo, SeminarInfo } from '@/api/inheritor/InheritorContent';
|
|
import type { IchInfo, InheritorInfo, SeminarInfo } from '@/api/inheritor/InheritorContent';
|
|
|
import InheritorContent from '@/api/inheritor/InheritorContent';
|
|
import InheritorContent from '@/api/inheritor/InheritorContent';
|
|
|
|
|
+import ImageGrid from '@/components/content/ImageGrid.vue';
|
|
|
|
|
+import SimplePointedMap from '@/components/content/SimplePointedMap.vue';
|
|
|
|
|
+import SimpleRichHtml from '@/components/display/SimpleRichHtml.vue';
|
|
|
import ShowValueOrNull from '@/components/dynamicf/Display/ShowValueOrNull.vue';
|
|
import ShowValueOrNull from '@/components/dynamicf/Display/ShowValueOrNull.vue';
|
|
|
import EmptyToRecord from '@/components/parts/EmptyToRecord.vue';
|
|
import EmptyToRecord from '@/components/parts/EmptyToRecord.vue';
|
|
|
|
|
+import { useAuthStore } from '@/stores/auth';
|
|
|
|
|
+import { Modal } from 'ant-design-vue';
|
|
|
import { onMounted, ref } from 'vue';
|
|
import { onMounted, ref } from 'vue';
|
|
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
|
|
|
|
|
const activeKey = ref('1');
|
|
const activeKey = ref('1');
|
|
|
const ichData = ref<IchInfo>();
|
|
const ichData = ref<IchInfo>();
|
|
|
const inheritorData = ref<InheritorInfo>();
|
|
const inheritorData = ref<InheritorInfo>();
|
|
|
const seminarData = ref<SeminarInfo>();
|
|
const seminarData = ref<SeminarInfo>();
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
InheritorContent.getIchInfo().then(data => {
|
|
InheritorContent.getIchInfo().then(data => {
|
|
|
ichData.value = data;
|
|
ichData.value = data;
|