|  | @@ -0,0 +1,179 @@
 | 
											
												
													
														|  | 
 |  | +import * as api from './api';
 | 
											
												
													
														|  | 
 |  | +import { dict, UserPageQuery, AddReq, DelReq, EditReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet } from '@fast-crud/fast-crud';
 | 
											
												
													
														|  | 
 |  | +import { inject, nextTick, ref } from 'vue';
 | 
											
												
													
														|  | 
 |  | +import { successMessage } from '/@/utils/message';
 | 
											
												
													
														|  | 
 |  | +import { BaseColumn } from '/@/views/adManage/utils/commonTabColumn.js';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +export const createCrudOptions = function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
 | 
											
												
													
														|  | 
 |  | +	const pageRequest = async (query: UserPageQuery) => {
 | 
											
												
													
														|  | 
 |  | +		return await api.GetList(query);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +	const editRequest = async ({ form, row }: EditReq) => {
 | 
											
												
													
														|  | 
 |  | +		form.id = row.id;
 | 
											
												
													
														|  | 
 |  | +		return await api.UpdateObj(form);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +	const delRequest = async ({ row }: DelReq) => {
 | 
											
												
													
														|  | 
 |  | +		return await api.DelObj(row.id);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +	const addRequest = async ({ form }: AddReq) => {
 | 
											
												
													
														|  | 
 |  | +		return await api.AddObj(form);
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	//权限判定
 | 
											
												
													
														|  | 
 |  | +	const hasPermissions = inject('$hasPermissions');
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +	return {
 | 
											
												
													
														|  | 
 |  | +		crudOptions: {
 | 
											
												
													
														|  | 
 |  | +			table: {
 | 
											
												
													
														|  | 
 |  | +				height: 800,
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			container: {
 | 
											
												
													
														|  | 
 |  | +        fixedHeight: false
 | 
											
												
													
														|  | 
 |  | +      },
 | 
											
												
													
														|  | 
 |  | +			request: {
 | 
											
												
													
														|  | 
 |  | +				pageRequest,
 | 
											
												
													
														|  | 
 |  | +				addRequest,
 | 
											
												
													
														|  | 
 |  | +				editRequest,
 | 
											
												
													
														|  | 
 |  | +				delRequest,
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			rowHandle: {
 | 
											
												
													
														|  | 
 |  | +				fixed: 'right',
 | 
											
												
													
														|  | 
 |  | +				width: 80,
 | 
											
												
													
														|  | 
 |  | +				buttons: {
 | 
											
												
													
														|  | 
 |  | +					view: {
 | 
											
												
													
														|  | 
 |  | +						show: false,
 | 
											
												
													
														|  | 
 |  | +					},
 | 
											
												
													
														|  | 
 |  | +					edit: {
 | 
											
												
													
														|  | 
 |  | +						iconRight: 'Edit',
 | 
											
												
													
														|  | 
 |  | +						type: 'text',
 | 
											
												
													
														|  | 
 |  | +            text: null
 | 
											
												
													
														|  | 
 |  | +						// show: hasPermissions('dictionary:Update'),
 | 
											
												
													
														|  | 
 |  | +					},
 | 
											
												
													
														|  | 
 |  | +					remove: {
 | 
											
												
													
														|  | 
 |  | +						iconRight: 'Delete',
 | 
											
												
													
														|  | 
 |  | +						type: 'text',
 | 
											
												
													
														|  | 
 |  | +            text: null
 | 
											
												
													
														|  | 
 |  | +						// show: hasPermissions('dictionary:Delete'),
 | 
											
												
													
														|  | 
 |  | +					},
 | 
											
												
													
														|  | 
 |  | +					// custom: {
 | 
											
												
													
														|  | 
 |  | +					// 	text: '字典配置',
 | 
											
												
													
														|  | 
 |  | +					// 	type: 'text',
 | 
											
												
													
														|  | 
 |  | +					// 	// show: hasPermissions('dictionary:Update'),
 | 
											
												
													
														|  | 
 |  | +					// 	tooltip: {
 | 
											
												
													
														|  | 
 |  | +					// 		placement: 'top',
 | 
											
												
													
														|  | 
 |  | +					// 		content: '字典配置',
 | 
											
												
													
														|  | 
 |  | +					// 	},
 | 
											
												
													
														|  | 
 |  | +					// 	//@ts-ignore
 | 
											
												
													
														|  | 
 |  | +					// 	click: (ctx: any) => {
 | 
											
												
													
														|  | 
 |  | +					// 		const { row } = ctx;
 | 
											
												
													
														|  | 
 |  | +					// 		context!.subDictRef.value.drawer = true;
 | 
											
												
													
														|  | 
 |  | +					// 		nextTick(() => {
 | 
											
												
													
														|  | 
 |  | +					// 			context!.subDictRef.value.setSearchFormData({ form: { parent: row.id } });
 | 
											
												
													
														|  | 
 |  | +					// 			context!.subDictRef.value.doRefresh();
 | 
											
												
													
														|  | 
 |  | +					// 		});
 | 
											
												
													
														|  | 
 |  | +					// 	},
 | 
											
												
													
														|  | 
 |  | +					// },
 | 
											
												
													
														|  | 
 |  | +				},
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +			columns: {
 | 
											
												
													
														|  | 
 |  | +				// _index: {
 | 
											
												
													
														|  | 
 |  | +				// 	title: '序号',
 | 
											
												
													
														|  | 
 |  | +				// 	form: { show: false },
 | 
											
												
													
														|  | 
 |  | +				// 	column: {
 | 
											
												
													
														|  | 
 |  | +				// 		//type: 'index',
 | 
											
												
													
														|  | 
 |  | +				// 		align: 'center',
 | 
											
												
													
														|  | 
 |  | +				// 		width: '70px',
 | 
											
												
													
														|  | 
 |  | +				// 		columnSetDisabled: true, //禁止在列设置中选择
 | 
											
												
													
														|  | 
 |  | +				// 		formatter: (context) => {
 | 
											
												
													
														|  | 
 |  | +				// 			//计算序号,你可以自定义计算规则,此处为翻页累加
 | 
											
												
													
														|  | 
 |  | +				// 			let index = context.index ?? 1;
 | 
											
												
													
														|  | 
 |  | +				// 			let pagination = crudExpose!.crudBinding.value.pagination;
 | 
											
												
													
														|  | 
 |  | +				// 			// @ts-ignore
 | 
											
												
													
														|  | 
 |  | +				// 			return ((pagination.currentPage ?? 1) - 1) * pagination.pageSize + index + 1;
 | 
											
												
													
														|  | 
 |  | +				// 		},
 | 
											
												
													
														|  | 
 |  | +				// 	},
 | 
											
												
													
														|  | 
 |  | +				// },
 | 
											
												
													
														|  | 
 |  | +        name: {
 | 
											
												
													
														|  | 
 |  | +          title: '广告组合',
 | 
											
												
													
														|  | 
 |  | +          column: {
 | 
											
												
													
														|  | 
 |  | +            width: '150px'
 | 
											
												
													
														|  | 
 |  | +          },
 | 
											
												
													
														|  | 
 |  | +					search: {
 | 
											
												
													
														|  | 
 |  | +						show: true,
 | 
											
												
													
														|  | 
 |  | +						component: {
 | 
											
												
													
														|  | 
 |  | +							props: {
 | 
											
												
													
														|  | 
 |  | +								clearable: true
 | 
											
												
													
														|  | 
 |  | +							}
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					},
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						rules: [{required: true, message:'必填项'}]
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        state: {
 | 
											
												
													
														|  | 
 |  | +          title: '状态',
 | 
											
												
													
														|  | 
 |  | +          type: 'dict-select',
 | 
											
												
													
														|  | 
 |  | +          dict: dict({
 | 
											
												
													
														|  | 
 |  | +            data:[
 | 
											
												
													
														|  | 
 |  | +              {value:'enabled', label:'投放中'},
 | 
											
												
													
														|  | 
 |  | +              {value:'disable', label:'禁用'},
 | 
											
												
													
														|  | 
 |  | +            ] 
 | 
											
												
													
														|  | 
 |  | +          }),
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						show: false
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +				budget_policy: {
 | 
											
												
													
														|  | 
 |  | +					title: '预算类型',
 | 
											
												
													
														|  | 
 |  | +					type: 'dict-select',
 | 
											
												
													
														|  | 
 |  | +					dict: dict({
 | 
											
												
													
														|  | 
 |  | +						data: [
 | 
											
												
													
														|  | 
 |  | +							{ value: '', label: '无预算上限' },
 | 
											
												
													
														|  | 
 |  | +							{ value: 'dateRange', label: '日期范围' },
 | 
											
												
													
														|  | 
 |  | +							{ value: 'monthlyRecurring', label: '按月' },
 | 
											
												
													
														|  | 
 |  | +						]
 | 
											
												
													
														|  | 
 |  | +					}),
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						value: ''
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +				},
 | 
											
												
													
														|  | 
 |  | +        budget_startDate: {
 | 
											
												
													
														|  | 
 |  | +          title: '开始日期',
 | 
											
												
													
														|  | 
 |  | +					type: 'date',
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						show: compute(context => context.form.budget_policy === "dateRange"),
 | 
											
												
													
														|  | 
 |  | +						rules: [{required: true, message:'必填项'}]
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        budget_endDate: {
 | 
											
												
													
														|  | 
 |  | +          title: '结束日期',
 | 
											
												
													
														|  | 
 |  | +					type: 'date',
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						show: compute(context => context.form.budget_policy !== '')
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        budget_amount: {
 | 
											
												
													
														|  | 
 |  | +          title: '预算',
 | 
											
												
													
														|  | 
 |  | +					type: 'number',
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						value: 0,
 | 
											
												
													
														|  | 
 |  | +						show: compute(context => context.form.budget_policy !== ''),
 | 
											
												
													
														|  | 
 |  | +						rules: [{required: true, message:'必填项'}],
 | 
											
												
													
														|  | 
 |  | +						component: {
 | 
											
												
													
														|  | 
 |  | +							min: 0,
 | 
											
												
													
														|  | 
 |  | +							precision: 2,
 | 
											
												
													
														|  | 
 |  | +							controlsPosition: "right"
 | 
											
												
													
														|  | 
 |  | +						}
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        inBudget: {
 | 
											
												
													
														|  | 
 |  | +          title: '是否预算内',
 | 
											
												
													
														|  | 
 |  | +					form: {
 | 
											
												
													
														|  | 
 |  | +						show: false
 | 
											
												
													
														|  | 
 |  | +					}
 | 
											
												
													
														|  | 
 |  | +        },
 | 
											
												
													
														|  | 
 |  | +        ...BaseColumn
 | 
											
												
													
														|  | 
 |  | +			},
 | 
											
												
													
														|  | 
 |  | +		},
 | 
											
												
													
														|  | 
 |  | +	};
 | 
											
												
													
														|  | 
 |  | +};
 |