Compare commits

...

2 Commits

  1. 203
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/record/index.vue

203
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/record/index.vue

@ -3,78 +3,70 @@
<!-- 搜索栏 -->
<div class="filter">
<div>
<ButtonGradient @click="onExport">
<ButtonGradient @click="onExport">
<template #prefix>
<img src="@screen/images/export.svg" />
</template>
导出
</ButtonGradient>
<ButtonGradient @click="onRefreshForm" class="refresh-btn">
<template #prefix>
<img src="./images/refresh.svg" />
</template>
刷新
</ButtonGradient>
<ButtonGradient @click="onRefreshForm" class="refresh-btn">
<template #prefix>
<img src="./images/refresh.svg" />
</template>
刷新
</ButtonGradient>
<span class="sum-total">发布实际数量{{ sumtotal }}</span>
</div>
<InputSearch ref="searchComp" style="width: 480px" :formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }" @handleSearch="handleSearch" />
:formConfigOptions="{ dFormData: { eventState: '0' } }" @handleSearch="handleSearch" />
</div>
<!-- 内容 -->
<div class="body">
<Table :data="tableData">
<Table :data="tableData">
<el-table-column label="序号" type="index" :index="indexMethod" width="100" align="center"
header-align="center" />
header-align="center" />
<ElTableColumn label="发布渠道" prop="publishChannels" width="120" align="center" header-align="center">
<template slot-scope="scope">
{{ enum_channels[scope.row.publishChannels] }}
</template>
</ElTableColumn>
<ElTableColumn label="发布时间" prop="publishTime" align="center" width="200" header-align="center" />
<ElTableColumn label="发布时间" prop="publishTime" align="center" width="200" header-align="center" />
<ElTableColumn label="操作IP" prop="ip" align="center" width="250" header-align="center">
<template slot-scope="scope">
{{ (scope.row.ip === 'unknown' || !scope.row.ip) ? '服务器': scope.row.ip}}
{{ (scope.row.ip === 'unknown' || !scope.row.ip) ? '服务器' : scope.row.ip }}
</template>
</ElTableColumn>
<ElTableColumn label="位置/设备" prop="position" align="center" width="260" header-align="center">
<ElTableColumn label="位置/设备" prop="position" align="center" width="260" header-align="center">
<template slot-scope="scope">
{{ scope.row.position && scope.row.position.replace(/\[/,'').replace(/\]/,'') }}
{{ scope.row.position && scope.row.position.replace(/\[/, '').replace(/\]/, '') }}
</template>
</ElTableColumn>
<ElTableColumn label="发布内容" show-overflow-tooltip prop="contentDetails" align="center" header-align="center">
<ElTableColumn label="发布内容" show-overflow-tooltip prop="contentDetails" align="center" header-align="center">
<template slot-scope="scope">
<el-carousel v-if="scope.row.publishChannels === 4 && scope.row.contentDetailsInfo" direction="horizontal" :autoplay="false" :indicator-position="scope.row.contentDetailsInfo.length===1?'none':'inside'" height="50px"
arrow="never" class="board_shower">
<el-carousel-item v-for="item,index in scope.row.contentDetailsInfo"
:key="index">
<el-carousel v-if="scope.row.publishChannels === 4 && scope.row.contentDetailsInfo" direction="horizontal" :autoplay="false" :indicator-position="scope.row.contentDetailsInfo.length === 1 ? 'none' : 'inside'" height="50px"
arrow="never" class="board_shower">
<el-carousel-item v-for="item, index in scope.row.contentDetailsInfo"
:key="index">
<BoardRecordPreview :tpl="item" style="height: 100%;" />
</el-carousel-item>
</el-carousel>
<span v-else>{{ scope.row.contentDetails }}</span>
<!-- <span >{{ scope.row.contentDetails }}</span> -->
</template>
</ElTableColumn>
<ElTableColumn label="发布人" prop="publisher" width="100" align="center" header-align="center" />
<ElTableColumn label="发布结果" prop="status" width="100" align="center" header-align="center">
<ElTableColumn label="发布结果" prop="status" width="100" align="center" header-align="center">
<template slot-scope="scope">
<i class="el-icon-success" style="font-size: 24px; color:#0c0;" v-if="scope.row.publishStatus === 1"></i>
<i class="el-icon-error" style="font-size: 24px; color:#BBB;" v-else></i>
<i class="el-icon-success" style="font-size: 24px; color: #0c0;" v-if="scope.row.publishStatus === 1"></i>
<i class="el-icon-error" style="font-size: 24px; color: #BBB;" v-else></i>
</template>
</ElTableColumn>
<!-- <ElTableColumn label="操作" prop="status" width="100" align="center" header-align="center">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="onDelete(scope.row.id)">删除</el-button>
</template>
</ElTableColumn> -->
</Table>
</div>
<!-- 分页 -->
<div class="footer">
<Pagination @current-change="initData" @size-change="onSizeChange" width="'100%'"
:page-sizes="[10, 20, 30, 40, 50]" :page-size="searchData.pageSize" :current-page.sync="searchData.pageNum"
layout="total, sizes, prev, pager, next" :total="total">
:page-sizes="[10, 20, 30, 40, 50]" :page-size="searchData.pageSize" :current-page.sync="searchData.pageNum"
layout="total, sizes, prev, pager, next" :total="total">
</Pagination>
</div>
</div>
@ -86,12 +78,11 @@ import Pagination from '@screen/components/Pagination.vue';
import Table from '@screen/components/Table.vue';
import request from "@/utils/request";
import BoardRecordPreview from '@screen/components/infoBoard/BoardRecordPreview.vue'
import {DirectionTypes} from '@screen/utils/enum.js';
import { DirectionTypes } from '@screen/utils/enum.js';
import InputSearch from "@screen/components/InputSearch/index.vue";
import { searchFormList } from "./data";
import moment from "moment";
import { Loading } from 'element-ui';
import { e } from 'mathjs';
export default {
name: 'boardRecord',
@ -107,33 +98,35 @@ export default {
DirectionTypes,
moment,
enum_channels: {
4:'情报板',
7:'语音广播',
8:'企业微信',
4: '情报板',
7: '语音广播',
8: '企业微信',
},
tableData: [],
searchFormList,
isShowPhrases: false,
isShowDisposal: false,
total: 20,
sumtotal: 0,
eventType: 1,
searchData: {
pageSize: 20,
pageNum: 1
},
phrasesData: [],
process: []
process: [],
sum: 0 // sum data
}
},
created() {
},
methods: {
onRefreshForm(){
onRefreshForm() {
this.searchData.pageNum = 1;
this.$refs.searchComp.handleResetForm();
},
onDelete(id){
onDelete(id) {
const self = this;
this.$confirm("是否删除?", "警告", {
confirmButtonText: "确定",
@ -142,7 +135,7 @@ export default {
})
.then(function () {
request({
url: `/business/manage/`+id,
url: `/business/manage/${id}`,
method: "DELETE",
data: {},
}).then((result) => {
@ -152,7 +145,7 @@ export default {
});
})
},
onExport(){
onExport() {
const self = this;
this.$confirm("是否确认导出共计查询内容?", "警告", {
confirmButtonText: "确定",
@ -171,8 +164,6 @@ export default {
data: self.searchData,
responseType: 'blob',
}).then((res) => {
console.log(res)
const url = window.URL.createObjectURL(new Blob([res]));
let link = document.createElement("a");
link.style.display = "none";
@ -185,10 +176,10 @@ export default {
link = null;
loadingInstance.close();
})
.catch((err) => {
self.$message.error(err);
loadingInstance.close();
});
.catch((err) => {
self.$message.error(err);
loadingInstance.close();
});
})
},
handleSearch(data) {
@ -198,77 +189,72 @@ export default {
pageSize: 20,
pageNum: 1
}
if(daterange && daterange.length > 0){
if (daterange && daterange.length > 0) {
_searchData.startTime = daterange[0];
_searchData.endTime = daterange[1];
}
if(data.publishChannels){
if (data.publishChannels) {
_searchData.publishChannels = data.publishChannels
}
if(data.publishStatus){
if (data.publishStatus) {
_searchData.publishStatus = data.publishStatus
}
this.searchData = _searchData;
this.initData();
},
indexMethod(index) {
return this.searchData.pageSize*(this.searchData.pageNum-1) + index + 1;
},
return this.searchData.pageSize * (this.searchData.pageNum - 1) + index + 1;
},
formatterDirection(row, column) {
return DirectionTypes[row.direction];
},
return DirectionTypes[row.direction];
},
initData() {
this.sum = 0; // sum
request({
url: `/business/manage/statisticsList?pageNum=${this.searchData.pageNum}&pageSize=${this.searchData.pageSize}`,
method: "post",
params: { pageNum: this.searchData.pageNum, pageSize: this.searchData.pageSize },
data: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
if (result.code != 200) return this.$message.error(result?.msg);
let sum = 0;
result.rows.forEach(e => {
if(e.publishChannels === 4 || e.publishChannels === 7){
const contentDetailsInfo = JSON.parse(e.contentDetails)
if(e.publishChannels === 4){ //
let msg = '情报板数据异常' // + e.contentDetails
//
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 1){
const parameters = contentDetailsInfo[0].functions[1]?.params?.parameters
if(parameters && parameters.length > 0){
e.contentDetailsInfo = parameters
msg = ''
}
if (e.publishChannels === 4 || e.publishChannels === 7) {
const contentDetailsInfo = JSON.parse(e.contentDetails)
if (e.publishChannels === 4) { //
let msg = '情报板数据异常' // + e.contentDetails
//
if (contentDetailsInfo.length > 0) {
if (contentDetailsInfo[0].functions.length > 1) {
const parameters = contentDetailsInfo[0].functions[1]?.params?.parameters
if (parameters && parameters.length > 0) {
e.contentDetailsInfo = parameters
msg = ''
sum += parameters.length - 1
}
else if(contentDetailsInfo[0].functions.length > 0){
if(contentDetailsInfo[0].functions[0].functionId && contentDetailsInfo[0].functions[0].functionId === '1B'){
msg = '一键恢复操作'
}
} else if (contentDetailsInfo[0].functions.length > 0) {
if (contentDetailsInfo[0].functions[0].functionId && contentDetailsInfo[0].functions[0].functionId === '1B') {
msg = '一键恢复操作'
}
}
e.contentDetails = msg
} else if(e.publishChannels === 7){
let msg = '语音广播数据异常' //+e.contentDetails
console.log(contentDetailsInfo)
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 0){
msg = contentDetailsInfo[0].functions[0].params.text
}
}
e.contentDetails = msg
} else if (e.publishChannels === 7) {
let msg = '语音广播数据异常' //+e.contentDetails
console.log(contentDetailsInfo)
if (contentDetailsInfo.length > 0) {
if (contentDetailsInfo[0].functions.length > 0) {
msg = contentDetailsInfo[0].functions[0].params.text
}
e.contentDetails = msg;
}
e.contentDetails = msg;
}
}
});
this.tableData = result.rows;
setTimeout(() => {
this.tableData = result.rows;
}, 200);
// this.$nextTick(()=>{
// })
this.total = result.total;
this.sumtotal = this.total + sum; // sumtotal
});
},
@ -300,20 +286,26 @@ export default {
display: flex;
gap: 6px;
}
.sum-total {
margin-left: 10px;
font-weight: bold;
color: #f6f1f1;
}
}
.body {
flex: 1;
position: relative;
overflow-y: auto;
overflow-x: hidden;
.content {
position: absolute;
width: 100%;
height: 100%;
overflow: auto;
}
flex: 1;
position: relative;
overflow-y: auto;
overflow-x: hidden;
.content {
position: absolute;
width: 100%;
height: 100%;
overflow: auto;
}
}
.footer {
margin-top: 15px;
@ -323,15 +315,18 @@ export default {
justify-content: center;
}
.board_shower{
.board_shower {
margin: 4px;
}
::v-deep .el-carousel__indicators--horizontal{
line-height: 0; height: 16px;
.el-carousel__indicator--horizontal{
::v-deep .el-carousel__indicators--horizontal {
line-height: 0;
height: 16px;
.el-carousel__indicator--horizontal {
padding: 7px 4px;
}
}
::v-deep .el-table__cell div.cell {
padding: 0 10px !important;
}

Loading…
Cancel
Save