import { Message } from 'element-ui' import request, { tenantRequest } from '@/utils/request' import { add, del, submit, resolve, send, messageSend, addStatus, addStatusScope, addTenant } from './base' import { ScheduleType } from '@/constant' export function getSchedulesByQuery (query) { const { pageNum: pageIndex, pageSize, ...params } = query return tenantRequest({ url: '/content/calendar/page', method: 'POST', data: addStatus({ pageIndex, pageSize, ...params }) }) } export function getSchedules (query) { return getSchedulesByQuery(addStatusScope(query)) } export function getSchedule (id, options) { return request({ url: `/content/programCalendar/${id}`, method: 'GET', ...options }).then(({ data }) => { if (data) { const { eventDetail, ...schedule } = data return { events: JSON.parse(eventDetail) || [], ...schedule } } return null }) } export function addSchedule (data) { return add({ url: '/content/calendar', method: 'POST', data: addTenant(data) }, tenantRequest) } export function deleteSchedule ({ id, name }) { return del({ url: `/content/calendar/${id}`, method: 'DELETE' }, name) } export function deleteSchedules (ids) { return del({ url: '/content/calendar/batchDelete', method: 'POST', data: ids }, '所选内容') } export function saveScheduleEvents (schedule, events) { const { id } = schedule return messageSend({ url: `/content/calendar/${id}/eventList`, method: 'POST', data: events }, '保存') } function checkSchedule (type, events) { if (!events.length) { Message({ type: 'warning', message: '请先添加节目' }) return false } switch (type) { case ScheduleType.RECUR: if (events.length < 2) { Message({ type: 'warning', message: '请至少添加两个节目' }) return false } break case ScheduleType.COMPLEX: if (type === ScheduleType.COMPLEX) { const now = Date.now() if (!events.some(({ until }) => !until || new Date(until) > now)) { Message({ type: 'warning', message: '无有效节目,请添加节目' }) return false } } break default: Message({ type: 'warning', message: '不支持的类型' }) return false } return true } export function submitSchedule ({ id, type, name }, events) { return new Promise((resolve, reject) => { if (events) { resolve(events) } else { send({ url: `/content/programCalendar/${id}`, method: 'GET' }).then(({ data }) => { resolve(JSON.parse(data.eventDetail)) }, reject) } }).then(events => { if (checkSchedule(type, events)) { return submit({ url: `/content/calendar/${id}/submit`, method: 'POST' }, name) } return Promise.reject() }) } export function resolveSchedule ({ id, name }) { return resolve({ url: `/content/calendar/${id}/approval`, method: 'POST', data: { remark: '' } }, name) } export function rejectSchedule ({ id }, remark) { return messageSend({ url: `/content/calendar/${id}/reject`, method: 'POST', data: { remark } }, '驳回') } export function copySchedule (schedule) { return messageSend({ url: '/content/calendar/copy', method: 'POST', data: addTenant(schedule) }, '复制', tenantRequest) }