Browse Source

发布列表-编辑发布

dev
xuhuajiao 3 years ago
parent
commit
ddb48bfe7d
  1. 9
      src/api/material/material.js
  2. 53
      src/api/release/release.js
  3. 32
      src/utils/index.js
  4. 2
      src/views/components/MaterialCompontentList.vue
  5. 129
      src/views/immediateRelease/index.vue
  6. 17
      src/views/materialContent/materialList/index.vue
  7. 29
      src/views/publishContent/index.vue
  8. 144
      src/views/publishContent/publishList/index.vue

9
src/api/material/material.js

@ -62,3 +62,12 @@ export function getMaterialByType(parameter) {
params: parameter params: parameter
}) })
} }
// 根据素材id获取素材 - 素材库
export function FetchFindMaterialById(parameter) {
return request({
url: 'api/material/findMaterialById',
method: 'post',
data: parameter
})
}

53
src/api/release/release.js

@ -1,28 +1,55 @@
import request from "@/utils/request";
import request from '@/utils/request'
// 编辑 - 发布信息 // 编辑 - 发布信息
export function FetchSaveRelease(parameter) { export function FetchSaveRelease(parameter) {
return request({ return request({
url: "api/release/saveRelease",
method: "post",
data: parameter,
});
url: 'api/release/saveRelease',
method: 'post',
data: parameter
})
} }
// list - 发布 // list - 发布
export function FetchGetReleaseList(parameter) { export function FetchGetReleaseList(parameter) {
return request({ return request({
url: "api/release/getReleaseList",
method: "get",
params: parameter,
});
url: 'api/release/getReleaseList',
method: 'get',
params: parameter
})
} }
// 根据id查询发布详细信息 // 根据id查询发布详细信息
export function FetchGetReleaseDetailsById(parameter) { export function FetchGetReleaseDetailsById(parameter) {
return request({ return request({
url: "api/release/getReleaseDetailsById",
method: "get",
params: parameter,
});
url: 'api/release/getReleaseDetailsById',
method: 'get',
params: parameter
})
}
// 改变发布状态
export function FetchUpdateReleaseState(parameter) {
return request({
url: 'api/release/updateReleaseState',
method: 'post',
data: parameter
})
}
// 删除发布信息
export function FetchDeleteRelease(parameter) {
return request({
url: 'api/release/deleteRelease',
method: 'post',
data: parameter
})
}
// 发布是否置顶
export function FetchToppingRelease(parameter) {
return request({
url: 'api/release/toppingRelease',
method: 'post',
data: parameter
})
} }

32
src/utils/index.js

