jobsys-newbie
Version:
Enhanced component based on ant-design-vue
312 lines (307 loc) • 6.09 kB
JSX
import { h } from "vue"
import {
CalendarOutlined,
CheckCircleOutlined,
CheckSquareOutlined,
ClockCircleOutlined,
DownSquareOutlined,
EditOutlined,
EnvironmentOutlined,
FieldBinaryOutlined,
FileImageOutlined,
FilePdfOutlined,
FormOutlined,
MailOutlined,
MobileOutlined,
NumberOutlined,
SmileFilled,
StarOutlined,
SwitcherOutlined,
UserOutlined,
} from "@ant-design/icons-vue"
/**
* 获取默认的表单组件
*
* @param {string} mode 模式
* @returns {Array}
* @param mode
*/
export function getDefaultWidgets(mode) {
if (mode && mode === "quiz") {
return [
{
title: "题目类型",
children: [
{
name: "单选",
type: "radio",
icon: () => h(CheckCircleOutlined),
props: {
defaultProps: { optionType: "outlined" },
options: ["A. 选项一", "B. 选项二", "C. 选项三", "D. 选项四"],
},
},
{
name: "多选",
type: "checkbox",
icon: () => h(CheckSquareOutlined),
props: {
options: ["A. 选项一", "B. 选项二", "C. 选项三", "D. 选项四"],
},
},
{
name: "填空",
type: "input",
icon: () => h(EditOutlined),
props: {
width: "100%",
},
},
],
},
]
}
return [
{
title: "选择",
children: [
{
name: "单选",
type: "radio",
icon: () => h(CheckCircleOutlined),
props: {
defaultProps: { optionType: "outlined" },
options: ["选项一", "选项二"],
},
},
{
name: "多选",
type: "checkbox",
icon: () => h(CheckSquareOutlined),
props: {
options: ["选项一", "选项二"],
},
},
{
name: "下拉选择",
type: "select",
icon: () => h(DownSquareOutlined),
props: {
options: ["选项一", "选项二"],
width: 300,
},
},
{
name: "开关",
icon: () => h(SwitcherOutlined),
type: "switch",
},
{
name: "图片上传",
type: "uploader",
icon: () => h(FileImageOutlined),
props: {
//disabled: true,
defaultProps: {
accept: ".png,.jpg,.jpeg",
},
},
},
{
name: "文件上传",
type: "uploader",
icon: () => h(FilePdfOutlined),
props: {
//disabled: true,
defaultProps: {
accept: ".doc,.docx,.pdf,.xls,.xlsx,.ppt,.pptx,.png,.jpg,jpeg",
type: "text",
},
},
},
],
},
{
title: "填空",
children: [
{
name: "文本",
type: "input",
icon: () => h(EditOutlined),
props: {
width: "100%",
},
},
{
name: "多行文本",
icon: () => h(FormOutlined),
type: "textarea",
},
{
name: "日期",
icon: () => h(CalendarOutlined),
type: "date",
},
{
name: "日期范围",
type: "date",
icon: () => h(CalendarOutlined),
props: {
width: 300,
defaultProps: {
type: "range",
},
},
},
{
name: "时间",
icon: () => h(ClockCircleOutlined),
type: "time",
},
{
name: "时间范围",
type: "time",
icon: () => h(ClockCircleOutlined),
props: {
width: 300,
defaultProps: {
type: "range",
},
},
},
{
name: "数字",
icon: () => h(FieldBinaryOutlined),
type: "number",
},
],
},
{
title: "评分",
children: [
{
name: "星级评分",
icon: () => h(StarOutlined),
type: "rate",
},
{
name: "单选评分",
type: "rate-radio",
icon: () => h(CheckCircleOutlined),
props: {
defaultProps: { optionType: "outlined" },
options: [
{ value: "选项一", rate: 1 },
{ value: "选项二", rate: 2 },
{ value: "选项三", rate: 3 },
],
},
},
{
name: "多选评分",
type: "rate-checkbox",
icon: () => h(CheckSquareOutlined),
props: {
options: [
{ value: "选项一", rate: 1 },
{ value: "选项二", rate: 2 },
{ value: "选项三", rate: 3 },
],
},
},
],
},
{
title: "矩阵",
children: [
{
name: "矩阵单选",
type: "matrix-radio",
icon: () => h(CheckCircleOutlined),
props: {
options: ["好", "一般", "差"],
rows: ["质量", "外观"],
},
},
{
name: "矩阵多选",
type: "matrix-checkbox",
icon: () => h(CheckSquareOutlined),
props: {
options: ["好", "一般", "差"],
rows: ["质量", "外观"],
},
},
{
name: "矩阵量表",
type: "matrix-scale",
icon: () => h(NumberOutlined),
props: {
defaultProps: { showScale: true },
options: [],
rows: ["质量", "外观"],
},
},
],
},
{
title: "个人信息",
children: [
{
name: "姓名",
type: "input",
icon: () => h(UserOutlined),
props: {
title: "您的姓名",
},
},
{
name: "性别",
type: "radio",
icon: () => h(SmileFilled),
props: {
title: "您的性别",
options: ["男", "女"],
},
},
{
name: "手机号码",
type: "input",
icon: () => h(MobileOutlined),
props: {
title: "请输入您的手机号码",
rules: [
{
pattern: "^1[3456789]\\d{9}$",
message: "手机号码格式不正确",
},
],
},
},
{
name: "邮箱",
type: "input",
icon: () => h(MailOutlined),
props: {
title: "请输入您的邮箱地址",
rules: [
{
pattern:
'^(([^<>()[\\]\\\\.,;:\\s@"]+(\\.[^<>()[\\]\\\\.,;:\\s@"]+)*)|.(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$',
message: "邮箱地址格式不正确",
},
],
},
},
{
name: "省市区",
type: "address",
icon: () => h(EnvironmentOutlined),
props: {
title: "请选择省份城市与地区",
},
},
],
},
]
}