代码初始化

This commit is contained in:
tianyongbao
2025-04-24 17:33:21 +08:00
commit 58da6b59c7
669 changed files with 209122 additions and 0 deletions

View File

@@ -0,0 +1,790 @@
<template>
<div class="app-container">
<div class="search-con">
<div class="title">查询条件</div>
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="100px">
<el-form-item label="策略名称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入策略名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核状态" prop="reviewStatus">
<el-select v-model="queryParams.reviewStatus" placeholder="请选择审核状态" clearable>
<el-option v-for="dict in state" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="发布状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择发布状态" clearable>
<el-option v-for="dict in enable_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-form>
<div class="search-btn-con">
<el-button type="primary" icon="Search" @click="handleQuery" v-hasPermi="['light:screenProgramStrategy:query']">搜索</el-button>
<el-button type="info" icon="Refresh" @click="resetQuery">重置</el-button>
</div>
</div>
<div class="main-con">
<div class="title-con">
<div class="title">基本信息</div>
<div class="operate-btn-con">
<el-button @click="handleAdd" icon="Plus" v-hasPermi="['light:screenProgramStrategy:add']">新增</el-button>
<el-button :disabled="multiple" icon="Delete" @click="handleDelete" v-hasPermi="['light:screenProgramStrategy:remove']">删除</el-button>
<el-button @click="handleExport" icon="Download" v-hasPermi="['light:screenProgramStrategy:export']">导出</el-button>
</div>
</div>
<div class="content-con">
<el-table v-loading="loading" :data="screenProgramList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" :selectable="selectable" />
<el-table-column label="策略名称" align="center" prop="name" />
<el-table-column label="开始日期" align="center" prop="beginDate" width="140">
<template #default="scope">
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="结束日期" align="center" prop="endDate" width="140">
<template #default="scope">
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="应用设备" align="center" prop="deviceNum">
<template #default="scope">
<a v-if="scope.row.status === '1' && scope.row.ids.length" style="color: #7099f9" @click="jumpDetail(scope.row)">{{ scope.row.deviceNum }} </a>
<a v-if="scope.row.status === '0'">{{ scope.row.deviceNum }} </a>
</template>
</el-table-column>
<el-table-column label="审核状态" align="center" prop="reviewStatus">
<template #default="scope">
<dict-tag :options="state" :value="scope.row.reviewStatus" />
</template>
</el-table-column>
<el-table-column label="发布状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="enable_status" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作人" align="center" prop="createBy" />
<el-table-column label="操作时间" align="center" prop="createTime" />
<el-table-column label="操作" align="center" width="220">
<template #default="scoped">
<div class="ctrl-btn d-flex">
<el-tooltip content="提交审核" placement="top" v-if="scoped.row.reviewStatus !== '2' && scoped.row.reviewStatus !== '3'">
<el-button icon="Promotion" circle @click="handleSubmitAudit(scoped.row)"></el-button>
</el-tooltip>
<el-tooltip content="审核" placement="top" v-if="scoped.row.reviewStatus === '2'">
<el-button icon="RefreshRight" circle @click="handleAudit(scoped.row)" v-hasPermi="['light:screenProgramStrategy:review']"></el-button>
</el-tooltip>
<el-tooltip content="发布" placement="top" v-if="scoped.row.reviewStatus === '3'">
<el-button icon="DataAnalysis" circle @click="handleRelease(scoped.row)" v-hasPermi="['lightProgramStrategy:strategy:release']"></el-button>
</el-tooltip>
<el-tooltip content="查看" placement="top">
<el-button icon="View" circle @click="handleView(scoped.row)"></el-button>
</el-tooltip>
<el-tooltip content="修改" placement="top" v-if="scoped.row.status === '0'">
<el-button icon="Edit" circle @click="handleUpdate(scoped.row)" v-hasPermi="['light:screenProgramStrategy:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top" v-if="scoped.row.canDeletedFlag === 1">
<el-button icon="Delete" circle @click="handleDelete(scoped.row)" v-hasPermi="['light:screenProgramStrategy:remove']"></el-button>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination small background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" />
</div>
</div>
<!-- 新增修改节目策略dialog -->
<el-dialog :title="title" v-model="open" width="70%" append-to-body @close="cancelAdd" destroy-on-close>
<OperatePanel @close="handleAddFormClose" :currentId="currentId" v-if="open" :title="title" />
</el-dialog>
<!-- 修改节目策略dialog -->
<el-dialog :title="title" v-model="showEditPanel" width="70%" @close="cancelEdit" append-to-body destroy-on-close>
<EditPanel @close="handleEditFormClose" :currentId="currentId" v-if="showEditPanel" :title="title" />
</el-dialog>
<!-- 查看节目策略dialog -->
<el-dialog :title="title" v-model="showViewPanel" width="70%" append-to-body destroy-on-close>
<ViewPanel :currentId="currentId" />
</el-dialog>
<!-- 审核节目策略dialog -->
<el-dialog :title="title" v-model="showAuditPanel" width="70%" @close="cancelAudit" append-to-body destroy-on-close>
<AuditPanel @close="handleAuditFormClose" :currentId="currentId" v-if="showAuditPanel" />
</el-dialog>
<!-- 发布节目策略对话框 -->
<el-dialog :title="titleRelease" v-model="openRelease" width="1200px" append-to-body @close="closeReleaseList">
<div class="content_strategy" style="font-size: 16px; margin-bottom: 18px">
<div class="strategyName" :title="queryParamsRelease.strategyName">策略名称:{{ queryParamsRelease.strategyName }}</div>
<span style="margin-left: 150px">有效日期{{ queryParamsRelease.beginDate + '至' + queryParamsRelease.endDate }}</span>
<span v-if="true" style="margin-left: 150px">执行周期{{ queryParamsRelease.periodName }}</span>
</div>
<el-form ref="releaseRef" :model="queryParamsRelease" :inline="true">
<el-form-item label="发布类型" prop="type">
<el-select placeholder="请选择发布类型" v-model="queryParamsRelease.type" @change="getReleaseList" clearable @keyup.enter="handleQuery">
<el-option v-for="dict in screen_publication_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="所属层级" prop="buildingId" v-if="queryParamsRelease.type === '1'">
<el-tree-select
v-model="queryParamsRelease.buildingId"
:data="buildingOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择所属层级"
ref="addBuildingTreeRef"
check-strictly
clearable
@change="getReleaseList"
@node-click="getCheckedNodes"
/>
</el-form-item>
<el-form-item label="灯杆名称" prop="poleName" v-if="queryParamsRelease.type === '1'">
<el-input v-model="queryParamsRelease.poleName" placeholder="请输入灯杆名称" @keyup.enter="handleQuery" @change="getList" />
</el-form-item>
<el-form-item label="屏幕名称" prop="name" v-if="queryParamsRelease.type === '1'">
<el-input v-model="queryParamsRelease.name" placeholder="请输入屏幕名称" @keyup.enter="handleQuery" @change="getList" />
</el-form-item>
<el-form-item label="分组用途" prop="purpose" v-if="queryParamsRelease.type !== '1'">
<el-select v-model="queryParamsRelease.purpose" placeholder="请选择分组用途" clearable>
<el-option v-for="dict in light_group_purpose" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="分组名称" prop="name" v-if="queryParamsRelease.type !== '1'">
<el-input v-model="queryParamsRelease.name" placeholder="请输入分组名称" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQueryRelease">搜索</el-button>
<el-button type="info" icon="Refresh" @click="resetQueryRelease">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loadingRelease" :data="groupList" @selection-change="handleReleaseSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="所属层级" align="center" prop="buildingName" v-if="queryParamsRelease.type == '1'" />
<el-table-column label="灯杆编号" align="center" prop="poleCode" v-if="queryParamsRelease.type == '1'" />
<el-table-column label="灯杆名称" align="center" prop="poleName" v-if="queryParamsRelease.type == '1'" />
<el-table-column label="屏幕编号" align="center" prop="code" v-if="queryParamsRelease.type == '1'" />
<el-table-column label="屏幕名称" align="center" prop="name" v-if="queryParamsRelease.type == '1'" />
<el-table-column label="在线状态" align="center" width="100" prop="networkStatus" v-if="queryParamsRelease.type == '1'">
<template #default="scope">
<dict-tag :options="network_status" :value="scope.row.networkStatus" :style="{ color: scope.row.networkStatus === '0' ? 'red' : 'green' }" />
</template>
</el-table-column>
<el-table-column label="分组用途" align="center" prop="purpose" v-if="queryParamsRelease.type !== '1'">
<template #default="scope">
<dict-tag :options="light_group_purpose" :value="scope.row.purpose" />
</template>
</el-table-column>
<el-table-column label="分组名称" align="center" prop="name" v-if="queryParamsRelease.type !== '1'" />
<el-table-column label="分组描述" align="center" prop="remark" v-if="queryParamsRelease.type !== '1'" />
</el-table>
<el-pagination small background layout="total, prev, pager, next" :total="totalRelease" @current-change="handleReleaseCurrentChange" />
<template #footer>
<span class="dialog-footer">
<div class="search-btn-con">
<el-button type="primary" @click="submitRelease">发布 </el-button>
<el-button @click="closeRelease">取消</el-button>
</div>
</span>
</template>
</el-dialog>
<!-- 开关策略设备列表对话框list--应用设备 -->
<el-dialog title="设备列表" v-model="openView" width="68%" append-to-body @close="closeDeviceList">
<el-form ref="viewRef" :model="queryParamsView" :inline="true" label-width="110px">
<el-form-item label="层级名称" prop="buildingId">
<el-tree-select
v-model="queryParamsView.buildingId"
:data="buildingOptions"
:props="{ value: 'id', label: 'label', children: 'children' }"
value-key="id"
placeholder="请选择所属层级"
check-strictly
clearable
@change="getDeviceList"
/>
</el-form-item>
<el-form-item label="灯杆编号" prop="poleCode">
<el-input v-model="queryParamsView.poleCode" placeholder="请输入灯杆编号" />
</el-form-item>
<el-form-item label="灯杆名称" prop="poleName">
<el-input v-model="queryParamsView.poleName" placeholder="请输入灯杆名称" />
</el-form-item>
<el-form-item label="屏幕名称" prop="name">
<el-input v-model="queryParamsView.name" placeholder="请输入屏幕名称" />
</el-form-item>
<div class="search-btn-con">
<el-button type="primary" icon="Search" @click="handleQueryDevice">搜索</el-button>
<el-button type="info" icon="Refresh" @click="resetQueryDevice">重置</el-button>
</div>
<el-table v-loading="loadingView" :data="deviceList">
<el-table-column label="所属层级" align="center" prop="buildingName" />
<el-table-column label="灯杆编号" align="center" prop="poleCode" />
<el-table-column label="灯杆名称" align="center" prop="poleName" />
<el-table-column label="屏幕编号" align="center" prop="code" />
<el-table-column label="屏幕名称" align="center" prop="name" />
<el-table-column label="在线状态" align="center" prop="networkStatus">
<template #default="scope">
<dict-tag :options="network_status" :value="scope.row.networkStatus" :style="{ color: scope.row.networkStatus === '0' ? 'red' : 'green' }" />
</template>
</el-table-column>
<el-table-column label="配置时间" align="center" prop="createTime" />
</el-table>
<el-pagination small background layout="total, prev, pager, next" :total="totalView" @current-change="handleViewCurrentChange" />
</el-form>
</el-dialog>
</div>
</template>
<script setup name="screenSwitch">
import {
listScreenStrategy,
addScreenStrategy,
updateScreenStrategy,
delScreenStrategy,
release,
clearScreenStrategy,
getScreenStrategyInfoScreenList
} from '@/api/light/screenStrategy'
import { buildingTree } from '@/api/building/buildingInfo'
import { getProgramList, delProgramStrategy, auditProgramStrategy, releaseProgramStrategy, getDeviceInfoList, listScreen } from '@/api/light/screenProgram'
import { ElMessage, ElMessageBox } from 'element-plus'
import { listGroup } from '@/api/light/group'
import OperatePanel from './components/OperatePanel.vue'
import EditPanel from './components/EditPanel.vue'
import ViewPanel from '@/views/components/screen/ViewPanel.vue'
import AuditPanel from './components/AuditPanel'
import useUserStore from '@/store/modules/user'
const userStore = useUserStore()
const { proxy } = getCurrentInstance()
const { state, enable_status, network_status, light_group_purpose, screen_publication_type } = proxy.useDict(
'state',
'enable_status',
'network_status',
'light_group_purpose',
'light_group_type',
'screen_publication_type'
)
const checkAll = ref(true)
const isIndeterminate = ref(false)
const openView = ref(false) //应用设备dialog显隐
const loadingView = ref(true)
const showViewPanel = ref(false) //详情面板
const showAuditPanel = ref(false) //审核面板
const currentType = ref(1)
const releaseArr = ref([]) //发布数据
const isHasPermi = ref(false) //是否有审核权限
const currentSelection = ref([]) //当前选中发布设备or分组
const DaysList = ref([
{ value: 1, label: '周一' },
{ value: 2, label: '周二' },
{ value: 3, label: '周三' },
{ value: 4, label: '周四' },
{ value: 5, label: '周五' },
{ value: 6, label: '周六' },
{ value: 7, label: '周日' }
])
//用户权限
const userPermi = computed(() => userStore.permissions)
const dateRange = ref([])
watch(
() => dateRange.value,
(value) => {
form.value.beginDate = value[0]
form.value.endDate = value[1]
}
)
const groupList = ref([])
const deviceList = ref([])
const screenProgramList = ref([])
const open = ref(false) //dialog显隐
const showEditPanel = ref(false) //编辑dialog显隐
const openRelease = ref(false)
const loading = ref(true)
const loadingRelease = ref(false)
const ids = ref([]) //多选id
const multiple = ref(true) //是否已多选
const total = ref(0)
const totalView = ref(0)
const totalRelease = ref(0)
const buildingOptions = ref(undefined)
const titleRelease = ref('')
const title = ref('')
const currentId = ref(0) //查看详情数据id
const releaseDeviceList = ref([])
const idArr = ref([])
const data = reactive({
form: {
checkedDays: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
period: '1,2,3,4,5,6,7',
playType: '定时播放',
lightScreenStrategyActList: [
{
type: '1',
executeTime: '',
idx: '',
act: '1',
actValue: '',
sunriseAct: '',
sunsetAct: '',
sunriseActValue: '',
sunsetActValue: '',
condition: '',
symbol: '',
conditionValue: ''
}
]
},
queryParams: {
pageNum: 1,
pageSize: 10,
name: null,
status: null
},
addForm: {},
queryParamsRelease: {
pageNum: 1,
pageSize: 10,
screenStrategyId: null,
type: null,
ids: null,
buildingId: null,
deviceName: null,
purpose: null,
name: null,
strategyName: null
},
queryParamsView: {
pageNum: 1,
pageSize: 10,
screenStrategyId: null,
poleId: null,
buildingId: null,
imeiName: null,
name: null
},
rules: {
name: [{ required: true, message: '策略名称不能为空', trigger: ['blur', 'change'] }]
}
})
const { queryParams, queryParamsRelease, queryParamsView, form, rules, addForm } = toRefs(data)
const handleCheckAllChange = (val) => {
form.value.checkedDays = val ? ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] : []
isIndeterminate.value = false
form.value.period = '1,2,3,4,5,6,7'
}
const handleCheckedCitiesChange = (value) => {
const arr = []
value.forEach((item) => {
DaysList.value.forEach((item1, index) => {
if (item1.label === item) {
arr.push(index + 1)
}
})
})
form.value.period = arr.join(',')
const checkedCount = value.length
checkAll.value = checkedCount === DaysList.value.length
isIndeterminate.value = checkedCount > 0 && checkedCount < DaysList.value.length
}
// 查看设备列表dialog
const jumpDetail = (row) => {
openView.value = true
queryParamsView.value.screenStrategyId = row.id
releaseDeviceList.value = row.ids
getDeviceList()
}
/** 查询照明策略列表 */
function getList() {
loading.value = true
getProgramList(queryParams.value).then((response) => {
screenProgramList.value = response.rows
total.value = response.total
loading.value = false
})
}
function getCheckedNodes(val) {
idArr.value = []
idArr.value.push(val.id)
findChildrenId(val, 'children')
}
// 发布dialog--获取发布list
function getReleaseList(val) {
if (val) {
currentType.value = val
}
currentType.value = val || currentType.value
switch (queryParamsRelease.value.type) {
// 发布类型--设备
case '1':
loadingRelease.value = true
listScreen({
pageNum: queryParamsRelease.value.pageNum,
pageSize: queryParamsRelease.value.pageSize,
buildingIds: idArr.value.join(','),
poleName: queryParamsRelease.value.poleName,
name: queryParamsRelease.value.name
//type: currentType.value
}).then((response) => {
groupList.value = response.rows
totalRelease.value = response.total
loadingRelease.value = false
})
break
// 发布类型--设备分组
case '2':
loadingRelease.value = true
console.log('queryParamsRelease', queryParamsRelease.value)
listGroup({
pageNum: queryParamsRelease.value.pageNum,
pageSize: queryParamsRelease.value.pageSize,
//分组名称
name: queryParamsRelease.value.name,
//发布类型
type: '3',
//分组用途
purpose: queryParamsRelease.value.purpose
}).then((response) => {
groupList.value = response.rows
totalRelease.value = response.total
loadingRelease.value = false
})
break
default:
break
}
}
// 取消按钮
function cancelAdd() {
open.value = false
console.log('add')
}
function cancelEdit() {
showEditPanel.value = false
console.log('edit')
}
function cancelAudit() {
console.log('audit')
showAuditPanel.value = false
}
// 表单重置
function reset() {
checkAll.value = true
form.value = {
id: null,
name: null,
beginDate: null,
endDate: null,
trig: null,
period: '1,2,3,4,5,6,7',
status: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
checkedDays: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
}
form.value.lightScreenStrategyActList = [
{
type: '1',
executeTime: '',
idx: '',
act: '1',
actValue: '',
sunriseAct: '',
sunsetAct: '',
sunriseActValue: '',
sunsetActValue: '',
condition: '',
symbol: '',
conditionValue: ''
}
]
proxy.resetForm('screenStrategyRef')
}
/** 总list搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 设备dialog搜索按钮操作 */
function handleQueryDevice() {
queryParamsView.value.pageNum = 1
getDeviceList()
}
/** 设备dialog重置按钮操作 */
function resetQueryDevice() {
proxy.resetForm('viewRef')
handleQueryDevice()
}
/** 设备dialog关闭清空表单 */
function closeDeviceList() {
proxy.resetForm('viewRef')
}
/** 发布dialog关闭清空表单 */
function closeReleaseList() {
proxy.resetForm('releaseRef')
}
// 设备列表--获取设备list
function getDeviceList() {
getDeviceInfoList({
pageNum: queryParamsView.value.pageNum,
pageSize: queryParamsView.value.pageSize,
ids: releaseDeviceList.value,
poleCode: queryParamsView.value.poleCode,
poleName: queryParamsView.value.poleName,
buildingId: queryParamsView.value.buildingId,
name: queryParamsView.value.name
}).then((response) => {
deviceList.value = response.rows
totalView.value = response.total
loadingView.value = false
})
}
/** 发布页面搜索按钮操作 */
function handleQueryRelease() {
queryParamsRelease.value.pageNum = 1
getReleaseList()
}
// 分页
const handleReleaseCurrentChange = (val) => {
queryParamsRelease.value.pageNum = val
getReleaseList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef')
handleQuery()
}
/** 发布页面重置按钮操作 */
function resetQueryRelease() {
proxy.resetForm('releaseRef')
handleQueryRelease()
}
// 总list--分页
const handleCurrentChange = (val) => {
queryParams.value.pageNum = val
getList()
}
// 设备列表dialog--分页
const handleViewCurrentChange = (val) => {
queryParamsView.value.pageNum = val
getDeviceList()
}
const selectable = (row, index) => {
return row.canDeletedFlag === 1
}
// 总list--多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id)
multiple.value = !selection.length
}
// 总list--多选框选中数据
function handleReleaseSelectionChange(selection) {
currentSelection.value = selection
}
// 发布
const handleRelease = (row) => {
console.log('发布', row)
titleRelease.value = '策略发布'
queryParamsRelease.value.type = '1' // type=1-->设备type=2-->设备分组
queryParamsRelease.value.strategyName = row.name
queryParamsRelease.value.programStrategyId = row.id
queryParamsRelease.value.periodName = row.periodName
queryParamsRelease.value.beginDate = row.beginDate
queryParamsRelease.value.endDate = row.endDate
getReleaseList()
openRelease.value = true
}
//审核
const handleAudit = (row) => {
showAuditPanel.value = true
title.value = '审核节目策略'
currentId.value = row.id
}
//提交审核
const handleSubmitAudit = (row) => {
const _ids = row.id || ids.value
ElMessageBox.confirm('是否提交审核?', '提交审核', {
confirmButtonText: '提交',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
isAutoAudit(row.id)
})
.catch(() => {})
}
//是否自动审核
const isAutoAudit = (val) => {
//如果具备审核权限,自动审核
userPermi.value.map((item) => {
if (item === 'light:screenProgramStrategy:review') {
isHasPermi.value = true
}
})
//如果有权限,弹出是否自动审核
if (userPermi.value[0] === '*:*:*' || isHasPermi.value) {
ElMessageBox.confirm('是否自动审核?', '审核', {
confirmButtonText: '审核通过',
cancelButtonText: '取消',
type: 'warning'
})
.then((action) => {
//确认自动审核
if (action === 'confirm') {
const params = {
id: val,
reviewStatus: '3'
}
auditProgramStrategy(params).then((res) => {
ElMessage({ type: 'success', message: '审核成功' })
getList()
})
}
})
.catch((err) => {
//取消自动审核时仅提交审核
if (err === 'cancel') {
const params = {
id: val,
reviewStatus: '2'
}
auditProgramStrategy(params).then((res) => {
ElMessage({ type: 'success', message: '提交成功' })
getList()
})
}
})
} else {
const params = {
id: val,
reviewStatus: '2'
}
auditProgramStrategy(params).then((res) => {
ElMessage({ type: 'success', message: '提交成功' })
getList()
})
}
}
// 查看
const handleView = (row) => {
showViewPanel.value = true
title.value = '查看节目策略'
currentId.value = row.id
}
// 编辑
const handleUpdate = (row) => {
showEditPanel.value = true
title.value = '修改节目策略'
currentId.value = row.id
}
/** 新增按钮操作 */
function handleAdd() {
open.value = true
currentId.value = 0
title.value = '新增节目策略'
}
// 取消发布按钮
function closeRelease() {
openRelease.value = false
resetQueryRelease()
}
/** 确定发布按钮 */
function submitRelease() {
releaseArr.value = []
if (currentSelection.value.length) {
currentSelection.value.map((item) => {
const obj = {}
obj.targetId = item.id
obj.status = '1'
obj.type = queryParamsRelease.value.type
obj.programStrategyId = queryParamsRelease.value.programStrategyId
releaseArr.value.push(obj)
})
const params = {
programStrategyId: queryParamsRelease.value.programStrategyId,
lightProgramStrategyTargets: releaseArr.value
}
releaseProgramStrategy(params).then((response) => {
proxy.$modal.msgSuccess('发布成功')
openRelease.value = false
getList()
})
} else {
ElMessage({ type: 'info', message: '请选择至少一个设备/分组发布' })
}
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal
.confirm('是否删除该策略?')
.then(function () {
return delProgramStrategy(_ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'smartlight/lightProgramStrategy/export',
{
...queryParams.value
},
`显示屏节目策略_${new Date().getTime()}.xlsx`
)
}
//关闭新增弹窗
const handleAddFormClose = () => {
open.value = false
getList()
}
//关闭编辑弹窗
const handleEditFormClose = () => {
showEditPanel.value = false
getList()
}
//关闭审核弹窗
const handleAuditFormClose = () => {
showAuditPanel.value = false
getList()
}
// 设备列表--层级树列表
function getBuildingTree() {
buildingTree().then((response) => {
buildingOptions.value = response.data
})
}
//递归
function findChildrenId(data, children) {
for (const key in data) {
if (key === children) {
data[key].map((item) => {
idArr.value.push(item.id)
if (item.children) {
findChildrenId(item, 'children')
}
})
}
}
}
onMounted(() => {
getList()
getBuildingTree()
})
</script>
<style lang="scss" scoped></style>