@ -383,6 +383,22 @@ export function downloadFile(obj, name, suffix) {
document.body.removeChild(link) document.body.removeChild(link)
} }
export function getNowFormatDate() {
var date = new Date()
var seperator1 = '-'
var year = date.getFullYear()
var month = date.getMonth() + 1
var strDate = date.getDate()
if (month >= 1 && month <= 9) {
month = '0' + month
}
if (strDate >= 0 && strDate <= 9) {
strDate = '0' + strDate
}
var currentdate = year + seperator1 + month + seperator1 + strDate
return currentdate
}
// 秒数转时分秒格式 h:m:s // 秒数转时分秒格式 h:m:s
export function getSeconds(s) { export function getSeconds(s) {
if (s != null) { if (s != null) {
@ -431,3 +447,19 @@ export function formatBytes(bytes, decimals) {
var i = Math.floor(Math.log(bytes) / Math.log(k)) var i = Math.floor(Math.log(bytes) / Math.log(k))
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i] return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
} }
// 将数字转成一,二
export function setWeekly(str) {
const a = {
1: '一',
2: '二',
3: '三',
4: '四',
5: '五',
6: '六',
7: '七'
}
if (str) {
return str.split(',').map(i => a[i]).join('/')
}
}

2
src/views/components/MaterialCompontentList.vue

@ -165,7 +165,7 @@ export default {
}, },
// - // -
checkedItem(item) { checkedItem(item) {
let id = item.material_id
const id = item.material_id
const inFolderId = item.in_folder_id const inFolderId = item.in_folder_id
const type = item.material_type const type = item.material_type
const arr = this.selectedListId const arr = this.selectedListId

129
src/views/immediateRelease/index.vue

@ -21,15 +21,27 @@
<el-row class="in_release_item"> <el-row class="in_release_item">
<el-col class="step_1">第一步设置时间</el-col> <el-col class="step_1">第一步设置时间</el-col>
<el-col class="step_form"> <el-col class="step_form">
<el-form-item label="发布时间" prop="release_start" :rules="[
<el-form-item
label="发布时间"
prop="release_start"
:rules="[
{ required: true, message: '请选择发布时间', trigger: 'change' } { required: true, message: '请选择发布时间', trigger: 'change' }
]" label-width="100px">
]"
label-width="100px"
>
<el-date-picker v-if="publishType == 0" v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="date" placeholder="选择日期" /> <el-date-picker v-if="publishType == 0" v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="date" placeholder="选择日期" />
<el-date-picker v-else v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" /> <el-date-picker v-else v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item v-if="publishType == 1" label="设置周期" prop="release_cycle" :rules="[
<el-form-item
v-if="publishType == 1"
label="设置周期"
prop="release_cycle"
:rules="[
{ required: true, message: '请设置周期', trigger: 'change' }, { required: true, message: '请设置周期', trigger: 'change' },
]" :class="['set_weekly',{'no_margin': form.release_cycle == 2}]" label-width="100px">
]"
:class="['set_weekly',{'no_margin': form.release_cycle == 2}]"
label-width="100px"
>
<el-radio-group v-model="form.release_cycle" @change="clearCheckbox()"> <el-radio-group v-model="form.release_cycle" @change="clearCheckbox()">
<el-radio :label="1">每天</el-radio> <el-radio :label="1">每天</el-radio>
<el-radio :label="2">每周</el-radio> <el-radio :label="2">每周</el-radio>
@ -61,16 +73,16 @@
<div class="step_select_list"> <div class="step_select_list">
<div class="step_upload" @click="selectContVisible = true"></div> <div class="step_upload" @click="selectContVisible = true"></div>
<draggable v-model="selectedMaterial" class="drag_list" @end="dragEnd"> <draggable v-model="selectedMaterial" class="drag_list" @end="dragEnd">
<div v-for="(item, index) in selectedMaterial" :key="'list-'+index" :class="['material_item', 'item_cont']" @click="clickMaterialItem(item.material_id,item)">
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt />
<div v-if="!item.img_path && item.material_type == 2" class="radio_img"></div>
<div v-for="(item, index) in selectedMaterial" :key="'list-'+index" :class="['material_item', 'item_cont']" @click="clickMaterialItem((item.material_id||item.id),item)">
<img v-if="(item.img_path|| item.imgPath) || (item.material_type == 1 || item.type == 1)" :src="(item.img_path||item.imgPath)" :onerror="defaultImg" alt />
<div v-if="(!item.img_path|| !item.imgPath) && (item.material_type == 2|| item.type == 2)" class="radio_img"></div>
<div class="item_format"> <div class="item_format">
<span class="item_type">{{ materialPostfix[index] }}</span> <span class="item_type">{{ materialPostfix[index] }}</span>
<span v-if="item.material_type != '0'" class="item_time">{{ item.duration | getSeconds }}</span>
<span v-if="item.material_type != '0' || item.type != '0'" class="item_time">{{ item.duration | getSeconds }}</span>
</div> </div>
<div class="file_name">{{ item.material_name }}</div>
<div v-if="contentIds.includes(item.material_id)" class="select_handle">
<div class="select_delt" @click.stop="selectDelt(item.material_id,index)">
<div class="file_name">{{ item.material_name || item.name }}</div>
<div v-if="contentIds.includes((item.material_id||item.id))" class="select_handle">
<div class="select_delt" @click.stop="selectDelt((item.material_id||item.id),index)">
<svg class="font-icon icon1" aria-hidden="true"> <svg class="font-icon icon1" aria-hidden="true">
<use xlink:href="#icon-guanbi2" /> <use xlink:href="#icon-guanbi2" />
</svg> </svg>
@ -90,12 +102,16 @@
<el-row class="in_release_item"> <el-row class="in_release_item">
<el-col class="step_1">第三步选择设备</el-col> <el-col class="step_1">第三步选择设备</el-col>
<el-col class="step_form"> <el-col class="step_form">
<el-form-item label="" prop="release_device" :rules="[
<el-form-item
label=""
prop="release_device"
:rules="[
{ required: true, message: '请选择设备', trigger: 'change' }, { required: true, message: '请选择设备', trigger: 'change' },
]">
]"
>
<el-radio-group v-model="form.release_device" @change="clearDevice()"> <el-radio-group v-model="form.release_device" @change="clearDevice()">
<el-radio label="1">所有设备</el-radio>
<el-radio label="2">部分设备<i v-if="form.release_device == 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio>
<el-radio :label="1">所有设备</el-radio>
<el-radio :label="2">部分设备<i v-if="form.release_device == 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<div v-if="form.release_device == 1" class="select_all_tip">所有设备都将被发送</div> <div v-if="form.release_device == 1" class="select_all_tip">所有设备都将被发送</div>
@ -127,7 +143,7 @@
</li> </li>
</ul> </ul>
<div class="material_list" style="min-height: 260px"> <div class="material_list" style="min-height: 260px">
<MaterialList ref="MaterialList" :is-multi-selected="isMultiSelected" :mulit-text="mulitText" :activeItemIndex="activeItemIndex" />
<MaterialList ref="MaterialList" :is-multi-selected="isMultiSelected" :mulit-text="mulitText" :active-item-index="activeItemIndex" />
</div> </div>
</div> </div>
<!-- 主题库 --> <!-- 主题库 -->
@ -243,10 +259,10 @@
import draggable from 'vuedraggable' import draggable from 'vuedraggable'
import ThemeGalleryList from '../components/ThemeGalleryList.vue' import ThemeGalleryList from '../components/ThemeGalleryList.vue'
import MaterialList from '../components/MaterialCompontentList.vue' import MaterialList from '../components/MaterialCompontentList.vue'
import { getMaterialByType } from '@/api/material/material'
import { getMaterialByType, FetchFindMaterialById } from '@/api/material/material'
import { ReqDeviceList } from '@/api/device/deviceList.js' import { ReqDeviceList } from '@/api/device/deviceList.js'
import { FetchSaveRelease } from '@/api/release/release.js'
import { getSeconds, formatBytes } from '@/utils/index.js'
import { FetchSaveRelease, FetchGetReleaseDetailsById } from '@/api/release/release.js'
import { getSeconds, formatBytes, parseTime } from '@/utils/index.js'
export default { export default {
name: 'ImmediateRelease', name: 'ImmediateRelease',
components: { components: {
@ -305,7 +321,7 @@ export default {
// "rm_id": "id null" // "rm_id": "id null"
// } // }
release_materialDTOs: [], release_materialDTOs: [],
release_start: '', // yyyy-MM-dd HH:mm:ss
release_start: null, // yyyy-MM-dd HH:mm:ss
release_type: '' // release_type: '' //
}, },
contentIds: [], contentIds: [],
@ -381,7 +397,7 @@ export default {
} }
], ],
activeIndex: 0, activeIndex: 0,
activeItemIndex: 0,
activeItemIndex: 0
} }
}, },
computed: { computed: {
@ -414,15 +430,71 @@ export default {
} }
// list // list
this.ReqDeviceList() this.ReqDeviceList()
if (localStorage.getItem('releaseId')) {
this.editRelease()
}
}, },
methods: { methods: {
editRelease() {
const release_id = JSON.parse(localStorage.getItem('releaseId'))
const params = {
release_id: release_id
}
FetchGetReleaseDetailsById(params).then(res => {
if (res.code == 200) {
console.log(res.data)
const releaseInfo = res.data.release
this.form.orga_id = releaseInfo.orgaId
this.form.relaase_name = releaseInfo.relaaseName
this.form.release_cycle = releaseInfo.releaseCycle
if (this.form.release_cycle == 2) {
this.selectWeekly = releaseInfo.releaseWeekly.split(',')
}
this.form.is_topping = releaseInfo.isTopping
this.form.release_device = releaseInfo.releaseDevice
if (releaseInfo.releaseType == 1) {
const arr = []
arr.push(parseTime(releaseInfo.releaseStart))
arr.push(parseTime(releaseInfo.releaseEnd))
this.form.release_start = arr
} else {
this.form.release_start = parseTime(releaseInfo.releaseStart)
}
if (releaseInfo.actualEnd) {
this.form.actual_end = releaseInfo.actualEnd
}
this.form.bgm_main = releaseInfo.bgmMain
this.form.release_deviceDTOs = res.data.release_devices
// list
const materialIds = []
res.data.release_materials.map((item) => {
materialIds.push(item.materialId)
})
const params = {
ids: materialIds
}
FetchFindMaterialById(params).then(res => {
if (res.code == 200) {
console.log(res.data)
this.selectedMaterial = res.data
}
})
} else {
this.$message.error(res.msg)
}
})
},
// //
releaseSubmit(formName) { releaseSubmit(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
this.form.orga_id = this.orga_id this.form.orga_id = this.orga_id
//
this.form.release_type = this.publishType
// //
this.form.actual_end = this.publishType == 0 ? null : '' this.form.actual_end = this.publishType == 0 ? null : ''
//
if (this.form.release_device) { if (this.form.release_device) {
if (this.form.release_device == 1) { if (this.form.release_device == 1) {
this.form.release_deviceDTOs = [] this.form.release_deviceDTOs = []
@ -438,8 +510,7 @@ export default {
}) })
} }
} }
this.form.release_type = this.publishType
// - -
if (this.publishType == 0) { if (this.publishType == 0) {
this.form.release_cycle = 0 this.form.release_cycle = 0
this.form.release_weekly = null this.form.release_weekly = null
@ -453,6 +524,7 @@ export default {
this.form.release_start = arrDate[0] this.form.release_start = arrDate[0]
this.form.release_end = arrDate[1] this.form.release_end = arrDate[1]
} }
// localstoragelist
if (this.selectedMaterial) { if (this.selectedMaterial) {
this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => { this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => {
const json = {} const json = {}
@ -482,6 +554,7 @@ export default {
} else { } else {
this.form.bgm_main = null this.form.bgm_main = null
} }
//
FetchSaveRelease(this.form).then(res => { FetchSaveRelease(this.form).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$message.success('发布成功!') this.$message.success('发布成功!')
@ -494,10 +567,10 @@ export default {
this.$message.error('请选择发布内容!') this.$message.error('请选择发布内容!')
} }
} else { } else {
console.log('error submit!!');
return false;
console.log('error submit!!')
return false
} }
});
})
}, },
// //
ReqDeviceList() { ReqDeviceList() {
@ -596,7 +669,7 @@ export default {
// - // -
selectEdit() { selectEdit() {
this.listEditVisible = true this.listEditVisible = true
let form = {
const form = {
showTime: '15', showTime: '15',
showAnimation: '', showAnimation: '',
showAnimationName: '' showAnimationName: ''
@ -687,7 +760,7 @@ export default {
this.mulitText = '取消' this.mulitText = '取消'
// -list // -list
this.selectedMaterial.forEach(item => { this.selectedMaterial.forEach(item => {
this.$refs.MaterialList.selectedListId.push(item.material_id)
this.$refs.MaterialList.selectedListId.push(item.material_id || item.id)
this.$refs.MaterialList.selectedMaterial.push(item) this.$refs.MaterialList.selectedMaterial.push(item)
}) })
} else { } else {

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

@ -28,7 +28,7 @@
<!-- 素材库list --> <!-- 素材库list -->
<div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]"> <div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]">
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt /> <img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt />
<div v-if="item.material_type == 2" class="radio_img"></div>
<div v-if="!item.img_path && item.material_type == 2" class="radio_img"></div>
<div class="item_format"> <div class="item_format">
<span class="item_type">{{ materialPostfix[index] }}</span> <span class="item_type">{{ materialPostfix[index] }}</span>
<span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span> <span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span>
@ -42,9 +42,13 @@
<div class="publish_layer"> <div class="publish_layer">
<el-dialog :title="layerTitle" :close-on-click-modal="false" :show-close="false" :visible.sync="mkdirVisible" width="616px"> <el-dialog :title="layerTitle" :close-on-click-modal="false" :show-close="false" :visible.sync="mkdirVisible" width="616px">
<el-form ref="folderForm" :inline="true" :model="folderForm" size="small" label-width="100px"> <el-form ref="folderForm" :inline="true" :model="folderForm" size="small" label-width="100px">
<el-form-item :label="labelTxt" prop="name" :rules="[
<el-form-item
:label="labelTxt"
prop="name"
:rules="[
{ required: true, message: '请输入名称', trigger: 'blur' } { required: true, message: '请输入名称', trigger: 'blur' }
]">
]"
>
<el-input v-model="folderForm.name" style="width: 336px" /> <el-input v-model="folderForm.name" style="width: 336px" />
</el-form-item> </el-form-item>
<el-form-item v-if="formatType != 0" label="封面"> <el-form-item v-if="formatType != 0" label="封面">
@ -97,7 +101,7 @@
</template> </template>
<script> <script>
import { getMaterialList, saveMaterialFolder, deleteMaterialFolder, saveMaterial, deleteMyMaterial, moveMyMaterial, getMaterialByType } from '@/api/material/material'
import { getMaterialList, saveMaterialFolder, deleteMaterialFolder, saveMaterial, deleteMyMaterial, moveMyMaterial } from '@/api/material/material'
import Upload from '../../components/upload' import Upload from '../../components/upload'
import UploadCover from '../../components/upload_cover' import UploadCover from '../../components/upload_cover'
import { getSeconds } from '@/utils/index.js' import { getSeconds } from '@/utils/index.js'
@ -170,11 +174,6 @@ export default {
}, },
'$route.query.folderTag'(Val) { '$route.query.folderTag'(Val) {
console.log(Val) console.log(Val)
// if (Val) {
// this.isToFolder = true
// } else {
// this.isToFolder = false
// }
} }
}, },
mounted: function() { mounted: function() {

29
src/views/publishContent/index.vue

@ -1,35 +1,24 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="content_warp"> <div class="content_warp">
<el-tabs v-model="activeName"
@tab-click="handleClick">
<el-tab-pane label="发布列表"
name="first">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="发布列表" name="first">
<PublistList /> <PublistList />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="发布历史"
name="second">
<el-tab-pane label="发布历史" name="second">
<HistoryList /> <HistoryList />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="紧急通知"
name="third">
<el-tab-pane label="紧急通知" name="third">
<UrgentMessage ref="message" /> <UrgentMessage ref="message" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div v-if="activeName !== 'third'"
class="home_publish_btn">
<el-button round
@click="publishHandle(0)">即时发布</el-button>
<el-button round
type="primary"
@click="publishHandle(1)">定时发布</el-button>
<div v-if="activeName !== 'third'" class="home_publish_btn">
<el-button round class="el_button_red" @click="publishHandle(0)">即时发布</el-button>
<el-button round type="primary" @click="publishHandle(1)">定时发布</el-button>
</div> </div>
<div v-else
class="home_publish_btn">
<el-button type="primary"
round
@click="addMessage">紧急发布</el-button>
<div v-else class="home_publish_btn">
<el-button type="primary" round @click="addMessage">紧急发布</el-button>
</div> </div>
</div> </div>
</template> </template>

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

@ -2,7 +2,7 @@
<div class="list_warp"> <div class="list_warp">
<el-row :gutter="15"> <el-row :gutter="15">
<el-col> <el-col>
<el-table ref="table" :data="publishList" :header-cell-style="{ background: '#3a8aeb', color: '#fff' }" class="publish_table" @selection-change="handleSelectionChange">
<el-table ref="table" :data="publishList" :header-cell-style="{ background: '#3a8aeb', color: '#fff' }" class="publish_table">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="文件名称" align="center" prop="relaase_name" /> <el-table-column label="文件名称" align="center" prop="relaase_name" />
<el-table-column label="发布内容" align="center" prop="content"> <el-table-column label="发布内容" align="center" prop="content">
@ -15,7 +15,8 @@
<el-table-column label="发布时间" align="center" prop="date" width="200px"> <el-table-column label="发布时间" align="center" prop="date" width="200px">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.release_type==0">{{ scope.row.release_start }}</div> <div v-if="scope.row.release_type==0">{{ scope.row.release_start }}</div>
<div v-else>{{scope.row.release_start+" "+scope.row.release_end}}</div>
<div v-else-if="scope.row.release_cycle==2">{{ scope.row.release_start+" 至 "+scope.row.release_end +'每周'+ scope.row.release_weekly }}</div>
<div v-else>{{ scope.row.release_start+" "+scope.row.release_end +'每天' }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发布类型" align="center" prop="type"> <el-table-column label="发布类型" align="center" prop="type">
@ -24,10 +25,10 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发布人" align="center" prop="nick_name" /> <el-table-column label="发布人" align="center" prop="nick_name" />
<el-table-column label="状态" align="center" prop="enabled">
<el-table-column label="状态" align="center" prop="is_state">
<template slot-scope="scope"> <template slot-scope="scope">
<div :class="{ stop_txt: scope.row.is_state }">
{{ scope.row.is_state==1 ? "发布中" : "停止" }}
<div :class="{ stop_txt: scope.row.is_state == 2 }">
{{ scope.row.is_state == 2 ? '停止' : (scope.row.stateTxt ? '发布中' : '未发布') }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
@ -43,21 +44,23 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" width="220px" align="center" fixed="right"> <el-table-column label="操作" width="220px" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" :class="['top_btn', { top_btn_active: scope.row.is_topping }]" @click="isTophandle(scope.$index, scope.row)">{{ scope.row.is_topping ? "取消" : "置顶" }}</el-button>
<el-button type="primary" class="edit_btn" @click="editForm(scope.$index, scope.row)">编辑</el-button>
<el-button type="primary" :class="['start_btn', { stop_btn: scope.row.is_state }]" @click="isStopHandle(scope.$index, scope.row)">{{ scope.row.is_state ? "停止" : "恢复" }}</el-button>
<el-button type="info" class="delt_btn">删除</el-button>
<el-button type="primary" :class="['top_btn', { top_btn_active: scope.row.is_topping }]" @click="isTophandle(scope.row)">{{ scope.row.is_topping ? "取消" : "置顶" }}</el-button>
<el-button type="primary" class="edit_btn" @click="editRelease(scope.row)">编辑</el-button>
<el-button type="primary" :class="['start_btn', { stop_btn: scope.row.is_state==1 }]" @click="isStopHandle(scope.row)">{{ scope.row.is_state==1 ? "停止" : "恢复" }}</el-button>
<el-button type="info" class="delt_btn" @click="deltHandle(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-col> </el-col>
</el-row> </el-row>
<!-- 分页器 -->
<el-pagination style="margin-top: 20px;" background :current-page="page" :total="total" :page-size="size" :pager-count="5" :page-sizes="[3, 5, 10]" layout="prev, pager, next, jumper,->,sizes,total" @current-change="getPublishList" @size-change="handleSizeChange" />
</div> </div>
</template> </template>
<script> <script>
import { parseTime } from '@/utils/index.js'
import { FetchGetReleaseList, FetchGetReleaseDetailsById } from '@/api/release/release'
import { parseTime, setWeekly, getNowFormatDate } from '@/utils/index.js'
import { FetchGetReleaseList, FetchUpdateReleaseState, FetchDeleteRelease, FetchToppingRelease } from '@/api/release/release'
export default { export default {
name: 'PublishList', name: 'PublishList',
data() { data() {
@ -65,14 +68,9 @@ export default {
orga_id: '133221333123111', orga_id: '133221333123111',
page: 1, page: 1,
size: 10, size: 10,
selectedList: [],
publishVisible: false,
messageVisible: false,
selectDeviceVisible: false,
isTypeDate: 0,
publishList: [],
deviceAllTags: ['GCXR1', 'GCXR2', 'GCXR3', 'GCXR4', 'GCXR5'],
deviceTags: []
total: 0,
stateTxt: null,
publishList: [] // list
} }
}, },
mounted() { mounted() {
@ -80,7 +78,8 @@ export default {
}, },
methods: { methods: {
// //
getPublishList () {
getPublishList(pager = 1) {
this.page = pager
const params = { const params = {
release_name: '', release_name: '',
orga_id: this.orga_id, orga_id: this.orga_id,
@ -90,53 +89,112 @@ export default {
FetchGetReleaseList(params).then(res => { FetchGetReleaseList(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.publishList = res.data.content this.publishList = res.data.content
this.total = res.data.totalElements
this.publishList.forEach(item => { this.publishList.forEach(item => {
item.release_start = parseTime(item.release_start).split("00:00:00")[0]
item.release_end = parseTime(item.release_end).split("00:00:00")[0]
item.release_start = parseTime(item.release_start).split('00:00:00')[0]
item.release_end = parseTime(item.release_end).split('00:00:00')[0]
if (item.binding_device) { if (item.binding_device) {
item.binding_device = item.binding_device.split(",")
item.binding_device = item.binding_device.split(',')
} }
if (item.release_weekly) {
item.release_weekly = setWeekly(item.release_weekly)
} else {
item.release_weekly = ''
}
//
const todayDate = getNowFormatDate()
item.stateTxt = this.dateCompare(item.release_start, todayDate)
}) })
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
}) })
}, },
//
isTophandle (index, row) {
row.is_topping = !row.is_topping
},
//
isStopHandle (index, row) {
row.is_state = !row.is_state
//
handleSizeChange(size) {
//
this.size = size
this.getPublishList()
}, },
//
editForm (index, row) {
console.log(row)
//
isTophandle(row) {
const params = { const params = {
release_id: row.release_id
id: row.release_id,
is_topping: !row.is_topping
} }
FetchToppingRelease(params).then(res => {
if (res.code == 200) {
this.$message.success(res.msg)
this.getPublishList()
} else {
this.$message.error(res.msg)
}
})
},
//
editRelease(row) {
localStorage.setItem('releaseId', JSON.stringify(row.release_id))
this.$router.push( this.$router.push(
{ {
path: '/release', query: { tag: 1 }
path: '/release', query: { tag: row.release_type }
} }
) )
FetchGetReleaseDetailsById(params).then(res => {
},
//
isStopHandle(row) {
row.is_state = row.is_state == 1 ? 2 : 1
const params = {
id: row.release_id,
state: row.is_state
}
FetchUpdateReleaseState(params).then(res => {
if (res.code == 200) {
this.$message.success(res.msg)
this.getPublishList()
} else {
this.$message.error(res.msg)
}
})
},
//
deltHandle(row) {
this.$confirm('此操作将永久删除该列表, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = {
id: row.release_id,
is_del: true
}
FetchDeleteRelease(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
console.log(res.data)
this.$message.success(res.msg)
this.getPublishList()
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
}) })
}).catch(() => {
this.$message({
message: '已取消删除',
type: 'info'
})
})
}, },
handleSelectionChange (val) {
this.selectedList = val
if (val.length > 0) {
this.clearBtnDisabled = false
// -
dateCompare(str1, str2) {
const arr = str1.split('-')
const startDate = new Date(arr[0], arr[1], arr[2])
const startTimes = startDate.getTime()
const arr2 = str2.split('-')
const currentDate = new Date(arr2[0], arr2[1], arr2[2])
const currentTimes = currentDate.getTime()
if (startTimes > currentTimes) {
return false
} else { } else {
this.clearBtnDisabled = true
return true
} }
console.log(val)
} }
} }
} }

Loading…
Cancel
Save