|
@@ -0,0 +1,183 @@
|
|
|
+<template>
|
|
|
+ <!-- 传承人基础表单 -->
|
|
|
+ <Form
|
|
|
+ :formModel="formModel"
|
|
|
+ :formOptions="formOptions"
|
|
|
+ :load="loadData"
|
|
|
+ :save="saveData"
|
|
|
+ />
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import { ref, type Ref } from 'vue';
|
|
|
+import { useImageSimpleUploadCo } from '@/common/upload/ImageUploadCo';
|
|
|
+import Form from './form.vue';
|
|
|
+import InheritorContent, { InheritorInfo } from '@/api/inheritor/InheritorContent';
|
|
|
+import CommonContent from '@/api/CommonContent';
|
|
|
+import type { IDynamicFormOptions } from '@imengyu/vue-dynamic-form';
|
|
|
+import type { SelectProps } from 'ant-design-vue';
|
|
|
+import type { UploadImageFormItemProps } from '@/components/dynamicf/UploadImageFormItem';
|
|
|
+
|
|
|
+const formModel = ref(new InheritorInfo()) as Ref<InheritorInfo>;
|
|
|
+const formOptions = ref<IDynamicFormOptions>({
|
|
|
+ formLabelCol: { span: 6 },
|
|
|
+ formWrapperCol: { span: 24 },
|
|
|
+ formAdditionaProps: {
|
|
|
+ layout: 'vertical',
|
|
|
+ scrollToFirstError: true,
|
|
|
+ },
|
|
|
+ formNestNameGenerateType: 'array',
|
|
|
+ formItems: [
|
|
|
+ {
|
|
|
+ type: 'group-flat', label: '传承人信息', name: 'ichInfo',
|
|
|
+ childrenColProps: { span: 24 },
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '标题', name: 'title', type: 'text',
|
|
|
+ additionalProps: { placeholder: '请输入标题' },
|
|
|
+ },
|
|
|
+ //请在这里添加表单项
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'group-flat', label: '通用信息', name: 'commonInfo',
|
|
|
+ childrenColProps: { span: 24 },
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '地区', name: 'region', type: 'select-id',
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请选择地区',
|
|
|
+ loadData: async () => (await CommonContent.getCategoryList(1)).map(p => ({ label: p.title, value: p.id, raw: p })) ,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '类型', name: 'type', type: 'select',
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请选择类型',
|
|
|
+ options: [
|
|
|
+ { text: '文章', value: 1 },
|
|
|
+ { text: '音频', value: 2 },
|
|
|
+ { text: '视频', value: 3 },
|
|
|
+ { text: '相册', value: 4 },
|
|
|
+ { text: '数字档案', value: 5 }]
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '图片', name: 'image', type: 'single-image',
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请上传图片',
|
|
|
+ name: 'file',
|
|
|
+ uploadCo: useImageSimpleUploadCo()
|
|
|
+ } as UploadImageFormItemProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '图片说明', name: 'imageDesc', type: 'text',
|
|
|
+ additionalProps: { placeholder: '请输入图片说明' }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '转自', name: 'from', type: 'text',
|
|
|
+ additionalProps: { placeholder: '请输入来源' },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '组图', name: 'images', type: 'mulit-image',
|
|
|
+ hidden: { callback: (_, model) => (model as InheritorInfo).type !== 4 },
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请上传图片',
|
|
|
+ maxCount: 20,
|
|
|
+ name: 'file',
|
|
|
+ uploadCo: useImageSimpleUploadCo(),
|
|
|
+ } as UploadImageFormItemProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '音频', name: 'audio', type: 'single-image',
|
|
|
+ hidden: { callback: (_, model) => (model as InheritorInfo).type !== 2 },
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请上传音频',
|
|
|
+ name: 'file',
|
|
|
+ uploadCo: useImageSimpleUploadCo()
|
|
|
+ } as UploadImageFormItemProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '视频', name: 'video', type: 'single-video',
|
|
|
+ hidden: { callback: (_, model) => (model as InheritorInfo).type !== 3 },
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请上传视频',
|
|
|
+ name: 'file',
|
|
|
+ uploadCo: useImageSimpleUploadCo()
|
|
|
+ } as UploadImageFormItemProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '数字档案', name: 'archives', type: 'mulit-image',
|
|
|
+ hidden: { callback: (_, model) => (model as InheritorInfo).type !== 5 },
|
|
|
+ additionalProps: {
|
|
|
+ placeholder: '请上传数字档案',
|
|
|
+ maxCount: 20,
|
|
|
+ name: 'file',
|
|
|
+ uploadCo: useImageSimpleUploadCo()
|
|
|
+ } as UploadImageFormItemProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '标志', name: 'flag', type: 'select',
|
|
|
+ additionalProps: {
|
|
|
+ mode: 'tags',
|
|
|
+ options: [
|
|
|
+ { text: '热门', value: 'hot' },
|
|
|
+ { text: '推荐', value: 'recommend' },
|
|
|
+ { text: '置顶', value: 'top' },
|
|
|
+ ],
|
|
|
+ placeholder: '请输入标志'
|
|
|
+ } as SelectProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '关键字', name: 'keywords', type: 'select',
|
|
|
+ additionalProps: {
|
|
|
+ mode: 'tags',
|
|
|
+ options: [],
|
|
|
+ placeholder: '请输入关键字,回车添加'
|
|
|
+ } as SelectProps,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '描述', name: 'desc', type: 'text-area',
|
|
|
+ additionalProps: { placeholder: '请输入描述' },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: 'TAG', name: 'tags', type: 'text',
|
|
|
+ additionalProps: { placeholder: '请输入TAG' },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '备注', name: 'memo', type: 'text-area',
|
|
|
+ additionalProps: { placeholder: '请输入备注' },
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'group-object', label: '扩展信息', name: 'expandInfo',
|
|
|
+ childrenColProps: { span: 24 },
|
|
|
+ children: [
|
|
|
+
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ formRules: {
|
|
|
+ expandInfo: {
|
|
|
+ protectLevel: [{ required: true, message: '请选择保护级别' }],
|
|
|
+ },
|
|
|
+ title: [{ required: true, message: '请输入标题' }],
|
|
|
+ region: [{ required: true, message: '请选择地区' }],
|
|
|
+ type: [{ required: true, message: '请选择类型' }],
|
|
|
+ image: [{ required: true, message: '请上传图片' }],
|
|
|
+ level: [{ required: true, message: '请选择级别' }],
|
|
|
+ ichType: [{ required: true, message: '请选择非遗类型' }],
|
|
|
+ batch: [{ required: true, message: '请输入批次' }]
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+async function loadData() {
|
|
|
+ formModel.value = await InheritorContent.getInheritorInfo();
|
|
|
+ formModel.value.expandInfo = await InheritorContent.getInheritorExpandInfo();
|
|
|
+}
|
|
|
+async function saveData(model: InheritorInfo) {
|
|
|
+ await InheritorContent.saveExpandInfo(model.expandInfo);
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|