Commit c217a487 authored by danfuman's avatar danfuman

修改

parent fa41b188
import request from '@/utils/request'
//监控动态
export function dynamicPage(data) {
return request({
url: '/monitor/company/dynamicPage',
method: 'post',
data: data
})
}
//监控动态详情
export function dynamicDetail(data) {
return request({
url: '/monitor/company/dynamicDetail',
method: 'post',
data: data
})
}
// 企业监控列表
export function companyPage(data) {
return request({
url: '/monitor/system/companyPage',
method: 'post',
data: data
})
}
// 模糊查企业联想
export function companyList(data) {
return request({
url: '/enterprise/index',
method: 'post',
data: data
})
}
// 添加监控企业
export function companyAdd(data) {
return request({
url: '/monitor/system/add',
method: 'post',
data: data
})
}
// 取消监控企业
export function companyCancel(data) {
return request({
url: '/monitor/system/cancel',
method: 'post',
data: data
})
}
// 企业监控详情
export function companyDetail(data) {
return request({
url: '/monitor/system/detail',
method: 'post',
data: data
})
}
// 监控报告
export function reportPage(data) {
return request({
url: '/monitor/reportPage',
method: 'post',
data: data
})
}
// 监控维度设置-类型
export function rulesSelect() {
return request({
url: '/monitor/push/rulesSelect',
method: 'get',
})
}
// 监控维度设置-新增修改
export function insertOrUpdate(data) {
return request({
url: '/monitor/push/rules/insertOrUpdate',
method: 'post',
data: data
})
}
// 监控维度设置
export function rulesDetail(data) {
return request({
url: '/monitor/push/rulesDetail',
method: 'post',
data: data
})
}
...@@ -16,6 +16,21 @@ export function getConfig(configId) { ...@@ -16,6 +16,21 @@ export function getConfig(configId) {
method: 'get' method: 'get'
}); });
} }
// 根据参数键名查询参数值
export function configKey(configId) {
return request({
url: '/system/config/key/' + configId,
method: 'get'
});
}
// 根据键修改值
export function configUpdate(data) {
return request({
url: '/system/config/updateValue',
method: 'PUT',
data: data
});
}
// 根据参数键名查询参数值 // 根据参数键名查询参数值
export function getConfigKey(configKey) { export function getConfigKey(configKey) {
......
import request from '@/utils/request';
import { parseStrEmpty } from "@/utils/ruoyi";
// 推送分页列表
export function pageList(query) {
return request({
url: '/sysPush/pageList',
method: 'get',
params: query
});
}
// 添加推送人
export function sysPush(data) {
return request({
url: '/sysPush',
method: 'post',
data: data
});
}
// 修改推送状态
export function updateStatus(data) {
return request({
url: '/sysPush/updateStatus',
method: 'put',
data: data
});
}
// 删除推送人
export function sysPushDel(id) {
return request({
url: '/sysPush/' + id,
method: 'delete'
});
}
...@@ -92,8 +92,29 @@ let checkTag = function(str, oldTag, newTag) { //str字符串, oldTag当前标 ...@@ -92,8 +92,29 @@ let checkTag = function(str, oldTag, newTag) { //str字符串, oldTag当前标
return newHtml return newHtml
} }
let changeTime = function(item){
let value = Number(item)
let now = new Date().getTime()
if( now-value<1000*60*59 ) {
if( (now-value)/(1000*60) ){
return Math.ceil((now-value)/(1000*60))+'分钟前'
}else{
return '1分钟前'
}
}else if(now-value<1000*60*60*23) {
return Math.ceil((now-value)/(1000*60*60))+'小时前'
}else {
let YMD = new Date(value)
let Y = YMD.getFullYear() + '-';//年
let M =(YMD.getMonth() + 1 < 10 ? '0' + (YMD.getMonth() + 1) : YMD.getMonth() + 1) + '-';//月
let D =(YMD.getDate() < 10 ? '0' + YMD.getDate() : YMD.getDate());//日
return Y+M+D
}
}
export { export {
encodeStr, encodeStr,
changeTime,
changePath, changePath,
saveFixed, saveFixed,
removeTag, removeTag,
......
...@@ -103,6 +103,21 @@ export const constantRoutes = [ ...@@ -103,6 +103,21 @@ export const constantRoutes = [
// } // }
// ] // ]
// }, // },
{
path: '/monitoring/MonitoringReportDetails',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/monitoring/MonitoringReportDetails/:id',
component: () => import('@/views/monitoring/MonitoringReportDetails'),
name: 'MonitoringDynamics',
meta: { title: '监控报告详情', noCache: false },
}
]
},
{ {
path: '', path: '',
component: Layout, component: Layout,
......
...@@ -5,9 +5,21 @@ ...@@ -5,9 +5,21 @@
<div class="search"> <div class="search">
<div class="label">监控维度</div> <div class="label">监控维度</div>
<div class="checkbox"> <div class="checkbox">
<el-radio-group v-model="radio"> <el-radio-group v-model="radio" @change="radioBtn">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio> <el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio>
</el-radio-group> </el-radio-group>
<el-date-picker
v-if="radio==6"
v-model="date"
type="daterange"
value-format="yyyy-MM-dd"
unlink-panels
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="changePicker">
</el-date-picker>
</div> </div>
</div> </div>
</div> </div>
...@@ -15,45 +27,41 @@ ...@@ -15,45 +27,41 @@
<div class="table-search"> <div class="table-search">
<div class="total">共 162 条</div> <div class="total">共 162 条</div>
<div class="right"> <div class="right">
<span class="add">添加企业</span> <span class="add" @click="addEnterprise">添加企业</span>
<span class="add1">批量监控</span> <span class="add1" @click="handleBatch">批量监控</span>
</div> </div>
</div> </div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
class="fixed-table" class="fixed-table"
element-loading-text="Loading" element-loading-text="Loading"
:data="tableData"
border border
highlight-current-row highlight-current-row
> >
<el-table-column label="序号" width="60" align="left" fixed> <el-table-column label="序号" width="60" align="left" fixed>
<!--<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>--> <template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
<template slot-scope="scope">1</template>
</el-table-column>
<el-table-column label="监控对象" align="left">
<template slot-scope="scope">
中国中铁股份有限公司
</template>
</el-table-column> </el-table-column>
<el-table-column label="监控对象" align="left" prop="companyName"></el-table-column>
<el-table-column label="风险动态" align="left"> <el-table-column label="风险动态" align="left">
<template slot-scope="scope"> <template slot-scope="scope">
中国中铁股份有限公司 <span class="color1 span">高风险 {{scope.row.highRiskCount}}</span>
</template> <span class="color2 span">中风险 {{scope.row.middleRiskCount}}</span>
</el-table-column> <span class="color3 span">低风险 {{scope.row.lowRiskCount}}</span>
<el-table-column label="监控时间" width="200" align="left"> <span class="color4 span">提示 {{scope.row.promptCount}}</span>
<template slot-scope="scope"> <span class="color5 span">正向 {{scope.row.positiveCount}}</span>
2022-09-02
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="监控时间" width="240" align="left" prop="createTime"></el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="left"
width="180" width="180"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
fixed="right" fixed="right"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<span>取消监控</span> <span style="color:#0081FF;" @click="handleCancel(scope.row.companyId)">取消监控</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -63,45 +71,44 @@ ...@@ -63,45 +71,44 @@
<el-dialog :visible.sync="jkVisible" custom-class='dialog-claim' title="提示" width="480px" > <el-dialog :visible.sync="jkVisible" custom-class='dialog-claim' title="提示" width="480px" >
<div class="dialog-content"><i class="el-icon-warning"></i>取消后将错过企业最新动态</div> <div class="dialog-content"><i class="el-icon-warning"></i>取消后将错过企业最新动态</div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button>我再想想</el-button> <el-button @click="jkVisible===false">我再想想</el-button>
<el-button type="primary">确定取消</el-button> <el-button type="primary" @click="handleConfirm">确定取消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="qyVisible" custom-class='dialog-claim' title="添加监控企业" width="480px" > <el-dialog :visible.sync="qyVisible" custom-class='dialog-claim' title="添加监控企业" width="480px" >
<div class="add-content"> <div class="add-content">
<div class="enterprise"> <div class="enterprise">
<div class="label">企业名称</div> <div class="label">企业名称</div>
<el-input class="name" placeholder="请输入企业名称"> <el-input class="name" placeholder="请输入企业名称" v-model="companyName">
<el-button slot="append">搜索</el-button> <el-button slot="append" @click="handleKeyword()">搜索</el-button>
</el-input> </el-input>
</div> </div>
<div class="companyList"> <div class="companyList" v-if="dataList.length > 0">
<div class="list"> <div class="list">
<div class="item"> <div class="item" v-for="item in dataList">
<div class="item-left"> <div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />--> <img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />--> <img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<img src="@/assets/images/enterprise.png"/>
</div> </div>
<div class="item-right"> <div class="item-right">
<p class="right-title">中国铁建集团</p> <p class="right-title" v-html="item.name"></p>
<p class="right-tips">推荐监控</p> <p class="right-tips">推荐监控</p>
</div> </div>
<el-checkbox></el-checkbox> <el-checkbox @change="changeCheckbox(item)"></el-checkbox>
</div> </div>
</div> </div>
<p class="tips">前往企业查询寻找企业线索<i class="el-icon-arrow-right"></i></p> <p class="tips">前往企业查询寻找企业线索<i class="el-icon-arrow-right"></i></p>
<div class="btn"> <div class="btn">
<div> <div>
<el-button>取消</el-button> <el-button @click="qyVisible===false">取消</el-button>
<el-button type="primary">确定</el-button> <el-button type="primary" @click="handleAdd">确定</el-button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button>取消</el-button> <el-button>取消</el-button>
<el-button type="primary">确定</el-button> <el-button type="primary" @click="handleAdd">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="pldrVisible" custom-class='dialog-claim' title="批量导入监控企业" width="480px" > <el-dialog :visible.sync="pldrVisible" custom-class='dialog-claim' title="批量导入监控企业" width="480px" >
...@@ -109,7 +116,13 @@ ...@@ -109,7 +116,13 @@
<el-upload <el-upload
class="upload-demo" class="upload-demo"
drag drag
action="https://jsonplaceholder.typicode.com/posts/" :action="action"
:file-list="fileList"
accept=".excel,.xlsx"
:headers="headers"
:on-change="handleFileListChange"
:auto-upload="false"
ref="upload"
multiple> multiple>
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
<div class="el-upload__text"> <div class="el-upload__text">
...@@ -121,18 +134,21 @@ ...@@ -121,18 +134,21 @@
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button class="download" icon="el-icon-download">下载模版</el-button> <el-button class="download" icon="el-icon-download">下载模版</el-button>
<el-button>取消</el-button> <el-button>取消</el-button>
<el-button type="primary">确定</el-button> <el-button type="primary" @click="submitUpload">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { companyPage,companyList,companyAdd,companyCancel } from '@/api/monitoring/monitoring'
import { getToken } from '@/utils/auth'
export default { export default {
name: 'EnterpriseMonitoring', name: 'EnterpriseMonitoring',
data() { data() {
return { return {
radio:1, radio:null,
date:[],
radioList:[ radioList:[
{ {
type:1, type:1,
...@@ -159,25 +175,161 @@ ...@@ -159,25 +175,161 @@
label:'自定义日期' label:'自定义日期'
}, },
], ],
tableData:[ tableData:[],
{ tableDataTotal:0,
name:'中国中铁股份有限公司', companyName:'',
time:'2022-09-02',
}
],
jkVisible:false, jkVisible:false,
qyVisible:false, qyVisible:false,
pldrVisible:false, pldrVisible:false,
queryParams:{
pageNum:1,
pageSize:10,
condition:{}
},
dataList:[],
cid:[],
//上传
action:process.env.VUE_APP_BASE_API + '/monitor/system/import',
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
companyId:''
} }
}, },
created() { created() {
this.querySubmit()
}, },
methods: { methods: {
async querySubmit() {
handleClick() { console.log(this.queryParams)
companyPage(this.queryParams).then(res => {
console.log(res)
this.tableData=res.rows
this.tableDataTotal=res.total
})
},
handleKeyword(){
let data={
keyword:this.companyName,
page:{
"page": 1,
"limit": 50,
}
}
companyList(data).then(res => {
console.log(res.data.list)
this.dataList=res.data.list
})
},
changeCheckbox(item){
console.log(item)
if (this.cid.indexOf(item.id) == -1) {
this.cid.push(item.id)
} else {
this.cid.splice(this.cid.indexOf(item.id), 1)
}
},
handleAdd(){
let data={
cid:this.cid
}
companyAdd(data).then(res => {
this.qyVisible=false;
this.$modal.success("新增成功");
this.querySubmit()
})
},
radioBtn(val){
let endTime = new Date()
switch (val) {
case 1:
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
this.querySubmit()
break;
case 2:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 3))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 4:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 15))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 5:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 6:
this.date=[]
break;
default:
break;
}
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
this.queryParams.condition.beginTime = value[0]
this.queryParams.condition.endTime = value[1]
}
this.querySubmit()
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
},
handleCancel(id){
this.jkVisible=true;
this.companyId=id
},
handleConfirm(){
companyCancel({cid:[this.companyId]}).then(res => {
this.jkVisible=false;
this.$modal.success("取消成功");
this.querySubmit()
})
},
addEnterprise(){
this.qyVisible=true;
},
handleBatch(){
this.pldrVisible=true;
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 ){
this.$refs.upload.submit();
let _this = this
setTimeout(function() {
// _this.getList()
_this.$message.success('上传成功!')
// _this.isupload = false
},3000)
} }
else
this.$message.error({message:res.msg,showClose:true})
},
submitUpload() {
this.$refs.upload.submit();
},
} }
} }
</script> </script>
...@@ -191,9 +343,22 @@ ...@@ -191,9 +343,22 @@
.search{ .search{
display: -webkit-box; display: -webkit-box;
align-items: flex-start; align-items: flex-start;
line-height: 20px; line-height: 16px;
.label{ .label{
margin-right: 24px; margin-right: 24px;
color: rgba(35,35,35,0.8);
font-size: 14px;
}
}
.checkbox{
display: flex;
align-items: flex-start;
padding-left: 12px;
position: relative;
::v-deep .el-date-editor{
position: absolute;
left: 602px;
top: -7px
} }
} }
} }
...@@ -233,6 +398,37 @@ ...@@ -233,6 +398,37 @@
} }
} }
} }
.table-item{
.span{
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px 2px 2px 2px;
font-size: 12px;
margin-right: 10px;
display: inline-block;
}
.color1{
background: #FFECE8;
color: #FF3C3C;
}
.color2{
background: #FFF3E8;
color: #F77234;
}
.color3{
background: #FFF8E8;
color: #FFAB44;
}
.color4{
background: #E8F7FF;
color: #0081FF;
}
.color5{
background: #E8FFF1;
color: #0CBC6D;
}
}
} }
::v-deep .dialog-claim{ ::v-deep .dialog-claim{
margin:0 !important; margin:0 !important;
...@@ -309,6 +505,7 @@ ...@@ -309,6 +505,7 @@
position: absolute; position: absolute;
.list{ .list{
max-height:372px; max-height:372px;
overflow: auto;
} }
.item{ .item{
display: flex; display: flex;
...@@ -324,6 +521,7 @@ ...@@ -324,6 +521,7 @@
} }
} }
.item-right{ .item-right{
width: 250px;
p{ p{
margin: 0; margin: 0;
padding: 0; padding: 0;
......
...@@ -7,26 +7,21 @@ ...@@ -7,26 +7,21 @@
<div class="main-item"> <div class="main-item">
<div class="label">风险类型</div> <div class="label">风险类型</div>
<div class="main-right"> <div class="main-right">
<div class="checkbox"> <div class="select-popper">
<div class="checkbox-content-qx"> <span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-checkbox v-model="checkFx" @change="checkFxBtn">全部</el-checkbox> <el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags @change="handleSelect" multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div> </div>
<el-checkbox-group v-model="queryParams.fxType" class="keyword_checkbox" @change="checkFx1Btn"> <div class="select-popper">
<el-checkbox v-for="item in fxlx" :label="item.value" :key="item.label">{{item.label}}</el-checkbox> <span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
</el-checkbox-group> <el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags @change="handleSelect" multiple placeholder="请选择">
</div> <el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
</div> <el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</div> </el-option>
<div class="main-item"> </el-select>
<div class="label">监控维度</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkJkwd" @change="checkJkwdBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="queryParams.jkwdType" class="keyword_checkbox" @change="checkJkwd1Btn">
<el-checkbox v-for="item in jkwd" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div> </div>
</div> </div>
</div> </div>
...@@ -35,15 +30,18 @@ ...@@ -35,15 +30,18 @@
<div class="m-main"> <div class="m-main">
<div class="main-item"> <div class="main-item">
<div class="label">推送频率</div> <div class="label">推送频率</div>
<el-radio v-model="queryParams.radio" label="1">每天</el-radio> <el-radio v-model="queryParams.pushFrequency" label="0">每小时</el-radio>
<el-radio v-model="queryParams.radio" label="2">工作日(排除节假日)</el-radio> <el-radio v-model="queryParams.pushFrequency" label="1">每天</el-radio>
<el-radio v-model="queryParams.pushFrequency" label="2">工作日(排除节假日)</el-radio>
</div> </div>
<div class="main-item" style="line-height: 32px;"> <div class="main-item" style="line-height: 32px;">
<div class="label">推送时段</div> <div class="label">推送时段</div>
<el-time-picker <el-time-picker
is-range is-range
class="timePicker" class="timePicker"
v-model="queryParams.time" v-model="time"
:picker-options="{ step: '01:00' }"
@change="changeTime"
range-separator="至" range-separator="至"
start-placeholder="开始时间" start-placeholder="开始时间"
end-placeholder="结束时间" end-placeholder="结束时间"
...@@ -55,17 +53,17 @@ ...@@ -55,17 +53,17 @@
<div class="m-main"> <div class="m-main">
<div class="main-item"> <div class="main-item">
<div class="label">接收方式</div> <div class="label">接收方式</div>
<el-radio v-model="queryParams.radio" label="1">全部</el-radio> <!--<el-radio v-model="queryParams.radio" label="1">全部</el-radio>-->
<el-radio v-model="queryParams.radio" label="2">手机短信</el-radio> <el-radio v-model="queryParams.receiveMode" label="0">手机短信</el-radio>
<el-radio v-model="queryParams.radio" label="3">PC</el-radio> <!--<el-radio v-model="queryParams.radio" label="3">PC</el-radio>-->
</div> </div>
<div class="main-item" style="line-height: 32px;"> <div class="main-item" style="line-height: 32px;">
<div class="label">手机号码</div> <div class="label">手机号码</div>
<el-input class="phone" v-model="queryParams.phone" placeholder="请输入手机号"></el-input> <el-input class="phone" v-model="queryParams.phones" placeholder="请输入手机号"></el-input>
</div> </div>
</div> </div>
<div class="search"> <div class="search">
<span class="btn1">保存</span> <span class="btn1" @click="handleAdd">保存</span>
<span class="btn2">重置</span> <span class="btn2">重置</span>
</div> </div>
</div> </div>
...@@ -74,58 +72,95 @@ ...@@ -74,58 +72,95 @@
</template> </template>
<script> <script>
import { rulesSelect,insertOrUpdate,rulesDetail } from '@/api/monitoring/monitoring'
export default { export default {
name: 'MonitorSettings', name: 'MonitorSettings',
data() { data() {
return { return {
fxlx:[ selectList:[],
{ selectList1:[],
value:'1', sffx:[],
label:'工商风险' gsfx:[],
},
{
value:'2',
label:'司法风险'
},
],
jkwd:[
{
value:'1',
label:'法院公告'
},
{
value:'2',
label:'裁判文书'
},
{
value:'3',
label:'开庭公告'
},
{
value:'3',
label:'股权冻结'
},
],
checkFx: true, checkFx: true,
checkJkwd: true, checkJkwd: true,
queryParams:{ queryParams:{
fxType:[], fxType:[],
jkwdType:[], jkwdType:[],
time:[new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)], pushFrequency:'0',
radio:'1', receiveMode:'0',
phone:'' phones:''
} },
time:''
} }
}, },
created() { created() {
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
rulesDetail({}).then(res => {
console.log(res)
})
}, },
methods: { methods: {
checkFxBtn(val) { changeSffx(val) {
this.queryParams.fxType = []; if (this.sffx.indexOf(val.dimensionName) == -1) {
this.checkFx = true; this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
}
},
changeGsfx(val) {
if (this.gsfx.indexOf(val.dimensionName) == -1) {
this.gsfx.push(val.dimensionName)
} else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
}
},
handleSelect(val) {
// console.log(val)
},
handleAdd(){
let params={
pushFrequency:Number(this.queryParams.pushFrequency),
riskType:'',
dimension:'',
receiveMode:Number(this.queryParams.receiveMode),
phones:this.queryParams.phones,
}
if(this.sffx.length > 0 && this.gsfx.length > 0){
params.riskType='司法风险,工商风险'
params.dimension=this.sffx.join()+','+this.gsfx.join()
}
if(this.sffx.length > 0 && this.gsfx.length === 0){
params.riskType='司法风险'
params.dimension=this.sffx.join()
}
if(this.sffx.length === 0 && this.gsfx.length > 0){
params.riskType='工商风险'
params.dimension=this.gsfx.join()
}
if(this.time.length > 0){
params.timePeriodStart=this.time[0]
params.timePeriodEnd=this.time[1]
}
console.log(params)
insertOrUpdate(params).then(res => {
console.log(res)
})
},
changeTime(val){
console.log(val)
}, },
checkFx1Btn(val){ checkFx1Btn(val){
console.log(val)
if (val.length > 0) { if (val.length > 0) {
this.checkFx = false; this.checkFx = false;
} else if (val.length == 0) { } else if (val.length == 0) {
...@@ -148,6 +183,16 @@ ...@@ -148,6 +183,16 @@
} }
</script> </script>
<style lang="scss">
.el-popper[x-placement^="bottom"] {
margin-top: 5px !important;
}
.el-select-dropdown__item.selected,
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{
color: #3181fa;
font-size: 0;
}
</style>
<style lang="scss" scoped> <style lang="scss" scoped>
.MonitorSettings{ .MonitorSettings{
.content{ .content{
...@@ -178,13 +223,45 @@ ...@@ -178,13 +223,45 @@
font-weight: 400; font-weight: 400;
color: rgba(35, 35, 35, 0.8); color: rgba(35, 35, 35, 0.8);
} }
.color_text {
color: #0081ff;
}
.main-right { .main-right {
width: calc(100% - 112px); width: calc(100% - 112px);
.checkbox{ .select-popper {
display: flex; text-align: center;
align-items: flex-start; display: inline-block;
.checkbox-content-qx{ position: relative;
margin-right: 24px; color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
} }
} }
} }
......
...@@ -4,15 +4,15 @@ ...@@ -4,15 +4,15 @@
<div class="search"> <div class="search">
<div class="search-item" style="line-height: 32px;margin-top: 0;padding-bottom: 8px;"> <div class="search-item" style="line-height: 32px;margin-top: 0;padding-bottom: 8px;">
<div class="label">监控维度</div> <div class="label">监控维度</div>
<el-input class="name" placeholder="请输入监控对象名称"> <el-input class="name" placeholder="请输入监控对象名称" v-model="companyName">
<el-button slot="append">搜索</el-button> <el-button slot="append" @click="handleKeyword()">搜索</el-button>
</el-input> </el-input>
</div> </div>
<div class="search-item"> <div class="search-item">
<div class="label">更新时间</div> <div class="label">更新时间</div>
<div class="checkbox"> <div class="checkbox">
<el-radio-group v-model="radio"> <el-radio-group v-model="radio">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio> <el-radio v-for="item in radioList" @change="radioBtn" :label="item.type">{{item.label}}</el-radio>
</el-radio-group> </el-radio-group>
<el-date-picker <el-date-picker
v-if="radio==6" v-if="radio==6"
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
unlink-panels unlink-panels
size="small" size="small"
@change="changePicker"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期"> end-placeholder="结束日期">
...@@ -29,36 +30,23 @@ ...@@ -29,36 +30,23 @@
</div> </div>
<div class="search-item" style="line-height: 32px;"> <div class="search-item" style="line-height: 32px;">
<div class="label">监控类型</div> <div class="label">监控类型</div>
<div class="checkbox"> <div class="main-right">
<el-checkbox @change="checkJklxBtn('司法风险')"></el-checkbox> <div class="select-popper">
<el-select v-model="queryParams.type" @change="iptAdaptive(inputID1,true,'changeSelect1')" <span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
:class="[`select-adaptive-${inputID1}`,queryParams.type.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable <el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags multiple placeholder="请选择">
placeholder="司法风险"> <el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-option v-for="(item,index) in sffxList" :key="index" :label="item" :value="item"></el-option> <el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select> </el-select>
<el-checkbox @change="checkJklxBtn('工商变更')"></el-checkbox> </div>
<el-select v-model="queryParams.gsbgType" @change="iptAdaptive(inputID2,true,'changeSelect1')" <div class="select-popper">
:class="[`select-adaptive-${inputID2}`,queryParams.gsbgType.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable <span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
placeholder="工商变更"> <el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(item,index) in gsbgList" :key="index" :label="item" :value="item"></el-option> <el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select> </el-select>
<!--<el-checkbox-group v-model="fxlxType" class="keyword_checkbox" @change="checkJklxBtn">--> </div>
<!--<el-checkbox v-for="item in jkType" :label="item.value" :key="item.label"></el-checkbox>-->
<!--<template v-if="item.label=='司法风险'">-->
<!--<el-select v-model="queryParams.type" @change="iptAdaptive(inputID1,true,'changeSelect1')"-->
<!--:class="[`select-adaptive-${inputID1}`,queryParams.type.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable-->
<!--:placeholder="item.label">-->
<!--<el-option v-for="(item,index) in sffxList" :key="index" :label="item" :value="item"></el-option>-->
<!--</el-select>-->
<!--</template>-->
<!--<template v-if="item.label=='工商变更'">-->
<!--<el-select v-model="queryParams.gsbgType" @change="iptAdaptive(inputID2,true,'changeSelect1')"-->
<!--:class="[`select-adaptive-${inputID2}`,queryParams.gsbgType.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable-->
<!--:placeholder="item.label">-->
<!--<el-option v-for="(item,index) in gsbgList" :key="index" :label="item" :value="item"></el-option>-->
<!--</el-select>-->
<!--</template>-->
<!--</el-checkbox-group>-->
</div> </div>
</div> </div>
<div class="search-item"> <div class="search-item">
...@@ -68,16 +56,16 @@ ...@@ -68,16 +56,16 @@
<div class="checkbox-content-qx"> <div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxjbBtn">全部</el-checkbox> <el-checkbox v-model="checkFx" @change="checkFxjbBtn">全部</el-checkbox>
</div> </div>
<el-radio-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn"> <el-checkbox-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn">
<el-radio v-for="item in fxjb" :label="item.value" :key="item.label">{{item.label}}</el-radio> <el-checkbox v-for="item in fxjb" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-radio-group> </el-checkbox-group>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="content"> <div class="content">
<div class="total">162</div> <div class="total">{{tableDataTotal}}</div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
class="fixed-table" class="fixed-table"
...@@ -87,34 +75,22 @@ ...@@ -87,34 +75,22 @@
highlight-current-row highlight-current-row
> >
<el-table-column label="序号" width="60" align="left" fixed> <el-table-column label="序号" width="60" align="left" fixed>
<!--<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>--> <template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
<template slot-scope="scope">1</template>
</el-table-column>
<el-table-column label="监控对象" prop="name" align="left" width="250">
<template slot-scope="scope">
中国中铁股份有限公司
</template>
</el-table-column>
<el-table-column label="风险级别" prop="fxjb" align="left" width="120">
<template slot-scope="scope">
正向
</template>
</el-table-column>
<el-table-column label="监控类型" prop="jklx" align="left" width="150">
<template slot-scope="scope">
新增中标业绩
</template>
</el-table-column>
<el-table-column label="动态内容" prop="dtlr" align="left">
<template slot-scope="scope">
新增中标业绩
</template>
</el-table-column> </el-table-column>
<el-table-column label="更新时间" prop="time" align="left" width="150"> <el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope"> <template slot-scope="scope">
2022-09-02 <div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
...@@ -132,7 +108,14 @@ ...@@ -132,7 +108,14 @@
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" > <el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
<div class="dialog-content"> <div class="dialog-content">
<template v-if="title=='开庭公告详情'"> <template v-if="title=='开庭公告详情'">
<info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth"></info-table> <info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth">
<template v-slot:relatedCompanies="row">
<p v-for="i in row.data.relatedCompanies">
{{i.role}}:<br/>
{{i.name}}
</p>
</template>
</info-table>
</template> </template>
<template v-if="title=='失信被执行人详情'"> <template v-if="title=='失信被执行人详情'">
<info-table class="info-tab" :list="defaultList1" :obj="detail" :labelWidth="labelWidth"></info-table> <info-table class="info-tab" :list="defaultList1" :obj="detail" :labelWidth="labelWidth"></info-table>
...@@ -147,7 +130,14 @@ ...@@ -147,7 +130,14 @@
<info-table class="info-tab" :list="defaultList4" :obj="detail" :labelWidth="labelWidth"></info-table> <info-table class="info-tab" :list="defaultList4" :obj="detail" :labelWidth="labelWidth"></info-table>
</template> </template>
<template v-if="title=='裁判文书详情'"> <template v-if="title=='裁判文书详情'">
<info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth"></info-table> <info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth">
<template v-slot:relatedCompanies="row">
<p v-for="i in row.data.relatedCompanies">
{{i.role}}:<br/>
{{i.name}}
</p>
</template>
</info-table>
</template> </template>
</div> </div>
</el-dialog> </el-dialog>
...@@ -156,6 +146,8 @@ ...@@ -156,6 +146,8 @@
<script> <script>
import { v4 } from "uuid"; import { v4 } from "uuid";
import {changeTime} from "@/assets/js/common.js"
import { dynamicPage,companyDetail,rulesSelect } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable'; import InfoTable from '../detail/party-a/component/infoTable';
export default { export default {
name: 'MonitoringDynamics', name: 'MonitoringDynamics',
...@@ -164,6 +156,7 @@ ...@@ -164,6 +156,7 @@
}, },
data() { data() {
return { return {
changeTime,
radio:1, radio:1,
date:'', date:'',
radioList:[ radioList:[
...@@ -194,23 +187,23 @@ ...@@ -194,23 +187,23 @@
], ],
fxjb:[ fxjb:[
{ {
value:'1', value:'提示',
label:'提示' label:'提示'
}, },
{ {
value:'2', value:'正向',
label:'正向' label:'正向'
}, },
{ {
value:'3', value:'低风险',
label:'低风险' label:'低风险'
}, },
{ {
value:'4', value:'中风险',
label:'中风险' label:'中风险'
}, },
{ {
value:'5', value:'高风险',
label:'高风险' label:'高风险'
}, },
], ],
...@@ -226,136 +219,228 @@ ...@@ -226,136 +219,228 @@
label:'工商变更' label:'工商变更'
}, },
], ],
sffxList:['开庭公告','裁判文书','法院公告','失信被执行人','被执行人','限制高消费','股权冻结'], selectList:[],
gsbgList:['法定代表人变更','企业类型变更','注册资本变更','股东变更','对外投资变更','企业名称变更','注册地址变更','经营状态变更','分支机构'], selectList1:[],
sffx:[],
gsfx:[],
queryParams:{ queryParams:{
pageNum:1,
pageSize:10,
condition:{}
},
type:[], type:[],
gsbgType:[], gsbgType:[],
}, companyName:'',
fxjbType:'', fxjbType:[],
inputID1: this.getUid(), inputID1: this.getUid(),
inputID2: this.getUid(), inputID2: this.getUid(),
tableData:[ tableData:[],
{ tableDataTotal:0,
name:'中国中铁股份有限公司',
jklx:'正向',
kjlx:'新增中标业绩',
dtlr:'新增中标,中标金额234.45万元:怀化国际陆港商贸服务综合物流枢纽及配套工程建设项目公共配套服务设施(市政绿化提档升级)项目一期EPC',
time:'2022-09-02',
}
],
dialogVisible:false, dialogVisible:false,
labelWidth: 140, labelWidth: 140,
//开庭公告详情 //开庭公告详情
defaultList0:[ defaultList0:[
{ name: '案由', prop: 'a' }, { name: '案由', prop: 'causeAction' },
{ name: '案号', prop: 'b' }, { name: '案号', prop: 'caseNo' },
{ name: '开庭时间', prop: 'c' }, { name: '开庭时间', prop: 'hearingDate' },
{ name: '承办部门', prop: 'd' }, { name: '承办部门', prop: 'department' },
{ name: '审判长/主判人', prop: 'e'}, { name: '审判长/主判人', prop: 'judge'},
{ name: '当事人', prop: 'f'}, { name: '当事人', prop: 'relatedCompanies',slot: true},
{ name: '法院', prop: 'g'}, { name: '法院', prop: 'court'},
{ name: '法庭', prop: 'h'}, { name: '法庭', prop: 'tribunal'},
{ name: '公告内容', prop: 'j', style: true }, { name: '公告内容', prop: 'content', style: true },
], ],
//失信被执行人详情 //失信被执行人详情
defaultList1:[ defaultList1:[
{ name: '失信被执行人行为具体情形', prop: 'a', style: true }, { name: '失信被执行人行为具体情形', prop: 'executionDesc', style: true },
{ name: '履行情况', prop: 'b' }, { name: '履行情况', prop: 'finalDuty' },
{ name: '立案文号', prop: 'c' }, { name: '立案文号', prop: 'caseNumber' },
{ name: '立案日期', prop: 'd' }, { name: '立案日期', prop: 'date' },
{ name: '执行依据文号', prop: 'e'}, { name: '执行依据文号', prop: 'docNumber'},
{ name: '执行法院', prop: 'f'}, { name: '执行法院', prop: 'court'},
], ],
//法院公告详情 //法院公告详情
defaultList2:[ defaultList2:[
{ name: '原告', prop: 'a',style: true }, { name: '当事人', prop: 'people',style: true },
{ name: '被告', prop: 'b' }, { name: '身份', prop: 'role' },
{ name: '公共类型', prop: 'c' }, { name: '公共类型', prop: 'type' },
{ name: '公告日期', prop: 'd' }, { name: '公告日期', prop: 'date' },
{ name: '公告法院', prop: 'e',style: true}, { name: '公告法院', prop: 'court',style: true},
{ name: '案由', prop: 'f',style: true}, { name: '案由', prop: 'caseReason',style: true},
], ],
//经营异常详情 //经营异常详情
defaultList3:[ defaultList3:[
{ name: '案号', prop: 'a'}, { name: '列入日期', prop: 'inDate'},
{ name: '经营异常类型', prop: 'b' }, { name: '移出日期', prop: 'outDate' },
{ name: '列入经营异常名录原因', prop: 'c',style: true }, { name: '列入经营异常原因', prop: 'outReason',style: true },
{ name: '拖欠天数', prop: 'd' }, { name: '做出决定机关(移入)', prop: 'department' },
{ name: '涉及金额', prop: 'e'}, { name: '做出决定机关(移出)', prop: 'outDepartment'},
{ name: '列入日期', prop: 'e'}, { name: '移出经营移除名录原因', prop: 'outReason',style: true},
{ name: '列入机关', prop: 'e'},
{ name: '数据来源', prop: 'f',style: true},
], ],
//股权冻结详情 //股权冻结详情
defaultList4:[ defaultList4:[
{ name: '标题名称', prop: 'a'}, { name: '执行法院', prop: 'executiveCourt'},
{ name: '执行事项', prop: 'b' }, { name: '执行事项', prop: 'assistItem' },
{ name: '执行裁定文书号', prop: 'c'}, { name: '执行裁定文书号', prop: 'adjudicateNo'},
{ name: '执行通知文号', prop: 'd' }, { name: '执行通知文号', prop: 'number' },
{ name: '被执行人', prop: 'e'}, { name: '被执行人', prop: 'beExecutedPerson'},
{ name: '被执行人持有股权、其他投资权益数额', prop: 'e'}, { name: '被执行人持有股权、其他投资权益数额', prop: 'amount'},
{ name: '冻结期限自', prop: 'e'}, { name: '冻结期限自', prop: 'freezeStartDate'},
{ name: '冻结期限至', prop: 'f'}, { name: '冻结期限至', prop: 'freezeEndDate'},
{ name: '冻结期限', prop: 'f'}, { name: '冻结期限', prop: 'freezeYearMonth'},
{ name: '公示日期', prop: 'f'}, { name: '公示日期', prop: 'publicDate'},
], ],
//裁判文书详情 //裁判文书详情
defaultList5:[ defaultList5:[
{ name: '案由', prop: 'a'}, { name: '案由', prop: 'causeAction'},
{ name: '执行案号', prop: 'b' }, { name: '执行案号', prop: 'causeNo' },
{ name: '身份', prop: 'c'}, { name: '身份', prop: 'role'},
{ name: '当事人', prop: 'd' }, { name: '当事人', prop: 'relatedCompanies',slot: true },
{ name: '案件金额', prop: 'e'}, { name: '案件金额', prop: 'subAmount'},
{ name: '判决日期', prop: 'e'}, { name: '判决日期', prop: 'date'},
{ name: '判决结果', prop: 'e',style: true}, { name: '判决结果', prop: 'judgeresult',style: true},
], ],
title:'开庭公告详情', title:'法院公告详情',
detail:{ detail:{}
a:'民事借贷纠纷',
b:'(2023)豫44执513号',
c:'2021-11-20',
d:'-',
e:'-',
f:'原告:Z某某;被告L某某',
g:'宁乡县人民法院',
h:'第七审判庭',
j:'L某某宁乡县中小民间借贷服务有限公司: 本院受理原告C某某诉你民间借贷纠纷一案,现依法向你公告送达起诉状副本、应诉通知书、举证通知书、' +
'合议庭组成人员通知书及开庭传票等法律文书。自发出公告之日起,经过60日即视为送达。提出答辩状和举证的期限分别为公告期满后15日和30日内。' +
'并定于举证期满后第3日上午9时00分(遇法定假日顺延)在本院第七审判庭公开开庭审理,逾期将依法缺席裁判。 特此公告 发布日期:20160719',
}
} }
}, },
created() { created() {
this.getPlaceholder() this.getPlaceholder()
this.querySubmit()
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
}, },
methods: { methods: {
checkJklxBtn(val) { async querySubmit() {
console.log(val) let endTime = new Date()
if(val === '司法风险'){ if(this.radio === 1){
this.queryParams.type=this.queryParams.type.length != this.sffxList.length ? [] : this.sffxList; this.queryParams.condition.beginTime=this.formatDate(endTime)
this.iptAdaptive(this.inputID1,true,'changeSelect1') this.queryParams.condition.endTime=this.formatDate(endTime)
}
if(this.companyName){
this.queryParams.condition.companyName=this.companyName
}
if(this.fxjbType.length > 0){
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.tableData=res.rows;
this.tableDataTotal=res.total;
this.tableData.forEach(el => {
el.createTime = changeTime(el.createTime)
// 把动态内容从json字符串改为对象
el.details = JSON.parse(el.details)
// 对象转为键值对数组
let arr = Object.entries(el.details)
// 新建一个属性数组
el.Array = []
for(let [i,j] of arr){
el.Array.push({key:i,value:j})
}
})
console.log(this.tableData)
})
},
getDetail() {
companyDetail({dimensionName:'新增法院公告',sourceId:'0001c8e8-183f-48b5-a8ce-575b5c214b1a_65250c621707e177f7983cbf_'}).then(res => {
console.log(res)
this.detail=res.data;
})
},
changeSffx(val) {
if (this.sffx.indexOf(val.dimensionName) == -1) {
this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
} }
if(val==='工商变更'){ },
this.queryParams.gsbgType=this.queryParams.gsbgType.length != this.gsbgList.length ? [] : this.gsbgList; changeGsfx(val) {
this.iptAdaptive(this.inputID2,true,'changeSelect1') if (this.gsfx.indexOf(val.dimensionName) == -1) {
}else { this.gsfx.push(val.dimensionName)
this.queryParams.gsbgType=[] } else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
} }
}, },
checkFxjbBtn(val) { checkFxjbBtn(val) {
this.fxjbType = []; this.fxjbType = [];
this.checkFx = true; this.checkFx = true;
this.querySubmit()
}, },
checkFxjb1Btn(val){ checkFxjb1Btn(val){
if (val.length > 0) { if (val.length > 0) {
this.checkFx = false; this.checkFx = false;
} else if (val.length == 0) { } else if (val.length == 0) {
this.checkFx = true; this.checkFx = true;
this.fxjbType = [];
} }
this.querySubmit()
}, },
handleDetail(){ handleDetail(){
this.dialogVisible=true; this.dialogVisible=true;
this.getDetail()
},
handleKeyword(){
this.querySubmit()
},
radioBtn(val){
let endTime = new Date()
switch (val) {
case 1:
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
this.querySubmit()
break;
case 2:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 3))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 4:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 15))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 5:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 6:
this.date=[]
break;
default:
break;
}
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
this.queryParams.condition.beginTime = value[0]
this.queryParams.condition.endTime = value[1]
}
this.querySubmit()
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
}, },
async getPlaceholder() { async getPlaceholder() {
try { try {
...@@ -504,6 +589,49 @@ ...@@ -504,6 +589,49 @@
background: #F5F5F5; background: #F5F5F5;
width: 60px; width: 60px;
color: #0081FF; color: #0081FF;
text-align: center;
}
.el-input-group__append:hover{
background:#F5F5F5;
}
}
.main-right {
width: calc(100% - 112px);
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
}
} }
} }
.checkbox{ .checkbox{
...@@ -514,6 +642,11 @@ ...@@ -514,6 +642,11 @@
.checkbox-content-qx{ .checkbox-content-qx{
margin-right: 24px; margin-right: 24px;
} }
.keyword_checkbox{
::v-deep .el-checkbox{
margin-right: 24px;
}
}
::v-deep .el-checkbox{ ::v-deep .el-checkbox{
margin-right: 10px; margin-right: 10px;
} }
......
...@@ -3,133 +3,45 @@ ...@@ -3,133 +3,45 @@
<div class="app-container MonitoringReport"> <div class="app-container MonitoringReport">
<div class="header"> <div class="header">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="监控日报" name="first"></el-tab-pane> <el-tab-pane label="监控日报" name="1"></el-tab-pane>
<el-tab-pane label="监控周报" name="second"></el-tab-pane> <el-tab-pane label="监控周报" name="2"></el-tab-pane>
<el-tab-pane label="监控月报" name="third"></el-tab-pane> <el-tab-pane label="监控月报" name="3"></el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div class="report-content"> <div class="report-content">
<div class="list"> <div class="list" v-for="item in dataList">
<div class="list-title"> <div class="list-title">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">今日</span> <span class="common-title">{{item.period}}</span>
</div> </div>
<div class="flex-box query-ability"> <div class="flex-box query-ability">
<span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息 <span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息
</div> </div>
</div> </div>
</div> </div>
<div class="item"> <div class="item" v-for="i in item.list">
<div class="item-left"> <div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />--> <img v-if="i.logoUrl" :src="i.logoUrl" :alt="i.companyOrstaffName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />--> <img v-else src="@/assets/images/enterprise.png" :alt="i.companyOrstaffName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<img src="@/assets/images/enterprise.png"/>
</div> </div>
<div class="item-right"> <div class="item-right">
<p class="right-title"> <p class="right-title">
<span>中国铁建集团</span> <router-link :to="`/monitoring/MonitoringReportDetails/${i.companyOrstaffId}`" tag="a" class="a-link companyName">{{i.companyOrstaffName}}</router-link>
</p> </p>
<p class="card-right-p"> <p class="card-right-p">
<span class="right-label">提示:</span> <span class="right-label">提示:</span>
<span class="right-color color1">11</span> <span class="right-color color1">{{i.promptCount}}</span>
<span class="right-label">正向:</span> <span class="right-label">正向:</span>
<span class="right-color color1">21</span> <span class="right-color color1">{{i.positiveCount}}</span>
<span class="right-label">低风险:</span> <span class="right-label">低风险:</span>
<span class="right-color color1">31</span> <span class="right-color color1">{{i.lowRiskCount}}</span>
<span class="right-label">中风险:</span> <span class="right-label">中风险:</span>
<span class="right-color color1">41</span> <span class="right-color color1">{{i.middleRiskCount}}</span>
<span class="right-label">高风险:</span> <span class="right-label">高风险:</span>
<span class="right-color color1">1</span> <span class="right-color color1">{{i.highRiskCount}}</span>
</p> </p>
<div class="tips">新增<span>654</span>条动态信息</div> <div class="tips">新增<span style="color:#0081FF;padding: 0 4px;">{{i.dynamicTotal}}</span>条动态信息</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color2">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color3">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color4">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color5">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div>
</div>
</div>
<div class="list">
<div class="list-title">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">昨日</span>
</div>
<div class="flex-box query-ability">
<span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息
</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color1">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color1">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color1">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color1">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color2">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color3">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color4">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color5">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -138,26 +50,40 @@ ...@@ -138,26 +50,40 @@
</template> </template>
<script> <script>
import { reportPage } from '@/api/monitoring/monitoring'
export default { export default {
name: 'MonitoringReport', name: 'MonitoringReport',
data() { data() {
return { return {
activeName:'first', activeName:'1',
dataList:[ dataList:[
{ {
time:'今日', time:'今日',
list:[] list:[]
} }
] ],
queryParams:{
pageNum:1,
pageSize:10,
condition:{
reportType:1
}
}
} }
}, },
created() { created() {
this.querySubmit()
}, },
methods: { methods: {
async querySubmit() {
reportPage(this.queryParams).then(res => {
console.log(res)
this.dataList=res.rows
})
},
handleClick() { handleClick() {
this.queryParams.condition.reportType=Number(this.activeName)
this.querySubmit()
} }
} }
} }
......
<template>
<!--监控报告详情-->
<div class="app-container MonitoringReportDetails">
<div class="search">
<div class="enterprise">
<div class="name">
<img src="@/assets/images/enterprise.png"/>
<span>{{object.companyName}}</span>
</div>
<p>
<span class="label">法定代表人:</span>
<span class="val">{{object.corporatePerson}}</span>
<span class="label">注册资本:</span>
<span class="val">{{object.regCapital}}</span>
<span class="label">成立日期:</span>
<span class="val">{{object.registeredDate}}</span>
</p>
</div>
<div class="search-item">
<div class="label">风险级别</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxjbBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn">
<el-checkbox v-for="item in fxjb" :label="item.label" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
<div class="search-item" style="line-height: 32px;">
<div class="label">监控类型</div>
<div class="main-right">
<div class="select-popper">
<span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
</div>
</div>
<div class="search-item" style="line-height: 16px;">
<div class="label">时间筛选</div>
<div class="checkbox">
<el-radio-group v-model="radio">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio>
</el-radio-group>
<el-date-picker
v-if="radio==4"
v-model="date"
type="daterange"
value-format="yyyy-MM-dd"
unlink-panels
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</div>
</div>
</div>
<div class="content">
<div class="total">{{tableDataTotal}}</div>
<div class="table-item">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
<div class="dialog-content">
<template v-if="title=='开庭公告详情'">
<info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='失信被执行人详情'">
<info-table class="info-tab" :list="defaultList1" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='法院公告详情'">
<info-table class="info-tab" :list="defaultList2" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='经营异常详情'">
<info-table class="info-tab" :list="defaultList3" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='股权冻结详情'">
<info-table class="info-tab" :list="defaultList4" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='裁判文书详情'">
<info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
</div>
</el-dialog>
</div>
</template>
<script>
import { v4 } from "uuid";
import { dynamicPage,rulesSelect,companyDetail } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable';
import {changeTime} from "@/assets/js/common.js"
export default {
name: 'MonitoringDynamics',
components: {
InfoTable
},
data() {
return {
changeTime,
radio:0,
date:'',
radioList:[
{
type:1,
label:'今天'
},
{
type:2,
label:'近七天'
},
{
type:3,
label:'近30天'
},
{
type:4,
label:'自定义'
},
],
fxjb:[
{
value:'1',
label:'提示'
},
{
value:'2',
label:'正向'
},
{
value:'3',
label:'低风险'
},
{
value:'4',
label:'中风险'
},
{
value:'5',
label:'高风险'
},
],
checkFx: true,
fxlxType:[],
jkType:[
{
value:'1',
label:'司法风险'
},
{
value:'2',
label:'工商变更'
},
],
selectList:[],
selectList1:[],
sffx:[],
gsfx:[],
queryParams:{
pageNum:1,
pageSize:10,
condition:{
// companyId:this.$route.params.id,
companyId:285,
}
},
type:[],
gsbgType:[],
companyName:'',
fxjbType:[],
inputID1: this.getUid(),
inputID2: this.getUid(),
object:{},
tableData:[],
tableDataTotal:0,
dialogVisible:false,
labelWidth: 140,
//开庭公告详情
defaultList0:[
{ name: '案由', prop: 'causeAction' },
{ name: '案号', prop: 'caseNo' },
{ name: '开庭时间', prop: 'hearingDate' },
{ name: '承办部门', prop: 'department' },
{ name: '审判长/主判人', prop: 'judge'},
{ name: '当事人', prop: 'relatedCompanies',slot: true},
{ name: '法院', prop: 'court'},
{ name: '法庭', prop: 'tribunal'},
{ name: '公告内容', prop: 'content', style: true },
],
//失信被执行人详情
defaultList1:[
{ name: '失信被执行人行为具体情形', prop: 'executionDesc', style: true },
{ name: '履行情况', prop: 'finalDuty' },
{ name: '立案文号', prop: 'caseNumber' },
{ name: '立案日期', prop: 'date' },
{ name: '执行依据文号', prop: 'docNumber'},
{ name: '执行法院', prop: 'court'},
],
//法院公告详情
defaultList2:[
{ name: '当事人', prop: 'people',style: true },
{ name: '身份', prop: 'role' },
{ name: '公共类型', prop: 'type' },
{ name: '公告日期', prop: 'date' },
{ name: '公告法院', prop: 'court',style: true},
{ name: '案由', prop: 'caseReason',style: true},
],
//经营异常详情
defaultList3:[
{ name: '列入日期', prop: 'inDate'},
{ name: '移出日期', prop: 'outDate' },
{ name: '列入经营异常原因', prop: 'outReason',style: true },
{ name: '做出决定机关(移入)', prop: 'department' },
{ name: '做出决定机关(移出)', prop: 'outDepartment'},
{ name: '移出经营移除名录原因', prop: 'outReason',style: true},
],
//股权冻结详情
defaultList4:[
{ name: '执行法院', prop: 'executiveCourt'},
{ name: '执行事项', prop: 'assistItem' },
{ name: '执行裁定文书号', prop: 'adjudicateNo'},
{ name: '执行通知文号', prop: 'number' },
{ name: '被执行人', prop: 'beExecutedPerson'},
{ name: '被执行人持有股权、其他投资权益数额', prop: 'amount'},
{ name: '冻结期限自', prop: 'freezeStartDate'},
{ name: '冻结期限至', prop: 'freezeEndDate'},
{ name: '冻结期限', prop: 'freezeYearMonth'},
{ name: '公示日期', prop: 'publicDate'},
],
//裁判文书详情
defaultList5:[
{ name: '案由', prop: 'causeAction'},
{ name: '执行案号', prop: 'causeNo' },
{ name: '身份', prop: 'role'},
{ name: '当事人', prop: 'relatedCompanies',slot: true },
{ name: '案件金额', prop: 'subAmount'},
{ name: '判决日期', prop: 'date'},
{ name: '判决结果', prop: 'judgeresult',style: true},
],
title:'开庭公告详情',
detail:{}
}
},
created() {
this.getPlaceholder()
this.querySubmit()
console.log(this.$route.params)
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
},
methods: {
changeSffx(val) {
if (this.sffx.indexOf(val.dimensionName) == -1) {
this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
}
},
changeGsfx(val) {
if (this.gsfx.indexOf(val.dimensionName) == -1) {
this.gsfx.push(val.dimensionName)
} else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
}
},
async querySubmit() {
let endTime = new Date()
if(this.radio === 1){
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
}
if(this.companyName){
this.queryParams.condition.companyName=this.companyName
}
if(this.fxjbType.length > 0){
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.object=res.object;
this.tableData=res.rows;
this.tableDataTotal=res.total;
this.tableData.forEach(el => {
el.createTime = changeTime(el.createTime)
// 把动态内容从json字符串改为对象
el.details = JSON.parse(el.details)
// 对象转为键值对数组
let arr = Object.entries(el.details)
// 新建一个属性数组
el.Array = []
for(let [i,j] of arr){
el.Array.push({key:i,value:j})
}
})
})
},
getDetail() {
companyDetail({dimensionName:'新增法院公告',sourceId:'0001c8e8-183f-48b5-a8ce-575b5c214b1a_65250c621707e177f7983cbf_'}).then(res => {
console.log(res)
this.detail=res.data;
})
},
checkFxjbBtn(val) {
this.fxjbType = [];
this.checkFx = true;
this.querySubmit()
},
checkFxjb1Btn(val){
if (val.length > 0) {
this.checkFx = false;
} else if (val.length == 0) {
this.checkFx = true;
this.fxjbType = [];
}
this.querySubmit()
},
handleDetail(){
this.dialogVisible=true;
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
},
async getPlaceholder() {
try {
await this.$nextTick();
const doms = document.querySelectorAll("[class*='select-adaptive-']");
if (doms?.length) {
doms.forEach(dom => {
const realStyles = window.getComputedStyle(dom);
const ipt = dom.querySelector("input");
const text = ipt.getAttribute("placeholder");
const textContainer = document.createElement("span");
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", realStyles.paddingRight) : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
// 加上按钮宽度 以及按钮左外边距
let containerWidth = textContainer.offsetWidth + 30;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
});
}
} catch (error) {
}
},
iptAdaptive(uid, multiple = false, name) {
multiple ? this.multipleAdaptiveHandle(uid, name) : this.iptAdaptiveHandle(uid, name);
},
getUid() {
return v4();
},
// 多选处理
async multipleAdaptiveHandle(uid, name) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const iptChild = dom.querySelector(".el-input__inner");
if (dom) {
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
const selectChildren = dom.querySelectorAll(".el-tag");
if (selectChildren.length) {
let width = 0;
selectChildren.forEach(item => {
const text = item.textContent;
const itemInfo = window.getComputedStyle(item);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", itemInfo.padding);
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove();
});
dom.style.setProperty("width", `${width + 50}px`);
// this.handleSearch(name);
return;
}
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", "0px 8px");
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 12 + 8;
// let containerWidth = 130;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
// this.handleSearch(name);
}
} catch (error) {
console.log(error);
}
},
// 单选处理
async iptAdaptiveHandle(uid, name) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const realStyles = window.getComputedStyle(dom);
if (dom) {
const iptChild = dom.querySelector(".el-input__inner");
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
}
// this.handleSearch(name);
} catch (error) {
}
},
}
}
</script>
<style lang="scss" scoped>
.MonitoringReportDetails{
.search{
background: #FFFFFF;
padding: 25px 16px;
border-radius: 4px;
.enterprise{
border-bottom: 1px solid #EEEEEE;
.name{
img{
width: 28px;
height: 28px;
float: left;
margin-right: 12px;
}
span{
font-weight: 700;
color: #232323;
font-size: 16px;
}
}
.label{
color: rgba(35,35,35,0.4);
font-size: 14px;
}
.val{
color: rgba(35,35,35,0.8);
margin-right: 26px;
font-size: 14px;
}
}
.search-item{
display: -webkit-box;
align-items: flex-start;
line-height: 20px;
margin-top: 8px;
}
.label{
margin-right: 12px;
font-size: 14px;
color: rgba(35,35,35,0.8);
}
.main-right {
width: calc(100% - 112px);
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
}
}
}
.checkbox{
display: flex;
align-items: flex-start;
padding-left: 12px;
position: relative;
.checkbox-content-qx{
margin-right: 24px;
}
.keyword_checkbox{
::v-deep .el-checkbox{
margin-right: 24px;
}
}
::v-deep .el-checkbox{
margin-right: 10px;
}
::v-deep .el-date-editor{
position: absolute;
left: 602px;
top: -7px
}
::v-deep .el-select{
.el-input{
.el-input__inner{
height: 32px;
line-height: 32px;
border-radius: 4px;
border: 0;
padding-left: 0px;
padding-right: 8px;
&::placeholder{
color: rgba(35,35,35,0.8) !important;
}
}
.el-input__suffix{
top:2px;
}
}
}
}
}
.content{
background: #FFFFFF;
border-radius: 4px;
margin-top: 16px;
padding: 16px;
.total{
color: rgba(35,35,35,0.8);
font-size: 12px;
padding-bottom: 16px;
display: flex;
align-items: center;
&:before {
content: "";
display: inline-block;
width: 2px;
height: 2px;
background: rgba(35,35,35,.4);
margin-right: 4px;
}
}
}
::v-deep .dialog-claim{
.el-dialog__header{
display: block;
padding:16px 20px;
border-bottom: 1px solid #EEEEEE;
font-size: 16px;
font-weight: 700;
color: #232323;
}
.el-dialog__body {
padding: 24px 20px;
}
}
}
</style>
<template>
<!--供应商不良推送-->
<div class="app-container supplierBad">
<div class="content">
<div class="c-title">推送人信息</div>
<div class="main">
<div class="table-item" v-if="tableDataTotal > 0 && !isSkeleton">
<el-button class="btn" icon="el-icon-plus" type="primary">添加推送人</el-button>
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="推送人姓名" prop="name" align="left" width="200"></el-table-column>
<el-table-column label="推送电话" prop="contact" align="left"></el-table-column>
<el-table-column
label="操作"
align="left"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span v-if="scope.row.status===0" style="cursor: pointer;margin-right: 16px;color: #0081FF;" @click="handleClick(scope.row,1)">停用</span>
<span v-if="scope.row.status===1" style="cursor: pointer;margin-right: 16px;color: #0081FF;" @click="handleClick(scope.row,1)">启用</span>
<span style="cursor: pointer;color: #FF3C3C;" @click="handleClick(scope.row,2)">删除</span>
</template>
</el-table-column>
</el-table>
<div class="pagination-box" v-if="tableDataTotal>pageSize">
<el-pagination background :current-page="pageNum" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/empty.png">
<div class="p1">暂无推送人信息</div>
<div class="p2">抱歉,暂时没有相关数据展示~</div>
<el-button class="btn" icon="el-icon-plus" type="primary" @click="visible=true">添加推送人</el-button>
</div>
</div>
</div>
<div class="content">
<div class="c-title">推送时间</div>
<div class="main">
<div class="main-item">
<div class="label">推送频率</div>
<el-radio-group v-model="radioTime" @change="radioBtn">
<el-radio label="0">每天</el-radio>
<el-radio label="1">工作日(排除节假日)</el-radio>
</el-radio-group>
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">推送时段</div>
<el-time-picker
is-range
class="timePicker"
v-model="time"
value-format="HH:mm:ss"
@change="changeTime"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围">
</el-time-picker>
</div>
</div>
</div>
<el-dialog :visible.sync="visible" custom-class='dialog-claim' title="新增推送人信息" width="480px" >
<div class="add-content">
<div class="input">
<div class="label">推送人姓名</div>
<el-input class="name" placeholder="请输入推送人姓名" v-model="name"></el-input>
</div>
<div class="input">
<div class="label">推送电话号码</div>
<el-input class="name" placeholder="请输入推送人联系方式" v-model="contact"></el-input>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="visible=false">取消</el-button>
<el-button type="primary" @click="handleAdd">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="handleVisible" custom-class='dialog-confirm' width="384px" :show-close="false">
<template slot="title">
<div v-if="status === 0"><img class="tip-img" src="@/assets/images/tips1.png" />停用账号</div>
<div v-if="status === 1"><img class="tip-img" src="@/assets/images/tips1.png" />启用账号</div>
</template>
<div class="dialog-content">
<div v-if="status === 0" class="text">确认停用账号?</div>
<div v-if="status === 1" class="text">确认启用账号?</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="handleVisible=false">取消</el-button>
<el-button type="primary" @click="handleUpdate">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="handleVisible1" custom-class='dialog-confirm' width="384px" :show-close="false">
<template slot="title">
<div><img class="tip-img" src="@/assets/images/tips1.png" />删除账号</div>
</template>
<div class="dialog-content">
<div class="text">确认删除账号?</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="handleVisible1=false">取消</el-button>
<el-button type="primary" @click="handleDelete">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { configKey,configUpdate } from "@/api/system/config";
import { pageList,sysPush,updateStatus,sysPushDel } from "@/api/system/supplierBad";
import skeleton from '../../component/skeleton'
export default {
name: 'supplierBad',
components: {
skeleton
},
data() {
return {
queryParams:{},
tableData:[],
visible:false,
radioTime:'0',
time:[],
tableDataTotal:0,
pageSize:10,
pageNum:1,
contact:'',
name:'',
handleVisible:false,
handleVisible1:false,
id:null,
status:null,
isSkeleton:true,
}
},
created() {
configKey("customer-badness-date-type").then(response => {
this.radioTime=response.data.configValue
});
configKey("customer-badness-time-frame").then(response => {
this.time=[this.converTime(response.data.configValue.split('-')[0]),this.converTime(response.data.configValue.split('-')[1])]
});
this.getList()
},
methods: {
radioBtn(val){
configUpdate({configKey:'customer-badness-date-type',configValue:val}).then(res => {
this.$modal.success(res.msg);
});
},
getList(){
let params={
pushTypeCode:'custoemr-badness',
pageSize:this.pageSize,
pageNum:this.pageNum,
}
pageList(params).then(res => {
console.log(res)
this.isSkeleton = false;
this.tableData=res.rows;
this.tableDataTotal=res.total
})
},
handleClick(item,key){
if(key === 1){
this.status=item.status
this.handleVisible=true
}
if(key === 2){
this.handleVisible1=true
}
this.id=item.id
},
handleAdd(){
let params={
pushTypeCode:'custoemr-badness',
pushType:'供应商不良',
name:this.name,
contact:this.contact,
}
sysPush(params).then(res => {
console.log(res)
if(res.code === 200){
this.visible=false;
this.$modal.success("新增成功");
this.getList()
}else {
this.$message.error(res.msg);
}
})
},
handleUpdate(){
let params={
id:this.id,
status:'1',
}
updateStatus(params).then(res => {
console.log(res)
this.handleVisible=false;
this.getList()
})
},
handleDelete(){
sysPushDel(this.id).then(res => {
console.log(res)
this.handleVisible1=false;
this.getList()
})
},
changeTime(val){
console.log(val)
let time=val[0]+'-'+val[1]
configUpdate({configKey:'customer-badness-time-frame',configValue:time}).then(res => {
this.$modal.success(res.msg);
});
},
converTime(time) {
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hour = time.split(':')[0];
const minutes = time.split(':')[1];
return new Date(year, month, day, hour, minutes);
},
}
}
</script>
<style lang="scss" scoped>
.supplierBad{
.content{
background: #ffffff;
padding:16px;
margin-bottom: 16px;
.c-title{
border-left: 2px solid rgba(35,35,35,0.8);;
padding-left: 8px;
font-size: 16px;
height: 16px;
line-height: 16px;
font-weight: 700;
color: #232323;
margin-bottom: 16px;
}
.main{
border-top: 1px solid #EEEEEE;
padding-top: 20px;
}
.main-item {
margin-bottom: 16px;
display: -webkit-box;
align-items: flex-start;
.label {
width: 88px;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
.main-right {
width: calc(100% - 112px);
.checkbox{
display: flex;
align-items: flex-start;
.checkbox-content-qx{
margin-right: 24px;
}
}
}
::v-deep .timePicker{
width: 228px;
height: 32px;
.el-range__icon{
line-height: 27px;
}
.el-range__close-icon{
line-height: 27px;
}
}
::v-deep .phone{
width: 228px;
height: 32px;
border-radius: 2px 2px 2px 2px;
}
}
.table-item{
.btn{
padding: 10px 12px;
margin:0 0 16px 0;
}
}
.empty{
margin: 0 auto;
height: 276px;
text-align: center;
.img{
width: 108px;
height: 108px;
margin-bottom: 12px;
margin-top: 30px;
}
.p1{
color: #232323;
font-size: 14px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 12px;
margin-top: 8px;
margin-bottom: 16px;
}
.btn{
padding: 10px 12px;
}
}
}
::v-deep .dialog-claim{
margin:0 !important;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
.el-dialog__header{
display: block;
padding:16px 20px;
border-bottom: 1px solid #EEEEEE;
font-size: 16px;
font-weight: 700;
color: #232323;
}
.el-dialog__body{
padding: 24px 20px;
font-size: 14px;
.add-content{
.input{
display: -webkit-box;
align-items: flex-start;
line-height: 32px;
margin-bottom: 12px;
.label{
font-size: 14px;
color: rgba(35,35,35,0.8);
width: 90px;
text-align: right;
}
.name{
width: 340px;
height: 32px;
margin-left: 12px;
border-radius: 2px;
}
.el-input__inner{
height: 32px;
}
}
}
}
.el-dialog__footer{
padding: 0;
}
.dialog-footer{
border-top: 1px solid #EEEEEE;
padding: 16px 20px;
}
}
::v-deep .dialog-confirm{
.el-dialog__header{
display: block;
padding:20px 20px 8px 20px;
font-size: 16px;
color: #232323;
font-weight: 700;
line-height: 24px;
img{
width: 24px;
height: 24px;
margin-right: 12px;
float: left;
}
}
.el-dialog__body{
padding: 0 20px 24px 20px;
color: #666666;
.text{
padding-left: 36px;
}
}
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment