Browse Source

上屏发布

dev
xuhuajiao 3 years ago
parent
commit
2723c626ff
  1. 56
      src/assets/styles/adminIndex.scss
  2. 8
      src/router/routers.js
  3. 17
      src/views/dashboard/ThemeGallery.vue
  4. 2
      src/views/device/deviceConfig.vue
  5. 19
      src/views/materialContent/index.vue
  6. 1
      src/views/materialContent/materialList/index.vue
  7. 108
      src/views/publishContent/historyList/index.vue
  8. 52
      src/views/publishContent/index.vue
  9. 131
      src/views/publishContent/publishList/index.vue
  10. 209
      src/views/publishContent/urgentMessage/index.vue

56
src/assets/styles/adminIndex.scss

@ -108,6 +108,10 @@
.delt_btn {
background-color: #ee5747 !important;
}
.start_btn {
background-color: #3a8aeb !important;
}
.stop_btn {
background-color: #faaf45 !important;
@ -116,6 +120,14 @@
.record_btn {
background: linear-gradient(to right, #fc8c6f, #fa544e) !important;
}
.top_btn{
background-color: #2cca8c !important;
}
.top_btn_active {
background-color: #a7acae !important;
}
}
.el-dialog__body {
@ -271,4 +283,48 @@
overflow: hidden;
text-overflow: ellipsis;
}
.home_publish_btn {
position: absolute;
top: 14px;
right: 26px;
.el-button {
padding: 8px 20px;
font-size: 14px;
color: #fff;
border: none;
&:first-child {
background: linear-gradient(to right, #fc8c6f, #fa544e);
}
&:last-child {
margin-left: 24px;
}
}
}
.content_warp {
i {
font-style: normal;
color: #999;
}
.el-tabs__header {
padding: 0 24px;
}
.el-tabs__item {
height: 48px;
line-height: 48px;
}
.el-tabs__active-bar {
background-color: transparent !important;
}
.el-tabs__nav-wrap::after {
height: 1px;
}
}
// end

8
src/router/routers.js

@ -155,6 +155,14 @@ export const constantRouterMap = [
title: '素材库',
icon: 'edit'
}
},
{
path: '/publish',
component: () => import('@/views/publishContent/index'),
meta: {
title: '上屏发布',
icon: 'edit'
}
}]
}
// {

17
src/views/dashboard/ThemeGallery.vue

@ -78,22 +78,5 @@ export default {
overflow: hidden;
}
}
.home_publish_btn {
position: absolute;
top: 14px;
right: 26px;
.el-button {
padding: 8px 20px;
font-size: 14px;
color: #fff;
border: none;
&:first-child {
background: linear-gradient(to right, #fc8c6f, #fa544e);
}
&:last-child {
margin-left: 24px;
}
}
}
}
</style>

2
src/views/device/deviceConfig.vue

