|
|
@@ -1,6 +1,7 @@
|
|
|
<template>
|
|
|
<div class="p-2">
|
|
|
- <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
|
+ <transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
|
|
+ :leave-active-class="proxy?.animate.searchAnimate.leave">
|
|
|
<div v-show="showSearch" class="mb-[10px]">
|
|
|
<el-card shadow="hover" :style="{ height: '70px' }">
|
|
|
<el-row :gutter="20" align="middle">
|
|
|
@@ -41,7 +42,8 @@
|
|
|
<el-card shadow="hover" :style="{ marginTop: '10px', height: '60px' }">
|
|
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="50px">
|
|
|
<el-form-item label="名称" prop="name">
|
|
|
- <el-input v-model="queryParams.name" style="width: 150px" placeholder="请输入名称" clearable @keyup.enter="handleQuery" />
|
|
|
+ <el-input v-model="queryParams.name" style="width: 150px" placeholder="请输入名称" clearable
|
|
|
+ @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="类型" prop="itemType">
|
|
|
<el-select v-model="queryParams.itemType" style="width: 150px" placeholder="请选择类型" clearable>
|
|
|
@@ -49,27 +51,24 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="时间" style="width: 250px">
|
|
|
- <el-date-picker
|
|
|
- v-model="dateRangeCreateTime"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- type="daterange"
|
|
|
- range-separator="-"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="dateRangeCreateTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
|
|
+ range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
|
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
|
|
- <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['source:itemPush:add']">新增 </el-button>
|
|
|
- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['source:itemPush:edit']"
|
|
|
- >修改
|
|
|
+ <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['source:itemPush:add']">新增
|
|
|
</el-button>
|
|
|
- <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['source:itemPush:remove']"
|
|
|
- >删除
|
|
|
+ <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
|
|
+ v-hasPermi="['source:itemPush:edit']">修改
|
|
|
+ </el-button>
|
|
|
+ <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
|
|
+ v-hasPermi="['source:itemPush:remove']">删除
|
|
|
+ </el-button>
|
|
|
+ <el-button type="warning" plain icon="Download" @click="handleExport"
|
|
|
+ v-hasPermi="['source:itemPush:export']">导出
|
|
|
</el-button>
|
|
|
- <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['source:itemPush:export']">导出 </el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-card>
|
|
|
@@ -88,12 +87,12 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="类型" align="center" width="100" prop="itemType">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="smsb_push_type" :value="scope.row.itemType"/>
|
|
|
+ <dict-tag :options="smsb_push_type" :value="scope.row.itemType" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="审核状态" align="center" width="100" prop="status">
|
|
|
<template #default="scope">
|
|
|
- <dict-tag :options="smsb_push_state" :value="scope.row.status"/>
|
|
|
+ <dict-tag :options="smsb_push_state" :value="scope.row.status" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="生效日期" align="left" prop="startDate" width="140">
|
|
|
@@ -106,39 +105,35 @@
|
|
|
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="发布时间" align="left" prop="createTime" width="160"/>
|
|
|
- <el-table-column label="创建人" align="left" prop="createUser" width="120" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="发布时间" align="left" prop="createTime" width="160" />
|
|
|
+ <el-table-column label="创建人" align="left" prop="createUser" width="120" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
|
|
|
<template #default="scope">
|
|
|
- <el-tooltip content="修改" placement="top">
|
|
|
+ <!-- <el-tooltip content="修改" placement="top">
|
|
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
|
|
- v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
- </el-tooltip>
|
|
|
+ v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
+ </el-tooltip> -->
|
|
|
<el-tooltip content="删除" placement="top">
|
|
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['source:itemPush:remove']"></el-button>
|
|
|
+ v-hasPermi="['source:itemPush:remove']"></el-button>
|
|
|
</el-tooltip>
|
|
|
<!-- <el-tooltip content="提交审核" placement="top">
|
|
|
<el-button link type="primary" icon="Top" @click="handleReview(scope.row)" v-hasPermi="['source:minioData:add']"></el-button>
|
|
|
</el-tooltip>-->
|
|
|
<el-tooltip content="下发详情" placement="top">
|
|
|
- <el-button link type="primary" icon="List" @click="handleDevice(scope.row)" v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
+ <el-button link type="primary" icon="List" @click="handleDevice(scope.row)"
|
|
|
+ v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
</el-tooltip>
|
|
|
<el-tooltip content="下架" placement="top">
|
|
|
- <el-button
|
|
|
- link
|
|
|
- type="primary"
|
|
|
- icon="Bottom"
|
|
|
- v-if="scope.row.status == 'finish'"
|
|
|
- @click="handleRemoveItem(scope.row)"
|
|
|
- v-hasPermi="['source:itemPush:edit']"
|
|
|
- ></el-button>
|
|
|
+ <el-button link type="primary" icon="Bottom" v-if="scope.row.status == 'finish'"
|
|
|
+ @click="handleRemoveItem(scope.row)" v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
- <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
+ <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
|
|
+ v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
</el-card>
|
|
|
<!-- 添加或修改内容发布对话框 -->
|
|
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="1500px" style="height: 700px" append-to-body>
|
|
|
@@ -146,8 +141,8 @@
|
|
|
<!--设备列表-->
|
|
|
<el-col :span="6" style="height: 100%; overflow: auto; border-right: 1px solid #eee; padding-right: 10px">
|
|
|
<el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectDevice" style="height: 520px">
|
|
|
- <el-table-column type="selection" width="55" align="center"/>
|
|
|
- <el-table-column label="设备名称" align="left" prop="name" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column type="selection" width="55" align="center" />
|
|
|
+ <el-table-column label="设备名称" align="left" prop="name" :show-overflow-tooltip="true" />
|
|
|
</el-table>
|
|
|
</el-col>
|
|
|
<!--发布名称-->
|
|
|
@@ -160,28 +155,24 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="类型" prop="itemType">
|
|
|
<el-select v-model="form.itemType" placeholder="请选择类型" @change="getItemList">
|
|
|
- <el-option v-for="dict in smsb_push_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
|
|
+ <el-option v-for="dict in smsb_push_type" :key="dict.value" :label="dict.label"
|
|
|
+ :value="parseInt(dict.value)"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="优先级" prop="level">
|
|
|
<el-select v-model="form.level" placeholder="请选择优先级">
|
|
|
- <el-option v-for="dict in smsb_push_level" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
|
|
+ <el-option v-for="dict in smsb_push_level" :key="dict.value" :label="dict.label"
|
|
|
+ :value="parseInt(dict.value)"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="日期" prop="dateRange">
|
|
|
- <el-date-picker
|
|
|
- v-model="form.dateRange"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- type="daterange"
|
|
|
- range-separator="-"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="form.dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
|
|
|
+ start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
+ :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" />
|
|
|
</el-form-item>
|
|
|
<!-- Days of the Week -->
|
|
|
<el-form-item label="每周">
|
|
|
@@ -216,11 +207,11 @@
|
|
|
<el-table v-loading="loading" :data="itemList" style="height: 520px">
|
|
|
<el-table-column label="ID" width="200" align="left" :show-overflow-tooltip="true">
|
|
|
<template #default="{ row }">
|
|
|
- <el-radio v-model="selectedRowId" :label="row.id" @change="handleRadioChange(row)"/>
|
|
|
+ <el-radio v-model="selectedRowId" :label="row.id" @change="handleRadioChange(row)" />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="名称" align="left" prop="itemName" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="资源数量" align="center" prop="sourceNum" width="80"/>
|
|
|
+ <el-table-column label="名称" align="left" prop="itemName" :show-overflow-tooltip="true" />
|
|
|
+ <el-table-column label="资源数量" align="center" prop="sourceNum" width="80" />
|
|
|
<!--
|
|
|
<el-table-column label="创建人" align="left" prop="createUser" width="100" :show-overflow-tooltip="true" />
|
|
|
-->
|
|
|
@@ -248,14 +239,16 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="发布类型" prop="itemType">
|
|
|
<el-select v-model="form.itemType" placeholder="请选择类型" @change="getItemList" :disabled="true">
|
|
|
- <el-option v-for="dict in smsb_push_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
|
|
+ <el-option v-for="dict in smsb_push_type" :key="dict.value" :label="dict.label"
|
|
|
+ :value="parseInt(dict.value)"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="优先级" prop="level">
|
|
|
<el-select v-model="form.level" placeholder="请选择优先级" :disabled="true">
|
|
|
- <el-option v-for="dict in smsb_push_level" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
|
|
+ <el-option v-for="dict in smsb_push_level" :key="dict.value" :label="dict.label"
|
|
|
+ :value="parseInt(dict.value)"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -263,8 +256,10 @@
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<!--设备列表-->
|
|
|
- <el-button type="primary" v-if="removeItemTag" icon="Bottom" :disabled="removeButtonTag" @click="handleDoRemoveItem()"> 下架 </el-button>
|
|
|
- <el-table v-loading="deviceLoading" :data="pushDeviceList" style="height: 500px; margin-top: 10px" @selection-change="handleDeviceSelectionChange">
|
|
|
+ <el-button type="primary" v-if="removeItemTag" icon="Bottom" :disabled="removeButtonTag"
|
|
|
+ @click="handleDoRemoveItem()"> 下架 </el-button>
|
|
|
+ <el-table v-loading="deviceLoading" :data="pushDeviceList" style="height: 500px; margin-top: 10px"
|
|
|
+ @selection-change="handleDeviceSelectionChange">
|
|
|
<el-table-column type="selection" v-if="removeItemTag" width="55" align="center" />
|
|
|
<el-table-column label="设备名称" align="left" prop="deviceName" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="发布排序" align="center" prop="sortNum" width="100" :show-overflow-tooltip="true" />
|
|
|
@@ -274,10 +269,12 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="发布时间" align="left" prop="createTime" width="170" :show-overflow-tooltip="true" />
|
|
|
- <el-table-column label="操作" v-if="removeItemTag" align="center" class-name="small-padding fixed-width" width="150">
|
|
|
+ <el-table-column label="操作" v-if="removeItemTag" align="center" class-name="small-padding fixed-width"
|
|
|
+ width="150">
|
|
|
<template #default="scope">
|
|
|
<el-tooltip content="下架" placement="top">
|
|
|
- <el-button link type="primary" icon="Bottom" @click="handleDoRemoveItem(scope.row)" v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
+ <el-button link type="primary" icon="Bottom" @click="handleDoRemoveItem(scope.row)"
|
|
|
+ v-hasPermi="['source:itemPush:edit']"></el-button>
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -292,25 +289,17 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup name="ItemPush" lang="ts">
|
|
|
-import {
|
|
|
- addItemPush,
|
|
|
- delItemPush,
|
|
|
- getItemPush,
|
|
|
- listItemPush,
|
|
|
- pushStatistics,
|
|
|
- reviewItemPush,
|
|
|
- updateItemPush
|
|
|
-} from '@/api/smsb/source/item_push';
|
|
|
-import {ItemPushForm, ItemPushQuery, ItemPushVO} from '@/api/smsb/source/item_push_type';
|
|
|
-import {DeviceQuery, DeviceVO} from '@/api/smsb/device/device_type';
|
|
|
-import {listDevice} from '@/api/smsb/device/device';
|
|
|
-import {ItemQuery, ItemVO} from '@/api/smsb/source/item_type';
|
|
|
-import {listItem} from '@/api/smsb/source/item';
|
|
|
-import {ItemPushDeviceVO} from '@/api/smsb/source/item_push_device_type';
|
|
|
-import {listItemPushDeviceV2, removeItemPushDevice} from '@/api/smsb/source/item_push_device';
|
|
|
-
|
|
|
-const {proxy} = getCurrentInstance() as ComponentInternalInstance;
|
|
|
-const {smsb_push_state, smsb_push_device_state, smsb_push_type, smsb_push_level} = toRefs<any>(
|
|
|
+import { addItemPush, delItemPush, getItemPush, listItemPush, pushStatistics, reviewItemPush, updateItemPush } from '@/api/smsb/source/item_push';
|
|
|
+import { ItemPushForm, ItemPushQuery, ItemPushVO } from '@/api/smsb/source/item_push_type';
|
|
|
+import { DeviceQuery, DeviceVO } from '@/api/smsb/device/device_type';
|
|
|
+import { listDevice } from '@/api/smsb/device/device';
|
|
|
+import { ItemQuery, ItemVO } from '@/api/smsb/source/item_type';
|
|
|
+import { listItem } from '@/api/smsb/source/item';
|
|
|
+import { ItemPushDeviceVO } from '@/api/smsb/source/item_push_device_type';
|
|
|
+import { listItemPushDeviceV2, removeItemPushDevice } from '@/api/smsb/source/item_push_device';
|
|
|
+
|
|
|
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
+const { smsb_push_state, smsb_push_device_state, smsb_push_type, smsb_push_level } = toRefs<any>(
|
|
|
proxy?.useDict('smsb_push_state', 'smsb_push_device_state', 'smsb_push_type', 'smsb_push_level')
|
|
|
);
|
|
|
|
|
|
@@ -357,7 +346,7 @@ const deviceDialog = reactive<DialogOption>({
|
|
|
const initFormData: ItemPushForm = {
|
|
|
name: undefined,
|
|
|
level: undefined,
|
|
|
- itemType: undefined,
|
|
|
+ itemType: 2, // "分屏组"类型
|
|
|
deviceIds: undefined,
|
|
|
itemIds: undefined,
|
|
|
dateRange: undefined,
|