| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- import { useAliOssUploadCo } from "@/common/components/upload/AliOssUploadCo";
- import type { IDynamicFormOptions, IDynamicFormRef } from "@/components/dynamic";
- import type { PickerIdFieldProps } from "@/components/dynamic/wrappers/PickerIdField";
- import type { FieldProps } from "@/components/form/Field.vue";
- import type { UploaderFieldProps } from "@/components/form/UploaderField.vue";
- import type { Ref } from "vue";
- export function villageCommonContent (ref: Ref<IDynamicFormRef>, options: {
- title: string,
- showTitle?: boolean,
- showContent?: boolean,
- noType?: boolean,
- noCloseExtra?: boolean,
- contentKey?: string,
- } = {
- title: '文章',
- showTitle: true,
- }) : IDynamicFormOptions {
- options.title = '';
- return {
- formItems: [
- {
- name: 'a',
- type: 'flat-group',
- childrenColProps: { span: 24 },
- children: [
- ...(options.showTitle ? [{
- label: `${options.title}标题`,
- name: 'name',
- type: 'text',
- defaultValue: '',
- additionalProps: {
- placeholder: `请输入${options.title}标题`,
- },
- rules: [{
- required: true,
- message: `请输入${options.title}标题`,
- }]
- }]: []),
- ...(options.showContent !== false ? [{
- label: `${options.title}内容`,
- name: options.contentKey || 'content',
- type: 'richtext',
- defaultValue: '',
- additionalProps: {
- placeholder: '请输入介绍内容正文',
- maxLength: 1000,
- },
- rules: [{
- required: true,
- message: '请输入介绍内容',
- }]
- },
- ...(options.noType !== true ? [{
- label: `${options.title}类型`,
- name: 'type',
- type: 'select-id',
- defaultValue: 1,
- additionalProps: {
- loadData: async () => [
- { text: '文章', value: 1 },
- { text: '图片', value: 2 },
- { text: '视频', value: 3 },
- { text: '相册', value: 4 },
- { text: '数字档案', value: 5 },
- ],
- } as PickerIdFieldProps,
- formProps: { showRightArrow: true },
- rules: [{
- required: true,
- message: '请选择类型',
- }]
- },
- {
- label: '来源(可选)',
- name: 'source',
- type: 'text',
- defaultValue: '',
- additionalProps: {
- placeholder: '如果是转载文章可以输入来源',
- },
- }] : []),
- ]: []),
- ],
- },
- {
- name: 'b',
- type: 'flat-group',
- childrenColProps: { span: 24 },
- children: [
-
- {
- label: `${options.title}相关图片(可选)`,
- name: 'images',
- type: 'uploader',
- defaultValue: '',
- additionalProps: {
- upload: useAliOssUploadCo('xiangyuan/common'),
- maxFileSize: 1024 * 1024 * 20, // 20MB
- maxUploadCount: 20,
- } as UploaderFieldProps,
- rules: [],
- formProps: {
- extraMessage: '建议分辨率:1920*1080以上',
- },
- },
- {
- label: `${options.title}介绍视频(可选)`,
- name: 'video',
- type: 'uploader',
- defaultValue: '',
- additionalProps: {
- upload: useAliOssUploadCo('xiangyuan/video'),
- maxFileSize: 1024 * 1024 * 1000, // 1000MB
- single: true,
- chooseType: 'video',
- } as UploaderFieldProps,
- formProps: {
- extraMessage: '您还可以上传介绍视频,建议使用MP4格式1080P分辨率',
- },
- rules: []
- },
- ],
- },
- {
- name: 'c',
- type: 'flat-group',
- label: '其他附件(可选)',
- formProps: {
- showLabel: false,
- },
- additionalProps: {
- collapsible: options.noCloseExtra !== true,
- collapsed: options.noCloseExtra !== true,
- },
- childrenColProps: { span: 24 },
- children: [
- {
- label: `${options.title}数字档案(可选)`,
- name: 'archives',
- type: 'uploader',
- defaultValue: '',
- additionalProps: {
- upload: useAliOssUploadCo('xiangyuan/archives'),
- maxFileSize: 1024 * 1024 * 200, // 200MB
- chooseType: '',
- single: true,
- } as UploaderFieldProps,
- rules: [],
- formProps: {
- extraMessage: '建议上传项目相关文件,如项目合同、项目计划等',
- },
- },
- {
- label: `${options.title}其他附件(可选)`,
- name: 'annex',
- type: 'uploader',
- defaultValue: '',
- additionalProps: {
- upload: useAliOssUploadCo('xiangyuan/annex'),
- maxFileSize: 1024 * 1024 * 1000, // 1000MB
- maxUploadCount: 20,
- chooseType: '',
- } as UploaderFieldProps,
- rules: [],
- formProps: {
- extraMessage: '建议上传项目相关文件,如项目合同、项目计划等',
- },
- },
- {
- label: `关键字`,
- name: 'keywords',
- type: 'text-tag',
- defaultValue: '',
- rules: [],
- additionalProps: {
- placeholder: '可以输入关键字',
- tagJoinType: ';',
- },
- formProps: {
- extraMessage: '用于采集系统内部处理优化关键字搜索,可以不填写',
- },
- },
- ],
- }
- ],
- }
- }
|