import GoodsItem from '../component/GoodsItem'; import Utils from './Utils'; import Consts from './Consts'; import {CommandBus, CMD_TYPE} from './CommandBus'; class Course { constructor() {} static renderList(data, auth) { let main = document.querySelector('#course-main'); main.innerHTML = ''; //先获取各课的下载状态 let recs = [] for (let idx in data){ let item = data[idx]; recs.push(item.id); } // 现在只按文字模板进行渲染 main.innerHTML = this.textList(data, auth); } static textList(data, auth) { let content = ''; function listItem(data, seq, isFree) { let btnClass = 'download-btn-lesson-list-ready'; if (data.downloadStatus == Consts.DOWNLOAD_STATUS_ONGOING){ btnClass = 'download-btn-lesson-list-ongoing'; } else if (data.downloadStatus == Consts.DOWNLOAD_STATUS_SUCCESS) { btnClass = 'download-btn-lesson-list-success'; } if ( data.downloadStatus == Consts.DOWNLOAD_STATUS_FAILED ) { btnClass = 'download-btn-lesson-list-failed'; } return `
${Utils.fixOverflowStr(data.title, 32, '...')}
`; } for (let i in data) { // 课程未购买的第一课加入free标记 if (i == 0 && !auth) { content += listItem(data[i], i, true); } else { content += listItem(data[i], i, false); } } return `
${content}
`; } /** * 按钮工厂 * @param {Number} location 在goods中的位置 * @param {Object} goodsItem */ static generateBuyButton(location, goodsItem) { const { id, terminalPrice, chargeUnit, isInCart } = goodsItem; const newPrice = Utils.twoDecimal_f(terminalPrice); const oldPrice = Utils.twoDecimal_f(terminalPrice*1.25); const newPriceStr = Utils.thousandthFormat(newPrice); const oldPriceStr = Utils.thousandthFormat(oldPrice); let btnStr = `
${newPriceStr}元/${chargeUnit}

原价${oldPriceStr}

`; if (isInCart) { btnStr = `
`; } return btnStr; } static renderDetail(data) { const { auth, detail, digest, beginTime, endTime } = data; let goods = data.goods; if (!goods) { goods = []; } let beginTimeStr = ''; let endTimeStr = ''; if (beginTime) { beginTimeStr = this.dateFormat(beginTime); } if (endTime) { endTimeStr = this.dateFormat(endTime); } else { endTimeStr = '永久'; } let main = document.querySelector('#course-main'); main.innerHTML = ''; let duration = ''; let btn = ''; let buyedIcon = ''; let desc = `

${detail || ''}

`; if (auth) { duration = `

使用期限:${beginTimeStr}-${endTimeStr}

`; buyedIcon = '
'; } else { duration = `

${digest || ''}

`; } let btnContainer = []; for (let i in goods) { // 这里限制只选择goods列表里的前三个 if (i >= 3) break; btnContainer.push(this.generateBuyButton(i, goods[i])); } btn = `
${btnContainer.join('')}
`; const desc_wrapper = `
${duration + desc + buyedIcon}
`; main.innerHTML = `
${desc_wrapper + btn}
`; } static renderPeriphery(dataset) { let main = document.getElementById('course-main'); main.innerHTML = ''; let listHtml = ''; for (let i in dataset) { const { title, subTitle, coverUrl, goods } = dataset[i]; let price = ''; if (goods && Array.isArray(goods) && goods.length >= 1) { price = goods[0].terminalPrice || ''; } let data = { price, img: `${Consts.IMG_PATH}/${coverUrl}`, title: title || '', correlative: subTitle || '' }; listHtml += `
${GoodsItem.createHTMLString(data)}
`; } if (dataset.length > 0) { main.innerHTML = `
${listHtml}
`; } else { main.innerHTML = `
暂无周边配套
`; } } static renderPeripheryDetail(data) { const { id, title, subTitle, detail, goods } = data; let price = 0; let goodsId; let isInCart; if (goods && goods.length >= 1) { price = goods[0].terminalPrice; goodsId = goods[0].id; isInCart = goods[0].isInCart; } let main = document.getElementById('course-main'); let _detailContent = document.querySelector('#periphery-detail-content'); if (_detailContent) { main.removeChild(_detailContent); } let detailContent = document.createElement('div'); detailContent.setAttribute('class', 'periphery-detail-content'); detailContent.setAttribute('id', 'periphery-detail-content'); detailContent.setAttribute('fe-role', 'Switch'); let icon = ''; if (isInCart) { icon = '
'; } else { icon = `
`; } let list = ''; list = `

${title + '  ' + subTitle}

¥${Utils.twoDecimal_f(price)}

${detail || ''}

${icon}
`; detailContent.innerHTML = `
${list} `; main.appendChild(detailContent); } static dateFormat(time) { let date = new Date(time); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); return [year, month, day].join('/'); } } module.exports = Course;