@ -291,9 +291,11 @@ export default {
padding: 0 20px;
}
.setting_item{
padding-top: 24px;
color: #333;
h4{
font-size: 16px;
margin-bottom: 10px;
}
.setting_cont{
display: flex;

19
src/views/materialContent/index.vue

@ -76,25 +76,6 @@ export default {
.app-container {
position: relative;
padding: 6px 0 20px 0;
.content_warp {
i {
font-style: normal;
color: #999;
}
::v-deep .el-tabs__header {
padding: 0 24px;
}
::v-deep .el-tabs__item {
height: 48px;
line-height: 48px;
}
::v-deep .el-tabs__active-bar {
background-color: transparent !important;
}
::v-deep .el-tabs__nav-wrap::after {
height: 1px;
}
}
.material_btn {
position: absolute;
right: 24px;

1
src/views/materialContent/materialList/index.vue

@ -147,6 +147,7 @@
</el-dialog>
</div>
<!-- 多选操作 -->
<div v-if="contentIds.length !== 0" class="multi_handle">
<el-button type="button" class="mulit_btn">即时发布</el-button>
<el-button type="button" class="mulit_btn">定时发布</el-button>

108
src/views/publishContent/historyList/index.vue

@ -0,0 +1,108 @@
<template>
<div class="list_warp">
<el-row :gutter="15">
<el-col>
<el-table
ref="table"
v-loading="crud.loading"
:data="tableData"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column label="文件名称" align="center" prop="name" />
<el-table-column label="发布内容" align="center" prop="content">
<template slot-scope="scope">
<div>
<img width="100px" size="medium" :src="scope.row.cover" />
</div>
</template>
</el-table-column>
<el-table-column label="发布时间" align="center" prop="date" />
<el-table-column label="发布周期" align="center" prop="cycle" />
<el-table-column label="发布类型" align="center" prop="type">
<template slot-scope="scope">
<div>{{ scope.row.type ? '定时发布' : '即时发布' }}</div>
</template>
</el-table-column>
<el-table-column label="发布人" align="center" prop="user" />
<el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope">
<div :class="{ 'stop_txt': scope.row.enabled }">{{ scope.row.enabled ? '发布中' : '停止' }}</div>
</template>
</el-table-column>
<el-table-column prop="device" align="center" label="发布设备" />
</el-table>
<!--分页组件-->
<pagination />
</el-col>
</el-row>
</div>
</template>
<script>
import crudDept from '@/api/system/dept'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import pagination from '@crud/Pagination'
const defaultForm = {
}
export default {
name: 'HistoryList',
components: { pagination },
cruds() {
return CRUD({ title: '部门', url: 'api/dept', crudMethod: { ...crudDept } })
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
return {
selectedList: [],
tableData: [
{
id: 1,
name: '图片1',
cover: require('@/assets/images/background.jpg'),
type: 0,
user: '某某某',
device: '所有设备',
enabled: true,
isTop: true,
cycle: '每天',
date: '2021-2-2 至 2022-4-6'
},
{
id: 2,
name: '图片2',
cover: require('@/assets/images/background.jpg'),
type: 1,
user: '某某某2',
device: '所有设备',
enabled: false,
isTop: false,
cycle: '每天',
date: '2021-2-2 至 2022-4-6'
}
]
}
},
methods: {
handleSelectionChange(val) {
this.selectedList = val
if (val.length > 0) {
this.clearBtnDisabled = false
} else {
this.clearBtnDisabled = true
}
console.log(val)
}
}
}
</script>
<style lang="scss" scoped>
.list_warp {
padding: 0 24px;
.stop_txt {
color: #3a8aeb;
}
}
</style>

52
src/views/publishContent/index.vue

@ -0,0 +1,52 @@
<template>
<div class="app-container">
<div class="content_warp">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="发布列表" name="first">
<PublistList />
</el-tab-pane>
<el-tab-pane label="发布历史" name="second">
<HistoryList />
</el-tab-pane>
<el-tab-pane label="紧急通知" name="third">
<UrgentMessage />
</el-tab-pane>
</el-tabs>
</div>
<div v-if="activeName !== 'third'" class="home_publish_btn">
<el-button round>即时发布</el-button>
<el-button round type="primary">定时发布</el-button>
</div>
<div v-else class="home_publish_btn">
<el-button round>紧急发布</el-button>
</div>
</div>
</template>
<script>
import PublistList from './publishList/index'
import HistoryList from './historyList/index'
import UrgentMessage from './urgentMessage/index'
export default {
name: 'PublishContent',
components: { PublistList, HistoryList, UrgentMessage },
data() {
return {
activeName: 'first',
mulitText: '多选'
}
},
methods: {
handleClick(tab, event) {
console.log(tab, event)
}
}
}
</script>
<style lang="scss" scoped>
.app-container {
position: relative;
padding: 6px 0 20px 0;
}
</style>

131
src/views/publishContent/publishList/index.vue

@ -0,0 +1,131 @@
<template>
<div class="list_warp">
<el-row :gutter="15">
<el-col>
<el-table
ref="table"
v-loading="crud.loading"
:data="tableData"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column label="文件名称" align="center" prop="name" />
<el-table-column label="发布内容" align="center" prop="content">
<template slot-scope="scope">
<div>
<img width="100px" size="medium" :src="scope.row.cover" />
</div>
</template>
</el-table-column>
<el-table-column label="发布时间" align="center" prop="date" />
<el-table-column label="发布类型" align="center" prop="type">
<template slot-scope="scope">
<div>{{ scope.row.type ? '定时发布' : '即时发布' }}</div>
</template>
</el-table-column>
<el-table-column label="发布人" align="center" prop="user" />
<el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope">
<div :class="{ 'stop_txt': scope.row.enabled }">{{ scope.row.enabled ? '发布中' : '停止' }}</div>
</template>
</el-table-column>
<el-table-column prop="device" align="center" label="发布设备" />
<el-table-column label="操作" width="220px" align="center" fixed="right">
<template slot-scope="scope">
<el-button
type="primary"
:class="['top_btn', { 'top_btn_active': scope.row.isTop }]"
@click="isTophandle(scope.$index, scope.row)"
>{{ scope.row.isTop ? '取消' : '置顶' }}</el-button>
<el-button
type="primary"
class="edit_btn"
@click="editFormData(scope.$index, scope.row)"
>编辑</el-button>
<el-button
type="primary"
:class="['start_btn', { 'stop_btn': scope.row.enabled }]"
@click="isStopHandle(scope.$index, scope.row)"
>{{ scope.row.enabled ? '停止' : '恢复' }}</el-button>
<el-button type="info" class="delt_btn">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</el-col>
</el-row>
</div>
</template>
<script>
import crudDept from '@/api/system/dept'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import pagination from '@crud/Pagination'
const defaultForm = {
}
export default {
name: 'PublishList',
components: { pagination },
cruds() {
return CRUD({ title: '部门', url: 'api/dept', crudMethod: { ...crudDept } })
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
return {
selectedList: [],
tableData: [
{
id: 1,
name: '图片1',
cover: require('@/assets/images/background.jpg'),
type: 0,
user: '某某某',
device: '所有设备',
enabled: true,
isTop: true,
date: '2021-2-2 至 2022-4-6'
},
{
id: 2,
name: '图片2',
cover: require('@/assets/images/background.jpg'),
type: 1,
user: '某某某2',
device: '所有设备',
enabled: false,
isTop: false,
date: '2021-2-2 至 2022-4-6'
}
]
}
},
methods: {
isTophandle(index, row) {
row.isTop = !row.isTop
},
isStopHandle(index, row) {
row.enabled = !row.enabled
},
handleSelectionChange(val) {
this.selectedList = val
if (val.length > 0) {
this.clearBtnDisabled = false
} else {
this.clearBtnDisabled = true
}
console.log(val)
}
}
}
</script>
<style lang="scss" scoped>
.list_warp {
padding: 0 24px;
.stop_txt {
color: #3a8aeb;
}
}
</style>

209
src/views/publishContent/urgentMessage/index.vue

@ -0,0 +1,209 @@
<template>
<div class="list_warp">
<el-row :gutter="15">
<el-col>
<el-table
ref="table"
v-loading="crud.loading"
:data="tableData"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" align="center" prop="name" width="50" />
<el-table-column label="发布内容" align="center" prop="content" />
<el-table-column label="通知时间" align="center" prop="date" />
<el-table-column label="发布人" align="center" prop="user" />
<el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope">
<div :class="{ 'stop_txt': scope.row.enabled }">{{ scope.row.enabled ? '发布中' : '停止' }}</div>
</template>
</el-table-column>
<el-table-column label="操作" width="220px" align="center" fixed="right">
<template slot-scope="scope">
<el-button
type="primary"
class="edit_btn"
@click="editFormData(scope.$index, scope.row)"
>编辑</el-button>
<el-button
type="primary"
:class="['start_btn', { 'stop_btn': scope.row.enabled }]"
@click="isStopHandle(scope.$index, scope.row)"
>{{ scope.row.enabled ? '停止' : '恢复' }}</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</el-col>
</el-row>
<div class="publish_layer">
<el-dialog
title="紧急发布"
:close-on-click-modal="false"
:visible.sync="messageVisible"
width="872px"
height="384px"
>
<el-form ref="form" :model="form" size="small" label-width="100px">
<el-form-item
label="文本颜色"
prop="content"
:rules="[
{ required: true, message: '请选择文本内容', trigger: '' }
]"
>111</el-form-item>
<el-form-item
label="文本内容"
prop="content"
:rules="[
{ required: true, message: '请输入文本内容', trigger: 'blur' }
]"
>
<el-input type="textarea" rows="6" v-model="form.content" style="width: 674px;" />
</el-form-item>
<el-form-item
label="文本大小"
prop="orientation"
:rules="[
{ required: true, message: '请选择文本大小', trigger: 'change' },
]"
>
<el-select v-model="form.txtSize" size="small" class="filter-item">
<el-option
v-for="item in sizeData"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
<el-form-item
label="文本位置"
prop="position"
:rules="[
{ required: true, message: '请选择文本位置', trigger: 'change' },
]"
>
<el-select v-model="form.position" size="small" class="filter-item">
<el-option
v-for="item in positionData"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
<el-form-item
label="滚动速度"
prop="speed"
:rules="[
{ required: true, message: '请选择滚动速度', trigger: 'change' },
]"
>
<el-select v-model="form.speed" size="small" class="filter-item">
<el-option
v-for="item in speedData"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
</el-form-item>
<el-form-item
label="选择设备"
prop="deviceSelect"
:rules="[
{ required: true, message: '请选择设备', trigger: 'change' },
]"
>
<el-radio-group v-model="form.deviceSelect">
<el-radio label="所有设备" value="all" />
<el-radio label="部分设备" value="other" />
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="crud.status.cu === 2" type="primary" round @click="crud.submitCU">保存</el-button>
<el-button round @click="crud.cancelCU">关闭</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import crudDept from '@/api/system/dept'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import pagination from '@crud/Pagination'
const defaultForm = {
content: '',
txtSize: '',
position: '',
speed: '',
deviceSelect: ''
}
export default {
name: 'UrgentMessage',
components: { pagination },
cruds() {
return CRUD({ title: '部门', url: 'api/dept', crudMethod: { ...crudDept } })
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
return {
messageVisible: false,
sizeData: [{ key: '0', name: '16' }, { key: '1', name: '22' }, { key: '2', name: '24' }, { key: '3', name: '30' }],
positionData: [{ key: '0', name: '顶部' }, { key: '1', name: '中间' }, { key: '2', name: '底部' }],
speedData: [{ key: '0', name: '1s' }, { key: '1', name: '2s' }, { key: '2', name: '3s' }],
selectedList: [],
tableData: [
{
id: 1,
name: '图片1',
content: '这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是...',
user: '某某某',
enabled: true,
date: '2021-2-2 16:00'
},
{
id: 2,
name: '图片2',
content: '这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是一段文字这是...',
user: '某某某2',
enabled: false,
date: '2021-2-2 16:00'
}
]
}
},
methods: {
isStopHandle(index, row) {
row.enabled = !row.enabled
},
editFormData(index, row) {
this.messageVisible = true
},
handleSelectionChange(val) {
this.selectedList = val
if (val.length > 0) {
this.clearBtnDisabled = false
} else {
this.clearBtnDisabled = true
}
console.log(val)
}
}
}
</script>
<style lang="scss" scoped>
.list_warp {
padding: 0 24px;
.stop_txt {
color: #3a8aeb;
}
}
</style>
Loading…
Cancel
Save