Browse Source

主题库

dev
xudanya 3 years ago
parent
commit
c741b2cea1
  1. 361
      src/views/ThemeGallery/index.vue
  2. 323
      src/views/components/ThemeGalleryList.vue
  3. 2
      src/views/device/deviceConfig.vue
  4. 429
      src/views/publishContent/urgentMessage/index.vue

361
src/views/ThemeGallery/index.vue

@ -1,175 +1,74 @@
<template>
<div class="app-container theme_main">
<el-tabs v-model="activeIndex" @tab-click="tabHandleClick">
<el-tab-pane v-for="(item,index) in tabItem" :key="index" :label="item.class_name" :name="item.name" />
</el-tabs>
<!-- 右上角btn -->
<div class="home_publish_btn">
<el-button round class="el_button_green" @click="addEdit(0)">新增</el-button>
<el-button round type="primary" @click="addEdit(1)">编辑</el-button>
<el-button round class="el_button_red" @click="uploadEdit">上传</el-button>
<el-button round class="el_button_red" @click="upload()">上传</el-button>
</div>
<div style="position:relative">
<!-- 主题库list -->
<ThemeGalleryList
ref="ThemeGalleryList"
:is-multi-selected="isMultiSelected"
:mulit-text="mulitText"
:show-item-info="showItemInfo"
/>
<div>
<el-tabs v-if="showItemInfo" v-model="themeItemActive" class="theme_item_tab" @tab-click="tabItemClick">
<el-tab-pane label="竖屏" name="1" />
<el-tab-pane label="横屏" name="2" />
<el-tab-pane label="我的画册" name="3" />
</el-tabs>
<div class="material_btn">
<!-- @click="uploadListVisible=true" -->
<el-button round type="primary" @click="uploadListVisible=true">上传历史</el-button>
<el-button round @click="multiSelectBtn">{{ mulitText }}</el-button>
</div>
</div>
<div style="position:relative">
<!-- 主题库list -->
<ThemeGalleryList ref="ThemeGalleryList" :is-multi-selected="isMultiSelected" :mulit-text="mulitText" :show-item-info="showItemInfo" />
</div>
<!-- 平台技术人员-新增/编辑分类 -->
<div class="upload_layer">
<el-dialog
append-to-body
:show-close="false"
:visible.sync="addDialogVisible"
:title="layerTitle"
width="620px"
>
<el-dialog append-to-body :show-close="false" :visible.sync="addDialogVisible" :title="layerTitle" width="620px">
<el-form ref="classifyForm" inline :model="classifyForm" :rules="rules" size="small" label-width="80px">
<el-form-item v-if="isAddEdit==0" label="类别名称" prop="name">
<el-input v-model="classifyForm.name" style="width: 360px;" />
<el-input v-model="classifyForm.class_name" style="width: 360px;" />
</el-form-item>
<el-form-item v-else label="类别名称" prop="selectName">
<el-select v-model="classifyForm.selectName" placeholder="请选择" style="width: 360px;" @change="selectName">
<el-option
v-for="item in nameOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-form-item v-else label="类别名称" prop="class_name">
<el-select v-model="classifyForm.class_name" placeholder="请选择" style="width: 360px;" @change="selectName">
<el-option v-for="item in tabItem" :key="item.id" :label="item.class_name" :value="item" />
</el-select>
</el-form-item>
<el-form-item label="所属机构" prop="agency">
<el-select v-model="classifyForm.agency" multiple placeholder="请选择" style="width: 360px;">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-form-item label="所属机构" prop="is_all_name">
<el-select v-model="classifyForm.is_all_name" style="width: 360px;" @change="selectorganization" value-key="name">
<el-option v-for="item in options" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="submitForm('classifyForm')">新增</el-button>
<el-button type="primary" round @click="submitForm('classifyForm')">保存</el-button>
<el-button round @click="resetForm('classifyForm')">关闭</el-button>
</div>
</el-dialog>
</div>
<!-- 平台技术人员-上传 -->
<el-dialog
append-to-body
:show-close="false"
:visible.sync="uploadDialogVisible"
:title="uploadTitle"
class="upload_layer"
>
<el-form ref="classifyForm" :model="classifyForm" :rules="rules" size="small" label-width="80px">
<el-form-item label="类别名称" prop="selectNameList">
<el-checkbox-group v-model="classifyForm.selectNameList">
<el-checkbox v-for="item in nameOptions" :key="item.value" :label="item.label">{{ item.label }}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="设备方向" prop="direction">
<el-radio-group v-model="classifyForm.direction">
<el-radio :label="0">横屏</el-radio>
<el-radio :label="1">竖屏</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="文件名称">
<el-input v-model="classifyForm.name" style="width:336px" />
</el-form-item>
<el-form-item label="上传内容" prop="file">
<el-upload action="#" list-type="picture-card" :auto-upload="false">
<img src="@/assets/images/t-sc.png" alt />
<div slot="file" slot-scope="{file}">
<img class="el-upload-list__item-thumbnail" :src="file.url" alt />
</div>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="submitForm('classifyForm')">新增</el-button>
<el-button round @click="resetForm('classifyForm')">关闭</el-button>
</div>
</el-dialog>
<!-- 上传历史layer -->
<div class="upload_layer">
<el-dialog
title="上传历史"
:close-on-click-modal="false"
:visible.sync="uploadListVisible"
height="384px"
>
<el-form ref="form" :model="form" label-width="80px" class="query_history">
<el-form-item label="文件名称">
<el-input v-model="form.name" style="width:200px" />
</el-form-item>
<el-form-item label="时间">
<el-date-picker
v-model="form.date"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
</el-form-item>
</el-form>
<el-table :data="uploadData" :header-cell-style="{ color: '#333' }">
<el-table-column align="center" prop="name" label="文件名称" />
<el-table-column align="center" prop="cover" label="发布内容">
<template slot-scope="scope">
<div>
<img width="48px" height="64px" size="medium" :src="scope.row.cover" />
</div>
</template>
</el-table-column>
<el-table-column align="center" prop="type" label="类别名称" />
<el-table-column align="center" prop="direction" label="设备方向">
<template slot-scope="scope">
{{ scope.row.direction ? "竖屏" : "横屏" }}
</template>
</el-table-column>
<el-table-column align="center" prop="agency" label="所属机构" />
<el-table-column align="center" prop="date" label="上传时间" width="150" />
<el-table-column align="center" prop="publisher" label="发布人" />
<el-table-column align="center" prop="handle" label="操作">
<template slot-scope="scope">
<el-button
type="primary"
class="edit_btn"
@click="uploadEdit(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>
</el-dialog>
</div>
</div>
</template>
<script>
import { reqHeaderList, reqAddOrEdit } from "@/api/theme/theme.js";
import ThemeGalleryList from '../components/ThemeGalleryList.vue'
export default {
name: 'ThemeGallery',
components: { ThemeGalleryList },
data() {
data () {
return {
orga_id: '133221333123111', // ID
mulitText: '多选',
isMultiSelected: false,
showItemInfo: true,
uploadListVisible: false,
themeItemActive: '1',
addDialogVisible: false,
layerTitle: '新增',
uploadDialogVisible: false,
@ -180,68 +79,68 @@ export default {
date: null
},
classifyForm: {
name: null,
agency: null,
class_name: '',
is_all_name: '',
is_all: false,
id: '',
orga_ids: ["133221333123111"],
selectName: null,
direction: null,
selectNameList: []
},
options: [
{
value: '选项1',
label: '全部'
},
{
value: '选项2',
label: '武汉图书馆'
}
],
nameOptions: [
{
value: '选项1',
label: '为你推荐',
checked: false
key: true,
name: '全部'
},
{
value: '选项2',
label: '人工智能',
checked: true
key: false,
name: '武汉图书馆'
}
],
rules: {
name: [{ required: true, message: '请输入类别名称', trigger: 'blur' }],
// name: [{ required: true, message: '', trigger: 'blur' }],
selectName: [
{ required: true, message: '请选择类别名称', trigger: 'change' }
],
selectNameList: [
{ required: true, message: '请选择类别名称', trigger: 'change' }
],
agency: [
is_all: [
{ required: true, message: '请选择所属机构', trigger: 'change' }
],
direction: [
{ required: true, message: '请选择设备方向', trigger: 'change' }
]
},
uploadData: [
{
name: '图片1',
cover: require('@/assets/images/background.jpg'),
type: '为你推荐',
direction: 0,
agency: '全部',
date: '2022-1-1 15:00',
publisher: '张三',
enabled: false
}
]
// lsit
tabItem: [],
activeIndex: 0,
}
},
mounted() {
mounted () {
this.getHeaderList()
},
methods: {
getHeaderList () {
const { orga_id } = this
reqHeaderList(orga_id).then(res => {
if (res.code == 200) {
this.tabItem = res.data
}
})
},
tabHandleClick (tab, event) {
console.log(tab.index)
this.activeIndex = tab.index
},
// btn
multiSelectBtn() {
multiSelectBtn () {
this.isMultiSelected = !this.isMultiSelected
if (this.isMultiSelected) {
this.mulitText = '取消'
@ -250,57 +149,101 @@ export default {
}
},
// -/
isStopHandle(index, row) {
isStopHandle (index, row) {
row.enabled = !row.enabled
},
addEdit(index) {
addEdit (index) {
this.addDialogVisible = true
index ? this.layerTitle = '编辑' : this.layerTitle = '新增'
index ? this.isAddEdit = 1 : this.isAddEdit = 0
// if (index) {
// this.layerTitle = ''
// this.isAddEdit = 1
// // this.classifyForm.selectName = 0
// } else {
// this.layerTitle = ''
// this.isAddEdit = 0
// }
},
uploadEdit(index, row) {
this.uploadDialogVisible = true
if (row) {
console.log(row.type)
this.uploadTitle = '编辑'
this.classifyForm.name = row.name
this.classifyForm.direction = row.direction
this.classifyForm.selectNameList.push(row.type)
// index ? this.layerTitle = '' : this.layerTitle = ''
// index ? this.isAddEdit = 1 : this.isAddEdit = 0
if (index == 1) {
this.layerTitle = '编辑'
this.isAddEdit = 1
console.log(this.tabItem)
console.log(this.tabItem[this.activeIndex])
this.classifyForm.class_name = this.tabItem[this.activeIndex].class_name
// this.tabItem.map(item => {
// this.classifyForm.id = item.id
// this.classifyForm.class_name = item.class_name
// })
console.log('`···············')
console.log(this.classifyForm.id)
console.log(this.classifyForm.class_name)
if (this.classifyForm.is_all) {
this.classifyForm.is_all_name == '全部'
this.classifyForm.orga_ids = []
} else {
this.classifyForm.is_all_name == '武汉图书馆'
}
} else {
this.uploadTitle = '上传'
this.layerTitle = '新增'
this.isAddEdit = 0
this.classifyForm.id = null
this.classifyForm.class_name = ''
this.classifyForm.is_all_name = ''
}
},
selectName(vId) {
let obj = {}
obj = this.nameOptions.find((item) => {
return item.value === vId
})
this.classifyForm.selectName = obj.value
//
upload () {
//
this.$refs.ThemeGalleryList.saveMaterial()
},
selectName (vId) {
this.classifyForm.id = vId.id
this.classifyForm.class_name = vId.class_name
// let obj = {}
// obj = this.tabItem.find((item) => {
// return item.class_name === vId
// })
// this.classifyForm.class_name = obj.class_name
},
//
submitForm(formName) {
submitForm (formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!')
const params = {
class_name: this.classifyForm.class_name,
is_all: this.classifyForm.is_all,
id: this.classifyForm.id,
orga_ids: ["133221333123111"],
}
reqAddOrEdit(params).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: this.classifyForm.id ? '编辑成功' : '新增成功'
})
this.addDialogVisible = false
this.getHeaderList()
}
})
} else {
console.log('error submit!!')
return false
}
})
},
resetForm(formName) {
resetForm (formName) {
this.addDialogVisible = false
this.uploadDialogVisible = false
this.$refs[formName].resetFields()
}
},
//
selectorganization (selVal) {
this.classifyForm.is_all = selVal.key
this.classifyForm.is_all_name = selVal.name
},
// tabClick
tabItemClick (tab, event) {
console.log(this.themeItemActive)
console.log(tab, event)
},
}
}
@ -310,27 +253,27 @@ export default {
position: relative;
padding: 0;
background: none;
::v-deep .el-tabs{
::v-deep .el-tabs {
height: 55px;
padding: 0 24px;
margin-bottom: 24px;
line-height: 55px;
background: #fff;
}
::v-deep .el-tabs__nav-wrap::after{
::v-deep .el-tabs__nav-wrap::after {
display: none;
}
::v-deep .el-tabs__active-bar{
::v-deep .el-tabs__active-bar {
display: none;
}
::v-deep .theme_item_tab{
::v-deep .theme_item_tab {
margin-bottom: 0;
.el-tabs__header{
.el-tabs__header {
margin-bottom: 0;
border-bottom: 1px solid #eee;
}
}
::v-deep .theme_img{
::v-deep .theme_img {
align-content: flex-start;
height: calc(100vh - 246px);
padding: 18px 24px 0 24px;
@ -341,23 +284,23 @@ export default {
top: 93px;
}
}
.upload_layer{
.query_history{
.upload_layer {
.query_history {
display: flex;
}
::v-deep .el-dialog__body {
.el-form-item__label{
.el-form-item__label {
height: 30px;
line-height: 30px;
}
.el-input__inner{
.el-input__inner {
height: 30px;
line-height: 30px;
}
.el-range-separator{
.el-range-separator {
line-height: 26px;
}
.el-checkbox__label{
.el-checkbox__label {
line-height: 30px;
}
}

323
src/views/components/ThemeGalleryList.vue

@ -1,18 +1,71 @@
<template>
<div>
<el-tabs v-model="activeName" @tab-click="tabHandleClick">
<el-tab-pane
v-for="item in tabItem"
:key="item.key"
:label="item.name"
:name="item.key"
/>
</el-tabs>
<el-tabs v-if="showItemInfo" v-model="themeItemActive" class="theme_item_tab" @tab-click="tabItemClick">
<el-tab-pane label="竖屏" name="1" />
<el-tab-pane label="横屏" name="2" />
<el-tab-pane label="我的画册" name="3" />
</el-tabs>
<!-- 平台技术人员-上传 -->
<el-dialog append-to-body :show-close="false" :visible.sync="uploadDialogVisible" :title="uploadTitle" class="upload_layer">
<el-form ref="classifyForm" :model="classifyForm" :rules="rules" size="small" label-width="80px">
<el-form-item label="类别名称" prop="tabItem">
<el-checkbox-group v-model="classifyForm.selectNameList" @change="handleCheckedCitiesChange">
<el-checkbox v-for="item in tabItem" :key="item.id" :label="item.id">{{ item.class_name }}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="设备方向" prop="direction">
<el-radio-group v-model="classifyForm.direction" @change="clearCheckbox()">
<el-radio :label="0">横屏</el-radio>
<el-radio :label="1">竖屏</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="文件名称">
<el-input v-model="classifyForm.name" style="width:336px" />
</el-form-item> -->
<el-form-item label="上传内容" prop="img_path">
<img :src="imgSrc" alt="">
<Upload ref="uploadMaterial" @saveMaterial="saveMaterial" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="submitForm('classifyForm')">新增</el-button>
<el-button round @click="resetForm('classifyForm')">关闭</el-button>
</div>
</el-dialog>
<!-- 上传历史layer -->
<div class="upload_layer">
<el-dialog title="上传历史" :close-on-click-modal="false" :visible.sync="uploadListVisible" height="384px">
<el-form ref="form" :model="form" label-width="80px" class="query_history">
<el-form-item label="文件名称">
<el-input v-model="form.name" style="width:200px" />
</el-form-item>
<el-form-item label="时间">
<el-date-picker v-model="form.date" type="daterange" range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
</el-form>
<el-table :data="uploadData" :header-cell-style="{ color: '#333' }">
<el-table-column align="center" prop="name" label="文件名称" />
<el-table-column align="center" prop="cover" label="发布内容">
<template slot-scope="scope">
<div>
<img width="48px" height="64px" size="medium" :src="scope.row.cover" />
</div>
</template>
</el-table-column>
<el-table-column align="center" prop="type" label="类别名称" />
<el-table-column align="center" prop="direction" label="设备方向">
<template slot-scope="scope">
{{ scope.row.direction ? "竖屏" : "横屏" }}
</template>
</el-table-column>
<el-table-column align="center" prop="agency" label="所属机构" />
<el-table-column align="center" prop="date" label="上传时间" width="150" />
<el-table-column align="center" prop="publisher" label="发布人" />
<el-table-column align="center" prop="handle" label="操作">
<template slot-scope="scope">
<el-button type="primary" class="edit_btn" @click="saveMaterial(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>
</el-dialog>
</div>
<div class="theme_img">
<!-- 我的画册-创建文件夹btn -->
<div v-if="themeItemActive=='3'" class="theme_mkdir cont_upload" @click="handleMkdir">
@ -32,15 +85,8 @@
<p class="file_name">文件夹</p>
</div>
<!-- 主题库list -->
<div
v-for="(item, index) in listThemeData"
:key="index"
:class="['theme_item', { 'item_multi': selectedListIds.includes(item.id) }]"
>
<img
:src="item.coverImg"
alt
/>
<div v-for="(item, index) in listThemeData" :key="index" :class="['theme_item', { 'item_multi': selectedListIds.includes(item.id) }]">
<img :src="item.coverImg" alt />
<div v-if="showItemInfo" class="item_format">
<span class="item_type">{{ item.type }}</span>
<span v-if="item.type !== 'JPG'" class="item_time">03:00</span>
@ -60,22 +106,11 @@
</div>
<!-- 创建文件夹layer / 编辑 -->
<div class="publish_layer">
<el-dialog
title="创建文件夹"
:close-on-click-modal="false"
:show-close="false"
:visible.sync="mkdirVisible"
width="616px"
height="384px"
>
<el-dialog title="创建文件夹" :close-on-click-modal="false" :show-close="false" :visible.sync="mkdirVisible" width="616px" height="384px">
<el-form ref="form" :inline="true" :model="form" size="small" label-width="100px">
<el-form-item
label="文件夹名称"
prop="name"
:rules="[
<el-form-item label="文件夹名称" prop="name" :rules="[
{ required: true, message: '请输入名称', trigger: 'blur' }
]"
>
]">
<el-input v-model="form.name" style="width: 336px" />
</el-form-item>
<el-form-item label="封面" prop="file">
@ -97,21 +132,9 @@
<!-- 移动至layer -->
<div class="wjj_layer">
<!-- width="736px" -->
<el-dialog
title="移动至"
:close-on-click-modal="false"
:show-close="false"
:visible.sync="movingVisible"
width="576px"
height="384px"
>
<el-dialog title="移动至" :close-on-click-modal="false" :show-close="false" :visible.sync="movingVisible" width="576px" height="384px">
<div class="wjj_list">
<div
v-for="(item, index) in wjjList"
:key="index"
:class="['wjj_item', { 'wjj_item_active': movingChecked === index }]"
@click="wjjSelected(index)"
>
<div v-for="(item, index) in wjjList" :key="index" :class="['wjj_item', { 'wjj_item_active': movingChecked === index }]" @click="wjjSelected(index)">
<svg class="font-icon icon" aria-hidden="true">
<use xlink:href="#icon-wenjianjia" />
</svg>
@ -128,9 +151,13 @@
</div>
</template>
<script>
import { reqThemeGallery, reqHeaderList } from "@/api/theme/theme.js";
import { saveMaterial } from '@/api/material/material'
import Upload from './upload'
import UploadCover from './upload_cover'
export default {
name: 'ThemeGalleryList',
components: { UploadCover, Upload },
props: {
isMultiSelected: {
type: Boolean,
@ -145,9 +172,37 @@ export default {
required: true
}
},
data() {
data () {
return {
activeName: '1',
orga_id: '133221333123111', // ID
// queryInfo: {
// theme_name: '',//
// theme_class: '', //
// device_direction: null,//
// orga_id: 133221333123111,
// start_time: '', //
// end_time: '', //
// folder_id: '',//id
// page: 1,
// size: 3
// },
// id
class_ids: [],
// lsit
tabItem: [],
uploadFileUrl: null, //
classifyForm: {
class_name: '',
is_all_name: '',
is_all: false,
id: '',
orga_ids: ["133221333123111"],
selectName: null,
direction: null,
selectNameList: [],
img_path: ''
},
total: 0,
themeItemActive: '1',
mkdirVisible: false,
movingVisible: false,
@ -157,6 +212,8 @@ export default {
name: '',
file: null
},
themeGalleryList: [],//
listThemeData: [
{
id: '1',
@ -209,40 +266,6 @@ export default {
}
],
selectedListIds: [],
tabItem: [
{
key: '1',
name: '为你推荐'
},
{
key: '2',
name: '人工智能'
},
{
key: '3',
name: '党建文化'
},
{
key: '4',
name: '节日节气'
},
{
key: '5',
name: '艺术鉴赏'
},
{
key: '6',
name: '名人介绍'
},
{
key: '7',
name: '摄影'
},
{
key: '8',
name: '书法'
}
],
wjjList: [
{
id: '1',
@ -252,43 +275,118 @@ export default {
id: '2',
name: '文件夹2'
}
]
],
uploadDialogVisible: false,
uploadTitle: '上传',
rules: {
// name: [{ required: true, message: '', trigger: 'blur' }],
selectName: [
{ required: true, message: '请选择类别名称', trigger: 'change' }
],
selectNameList: [
{ required: true, message: '请选择类别名称', trigger: 'change' }
],
is_all: [
{ required: true, message: '请选择所属机构', trigger: 'change' }
],
direction: [
{ required: true, message: '请选择设备方向', trigger: 'change' }
]
},
uploadListVisible: false,
uploadData: [
{
name: '图片1',
cover: require('@/assets/images/background.jpg'),
type: '为你推荐',
direction: 0,
agency: '全部',
date: '2022-1-1 15:00',
publisher: '张三',
enabled: false
}
],
imgSrc: ''
}
},
watch: {
isMultiSelected(newName, oldName) {
isMultiSelected (newName, oldName) {
if (newName === false) {
this.selectedListIds = []
}
}
},
mounted() {
mounted () {
// this.getThemeGallery()
this.getHeaderList()
},
methods: {
// tabClick
tabHandleClick(tab, event) {
console.log(tab, event)
// list
// getThemeGallery () {
// const params = this.queryInfo
// reqThemeGallery(params).then(res => {
// if (res.code == 200) {
// this.themeGalleryList = res.data.content
// this.total = res.data.reqThemeGallery
// }
// })
// },
getHeaderList () {
const { orga_id } = this
reqHeaderList(orga_id).then(res => {
if (res.code == 200) {
this.tabItem = res.data
}
})
},
//
handleCheckedCitiesChange (val) {
const class_ids = []
val.forEach(item => {
class_ids.push(item)
})
console.log(class_ids)
},
tabItemClick(tab, event) {
console.log(this.themeItemActive)
console.log(tab, event)
//
saveMaterial () {
this.uploadDialogVisible = true
this.$nextTick(() => {
this.imgSrc = this.$refs.uploadMaterial.uploadFileUrl
console.log(this.$refs.uploadMaterial.uploadFileUrl)
})
// if (row) {
// console.log(row.type)
// this.uploadTitle = ''
// this.classifyForm.name = row.name
// this.classifyForm.direction = row.direction
// this.classifyForm.selectNameList.push(row.type)
// } else {
// this.uploadTitle = ''
// }
},
resetForm (formName) {
this.addDialogVisible = false
this.uploadDialogVisible = false
this.$refs[formName].resetFields()
},
//
handleMkdir() {
handleMkdir () {
this.mkdirVisible = true
},
//
moveingTo(index) {
moveingTo (index) {
this.movingVisible = true
// this.movingChecked = index
},
//
wjjSelected(index) {
wjjSelected (index) {
this.movingChecked = index
console.log(this.movingChecked)
},
//
selectedItem(id) {
selectedItem (id) {
const arr = this.selectedListIds
// includes(),truefalseNaN
if (arr.includes(id)) {
@ -302,57 +400,56 @@ export default {
}
},
// /
publishHandle(index) {
publishHandle (index) {
this.$router.push(
{
path: '/release', query: { tag: index }
}
)
}
},
}
}
</script>
<style lang="scss" scoped>
.el-tabs{
.el-tabs {
margin-bottom: 0;
}
::v-deep .el-tabs__item.is-active{
::v-deep .el-tabs__item.is-active {
color: #3a8aeb;
}
.theme_img {
.theme_mkdir{
.theme_mkdir {
width: 140px;
height: 250px;
margin: 0 24px 24px 0;
&.cont_upload .font-icon{
&.cont_upload .font-icon {
width: 45px;
height: 45px;
margin-bottom: 20px;
}
&.folder .font-icon{
&.folder .font-icon {
width: 84px;
height: 69px;
}
}
.theme_item{
.theme_item {
width: 140px;
height: 250px;
}
.icon_bg {
height: 220px;
}
.theme_item{
.file_name{
.theme_item {
.file_name {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 30px;
background: rgba(255,255,255,0.6);
background: rgba(255, 255, 255, 0.6);
line-height: 30px;
}
}
}
</style>

2
src/views/device/deviceConfig.vue

@ -393,7 +393,7 @@ export default {
message: '清空成功',
type: 'success'
})
this.getStartUpList(this.deviceList.length > 1 ? this.queryInfo.page : this.queryInfo.page - 1)
this.getStartUpList(this.startUpList.length > 1 ? this.queryInfo.page : this.queryInfo.page - 1)
}
}).catch(() => {
this.$message({

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

@ -3,26 +3,11 @@
<el-row :gutter="15">
<el-col>
<!-- v-loading="crud.loading" -->
<el-table
ref="table"
:data="urgentMessage"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
@selection-change="handleSelectionChange"
>
<el-table ref="table" :data="urgentMessage" :header-cell-style="{ background: '#3a8aeb', color: '#fff' }" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<!-- prop="name" -->
<el-table-column
label="序号"
type="index"
align="center"
width="50"
/>
<el-table-column
label="发布内容"
align="center"
prop="context"
width="400"
>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="发布内容" align="center" prop="context" width="400">
<template slot-scope="{ row }">
<div>{{ row.context }}</div>
</template>
@ -41,194 +26,73 @@
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
width="120px"
align="center"
fixed="right"
>
<el-table-column label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<el-button
type="primary"
class="edit_btn"
@click="editFormData(scope.row)"
>编辑</el-button>
<el-button
type="primary"
:class="['start_btn', { stop_btn: scope.row.is_state == 1 }]"
@click="isStopHandle(scope.$index, scope.row)"
>{{ scope.row.is_state == 1 ? "停止" : "恢复" }}</el-button>
<el-button type="primary" class="edit_btn" @click="editFormData(scope.row)">编辑</el-button>
<el-button type="primary" :class="['start_btn', { stop_btn: scope.row.is_state == 1 }]" @click="isStopHandle(scope.$index, scope.row)">{{ scope.row.is_state == 1 ? "停止" : "恢复" }}</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<!-- 分页器 -->
<el-pagination
style="margin-top: 20px; text-align: center"
:current-page="queryInfo.page"
:total="total"
:page-size="queryInfo.size"
:pager-count="5"
:page-sizes="[3, 5, 10]"
layout="prev, pager, next, jumper,->,sizes,total"
@current-change="getUrgentMessage"
@size-change="handleSizeChange"
/>
<el-pagination style="margin-top: 20px; text-align: center" :current-page="queryInfo.page" :total="total" :page-size="queryInfo.size" :pager-count="5" :page-sizes="[3, 5, 10]" layout="prev, pager, next, jumper,->,sizes,total" @current-change="getUrgentMessage" @size-change="handleSizeChange" />
<!-- 编辑紧急通知 -->
<div class="publish_layer">
<el-dialog
title="紧急发布"
:close-on-click-modal="false"
:show-close="false"
:visible.sync="messageVisible"
width="872px"
>
<el-dialog :title="form.notice_id==null? '紧急发布':'编辑'" :close-on-click-modal="false" :show-close="false" :visible.sync="messageVisible" width="872px">
<el-form ref="form" :model="form" size="small" label-width="100px">
<el-form-item
label="文本颜色"
prop="context_color"
:rules="[
<el-form-item label="文本颜色" prop="context_color" :rules="[
{ required: true, message: '请选择文本颜色', trigger: '' },
]"
>
<colorPicker
v-model="form.context_color"
class="txt_color"
@change="headleChangeColor"
/>
]">
<colorPicker v-model="form.context_color" class="txt_color" @change="headleChangeColor" />
<el-input v-show="false" v-model="form.context_color" />
</el-form-item>
<el-form-item
label="文本内容"
prop="context"
:rules="[
<el-form-item label="文本内容" prop="context" :rules="[
{ required: true, message: '请输入文本内容', trigger: 'blur' },
]"
>
<el-input
v-model="form.context"
type="textarea"
rows="6"
style="width: 674px"
/>
]">
<el-input v-model="form.context" type="textarea" rows="6" style="width: 674px" />
</el-form-item>
<el-form-item
label="文本大小"
prop="context_size_name"
:rules="[
<el-form-item label="文本大小" prop="context_size_name" :rules="[
{ required: true, message: '请选择文本大小', trigger: 'change' },
]"
>
<el-select
v-model="form.context_size_name"
size="small"
class="filter-item"
@change="selectSize"
>
<el-option
v-for="item in sizeData"
:key="item.key"
:label="item.name"
:value="item"
/>
]">
<el-select v-model="form.context_size_name" size="small" class="filter-item" @change="selectSize">
<el-option v-for="item in sizeData" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
<el-form-item
label="文本位置"
prop="context_position_name"
:rules="[
<el-form-item label="文本位置" prop="context_position_name" :rules="[
{ required: true, message: '请选择文本位置', trigger: 'change' },
]"
>
<el-select
v-model="form.context_position_name"
size="small"
value-key="name"
class="filter-item"
@change="selectPosition"
>
<el-option
v-for="item in positionData"
:key="item.key"
:label="item.name"
:value="item"
/>
]">
<el-select v-model="form.context_position_name" size="small" value-key="name" class="filter-item" @change="selectPosition">
<el-option v-for="item in positionData" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
<el-form-item
label="滚动速度"
prop="context_speed_name"
:rules="[
<el-form-item label="滚动速度" prop="context_speed_name" :rules="[
{ required: true, message: '请选择滚动速度', trigger: 'change' },
]"
>
<el-select
v-model="form.context_speed_name"
size="small"
class="filter-item"
@change="selectSpeed"
>
<el-option
v-for="item in speedData"
:key="item.key"
:label="item.name"
:value="item"
/>
]">
<el-select v-model="form.context_speed_name" size="small" class="filter-item" @change="selectSpeed">
<el-option v-for="item in speedData" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
<el-form-item
label="选择设备"
prop="notice_device"
:rules="[
<el-form-item label="选择设备" prop="notice_device" :rules="[
{ required: true, message: '请选择设备', trigger: 'change' },
]"
>
<el-radio-group
v-model="form.notice_device"
@change="clearCheckbox()"
>
]">
<el-radio-group v-model="form.notice_device" @change="clearCheckbox()">
<el-radio :label="1" value="all">所有设备</el-radio>
<el-radio
:label="2"
value="other"
>部分设备<i
v-if="form.notice_device === 2"
class="radio_tip"
@click="addDeviceTag()"
>添加</i></el-radio>
<el-radio :label="2" value="other">部分设备<i v-if="form.notice_device === 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio>
</el-radio-group>
</el-form-item>
<div v-if="form.notice_device === 1" class="select_all_tip">
所有设备都将被发送
</div>
<div
v-if="deviceTags.length > 0 && form.notice_device === 2"
class="select_other"
>
<div v-if="deviceTags.length > 0 && form.notice_device === 2" class="select_other">
<el-row>
<el-col
:span="10"
class="other_tip"
>以下设备都将被发送<span>总计{{ deviceTags.length }}个设备</span></el-col>
<el-col :span="10" class="other_tip">以下设备都将被发送<span>总计{{ deviceTags.length }}个设备</span></el-col>
<el-col :span="4">
<el-button
round
class="delt_btn"
@click="clearDevice()"
>清空</el-button>
<el-button round class="delt_btn" @click="clearDevice()">清空</el-button>
</el-col>
</el-row>
<el-tag
v-for="tag in deviceTags"
:key="tag.device_id"
closable
:disable-transitions="true"
:hit="false"
context_color="#cbe3ff"
@close="handleClose(tag)"
>
<el-tag v-for="tag in deviceTags" :key="tag.device_id" closable :disable-transitions="true" :hit="false" context_color="#cbe3ff" @close="handleClose(tag)">
{{ tag.device_name }}
</el-tag>
</div>
@ -242,23 +106,9 @@
</el-dialog>
</div>
<!-- 添加发布的设备 -->
<!-- 添加发布的设备 -->
<div class="add_device_layer">
<el-dialog
title="请选择设备"
:close-on-click-modal="false"
:visible.sync="selectDeviceVisible"
width="400px"
>
<el-tag
v-for="tag in deviceList"
:key="tag.device_id"
:disable-transitions="true"
:hit="false"
color="#cbe3ff"
class="all_tags"
@click="tagHandle(tag)"
>
<el-dialog title="请选择设备" :close-on-click-modal="false" :visible.sync="selectDeviceVisible" width="400px">
<el-tag v-for="tag in deviceList" :key="tag.device_id" :disable-transitions="true" :hit="false" color="#cbe3ff" class="all_tags" @click="tagHandle(tag)">
{{ tag.device_name }}
</el-tag>
</el-dialog>
@ -278,11 +128,11 @@ import {
export default {
name: 'UrgentMessage',
filters: {
parseTime(time, cFormat) {
parseTime (time, cFormat) {
return parseTime(time, cFormat)
}
},
data() {
data () {
return {
isAddEdit: false,
form: {
@ -334,13 +184,13 @@ export default {
urgentMessage: []
}
},
mounted() {
mounted () {
this.getUrgentMessage()
this.getDevice()
},
methods: {
//
getUrgentMessage(pager = 1) {
getUrgentMessage (pager = 1) {
this.queryInfo.page = pager
const params = this.queryInfo
reqUrgentMessage(params).then((res) => {
@ -352,7 +202,7 @@ export default {
})
},
//
getDevice() {
getDevice () {
const params = this.queryInfo
ReqDeviceList(params).then((res) => {
if (res.code == 200) {
@ -364,7 +214,7 @@ export default {
},
// is_state1 2
// row.is_state == 1 ? "" : ""
isStopHandle(index, row) {
isStopHandle (index, row) {
console.log(row)
// console.log(index)
if (row.is_state == 1) {
@ -396,7 +246,7 @@ export default {
})
},
//
editFormData(row) {
editFormData (row) {
this.messageVisible = true
// id
const params = {
@ -440,14 +290,14 @@ export default {
})
},
//
addFormData() {
addFormData () {
this.messageVisible = true
this.$nextTick(() => {
this.form.notice_id = null
})
},
//
submit() {
submit () {
this.$refs.form.validate((valid) => {
//
if (valid) {
@ -478,13 +328,13 @@ export default {
})
},
//
clearCheckbox() {
clearCheckbox () {
if (this.form.notice_device == 1) {
this.form.notice_devices = []
}
},
//
handleSelectionChange(val) {
handleSelectionChange (val) {
this.selectedList = val
// if (val.length > 0) {
// this.clearBtnDisabled = false;
@ -493,30 +343,31 @@ export default {
// }
},
//
headleChangeColor() {
headleChangeColor () {
this.form.context_size
},
//
selectSize(selVal) {
selectSize (selVal) {
this.form.context_size = selVal.key
this.form.context_size_name = selVal.name
},
//
selectPosition(selVal) {
selectPosition (selVal) {
console.log(selVal)
this.form.context_position = selVal.key
this.form.context_position_name = selVal.name
},
//
selectSpeed(selVal) {
selectSpeed (selVal) {
this.form.context_speed = selVal.key
this.form.context_speed_name = selVal.name
},
//
addDeviceTag() {
addDeviceTag () {
this.selectDeviceVisible = true
},
//
tagHandle(tag) {
tagHandle (tag) {
//
if (this.form.notice_devices.length == 0) {
this.form.notice_devices.push({ deviceId: tag.device_id })
@ -534,8 +385,8 @@ export default {
this.deviceTags.push(tag)
} else {
const current =
this.deviceTags &&
this.deviceTags.some((item) => item.device_name == tag.device_name)
this.deviceTags &&
this.deviceTags.some((item) => item.device_name == tag.device_name)
if (!current) {
this.deviceTags.push(tag)
} else {
@ -546,20 +397,20 @@ export default {
}
},
//
handleClose(tag) {
handleClose (tag) {
this.deviceTags.splice(this.deviceTags.indexOf(tag), 1)
},
//
clearDevice() {
clearDevice () {
this.deviceTags = []
},
//
closeDialog() {
closeDialog () {
this.messageVisible = false
this.$refs.form.resetFields()
},
//
handleSizeChange(size) {
handleSizeChange (size) {
//
this.queryInfo.size = size
this.getUrgentMessage()
@ -569,84 +420,84 @@ export default {
</script>
<style lang="scss" scoped>
.list_warp {
padding: 0 24px;
.stop_txt {
color: #3a8aeb;
}
}
.txt_color {
margin-top: 12px;
}
::v-deep .el-radio-group {
display: block;
.el-radio {
position: relative;
line-height: 40px;
.radio_tip {
position: absolute;
right: -45px;
top: 0;
display: block;
width: 42px;
height: 21px;
line-height: 21px;
font-size: 12px;
text-align: center;
color: #fff;
background: url(~@/assets/images/an-tj.png) no-repeat;
background-size: 42px 21px;
}
}
}
.select_all_tip {
width: 336px;
height: 32px;
line-height: 32px;
margin: -20px 0 0 100px;
padding: 0 14px;
font-size: 12px;
color: #999;
background: #fff;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.14);
}
.select_other {
width: 600px;
margin: -20px 0 0 100px;
padding: 18px 23px;
background: #f8f8f8;
border: 1px solid #dcdde3;
border-radius: 4px;
.other_tip {
line-height: 24px;
span {
display: inline-block;
margin-left: 20px;
}
}
.el-button {
padding: 5px 8px;
border: none !important;
}
.delt_btn {
color: #fff;
background-color: #ee5747 !important;
}
}
.el-tag--small {
height: 28px;
line-height: 26px;
padding: 0 24px;
margin: 18px 16px 0 0;
font-size: 14px;
// color: #3a8aeb;
::v-deep .el-icon-close {
font-size: 16px;
}
}
.add_device_layer {
::v-deep .el-dialog__body {
padding: 0 20px 30px 20px;
}
}
.list_warp {
padding: 0 24px;
.stop_txt {
color: #3a8aeb;
}
}
.txt_color {
margin-top: 12px;
}
::v-deep .el-radio-group {
display: block;
.el-radio {
position: relative;
line-height: 40px;
.radio_tip {
position: absolute;
right: -45px;
top: 0;
display: block;
width: 42px;
height: 21px;
line-height: 21px;
font-size: 12px;
text-align: center;
color: #fff;
background: url(~@/assets/images/an-tj.png) no-repeat;
background-size: 42px 21px;
}
}
}
.select_all_tip {
width: 336px;
height: 32px;
line-height: 32px;
margin: -20px 0 0 100px;
padding: 0 14px;
font-size: 12px;
color: #999;
background: #fff;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.14);
}
.select_other {
width: 600px;
margin: -20px 0 0 100px;
padding: 18px 23px;
background: #f8f8f8;
border: 1px solid #dcdde3;
border-radius: 4px;
.other_tip {
line-height: 24px;
span {
display: inline-block;
margin-left: 20px;
}
}
.el-button {
padding: 5px 8px;
border: none !important;
}
.delt_btn {
color: #fff;
background-color: #ee5747 !important;
}
}
.el-tag--small {
height: 28px;
line-height: 26px;
padding: 0 24px;
margin: 18px 16px 0 0;
font-size: 14px;
// color: #3a8aeb;
::v-deep .el-icon-close {
font-size: 16px;
}
}
.add_device_layer {
::v-deep .el-dialog__body {
padding: 0 20px 30px 20px;
}
}
</style>
Loading…
Cancel
Save