443 lines
11 KiB
TypeScript
443 lines
11 KiB
TypeScript
import { BasicColumn } from '/@/components/Table';
|
||
import { FormSchema } from '/@/components/Table';
|
||
import { rules } from '/@/utils/helper/validator';
|
||
import { render } from '/@/utils/common/renderUtils';
|
||
import { ref, onMounted,reactive } from 'vue';
|
||
|
||
// 学科过滤方法
|
||
const filterMajor = (value, row) => {
|
||
console.log(value, row); // 打印过滤值和行数据
|
||
return row === value;
|
||
};
|
||
|
||
const groupOptions=ref()
|
||
|
||
// 创建一个简单的事件总线
|
||
export const updateGroupOptions = reactive({
|
||
updateGroupOptions(newOptions: any) {
|
||
groupOptions.value = newOptions;
|
||
},
|
||
});
|
||
|
||
//列表数据
|
||
export const columns: BasicColumn[] = [
|
||
{
|
||
title: '姓名',
|
||
align: 'center',
|
||
dataIndex: 'userName',
|
||
},
|
||
{
|
||
title: '用户ID',
|
||
align: 'center',
|
||
dataIndex: 'userId',
|
||
},
|
||
{
|
||
title: '年龄',
|
||
align: 'center',
|
||
dataIndex: 'age',
|
||
},
|
||
{
|
||
title: '性别',
|
||
align: 'center',
|
||
dataIndex: 'sex',
|
||
},
|
||
{
|
||
title: '学科',
|
||
align: 'center',
|
||
dataIndex: 'majorId',
|
||
filters: [
|
||
{ text: '语文', value: 1 },
|
||
{ text: '地理', value: 4 },
|
||
{ text: '历史', value: 7 },
|
||
{ text: '政治', value: 8 },
|
||
],
|
||
filterMultiple: false, // 是否支持多选过滤
|
||
//value: 用户选择的过滤值(如 1)。
|
||
onFilter: (value, record) => filterMajor(value, record.majorId), // 过滤方法
|
||
},
|
||
{
|
||
title: '手机号',
|
||
align: 'center',
|
||
dataIndex: 'phone',
|
||
},
|
||
{
|
||
title: '职称',
|
||
align: 'center',
|
||
dataIndex: 'jobTitle',
|
||
},
|
||
{
|
||
title: '职务',
|
||
align: 'center',
|
||
dataIndex: 'office',
|
||
},
|
||
{
|
||
title: '所属分组',
|
||
align: 'center',
|
||
//dataIndex: 'groupId',
|
||
customRender: ({ text }) => {
|
||
const group = groupOptions.value.find(item => item.value === text.groupId);
|
||
if (group) {
|
||
return group.label;
|
||
}
|
||
return '未知分组';
|
||
},
|
||
},
|
||
{
|
||
title: '住宿信息',
|
||
align: 'center',
|
||
dataIndex: 'dormitory',
|
||
},
|
||
|
||
//{
|
||
// title: '用户专业id',
|
||
// align: 'center',
|
||
// dataIndex: 'userMajorId',
|
||
//},
|
||
//{
|
||
// title: '银行卡号',
|
||
// align: 'center',
|
||
// dataIndex: 'pyCard',
|
||
//},
|
||
//{
|
||
// title: '饭卡',
|
||
// align: 'center',
|
||
// dataIndex: 'mealCard',
|
||
//},
|
||
|
||
//{
|
||
// title: '工作名称',
|
||
// align: 'center',
|
||
// dataIndex: 'workName',
|
||
//},
|
||
//{
|
||
// title: '固定电话',
|
||
// align: 'center',
|
||
// dataIndex: 'workPhone',
|
||
//},
|
||
//{
|
||
// title: '身份证',
|
||
// align: 'center',
|
||
// dataIndex: 'identityId',
|
||
//},
|
||
//{
|
||
// title: '车牌号',
|
||
// align: 'center',
|
||
// dataIndex: 'carNumber',
|
||
//},
|
||
//{
|
||
// title: '车辆是否入校',
|
||
// align: 'center',
|
||
// dataIndex: 'carStatus',
|
||
//},
|
||
//{
|
||
// title: '是否住宿',
|
||
// align: 'center',
|
||
// dataIndex: 'dormitoryStatus',
|
||
//},
|
||
//{
|
||
// title: '开户所在地',
|
||
// align: 'center',
|
||
// dataIndex: 'bankAddress',
|
||
//},
|
||
//{
|
||
// title: '开户行',
|
||
// align: 'center',
|
||
// dataIndex: 'bankName',
|
||
//},
|
||
//{
|
||
// title: '使用次数',
|
||
// align: 'center',
|
||
// dataIndex: 'numberuse',
|
||
//},
|
||
//{
|
||
// title: '状态',
|
||
// align: 'center',
|
||
// dataIndex: 'status',
|
||
//},
|
||
];
|
||
//查询数据
|
||
export const searchFormSchema: FormSchema[] = [
|
||
//{
|
||
// label: '学科',
|
||
// field: 'majorId',
|
||
// component: 'JRangeNumber',
|
||
// //colProps: {span: 6},
|
||
//},
|
||
{
|
||
label: '姓名',
|
||
field: 'userName',
|
||
component: 'Input',
|
||
//colProps: {span: 6},
|
||
},
|
||
];
|
||
//表单数据
|
||
export const formSchema: FormSchema[] = [
|
||
{
|
||
label: '用户ID',
|
||
field: 'userId',
|
||
component: 'Input',
|
||
dynamicRules: ({ model, schema }) => {
|
||
return [{ required: true, message: '请输入用户ID!' }];
|
||
},
|
||
},
|
||
{
|
||
label: '姓名',
|
||
field: 'userName',
|
||
component: 'Input',
|
||
dynamicRules: ({ model, schema }) => {
|
||
return [{ required: true, message: '请输入姓名!' }];
|
||
},
|
||
},
|
||
{
|
||
label: '身份证',
|
||
field: 'identityId',
|
||
component: 'Input',
|
||
dynamicRules: ({ model, schema }) => {
|
||
return [{ required: true, message: '请输入身份证!' }];
|
||
},
|
||
},
|
||
{
|
||
label: '年龄',
|
||
field: 'age',
|
||
component: 'InputNumber',
|
||
},
|
||
{
|
||
label: '性别',
|
||
field: 'sex',
|
||
component: 'RadioGroup',
|
||
componentProps: {
|
||
options: [
|
||
{ label: '男', value: 0 },
|
||
{ label: '女', value: 1 },
|
||
],
|
||
},
|
||
},
|
||
{
|
||
label: '学科',
|
||
field: 'majorId',
|
||
component: 'Select',
|
||
componentProps: {
|
||
options: [
|
||
{ label: '语文', value: 1 },
|
||
{ label: '地理', value: 4 },
|
||
{ label: '历史', value: 7 },
|
||
{ label: '政治', value: 8 },
|
||
],
|
||
},
|
||
dynamicRules: ({ model, schema }) => {
|
||
return [{ required: true, message: '请选择学科!' }];
|
||
},
|
||
},
|
||
//{
|
||
// label: '用户专业id',
|
||
// field: 'userMajorId',
|
||
// component: 'Input',
|
||
// dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入用户专业id!' }];
|
||
// },
|
||
//},
|
||
|
||
{
|
||
label: '手机号',
|
||
field: 'phone',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入手机号!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '职称',
|
||
field: 'jobTitle',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入职称!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '职务',
|
||
field: 'office',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入办公位!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '单位名称',
|
||
field: 'workName',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入单位名称!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '单位电话',
|
||
field: 'workPhone',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入单位电话!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '银行卡号',
|
||
field: 'pyCard',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入银行卡号!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '开户地区',
|
||
field: 'bankAddress',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入开户地区(北京,哈尔滨)' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '开户行',
|
||
field: 'bankName',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入开户行!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '车牌号',
|
||
field: 'carNumber',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入车牌号!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '饭卡',
|
||
field: 'mealCard',
|
||
component: 'Input',
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入饭卡!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '是否住宿',
|
||
field: 'dormitoryStatus',
|
||
component: 'RadioGroup',
|
||
componentProps: {
|
||
options: [
|
||
{ label: '是', value: 0 },
|
||
{ label: '否', value: 1 },
|
||
],
|
||
},
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入是否住宿!' }];
|
||
//},
|
||
},
|
||
{
|
||
label: '所属分组',
|
||
field: 'groupId',
|
||
component: 'Select',
|
||
componentProps: {
|
||
options: groupOptions, // 动态设置分组选项
|
||
},
|
||
dynamicRules: ({ model, schema }) => {
|
||
return [{ required: true, message: '请选择分组!' }];
|
||
},
|
||
},
|
||
|
||
{
|
||
label: '车辆是否入校',
|
||
field: 'carStatus',
|
||
component: 'RadioGroup',
|
||
componentProps: {
|
||
options: [
|
||
{ label: '是', value: 0 },
|
||
{ label: '否', value: 1 },
|
||
],
|
||
},
|
||
//dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入车辆是否入校!' }];
|
||
//},
|
||
},
|
||
//{
|
||
// label: '住宿信息',
|
||
// field: 'dormitory',
|
||
// component: 'Input',
|
||
// dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入宿舍信息!' }];
|
||
// },
|
||
//},
|
||
|
||
//{
|
||
// label: '所属分组',
|
||
// field: 'groupId',
|
||
// component: 'InputNumber',
|
||
// dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入组id!' }];
|
||
// },
|
||
//},
|
||
//{
|
||
// label: '使用次数',
|
||
// field: 'numberuse',
|
||
// component: 'InputNumber',
|
||
// dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请输入使用次数!' }];
|
||
// },
|
||
//},
|
||
//{
|
||
// label: '状态:',
|
||
// field: 'status',
|
||
// component: 'RadioGroup',
|
||
// componentProps: {
|
||
// options: [
|
||
// { label: '已报到', value: 0 },
|
||
// { label: '未报到', value: 1 },
|
||
// ],
|
||
// },
|
||
// dynamicRules: ({ model, schema }) => {
|
||
// return [{ required: true, message: '请选择状态' }];
|
||
// },
|
||
//},
|
||
//// TODO 主键隐藏字段,目前写死为ID
|
||
{
|
||
label: '',
|
||
field: 'id',
|
||
component: 'Input',
|
||
show: false,
|
||
},
|
||
];
|
||
|
||
// 高级查询数据
|
||
export const superQuerySchema = {
|
||
userId: { title: '用户ID', order: 0, view: 'text', type: 'string' },
|
||
majorId: { title: '学科', order: 1, view: 'number', type: 'number' },
|
||
userMajorId: { title: '用户专业id', order: 2, view: 'text', type: 'string' },
|
||
userName: { title: '姓名', order: 3, view: 'text', type: 'string' },
|
||
phone: { title: '手机号', order: 4, view: 'text', type: 'string' },
|
||
jobTitle: { title: '职称', order: 5, view: 'text', type: 'string' },
|
||
pyCard: { title: '银行卡号', order: 6, view: 'text', type: 'string' },
|
||
mealCard: { title: '饭卡', order: 7, view: 'text', type: 'string' },
|
||
office: { title: '职务', order: 8, view: 'text', type: 'string' },
|
||
workName: { title: '工作名称', order: 9, view: 'text', type: 'string' },
|
||
workPhone: { title: '固定电话', order: 10, view: 'text', type: 'string' },
|
||
identityId: { title: '身份证', order: 11, view: 'text', type: 'string' },
|
||
carNumber: { title: '车牌号', order: 12, view: 'text', type: 'string' },
|
||
sex: { title: '性别', order: 13, view: 'text', type: 'string' },
|
||
age: { title: '年龄', order: 14, view: 'number', type: 'number' },
|
||
carStatus: { title: '车辆是否入校', order: 15, view: 'number', type: 'number' },
|
||
dormitory: { title: '住宿信息', order: 16, view: 'text', type: 'string' },
|
||
dormitoryStatus: { title: '是否住宿', order: 17, view: 'text', type: 'string' },
|
||
bankAddress: { title: '开户所在地', order: 18, view: 'text', type: 'string' },
|
||
bankName: { title: '开户行', order: 19, view: 'text', type: 'string' },
|
||
groupId: { title: '所属分组', order: 20, view: 'number', type: 'number' },
|
||
numberuse: { title: '使用次数', order: 21, view: 'number', type: 'number' },
|
||
status: { title: '状态:0已报道 1未报到', order: 22, view: 'number', type: 'number' },
|
||
};
|
||
|
||
/**
|
||
* 流程表单调用这个方法获取formSchema
|
||
* @param param
|
||
*/
|
||
export function getBpmFormSchema(_formData): FormSchema[] {
|
||
// 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
|
||
return formSchema;
|
||
}
|