admin-vben/apps/web-antd/src/views/erp/sale/customer/data.ts

216 lines
4.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import type { VbenFormSchema } from '#/adapter/form';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import { z } from '#/adapter/form';
import { CommonStatusEnum, DICT_TYPE, getDictOptions } from '#/utils';
/** 新增/修改的表单 */
export function useFormSchema(): VbenFormSchema[] {
return [
{
component: 'Input',
fieldName: 'id',
dependencies: {
triggerFields: [''],
show: () => false,
},
},
{
component: 'Input',
fieldName: 'name',
label: '名称',
rules: 'required',
componentProps: {
placeholder: '请输入名称',
},
},
{
fieldName: 'contact',
label: '联系人',
component: 'Input',
componentProps: {
placeholder: '请输入联系人',
},
},
{
fieldName: 'mobile',
label: '手机号码',
component: 'Input',
componentProps: {
placeholder: '请输入手机号码',
},
},
{
fieldName: 'telephone',
label: '联系电话',
component: 'Input',
componentProps: {
placeholder: '请输入联系电话',
},
},
{
fieldName: 'email',
label: '电子邮箱',
component: 'Input',
componentProps: {
placeholder: '请输入电子邮箱',
},
},
{
fieldName: 'fax',
label: '传真',
component: 'Input',
componentProps: {
placeholder: '请输入传真',
},
},
{
fieldName: 'status',
label: '状态',
component: 'RadioGroup',
componentProps: {
options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
buttonStyle: 'solid',
optionType: 'button',
},
rules: z.number().default(CommonStatusEnum.ENABLE),
},
{
fieldName: 'sort',
label: '排序',
component: 'InputNumber',
componentProps: {
placeholder: '请输入排序',
precision: 0,
class: 'w-full',
},
rules: 'required',
defaultValue: 0,
},
{
fieldName: 'taxNo',
label: '纳税人识别号',
component: 'Input',
componentProps: {
placeholder: '请输入纳税人识别号',
},
},
{
fieldName: 'taxPercent',
label: '税率(%)',
component: 'InputNumber',
componentProps: {
placeholder: '请输入税率',
precision: 0,
class: 'w-full',
},
rules: z.number().min(0).max(100).default(0).optional(),
defaultValue: 0,
},
{
fieldName: 'bankName',
label: '开户行名称',
component: 'Input',
componentProps: {
placeholder: '请输入开户行名称',
},
},
{
fieldName: 'bankAccount',
label: '开户行账号',
component: 'Input',
componentProps: {
placeholder: '请输入开户行账号',
},
},
{
fieldName: 'bankAddress',
label: '开户行地址',
component: 'Input',
componentProps: {
placeholder: '请输入开户行地址',
},
},
{
fieldName: 'remark',
label: '备注',
component: 'Textarea',
componentProps: {
placeholder: '请输入备注',
rows: 1,
},
},
];
}
/** 列表的搜索表单 */
// TODO @XuZhiqiangplaceholder
export function useGridFormSchema(): VbenFormSchema[] {
return [
{
fieldName: 'name',
label: '名称',
component: 'Input',
},
{
fieldName: 'mobile',
label: '手机号码',
component: 'Input',
},
{
fieldName: 'email',
label: '邮箱',
component: 'Input',
},
];
}
/** 列表的字段 */
export function useGridColumns(): VxeTableGridOptions['columns'] {
return [
{
field: 'name',
title: '名称',
},
{
field: 'contact',
title: '联系人',
},
{
field: 'mobile',
title: '手机号码',
},
{
field: 'telephone',
title: '联系电话',
},
{
field: 'email',
title: '邮箱',
},
{
field: 'taxNo',
title: '纳税人识别号',
},
{
field: 'status',
title: '状态',
cellRender: {
name: 'CellDict',
props: { type: DICT_TYPE.COMMON_STATUS },
},
},
{
field: 'createTime',
title: '创建时间',
formatter: 'formatDateTime',
},
{
title: '操作',
width: 130,
fixed: 'right',
slots: { default: 'actions' },
},
];
}