master
loveflow 6 months ago
parent ad521c31e0
commit ae6aafeedc

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

@ -88,7 +88,7 @@
.clickText {
font-weight: 400;
font-size: 14px;
color: #30c4ff;
color: #30c4ff !important;
&:hover {
opacity: 0.8;
cursor: pointer;

@ -3,7 +3,7 @@
<!--<g-dict :options="idTypeList" :value="scope.row.labelId"></g-dict>-->
<template v-for="(item, index) in options">
<template v-if="values.includes(item.value)">
<span :key="item.value" :index="index">{{ item.label }}</span>
<span :key="item.value" :index="index">{{ item.name }}</span>
</template>
</template>
</div>

@ -61,6 +61,7 @@ export default {
align-items: center;
color: #ffffff;
font-size: vw(14);
border-bottom: solid 2px rgba(122, 163, 204, 0.3);
background: linear-gradient(
0deg,
rgba(122, 163, 204, 0.3) 0%,

@ -113,7 +113,7 @@ export default {
height: calc(100% - 54px);
.el-table__body-wrapper {
height: calc(100% - 50px);
overflow-y: scroll;
overflow: scroll;
&::-webkit-scrollbar-corner{
background: transparent;
}

@ -10,6 +10,50 @@ export const commonMixins = {
{ name: "蛟川街道", value: "330211002" },
{ name: "贵驷街道", value: "330211005" },
],
riskTypeList: [
{
name: "流动人员异常",
value: "1",
},
{
name: "重点岗位资质异常",
value: "2",
},
{
name: "人防配置情况异常",
value: "3",
},
{
name: "消防设施配备异常",
value: "4",
},
{
name: "漏洞整改异常",
value: "5",
},
{
name: "网站应用系统备案异常",
value: "6",
},
{
name: "等保定级评审异常",
value: "7",
},
{
name: "企业整改异常",
value: "8",
},
],
isNoList: [
{
name: "是",
value: "1",
},
{
name: "否",
value: "0",
},
],
};
},
created() {},

@ -140,6 +140,7 @@ export const tableListMixins = {
deal: "人工反馈",
jj: i % 3,
qyName: "海兴达化工有限公司" + (i % 3),
sshs: "无",
});
}
//console.log(this.dataSource);

@ -58,6 +58,24 @@ export default [
},
component: () => import("@/views/enterpriseTeamWork/riskHandle/index"),
},
{
path: "/teamWork/riskHandle/indexMy",
name: "riskHandle",
meta: {
head: false,
title: "风险处置我的流程",
},
component: () => import("@/views/enterpriseTeamWork/riskHandle/indexMy"),
},
{
path: "/teamWork/riskHandle/indexDetail",
name: "riskHandle",
meta: {
head: false,
title: "风险处置详情",
},
component: () => import("@/views/enterpriseTeamWork/riskHandle/indexDetail"),
},
{
path: "/teamWork/problemRectify",
name: "problemRectify",

@ -37,7 +37,7 @@
</el-select>
</el-form-item>
<el-form-item label="处置方式">
<el-select v-model="searchParam.state" placeholder="">
<el-select clearable v-model="searchParam.state" placeholder="">
<el-option label="企业提醒" value="1"></el-option>
<el-option label="核实消警" value="2"></el-option>
</el-select>

@ -28,6 +28,7 @@
<el-form-item label="整改状态">
<el-select
clearable
style="width: 160px"
v-model="queryParam.kf"
placeholder=""
@ -50,6 +51,7 @@
</el-form-item>
<el-form-item label="处置方式">
<el-select
clearable
style="width: 160px"
v-model="queryParam.type"
placeholder=""

@ -24,7 +24,7 @@
</el-form-item>
<el-form-item label="整改状态">
<el-select v-model="queryParam.kf" placeholder="">
<el-select clearable v-model="queryParam.kf" placeholder="">
<el-option label="已完成" value="1"></el-option>
<el-option label="整改中" value="2"></el-option>
<el-option label="未整改" value="3"></el-option>

File diff suppressed because one or more lines are too long

@ -0,0 +1,53 @@
<template>
<div class="handleDetailPanel">
<div class="riskTrim tlIcon"></div>
<div class="handleDetailTitle">{{ title }}</div>
<slot></slot>
</div>
</template>
<script>
export default {
props: {
title: {
type: String,
default: () => {
return "";
},
},
},
data() {
return {};
},
};
</script>
<style lang="less" scoped>
.handleDetailPanel {
padding: 6px 20px;
height: 100%;
position: relative;
background: url("~@/assets/images/team/hdtb.png") no-repeat center center;
background-size: 100% 100%;
box-sizing: border-box;
.riskTrim {
position: absolute;
height: 20px;
width: 20px;
background-size: 100% 100%;
}
.tlIcon {
top: 0;
left: 0;
background: url("~@/assets/images/team/hdti.png") no-repeat center center;
}
.handleDetailTitle {
height: 36px;
line-height: 36px;
font-weight: 500;
font-size: 16px;
color: #ffe6d9;
text-shadow: 0px 0px 8px rgba(255, 119, 52, 0.5);
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
}
}
</style>

@ -1,10 +1,11 @@
<template>
<div class="riskHandlePanel">
<div class="riskHandleIndexPanel loveflow">
<tableMain>
<div class="riskHandleWrap">
<div class="titleWrap">闭环处置</div>
<div class="topHead">
<gTab ref="gTabRef" :tabList="tabList" @tabClick="typeChange"></gTab>
<div class="riskHandleIndexWrap">
<div class="titleWrap">
<span @click="gotoPage('/teamWork/riskHandle/indexMy')">
闭环处置</span
>
</div>
<div class="btmBody">
<div class="flexSpaceBetween">
@ -15,18 +16,33 @@
:model="queryParam"
class="demo-form-inline"
>
<el-form-item label="流程状态">
<el-form-item label="关键词">
<el-input
style="width: 160px"
v-model="queryParam.name"
placeholder="请输入企业名称"
></el-input>
</el-form-item>
<el-form-item label="风险类型">
<el-select
clearable
style="width: 160px"
v-model="queryParam.type"
placeholder="选择流程状态"
placeholder=""
>
<el-option label="进行中" value="1"></el-option>
<el-option label="失败" value="0"></el-option>
<el-option label="完成" value="2"></el-option>
<el-option
v-for="item in riskTypeList"
:label="item.name"
:key="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-form-item label="风险产生时间">
<el-date-picker
style="width: 360px"
v-model="queryParam.time"
type="datetimerange"
range-separator="至"
@ -35,12 +51,35 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="关键词">
<el-input
v-model="queryParam.key"
placeholder="请输入姓名、身份证"
></el-input>
<el-form-item label="是否超期整改">
<el-select
clearable
style="width: 70px"
v-model="queryParam.cq"
placeholder=""
>
<el-option
v-for="item in isNoList"
:label="item.name"
:key="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否挂牌督办">
<el-select
clearable
style="width: 70px"
v-model="queryParam.db"
placeholder=""
>
<el-option
v-for="item in isNoList"
:label="item.name"
:key="item.name"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchQuery"
@ -65,23 +104,36 @@
@pageSizeChange="handlePageSizeChange"
@currentPageChange="handleCurrentPageChange"
>
<template v-slot:stateSlot="{ scope }">
<div class="failWrap" v-if="scope.row.state == 0">
<div class="icon"></div>
<div class="text">处理失败</div>
</div>
<div class="ingWrap" v-if="scope.row.state == 1">
<div class="icon"></div>
<div class="text">进行中</div>
</div>
<div class="finishWrap" v-if="scope.row.state == 2">
<div class="icon"></div>
<div class="text">处置完成</div>
</div>
<template v-slot:idSlot="{ scope }">
<span class="serialWrap">
{{ scope.row.id }}
</span>
</template>
<template v-slot:optSlot="{ scope }">
<div class="clickText" @click="checkDetail(scope.row)">
详情
<span
class="clickText"
@click="
gotoPage('/teamWork/riskHandle/indexDetail', scope.row)
"
>
查看
</span>
</template>
<template v-slot:cqSlot="{ scope }">
<gDict :options="isNoList" :value="scope.row.msg"></gDict>
</template>
<template v-slot:gpSlot="{ scope }">
<gDict :options="isNoList" :value="scope.row.msg"></gDict>
</template>
<template v-slot:jjSlot="{ scope }">
<div class="ybWrap" v-if="scope.row.jj == 0">
<div class="text">一般</div>
</div>
<div class="zdWrap" v-if="scope.row.jj == 1">
<div class="text">重点关注</div>
</div>
<div class="jjWrap" v-if="scope.row.jj == 2">
<div class="text">紧急</div>
</div>
</template>
</gMainTable>
@ -94,84 +146,155 @@
<script>
import tableMain from "../components/tableMain.vue";
import { tableListMixins } from "@/loveflow/mixins/tableListMixins";
import { commonMixins } from "@/loveflow/mixins/commonMixins";
export default {
components: { tableMain },
mixins: [tableListMixins],
mixins: [tableListMixins, commonMixins],
data() {
return {
tabList: [
columns: [
{
name: "我的流程",
value: "1",
slot: "idSlot",
prop: "id",
label: "序号",
attrs: {
width: 60,
},
},
{
name: "待办任务",
value: "2",
prop: "flowType",
label: "风险类型",
attrs: {
width: 160,
},
},
{
name: "已办任务",
value: "3",
prop: "date",
label: "风险产生时间",
attrs: {
width: 180,
},
},
{
name: "抄送我的",
value: "4",
prop: "qyName",
label: "风险关联企业",
attrs: {
width: 240,
},
},
],
columns: [
{
prop: "flow",
label: "流程名称",
prop: "flowType",
label: "风险要素",
attrs: {
width: 160,
},
},
{
prop: "date",
label: "创建时间",
label: "整改截止日期",
attrs: {
width: 220,
width: 180,
},
},
{
prop: "flowType",
label: "流程类型",
prop: "node",
label: "监管单位",
attrs: {
width: 160,
},
},
{
slot: "stateSlot",
prop: "state",
label: "流程状态",
label: "整改状态",
attrs: {
width: 120,
},
},
{
prop: "node",
label: "当前节点",
slot: "optSlot",
prop: "remarks",
label: "风险整改流程",
attrs: {
width: 70,
},
},
{
prop: "remarks",
label: "整改结果详情",
attrs: {
width: 180,
},
},
{
prop: "name",
label: "未操作者",
slot: "cqSlot",
prop: "msg",
label: "是否超期整改",
attrs: {
width: 70,
},
},
{
slot: "optSlot",
prop: "address",
label: "操作",
slot: "gpSlot",
prop: "msg",
label: "是否挂牌督办",
attrs: {
width: 70,
},
},
{
prop: "sshs",
label: "申诉核实",
attrs: {
width: 120,
},
},
{
prop: "way",
label: "处置方式",
attrs: {
width: 140,
},
},
{
slot: "jjSlot",
prop: "jj",
label: "紧急程度",
attrs: {
width: 80,
width: 140,
},
},
],
};
},
methods: {
typeChange(val) {},
checkDetail(obj) {},
gotoPage(val, obj) {
if (obj) {
this.$router.push({
path: val,
query: {
id: obj.id,
},
});
} else {
this.$router.push({
path: val,
});
}
},
},
};
</script>
<style lang="scss">
@import "@/loveflow/assets/index.scss";
.riskHandlePanel {
.riskHandleIndexPanel {
padding: 16px;
height: 100%;
box-sizing: border-box;
color: #ffffff;
overflow: hidden;
.riskHandleWrap {
.riskHandleIndexWrap {
height: 100%;
display: flex;
flex-direction: column;
@ -185,51 +308,63 @@ export default {
letter-spacing: 2px;
text-shadow: 0px 0px 9px rgba(21, 255, 195, 0.6);
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
}
.topHead {
display: flex;
align-items: flex-end;
height: 50px;
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
span {
&:hover {
opacity: 0.8;
cursor: pointer;
}
}
}
.btmBody {
padding-top: vw(14);
display: flex;
flex-direction: column;
height: calc(100% - 100px);
.failWrap {
height: calc(100% - 50px);
overflow-y: scroll;
&::-webkit-scrollbar {
display: none;
}
.serialWrap {
padding: 2px 6px;
border: solid 1px #9ed7e7;
color: #33e6ff;
font-weight: bold;
border-radius: 2px;
}
.text {
font-weight: 400;
font-size: 14px;
}
.ybWrap {
display: flex;
align-items: center;
color: #ff6262;
.icon {
background-color: #ff6262;
}
justify-content: center;
width: 72px;
height: 28px;
background: url("~@/assets/images/team/yb.png") no-repeat center center;
background-size: 100% 100%;
color: #b5ffe4;
}
.ingWrap {
.zdWrap {
display: flex;
align-items: center;
color: #4cf993;
.icon {
background-color: #4cf993;
}
justify-content: center;
width: 72px;
height: 28px;
background: url("~@/assets/images/team/zd.png") no-repeat center center;
background-size: 100% 100%;
color: #e3deff;
}
.finishWrap {
.jjWrap {
display: flex;
align-items: center;
color: #30c4ff;
.icon {
background-color: #30c4ff;
}
}
.icon {
margin-right: 10px;
width: 6px;
height: 6px;
border-radius: 6px;
}
.text {
font-weight: 400;
font-size: 14px;
justify-content: center;
width: 72px;
height: 28px;
background: url("~@/assets/images/team/jj.png") no-repeat center center;
background-size: 100% 100%;
color: #ff6262;
}
}
}

@ -0,0 +1,181 @@
<template>
<div class="riskHandleIndexDetailPanel">
<tableMain>
<div class="riskHandleIndexDetailWrap">
<div class="titleWrap">
<span
class="backBtn"
@click="gotoPage('/teamWork/riskHandle/indexMy')"
>
闭环处置</span
>
<span class="icon"></span>
<span class="dealDetailTitle">处置详情</span>
</div>
<div class="topHead">
<gTab
ref="gTabRef"
:tabList="tabList"
:curTab="curTab"
@tabClick="tabChange"
></gTab>
</div>
<div class="btmBody">
<component :is="content"></component>
</div>
</div>
</tableMain>
</div>
</template>
<script>
import tableMain from "../components/tableMain.vue";
import indexDetailForm from "./indexDetailForm.vue";
import indexDetailFlow from "./indexDetailFlow.vue";
import indexDetailRecord from "./indexDetailRecord.vue";
export default {
components: {
tableMain,
indexDetailForm,
indexDetailFlow,
indexDetailRecord,
},
data() {
return {
tabList: [
{
name: "表单信息",
value: "1",
},
{
name: "流程图",
value: "2",
},
{
name: "流程记录",
value: "3",
},
],
curTab: "1",
content: "indexDetailForm",
};
},
methods: {
tabChange(val) {
if (val == "1") {
this.content = indexDetailForm;
}
if (val == "2") {
this.content = indexDetailFlow;
}
if (val == "3") {
this.content = indexDetailRecord;
}
},
gotoPage(val) {
this.$router.push({
path: val,
});
},
},
};
</script>
<style lang="scss">
@import "@/loveflow/assets/index.scss";
.riskHandleIndexDetailPanel {
padding: 16px;
height: 100%;
box-sizing: border-box;
color: #ffffff;
overflow-y: scroll;
&::-webkit-scrollbar {
display: none;
}
.riskHandleIndexDetailWrap {
height: 100%;
display: flex;
flex-direction: column;
.titleWrap {
display: flex;
align-items: center;
height: 46px;
font-weight: 600;
font-size: 16px;
color: #ebfff4;
letter-spacing: 2px;
text-shadow: 0px 0px 9px rgba(21, 255, 195, 0.6);
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
.backBtn {
&:hover {
opacity: 0.8;
cursor: pointer;
}
}
.icon {
margin: 0 2px;
width: vw(20);
height: vw(20);
background: url("~@/assets/images/base/navI.png") no-repeat center
center;
background-size: 100% 100%;
}
.dealDetailTitle {
font-weight: 400;
font-size: vw(16);
color: #ebf7ff;
}
}
.topHead {
display: flex;
align-items: flex-end;
height: 50px;
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
}
.btmBody {
padding-top: vw(14);
display: flex;
flex-direction: column;
height: calc(100% - 100px);
overflow-y: scroll;
&::-webkit-scrollbar{
display: none;
}
.failWrap {
display: flex;
align-items: center;
color: #ff6262;
.icon {
background-color: #ff6262;
}
}
.ingWrap {
display: flex;
align-items: center;
color: #4cf993;
.icon {
background-color: #4cf993;
}
}
.finishWrap {
display: flex;
align-items: center;
color: #30c4ff;
.icon {
background-color: #30c4ff;
}
}
.icon {
margin-right: 10px;
width: 6px;
height: 6px;
border-radius: 6px;
}
.text {
font-weight: 400;
font-size: 14px;
}
}
}
}
</style>

@ -0,0 +1,3 @@
<template>
<div class="indexDetailFlowPanel">流程图</div>
</template>

@ -0,0 +1,250 @@
<template>
<div class="indexDetailFormPanel">
<div class="indexDetailFormWrap">
<div class="baseInfoWrap mb16">
<detailWrap title="基本信息">
<div class="indexDetailBody">
<div class="line">
<div class="item">
<div class="label">流程名称</div>
<div class="value">{{ info.nr }}</div>
</div>
<div class="item">
<div class="label">企业名称</div>
<div class="value clickText" @click="toDangan(info)">
{{ info.cmy }}
</div>
<div class="labelWrap">
<div
class="labelItem"
v-for="item in info.labelArr"
:key="item"
>
{{ item }}
</div>
</div>
</div>
</div>
<div class="line">
<div class="item">
<div class="label">流程类型</div>
<div class="value">{{ info.flowType }}</div>
</div>
<div class="item">
<div class="label">流程状态</div>
<div class="value">{{ info.state }}</div>
</div>
</div>
<div class="line">
<div class="item">
<div class="label">预警时间</div>
<div class="value">{{ info.time }}</div>
</div>
<div class="item">
<div class="label">预警指标</div>
<div class="value">{{ info.target }}</div>
</div>
</div>
<div class="line">
<div class="item">
<div class="label">预警等级</div>
<div class="value">{{ info.level }}</div>
</div>
</div>
</div>
</detailWrap>
</div>
<!-- <div class="handleInfoWrap mb16">
<detailWrap title="处置信息"></detailWrap>
</div> -->
<div class="flowInfoWrap mb16">
<detailWrap title="流转意见">
<div class="indexDetailBody">
<div
class="flowTipWrap"
v-for="(item, index) in flowList"
:key="index"
>
<div class="leftWrap">
<div class="headIcon">
<img :src="item.icon" />
</div>
<div class="nameWrap">
<div class="name">{{ item.leader }}</div>
<div class="team">{{ item.team }}</div>
</div>
</div>
<div class="rightWrap">
<div class="line">
<div class="label">处理意见</div>
<div class="value">{{ item.nr }}</div>
</div>
<div class="line" v-if="item.files">
<div class="label">附件</div>
<div class="value">{{ item.files }}</div>
</div>
<div class="line">
<div class="label">抄送部门</div>
<div class="value">{{ item.depart }}</div>
</div>
<div class="line">
<div class="value">{{ item.time }}</div>
</div>
</div>
</div>
</div>
</detailWrap>
</div>
</div>
</div>
</template>
<script>
import detailWrap from "./detailWrap.vue";
export default {
components: { detailWrap },
data() {
return {
info: {
id: "10",
nr: "宁波中金石化有限公司-核酸检测率-异常处",
cmy: "宁波中金石化有限公司",
flowType: "防疫安全",
state: "进行中",
time: "2023-11-16 10:28:54",
level: "二级",
target: "流动人员异常",
labelArr: ["涉危", "易制毒", "重点消防"],
},
flowList: [
{
team: "技侦大队",
leader: "丁宜芳",
nr: "2022年8月20日0时32分我队接到预警称浙江浙江鑫甬生物化工股份有限公司存在运输车辆频繁违章情况。接报后值班民警于立即到达现场经现场了解到危化品运输车浙B2M50R为外来租赁货车司机王某身份证号42109119880717****)疑似前科重点人员。目前司机已经带回所以便进一步调查。",
files: "",
depart: "镇海区石化派出所澥浦分队;镇海区石化派出",
time: "2023-12-23 16:28:32",
icon: require("@/assets/images/team/person.png"),
},
{
team: "公安大队",
leader: "丁宜芳",
nr: "2022年8月20日0时32分我队接到预警称浙江浙江鑫甬生物化工股份有限公司存在运输车辆频繁违章情况。接报后值班民警于立即到达现场经现场了解到危化品运输车浙B2M50R为外来租赁货车司机王某身份证号42109119880717****)疑似前科重点人员。目前司机已经带回所以便进一步调查。",
files: "",
depart: "镇海区石化派出所澥浦分队;镇海区石化派出",
time: "2023-12-23 16:28:32",
icon: require("@/assets/images/team/person.png"),
},
{
team: "刑侦大队",
leader: "丁宜芳",
nr: "2022年8月20日0时32分我队接到预警称浙江浙江鑫甬生物化工股份有限公司存在运输车辆频繁违章情况。接报后值班民警于立即到达现场经现场了解到危化品运输车浙B2M50R为外来租赁货车司机王某身份证号42109119880717****)疑似前科重点人员。目前司机已经带回所以便进一步调查。",
files: "",
depart: "镇海区石化派出所澥浦分队;镇海区石化派出",
time: "2023-12-23 16:28:32",
icon: require("@/assets/images/team/person.png"),
},
],
};
},
methods: {
toDangan(obj) {
sessionStorage.setItem("companyID", obj.id);
sessionStorage.setItem("companyName", obj.cmy);
/* this.$router.push({
name: "archives",
}); */
window.open("/#/integration/archives");
},
},
};
</script>
<style lang="less" scoped>
.indexDetailFormPanel {
.indexDetailFormWrap {
font-size: 14px;
.baseInfoWrap {
.indexDetailBody {
.line {
margin: 6px 0;
display: flex;
align-items: center;
.item {
flex: 1;
display: flex;
align-items: center;
.label {
font-weight: 400;
font-size: vw(14);
color: #d0deee;
}
.value {
font-weight: 400;
font-size: vw(14);
color: #ffffff;
}
.labelWrap {
display: flex;
margin-left: 6px;
.labelItem {
padding: 2px 8px;
margin-right: 4px;
font-size: 14px;
color: #b5ebff;
background: url("~@/assets/images/team/label.png") no-repeat
center center;
background-size: 100% 100%;
}
}
}
}
}
}
.handleInfoWrap {
}
.flowInfoWrap {
.indexDetailBody {
.flowTipWrap {
padding: 10px 14px;
margin-bottom: 12px;
font-weight: 400;
font-size: 14px;
display: flex;
align-items: flex-start;
background: rgba(108, 128, 151, 0.1);
border: 1px solid #495461;
.leftWrap {
display: flex;
align-items: center;
width: 180px;
.headIcon {
margin-right: 6px;
width: 42px;
height: 42px;
}
.nameWrap {
display: flex;
flex-direction: column;
justify-content: space-between;
}
}
.rightWrap {
.line {
display: flex;
align-items: flex-start;
margin-bottom: 8px;
.label {
width: 80px;
color: #d0deee;
}
.value {
flex: 1;
color: #ffffff;
}
}
}
}
}
}
}
}
</style>

@ -0,0 +1,215 @@
<template>
<div class="indexDetailRecordPanel">
<el-timeline>
<el-timeline-item
v-for="(item, index) in actList"
:key="index"
:icon="item.icon"
:color="item.color"
>
<div class="recordHead">
<div class="leftWrap">
<div class="text">{{ item.title }}</div>
<div class="flag" v-if="item.pass == '1'"></div>
</div>
<div class="rightWrap">
<div class="item">
<div class="label">操作者统计</div>
<div class="value">1</div>
</div>
<div class="item">
<div class="label">已操作</div>
<div class="value">1</div>
</div>
<div class="item">
<div class="label">未操作</div>
<div class="value" style="color: #ff6262">1</div>
</div>
</div>
</div>
<recordTable :tableData="item.list" :columns="columns">
<template v-slot:optSlot="{ scope }">
<span v-if="scope.row.state == ''" style="color: #ff6262"
>{{ scope.row.state }}
</span>
<span v-else>{{ scope.row.state }}</span>
</template>
<template v-slot:rangeSlot="{ scope }">
<span>{{ dealTime(scope.row.range) }}</span>
</template>
</recordTable>
</el-timeline-item>
</el-timeline>
</div>
</template>
<script>
import recordTable from "./recordTable.vue";
export default {
components: { recordTable },
data() {
return {
actList: [
{
title: "转处置任务",
pass: "1", //1
icon: "el-icon-circle-check",
color: "#62FF9C",
list: [
{
name: "吴磊",
team: "治安大队",
state: "已操作",
time: "2023-12-25 14:28:32",
range: 58,
},
],
},
{
title: "卫健部门",
pass: "1",
icon: "el-icon-circle-check",
color: "#62FF9C",
list: [
{
name: "吴磊",
team: "治安大队",
state: "已操作",
time: "2023-12-25 14:28:32",
range: 488,
},
{
name: "吴磊",
team: "治安大队",
state: "已操作",
time: "2023-12-25 14:28:32",
range: 376,
},
],
},
{
pass: "0",
title: "内部部门",
icon: "el-icon-time",
color: "#D9E7FF",
list: [
{
name: "吴磊",
team: "治安大队",
state: "未操作",
time: "2023-12-25 14:28:32",
range: 568,
},
{
name: "吴磊",
team: "治安大队",
state: "未操作",
time: "2023-12-25 14:28:32",
range: 3723,
},
],
},
],
columns: [
{
prop: "name",
label: "实际办理",
},
{
prop: "team",
label: "候选办理",
},
{
slot: "optSlot",
prop: "state",
label: "操作状态",
},
{
prop: "time",
label: "接收时间",
},
{
prop: "time",
label: "操作时间",
},
{
slot: "rangeSlot",
prop: "range",
label: "耗时",
},
],
};
},
methods: {
dealTime(val) {
if (val > 60) {
//1
let min = parseInt(val / 60);
let hour = "";
let text = min + "分钟" + (val % 60) + "秒";
if (min > 59) {
//1
hour = parseInt(min / 60);
let temp = val % 3600;
min = parseInt(temp / 60);
text = hour + "小时" + min + "分钟" + (val % 60) + "秒";
}
return text;
} else {
return val + "秒";
}
},
},
};
</script>
<style lang="less">
.indexDetailRecordPanel {
.el-timeline-item__node--normal {
width: 22px;
height: 22px;
left: -6px;
.el-timeline-item__icon {
font-size: 24px;
}
}
.recordHead {
display: flex;
margin-bottom: 8px;
justify-content: space-between;
.leftWrap {
display: flex;
.text {
margin-right: 6px;
font-weight: 500;
font-size: 16px;
color: #ffffff;
}
.flag {
padding: 0 6px;
color: #62ff9c;
background: rgba(128, 219, 183, 0.1);
border-radius: 2px;
border: 1px solid #92ffd0;
}
}
.rightWrap {
display: flex;
align-items: center;
font-weight: 400;
font-size: 14px;
.item {
width: 120px;
display: flex;
align-items: center;
justify-content: flex-end;
.label {
color: #eaf6ff;
}
.value {
color: #ffffff;
}
}
}
}
}
</style>

@ -0,0 +1,262 @@
<template>
<div class="riskHandleIndexMyPanel">
<tableMain>
<div class="riskHandleIndexMyWrap">
<div class="titleWrap">
<div class="backBtn" @click="gotoPage('/teamWork/riskHandle')">
<img :src="backIcon" />返回
</div>
</div>
<div class="topHead">
<gTab ref="gTabRef" :tabList="tabList" @tabClick="typeChange"></gTab>
</div>
<div class="btmBody">
<div class="flexSpaceBetween">
<div class="tableOperator"></div>
<div class="searchWrap">
<el-form
:inline="true"
:model="queryParam"
class="demo-form-inline"
>
<el-form-item label="流程状态">
<el-select
clearable
v-model="queryParam.type"
placeholder="选择流程状态"
>
<el-option label="进行中" value="1"></el-option>
<el-option label="失败" value="0"></el-option>
<el-option label="完成" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="queryParam.time"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="关键词">
<el-input
v-model="queryParam.key"
placeholder="请输入姓名、身份证"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchQuery"
>查询</el-button
>
<el-button type="primary" plain @click="searchReset"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
</div>
<div class="tableWrap">
<gMainTable
border
stripe
ref="gMainTable"
:tableData="dataSource"
:columns="columns"
rowKey="id"
:pagination="ipagination"
@pageSizeChange="handlePageSizeChange"
@currentPageChange="handleCurrentPageChange"
>
<template v-slot:stateSlot="{ scope }">
<div class="failWrap" v-if="scope.row.state == 0">
<div class="icon"></div>
<div class="text">处理失败</div>
</div>
<div class="ingWrap" v-if="scope.row.state == 1">
<div class="icon"></div>
<div class="text">进行中</div>
</div>
<div class="finishWrap" v-if="scope.row.state == 2">
<div class="icon"></div>
<div class="text">处置完成</div>
</div>
</template>
<template v-slot:optSlot="{ scope }">
<div class="clickText" @click="checkDetail(scope.row)">
详情
</div>
</template>
</gMainTable>
</div>
</div>
</div>
</tableMain>
</div>
</template>
<script>
import tableMain from "../components/tableMain.vue";
import { tableListMixins } from "@/loveflow/mixins/tableListMixins";
export default {
components: { tableMain },
mixins: [tableListMixins],
data() {
return {
backIcon: require("@/assets/images/topic/left.png"),
tabList: [
{
name: "我的流程",
value: "1",
},
{
name: "待办任务",
value: "2",
},
{
name: "已办任务",
value: "3",
},
{
name: "抄送我的",
value: "4",
},
],
columns: [
{
prop: "flow",
label: "流程名称",
},
{
prop: "date",
label: "创建时间",
attrs: {
width: 220,
},
},
{
prop: "flowType",
label: "流程类型",
},
{
slot: "stateSlot",
prop: "state",
label: "流程状态",
},
{
prop: "node",
label: "当前节点",
},
{
prop: "name",
label: "未操作者",
},
{
slot: "optSlot",
prop: "address",
label: "操作",
attrs: {
width: 80,
},
},
],
};
},
methods: {
typeChange(val) {},
checkDetail(obj) {},
gotoPage(val) {
this.$router.push({
path: val,
});
},
},
};
</script>
<style lang="scss">
@import "@/loveflow/assets/index.scss";
.riskHandleIndexMyPanel {
padding: 16px;
height: 100%;
box-sizing: border-box;
color: #ffffff;
overflow: hidden;
.riskHandleIndexMyWrap {
height: 100%;
display: flex;
flex-direction: column;
.titleWrap {
display: flex;
align-items: center;
height: 46px;
font-weight: 600;
font-size: 16px;
color: #ebfff4;
letter-spacing: 2px;
text-shadow: 0px 0px 9px rgba(21, 255, 195, 0.6);
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
.backBtn {
display: flex;
align-items: center;
img {
margin-right: 2px;
width: 20px;
height: 20px;
}
&:hover {
opacity: 0.8;
cursor: pointer;
}
}
}
.topHead {
display: flex;
align-items: flex-end;
height: 50px;
border-bottom: solid 1px rgba(91, 116, 140, 0.6);
}
.btmBody {
padding-top: vw(14);
display: flex;
flex-direction: column;
height: calc(100% - 100px);
.failWrap {
display: flex;
align-items: center;
color: #ff6262;
.icon {
background-color: #ff6262;
}
}
.ingWrap {
display: flex;
align-items: center;
color: #4cf993;
.icon {
background-color: #4cf993;
}
}
.finishWrap {
display: flex;
align-items: center;
color: #30c4ff;
.icon {
background-color: #30c4ff;
}
}
.icon {
margin-right: 10px;
width: 6px;
height: 6px;
border-radius: 6px;
}
.text {
font-weight: 400;
font-size: 14px;
}
}
}
}
</style>

@ -0,0 +1,50 @@
<template>
<div class="recordTableWrap">
<el-table :data="tableData" style="width: 100%">
<template v-for="(item, index) in columns">
<el-table-column
v-if="item.slot"
:key="item.prop + index"
:label="item.label"
v-bind="item.attrs || {}"
>
<!-- slot内容 -->
<template v-slot="scope">
<slot :name="item.slot" :scope="scope" />
</template>
</el-table-column>
<el-table-column
v-else
:key="item.prop + index"
:prop="item.prop"
:label="item.label"
v-bind="item.attrs || {}"
>
</el-table-column>
</template>
</el-table>
</div>
</template>
<script>
export default {
props: {
columns: {
type: Array,
default: () => {
return [];
},
},
tableData: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {};
},
created() {},
};
</script>

@ -24,20 +24,20 @@
</el-form-item>
<el-form-item label="管控扣分项">
<el-select v-model="queryParam.kf" placeholder="">
<el-select clearable v-model="queryParam.kf" placeholder="">
<el-option label="流动人员" value="1"></el-option>
<el-option label="企业整改" value="0"></el-option>
<el-option label="重点岗位" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="处置方式">
<el-select v-model="queryParam.way" placeholder="">
<el-select clearable v-model="queryParam.way" placeholder="">
<el-option label="企业提醒" value="1"></el-option>
<el-option label="核实消警" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="监管单位">
<el-select v-model="queryParam.dw" placeholder="">
<el-select clearable v-model="queryParam.dw" placeholder="">
<el-option label="区委网信办" value="1"></el-option>
<el-option label="区公安局" value="2"></el-option>
</el-select>
@ -65,6 +65,7 @@
@pageSizeChange="handlePageSizeChange"
@currentPageChange="handleCurrentPageChange"
>
<!-- :span-method="objectSpanMethod" -->
<template v-slot:idSlot="{ scope }">
<span class="serialWrap">
{{ scope.row.id }}
@ -117,7 +118,6 @@ export default {
{
prop: "qyName",
label: "企业名称",
rowSpan: 4,
},
{
prop: "flowType",
@ -308,7 +308,7 @@ export default {
},
//
getSpanArr(data) {
console.log(data);
//console.log(data);
let spanKey = "qyName";
var spanArr = [];
var pos = "";

Loading…
Cancel
Save