|
@@ -19,13 +19,12 @@ import Form from './form.vue';
|
|
|
import InheritorContent, { IchExpandInfo, IchInfo } from '@/api/inheritor/InheritorContent';
|
|
import InheritorContent, { IchExpandInfo, IchInfo } from '@/api/inheritor/InheritorContent';
|
|
|
import CommonContent from '@/api/CommonContent';
|
|
import CommonContent from '@/api/CommonContent';
|
|
|
import type { IDynamicFormOptions, IDynamicFormRef } from '@imengyu/vue-dynamic-form';
|
|
import type { IDynamicFormOptions, IDynamicFormRef } from '@imengyu/vue-dynamic-form';
|
|
|
-import {
|
|
|
|
|
- useBeforeUploadImageChecker, useBeforeUploadVideoChecker,
|
|
|
|
|
- type UploadImageFormItemProps, type AddressItem
|
|
|
|
|
-} from '@imengyu/imengyu-web-shared';
|
|
|
|
|
import { useAuthStore } from '@/stores/auth';
|
|
import { useAuthStore } from '@/stores/auth';
|
|
|
import { useAliOssUploadCo } from '@/common/upload/AliOssUploadCo';
|
|
import { useAliOssUploadCo } from '@/common/upload/AliOssUploadCo';
|
|
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
+import { useBeforeUploadImageChecker, useBeforeUploadVideoChecker, type UploaderFormItemProps } from '@imengyu/vue-dynamic-form-ant';
|
|
|
|
|
+import type { MapPointPickerProps } from '@imengyu/vue-dynamic-form-rich/lib/components/dynamicf/Map/MapPointPicker.vue';
|
|
|
|
|
+import type { AddressItem } from '@imengyu/vue-dynamic-form-rich';
|
|
|
|
|
|
|
|
const authStore = useAuthStore();
|
|
const authStore = useAuthStore();
|
|
|
const formRef = ref();
|
|
const formRef = ref();
|
|
@@ -40,7 +39,7 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
formNestNameGenerateType: 'array',
|
|
formNestNameGenerateType: 'array',
|
|
|
formItems: [
|
|
formItems: [
|
|
|
{
|
|
{
|
|
|
- type: 'group-flat', label: '非遗基础档案', name: 'ichInfo',
|
|
|
|
|
|
|
+ type: 'flat-group', label: '非遗基础档案', name: 'ichInfo',
|
|
|
childrenColProps: { span: 24 },
|
|
childrenColProps: { span: 24 },
|
|
|
children: [
|
|
children: [
|
|
|
{
|
|
{
|
|
@@ -53,21 +52,21 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
label: '级别', name: 'level', type: 'select-id',
|
|
label: '级别', name: 'level', type: 'select-id',
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请选择级别',
|
|
placeholder: '请选择级别',
|
|
|
- loadData: async () => (await CommonContent.getCategoryList(2)).map(p => ({ label: p.title, value: p.id, raw: p }))
|
|
|
|
|
|
|
+ loadData: async () => (await CommonContent.getCategoryList(2)).map(p => ({ text: p.title, value: p.id, raw: p }))
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
label: '非遗分类', name: 'ichType', type: 'select-id',
|
|
label: '非遗分类', name: 'ichType', type: 'select-id',
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请选择非遗类型',
|
|
placeholder: '请选择非遗类型',
|
|
|
- loadData: async () => (await CommonContent.getCategoryList(4)).map(p => ({ label: p.title, value: p.id, raw: p }))
|
|
|
|
|
|
|
+ loadData: async () => (await CommonContent.getCategoryList(4)).map(p => ({ text: p.title, value: p.id, raw: p }))
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
label: '批次', name: 'batch', type: 'select-id',
|
|
label: '批次', name: 'batch', type: 'select-id',
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请选择批次',
|
|
placeholder: '请选择批次',
|
|
|
- loadData: async () => (await CommonContent.getCategoryList(289)).map(p => ({ label: p.title, value: p.id, raw: p }))
|
|
|
|
|
|
|
+ loadData: async () => (await CommonContent.getCategoryList(289)).map(p => ({ text: p.title, value: p.id, raw: p }))
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
{ label: '申报区域', name: 'regionText', type: 'text', additionalProps: { placeholder: '请输入申报地区' } },
|
|
{ label: '申报区域', name: 'regionText', type: 'text', additionalProps: { placeholder: '请输入申报地区' } },
|
|
@@ -77,7 +76,7 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
label: '传承谱系', name: 'pedigree', type: 'richtext',
|
|
label: '传承谱系', name: 'pedigree', type: 'richtext',
|
|
|
additionalProps: { placeholder: '请输入传承谱系' },
|
|
additionalProps: { placeholder: '请输入传承谱系' },
|
|
|
formProps: {
|
|
formProps: {
|
|
|
- extra: h('div', { class: 'd-flex flex-row align-items-start mt-2' }, [
|
|
|
|
|
|
|
+ extra: h('div', { class: 'flex flex-row items-start mt-2' }, [
|
|
|
h(ExclamationCircleOutlined),
|
|
h(ExclamationCircleOutlined),
|
|
|
h('pre', { class: 'ms-2' }, `请按传承脉络顺序填写:
|
|
h('pre', { class: 'ms-2' }, `请按传承脉络顺序填写:
|
|
|
1、传承人:姓名(附简短介绍,如技艺特长/代表成就)
|
|
1、传承人:姓名(附简短介绍,如技艺特长/代表成就)
|
|
@@ -91,24 +90,25 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
//{ label: '传承值', name: 'heritage', type: 'text', additionalProps: { placeholder: '请输入传承值' } },
|
|
//{ label: '传承值', name: 'heritage', type: 'text', additionalProps: { placeholder: '请输入传承值' } },
|
|
|
|
|
|
|
|
{
|
|
{
|
|
|
- label: '保护单位地址', name: 'address', type: 'address-sercher',
|
|
|
|
|
|
|
+ label: '保护单位地址', name: 'address', type: 'text',
|
|
|
additionalProps: { placeholder: '请输入地址' },
|
|
additionalProps: { placeholder: '请输入地址' },
|
|
|
- additionalEvents: {
|
|
|
|
|
- choosedAddress: (address: AddressItem) => {
|
|
|
|
|
- ((formRef.value?.getFormRef() as IDynamicFormRef).getFormItemControlRef('lonlat') as any).moveTo([
|
|
|
|
|
- address.lng, address.lat
|
|
|
|
|
- ], 20)
|
|
|
|
|
- },
|
|
|
|
|
- }
|
|
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '地图坐标', name: 'lonlat', type: 'map-pick-point',
|
|
|
|
|
|
|
+ label: '地图坐标', name: 'lonlat', type: 'select-lonlat',
|
|
|
formProps: {
|
|
formProps: {
|
|
|
extra: h('div', {}, [
|
|
extra: h('div', {}, [
|
|
|
h(ExclamationCircleOutlined),
|
|
h(ExclamationCircleOutlined),
|
|
|
h('span', { class: 'ms-2' }, '输入模糊地址后可以点击搜索跳转到指定位置,如果地图位置不正确,可以手动拖拽调整位置'),
|
|
h('span', { class: 'ms-2' }, '输入模糊地址后可以点击搜索跳转到指定位置,如果地图位置不正确,可以手动拖拽调整位置'),
|
|
|
]),
|
|
]),
|
|
|
},
|
|
},
|
|
|
|
|
+ additionalProps: {
|
|
|
|
|
+ showSearch: true,
|
|
|
|
|
+ } as MapPointPickerProps,
|
|
|
|
|
+ additionalEvents: {
|
|
|
|
|
+ choosedAddress: (address: AddressItem) => {
|
|
|
|
|
+ ((formRef.value?.getFormRef() as IDynamicFormRef).setValueByPath('address', address.address))
|
|
|
|
|
+ },
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
/* {
|
|
/* {
|
|
@@ -124,7 +124,7 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
//{ label: '流行地区', name: 'popularRegion', type: 'text', additionalProps: { placeholder: '请输入流行地区' } },
|
|
//{ label: '流行地区', name: 'popularRegion', type: 'text', additionalProps: { placeholder: '请输入流行地区' } },
|
|
|
//{ label: '批准时间', name: 'approveTime', type: 'text', additionalProps: { placeholder: '请输入批准时间' } },
|
|
//{ label: '批准时间', name: 'approveTime', type: 'text', additionalProps: { placeholder: '请输入批准时间' } },
|
|
|
{
|
|
{
|
|
|
- label: '非遗项目相关图片', name: 'images', type: 'mulit-image',
|
|
|
|
|
|
|
+ label: '非遗项目相关图片', name: 'images', type: 'uploader',
|
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 4 },
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 4 },
|
|
|
formProps: {
|
|
formProps: {
|
|
|
extra: '建议分辨率:1920*1080以上',
|
|
extra: '建议分辨率:1920*1080以上',
|
|
@@ -135,26 +135,26 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
accept: 'image/*',
|
|
accept: 'image/*',
|
|
|
beforeUpload: useBeforeUploadImageChecker(),
|
|
beforeUpload: useBeforeUploadImageChecker(),
|
|
|
- uploadCo: useAliOssUploadCo('ich/images'),
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useAliOssUploadCo('ich/images'),
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '相关视频', name: 'video', type: 'single-video',
|
|
|
|
|
|
|
+ label: '相关视频', name: 'video', type: 'uploader',
|
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 3 },
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 3 },
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请上传视频',
|
|
placeholder: '请上传视频',
|
|
|
accept: 'video/*',
|
|
accept: 'video/*',
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
beforeUpload: useBeforeUploadVideoChecker(),
|
|
beforeUpload: useBeforeUploadVideoChecker(),
|
|
|
- uploadCo: useAliOssUploadCo('ich/video'),
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useAliOssUploadCo('ich/video'),
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '其他附件', name: 'annex', type: 'mulit-video',
|
|
|
|
|
|
|
+ label: '其他附件', name: 'annex', type: 'uploader',
|
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 3 },
|
|
//hidden: { callback: (_, model) => (model as IchInfo).type !== 3 },
|
|
|
formProps: {
|
|
formProps: {
|
|
|
extra: h('div', {
|
|
extra: h('div', {
|
|
|
- class: 'd-flex flex-row align-items-center mt-2'
|
|
|
|
|
|
|
+ class: 'flex flex-row items-center mt-2'
|
|
|
}, [
|
|
}, [
|
|
|
h(ExclamationCircleOutlined),
|
|
h(ExclamationCircleOutlined),
|
|
|
h('span', { class: 'ms-2' }, '可以上传多个视频文件'),
|
|
h('span', { class: 'ms-2' }, '可以上传多个视频文件'),
|
|
@@ -164,13 +164,13 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
placeholder: '请上传视频',
|
|
placeholder: '请上传视频',
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
beforeUpload: useBeforeUploadVideoChecker(),
|
|
beforeUpload: useBeforeUploadVideoChecker(),
|
|
|
- uploadCo: useAliOssUploadCo('ich/video'),
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useAliOssUploadCo('ich/video'),
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
/* {
|
|
/* {
|
|
|
- type: 'group-flat', label: '通用信息', name: 'commonInfo',
|
|
|
|
|
|
|
+ type: 'flat-group', label: '通用信息', name: 'commonInfo',
|
|
|
childrenColProps: { span: 24 },
|
|
childrenColProps: { span: 24 },
|
|
|
children: [
|
|
children: [
|
|
|
{
|
|
{
|
|
@@ -198,33 +198,33 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
additionalProps: { placeholder: '请输入来源' },
|
|
additionalProps: { placeholder: '请输入来源' },
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '组图', name: 'images', type: 'mulit-image',
|
|
|
|
|
|
|
+ label: '组图', name: 'images', type: 'uploader',
|
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 4 },
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 4 },
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请上传图片',
|
|
placeholder: '请上传图片',
|
|
|
maxCount: 20,
|
|
maxCount: 20,
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
- uploadCo: useImageSimpleUploadCo(),
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useImageSimpleUploadCo(),
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '音频', name: 'audio', type: 'single-image',
|
|
|
|
|
|
|
+ label: '音频', name: 'audio', type: 'uploader',
|
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 2 },
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 2 },
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请上传音频',
|
|
placeholder: '请上传音频',
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
- uploadCo: useImageSimpleUploadCo()
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useImageSimpleUploadCo()
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '数字档案', name: 'archives', type: 'mulit-image',
|
|
|
|
|
|
|
+ label: '数字档案', name: 'archives', type: 'uploader',
|
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 5 },
|
|
hidden: { callback: (_, model) => (model as IchInfo).type !== 5 },
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请上传数字档案',
|
|
placeholder: '请上传数字档案',
|
|
|
maxCount: 20,
|
|
maxCount: 20,
|
|
|
name: 'file',
|
|
name: 'file',
|
|
|
- uploadCo: useImageSimpleUploadCo()
|
|
|
|
|
- } as UploadImageFormItemProps,
|
|
|
|
|
|
|
+ upload: useImageSimpleUploadCo()
|
|
|
|
|
+ } as UploaderFormItemProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
label: '标志', name: 'flag', type: 'select',
|
|
label: '标志', name: 'flag', type: 'select',
|
|
@@ -247,7 +247,7 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
} as SelectProps,
|
|
} as SelectProps,
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '描述', name: 'desc', type: 'text-area',
|
|
|
|
|
|
|
+ label: '描述', name: 'desc', type: 'textarea',
|
|
|
additionalProps: { placeholder: '请输入描述' },
|
|
additionalProps: { placeholder: '请输入描述' },
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -255,7 +255,7 @@ const formOptions = ref<IDynamicFormOptions>({
|
|
|
additionalProps: { placeholder: '请输入TAG' },
|
|
additionalProps: { placeholder: '请输入TAG' },
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- label: '备注', name: 'memo', type: 'text-area',
|
|
|
|
|
|
|
+ label: '备注', name: 'memo', type: 'textarea',
|
|
|
additionalProps: { placeholder: '请输入备注' },
|
|
additionalProps: { placeholder: '请输入备注' },
|
|
|
},
|
|
},
|
|
|
]
|
|
]
|
|
@@ -286,7 +286,7 @@ const formExtendOptions = ref<IDynamicFormOptions>({
|
|
|
type: 'select-id', label: '保护级别', name: 'protectLevel',
|
|
type: 'select-id', label: '保护级别', name: 'protectLevel',
|
|
|
additionalProps: {
|
|
additionalProps: {
|
|
|
placeholder: '请选择保护级别',
|
|
placeholder: '请选择保护级别',
|
|
|
- loadData: async () => (await CommonContent.getCategoryList(171)).map(p => ({ label: p.title, value: p.id, raw: p }))
|
|
|
|
|
|
|
+ loadData: async () => (await CommonContent.getCategoryList(171)).map(p => ({ text: p.title, value: p.id, raw: p }))
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{ type: 'text', label: '其他名称', name: 'otherNames', additionalProps: { placeholder: '请输入其他名称' } },
|
|
{ type: 'text', label: '其他名称', name: 'otherNames', additionalProps: { placeholder: '请输入其他名称' } },
|
|
@@ -302,7 +302,7 @@ const formExtendOptions = ref<IDynamicFormOptions>({
|
|
|
{ type: 'text', label: '代表作品', name: 'works', additionalProps: { placeholder: '请输入代表作品' } },
|
|
{ type: 'text', label: '代表作品', name: 'works', additionalProps: { placeholder: '请输入代表作品' } },
|
|
|
{ type: 'text', label: '保护单位', name: 'unit', additionalProps: { placeholder: '请输入保护单位' } },
|
|
{ type: 'text', label: '保护单位', name: 'unit', additionalProps: { placeholder: '请输入保护单位' } },
|
|
|
{ type: 'text', label: '保护情况', name: 'protect', additionalProps: { placeholder: '请输入保护情况' } },
|
|
{ type: 'text', label: '保护情况', name: 'protect', additionalProps: { placeholder: '请输入保护情况' } },
|
|
|
- { type: 'text-area', label: '综合概述', name: 'overview', additionalProps: { placeholder: '请输入综合概述' } },
|
|
|
|
|
|
|
+ { type: 'textarea', label: '综合概述', name: 'overview', additionalProps: { placeholder: '请输入综合概述' } },
|
|
|
{ type: 'text', label: '代表人物', name: 'figures', additionalProps: { placeholder: '请输入代表人物' } },
|
|
{ type: 'text', label: '代表人物', name: 'figures', additionalProps: { placeholder: '请输入代表人物' } },
|
|
|
{ type: 'text', label: '传承群体', name: 'group', additionalProps: { placeholder: '请输入传承群体' } },
|
|
{ type: 'text', label: '传承群体', name: 'group', additionalProps: { placeholder: '请输入传承群体' } },
|
|
|
{ type: 'text', label: '传承方式', name: 'inherit', additionalProps: { placeholder: '请输入传承方式' } },
|
|
{ type: 'text', label: '传承方式', name: 'inherit', additionalProps: { placeholder: '请输入传承方式' } },
|
|
@@ -317,13 +317,13 @@ const formExtendOptions = ref<IDynamicFormOptions>({
|
|
|
{ type: 'text', label: '价值', name: 'meaning', additionalProps: { placeholder: '请输入价值' } },
|
|
{ type: 'text', label: '价值', name: 'meaning', additionalProps: { placeholder: '请输入价值' } },
|
|
|
{ type: 'text', label: '相关实物', name: 'prop', additionalProps: { placeholder: '请输入相关实物' } },
|
|
{ type: 'text', label: '相关实物', name: 'prop', additionalProps: { placeholder: '请输入相关实物' } },
|
|
|
{ type: 'text', label: '其他基本情况', name: 'other', additionalProps: { placeholder: '请输入其他基本情况' } },
|
|
{ type: 'text', label: '其他基本情况', name: 'other', additionalProps: { placeholder: '请输入其他基本情况' } },
|
|
|
- { type: 'mulit-image', label: '相关图片', name: 'images', additionalProps: { placeholder: '请上传相关图片', uploadCo: useImageSimpleUploadCo() } },
|
|
|
|
|
|
|
+ { type: 'uploader', label: '相关图片', name: 'images', additionalProps: { placeholder: '请上传相关图片', upload: useImageSimpleUploadCo() } },
|
|
|
{ type: 'text', label: '相关习俗', name: 'folkCulture', additionalProps: { placeholder: '请输入相关习俗' } },
|
|
{ type: 'text', label: '相关习俗', name: 'folkCulture', additionalProps: { placeholder: '请输入相关习俗' } },
|
|
|
{ type: 'text', label: '文物古迹', name: 'culturalRelic', additionalProps: { placeholder: '请输入文物古迹' } },
|
|
{ type: 'text', label: '文物古迹', name: 'culturalRelic', additionalProps: { placeholder: '请输入文物古迹' } },
|
|
|
{ type: 'text', label: '文献资料', name: 'literature', additionalProps: { placeholder: '请输入文献资料' } },
|
|
{ type: 'text', label: '文献资料', name: 'literature', additionalProps: { placeholder: '请输入文献资料' } },
|
|
|
{ type: 'text', label: '组织机构', name: 'organization', additionalProps: { placeholder: '请输入组织机构' } },
|
|
{ type: 'text', label: '组织机构', name: 'organization', additionalProps: { placeholder: '请输入组织机构' } },
|
|
|
- { type: 'text-area', label: '项目描述', name: 'description', additionalProps: { placeholder: '请输入项目描述' } },
|
|
|
|
|
- { type: 'text-area', label: '简介', name: 'desc', additionalProps: { placeholder: '请输入简介' } },
|
|
|
|
|
|
|
+ { type: 'textarea', label: '项目描述', name: 'description', additionalProps: { placeholder: '请输入项目描述' } },
|
|
|
|
|
+ { type: 'textarea', label: '简介', name: 'desc', additionalProps: { placeholder: '请输入简介' } },
|
|
|
{ type: 'text', label: '申报地区', name: 'declarationRegion', additionalProps: { placeholder: '请输入申报地区' } },
|
|
{ type: 'text', label: '申报地区', name: 'declarationRegion', additionalProps: { placeholder: '请输入申报地区' } },
|
|
|
{ type: 'text', label: '流行地区', name: 'popularRegion', additionalProps: { placeholder: '请输入流行地区' } },
|
|
{ type: 'text', label: '流行地区', name: 'popularRegion', additionalProps: { placeholder: '请输入流行地区' } },
|
|
|
],
|
|
],
|