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
			},
		},
	};
};
