Commit 563e14b7ffbdd607f74973aa16968055355fef01

Authored by ly525
Committed by 小小鲁班
1 parent 1804eea1

feat(component): add news list; !#zh: 新闻列表组件

front-end/h5/src/components/core/editor/edit-panel/props/global-work.vue
... ... @@ -41,15 +41,15 @@ export default {
41 41 get () {
42 42 return this.work.page_mode || PAGE_MODE.SWIPPER_PAGE
43 43 },
44   - set (page_mode) {
45   - this.updateWork({ page_mode })
  44 + set (pageMode) {
  45 + this.updateWork({ page_mode: pageMode })
46 46 }
47 47 }
48 48 },
49 49 methods: {
50 50 ...mapActions('editor', [
51 51 'updateWork'
52   - ]),
  52 + ])
53 53 }
54 54 }
55 55 </script>
... ...
front-end/h5/src/components/core/support/excel.js
... ... @@ -68,7 +68,6 @@ export default {
68 68 this.sheet.loadData({
69 69 rows: this.innerItems
70 70 }).change(excelData => {
71   - debugger
72 71 // console.log('----------')
73 72 // console.log(excelData)
74 73 // console.log(this.formatter(excelData))
... ...
front-end/h5/src/components/plugins/lbp-news-list.js 0 → 100644
  1 +import PropTypes from '@luban-h5/plugin-common-props'
  2 +import Parser from '../../utils/excel-parser'
  3 +import './styles/news-list.scss'
  4 +
  5 +export default {
  6 + extra: {
  7 + defaultStyle: {
  8 + width: 320,
  9 + height: 256
  10 + }
  11 + },
  12 + name: 'lbp-news-list',
  13 + props: {
  14 + dataset: PropTypes.excel({
  15 + defaultValue: () => [
  16 + ['新闻标题', '摘要', '链接', '日期', '来源'],
  17 + [
  18 + '1 . 鲁班H5 可视化搭建平台!',
  19 + '鲁班H5-是一款基于常见业务组件,通过拖拽的形式,生成页面的可视化搭建系统;我们的初心也是希望能通过工程化的手段,提高简单H5页面的制作效率',
  20 + 'https://luban-h5.com/',
  21 + '2020-01-01',
  22 + '鲁班H5'
  23 + ],
  24 + [
  25 + '2 . 鲁班H5-开源的可视化搭建平台!',
  26 + 'en: web design tool || mobile page builder/editor || mini webflow for mobile page. zh: 类似易企秀的H5制作、建站工具、可视化搭建系统.',
  27 + 'https://github.com/ly525/luban-h5',
  28 + '2020-01-01',
  29 + '鲁班H5(github)'
  30 + ]
  31 + ]
  32 + })
  33 + },
  34 + data () {
  35 + return {
  36 + option: {}
  37 + }
  38 + },
  39 + render () {
  40 + /**
  41 + * rows[0] {
  42 + '新闻标题': '',
  43 + '摘要': '',
  44 + '链接': '',
  45 + '日期': '',
  46 + '来源': '',
  47 + }
  48 + */
  49 + const { rows } = Parser.csv2VChartJson(this.dataset)
  50 + return <div class="newslist" style="border-color: transparent;">
  51 + {
  52 + rows.map((item, i) =>
  53 + <div class="news-item">
  54 + <a href={item['链接']} target="_blank" class="link">
  55 + <div class="title">{item['新闻标题']}</div>
  56 + </a>
  57 + <div class="content">{item['摘要']}</div>
  58 + <div class="source">{item['来源']}</div>
  59 + <div class="time">{item['日期']}</div>
  60 + </div>
  61 + )
  62 + }
  63 + </div>
  64 + },
  65 + mounted () {
  66 + // this.renderChart()
  67 + }
  68 +}
... ...
front-end/h5/src/components/plugins/styles/news-list.scss 0 → 100644
  1 +.news-item {
  2 + border-color: rgba(33, 181, 244, 0.2);
  3 + border-bottom: 1px solid #bbddff;
  4 + text-align: left;
  5 + padding: 16px 12px 4px;
  6 + overflow: auto;
  7 + color: #333;
  8 + font-size: 12px;
  9 +
  10 + .link {
  11 + color: #333;
  12 + text-decoration: underline;
  13 + }
  14 +}
  15 +
  16 +.news-item .title {
  17 + font-weight: 700;
  18 + text-align: left;
  19 + font-size: 14px;
  20 +}
  21 +
  22 +.news-item .content {
  23 + // text-indent: 24px!important;
  24 + text-align: left;
  25 + margin-bottom: 8px;
  26 +}
  27 +
  28 + .news-item .source {
  29 + float: left;
  30 + text-align: left;
  31 +}
  32 +
  33 +.news-item .time {
  34 + float: right;
  35 + margin-right: 4px;
  36 +}
0 37 \ No newline at end of file
... ...
front-end/h5/src/constants/work.js
... ... @@ -5,10 +5,10 @@
5 5 */
6 6 export const PAGE_MODE = {
7 7 SWIPPER_PAGE: 'h5_swipper',
8   - LONG_PAGE: 'h5_long_page',
  8 + LONG_PAGE: 'h5_long_page'
9 9 }
10 10  
11 11 export const PAGE_MODE_LABEL = {
12 12 SWIPPER_PAGE: '翻页H5',
13   - LONG_PAGE: '长页面',
14   -}
15 13 \ No newline at end of file
  14 + LONG_PAGE: '长页面'
  15 +}
... ...
front-end/h5/src/engine-entry.js
... ... @@ -62,7 +62,7 @@ const Engine = {
62 62 },
63 63 renderPreview (pageElements = []) {
64 64 const pageWrapperStyle = this.isLongPage ? {
65   - height: window.__work.height + 'px'
  65 + height: window.__work.height + 'px'
66 66 } : {}
67 67  
68 68 const elements = pageElements.map(element => new Element(element))
... ... @@ -78,10 +78,10 @@ const Engine = {
78 78 </div>
79 79 )
80 80 },
81   - getContainerStyle(work) {
  81 + getContainerStyle (work) {
82 82 const containerStyle = {
83 83 position: 'relative',
84   - height: '100%',
  84 + height: '100%'
85 85 }
86 86  
87 87 if (this.isLongPage) {
... ... @@ -89,9 +89,9 @@ const Engine = {
89 89 }
90 90 return containerStyle
91 91 },
92   - renderUnPublishTip() {
  92 + renderUnPublishTip () {
93 93 return <div style="box-sizing: border-box;min-height: 568px;line-height: 568px;text-align: center;">页面可能暂未发布</div>
94   - },
  94 + }
95 95 },
96 96 render (h) {
97 97 const work = window.__work
... ...
front-end/h5/src/mixins/load-plugins.js
... ... @@ -16,6 +16,7 @@ import LbpRate from &#39;../components/plugins/lbp-rate&#39;
16 16 import LbpQQMap from '../components/plugins/lbp-qq-map/src'
17 17 import LbpLineChart from '../components/plugins/charts/line'
18 18 import LbpTable from '../components/plugins/lbp-table'
  19 +import LbpNewsList from '../components/plugins/lbp-news-list'
19 20 // import LbpTabs from '../components/plugins/lbp-tabs'
20 21  
21 22 export const pluginsList = [
... ... @@ -277,6 +278,17 @@ export const pluginsList = [
277 278 shortcutProps: {
278 279 theme: 'lbp-table-theme-light-blue'
279 280 }
  281 + },
  282 + {
  283 + i18nTitle: {
  284 + 'en-US': 'NewsList',
  285 + 'zh-CN': '新闻列表'
  286 + },
  287 + title: '新闻列表',
  288 + icon: 'list',
  289 + component: LbpNewsList,
  290 + visible: true,
  291 + name: LbpNewsList.name
280 292 }
281 293 ]
282 294  
... ...
front-end/h5/src/store/modules/work.js
... ... @@ -39,7 +39,7 @@ export const actions = {
39 39 * 预览作品之前需要先保存,但希望 用户点击保存按钮 和 点击预览按钮 loading_name 能够不同(虽然都调用了 saveWork)
40 40 * 因为 loading 效果要放在不同的按钮上
41 41 */
42   - saveWork ({ commit, dispatch, state }, { isSaveCover = false, loadingName = 'saveWork_loading', successMsg="保存作品成功" } = {}) {
  42 + saveWork ({ commit, dispatch, state }, { isSaveCover = false, loadingName = 'saveWork_loading', successMsg = '保存作品成功' } = {}) {
43 43 const fn = (callback) => {
44 44 new AxiosWrapper({
45 45 dispatch,
... ...
front-end/h5/src/utils/excel-parser.js
... ... @@ -139,7 +139,7 @@ export default class Parser {
139 139 rows: rows.map((row, index) => {
140 140 const obj = {}
141 141 columns.forEach((col, colIndex) => {
142   - obj[col] = row[colIndex]
  142 + obj[col.trim()] = row[colIndex]
143 143 })
144 144 return obj
145 145 })
... ...