提交
This commit is contained in:
102
src/views/Process-supervision/Supervisionmanage.vue
Normal file
102
src/views/Process-supervision/Supervisionmanage.vue
Normal file
@@ -0,0 +1,102 @@
|
||||
<template>
|
||||
<div class="pd10">
|
||||
<el-row style="overflow-y: hidden">
|
||||
<el-col>
|
||||
<el-tabs v-model.trim="activeName" type="border-card" @tab-click="handleClick">
|
||||
<!-- 首页 -->
|
||||
<el-tab-pane label="概览" name="first" :style="'height:' + vh + ';'">
|
||||
<homePage v-if="activeName == 'first'" />
|
||||
</el-tab-pane>
|
||||
<!-- 技术监督管理 -->
|
||||
|
||||
<el-tab-pane label="技术监督管理" name="technology" :style="'height:' + vh + ';'">
|
||||
<technology v-if="activeName == 'technology'" />
|
||||
</el-tab-pane>
|
||||
<!-- 策略管理 -->
|
||||
<el-tab-pane label="告警单策略管理" name="second" :style="'height:' + vh + ';'">
|
||||
<el-tabs v-model="warn">
|
||||
<!-- <el-tab-pane label="策略管理" name="1">
|
||||
<PolicyManagement :typeKey="1" v-if="warn == '1'" />
|
||||
</el-tab-pane> -->
|
||||
<el-tab-pane label="策略绑定" name="2">
|
||||
<WarningBinding :typeKey="1" v-if="warn == '2'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="预警单策略管理" name="tactics" :style="'height:' + vh + ';'">
|
||||
<el-tabs v-model="warn">
|
||||
<!-- <el-tab-pane label="策略管理" name="3">
|
||||
<PolicyManagement :typeKey="0" v-if="warn == '3'" />
|
||||
</el-tab-pane>-->
|
||||
<el-tab-pane label="策略绑定" name="4">
|
||||
<WarningBinding :typeKey="0" v-if="warn == '4'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import homePage from './components/WorkOrder/homePage.vue'
|
||||
import technology from './components/WorkOrder/technology.vue'
|
||||
import WarningBinding from './components/WorkOrder/WarningBinding.vue'
|
||||
import PolicyManagement from './components/WorkOrder/PolicyManagement.vue'
|
||||
|
||||
export default {
|
||||
name: 'jsjdgl',
|
||||
components: { homePage, technology, PolicyManagement, WarningBinding },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
vh1: '',
|
||||
activeName: 'first',
|
||||
warn: '',
|
||||
|
||||
device: ''
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 80 + 'px'
|
||||
this.vh1 = window.sessionStorage.getItem('appheight') - 143 + 'px'
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
if (this.activeName == 'second') {
|
||||
this.warn = '2'
|
||||
} else if (this.activeName == 'tactics') {
|
||||
this.warn = '4'
|
||||
} else {
|
||||
this.warn = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url('../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
.block {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,178 @@
|
||||
<template>
|
||||
<!-- <div> -->
|
||||
<!-- <el-form :inline="true" :model="form" class="demo-form-inline"> -->
|
||||
<!-- <el-form-item label="组织机构名称:" prop="valueTitle" :rules="{ required: true, message: '物业公司名称不能为空', trigger: 'blur' }"> -->
|
||||
<el-select
|
||||
ref="selectTree1"
|
||||
v-model="form.valueTitle"
|
||||
placeholder="请输入组织机构名称"
|
||||
>
|
||||
<el-option
|
||||
:value="form.editCheckCode"
|
||||
:label="form.valueTitle"
|
||||
class="options"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
:accordion="form.accordion"
|
||||
:data="form.options"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="form.defaultExpandedKey"
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node, data }">
|
||||
<i
|
||||
:class="[data.color != null ? 'ification_col' : '']"
|
||||
:style="{ 'background-color': data.color }"
|
||||
></i
|
||||
> {{ data.name }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- </el-form-item> -->
|
||||
<!-- </el-form> -->
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from "@/api/admin/dept";
|
||||
export default {
|
||||
props: {
|
||||
valueTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
editCheckCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
'valueTitle': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.valueTitle=Value
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
'editCheckCode': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.editCheckCode=Value
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
IdData: "",
|
||||
form: {
|
||||
value: "",
|
||||
valueTitle: "",
|
||||
editCheckCode: "",//选择的id
|
||||
accordion: true,
|
||||
defaultExpandedKey: [],
|
||||
//区域
|
||||
options: [],
|
||||
default: {
|
||||
value: "id",
|
||||
children: "children",
|
||||
label: "name",
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.form.valueTitle = JSON.parse(
|
||||
// window.sessionStorage.getItem("Info")
|
||||
// ).deptName;
|
||||
this.area();
|
||||
},
|
||||
beforeMount(){
|
||||
// this.form.valueTitle=this.valueTitle
|
||||
// this.form.editCheckCode=this.editCheckCode
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.form.valueTitle=this.valueTitle
|
||||
this.form.editCheckCode=this.editCheckCode
|
||||
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
//区域
|
||||
area() {
|
||||
deptTree().then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.form.options = res.data;
|
||||
//this.$emit("click", res.data[0]);
|
||||
}
|
||||
// debugger
|
||||
this.IdData = this.form.options[0].children[0].id;
|
||||
this.$emit("sendMessage", this.IdData);
|
||||
|
||||
//用于子组件向父组件传递部门id非code
|
||||
});
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.form.editCheckCode = data.id;
|
||||
this.form.valueTitle = data.name;
|
||||
|
||||
this.form.defaultExpandedKey = [];
|
||||
this.$emit("click", data);
|
||||
this.$refs.selectTree1.blur();
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
|
||||
height: auto;
|
||||
// max-height: 1000px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li > .el-tree .el-tree-node__content {
|
||||
height: auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.el-tree-node__label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__label {
|
||||
font-weight: 700;
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__children .el-tree-node__label {
|
||||
font-weight: normal;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ification_col {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,168 @@
|
||||
<template>
|
||||
<!-- <div> -->
|
||||
<!-- <el-form :inline="true" :model="form" class="demo-form-inline"> -->
|
||||
<!-- <el-form-item label="运维单位名称:"> -->
|
||||
<el-select
|
||||
ref="selectTree1"
|
||||
v-model="form.valueTitle"
|
||||
placeholder="请输入运维单位名称"
|
||||
>
|
||||
<el-option
|
||||
:value="form.editCheckCode"
|
||||
:label="form.valueTitle"
|
||||
class="options"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
:accordion="form.accordion"
|
||||
:data="form.options"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="form.defaultExpandedKey"
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node, data }">
|
||||
<i
|
||||
:class="[data.color != null ? 'ification_col' : '']"
|
||||
:style="{ 'background-color': data.color }"
|
||||
></i
|
||||
> {{ data.name }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- </el-form-item> -->
|
||||
<!-- </el-form> -->
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from "@/api/admin/dept";
|
||||
export default {
|
||||
props: {
|
||||
valueTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
editCheckCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
'valueTitle': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.valueTitle=Value
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
'editCheckCode': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.editCheckCode=Value
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
IdData: "",
|
||||
form: {
|
||||
value: "",
|
||||
valueTitle: "",
|
||||
editCheckCode: null,//选择的id
|
||||
accordion: true,
|
||||
defaultExpandedKey: [],
|
||||
//区域
|
||||
options: [],
|
||||
default: {
|
||||
value: "id",
|
||||
children: "children",
|
||||
label: "name",
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.area();
|
||||
},
|
||||
mounted() {
|
||||
this.form.valueTitle = JSON.parse(
|
||||
window.sessionStorage.getItem("Info")
|
||||
).deptName;
|
||||
this.form.valueTitle=this.valueTitle
|
||||
this.form.editCheckCode=this.editCheckCode
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
//区域
|
||||
area() {
|
||||
deptTree().then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.form.options = res.data;
|
||||
|
||||
}
|
||||
// debugger
|
||||
this.IdData = this.form.options[0].children[0].id;
|
||||
this.$emit("sendMessage", this.IdData);
|
||||
});
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.form.editCheckCode = data.id;
|
||||
this.form.valueTitle = data.name;
|
||||
this.form.defaultExpandedKey = [];
|
||||
this.$emit("click", data);
|
||||
this.$refs.selectTree1.blur();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
|
||||
height: auto;
|
||||
// max-height: 1000px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li > .el-tree .el-tree-node__content {
|
||||
height: auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.el-tree-node__label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__label {
|
||||
font-weight: 700;
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__children .el-tree-node__label {
|
||||
font-weight: normal;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ification_col {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,179 @@
|
||||
<template>
|
||||
<!-- <div> -->
|
||||
<!-- <el-form :inline="true" :model="form" class="demo-form-inline"> -->
|
||||
<!-- <el-form-item label="组织机构名称:" prop="valueTitle" :rules="{ required: true, message: '物业公司名称不能为空', trigger: 'blur' }"> -->
|
||||
<el-select
|
||||
ref="selectTree1"
|
||||
v-model="form.valueTitle"
|
||||
placeholder="请输入组织机构名称"
|
||||
>
|
||||
<el-option
|
||||
:value="form.editCheckCode"
|
||||
:label="form.valueTitle"
|
||||
class="options"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
:accordion="form.accordion"
|
||||
:data="form.options"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="form.defaultExpandedKey"
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node, data }">
|
||||
<i
|
||||
:class="[data.color != null ? 'ification_col' : '']"
|
||||
:style="{ 'background-color': data.color }"
|
||||
></i
|
||||
> {{ data.name }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- </el-form-item> -->
|
||||
<!-- </el-form> -->
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from "@/api/admin/dept";
|
||||
export default {
|
||||
props: {
|
||||
valueTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
editCheckCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
'valueTitle': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.valueTitle=Value
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
'editCheckCode': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.editCheckCode=Value
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
IdData: "",
|
||||
form: {
|
||||
value: "",
|
||||
valueTitle: "",
|
||||
editCheckCode: "",//选择的id
|
||||
accordion: true,
|
||||
defaultExpandedKey: [],
|
||||
//区域
|
||||
options: [],
|
||||
default: {
|
||||
value: "id",
|
||||
children: "children",
|
||||
label: "name",
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.form.valueTitle = JSON.parse(
|
||||
// window.sessionStorage.getItem("Info")
|
||||
// ).deptName;
|
||||
this.area();
|
||||
},
|
||||
beforeMount(){
|
||||
// this.form.valueTitle=this.valueTitle
|
||||
// this.form.editCheckCode=this.editCheckCode
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.form.valueTitle=this.valueTitle
|
||||
this.form.editCheckCode=this.editCheckCode
|
||||
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
//区域
|
||||
area() {
|
||||
deptTree().then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.form.options = res.data;
|
||||
//this.$emit("click", res.data[0]);
|
||||
}
|
||||
// debugger
|
||||
this.IdData = this.form.options[0].children[0].id;
|
||||
this.$emit("sendMessage", this.IdData);
|
||||
|
||||
//用于子组件向父组件传递部门id非code
|
||||
});
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.form.editCheckCode = data.id;
|
||||
this.form.valueTitle = data.name;
|
||||
|
||||
this.form.defaultExpandedKey = [];
|
||||
this.$emit("click", data);
|
||||
this.$refs.selectTree1.blur();
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
|
||||
height: auto;
|
||||
// max-height: 1000px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li > .el-tree .el-tree-node__content {
|
||||
height: auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.el-tree-node__label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__label {
|
||||
font-weight: 700;
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__children .el-tree-node__label {
|
||||
font-weight: normal;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ification_col {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,186 @@
|
||||
<template>
|
||||
<!-- <div> -->
|
||||
<!-- <el-form :inline="true" :model="form" class="demo-form-inline"> -->
|
||||
<!-- <el-form-item label="组织机构名称:" prop="valueTitle" :rules="{ required: true, message: '物业公司名称不能为空', trigger: 'blur' }"> -->
|
||||
<el-select
|
||||
ref="selectTree1"
|
||||
v-model="form.valueTitle"
|
||||
clearable
|
||||
placeholder="请输入组织机构名称"
|
||||
@clear="clear('valueTitle','editCheckCode')"
|
||||
>
|
||||
<el-option
|
||||
:value="form.editCheckCode"
|
||||
:label="form.valueTitle"
|
||||
class="options"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
:accordion="form.accordion"
|
||||
:data="form.options"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="form.defaultExpandedKey"
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node, data }">
|
||||
<i
|
||||
:class="[data.color != null ? 'ification_col' : '']"
|
||||
:style="{ 'background-color': data.color }"
|
||||
></i
|
||||
> {{ data.name }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- </el-form-item> -->
|
||||
<!-- </el-form> -->
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from "@/api/admin/dept";
|
||||
export default {
|
||||
props: {
|
||||
valueTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
editCheckCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
'valueTitle': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.valueTitle=Value
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
'editCheckCode': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.editCheckCode=Value
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
IdData: "",
|
||||
form: {
|
||||
value: "",
|
||||
valueTitle: "",
|
||||
editCheckCode: "",//选择的id
|
||||
accordion: true,
|
||||
defaultExpandedKey: [],
|
||||
//区域
|
||||
options: [],
|
||||
default: {
|
||||
value: "id",
|
||||
children: "children",
|
||||
label: "name",
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.form.valueTitle = JSON.parse(
|
||||
// window.sessionStorage.getItem("Info")
|
||||
// ).deptName;
|
||||
this.area();
|
||||
},
|
||||
beforeMount(){
|
||||
// this.form.valueTitle=this.valueTitle
|
||||
// this.form.editCheckCode=this.editCheckCode
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.form.valueTitle=this.valueTitle
|
||||
this.form.editCheckCode=this.editCheckCode
|
||||
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
clear(key,key1) {
|
||||
this.form[key] = ''
|
||||
this.form[key1] = ''
|
||||
this.$emit("clear", key,key1);
|
||||
},
|
||||
//区域
|
||||
area() {
|
||||
deptTree().then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.form.options = res.data;
|
||||
//this.$emit("click", res.data[0]);
|
||||
}
|
||||
// debugger
|
||||
this.IdData = this.form.options[0].children[0].id;
|
||||
this.$emit("sendMessage", this.IdData);
|
||||
|
||||
//用于子组件向父组件传递部门id非code
|
||||
});
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.form.editCheckCode = data.id;
|
||||
this.form.valueTitle = data.name;
|
||||
|
||||
this.form.defaultExpandedKey = [];
|
||||
this.$emit("click", data);
|
||||
this.$refs.selectTree1.blur();
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
|
||||
height: auto;
|
||||
// max-height: 1000px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li > .el-tree .el-tree-node__content {
|
||||
height: auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.el-tree-node__label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__label {
|
||||
font-weight: 700;
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__children .el-tree-node__label {
|
||||
font-weight: normal;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ification_col {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,186 @@
|
||||
<template>
|
||||
<!-- <div> -->
|
||||
<!-- <el-form :inline="true" :model="form" class="demo-form-inline"> -->
|
||||
<!-- <el-form-item label="组织机构名称:" prop="valueTitle" :rules="{ required: true, message: '物业公司名称不能为空', trigger: 'blur' }"> -->
|
||||
<el-select
|
||||
ref="selectTree1"
|
||||
v-model="form.valueTitle"
|
||||
clearable
|
||||
@clear="clear('valueTitle','editCheckCode')"
|
||||
placeholder="请输入组织机构名称"
|
||||
>
|
||||
<el-option
|
||||
:value="form.editCheckCode"
|
||||
:label="form.valueTitle"
|
||||
class="options"
|
||||
>
|
||||
<el-tree
|
||||
id="tree-option"
|
||||
ref="selectTree"
|
||||
:accordion="form.accordion"
|
||||
:data="form.options"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:default-expanded-keys="form.defaultExpandedKey"
|
||||
@node-click="handleNodeClick"
|
||||
>
|
||||
<span slot-scope="{ node, data }">
|
||||
<i
|
||||
:class="[data.color != null ? 'ification_col' : '']"
|
||||
:style="{ 'background-color': data.color }"
|
||||
></i
|
||||
> {{ data.name }}
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- </el-form-item> -->
|
||||
<!-- </el-form> -->
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from "@/api/admin/dept";
|
||||
export default {
|
||||
props: {
|
||||
valueTitle: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
editCheckCode: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
'valueTitle': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.valueTitle=Value
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
'editCheckCode': {
|
||||
handler(Value) {
|
||||
// newValue 和 oldValue 是一样的
|
||||
// console.log(Value,'++++++++++++++++++');
|
||||
this.form.editCheckCode=Value
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
IdData: "",
|
||||
form: {
|
||||
value: "",
|
||||
valueTitle: "",
|
||||
editCheckCode: "",//选择的id
|
||||
accordion: true,
|
||||
defaultExpandedKey: [],
|
||||
//区域
|
||||
options: [],
|
||||
default: {
|
||||
value: "id",
|
||||
children: "children",
|
||||
label: "name",
|
||||
},
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.form.valueTitle = JSON.parse(
|
||||
// window.sessionStorage.getItem("Info")
|
||||
// ).deptName;
|
||||
this.area();
|
||||
},
|
||||
beforeMount(){
|
||||
// this.form.valueTitle=this.valueTitle
|
||||
// this.form.editCheckCode=this.editCheckCode
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.form.valueTitle=this.valueTitle
|
||||
this.form.editCheckCode=this.editCheckCode
|
||||
|
||||
},
|
||||
computed: {},
|
||||
methods: {
|
||||
clear(key,key1) {
|
||||
this.form[key] = ''
|
||||
this.form[key1] = ''
|
||||
this.$emit("clear", key,key1);
|
||||
},
|
||||
//区域
|
||||
area() {
|
||||
deptTree().then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.form.options = res.data;
|
||||
//this.$emit("click", res.data[0]);
|
||||
}
|
||||
// debugger
|
||||
this.IdData = this.form.options[0].children[0].id;
|
||||
this.$emit("sendMessage", this.IdData);
|
||||
|
||||
//用于子组件向父组件传递部门id非code
|
||||
});
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.form.editCheckCode = data.id;
|
||||
this.form.valueTitle = data.name;
|
||||
|
||||
this.form.defaultExpandedKey = [];
|
||||
this.$emit("click", data);
|
||||
this.$refs.selectTree1.blur();
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
|
||||
height: auto;
|
||||
// max-height: 1000px;
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
ul li > .el-tree .el-tree-node__content {
|
||||
height: auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.el-tree-node__label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__label {
|
||||
font-weight: 700;
|
||||
color: #409eff;
|
||||
}
|
||||
|
||||
.el-tree > .is-current .el-tree-node__children .el-tree-node__label {
|
||||
font-weight: normal;
|
||||
color: #606266;
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
z-index: 9999;
|
||||
}
|
||||
.ification_col {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 10px;
|
||||
}
|
||||
</style>
|
||||
3278
src/views/Process-supervision/Supervisionmanage2/Workplan.vue
Normal file
3278
src/views/Process-supervision/Supervisionmanage2/Workplan.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,612 @@
|
||||
<template>
|
||||
<div class="pd10" v-loading="isLoading" element-loading-text="数据加载中">
|
||||
<el-form :inline="true" :model="formData" class="demo-form-inline">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area" @send="takeover"></Area>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<Timeinterval ref="Timeinterval" :interval="3"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
<el-button size="small" type="primary" v-if="biaoCode === 'tjrbpush'" @click="push">上送网公司</el-button>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||||
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item style="float: right;margin-right: 10px">
|
||||
<el-button size="small" type="primary" @click="reportStatistics">
|
||||
月报手动重新统计
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table stripe :data="tableData" size="mini" ref="Workstatistics"
|
||||
:row-config="{ isCurrent: true, isHover: true }" :height="vh" border style="width: 100%"
|
||||
header-cell-class-name="table_header" :header-cell-style="{
|
||||
height: '25px',
|
||||
padding: '0px'
|
||||
}" :row-style="{ height: '28px' }" :cell-style="{ padding: '0px' }" @checkbox-all="selectAllChangeEvent"
|
||||
@checkbox-change="handleSelectionChange">
|
||||
<vxe-table-column type="checkbox" align="center" width="55"></vxe-table-column>
|
||||
<template v-for="(item, index) in Workstatistics">
|
||||
<vxe-table-colgroup v-if="item.prop == 'isUploadHead'" :field="item.prop" :title="item.label"
|
||||
:key="index" :min-width="item.width" show-overflow align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="primary" size="small" style="color: #409eff; background: #ecf5ff"
|
||||
v-if="scope.row.isUploadHead == 0">
|
||||
未上送
|
||||
</el-tag>
|
||||
<el-tag type="primary" size="small" style="color: #67c23a; background: #f0f9eb"
|
||||
v-if="scope.row.isUploadHead == 1">
|
||||
已上送
|
||||
</el-tag>
|
||||
<el-tag type="primary" size="small" style="color: #909399; background: #f4f4f5"
|
||||
v-if="scope.row.isUploadHead == 2">
|
||||
取消上送
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-table-colgroup>
|
||||
<vxe-table-colgroup v-else-if="item.prop == 'cityName'" :field="item.prop" :title="item.label"
|
||||
:key="index" :min-width="item.width" show-overflow align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.cityName == null ? '/' : scope.row.cityName }}
|
||||
</template>
|
||||
</vxe-table-colgroup>
|
||||
<vxe-table-colgroup v-else-if="item.prop == 'countyName'" :field="item.prop" :title="item.label"
|
||||
:key="index" :min-width="item.width" show-overflow align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.countyName == null ? '/' : scope.row.countyName }}
|
||||
</template>
|
||||
</vxe-table-colgroup>
|
||||
<vxe-table-colgroup v-else :field="item.prop" :title="item.label" :key="index" :min-width="item.width"
|
||||
show-overflow align="center">
|
||||
<template v-for="(item, index) in item.children">
|
||||
<vxe-table-column :field="item.prop" :title="item.label" :key="index" :min-width="item.width"
|
||||
show-overflow align="center"></vxe-table-column>
|
||||
</template>
|
||||
</vxe-table-colgroup>
|
||||
</template>
|
||||
</vxe-table>
|
||||
<el-pagination background align="right" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum" :page-sizes="[20, 30, 50, 100]" :page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" class="mt10"></el-pagination>
|
||||
<el-dialog :close-on-click-modal="false" title="统计时间" :visible.sync="problemTime" width="20%">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="选择时间:" class="mt20">
|
||||
<el-date-picker v-model="problemTimeValue" type="month" value-format="yyyy-MM"
|
||||
:picker-options="pickerOptions" @change="changeFn" placeholder="选择月"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="problemTime = false">取 消</el-button>
|
||||
<el-button type="primary" @click="timeQuery">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '@/views/components/TimePicker/index4'
|
||||
import { statisticReportPage, pushMonthReportStatistic, statisticReport } from '@/api/Supervisionmanage2/Workplan'
|
||||
import { listRoleMenu, updateRoleMenu } from '@/api/admin/role'
|
||||
export default {
|
||||
components: { Area, Timeinterval },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
biaoCode: '',
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).roleList[0],
|
||||
isLoading: false,
|
||||
problemTime: false,
|
||||
zoom: '', //图表焦点校验
|
||||
vh: undefined,
|
||||
problemTimeValue: '',
|
||||
timeData: '',
|
||||
formData: {
|
||||
searchValue: '',
|
||||
searchBeginTime: '',
|
||||
searchEndTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
pickerOptions: {
|
||||
disabledDate: time => {
|
||||
return this.checkTime(time)
|
||||
}
|
||||
},
|
||||
|
||||
total: 0,
|
||||
tableData: [],
|
||||
multipleSelection: [],
|
||||
Workstatistics: [
|
||||
{ prop: 'provinceName', label: '所属网省', width: 150 },
|
||||
{ prop: 'cityName', label: '所属地市', width: 150 },
|
||||
{ prop: 'countyName', label: '所属县区', width: 150 },
|
||||
{
|
||||
prop: 'converterStation',
|
||||
label: '特高压换流站',
|
||||
children: [
|
||||
{
|
||||
prop: 'convertYearSupvNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{ prop: 'convertMonthSupvNum', label: '本月监督数量', width: 120 },
|
||||
{ prop: 'convertTotalSupvNum', label: '累计监督数量', width: 120 },
|
||||
{ prop: 'convertMonthQuesNum', label: '本月问题数量', width: 120 },
|
||||
{ prop: 'convertTotalQuesNum', label: '累计问题数量', width: 120 },
|
||||
{
|
||||
prop: 'convertMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'convertTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'newEnergy',
|
||||
label: '新能源场站(在运站)',
|
||||
children: [
|
||||
{
|
||||
prop: 'energyYearSupvNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{ prop: 'energyMonthSupvNum', label: '本月监督数量', width: 120 },
|
||||
{ prop: 'energyTotalSupvNum', label: '累计监督数量', width: 120 },
|
||||
{ prop: 'energyMonthQuesNum', label: '本月问题数量', width: 120 },
|
||||
{ prop: 'energyTotalQuesNum', label: '累计问题数量', width: 120 },
|
||||
{
|
||||
prop: 'energyMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'energyTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'extension',
|
||||
label: '新能源场站(改扩建)',
|
||||
children: [
|
||||
{
|
||||
prop: 'energyYearSupvNewNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'energyMonthSupvNewNum',
|
||||
label: '本月监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'energyTotalSupvNewNum',
|
||||
label: '累计监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'energyMonthQuesNewNum',
|
||||
label: '本月问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'energyTotalQuesNewNum',
|
||||
label: '累计问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'energyMonthReformNewNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'energyTotalReformNewNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'sensitive ',
|
||||
label: '电能质量敏感用户',
|
||||
children: [
|
||||
{
|
||||
prop: 'sensitiveYearSupvNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveMonthSupvNum',
|
||||
label: '本月监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveTotalSupvNum',
|
||||
label: '累计监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveMonthQuesNum',
|
||||
label: '本月问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveTotalQuesNum',
|
||||
label: '累计问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'sensitiveTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'plan',
|
||||
label: '供电电压计划',
|
||||
children: [
|
||||
{
|
||||
prop: 'powerMonthPlanNum',
|
||||
label: '本月前计划开展数量',
|
||||
width: 150
|
||||
},
|
||||
{
|
||||
prop: 'powerMonthConductedNum',
|
||||
label: '本月前已开展数量',
|
||||
width: 140
|
||||
},
|
||||
{ prop: 'powerMonthQuesNum', label: '本月问题数量', width: 140 },
|
||||
{ prop: 'powerTotalQuesNum', label: '累计问题数量', width: 140 },
|
||||
{
|
||||
prop: 'powerMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'powerTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'capacitor ',
|
||||
label: '电容器组监督',
|
||||
children: [
|
||||
{
|
||||
prop: 'capacitorYearSupvNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'capacitorMonthSupvNum',
|
||||
label: '本月监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'capacitorTotalSupvNum',
|
||||
label: '累计监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'capacitorMonthQuesNum',
|
||||
label: '本月问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'capacitorTotalQuesNum',
|
||||
label: '累计问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'capacitorMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'capacitorTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
prop: 'capacitor ',
|
||||
label: '评估报告监督',
|
||||
children: [
|
||||
{
|
||||
prop: 'appraisalReportYearSupvNum',
|
||||
label: '本年计划监督数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportMonthSupvNum',
|
||||
label: '本月监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportTotalSupvNum',
|
||||
label: '累计监督数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportMonthQuesNum',
|
||||
label: '本月问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportTotalQuesNum',
|
||||
label: '累计问题数量',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportMonthReformNum',
|
||||
label: '本月整改问题数量',
|
||||
width: 140
|
||||
},
|
||||
{
|
||||
prop: 'appraisalReportTotalReformNum',
|
||||
label: '累计整改问题数量',
|
||||
width: 140
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{ prop: 'planYearCountNum', label: '总本年监督数量', width: 130 },
|
||||
{ prop: 'planCountNum', label: '总累计监督数量', width: 130 },
|
||||
{ prop: 'problemCountNum', label: '总累计问题数量', width: 130 },
|
||||
{ prop: 'reformCountNum', label: '总整改问题数量', width: 130 },
|
||||
{ prop: 'alarmCountNum', label: '总预告警单数量', width: 130 },
|
||||
{ prop: 'alarmBackCountNum', label: '总反馈单数量', width: 110 },
|
||||
{ prop: 'isUploadHead', label: '上送标识', width: 100 },
|
||||
]
|
||||
}
|
||||
},
|
||||
created() { },
|
||||
mounted() {
|
||||
this.listmenuRoleList()
|
||||
this.zoom = 1 / document.body.style.zoom
|
||||
|
||||
// this.onSubmit();
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.zoom = 1 / document.body.style.zoom
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 95
|
||||
},
|
||||
checkTime(time) {
|
||||
let t = new Date().getDate()
|
||||
// 如果想包含本月本月 - 8.64e7 * t 就不需要了,
|
||||
// 如果想之前的不能选择把 > 换成 <
|
||||
return time.getTime() > Date.now()
|
||||
},
|
||||
//获取权限
|
||||
listmenuRoleList() {
|
||||
let p = { id: this.id }
|
||||
listRoleMenu(p).then(response => {
|
||||
let ids = []
|
||||
//console.log("权限资源",response.data)
|
||||
response.data.forEach(item => {
|
||||
if (item.code === 'tjrbpush') {
|
||||
this.biaoCode = item.code
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
takeover(val) {
|
||||
this.formData.searchValue = val[0].id
|
||||
this.onSubmit()
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
selectAllChangeEvent(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
//查询
|
||||
onSubmit() {
|
||||
this.isLoading = true
|
||||
this.$refs.Timeinterval.timeOptions = [
|
||||
// { label: "年份", value: 1 },
|
||||
// { label: "季度", value: 2 },
|
||||
{ label: '月份', value: 3 }
|
||||
// { label: "周", value: 4 },
|
||||
// // { label: "自定义", value: 5 },
|
||||
]
|
||||
this.item = this.$refs.Timeinterval.timeValue
|
||||
this.formData.searchBeginTime = this.item[0]
|
||||
this.formData.searchEndTime = this.item[1]
|
||||
statisticReportPage(this.formData).then(res => {
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
changeFn(val) {
|
||||
// console.log(val);
|
||||
let year = parseInt(val.substring(0, 4))
|
||||
let month = parseInt(val.substring(5, 7))
|
||||
// console.log(year, month);
|
||||
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
|
||||
if (month < 10) {
|
||||
this.timeData = year + '-' + '0' + month + '-31'
|
||||
} else {
|
||||
this.timeData = year + '-' + month + '-31'
|
||||
}
|
||||
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
|
||||
if (month < 10) {
|
||||
this.timeData = year + '-' + '0' + month + '-30'
|
||||
} else {
|
||||
this.timeData = year + '-' + month + '-30'
|
||||
}
|
||||
} else if (month == 2) {
|
||||
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
|
||||
this.timeData = year + '-' + '0' + month + '-29'
|
||||
} else {
|
||||
this.timeData = year + '-' + '0' + month + '-28'
|
||||
}
|
||||
}
|
||||
// console.log(this.timeData);
|
||||
},
|
||||
//月报统计
|
||||
reportStatistics() {
|
||||
this.problemTime = true
|
||||
// let form = {
|
||||
// timeId: this.formData.searchEndTime
|
||||
// }
|
||||
// statisticReport(form).then(res=>{
|
||||
// if ((res.code = "A0000")) {
|
||||
// this.$message({
|
||||
// type: "success",
|
||||
// message: res.message,
|
||||
// });
|
||||
// }
|
||||
// })
|
||||
},
|
||||
//确认
|
||||
timeQuery() {
|
||||
let form = {
|
||||
timeId: this.timeData
|
||||
}
|
||||
statisticReport(form).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
// this.problemTime = false;
|
||||
})
|
||||
},
|
||||
//导出
|
||||
exportEvent() {
|
||||
this.item = this.$refs.Timeinterval.timeValue
|
||||
this.formData.searchBeginTime = this.item[0]
|
||||
this.formData.searchEndTime = this.item[1]
|
||||
statisticReportPage(this.formData).then(res => {
|
||||
res.data.records.forEach(item => {
|
||||
if (item.isUploadHead == 0) {
|
||||
item.isUploadHead = '未上送'
|
||||
} else if (item.isUploadHead == 1) {
|
||||
item.isUploadHead = '已上送'
|
||||
} else if (item.isUploadHead == 2) {
|
||||
item.isUploadHead = '取消上送'
|
||||
}
|
||||
})
|
||||
let month = parseInt(this.formData.searchBeginTime.substring(5, 7))
|
||||
// if(month <10)
|
||||
this.$refs.Workstatistics.exportData({
|
||||
filename: month + '月统计月报', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||
columnFilterMethod: function (column, $columnIndex) {
|
||||
return !(column.$columnIndex === 0)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
//计划上送网公司
|
||||
push() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择一条数据上送网公司!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
let isUpload = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
isUpload.push(item.isUploadHead)
|
||||
})
|
||||
// if(isUpload.includes(1) == true){
|
||||
// this.$message({
|
||||
// type: "warning",
|
||||
// message: '已上送,无需重复上送',
|
||||
// });
|
||||
// return
|
||||
// }else{
|
||||
this.$confirm('是否确认上送网公司?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let monthReportId = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
monthReportId.push(item.monthReportId)
|
||||
})
|
||||
|
||||
pushMonthReportStatistic(monthReportId).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消上送'
|
||||
})
|
||||
})
|
||||
// }
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onSubmit()
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
this.formData.searchValue = data.id
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-form-item--small .el-form-item__content,
|
||||
.el-form-item--small .el-form-item__label {
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
::v-deep .vxe-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,514 @@
|
||||
<template>
|
||||
<div class="pd10" v-loading="isLoading" element-loading-text="数据加载中">
|
||||
<el-form :inline="true" :model="formData" class="demo-form-inline">
|
||||
<!-- <el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area" @send="takeover"></Area>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<Timeinterval ref="Timeinterval" :interval="3"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
<!-- <el-button size="small" type="primary" icon="el-icon-circle-plus" @click="addFn">新增</el-button> -->
|
||||
<el-button size="small" type="primary" icon="el-icon-delete" @click="deleteFn">删除</el-button>
|
||||
<el-button size="small" type="primary" v-if="biaoCode === 'tjrbpush'" @click="push">上送网公司</el-button>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table stripe :data="tableData" size="mini" ref="prealarmData"
|
||||
:row-config="{ isCurrent: true, isHover: true }" :height="vh" border style="width: 100%"
|
||||
header-cell-class-name="table_header" :header-cell-style="{
|
||||
height: '25px',
|
||||
padding: '0px'
|
||||
}" :row-style="{ height: '28px' }" :cell-style="{ padding: '0px' }" @checkbox-all="selectAllChangeEvent"
|
||||
@checkbox-change="handleSelectionChange">
|
||||
<vxe-table-column type="checkbox" align="center" width="55"></vxe-table-column>
|
||||
<vxe-table-column field="billNo" show-overflow align="center" title="单据编号"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="billName" show-overflow align="center" title="单据名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="executeOrgName" show-overflow align="center" title="项目执行单位名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="treatmentMeasures" show-overflow align="center" title="采取措施"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="fillUserName" show-overflow align="center" title="填报人名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="completeTime" show-overflow align="center" title="完成时间"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<!-- <vxe-table-column field="workAlarmId" show-overflow align="center" title="告预警单id" min-width="120px"></vxe-table-column> -->
|
||||
<vxe-table-column field="feedbackOrgName" show-overflow align="center" title="反馈单位名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="provinceName" show-overflow align="center" title="省名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="province" show-overflow align="center" title="操作" min-width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary" size="mini" @click="modifyFn(scope.row)">修改</el-button>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
</vxe-table>
|
||||
<el-pagination background align="right" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum" :page-sizes="[20, 30, 50, 100]" :page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" class="mt10"></el-pagination>
|
||||
<!-- 新增/修改 -->
|
||||
<el-dialog :close-on-click-modal="false" title="修改反馈数据" :visible.sync="modifyInformation" width="40%"
|
||||
height="80%">
|
||||
<el-form :inline="true" :model="form1" class="form" ref="form" label-width="130px" :rules="rules">
|
||||
<el-form-item label="项目执行单位名称:" class="mt10" prop="executeOrgName">
|
||||
<Organization2 @click="handleNodeClick6" ref="Organization2" :valueTitle="valueTitle5"
|
||||
@clear="clear('executeOrgId', 'executeOrgName')" :editCheckCode="editCheckCode5">
|
||||
</Organization2>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="填报人名称:" prop="fillUserId" class="mt10">
|
||||
<el-select v-model="form1.fillUserId" clearable placeholder="请选择接收人名称" @change="changeFn">
|
||||
<el-option v-for="item in ImplementationPeople" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="完成时间:" prop="completeTime" class="mt10">
|
||||
<el-date-picker v-model="form1.completeTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime"
|
||||
placeholder="选择日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="告预警单id:" prop="workAlarmId" class="mt10">
|
||||
<el-input v-model="form1.workAlarmId" ></el-input>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="反馈单位名称:" class="mt10" prop="feedbackOrgName">
|
||||
<Organization1 @click="handleNodeClick7" ref="Organization1" :valueTitle="valueTitle6"
|
||||
@clear="clear('feedbackOrgId', 'feedbackOrgName')" :editCheckCode="editCheckCode6">
|
||||
</Organization1>
|
||||
</el-form-item>
|
||||
<el-form-item label="采取措施:" prop="treatmentMeasures" class="mt10">
|
||||
<el-input v-model="form1.treatmentMeasures" autosize type="textarea"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="省名称:" class="mt10" prop="provinceName" >
|
||||
<Organization1
|
||||
@click="handleNodeClick8" ref="Organization1" :valueTitle="valueTitle7"
|
||||
:editCheckCode="editCheckCode7"></Organization1>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="modifyInformation = false">取 消</el-button>
|
||||
<el-button type="primary" @click="modifyinformationFn">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Organization2 from './Area/Organization2.vue'
|
||||
import Organization1 from './Area/Organization1.vue'
|
||||
import Company from './Area/Company.vue'
|
||||
import Timeinterval from '@/views/components/TimePicker/index4'
|
||||
// import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import {
|
||||
getUserListByDeptId,
|
||||
pageAlarmBack,
|
||||
updateAlarmBack,
|
||||
delAlarmBack,
|
||||
pushAlarmHis,
|
||||
downAlarmBack
|
||||
} from '@/api/Supervisionmanage2/feedbackdata'
|
||||
import { listRoleMenu, updateRoleMenu } from '@/api/admin/role'
|
||||
export default {
|
||||
components: { Area, Timeinterval, Organization2, Organization1 },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
biaoCode: '',
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).roleList[0],
|
||||
isLoading: false,
|
||||
modifyInformation: false,
|
||||
zoom: '', //图表焦点校验
|
||||
vh: undefined,
|
||||
editCheckCode6: '',
|
||||
valueTitle6: '',
|
||||
editCheckCode5: '',
|
||||
valueTitle5: '',
|
||||
formData: {
|
||||
searchBeginTime: '',
|
||||
searchEndTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
form1: {
|
||||
completeTime: '',
|
||||
executeOrgId: '',
|
||||
executeOrgName: '',
|
||||
feedbackOrgId: '',
|
||||
feedbackOrgName: '',
|
||||
fillUserId: '',
|
||||
fillUserName: '',
|
||||
treatmentMeasures: '',
|
||||
workAlarmId: ''
|
||||
},
|
||||
rules: {
|
||||
treatmentMeasures: [{ required: true, message: '请输入采取措施', trigger: 'blur' }],
|
||||
fillUserId: [{ required: true, message: '请选择接收人名称', trigger: 'change' }],
|
||||
completeTime: [{ required: true, message: '选择日期', trigger: 'change' }]
|
||||
},
|
||||
total: 0,
|
||||
tableData: [],
|
||||
multipleSelection: [],
|
||||
ImplementationPeople: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getUserId()
|
||||
},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.listmenuRoleList()
|
||||
|
||||
this.onSubmit()
|
||||
this.getUserId()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 95
|
||||
},
|
||||
clear(key, key1) {
|
||||
this.form1[key] = ''
|
||||
this.form1[key1] = ''
|
||||
},
|
||||
//获取权限
|
||||
listmenuRoleList() {
|
||||
let p = { id: this.id }
|
||||
listRoleMenu(p).then(response => {
|
||||
let ids = []
|
||||
//console.log("权限资源",response.data)
|
||||
response.data.forEach(item => {
|
||||
if (item.code === 'tjrbpush') {
|
||||
this.biaoCode = item.code
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// //获取类型
|
||||
// getclassificationData() {
|
||||
// //计划状态
|
||||
// this.planStatus = dicData("plan_status", []);
|
||||
// },
|
||||
// takeover(val){
|
||||
// this.formData.searchValue = val[0].id
|
||||
// this.onSubmit();
|
||||
// },
|
||||
getUserId() {
|
||||
let form = {
|
||||
deptId: JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
}
|
||||
getUserListByDeptId(form).then(res => {
|
||||
this.ImplementationPeople = res.data
|
||||
})
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
selectAllChangeEvent(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
//查询
|
||||
onSubmit() {
|
||||
this.isLoading = true
|
||||
// this.$refs.Timeinterval.timeOptions = [
|
||||
// // { label: "年份", value: 1 },
|
||||
// // { label: "季度", value: 2 },
|
||||
// { label: "月份", value: 3 },
|
||||
// // { label: "周", value: 4 },
|
||||
// // // { label: "自定义", value: 5 },
|
||||
// ]
|
||||
this.item = this.$refs.Timeinterval.timeValue
|
||||
this.formData.searchBeginTime = this.item[0]
|
||||
this.formData.searchEndTime = this.item[1]
|
||||
pageAlarmBack(this.formData).then(res => {
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
//数据过滤
|
||||
// formFilter(row,column){
|
||||
// if(row.column.property == "planStatus"){
|
||||
// let title = ''
|
||||
// this.planStatus.forEach(item=>{
|
||||
// if( item.id == row.row.planStatus ){
|
||||
// title =item.name
|
||||
// }
|
||||
// })
|
||||
// return title
|
||||
// }else {
|
||||
// return row.row[row.column.property];
|
||||
// }
|
||||
// },
|
||||
//新增
|
||||
// addFn(){
|
||||
// this.modifyInformation = true
|
||||
// this.valueTitle = ''
|
||||
// this.editCheckCode = ''
|
||||
// this.form = {
|
||||
// billNo:'',
|
||||
// billName:'',
|
||||
// billType:'',
|
||||
// createrOrgName:'',
|
||||
// specialityType:'',
|
||||
// orgName:'',
|
||||
// receiveUserName:'',
|
||||
// createrTime:'',
|
||||
// managerDeptName:'',
|
||||
// mainSenderName:'',
|
||||
// copySenderName:'',
|
||||
// techSupvBasis:'',
|
||||
// problemDesc:'',
|
||||
// dealAdvise:'',
|
||||
// }
|
||||
// },
|
||||
//修改
|
||||
modifyFn(val) {
|
||||
this.modifyInformation = true
|
||||
this.valueTitle5 = val.executeOrgName
|
||||
this.editCheckCode5 = val.executeOrgId
|
||||
this.valueTitle6 = val.feedbackOrgName
|
||||
this.editCheckCode6 = val.feedbackOrgId
|
||||
this.form1 = JSON.parse(JSON.stringify(val))
|
||||
},
|
||||
//修改确定
|
||||
modifyinformationFn() {
|
||||
this.$confirm('是否确认修改?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
updateAlarmBack(this.form1).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
this.modifyInformation = false
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消修改'
|
||||
})
|
||||
})
|
||||
},
|
||||
//导出
|
||||
exportEvent() {
|
||||
// pageAlarmBack({
|
||||
// searchBeginTime:this.formData.searchBeginTime,
|
||||
// searchEndTime:this.formData.searchEndTime,
|
||||
// orgId:this.formData.orgId ,
|
||||
// pageNum: 1,
|
||||
// pageSize: this.total,
|
||||
// }).then((res) => {
|
||||
// res.data.records.forEach(item=>{
|
||||
// if(item.isUploadHead == 0){
|
||||
// item.isUploadHead = '未上送'
|
||||
// }else if(item.isUploadHead == 1){
|
||||
// item.isUploadHead = '已上送'
|
||||
// }else if(item.isUploadHead == 2){
|
||||
// item.isUploadHead = '取消上送'
|
||||
// }
|
||||
// })
|
||||
// this.$refs.prealarmData.exportData({
|
||||
// filename: '技术监督预告警单反馈数据', // 文件名字
|
||||
// sheetName: "Sheet1",
|
||||
// type: "xlsx", //导出文件类型 xlsx 和 csv
|
||||
// useStyle: true,
|
||||
// data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||
// columnFilterMethod: function (column, $columnIndex) {
|
||||
// return !(column.$columnIndex === 0);
|
||||
// },
|
||||
// });
|
||||
// });
|
||||
downAlarmBack().then(res => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
link.download = '技术监督预告警单反馈数据.xls' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.body.removeChild(link)
|
||||
})
|
||||
},
|
||||
//计划上送网公司
|
||||
push() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择一条数据上送网公司!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
// let isUpload = []
|
||||
// this.multipleSelection.forEach(item=>{
|
||||
// isUpload.push(item.isUploadHead)
|
||||
// })
|
||||
// if(isUpload.includes(1) == true){
|
||||
// this.$message({
|
||||
// type: "warning",
|
||||
// message: '已上送,无需重复上送',
|
||||
// });
|
||||
// return
|
||||
// }else{
|
||||
this.$confirm('是否确认上送网公司?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let ids = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
ids.push(item.alarmBackId)
|
||||
})
|
||||
|
||||
pushAlarmHis(ids).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消上送'
|
||||
})
|
||||
})
|
||||
// }
|
||||
},
|
||||
// 删除
|
||||
deleteFn() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择一条数据删除!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$confirm('是否确认删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let planIds = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
planIds.push(item.alarmBackId)
|
||||
})
|
||||
|
||||
delAlarmBack(planIds).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
})
|
||||
})
|
||||
},
|
||||
changeFn(val) {
|
||||
this.ImplementationPeople.forEach(item => {
|
||||
if (val == item.id) {
|
||||
this.form1.fillUserName = item.name
|
||||
}
|
||||
})
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onSubmit()
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
// this.formData.searchValue = data.id
|
||||
},
|
||||
handleNodeClick6(data) {
|
||||
this.form1.executeOrgId = data.code
|
||||
this.form1.executeOrgName = data.name
|
||||
},
|
||||
handleNodeClick7(data) {
|
||||
this.form1.feedbackOrgId = data.code
|
||||
this.form1.feedbackOrgName = data.name
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-form-item--small .el-form-item__content,
|
||||
.el-form-item--small .el-form-item__label {
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
::v-deep .form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
width: 48%;
|
||||
|
||||
.el-form-item__content {
|
||||
flex: 1 !important;
|
||||
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-input__inner {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-form-item--small .el-form-item__error {
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
::v-deep .vxe-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
505
src/views/Process-supervision/Supervisionmanage2/historyData.vue
Normal file
505
src/views/Process-supervision/Supervisionmanage2/historyData.vue
Normal file
@@ -0,0 +1,505 @@
|
||||
<template>
|
||||
<div class="pd10" v-loading="isLoading" element-loading-text="数据加载中">
|
||||
<el-form :inline="true" :model="formData" class="demo-form-inline">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area" @send="takeover"></Area>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<Timeinterval ref="Timeinterval" :interval="3"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="onSubmit1">查询</el-button>
|
||||
<el-button size="small" type="primary" icon="el-icon-delete" @click="deleteFn">删除</el-button>
|
||||
<el-button size="small" type="primary" v-if="biaoCode === 'tjrbpush'" @click="push">上送网公司</el-button>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table stripe :data="tableData" size="mini" ref="historyData"
|
||||
:row-config="{ isCurrent: true, isHover: true }" :height="vh" border style="width: 100%"
|
||||
header-cell-class-name="table_header" :header-cell-style="{
|
||||
height: '25px',
|
||||
padding: '0px'
|
||||
}" :row-style="{ height: '28px' }" :cell-style="{ padding: '0px' }" @checkbox-all="selectAllChangeEvent"
|
||||
@checkbox-change="handleSelectionChange">
|
||||
<vxe-table-column type="checkbox" align="center" width="55"></vxe-table-column>
|
||||
<vxe-table-column field="workPlanName" show-overflow align="center" title="计划名称"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="supvOrgName" show-overflow align="center" title="监督单位"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="planSupvDate" show-overflow align="center" title="计划监督时间"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="applyComment" show-overflow align="center" title="调整原因"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="adjustTime" show-overflow align="center" title="调整时间"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="otherRemark" show-overflow align="center" title="其他要求"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="planStatus" show-overflow align="center" title="计划状态" min-width="120px"
|
||||
:formatter="formFilter"></vxe-table-column>
|
||||
<!-- <vxe-table-column field="province" show-overflow align="center" title="上次调整时间" min-width="120px"></vxe-table-column> -->
|
||||
<vxe-table-column field="isUploadHead" show-overflow align="center" title="上送标识" min-width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="primary" size="small" style="color: #409eff; background: #ecf5ff"
|
||||
v-if="scope.row.isUploadHead == 0">
|
||||
未上送
|
||||
</el-tag>
|
||||
<el-tag type="primary" size="small" style="color: #67c23a; background: #f0f9eb"
|
||||
v-if="scope.row.isUploadHead == 1">
|
||||
已上送
|
||||
</el-tag>
|
||||
<el-tag type="primary" size="small" style="color: #909399; background: #f4f4f5"
|
||||
v-if="scope.row.isUploadHead == 2">
|
||||
取消上送
|
||||
</el-tag>
|
||||
<el-tag type="primary" size="small" style="color: orange; background: #f4f4f5"
|
||||
v-if="scope.row.isUploadHead == 3">
|
||||
待重新上送
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
<vxe-table-column field="updateUserName" show-overflow align="center" title="更新人"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="updateTime" show-overflow align="center" title="更新时间"
|
||||
min-width="120px"></vxe-table-column>
|
||||
<vxe-table-column field="province" show-overflow align="center" title="操作" min-width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary" size="mini" @click="modifyFn(scope.row)">修改</el-button>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
</vxe-table>
|
||||
<el-pagination background align="right" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum" :page-sizes="[20, 30, 50, 100]" :page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" class="mt10"></el-pagination>
|
||||
<!-- 修改 -->
|
||||
<el-dialog :close-on-click-modal="false" title="修改" :visible.sync="modifyInformation" width="40%" height="80%">
|
||||
<el-form :inline="true" :model="form" class="form" ref="form" label-width="120px" :rules="rules">
|
||||
<el-form-item label="计划名称:" prop="workPlanName" class="mt10">
|
||||
<el-input v-model="form.workPlanName" :disabled="disabled"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="监督单位:" class="mt10" prop="supvOrgName">
|
||||
<Organization @click="handleNodeClick1" ref="Organization" :valueTitle="valueTitle"
|
||||
:disabled="disabled" :editCheckCode="editCheckCode"></Organization>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划监督时间:" prop="planSupvDate" class="mt10">
|
||||
<el-date-picker v-model="form.planSupvDate" value-format="yyyy-MM-dd" type="month"
|
||||
:disabled="disabled" placeholder="选择日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="调整原因:" prop="applyComment" class="mt10">
|
||||
<el-input v-model="form.applyComment"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="调整时间:" prop="adjustTime" class="mt10">
|
||||
<el-date-picker v-model="form.adjustTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime"
|
||||
placeholder="选择日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="其他要求:" prop="otherRemark" class="mt10">
|
||||
<el-input v-model="form.otherRemark"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划状态:" prop="planStatus" class="mt10">
|
||||
<el-select v-model="form.planStatus" clearable placeholder="请选择计划状态">
|
||||
<el-option v-for="item in planStatus" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="上次调整时间:" prop="adjustTime" class="mt10">
|
||||
<el-date-picker
|
||||
v-model="form.adjustTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
type="datetime"
|
||||
:disabled="disabled"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item> -->
|
||||
<!-- <el-form-item label="更新人:" prop="updateUserName" class="mt10">
|
||||
<el-input v-model="form.updateUserName" :disabled="disabled"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="更新时间:" prop="updateTime" class="mt10">
|
||||
<el-date-picker
|
||||
v-model="form.updateTime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
type="datetime"
|
||||
:disabled="disabled"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="modifyInformation = false">取 消</el-button>
|
||||
<el-button type="primary" @click="modifyinformationFn">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Organization from './Area/Organization.vue'
|
||||
import Timeinterval from '@/views/components/TimePicker/index4'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import { pagePlanHis, updatePlanHis, delPlanHis, pushPlanHis } from '@/api/Supervisionmanage2/history'
|
||||
import { listRoleMenu, updateRoleMenu } from '@/api/admin/role'
|
||||
export default {
|
||||
components: { Area, Timeinterval, Organization },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
biaoCode: '',
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).roleList[0],
|
||||
isLoading: false,
|
||||
modifyInformation: false,
|
||||
disabled: false,
|
||||
zoom: '', //图表焦点校验
|
||||
vh: undefined,
|
||||
editCheckCode: '',
|
||||
valueTitle: '',
|
||||
formData: {
|
||||
orgId: '',
|
||||
searchBeginTime: '',
|
||||
searchEndTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
form: {
|
||||
id: '',
|
||||
workPlanName: '',
|
||||
supvOrgName: '',
|
||||
supvOrgId: '',
|
||||
planSupvDate: '',
|
||||
applyComment: '',
|
||||
adjustTime: '',
|
||||
otherRemark: '',
|
||||
planStatus: '',
|
||||
updateUserName: '',
|
||||
updateTime: ''
|
||||
},
|
||||
rules: {
|
||||
applyComment: [{ required: true, message: '请输入调整原因', trigger: 'blur' }],
|
||||
adjustTime: [{ required: true, message: '请输入调整时间', trigger: 'change' }],
|
||||
otherRemark: [{ required: true, message: '请输入其他要求', trigger: 'blur' }],
|
||||
planStatus: [{ required: true, message: '请选择计划状态', trigger: 'change' }]
|
||||
},
|
||||
total: 0,
|
||||
tableData: [],
|
||||
planStatus: [],
|
||||
multipleSelection: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getclassificationData()
|
||||
},
|
||||
mounted() {
|
||||
this.listmenuRoleList()
|
||||
this.zoom = 1 / document.body.style.zoom
|
||||
|
||||
// this.onSubmit();
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 95
|
||||
this.zoom = 1 / document.body.style.zoom
|
||||
},
|
||||
//获取权限
|
||||
listmenuRoleList() {
|
||||
let p = { id: this.id }
|
||||
listRoleMenu(p).then(response => {
|
||||
let ids = []
|
||||
//console.log("权限资源",response.data)
|
||||
response.data.forEach(item => {
|
||||
if (item.code === 'tjrbpush') {
|
||||
this.biaoCode = item.code
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
takeover(val) {
|
||||
this.formData.orgId = val[0].code
|
||||
this.onSubmit()
|
||||
},
|
||||
//获取类型
|
||||
getclassificationData() {
|
||||
//计划状态
|
||||
this.planStatus = dicData('plan_status', [])
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
selectAllChangeEvent(val) {
|
||||
// console.log(val);
|
||||
this.multipleSelection = val.records
|
||||
},
|
||||
onSubmit1() {
|
||||
this.formData.pageNum = 1
|
||||
this.onSubmit()
|
||||
},
|
||||
//查询
|
||||
onSubmit() {
|
||||
this.isLoading = true
|
||||
// this.$refs.Timeinterval.timeOptions = [
|
||||
// // { label: "年份", value: 1 },
|
||||
// // { label: "季度", value: 2 },
|
||||
// { label: "月份", value: 3 },
|
||||
// // { label: "周", value: 4 },
|
||||
// // // { label: "自定义", value: 5 },
|
||||
// ]
|
||||
this.item = this.$refs.Timeinterval.timeValue
|
||||
this.formData.searchBeginTime = this.item[0]
|
||||
this.formData.searchEndTime = this.item[1]
|
||||
pagePlanHis(this.formData).then(res => {
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
//数据过滤
|
||||
formFilter(row, column) {
|
||||
if (row.column.property == 'planStatus') {
|
||||
let title = ''
|
||||
this.planStatus.forEach(item => {
|
||||
if (item.id == row.row.planStatus) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
} else {
|
||||
return row.row[row.column.property]
|
||||
}
|
||||
},
|
||||
//修改
|
||||
modifyFn(val) {
|
||||
this.modifyInformation = true
|
||||
this.form = JSON.parse(JSON.stringify(val))
|
||||
// this.planStatus.forEach(item=>{
|
||||
// if( item.gvalue == this.form.planStatus ){
|
||||
// this.form.planStatus =item.name
|
||||
// }
|
||||
// })
|
||||
this.disabled = true
|
||||
this.valueTitle = val.supvOrgName
|
||||
this.editCheckCode = val.supvOrgId
|
||||
},
|
||||
//修改确定
|
||||
modifyinformationFn() {
|
||||
this.$refs.form.validate(value => {
|
||||
// console.log(value);
|
||||
if (value == true) {
|
||||
this.$confirm('是否确认修改?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
// this.planStatus.forEach(item=>{
|
||||
// // console.log(item);
|
||||
// if(this.form.planStatus == item.id){
|
||||
// this.form.planStatus = item.gvalue
|
||||
// }
|
||||
// })
|
||||
updatePlanHis(this.form).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
this.modifyInformation = false
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消修改'
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//导出
|
||||
exportEvent() {
|
||||
pagePlanHis({
|
||||
searchBeginTime: this.formData.searchBeginTime,
|
||||
searchEndTime: this.formData.searchEndTime,
|
||||
orgId: this.formData.orgId,
|
||||
pageNum: 1,
|
||||
pageSize: this.total
|
||||
}).then(res => {
|
||||
res.data.records.forEach(item => {
|
||||
if (item.isUploadHead == 0) {
|
||||
item.isUploadHead = '未上送'
|
||||
} else if (item.isUploadHead == 1) {
|
||||
item.isUploadHead = '已上送'
|
||||
} else if (item.isUploadHead == 2) {
|
||||
item.isUploadHead = '取消上送'
|
||||
}
|
||||
})
|
||||
this.$refs.historyData.exportData({
|
||||
filename: '监督计划变更历史数据', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data: res.data.records, // 数据源 // 过滤那个字段导出
|
||||
columnFilterMethod: function (column, $columnIndex) {
|
||||
return !(column.$columnIndex === 0)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
//计划上送网公司
|
||||
push() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择一条数据上送网公司!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
// let isUpload = []
|
||||
// this.multipleSelection.forEach(item=>{
|
||||
// isUpload.push(item.isUploadHead)
|
||||
// })
|
||||
// if(isUpload.includes(1) == true){
|
||||
// this.$message({
|
||||
// type: "warning",
|
||||
// message: '已上送,无需重复上送',
|
||||
// });
|
||||
// return
|
||||
// }else{
|
||||
this.$confirm('是否确认上送网公司?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let ids = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
ids.push(item.id)
|
||||
})
|
||||
|
||||
pushPlanHis(ids).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消上送'
|
||||
})
|
||||
})
|
||||
// }
|
||||
},
|
||||
// 删除
|
||||
deleteFn() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择一条数据删除!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$confirm('是否确认删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
let planIds = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
planIds.push(item.id)
|
||||
})
|
||||
|
||||
delPlanHis(planIds).then(res => {
|
||||
if ((res.code == 'A0000')) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: res.message
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
})
|
||||
})
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onSubmit()
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
this.formData.orgId = data.code
|
||||
},
|
||||
handleNodeClick1(data) {
|
||||
this.form.supvOrgId = data.code
|
||||
this.form.supvOrgName = data.name
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-form-item--small .el-form-item__content,
|
||||
.el-form-item--small .el-form-item__label {
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
::v-deep .form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
width: 48%;
|
||||
|
||||
.el-form-item__content {
|
||||
flex: 1 !important;
|
||||
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-input__inner {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .vxe-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
1122
src/views/Process-supervision/Supervisionmanage2/prealarmData.vue
Normal file
1122
src/views/Process-supervision/Supervisionmanage2/prealarmData.vue
Normal file
File diff suppressed because it is too large
Load Diff
94
src/views/Process-supervision/Terminaldetection.vue
Normal file
94
src/views/Process-supervision/Terminaldetection.vue
Normal file
@@ -0,0 +1,94 @@
|
||||
66
|
||||
<template>
|
||||
<div class="pd10">
|
||||
<el-row style="overflow-y: hidden">
|
||||
<el-col>
|
||||
<el-tabs v-model.trim="activeName" type="border-card">
|
||||
<!-- 监测终端统计 -->
|
||||
<el-tab-pane label="终端入网检测" name="first" :style="'height:' + vh + ';'">
|
||||
<el-tabs v-if="activeName == 'first'" v-model="TerminalDetection">
|
||||
<!-- 区域暂态事件统计 -->
|
||||
<el-tab-pane label="列表" name="Ttable">
|
||||
<Ttable v-if="TerminalDetection == 'Ttable'"></Ttable>
|
||||
</el-tab-pane>
|
||||
|
||||
<!-- 区域暂态指标分类统计表 -->
|
||||
<el-tab-pane label="图表" name="Tchart">
|
||||
<Tchart v-if="TerminalDetection == 'Tchart'"></Tchart>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-tab-pane>
|
||||
<!-- 监测点统计 -->
|
||||
<el-tab-pane label="终端周期检测" name="second" :style="'height:' + vh + ';'">
|
||||
<el-tabs v-if="activeName == 'second'" v-model="CycleDetection">
|
||||
<!-- 区域暂态事件统计 -->
|
||||
<el-tab-pane label="列表" name="Ctable">
|
||||
<Ctable v-if="CycleDetection == 'Ctable'"></Ctable>
|
||||
</el-tab-pane>
|
||||
|
||||
<!-- 区域暂态指标分类统计表 -->
|
||||
<el-tab-pane label="图表" name="Cchart">
|
||||
<Cchart v-if="CycleDetection == 'Cchart'"></Cchart>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Ttable from './components/TerminalDetection/table.vue'
|
||||
import Tchart from './components/TerminalDetection/chart.vue'
|
||||
import Ctable from './components/CycleDetection/table.vue'
|
||||
import Cchart from './components/CycleDetection/chart.vue'
|
||||
|
||||
export default {
|
||||
name: 'zdjcgl',
|
||||
components: { Ttable, Tchart, Cchart, Ctable },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
vh1: '',
|
||||
activeName: 'first',
|
||||
TerminalDetection: 'Ttable',
|
||||
CycleDetection: 'Ctable',
|
||||
device: ''
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 80 + 'px'
|
||||
this.vh1 = window.sessionStorage.getItem('appheight') - 143 + 'px'
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url('../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
.block {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
0
src/views/Process-supervision/WorkOrder.vue
Normal file
0
src/views/Process-supervision/WorkOrder.vue
Normal file
@@ -0,0 +1,429 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline">
|
||||
<Area @click="handleNodeClick"></Area>
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="Timeinterval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="info">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :style="`height: ${vh}; overflow: hidden;`">
|
||||
<div v-loading="isLoading1" id="electr1" style="height: 100%" />
|
||||
</el-col>
|
||||
<el-col :span="12" :style="`height: ${vh}; overflow: hidden;`">
|
||||
<div v-loading="isLoading2" id="electr2" style="height: 100%" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import { getCycleStatistics } from '@/api/Process-supervision/Terminaldetection/index.js'
|
||||
export default {
|
||||
components: { Area, Timeinterval },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
zoom: '',
|
||||
isLoading1: false,
|
||||
isLoading2: false,
|
||||
vh: null,
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
list: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.info()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 170 + 'px'
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID1.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID2.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
},
|
||||
info() {
|
||||
getCycleStatistics({
|
||||
endTime: this.$refs.Timeinterval.timeValue[1],
|
||||
id: this.id,
|
||||
startTime: this.$refs.Timeinterval.timeValue[0]
|
||||
}).then(res => {
|
||||
this.list = res.data
|
||||
this.electr1()
|
||||
this.electr2()
|
||||
})
|
||||
},
|
||||
electr1() {
|
||||
this.isLoading1 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID1.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID1)
|
||||
let title = []
|
||||
let data = []
|
||||
let data1 = []
|
||||
this.list.dateStatistics.forEach(item => {
|
||||
title.push(item.orgName)
|
||||
data.push(item.expanded)
|
||||
data1.push(item.notExpanded)
|
||||
})
|
||||
let option = {
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '50px',
|
||||
top: '50px',
|
||||
left: '30px',
|
||||
bottom: '50px',
|
||||
containLabel: true
|
||||
},
|
||||
legend: {
|
||||
data: ['已展开', '未展开'],
|
||||
itemWidth: 16,
|
||||
itemHeight: 16,
|
||||
right: 40,
|
||||
top: 20,
|
||||
itemGap: 28,
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: title,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor,
|
||||
rotate: 30, interval: 0,
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
name: '(单位/台)',
|
||||
nameTextStyle: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
// dataZoom: [
|
||||
// {
|
||||
// show: true,
|
||||
// height: 12,
|
||||
// xAxisIndex: [0],
|
||||
// bottom: '10px',
|
||||
// start: 0,
|
||||
// end: 100,
|
||||
// handleIcon:
|
||||
// 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
|
||||
// handleSize: '110%',
|
||||
// handleStyle: {
|
||||
// color: '#d3dee5'
|
||||
// },
|
||||
// textStyle: {
|
||||
// color: '#fff'
|
||||
// },
|
||||
// borderColor: '#90979c'
|
||||
// },
|
||||
// {
|
||||
// type: 'inside',
|
||||
// show: true,
|
||||
// height: 15,
|
||||
// start: 0,
|
||||
// end: 100
|
||||
// }
|
||||
// ],
|
||||
series: [
|
||||
{
|
||||
name: '已展开',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: data
|
||||
},
|
||||
{
|
||||
name: '未展开',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[1] }
|
||||
},
|
||||
data: data1
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
}, 0)
|
||||
this.isLoading1 = false
|
||||
},
|
||||
electr2() {
|
||||
this.isLoading2 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID2.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID2)
|
||||
let title = []
|
||||
let data = []
|
||||
this.list.orgStatistics.forEach(item => {
|
||||
title.push(item.orgName)
|
||||
data.push(item.count)
|
||||
})
|
||||
let option = {
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '30px',
|
||||
top: '50px',
|
||||
left: '50px',
|
||||
bottom: '50px',
|
||||
containLabel: true
|
||||
},
|
||||
legend: {
|
||||
data: ['检测终端数量'],
|
||||
itemWidth: 16,
|
||||
itemHeight: 16,
|
||||
right: 40,
|
||||
top: 20,
|
||||
itemGap: 28,
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
// dataZoom: [
|
||||
// {
|
||||
// show: true,
|
||||
// height: 12,
|
||||
// xAxisIndex: [0],
|
||||
// bottom: '10px',
|
||||
// start: 0,
|
||||
// end: 100,
|
||||
// handleIcon:
|
||||
// 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
|
||||
// handleSize: '110%',
|
||||
// handleStyle: {
|
||||
// color: '#d3dee5'
|
||||
// },
|
||||
// textStyle: {
|
||||
// color: '#fff'
|
||||
// },
|
||||
// borderColor: '#90979c'
|
||||
// },
|
||||
// {
|
||||
// type: 'inside',
|
||||
// show: true,
|
||||
// height: 15,
|
||||
// start: 0,
|
||||
// end: 100
|
||||
// }
|
||||
// ],
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: title,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor,
|
||||
rotate: 30, interval: 0,
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
name: '(单位/台)',
|
||||
nameTextStyle: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '检测终端数量',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: data
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
}, 0)
|
||||
this.isLoading2 = false
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
this.id = data.id
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,417 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" :model="ruleForm" class="demo-form-inline">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
<el-form-item label=" 终端名称:">
|
||||
<el-input v-model="ruleForm.name" clearable placeholder="请输入终端名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="生产厂家:">
|
||||
<el-select
|
||||
v-model="ruleForm.manufacture"
|
||||
placeholder="请选择生产厂家"
|
||||
multiple
|
||||
collapse-tags
|
||||
clearable
|
||||
class="select"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in manufactorList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测结果:">
|
||||
<el-select v-model="ruleForm.testResults" placeholder="请选择检测结果" clearable class="select">
|
||||
<el-option
|
||||
v-for="item in testResultsList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="Monitoring">查询</el-button>
|
||||
|
||||
<el-button type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="UploadDetection" type="primary" icon="el-icon-upload2">上传检测报告</el-button>
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<vxe-table
|
||||
:data="totalData"
|
||||
:height="height"
|
||||
border
|
||||
:row-config="{ isCurrent: true, isHover: true }"
|
||||
size="mini"
|
||||
ref="Monitoringpoint"
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@checkbox-change="handleSelectionChange"
|
||||
>
|
||||
<vxe-table-column align="center" type="checkbox" width="55"></vxe-table-column>
|
||||
|
||||
<vxe-table-column
|
||||
v-for="(item, index) in tableHeaderMonitoring"
|
||||
align="center"
|
||||
:field="item.prop"
|
||||
:title="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
:formatter="formFilter"
|
||||
:show-overflow="true"
|
||||
></vxe-table-column>
|
||||
<vxe-column title="操作" width="320" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="download(row, 0)"
|
||||
icon="el-icon-download"
|
||||
:disabled="row.originalReport == null"
|
||||
>
|
||||
下载原始数据报告
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="download(row, 1)"
|
||||
icon="el-icon-download"
|
||||
:disabled="row.inspectionReport == null"
|
||||
>
|
||||
下载检测报告
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="ruleForm.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="ruleForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="titles"
|
||||
:visible.sync="showBatchUpload"
|
||||
width="30%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-upload
|
||||
multiple
|
||||
action="#"
|
||||
:http-request="TerminalUpload"
|
||||
:limit="999"
|
||||
accept="doc"
|
||||
:before-remove="beforeRemove"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-error="handleUploadError"
|
||||
:file-list="fileList"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<el-button @click="fileType = ['doc']" type="primary" icon="el-icon-upload2">选择文件</el-button>
|
||||
<span :style="`color:#f58003`"> (*传入的检测报告文件格式(终端编号-检测报告(yyyy-MM-dd).docx))</span>
|
||||
</el-upload>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="BatchUpload">上 传</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import {deptTree} from '@/api/admin/dept'
|
||||
import { getTerminalPage, importReport, reportDownload } from '@/api/Process-supervision/Terminaldetection/index.js'
|
||||
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
export default {
|
||||
components: { Area },
|
||||
data() {
|
||||
return {
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem('cntoken')
|
||||
}, // 设置上传的请求头部
|
||||
vh: '',
|
||||
title: '',
|
||||
// 查询数据
|
||||
titles: '',
|
||||
ruleForm: {
|
||||
name: '',
|
||||
type: 1,
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
manufacture: [],
|
||||
testResults: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
total: 0,
|
||||
height: null,
|
||||
isLoading: false,
|
||||
|
||||
multipleSelection: [],
|
||||
testResultsList: [
|
||||
{
|
||||
id: 0,
|
||||
name: '未展开'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
name: '已展开'
|
||||
}
|
||||
],
|
||||
fileList: [],
|
||||
fileType: [],
|
||||
uploadType: '',
|
||||
showBatchUpload: false,
|
||||
manufactorList: [],
|
||||
//台区台账表头
|
||||
tableHeaderMonitoring: [
|
||||
{ prop: 'id', label: '终端编号', width: 120 },
|
||||
{ prop: 'name', label: '上产厂家', width: 180 },
|
||||
{ prop: 'orgName', label: '安装位置', width: 150 },
|
||||
{ prop: 'inspectionUnit', label: '送检单位', width: 150 },
|
||||
{ prop: 'testResults', label: '检测结果', width: 120 },
|
||||
{ prop: 'nextInspectionTime', label: '下次监测时间', width: 170 }
|
||||
],
|
||||
totalData: [],
|
||||
monitorStateList: [], //监测点状态
|
||||
monitorTypeList: [], //监测点类型
|
||||
potentialTransFormerTypeList: [], //电压互感器类型
|
||||
neutralGroundingModeList: [] //中性点接地方式
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getclassificationData()
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.Monitoring()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 217
|
||||
},
|
||||
//获取类型
|
||||
getclassificationData() {
|
||||
//监测点状态
|
||||
this.monitorStateList = dicData('Line_State', [])
|
||||
//监测点类型
|
||||
this.monitorTypeList = dicData('Line_Type', [])
|
||||
//电压互感器类型
|
||||
this.potentialTransFormerTypeList = dicData('Voltage_Transformer', [])
|
||||
//中性点接地方式
|
||||
this.neutralGroundingModeList = dicData('Neutral_Point', [])
|
||||
//监测点标签
|
||||
this.resultList = dicData('Monitoring_Labels', [])
|
||||
//生产厂家
|
||||
//生产厂家
|
||||
this.manufactorList = dicData('Dev_Manufacturers', [])
|
||||
this.manufactorList.forEach(item => {
|
||||
this.ruleForm.manufacture.push(item.id)
|
||||
})
|
||||
},
|
||||
|
||||
//查询用户用电信息
|
||||
Monitoring() {
|
||||
getTerminalPage(this.ruleForm).then(res => {
|
||||
this.totalData = res.data.records
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
// 数据过滤
|
||||
formFilter(row, column) {
|
||||
if (row.column.property == 'testResults') {
|
||||
return row.row.testResults == 0 ? '未展开' : '已展开'
|
||||
} else {
|
||||
return row.row[row.column.property]
|
||||
}
|
||||
},
|
||||
// 区域勾选
|
||||
handleNodeClick(data) {
|
||||
this.ruleForm.id = data.id
|
||||
},
|
||||
//数据上传
|
||||
upload() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择台账!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '上传成功!!!',
|
||||
type: 'success'
|
||||
})
|
||||
},
|
||||
// 重置
|
||||
Reset() {
|
||||
// 查询数据
|
||||
this.ruleForm.searchValue = ''
|
||||
},
|
||||
|
||||
//checkbox选择事件
|
||||
handleSelectionChange(row) {
|
||||
this.multipleSelection = row.records
|
||||
},
|
||||
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.ruleForm.pageSize = val
|
||||
this.Monitoring()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.ruleForm.pageNum = val
|
||||
this.Monitoring()
|
||||
},
|
||||
// 上传报告
|
||||
TerminalUpload(params) {
|
||||
this.fileList.push(params.file)
|
||||
|
||||
// form.append("files", params.file);
|
||||
},
|
||||
//导出
|
||||
exportEvent() {
|
||||
this.$refs.Monitoringpoint.exportData({
|
||||
filename: 'export', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data: this.totalData, // 数据源 // 过滤那个字段导出 //
|
||||
columnFilterMethod: function (column, $columnIndex) {
|
||||
return !(column.$columnIndex === 0 || column.$columnIndex === 7)
|
||||
}
|
||||
})
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
this.fileList = fileList
|
||||
},
|
||||
// 上传前校检格式和大小
|
||||
handleBeforeUpload(file) {
|
||||
// 校检文件类型
|
||||
if (this.fileType) {
|
||||
let fileExtension = ''
|
||||
if (file.name.lastIndexOf('.') > -1) {
|
||||
fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
|
||||
}
|
||||
const isTypeOk = this.fileType.some(type => {
|
||||
if (file.type.indexOf(type) > -1) return true
|
||||
return !!(fileExtension && fileExtension.indexOf(type) > -1)
|
||||
})
|
||||
if (!isTypeOk) {
|
||||
this.$message.error(`文件格式不正确, 请上传${this.fileType.join('/')}格式文件!`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
this.$message('正在上传文件,请稍候...')
|
||||
this.number++
|
||||
return true
|
||||
},
|
||||
// 上传检测报告
|
||||
UploadDetection() {
|
||||
this.fileType = ['doc']
|
||||
this.titles = '上传检测报告__支持批量上传'
|
||||
this.uploadType = 1
|
||||
this.showBatchUpload = true
|
||||
},
|
||||
// 关闭上传弹框
|
||||
handleClose() {
|
||||
this.fileList = []
|
||||
this.showBatchUpload = false
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error(err)
|
||||
},
|
||||
BatchUpload() {
|
||||
let form = new FormData()
|
||||
form.append('type', this.uploadType)
|
||||
this.fileList.forEach(item => {
|
||||
form.append('files', item)
|
||||
})
|
||||
importReport(form)
|
||||
.then(res => {
|
||||
if (res.type == 'application/json') {
|
||||
this.$message({
|
||||
message: '上传成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
this.Monitoring()
|
||||
} else {
|
||||
this.$message({
|
||||
message: '上传失败!',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(response => {
|
||||
// console.log(response);
|
||||
})
|
||||
},
|
||||
// 下载报告
|
||||
download(row, type) {
|
||||
reportDownload({
|
||||
id: row.id,
|
||||
type: type
|
||||
}).then(res => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
|
||||
})
|
||||
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = type == 1 ? row.inspectionName : row.originalName // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.bodyNaNpxoveChild(link)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .vxe-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.pms {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.obtain {
|
||||
margin-left: 1220px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,236 @@
|
||||
<template>
|
||||
<div class="upload-file">
|
||||
<el-upload
|
||||
multiple
|
||||
:action="uploadFileUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
:on-success="handleUploadSuccess"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
|
||||
ref="upload"
|
||||
>
|
||||
<!-- 上传按钮 -->
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="fileList.name"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
size="small"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-upload2"
|
||||
>上传本地报告</el-button
|
||||
>
|
||||
</div>
|
||||
<!-- 上传提示 -->
|
||||
</el-upload>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { getAccessToken } from "@/utils/auth";
|
||||
// import { getfile } from "@/api/core/ProjectList";
|
||||
|
||||
export default {
|
||||
name: "FileUpload",
|
||||
props: {
|
||||
// 值
|
||||
value: [String, Object, Array],
|
||||
// 数量限制
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 100,
|
||||
},
|
||||
id: {},
|
||||
originalName: {},
|
||||
originalReport: {},
|
||||
// 大小限制(MB)
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 512,
|
||||
},
|
||||
// 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: {
|
||||
type: Array,
|
||||
default: () => ["doc"],
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
number: 0,
|
||||
uploadList: [],
|
||||
uploadFileUrl: "/api/process-boot/process/pmsTerminalDetection/upload", // 请求地址
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem("cntoken"),
|
||||
}, // 设置上传的请求头部
|
||||
fileList: {
|
||||
name: "",
|
||||
data: "",
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
// value: {
|
||||
// handler(val) {
|
||||
// if (val) {
|
||||
// let temp = 1;
|
||||
// // 首先将值转为数组
|
||||
// const list = Array.isArray(val) ? val : this.value.split(",");
|
||||
// // 然后将数组转为对象数组
|
||||
// this.fileList = list.map((item) => {
|
||||
// if (typeof item === "string") {
|
||||
// item = { name: item, url: item };
|
||||
// }
|
||||
// item.uid = item.uid || new Date().getTime() + temp++;
|
||||
// return item;
|
||||
// });
|
||||
// } else {
|
||||
// this.fileList = [];
|
||||
// return [];
|
||||
// }
|
||||
// },
|
||||
// deep: true,
|
||||
// immediate: true,
|
||||
// },
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.fileType || this.fileSize);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.fileList = {
|
||||
name: this.originalName,
|
||||
data: this.originalReport,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 上传前校检格式和大小
|
||||
handleBeforeUpload(file) {
|
||||
// 校检文件类型
|
||||
if (this.fileType) {
|
||||
let fileExtension = "";
|
||||
if (file.name.lastIndexOf(".") > -1) {
|
||||
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
|
||||
}
|
||||
const isTypeOk = this.fileType.some((type) => {
|
||||
if (file.type.indexOf(type) > -1) return true;
|
||||
return !!(fileExtension && fileExtension.indexOf(type) > -1);
|
||||
});
|
||||
if (!isTypeOk) {
|
||||
this.$message.error(
|
||||
`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`
|
||||
);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// 校检文件大小
|
||||
if (this.fileSize) {
|
||||
const isLt = file.size / 1024 / 1024 < this.fileSize;
|
||||
if (!isLt) {
|
||||
this.$message.error(`上传文件大小不能超过 ${this.fileSize} MB!`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this.$message("正在上传文件,请稍候...");
|
||||
this.number++;
|
||||
return true;
|
||||
},
|
||||
// 文件个数超出
|
||||
handleExceed() {
|
||||
// this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`);
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error(err);
|
||||
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res) {
|
||||
this.$message({
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.fileList.name = `${this.id}-原始数据报告`;
|
||||
this.fileList.data = res.data;
|
||||
// console.log(`123`, res);
|
||||
},
|
||||
// 删除文件
|
||||
handleDelete(index) {
|
||||
// this.fileList.splice(index, 1);
|
||||
// this.$emit("input", this.fileList);
|
||||
},
|
||||
// 获取文件名称
|
||||
getFileName(name) {
|
||||
if (name.lastIndexOf("/") > -1) {
|
||||
return name.slice(name.lastIndexOf("/") + 1);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
},
|
||||
// 对象转成指定字符串分隔
|
||||
listToString(list, separator) {
|
||||
let strs = "";
|
||||
separator = separator || ",";
|
||||
for (let i in list) {
|
||||
strs += list[i].url + separator;
|
||||
}
|
||||
return strs !== "" ? strs.substr(0, strs.length - 1) : "";
|
||||
},
|
||||
// 下载
|
||||
exportExcels(e) {
|
||||
getfile(e.url.substring(32)).then((res) => {
|
||||
let blob = new Blob([res], {
|
||||
type: "application/vnd.ms-excel",
|
||||
});
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
const link = document.createElement("a"); // 创建a标签
|
||||
link.href = url; // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
link.download = e.url.substring(
|
||||
e.url.lastIndexOf("/") + 1,
|
||||
e.url.length
|
||||
); // 设置下载的文件名
|
||||
document.body.appendChild(link);
|
||||
link.click(); //执行下载
|
||||
document.body.removeChild(link);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.upload-file-uploader {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.upload-file-list .el-upload-list__item {
|
||||
border: 1px solid #e4e7ed;
|
||||
line-height: 2;
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
}
|
||||
.upload-file-list .ele-upload-list__item-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
color: inherit;
|
||||
}
|
||||
.ele-upload-list__item-content-action .el-link {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,410 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline">
|
||||
<Area @click="handleNodeClick"></Area>
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="Timeinterval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="info">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12" :style="`height: ${vh}; overflow: hidden;`">
|
||||
<div v-loading="isLoading1" id="electr1" style="height: 100%" />
|
||||
</el-col>
|
||||
<el-col :span="12" :style="`height: ${vh}; overflow: hidden;`">
|
||||
<div v-loading="isLoading2" id="electr2" style="height: 100%" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import { getStatistics } from '@/api/Process-supervision/Terminaldetection/index.js'
|
||||
export default {
|
||||
components: { Area, Timeinterval },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
zoom: '',
|
||||
isLoading1: false,
|
||||
isLoading2: false,
|
||||
vh: null,
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
list: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
|
||||
this.info()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 170 + 'px'
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID1.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID2.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
},
|
||||
info() {
|
||||
getStatistics({
|
||||
endTime: this.$refs.Timeinterval.timeValue[1],
|
||||
id: this.id,
|
||||
startTime: this.$refs.Timeinterval.timeValue[0]
|
||||
}).then(res => {
|
||||
this.list = res.data
|
||||
this.electr1()
|
||||
this.electr2()
|
||||
})
|
||||
},
|
||||
electr1() {
|
||||
this.isLoading1 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID1.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID1)
|
||||
let title = []
|
||||
let data = []
|
||||
this.list.dateStatistics.forEach(item => {
|
||||
title.push(item.statisticsDate)
|
||||
data.push(item.count)
|
||||
})
|
||||
let option = {
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '50px',
|
||||
top: '50px',
|
||||
left: '30px',
|
||||
bottom: '50px',
|
||||
containLabel: true
|
||||
},
|
||||
// dataZoom: [
|
||||
// {
|
||||
// show: true,
|
||||
// height: 12,
|
||||
// xAxisIndex: [0],
|
||||
// bottom: '10px',
|
||||
// start: 0,
|
||||
// end: 100,
|
||||
// handleIcon:
|
||||
// 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
|
||||
// handleSize: '110%',
|
||||
// handleStyle: {
|
||||
// color: '#d3dee5'
|
||||
// },
|
||||
// textStyle: {
|
||||
// color: '#fff'
|
||||
// },
|
||||
// borderColor: '#90979c'
|
||||
// },
|
||||
// {
|
||||
// type: 'inside',
|
||||
// show: true,
|
||||
// height: 15,
|
||||
// start: 0,
|
||||
// end: 100
|
||||
// }
|
||||
// ],
|
||||
legend: {
|
||||
data: ['日检测终端数量'],
|
||||
itemWidth: 16,
|
||||
right: 40,
|
||||
top: 20,
|
||||
itemHeight: 16,
|
||||
itemGap: 28,
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: title,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor,
|
||||
rotate: 30, interval: 0,
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
name: '(单位/台)',
|
||||
nameTextStyle: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '日检测终端数量',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: data
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
}, 0)
|
||||
this.isLoading1 = false
|
||||
},
|
||||
electr2() {
|
||||
this.isLoading2 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = document.getElementById('app-main-in').offsetWidth / 2 + 'px'),
|
||||
(domID2.style.height = window.sessionStorage.getItem('appheight') - 170 + 'px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID2)
|
||||
let title = []
|
||||
let data = []
|
||||
this.list.orgStatistics.forEach(item => {
|
||||
title.push(item.orgName)
|
||||
data.push(item.count)
|
||||
})
|
||||
let option = {
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '30px',
|
||||
top: '50px',
|
||||
left: '50px',
|
||||
bottom: '50px',
|
||||
containLabel: true
|
||||
},
|
||||
// dataZoom: [
|
||||
// {
|
||||
// show: true,
|
||||
// height: 12,
|
||||
// xAxisIndex: [0],
|
||||
// bottom: '10px',
|
||||
// start: 0,
|
||||
// end: 100,
|
||||
// handleIcon:
|
||||
// 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
|
||||
// handleSize: '110%',
|
||||
// handleStyle: {
|
||||
// color: '#d3dee5'
|
||||
// },
|
||||
// textStyle: {
|
||||
// color: '#fff'
|
||||
// },
|
||||
// borderColor: '#90979c'
|
||||
// },
|
||||
// {
|
||||
// type: 'inside',
|
||||
// show: true,
|
||||
// height: 15,
|
||||
// start: 0,
|
||||
// end: 100
|
||||
// }
|
||||
// ],
|
||||
legend: {
|
||||
data: ['检测终端数量'],
|
||||
itemWidth: 16,
|
||||
itemHeight: 16,
|
||||
itemGap: 28,
|
||||
right: 40,
|
||||
top: 20,
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: title,
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor,
|
||||
rotate: 30, interval: 0,
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
name: '(单位/台)',
|
||||
nameTextStyle: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '检测终端数量',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: data
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
}, 0)
|
||||
this.isLoading2 = false
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
this.id = data.id
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,252 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="700px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="form"
|
||||
ref="elform"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="终端编号:" prop="id">
|
||||
<el-input
|
||||
clearable
|
||||
:disabled="title == `修改`"
|
||||
v-model="form.id"
|
||||
placeholder="请输入终端编号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="终端名称:" prop="name">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="form.name"
|
||||
placeholder="请输入终端名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="送检单位:" prop="inspectionUnit">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="form.inspectionUnit"
|
||||
placeholder="请输入送检单位"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测时间:" prop="inspectionTime">
|
||||
<el-date-picker
|
||||
v-model="form.inspectionTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="安装位置:" prop="installPlace">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="form.installPlace"
|
||||
placeholder="请输入安装位置"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="生产厂家:" prop="manufacture">
|
||||
<el-select
|
||||
v-model="form.manufacture"
|
||||
placeholder="请选择生产厂家"
|
||||
clearable
|
||||
class="select"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in manufactorList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form label-width="100px">
|
||||
<el-form-item label="原始数据报告:">
|
||||
<File
|
||||
ref="File"
|
||||
:originalName="form.originalName"
|
||||
:originalReport="form.originalReport"
|
||||
:id="form.id"
|
||||
/>
|
||||
<!-- <el-upload
|
||||
ref="upload"
|
||||
class="upload-files"
|
||||
action=""
|
||||
:limit="1"
|
||||
:headers="headers"
|
||||
name="file"
|
||||
multiple
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
>
|
||||
<el-button slot="trigger" size="small" type="primary"
|
||||
>选取文件</el-button
|
||||
>
|
||||
</el-upload> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" size="small" @click="handleClose"
|
||||
>取 消</el-button
|
||||
>
|
||||
<el-button type="primary" size="small" @click="submitForm"
|
||||
>确 定</el-button
|
||||
>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
insertTerminal,
|
||||
updateTerminal,
|
||||
} from "@/api/Process-supervision/Terminaldetection/index.js";
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import File from "./File.vue";
|
||||
export default {
|
||||
components: { File },
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
},
|
||||
list: {
|
||||
type: [Array, Object],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem("cntoken"),
|
||||
},
|
||||
fileList: [],
|
||||
dialogVisible: true,
|
||||
form: {
|
||||
id: "",
|
||||
inspectionUnit: "",
|
||||
inspectionTime: "",
|
||||
installPlace: "",
|
||||
manufacture: "",
|
||||
name: "",
|
||||
originalName: "",
|
||||
orgNo: JSON.parse(window.sessionStorage.getItem("Info")).deptId,
|
||||
orgName: JSON.parse(window.sessionStorage.getItem("Info")).deptName,
|
||||
},
|
||||
rules: {
|
||||
id: [{ required: true, message: "请输入终端编号", trigger: "blur" }],
|
||||
name: [{ required: true, message: "请输入终端名称", trigger: "blur" }],
|
||||
installPlace: [
|
||||
{ required: true, message: "请输入安装位置", trigger: "blur" },
|
||||
],
|
||||
inspectionUnit: [
|
||||
{ required: true, message: "请输入送检单位", trigger: "blur" },
|
||||
],
|
||||
inspectionTime: [
|
||||
{ required: true, message: "请选择时间", trigger: "change" },
|
||||
],
|
||||
manufacture: [
|
||||
{ required: true, message: "请选择生产厂家", trigger: "change" },
|
||||
],
|
||||
},
|
||||
manufactorList: [],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
//生产厂家
|
||||
this.manufactorList = dicData("Dev_Manufacturers", []);
|
||||
this.title == "修改"
|
||||
? (this.form = JSON.parse(JSON.stringify(this.list)))
|
||||
: "";
|
||||
},
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.form.originalReport = this.$refs.File.fileList.data;
|
||||
|
||||
this.$refs.elform.validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.title == "新增") {
|
||||
insertTerminal(this.form).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("onSubmit");
|
||||
this.$emit("handleClose");
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: "warning",
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (this.title == "修改") {
|
||||
updateTerminal(this.form).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("onSubmit");
|
||||
this.$emit("handleClose");
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: "warning",
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
// console.log(file, fileList);
|
||||
this.fileList = fileList;
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
::v-deep .form {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
width: 48%;
|
||||
margin-bottom: 15px !important;
|
||||
.el-form-item__content {
|
||||
flex: 1 !important;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
.el-input__inner {
|
||||
width: 100% !important;
|
||||
}
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,560 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" :model="ruleForm" class="demo-form-inline">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
<el-form-item label="终端名称:">
|
||||
<el-input v-model="ruleForm.name" clearable placeholder="请输入终端名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="生产厂家:">
|
||||
<el-select
|
||||
v-model="ruleForm.manufacture"
|
||||
placeholder="请选择生产厂家"
|
||||
multiple
|
||||
collapse-tags
|
||||
clearable
|
||||
class="select"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in manufactorList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="检测结果:">
|
||||
<el-select v-model="ruleForm.testResults" placeholder="请选择检测结果" clearable class="select">
|
||||
<el-option
|
||||
v-for="item in testResultsList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
|
||||
<el-button type="primary" icon="el-icon-download" @click="exportEvent">导出</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-upload
|
||||
action="#"
|
||||
:http-request="upAndDowndoad"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-error="handleUploadError"
|
||||
:on-success="handleUploadSuccess"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
accept="xls"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<el-button @click="fileType = ['xls']" type="primary" icon="el-icon-folder-opened">
|
||||
excel导入
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="UploadOriginal" icon="el-icon-upload2">上传原始报告</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div class="mb10">
|
||||
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addFn">新增</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-edit" @click="modifyFn">修改</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-delete" @click="deleteFn">删除</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-download" @click="DownloadTemplate">下载模板</el-button>
|
||||
</div>
|
||||
<vxe-table
|
||||
:data="totalData"
|
||||
:height="height"
|
||||
border
|
||||
:row-config="{ isCurrent: true, isHover: true }"
|
||||
size="mini"
|
||||
ref="Monitoringpoint"
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@checkbox-change="handleSelectionChange"
|
||||
>
|
||||
<vxe-table-column align="center" type="checkbox" width="55"></vxe-table-column>
|
||||
|
||||
<vxe-table-column
|
||||
v-for="(item, index) in tableHeaderMonitoring"
|
||||
align="center"
|
||||
:field="item.prop"
|
||||
:title="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
:formatter="formFilter"
|
||||
:show-overflow="true"
|
||||
></vxe-table-column>
|
||||
<vxe-column title="操作" width="320" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="download(row, 0)"
|
||||
icon="el-icon-download"
|
||||
:disabled="row.originalReport == null"
|
||||
>
|
||||
下载原始数据报告
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@click="download(row, 1)"
|
||||
icon="el-icon-download"
|
||||
:disabled="row.inspectionReport == null"
|
||||
>
|
||||
下载检测报告
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="ruleForm.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="ruleForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<newlyIncreased
|
||||
:title="title"
|
||||
v-if="dialogVisible"
|
||||
:list="list"
|
||||
@onSubmit="onSubmit"
|
||||
@handleClose="dialogVisible = false"
|
||||
/>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="titles"
|
||||
:visible.sync="showBatchUpload"
|
||||
width="30%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-upload
|
||||
multiple
|
||||
action="#"
|
||||
:http-request="TerminalUpload"
|
||||
:limit="999"
|
||||
accept="doc"
|
||||
:before-remove="beforeRemove"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-error="handleUploadError"
|
||||
:on-success="handleUploadSuccess"
|
||||
:file-list="fileList"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<el-button @click="fileType = ['doc']" type="primary" icon="el-icon-upload2">选择文件</el-button>
|
||||
<span :style="`color:#f58003`"> (*传入的原始数据文件格式(终端编号-原始数据报告.docx))</span>
|
||||
</el-upload>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="BatchUpload">上 传</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import {deptTree} from '@/api/admin/dept'
|
||||
import {
|
||||
getTerminalPage,
|
||||
DownloadExport,
|
||||
delTerminal,
|
||||
reportDownload,
|
||||
batchTerminal,
|
||||
importReport
|
||||
} from '@/api/Process-supervision/Terminaldetection/index.js'
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import newlyIncreased from './newlyIncreased'
|
||||
export default {
|
||||
components: { Area, newlyIncreased },
|
||||
data() {
|
||||
return {
|
||||
WordColor: JSON.parse(window.localStorage.echartsColor).WordColor,
|
||||
excelUrl: '/api/process-boot/process/pmsTerminalDetection/batchTerminal', // 请求地址
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem('cntoken')
|
||||
}, // 设置上传的请求头部
|
||||
showBatchUpload: false,
|
||||
vh: '',
|
||||
title: '',
|
||||
titles: '',
|
||||
// 查询数据
|
||||
ruleForm: {
|
||||
name: '',
|
||||
type: 0,
|
||||
id: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
manufacture: [],
|
||||
testResults: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
fileList: [],
|
||||
fileType: [],
|
||||
list: [],
|
||||
total: 0,
|
||||
height: null,
|
||||
isLoading: false,
|
||||
dialogVisible: false,
|
||||
multipleSelection: [],
|
||||
testResultsList: [
|
||||
{
|
||||
id: 0,
|
||||
name: '未展开'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
name: '已展开'
|
||||
}
|
||||
],
|
||||
uploadType: '',
|
||||
manufactorList: [],
|
||||
//台区台账表头
|
||||
tableHeaderMonitoring: [
|
||||
{ prop: 'orgName', label: '所属单位', width: 120 },
|
||||
{ prop: 'id', label: '终端编号', width: 120 },
|
||||
{ prop: 'name', label: '终端名称', width: 120 },
|
||||
{ prop: 'manufacture', label: '生产厂家', width: 180 },
|
||||
{ prop: 'installPlace', label: '安装位置', width: 150 },
|
||||
{ prop: 'inspectionUnit', label: '送检单位', width: 150 },
|
||||
{ prop: 'testResults', label: '检测结果', width: 120 },
|
||||
{ prop: 'inspectionTime', label: '检测时间', width: 150 },
|
||||
{ prop: 'nextInspectionTime', label: '下次检测时间', width: 150 }
|
||||
],
|
||||
totalData: [],
|
||||
monitorStateList: [], //监测点状态
|
||||
monitorTypeList: [], //监测点类型
|
||||
potentialTransFormerTypeList: [], //电压互感器类型
|
||||
neutralGroundingModeList: [] //中性点接地方式
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
|
||||
mounted() {
|
||||
this.getclassificationData()
|
||||
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.onSubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 252
|
||||
},
|
||||
//获取类型
|
||||
getclassificationData() {
|
||||
//监测点状态
|
||||
this.monitorStateList = dicData('Line_State', [])
|
||||
//监测点类型
|
||||
this.monitorTypeList = dicData('Line_Type', [])
|
||||
//电压互感器类型
|
||||
this.potentialTransFormerTypeList = dicData('Voltage_Transformer', [])
|
||||
//中性点接地方式
|
||||
this.neutralGroundingModeList = dicData('Neutral_Point', [])
|
||||
//监测点标签
|
||||
this.resultList = dicData('Monitoring_Labels', [])
|
||||
//生产厂家
|
||||
this.manufactorList = dicData('Dev_Manufacturers', [])
|
||||
this.manufactorList.forEach(item => {
|
||||
this.ruleForm.manufacture.push(item.id)
|
||||
})
|
||||
},
|
||||
|
||||
//查询用户用电信息
|
||||
onSubmit() {
|
||||
getTerminalPage(this.ruleForm).then(res => {
|
||||
this.totalData = res.data.records
|
||||
this.total = res.data.total
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
// 数据过滤
|
||||
formFilter(row, column) {
|
||||
if (row.column.property == 'testResults') {
|
||||
return row.row.testResults == 0 ? '未展开' : '已展开'
|
||||
}
|
||||
if (row.column.property == 'manufacture') {
|
||||
let title = ''
|
||||
this.manufactorList.forEach(item => {
|
||||
if (item.value == row.row.manufacture) {
|
||||
title = item.label
|
||||
}
|
||||
})
|
||||
return title
|
||||
} else {
|
||||
return row.row[row.column.property]
|
||||
}
|
||||
},
|
||||
// 区域勾选
|
||||
handleNodeClick(data) {
|
||||
this.ruleForm.id = data.id
|
||||
},
|
||||
// 下载报告
|
||||
download(row, type) {
|
||||
reportDownload({
|
||||
id: row.id,
|
||||
type: type
|
||||
}).then(res => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
|
||||
})
|
||||
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = type == 1 ? row.inspectionName : row.originalName // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.bodyNaNpxoveChild(link)
|
||||
})
|
||||
},
|
||||
// excl导入
|
||||
leadingIn() {},
|
||||
//数据上传
|
||||
upload() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择台账!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '上传成功!!!',
|
||||
type: 'success'
|
||||
})
|
||||
},
|
||||
// 下载模板
|
||||
DownloadTemplate() {
|
||||
DownloadExport().then(res => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = '终端入网检测录入模板' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.bodyNaNpxoveChild(link)
|
||||
})
|
||||
},
|
||||
//新增
|
||||
addFn(e) {
|
||||
this.title = '新增'
|
||||
this.dialogVisible = true
|
||||
},
|
||||
|
||||
//修改数据
|
||||
modifyFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
this.title = '修改'
|
||||
this.list = this.multipleSelection[0]
|
||||
this.dialogVisible = true
|
||||
} else {
|
||||
this.$message({
|
||||
message: '请选择1条数据进行修改!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 删除
|
||||
deleteFn() {
|
||||
if (this.multipleSelection.length > 0) {
|
||||
let list = []
|
||||
this.multipleSelection.forEach(item => {
|
||||
list.push(item.id)
|
||||
})
|
||||
delTerminal(list).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '删除成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.onSubmit()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '请选择1条数据进行删除!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//checkbox选择事件
|
||||
handleSelectionChange(row) {
|
||||
this.multipleSelection = row.records
|
||||
},
|
||||
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.ruleForm.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.ruleForm.pageNum = val
|
||||
this.onSubmit()
|
||||
},
|
||||
|
||||
//导出
|
||||
exportEvent() {
|
||||
this.$refs.Monitoringpoint.exportData({
|
||||
filename: 'export', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data: this.totalData, // 数据源 // 过滤那个字段导出 //
|
||||
columnFilterMethod: function (column, $columnIndex) {
|
||||
return !(column.$columnIndex === 0 || column.$columnIndex === 10)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 上传前校检格式和大小
|
||||
handleBeforeUpload(file) {
|
||||
// 校检文件类型
|
||||
if (this.fileType) {
|
||||
let fileExtension = ''
|
||||
if (file.name.lastIndexOf('.') > -1) {
|
||||
fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
|
||||
}
|
||||
const isTypeOk = this.fileType.some(type => {
|
||||
if (file.type.indexOf(type) > -1) return true
|
||||
return !!(fileExtension && fileExtension.indexOf(type) > -1)
|
||||
})
|
||||
if (!isTypeOk) {
|
||||
this.$message.error(`文件格式不正确, 请上传${this.fileType.join('/')}格式文件!`)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
this.$message('正在上传文件,请稍候...')
|
||||
this.number++
|
||||
return true
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error(err)
|
||||
},
|
||||
// 导出 excl
|
||||
upAndDowndoad(params) {
|
||||
// 获取文件 通过FormData将文件转化为二进制流的形式传给后端
|
||||
let form = new FormData()
|
||||
form.append('file', params.file)
|
||||
batchTerminal(form).then(res => {
|
||||
if (res.type == 'application/json') {
|
||||
this.$message({
|
||||
message: '上传成功,无错误数据!',
|
||||
type: 'success'
|
||||
})
|
||||
this.onSubmit()
|
||||
} else {
|
||||
this.onSubmit()
|
||||
this.$message({
|
||||
message: '上传成功,有错误数据 自动下载 请查看',
|
||||
type: 'warning'
|
||||
})
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = '模板错误信息' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.bodyNaNpxoveChild(link)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 上传报告
|
||||
TerminalUpload(params) {
|
||||
this.fileList.push(params.file)
|
||||
|
||||
// form.append("files", params.file);
|
||||
},
|
||||
BatchUpload() {
|
||||
let form = new FormData()
|
||||
form.append('type', this.uploadType)
|
||||
this.fileList.forEach(item => {
|
||||
form.append('files', item)
|
||||
})
|
||||
importReport(form)
|
||||
.then(res => {
|
||||
if (res.type == 'application/json') {
|
||||
this.$message({
|
||||
message: '上传成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
this.onSubmit()
|
||||
} else {
|
||||
this.$message({
|
||||
message: '上传失败!',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(response => {
|
||||
// console.log(response);
|
||||
})
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res) {},
|
||||
// 上传原始报告
|
||||
UploadOriginal() {
|
||||
this.fileType = ['doc']
|
||||
this.titles = '上传原始报告__支持批量上传'
|
||||
this.uploadType = 0
|
||||
this.showBatchUpload = true
|
||||
},
|
||||
|
||||
// 关闭上传弹框
|
||||
handleClose() {
|
||||
this.fileList = []
|
||||
this.showBatchUpload = false
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
this.fileList = fileList
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .vxe-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.pms {
|
||||
margin-left: 0.625rem;
|
||||
}
|
||||
.obtain {
|
||||
margin-left: 76.25rem;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,410 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :model="form" :inline="true" class="demo-form-inline">
|
||||
<el-form-item label="策略等级:">
|
||||
<el-select v-model="form.grade" placeholder="请选择策略等级">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="查询策略名称:">
|
||||
<el-input v-model="form.name" clearable placeholder="请选择查询策略名称"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" size="small" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<el-button
|
||||
@click="
|
||||
dialogVisible = true
|
||||
title = `新增告警单`
|
||||
"
|
||||
type="primary"
|
||||
size="mini"
|
||||
icon="el-icon-plus"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="tableList"
|
||||
header-cell-class-name="table_header"
|
||||
:height="vh"
|
||||
highlight-current-row
|
||||
style="width: 100%"
|
||||
class="mt10"
|
||||
border
|
||||
v-loading="loading"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<!-- <el-table-column type="selection" width="55"></el-table-column> -->
|
||||
<template v-for="(item, index) in warningList">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
align="center"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
:formatter="formatter"
|
||||
></el-table-column>
|
||||
</template>
|
||||
<!-- <el-table-column prop="address" label="流程状态" min-width="100px">
|
||||
<template slot-scope="scope">
|
||||
<span style="cursor: pointer" @click="flagLook = true">{{
|
||||
scope.row.address
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="状态" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:width="60"
|
||||
v-model.number="scope.row.state"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
:active-value="1"
|
||||
:inactive-value="2"
|
||||
@change="stateChange($event, scope.row.id)"
|
||||
></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" width="320">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" icon="el-icon-sort" @click="clickBinding(scope.row.id)">
|
||||
绑定
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" icon="el-icon-edit" @click="upform(scope.row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" icon="el-icon-delete" @click="delStrategy(scope.row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="form.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="form.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<!-- 绑定 -->
|
||||
<binding v-if="binding" :id="id" @close="binding = false" />
|
||||
<!-- 新增 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
width="400px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-form :model="addform" :inline="true" label-width="100px" ref="addform" :rules="rules" class="forms">
|
||||
<el-form-item label="策略等级:">
|
||||
<el-select v-model="addform.grade" placeholder="请选择策略等级">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="策略选择:">
|
||||
<el-select v-model="addform.bigType" placeholder="请选择策略">
|
||||
<el-option
|
||||
v-for="item in options1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预警单名称:" prop="name">
|
||||
<el-input v-model="addform.name" placeholder="请输入预警单名称"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="addInfo">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import binding from './binding.vue'
|
||||
import {
|
||||
getStrategyPage,
|
||||
insertStrategy,
|
||||
delStrategy,
|
||||
updateStrategyState,
|
||||
updateStrategy
|
||||
} from '@/api/Processsupervision/tactics.js'
|
||||
|
||||
export default {
|
||||
components: { Timeinterval, binding },
|
||||
props: {
|
||||
typeKey: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
binding: false,
|
||||
flagLook: false,
|
||||
dialogVisible: false,
|
||||
loading: true,
|
||||
form: {
|
||||
name: '',
|
||||
grade: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
type: ''
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入预警单名称', trigger: 'blur' }]
|
||||
},
|
||||
addform: {
|
||||
grade: 0,
|
||||
name: '',
|
||||
type: '',
|
||||
bigType: 0
|
||||
},
|
||||
title: '新增告警单',
|
||||
vh: null,
|
||||
id: '',
|
||||
total: 0,
|
||||
tableList: [],
|
||||
warningList: [
|
||||
{ prop: 'name', label: '名称', width: 150 },
|
||||
{ prop: 'grade', label: '等级', width: 100 },
|
||||
{ prop: 'bigType', label: '策略选择', width: 100 },
|
||||
{ prop: 'updateBy', label: '更新人员', width: 100 },
|
||||
{ prop: 'updateTime', label: '更新时间', width: 150 }
|
||||
],
|
||||
options1: [
|
||||
{
|
||||
value: 0,
|
||||
label: '通用策略'
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '定值策略'
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
value: 0,
|
||||
label: '自动策略'
|
||||
},
|
||||
{
|
||||
value: 1,
|
||||
label: '手动策略'
|
||||
},
|
||||
{
|
||||
value: 2,
|
||||
label: '排除策略'
|
||||
}
|
||||
],
|
||||
multipleSelection: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// console.log(1233, this.typeKey);
|
||||
},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.form.type = this.typeKey
|
||||
this.addform.type = this.typeKey
|
||||
this.onSubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 253 + 'px'
|
||||
},
|
||||
onSubmit() {
|
||||
this.loading = true
|
||||
getStrategyPage(this.form).then(res => {
|
||||
this.tableList = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
this.loading = false
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
// this.id = data.id;
|
||||
},
|
||||
|
||||
handleSizeChange(e) {
|
||||
this.form.pageSize = e
|
||||
this.onSubmit()
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.form.pageNum = e
|
||||
this.onSubmit()
|
||||
},
|
||||
// 添加
|
||||
addInfo() {
|
||||
this.$refs['addform'].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.title == '新增告警单') {
|
||||
insertStrategy(this.addform).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
this.onSubmit()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
updateStrategy(this.addform).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '修改成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
this.onSubmit()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 删除(id)
|
||||
delStrategy(id) {
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
delStrategy({
|
||||
ids: id
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '删除成功!',
|
||||
type: 'success'
|
||||
})
|
||||
|
||||
this.onSubmit()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 关闭新增
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
this.addform = {
|
||||
grade: 0,
|
||||
name: '',
|
||||
type: this.typeKey
|
||||
}
|
||||
},
|
||||
// 修改表格状态
|
||||
stateChange(e, id) {
|
||||
updateStrategyState({ id: id, state: e }).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '告警单修改状态,成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
this.onSubmit()
|
||||
})
|
||||
},
|
||||
// 编辑
|
||||
upform(row) {
|
||||
this.title = '编辑告警单'
|
||||
this.addform = JSON.parse(JSON.stringify(row))
|
||||
this.dialogVisible = true
|
||||
},
|
||||
// 绑定
|
||||
clickBinding(id) {
|
||||
this.id = id
|
||||
this.binding = true
|
||||
},
|
||||
// 表格过滤
|
||||
formatter(row, column) {
|
||||
if (column.property == 'grade') {
|
||||
return row.grade == 0 ? '自动策略' : row.grade == 1 ? '手动策略' : row.grade == 2 ? '排除策略' : ''
|
||||
} else if (column.property == 'bigType') {
|
||||
return row.bigType == 0 ? '通用策略' : row.bigType == 1 ? '定值策略' : ''
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-switch__core::before {
|
||||
content: '关闭';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 8px;
|
||||
color: #fff;
|
||||
}
|
||||
.is-checked ::v-deep .el-switch__core::before {
|
||||
content: '启用';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 1px;
|
||||
color: #fff;
|
||||
}
|
||||
::v-deep .forms {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
.el-form-item__content {
|
||||
flex: 1 !important;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,269 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 上传 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
:before-close="handleClose"
|
||||
width="80%"
|
||||
>
|
||||
<el-form :model="form" :inline="true" class="demo-form-inline">
|
||||
<el-form-item v-if="title != '修改技术监督事务'">
|
||||
<Area @click="handleNodeClick"></Area>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item> -->
|
||||
<!-- <el-form-item label="筛选数据:">
|
||||
<el-input
|
||||
v-model="form.value"
|
||||
placeholder="请输入需要筛选的数据"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item> -->
|
||||
<el-form-item v-if="title != '修改技术监督事务'" label="反馈类型:">
|
||||
<el-select v-model="form.type" clearable placeholder="请选择反馈类型">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
v-if="title != '修改技术监督事务'"
|
||||
type="primary"
|
||||
size="small"
|
||||
icon="el-icon-search"
|
||||
@click="onSubmit"
|
||||
>查询</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="title != '修改技术监督事务'"
|
||||
type="primary"
|
||||
size="small"
|
||||
icon="el-icon-plus"
|
||||
@click="create"
|
||||
>生成</el-button
|
||||
>
|
||||
<el-button
|
||||
v-else
|
||||
type="primary"
|
||||
size="small"
|
||||
icon="el-icon-edit"
|
||||
@click="update"
|
||||
>修改</el-button
|
||||
>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
:data="tableList"
|
||||
header-cell-class-name="table_header"
|
||||
height="500px"
|
||||
style="width: 100%"
|
||||
v-loading="loading"
|
||||
border
|
||||
ref="multipleTable"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55"> </el-table-column>
|
||||
<template v-for="(item, index) in warningList">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
:min-width="item.width"
|
||||
show-overflow-tooltip
|
||||
:key="index"
|
||||
>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<!-- <el-table-column label="操作" width="210">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" icon="el-icon-view"
|
||||
>趋势图</el-button
|
||||
>
|
||||
<el-button size="mini" type="primary" icon="el-icon-view"
|
||||
>日报</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
<!-- <el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="form.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="form.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination> -->
|
||||
<!-- <span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handleClose">确 定</el-button>
|
||||
</span> -->
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Timeinterval from "@/views/components/Timeinterval.vue";
|
||||
import Area from "@/views/components/Area/Area.vue";
|
||||
import {
|
||||
initSupervise,
|
||||
saveOverRunLog,
|
||||
superviseDetail,
|
||||
updateSupervice,
|
||||
} from "@/api/Processsupervision/technology.js";
|
||||
export default {
|
||||
components: { Timeinterval, Area },
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
},
|
||||
rowList: {
|
||||
type: [Array, Object],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
deptId: JSON.parse(window.sessionStorage.getItem("Info")).deptId,
|
||||
type: "0",
|
||||
initType: 1,
|
||||
},
|
||||
loading: false,
|
||||
dialogVisible: true,
|
||||
multipleSelection: [],
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
total: 1,
|
||||
thsSupervise: {},
|
||||
tableList: [],
|
||||
options: [
|
||||
{
|
||||
name: "预警单",
|
||||
id: "0",
|
||||
},
|
||||
{
|
||||
name: "告警单",
|
||||
id: "1",
|
||||
},
|
||||
],
|
||||
warningList: [
|
||||
{ prop: "companyName", label: "变电站", width: 100 },
|
||||
{ prop: "lineIndexName", label: "监测点", width: 100 },
|
||||
{ prop: "overTime", label: "越限次数", width: 100 },
|
||||
{ prop: "description", label: "描述", width: 200 },
|
||||
],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
if (this.title == "修改技术监督事务") {
|
||||
this.updateList();
|
||||
} else {
|
||||
this.onSubmit();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 查询
|
||||
async onSubmit() {
|
||||
this.loading = true;
|
||||
await initSupervise(this.form).then((res) => {
|
||||
this.tableList = res.data.overRunLog;
|
||||
this.thsSupervise = res.data.thsSupervise;
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
updateList() {
|
||||
superviseDetail({ supIndex: this.rowList.supIndex }).then((res) => {
|
||||
this.tableList = res.data.overRunLog;
|
||||
this.thsSupervise = res.data.thsSupervise;
|
||||
});
|
||||
},
|
||||
// 生成
|
||||
create() {
|
||||
if (this.multipleSelection == 0) {
|
||||
this.$message({
|
||||
message: "请选择1条数据 进行生成!",
|
||||
type: "warning",
|
||||
});
|
||||
} else {
|
||||
let data = {
|
||||
overRunLog: this.multipleSelection,
|
||||
thsSupervise: this.thsSupervise,
|
||||
};
|
||||
saveOverRunLog(data).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "生成成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("success");
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
// 修改
|
||||
update() {
|
||||
if (this.multipleSelection == 0) {
|
||||
this.$message({
|
||||
message: "请选择1条数据 进行修改!",
|
||||
type: "warning",
|
||||
});
|
||||
} else {
|
||||
let data = {
|
||||
overRunLog: this.multipleSelection,
|
||||
thsSupervise: this.thsSupervise,
|
||||
};
|
||||
updateSupervice(data).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "修改成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("success");
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val;
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
this.form.deptId = data.id;
|
||||
// this.id = data.id;
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
handleSizeChange(e) {
|
||||
this.form.pageSize = e;
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.form.pageNum = e;
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.boxDiv {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 28px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,420 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- <el-button class="elbut" type="primary" icon="el-icon-check" @click="clickbindMonitor">新增策略</el-button>-->
|
||||
<el-button v-if="showButton" class="elbut" type="primary" icon="el-icon-check" @click="addDeptStrategy">新增策略</el-button>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="9" class="col1">
|
||||
<el-input
|
||||
placeholder="输入关键字进行过滤"
|
||||
style="width: 240px"
|
||||
class="mb10"
|
||||
v-model="filterText"
|
||||
clearable
|
||||
></el-input>
|
||||
<el-tree
|
||||
:style="`height: ${vh}px; overflow-y: auto`"
|
||||
class="filter-tree"
|
||||
:data="data"
|
||||
:props="defaultProps"
|
||||
default-expand-all
|
||||
highlight-current
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
ref="tree"
|
||||
>
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }">
|
||||
<span @click="click1(node)">{{ node.label }}</span>
|
||||
<div v-if="data.level==2">
|
||||
<span>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-document"
|
||||
:style="`color:${color}`"
|
||||
@click="tactics(data.id, 0)"
|
||||
>
|
||||
自动策略
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-document"
|
||||
:style="`color:${color};margin-left: 15px`"
|
||||
@click="tactics(data.id, 1)"
|
||||
>
|
||||
手动策略
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-document"
|
||||
:style="`color:${color};margin-left: 15px`"
|
||||
@click="tactics(data.id, 2)"
|
||||
>
|
||||
排除策略
|
||||
</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<vxe-table
|
||||
border
|
||||
stripe
|
||||
style="width: 100%; margin-top: 45px"
|
||||
ref="xTable"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
row-id="id"
|
||||
v-loading="loading1"
|
||||
:height="vh + 'px'"
|
||||
:data="tableData1"
|
||||
:radio-config="{ highlight: true }"
|
||||
header-cell-class-name="table_header"
|
||||
>
|
||||
<!-- <vxe-column type="radio" align="center" width="60"></vxe-column>-->
|
||||
<vxe-column field="name" align="center" title="策略名称"></vxe-column>
|
||||
<vxe-column field="type" width="150" align="center" title="策略类型">
|
||||
<template v-slot="row">
|
||||
<span>{{row.row.type===0 ? '预警单':'告警单' }}</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="grade" width="150" align="center" title="策略等级">
|
||||
<template v-slot="row">
|
||||
<span>{{row.row.grade===0 ? '自动策略':row.row.grade === 1?'手动策略':'排他策略' }}</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column field="grade" width="150" align="center" title="状态">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:width="60"
|
||||
v-model.number="scope.row.state"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
:active-value="1"
|
||||
:inactive-value="2"
|
||||
@change="stateChange($event, scope.row.id)"
|
||||
></el-switch>
|
||||
</template>
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column title="操作" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" size="mini" @click="lookOver(row)" icon="el-icon-view">
|
||||
查看
|
||||
</el-button>
|
||||
<el-button type="primary" size="mini" @click="lookOver(row)" icon="el-icon-view">
|
||||
修改
|
||||
</el-button>
|
||||
<el-button type="primary" size="mini" @click="delStrategy(row.id)" icon="el-icon-view">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-input
|
||||
placeholder="输入关键字进行过滤"
|
||||
style="width: 240px; margin-top: 45px"
|
||||
class="mb10"
|
||||
v-model="filterText1"
|
||||
clearable
|
||||
></el-input>
|
||||
<el-tree
|
||||
:data="tableData"
|
||||
show-checkbox
|
||||
v-loading="loading"
|
||||
default-expand-all
|
||||
highlight-current
|
||||
node-key="id"
|
||||
ref="trees"
|
||||
:filter-node-method="filterNode1"
|
||||
:style="`height: ${vh - 45}px; overflow-y: auto; `"
|
||||
:tree-config="{ children: 'children' }"
|
||||
:props="defaultProps"
|
||||
></el-tree>
|
||||
</el-col>-->
|
||||
</el-row>
|
||||
<!-- 绑定 -->
|
||||
<binding v-if="binding" :id="bindingID" :operateType="operateType" :deptId="formInline.deptId" :grade="formInline.grade" :type="typeKey" @close="reClose" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { existMonitorDeptTree } from '@/api/admin/dept'
|
||||
import {
|
||||
getMonitor,
|
||||
bindMonitor,
|
||||
getStrategyList,
|
||||
echoMonitor,
|
||||
delStrategy,
|
||||
updateStrategyState
|
||||
} from '@/api/Processsupervision/tactics.js'
|
||||
import binding from './binding.vue'
|
||||
export default {
|
||||
components: { binding },
|
||||
props: {
|
||||
typeKey: {
|
||||
type: [String, Number]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: null,
|
||||
data: [],
|
||||
deptId: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
filterText: '',
|
||||
filterText1: '',
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'name'
|
||||
},
|
||||
loading: false,
|
||||
loading1: false,
|
||||
binding: false,
|
||||
multipleSelection: [],
|
||||
color: JSON.parse(window.localStorage.echartsColor).WordColor,
|
||||
tableData: [],
|
||||
tableData1: [],
|
||||
|
||||
showButton:false,
|
||||
|
||||
id: '',
|
||||
bindingID: '',
|
||||
formInline: {
|
||||
alarmId: [],
|
||||
grade: null,
|
||||
deptId: '',
|
||||
monitorId: [],
|
||||
type: ''
|
||||
},
|
||||
|
||||
|
||||
operateType:0, //0.新增操作 1.查看操作
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.formInline.type = this.typeKey
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.queryData()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 177
|
||||
},
|
||||
//获取部门树
|
||||
queryData() {
|
||||
existMonitorDeptTree().then(res => {
|
||||
this.data = res.data
|
||||
})
|
||||
},
|
||||
// 树点击按钮
|
||||
async tactics(deptId, grade) {
|
||||
this.showButton = true
|
||||
this.loading = true
|
||||
this.loading1 = true
|
||||
this.formInline.deptId = deptId
|
||||
this.formInline.grade = grade
|
||||
await getMonitor({
|
||||
orgId: deptId
|
||||
}).then(res => {
|
||||
this.tableData = res.data
|
||||
this.loading = false
|
||||
})
|
||||
await getStrategyList({
|
||||
grade: grade,
|
||||
type: this.typeKey,
|
||||
deptId:this.formInline.deptId
|
||||
}).then(res => {
|
||||
this.tableData1 = res.data
|
||||
this.loading1 = false
|
||||
})
|
||||
await echoMonitor({
|
||||
deptId: deptId,
|
||||
type: this.typeKey,
|
||||
grade: grade
|
||||
}).then(res => {
|
||||
this.$refs.trees.setCheckedKeys(res.data.children)
|
||||
if (res.data.id != null) {
|
||||
this.tableData1.forEach(item => {
|
||||
if (item.id == res.data.id) {
|
||||
this.$refs.xTable.setRadioRow(item)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
clickbindMonitor() {
|
||||
this.multipleSelection = this.$refs.trees.getCheckedNodes()
|
||||
this.formInline.alarmId = [this.$refs.xTable.getRadioRecord().id]
|
||||
|
||||
if (this.formInline.deptId == '') {
|
||||
this.$message({
|
||||
message: '请选择单位!',
|
||||
type: 'warning'
|
||||
})
|
||||
} else if (this.formInline.alarmId.length == 0) {
|
||||
this.$message({
|
||||
message: '请选择策略!',
|
||||
type: 'warning'
|
||||
})
|
||||
} else if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
message: '请选择监测点!',
|
||||
type: 'warning'
|
||||
})
|
||||
} else {
|
||||
;(this.formInline.monitorId = []),
|
||||
this.multipleSelection.forEach(item => {
|
||||
if (item.leven == 3) {
|
||||
this.formInline.monitorId.push(item.id)
|
||||
}
|
||||
})
|
||||
|
||||
bindMonitor(this.formInline).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '保存成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
click1(e){
|
||||
console.log("🚀 ~ click1 ~ e:", e)
|
||||
|
||||
},
|
||||
filterNode(value, data, node) {
|
||||
if (!value) {
|
||||
return true
|
||||
}
|
||||
let _array = [] //这里使用数组存储 只是为了存储值。
|
||||
this.getReturnNode(node, _array, value)
|
||||
let result = false
|
||||
_array.forEach(item => {
|
||||
result = result || item
|
||||
})
|
||||
|
||||
return result
|
||||
},
|
||||
filterNode1(value, data, node) {
|
||||
if (!value) {
|
||||
return true
|
||||
}
|
||||
let _array = [] //这里使用数组存储 只是为了存储值。
|
||||
this.getReturnNode(node, _array, value)
|
||||
let result = false
|
||||
_array.forEach(item => {
|
||||
result = result || item
|
||||
})
|
||||
return result
|
||||
},
|
||||
getReturnNode(node, _array, value) {
|
||||
let isPass = node.data && node.data.name && node.data.name.indexOf(value) !== -1
|
||||
isPass ? _array.push(isPass) : ''
|
||||
this.index++
|
||||
if (!isPass && node.name != 1 && node.parent) {
|
||||
this.getReturnNode(node.parent, _array, value)
|
||||
}
|
||||
},
|
||||
selectChangeEvent({ records }) {
|
||||
this.multipleSelection = records
|
||||
},
|
||||
|
||||
// // 单选点击事件
|
||||
// radioChangeEvent1({ row }) {
|
||||
|
||||
// this.formInline.alarmId = [row.id];
|
||||
// },
|
||||
// 查看
|
||||
lookOver(row) {
|
||||
this.bindingID = row.id
|
||||
this.binding = true
|
||||
this.operateType = 1
|
||||
},
|
||||
|
||||
//新增单位策略
|
||||
addDeptStrategy(){
|
||||
this.binding = true
|
||||
this.bindingID = ''
|
||||
this.operateType = 0
|
||||
},
|
||||
|
||||
// 删除(id)
|
||||
delStrategy(id) {
|
||||
this.$confirm('确认是否删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
delStrategy({
|
||||
ids: id
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '删除成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.tactics(this.formInline.deptId,this.formInline.grade)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 修改表格状态
|
||||
stateChange(e, id) {
|
||||
updateStrategyState({ id: id, state: e }).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '告警单修改状态,成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
this.tactics(this.formInline.deptId,this.formInline.grade)
|
||||
})
|
||||
},
|
||||
|
||||
reClose(){
|
||||
this.binding = false;
|
||||
this.tactics(this.formInline.deptId,this.formInline.grade)
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
},
|
||||
filterText1(val) {
|
||||
this.$refs.trees.filter(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.tab .cell {
|
||||
text-align: left;
|
||||
}
|
||||
.elbut {
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
right: 10px;
|
||||
}
|
||||
</style>
|
||||
352
src/views/Process-supervision/components/WorkOrder/binding.vue
Normal file
352
src/views/Process-supervision/components/WorkOrder/binding.vue
Normal file
@@ -0,0 +1,352 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="告警单策略绑定"
|
||||
:visible.sync="dialogVisible"
|
||||
width="1300px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-form :model="form" ref="form">
|
||||
<el-form-item label="策略名称:">
|
||||
<el-input
|
||||
placeholder="请输入策略名称"
|
||||
style="width: 240px; margin-top: 5px"
|
||||
class="mb10"
|
||||
v-model="form.strategyName"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div class="title" :style="`color:${WordColor}`">干扰源类型</div>
|
||||
<div class="checkbox">
|
||||
<el-checkbox
|
||||
:indeterminate="isIndeterminate"
|
||||
v-model="checkAll"
|
||||
:disabled="flag"
|
||||
@change="handleCheckAllChange($event, 0)"
|
||||
>
|
||||
全选
|
||||
</el-checkbox>
|
||||
<el-checkbox-group v-model="form.monitorTag" @change="handleCheckedCitiesChange($event, 0)">
|
||||
<el-checkbox
|
||||
:disabled="flag"
|
||||
v-for="(item, ind) in typeList"
|
||||
:key="ind"
|
||||
:label="item.id"
|
||||
style="display: block"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="title" :style="`color:${WordColor}`">指标类型</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<div style="display: flex; justify-content: space-between">
|
||||
<el-checkbox
|
||||
:indeterminate="isIndeterminates"
|
||||
v-model="parameterAll"
|
||||
@change="handleCheckAllChange($event, 1)"
|
||||
:disabled="flag"
|
||||
>
|
||||
全选
|
||||
</el-checkbox>
|
||||
<div>
|
||||
<el-radio v-model="form.operation" :disabled="flag" :label="0">与</el-radio>
|
||||
<el-radio v-model="form.operation" :disabled="flag" :label="1">或</el-radio>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-checkbox-group v-model="form.indicatorTypes" @change="handleCheckedCitiesChange($event, 1)">
|
||||
<el-checkbox
|
||||
:disabled="flag"
|
||||
v-for="(item, ind) in parameterList"
|
||||
:key="ind"
|
||||
:label="item.id"
|
||||
style="display: block"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<div class="title" :style="`color:${WordColor}`">监测点</div>
|
||||
<div class="checkbox">
|
||||
<el-input
|
||||
placeholder="输入关键字进行过滤"
|
||||
style="width: 240px; margin-top: 5px"
|
||||
class="mb10"
|
||||
v-model="filterText"
|
||||
clearable
|
||||
></el-input>
|
||||
<el-tree
|
||||
:data="tableData"
|
||||
show-checkbox
|
||||
v-loading="loading"
|
||||
default-expand-all
|
||||
highlight-current
|
||||
node-key="id"
|
||||
ref="trees"
|
||||
style="height: 550px; overflow: auto"
|
||||
:filter-node-method="filterNode"
|
||||
:tree-config="{ children: 'children' }"
|
||||
:props="defaultProps"
|
||||
></el-tree>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="onSubmit">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import {
|
||||
getUpdateStrategy,
|
||||
bindStrategy,
|
||||
getMonitor,
|
||||
getStrategyList,
|
||||
echoMonitor
|
||||
} from '@/api/Processsupervision/tactics.js'
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
props: {
|
||||
id: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
//0.新增 1.修改 2.查看
|
||||
operateType: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
grade: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
|
||||
type: {
|
||||
type: Number,
|
||||
required: true
|
||||
},
|
||||
|
||||
deptId: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
WordColor: JSON.parse(window.localStorage.echartsColor).WordColor,
|
||||
radio: '1',
|
||||
flag: false,
|
||||
dialogVisible: true,
|
||||
checkAll: false,
|
||||
typeList: [], //负荷类型
|
||||
form: {
|
||||
deptId: '',
|
||||
strategyName: '',
|
||||
indicatorTypes: [],
|
||||
monitorTag: [],
|
||||
monitorIds: [],
|
||||
operation: 0,
|
||||
grade: 0,
|
||||
strategyType: 0,
|
||||
id: ''
|
||||
},
|
||||
isIndeterminate: false,
|
||||
|
||||
isIndeterminates: false,
|
||||
|
||||
parameterList: [], //指标参数
|
||||
parameterAll: false,
|
||||
|
||||
multipleSelection: [],
|
||||
filterText: '',
|
||||
loading: false,
|
||||
tableData: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'name'
|
||||
},
|
||||
|
||||
rules: {
|
||||
strategyName: [{ required: true, message: '请输入策略名称', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.info()
|
||||
},
|
||||
mounted() {
|
||||
this.typeList = dicData('Monitoring_Labels', [])
|
||||
this.parameterList = dicData('Steady_Statis', [])
|
||||
},
|
||||
methods: {
|
||||
info() {
|
||||
this.getMonitorTree(this.deptId, 1)
|
||||
this.form.strategyType = this.type
|
||||
this.form.deptId = this.deptId
|
||||
this.form.grade = this.grade
|
||||
if (this.operateType !== 0) {
|
||||
this.loading = true
|
||||
getUpdateStrategy({
|
||||
id: this.id
|
||||
}).then(res => {
|
||||
this.form = res.data
|
||||
this.form.strategyName = res.data.name
|
||||
this.form.strategyType = res.data.type
|
||||
this.$refs.trees.setCheckedKeys(res.data.monitorIds)
|
||||
this.loading = false
|
||||
})
|
||||
} else {
|
||||
//新增
|
||||
}
|
||||
},
|
||||
onSubmit() {
|
||||
if (this.form.strategyName == '') {
|
||||
this.$message({
|
||||
message: '策略名称不可为空!',
|
||||
type: 'warning'
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
this.form.monitorIds = []
|
||||
this.multipleSelection = this.$refs.trees.getCheckedNodes()
|
||||
this.multipleSelection.forEach(item => {
|
||||
if (item.leven == 3) {
|
||||
this.form.monitorIds.push(item.id)
|
||||
}
|
||||
})
|
||||
|
||||
console.log(this.form)
|
||||
|
||||
bindStrategy(this.form).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '绑定成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCheckedCitiesChange(value, num) {
|
||||
if (num == 0) {
|
||||
let checkedCount = value.length
|
||||
this.checkAll = checkedCount === this.typeList.length
|
||||
this.isIndeterminate = checkedCount > 0 && checkedCount < this.typeList.length
|
||||
} else {
|
||||
let checkedCount = value.length
|
||||
this.parameterAll = checkedCount === this.parameterList.length
|
||||
this.isIndeterminates = checkedCount > 0 && checkedCount < this.parameterList.length
|
||||
}
|
||||
},
|
||||
handleCheckAllChange(val, num) {
|
||||
if (num == 0) {
|
||||
this.form.monitorTag = val ? this.ChangeMethods(this.typeList) : []
|
||||
this.isIndeterminate = false
|
||||
} else {
|
||||
this.form.indicatorTypes = val ? this.ChangeMethods(this.parameterList) : []
|
||||
this.isIndeterminates = false
|
||||
}
|
||||
},
|
||||
ChangeMethods(e) {
|
||||
let list = []
|
||||
e.forEach(item => {
|
||||
list.push(item.id)
|
||||
})
|
||||
return list
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
},
|
||||
|
||||
filterNode(value, data, node) {
|
||||
if (!value) {
|
||||
return true
|
||||
}
|
||||
let _array = [] //这里使用数组存储 只是为了存储值。
|
||||
this.getReturnNode(node, _array, value)
|
||||
let result = false
|
||||
_array.forEach(item => {
|
||||
result = result || item
|
||||
})
|
||||
return result
|
||||
},
|
||||
|
||||
getReturnNode(node, _array, value) {
|
||||
let isPass = node.data && node.data.name && node.data.name.indexOf(value) !== -1
|
||||
isPass ? _array.push(isPass) : ''
|
||||
this.index++
|
||||
if (!isPass && node.name != 1 && node.parent) {
|
||||
this.getReturnNode(node.parent, _array, value)
|
||||
}
|
||||
},
|
||||
|
||||
//获取监测点树
|
||||
async getMonitorTree(deptId, grade) {
|
||||
//this.loading = true
|
||||
|
||||
await getMonitor({
|
||||
orgId: deptId
|
||||
}).then(res => {
|
||||
this.tableData = res.data
|
||||
//this.loading = false
|
||||
})
|
||||
|
||||
/*await echoMonitor({
|
||||
deptId: data.id,
|
||||
type: this.typeKey,
|
||||
grade: grade
|
||||
}).then(res => {
|
||||
this.$refs.trees.setCheckedKeys(res.data.children)
|
||||
if (res.data.id != null) {
|
||||
this.tableData1.forEach(item => {
|
||||
if (item.id == res.data.id) {
|
||||
this.$refs.xTable.setRadioRow(item)
|
||||
}
|
||||
})
|
||||
}
|
||||
})*/
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
height: 600px;
|
||||
overflow-y: auto;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
</style>
|
||||
692
src/views/Process-supervision/components/WorkOrder/homePage.vue
Normal file
692
src/views/Process-supervision/components/WorkOrder/homePage.vue
Normal file
@@ -0,0 +1,692 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-show="showFlag && flags" @ViewReport="ViewReport">
|
||||
<el-form :model="form" :inline="true" class="demo-form-inline">
|
||||
<!-- <Area @click="handleNodeClick"></Area> -->
|
||||
<el-form-item label="筛选数据:">
|
||||
<el-input v-model="form.searchValue" placeholder="请输入需要筛选的数据" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="Timeinterval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" size="small" icon="el-icon-search" @click="initQuery">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="8" :style="`height: 350px; overflow: hidden;`">
|
||||
<div v-loading="isLoading1" id="electr1" style="height: 100%" />
|
||||
</el-col>
|
||||
<el-col :span="16" :style="`height: 350px; overflow: hidden;`">
|
||||
<div v-loading="isLoading2" id="electr2" style="height: 100%" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table
|
||||
stripe
|
||||
highlight-current-row
|
||||
:data="electrList.superviseVoList"
|
||||
header-cell-class-name="table_header"
|
||||
:height="vh"
|
||||
style="width: 100%"
|
||||
class="mt10"
|
||||
border
|
||||
>
|
||||
<template v-for="(item, index) in list">
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
:formatter="formatter"
|
||||
></el-table-column>
|
||||
</template>
|
||||
<el-table-column label="操作" width="210">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.progress == 0 || scope.row.progress == 4"
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-bottom"
|
||||
@click="Issued(scope.row)"
|
||||
>
|
||||
下发
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else-if="scope.row.progress != 6"
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-top"
|
||||
@click="ClickUpload(scope.row)"
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.progress != 0"
|
||||
type="primary"
|
||||
icon="el-icon-view"
|
||||
size="mini"
|
||||
@click="Look(scope.row)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="form.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="form.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<!-- 上传 -->
|
||||
<uploadFrame
|
||||
:title="title"
|
||||
v-if="flag"
|
||||
:rowList="rowList"
|
||||
@handleClose="
|
||||
flag = false
|
||||
initQuery()
|
||||
"
|
||||
/>
|
||||
<!-- 查看 -->
|
||||
<lookOver
|
||||
v-if="flagLook"
|
||||
:title="title"
|
||||
:rowList="rowList"
|
||||
@ViewReport="ViewReport"
|
||||
@handleClose="flagLook = false"
|
||||
/>
|
||||
</div>
|
||||
<!-- 趋势图 -->
|
||||
<TrendChart
|
||||
v-if="!showFlag"
|
||||
:reportID="reportID"
|
||||
@close="
|
||||
showFlag = true
|
||||
flags = true
|
||||
"
|
||||
/>
|
||||
<!-- 报表 -->
|
||||
<reportForm
|
||||
v-if="!flags"
|
||||
:reportID="reportID"
|
||||
@close="
|
||||
flags = true
|
||||
showFlag = true
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { superviseIndex, dowloadAlarmFormwork } from '@/api/Processsupervision/technology.js'
|
||||
import reportForm from '@/views/Distributionnetwork-analysis/components/StatisticalReport/components/reportForm'
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import uploadFrame from './uploadFrame'
|
||||
import lookOver from './lookOver'
|
||||
import TrendChart from '@/views/Statistical-analysis/steadyStateIndicators/components/TrendChart.vue'
|
||||
export default {
|
||||
components: {
|
||||
Area,
|
||||
Timeinterval,
|
||||
reportForm,
|
||||
uploadFrame,
|
||||
lookOver,
|
||||
TrendChart
|
||||
},
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
showFlag: true,
|
||||
reportID: '',
|
||||
flag: false,
|
||||
flags: true,
|
||||
flagLook: false,
|
||||
zoom: '',
|
||||
rowList: {},
|
||||
isLoading1: false,
|
||||
isLoading2: false,
|
||||
vh: null,
|
||||
form: {
|
||||
deptId:JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
searchValue: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
searchState: '',
|
||||
type: ''
|
||||
},
|
||||
|
||||
total: 0,
|
||||
title: '预警反馈单',
|
||||
electrList: {},
|
||||
flagClick: true,
|
||||
list: [
|
||||
{ prop: 'name', label: '事务名称', width: 200 },
|
||||
{ prop: 'type', label: '事务类型', width: 80 },
|
||||
{ prop: 'createUser', label: '创建人员', width: 100 },
|
||||
{ prop: 'companyName', label: '创建部门', width: 130 },
|
||||
{ prop: 'modifyUser', label: '处理人员', width: 100 },
|
||||
{ prop: 'modifyTime', label: '处理时间', width: 140 },
|
||||
{ prop: 'progressTime', label: '进行时间(天)', width: 110 },
|
||||
{ prop: 'progress', label: '流程状态', width: 100 },
|
||||
{ prop: 'alertType', label: '预警类型', width: 100 }
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.initQuery()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 525 + 'px'
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = '100%'),
|
||||
(domID1.style.height = '350px')
|
||||
}, 0)
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = '100%'),
|
||||
(domID2.style.height = '350px')
|
||||
}, 0)
|
||||
},
|
||||
initQuery() {
|
||||
this.form.searchBeginTime = this.$refs.Timeinterval.timeValue[0]
|
||||
this.form.searchEndTime = this.$refs.Timeinterval.timeValue[1]
|
||||
superviseIndex(this.form).then(res => {
|
||||
this.flagClick = true
|
||||
this.electrList = res.data
|
||||
this.total = res.data.total
|
||||
this.electr1()
|
||||
this.electr2()
|
||||
})
|
||||
},
|
||||
// 组件切换
|
||||
ViewReport(id, val) {
|
||||
if (val == 0) {
|
||||
this.flags = false
|
||||
} else {
|
||||
this.showFlag = false
|
||||
}
|
||||
this.reportID = id
|
||||
},
|
||||
// 下发
|
||||
Issued(data) {
|
||||
dowloadAlarmFormwork({
|
||||
type: data.type,
|
||||
supIndex: data.supIndex,
|
||||
formworkType: data.progress == 0 ? 0 : 1
|
||||
}).then(res => {
|
||||
if(res.code === 'A0000'){
|
||||
let link = document.createElement('a')
|
||||
link.href = res.data //url文件地址
|
||||
link.click()
|
||||
link.remove()
|
||||
this.initQuery()
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
// 查看
|
||||
Look(row) {
|
||||
this.title =
|
||||
row.progress == 2
|
||||
? '预/告警单详情'
|
||||
: row.progress == 3
|
||||
? '反馈单详情'
|
||||
: row.progress == 4
|
||||
? '报告详情'
|
||||
: row.progress == 5
|
||||
? '通知单详情'
|
||||
: row.progress == 6
|
||||
? '预/告警单详情'
|
||||
: ''
|
||||
this.rowList = row
|
||||
this.flagLook = true
|
||||
},
|
||||
// 上传
|
||||
ClickUpload(row) {
|
||||
this.title =
|
||||
row.progress == 2
|
||||
? '反馈单上传'
|
||||
: row.progress == 3
|
||||
? '报告上传'
|
||||
: row.progress == 5
|
||||
? '整改通知反馈单上传'
|
||||
: ''
|
||||
this.rowList = row
|
||||
this.flag = true
|
||||
},
|
||||
electr1() {
|
||||
let _this = this
|
||||
this.isLoading1 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID1 = document.getElementById('electr1')
|
||||
setTimeout(() => {
|
||||
;(domID1.style.width = '100%'),
|
||||
(domID1.style.height = '350px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID1)
|
||||
let option = {
|
||||
title: {
|
||||
text: '商务类型',
|
||||
top: 20,
|
||||
left: 'center',
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor
|
||||
}
|
||||
//
|
||||
// top: 5,
|
||||
},
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '50px',
|
||||
top: '50px',
|
||||
left: '30px',
|
||||
bottom: '30px'
|
||||
},
|
||||
// legend: {
|
||||
// data: ["生产量"],
|
||||
// itemWidth: 16,
|
||||
// itemHeight: 16,
|
||||
// itemGap: 28,
|
||||
// textStyle: {
|
||||
// color: echartsColor.WordColor,
|
||||
// rich: {
|
||||
// a: {
|
||||
// verticalAlign: "middle",
|
||||
// },
|
||||
// },
|
||||
|
||||
// padding: [2, 0, 0, 0], //[上、右、下、左]
|
||||
// },
|
||||
// },
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: ['全部', '预警单', '告警单'],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor,
|
||||
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '数量',
|
||||
type: 'bar',
|
||||
barMaxWidth: 30, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: this.electrList.earlyWarnNum + this.electrList.reportWarnNum,
|
||||
id: ''
|
||||
},
|
||||
{
|
||||
value: this.electrList.earlyWarnNum == null ? 0 : this.electrList.earlyWarnNum,
|
||||
id: '0'
|
||||
},
|
||||
{
|
||||
value: this.electrList.reportWarnNum == null ? 0 : this.electrList.reportWarnNum,
|
||||
id: '1'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
myChart.on('click', function (params) {
|
||||
if (_this.flagClick) {
|
||||
_this.form.type = params.data.id + 0
|
||||
_this.initQuery()
|
||||
_this.flagClick = false
|
||||
}
|
||||
})
|
||||
}, 0)
|
||||
this.isLoading1 = false
|
||||
},
|
||||
electr2() {
|
||||
let _this = this
|
||||
this.isLoading2 = true
|
||||
let echartsColor = JSON.parse(window.localStorage.echartsColor)
|
||||
let echarts = require('echarts')
|
||||
let domID2 = document.getElementById('electr2')
|
||||
setTimeout(() => {
|
||||
;(domID2.style.width = '100%'),
|
||||
(domID2.style.height = '350px')
|
||||
}, 0)
|
||||
let myChart = echarts.init(domID2)
|
||||
let option = {
|
||||
title: {
|
||||
text: '事务流程',
|
||||
top: 20,
|
||||
left: 'center',
|
||||
textStyle: {
|
||||
color: echartsColor.WordColor
|
||||
}
|
||||
//
|
||||
// top: 5,
|
||||
},
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
opacity: 0.35,
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.35)',
|
||||
borderWidth: 0
|
||||
},
|
||||
grid: {
|
||||
right: '30px',
|
||||
top: '50px',
|
||||
left: '50px',
|
||||
bottom: '30px'
|
||||
},
|
||||
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
axisTick: { show: false },
|
||||
data: [
|
||||
'全部',
|
||||
'开始',
|
||||
'预/告警单下发',
|
||||
'预/告警单反馈',
|
||||
'现场测试',
|
||||
'整改通知单下发',
|
||||
'整改通知单反馈',
|
||||
'完结'
|
||||
],
|
||||
axisLine: {
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
name: '事务流程',
|
||||
nameTextStyle: {
|
||||
color: echartsColor.WordColor,
|
||||
fontSize: 20,
|
||||
fontWeight: 'bold',
|
||||
padding: [0, 0, 5, 30]
|
||||
},
|
||||
minInterval: 1,
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: echartsColor.thread
|
||||
}
|
||||
},
|
||||
axisLabel: {
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
// 使用深浅的间隔色
|
||||
color: [echartsColor.thread],
|
||||
type: 'dashed',
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '数量',
|
||||
type: 'bar',
|
||||
barMaxWidth: 20, //最大宽度
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
textStyle: {
|
||||
//数值样式
|
||||
color: echartsColor.WordColor
|
||||
},
|
||||
|
||||
fontSize: 12
|
||||
},
|
||||
itemStyle: {
|
||||
normal: { show: true, color: echartsColor.FigureColor[0] }
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value:
|
||||
this.electrList.startNum +
|
||||
this.electrList.alarmTicketIssueNum +
|
||||
this.electrList.feedbackUploadNum +
|
||||
this.electrList.feedbackUploadNum +
|
||||
this.electrList.testReportNum +
|
||||
this.electrList.reviseNoticeIssueNum +
|
||||
this.electrList.reviseFeedbackNum +
|
||||
this.electrList.endNum,
|
||||
id: ''
|
||||
},
|
||||
{
|
||||
value: this.electrList.startNum == null ? 0 : this.electrList.startNum,
|
||||
id: '0'
|
||||
},
|
||||
{ value: this.electrList.alarmTicketIssueNum, id: '1' },
|
||||
{
|
||||
value:
|
||||
this.electrList.feedbackUploadNum == null ? 0 : this.electrList.feedbackUploadNum,
|
||||
id: '2'
|
||||
},
|
||||
{
|
||||
value: this.electrList.testReportNum == null ? 0 : this.electrList.testReportNum,
|
||||
id: '3'
|
||||
},
|
||||
{
|
||||
value:
|
||||
this.electrList.reviseNoticeIssueNum == null
|
||||
? 0
|
||||
: this.electrList.reviseNoticeIssueNum,
|
||||
id: '4'
|
||||
},
|
||||
{
|
||||
value:
|
||||
this.electrList.reviseFeedbackNum == null ? 0 : this.electrList.reviseFeedbackNum,
|
||||
id: '5'
|
||||
},
|
||||
{
|
||||
value: this.electrList.endNum == null ? 0 : this.electrList.endNum,
|
||||
id: '6'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
option && myChart.setOption(option, true)
|
||||
window.echartsArr.push(myChart)
|
||||
setTimeout(function () {
|
||||
myChart.resize()
|
||||
myChart.on('click', function (params) {
|
||||
if (_this.flagClick) {
|
||||
_this.form.searchState = params.data.id
|
||||
_this.initQuery()
|
||||
_this.flagClick = false
|
||||
}
|
||||
})
|
||||
}, 0)
|
||||
this.isLoading2 = false
|
||||
},
|
||||
// 数据过滤
|
||||
formatter(row, column) {
|
||||
if (column.property == 'type') {
|
||||
return row.type == 0 ? '预警单' : '告警单'
|
||||
} else if (column.property == 'alertType') {
|
||||
return row.alertType == 0 ? (
|
||||
'无预警'
|
||||
) : row.alertType == 1 ? (
|
||||
'一级预警'
|
||||
) : row.alertType == 2 ? (
|
||||
' 二级预警'
|
||||
) : row.alertType == 3 ? (
|
||||
<span style="color='red'">超时</span>
|
||||
) : (
|
||||
''
|
||||
)
|
||||
} else if (column.property == 'progress') {
|
||||
return row.progress == 0 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
开始
|
||||
</el-button>
|
||||
) : row.progress == 1 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
预/告警单下发
|
||||
</el-button>
|
||||
) : row.progress == 2 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
反馈单上传
|
||||
</el-button>
|
||||
) : row.progress == 3 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
现场测试
|
||||
</el-button>
|
||||
) : row.progress == 4 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
整改通知单下发
|
||||
</el-button>
|
||||
) : row.progress == 5 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
整改通知反馈单
|
||||
</el-button>
|
||||
) : row.progress == 6 ? (
|
||||
<el-button type="text" class="formatterButton">
|
||||
完结
|
||||
</el-button>
|
||||
) : (
|
||||
''
|
||||
)
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
},
|
||||
handleSizeChange(e) {
|
||||
this.form.pageSize = e
|
||||
this.initQuery()
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.form.pageNum = e
|
||||
this.initQuery()
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
|
||||
.boxDiv {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 28px;
|
||||
}
|
||||
.formatterButton {
|
||||
color: #0cf;
|
||||
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
315
src/views/Process-supervision/components/WorkOrder/lookOver.vue
Normal file
315
src/views/Process-supervision/components/WorkOrder/lookOver.vue
Normal file
@@ -0,0 +1,315 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 上传 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
:before-close="handleClose"
|
||||
width="70%"
|
||||
>
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="监督单详情" name="first">
|
||||
<el-button
|
||||
style="margin-bottom: 10px"
|
||||
type="primary"
|
||||
size="mini"
|
||||
icon="el-icon-download"
|
||||
@click="exportEvent"
|
||||
>
|
||||
导出
|
||||
</el-button>
|
||||
<el-button
|
||||
style="margin-bottom: 10px"
|
||||
type="primary"
|
||||
size="mini"
|
||||
icon="el-icon-download"
|
||||
v-if="!(title == '预/告警单详情' || title == '通知单详情')"
|
||||
@click="download"
|
||||
>
|
||||
批量下载文件
|
||||
</el-button>
|
||||
<span :style="`color:#f58003`"> (*默认全部,可勾选自己需要的监测点进行导出或下载!)</span>
|
||||
|
||||
<div :style="`color:${WordColor}`">
|
||||
事务名称:{{ thsSupervise.name }} 创建时间:{{ thsSupervise.createTime }}
|
||||
</div>
|
||||
|
||||
<!-- <el-form :model="form" :inline="true" class="demo-form-inline">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick"></Area>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item>
|
||||
<el-form-item label="筛选数据:">
|
||||
<el-input
|
||||
v-model="form.value"
|
||||
placeholder="请输入需要筛选的数据"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="反馈类型:">
|
||||
<el-select v-model="form.region" placeholder="请选择反馈类型">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" size="small" icon="el-icon-search"
|
||||
>查询</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form> -->
|
||||
<vxe-table
|
||||
:data="tableList"
|
||||
border
|
||||
:row-config="{ isCurrent: true, isHover: true }"
|
||||
size="mini"
|
||||
ref="Monitoringpoint"
|
||||
header-cell-class-name="table_header"
|
||||
height="500px"
|
||||
style="width: 100%"
|
||||
>
|
||||
<vxe-table-column align="center" type="checkbox" width="55" />
|
||||
<template v-for="(item, index) in warningList">
|
||||
<vxe-table-column
|
||||
align="center"
|
||||
:show-overflow="true"
|
||||
:field="item.prop"
|
||||
:title="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
></vxe-table-column>
|
||||
</template>
|
||||
<vxe-table-column
|
||||
v-if="!(title == '预/告警单详情' || title == '通知单详情')"
|
||||
title="文件"
|
||||
align="center"
|
||||
min-width="180"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<a
|
||||
class="formatterButton"
|
||||
:href="
|
||||
title == '反馈单详情'
|
||||
? row.feedback
|
||||
: title == '报告详情'
|
||||
? row.testReport
|
||||
: title == '通知反馈单详情'
|
||||
? row.reviseFeedback
|
||||
: ''
|
||||
"
|
||||
>
|
||||
{{
|
||||
title == '反馈单详情'
|
||||
? row.feedback
|
||||
: title == '报告详情'
|
||||
? row.testReport
|
||||
: title == '通知反馈单详情'
|
||||
? row.reviseFeedback
|
||||
: ''
|
||||
}}
|
||||
</a>
|
||||
</template>
|
||||
</vxe-table-column>
|
||||
<vxe-column
|
||||
v-if="title == '预/告警单详情' || title == '通知单详情'"
|
||||
title="操作"
|
||||
align="center"
|
||||
width="210"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-button size="mini" type="primary" icon="el-icon-view" @click="ViewReport(row, 1)">
|
||||
趋势图
|
||||
</el-button>
|
||||
<el-button size="mini" @click="ViewReport(row, 0)" type="primary" icon="el-icon-view">
|
||||
日报
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="流程图详情" name="second">
|
||||
<div>
|
||||
<flow-view ref="flow" :flowData="flowData" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<!-- <el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination> -->
|
||||
<!-- <span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handleClose">确 定</el-button>
|
||||
</span> -->
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { superviseDetail, downloadFeedBackFile } from '@/api/Processsupervision/technology.js'
|
||||
import FlowView from '@/views/flowable/flowview.vue'
|
||||
import { flowXmlAndNode } from '@/api/flowable/definition'
|
||||
export default {
|
||||
components: { Timeinterval, Area, FlowView },
|
||||
props: {
|
||||
title: {
|
||||
type: String
|
||||
},
|
||||
rowList: {
|
||||
type: [Array, Object]
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first',
|
||||
// 模型xml数据
|
||||
flowData: {},
|
||||
titles: '',
|
||||
form: {},
|
||||
WordColor: JSON.parse(window.localStorage.echartsColor).WordColor,
|
||||
dialogVisible: true,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
total: 1,
|
||||
tableList: [],
|
||||
warningList: [
|
||||
{ prop: 'companyName', label: '供电公司', width: 100 },
|
||||
{ prop: 'name', label: '变电站', width: 100 },
|
||||
{ prop: 'lineIndexName', label: '监测点', width: 100 },
|
||||
{ prop: 'overTime', label: '越限次数', width: 100 },
|
||||
|
||||
{ prop: 'description', label: '描述', width: 200 }
|
||||
],
|
||||
options: [],
|
||||
thsSupervise: {}
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.titles = this.title
|
||||
this.onSubmit()
|
||||
},
|
||||
methods: {
|
||||
handleClick(tab, event) {
|
||||
if (this.activeName == 'second') {
|
||||
flowXmlAndNode({
|
||||
procInsId: this.rowList.execId,
|
||||
deployId: this.rowList.deploymentId
|
||||
}).then(res => {
|
||||
this.flowData = res.data
|
||||
})
|
||||
}
|
||||
},
|
||||
onSubmit() {
|
||||
superviseDetail({ supIndex: this.rowList.supIndex }).then(res => {
|
||||
this.tableList = res.data.overRunLog
|
||||
this.thsSupervise = res.data.thsSupervise
|
||||
})
|
||||
},
|
||||
// handleNodeClick(data) {
|
||||
// // this.id = data.id;
|
||||
// },
|
||||
handleClose() {
|
||||
this.$emit('handleClose')
|
||||
},
|
||||
handleSizeChange(e) {
|
||||
this.pageSize = e
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.pageNum = e
|
||||
},
|
||||
|
||||
//导出
|
||||
exportEvent() {
|
||||
this.$refs.Monitoringpoint.exportData({
|
||||
filename: 'export', // 文件名字
|
||||
sheetName: 'Sheet1',
|
||||
type: 'xlsx', //导出文件类型 xlsx 和 csv
|
||||
useStyle: true,
|
||||
data:
|
||||
this.$refs.Monitoringpoint.getCheckboxRecords().length == 0
|
||||
? this.tableList
|
||||
: this.$refs.Monitoringpoint.getCheckboxRecords(), // 数据源 // 过滤那个字段导出 //
|
||||
columnFilterMethod: function (column, $columnIndex) {
|
||||
return !(column.$columnIndex === 6 || column.$columnIndex === 0)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 批量下载文件
|
||||
download() {
|
||||
let data = {
|
||||
ids: [],
|
||||
ticketType:
|
||||
this.title == '反馈单详情'
|
||||
? 1
|
||||
: this.title == '报告详情'
|
||||
? 2
|
||||
: this.title == '通知反馈单详情'
|
||||
? 3
|
||||
: ''
|
||||
}
|
||||
if (this.$refs.Monitoringpoint.getCheckboxRecords().length == 0) {
|
||||
this.tableList.forEach(item => {
|
||||
data.ids.push(item.id)
|
||||
})
|
||||
} else {
|
||||
this.$refs.Monitoringpoint.getCheckboxRecords().forEach(item => {
|
||||
data.ids.push(item.id)
|
||||
})
|
||||
}
|
||||
downloadFeedBackFile(data).then(response => {
|
||||
//console.log(res)
|
||||
let blob = new Blob([response], { type: 'application/zip' }) // console.log(blob) // var href = window.URL.createObjectURL(blob); //创建下载的链接
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = '监测点文件' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.body.removeChild(link) //释放标签
|
||||
})
|
||||
},
|
||||
// 查看趋势图
|
||||
ViewReport(row, val) {
|
||||
this.$emit('ViewReport', row.id, val)
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
|
||||
.boxDiv {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 28px;
|
||||
}
|
||||
|
||||
.formatterButton {
|
||||
color: #0cf;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,603 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :model="form" :inline="true" class="demo-form-inline">
|
||||
<el-form-item label="筛选数据:">
|
||||
<el-input v-model="form.searchValue" placeholder="请输入关键字" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="事务类型:">
|
||||
<el-select v-model="form.type" clearable placeholder="请选择事务类型">
|
||||
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属流程:">
|
||||
<el-select v-model="form.searchState" placeholder="请选择所属流程">
|
||||
<el-option v-for="item in options1" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<Timeinterval :timeOptions="optionsw" :interval="3" ref="Timeinterval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" size="small" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-download">导出</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<!-- <el-button type="primary" size="mini" icon="el-icon-caret-right"
|
||||
>开始</el-button
|
||||
> -->
|
||||
<el-button
|
||||
@click="
|
||||
flagSupervision = true
|
||||
title = '新增技术监督事务'
|
||||
"
|
||||
type="primary"
|
||||
size="mini"
|
||||
icon="el-icon-plus"
|
||||
>
|
||||
新建
|
||||
</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-top" @click="showBatchUpload = true">
|
||||
上传模板
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="tableList"
|
||||
highlight-current-row
|
||||
header-cell-class-name="table_header"
|
||||
:height="vh"
|
||||
v-loading="loading"
|
||||
style="width: 100%"
|
||||
class="mt10"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
|
||||
<el-table-column
|
||||
v-for="(item, index) in warningList"
|
||||
:prop="item.prop"
|
||||
show-overflow-tooltip
|
||||
:label="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
:formatter="formatter"
|
||||
></el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
:disabled="scope.row.progress != 0"
|
||||
@click="update(scope.row)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-delete"
|
||||
:disabled="scope.row.progress != 0"
|
||||
@click="delSupervise(scope.row)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="form.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="form.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<!-- 详情 -->
|
||||
<lookOver v-if="flagLook" :title="title" :rowList="rowList" @handleClose="flagLook = false" />
|
||||
<!-- 上传 -->
|
||||
<uploadFrame
|
||||
:title="title"
|
||||
:rowList="rowList"
|
||||
v-if="flag"
|
||||
@handleClose="
|
||||
flag = false
|
||||
onSubmit()
|
||||
"
|
||||
/>
|
||||
<!-- 新增 修改 -->
|
||||
<Supervision
|
||||
v-if="flagSupervision"
|
||||
:title="title"
|
||||
:rowList="rowList"
|
||||
@handleClose="flagSupervision = false"
|
||||
@success="
|
||||
flagSupervision = false
|
||||
onSubmit()
|
||||
"
|
||||
/>
|
||||
<!-- 上传模板 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="上传模板"
|
||||
:visible.sync="showBatchUpload"
|
||||
width="30%"
|
||||
:before-close="handleCloseP"
|
||||
>
|
||||
<el-form :model="formInline" :inline="true">
|
||||
<el-form-item label="模板:">
|
||||
<el-select v-model="formInline.formworkType" placeholder="选择模板">
|
||||
<el-option label="预/告警单模板" value="0"></el-option>
|
||||
<el-option label="整改通知反馈单模板" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型:">
|
||||
<el-select v-model="formInline.type" placeholder="选择类型">
|
||||
<el-option label="预警" value="0"></el-option>
|
||||
<el-option label="告警" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-upload
|
||||
multiple
|
||||
action="#"
|
||||
:http-request="TerminalUpload"
|
||||
:limit="limit"
|
||||
accept="doc"
|
||||
:before-remove="beforeRemove"
|
||||
:on-error="handleUploadError"
|
||||
:file-list="fileList"
|
||||
:headers="headers"
|
||||
:on-exceed="handleExceed"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-upload2">选择文件</el-button>
|
||||
</el-upload>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleCloseP">取 消</el-button>
|
||||
<el-button type="primary" @click="BatchUpload">上 传</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Timeinterval from '@/views/components/Timeinterval.vue'
|
||||
import lookOver from './lookOver'
|
||||
import uploadFrame from './uploadFrame'
|
||||
import Supervision from './Supervision'
|
||||
import {
|
||||
querySuperviseList,
|
||||
dowloadAlarmFormwork,
|
||||
deleteSupervise,
|
||||
uploadAlarmFormwork
|
||||
} from '@/api/Processsupervision/technology.js'
|
||||
export default {
|
||||
components: { Timeinterval, lookOver, Supervision, uploadFrame },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
formInline: {
|
||||
formworkType: '0',
|
||||
type: '0'
|
||||
},
|
||||
optionsw: [
|
||||
{ label: '年份', value: 1 },
|
||||
{ label: '季度', value: 2 },
|
||||
{ label: '月份', value: 3 },
|
||||
{ label: '周', value: 4 }
|
||||
],
|
||||
limit: 1,
|
||||
fileList: [],
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem('cntoken')
|
||||
}, // 设置上传的请求头部
|
||||
showBatchUpload: false,
|
||||
loading: false,
|
||||
flagLook: false,
|
||||
flagSupervision: false,
|
||||
form: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
searchBeginTime: '',
|
||||
searchEndTime: '',
|
||||
searchState: '',
|
||||
type: '',
|
||||
searchValue: ''
|
||||
},
|
||||
rowList: {},
|
||||
title: '新增技术监督事务',
|
||||
vh: null,
|
||||
|
||||
total: 0,
|
||||
tableList: [],
|
||||
flag: false,
|
||||
warningList: [
|
||||
{ prop: 'name', label: '监督名称', width: 180 },
|
||||
{ prop: 'type', label: '事务类型', width: 100 },
|
||||
{ prop: 'createUser', label: '创建用户', width: 100 },
|
||||
{ prop: 'companyName', label: '创建部门', width: 160 },
|
||||
{ prop: 'createTime', label: '创建时间', width: 160 },
|
||||
//{ prop: 'modifyTime', label: '修改时间', width: 160 },
|
||||
{ prop: 'haveAlarmticket', label: '预/告警单', width: 100 },
|
||||
{ prop: 'haveFeedback', label: '反馈单', width: 100 },
|
||||
{ prop: 'haveTestReport', label: '报告', width: 100 },
|
||||
{ prop: 'haveReviseNotice', label: '通知单', width: 100 },
|
||||
{ prop: 'haveReviseFeedback', label: '通知反馈单', width: 120 },
|
||||
{ prop: 'progress', label: '流程状态', width: 140 }
|
||||
],
|
||||
options: [
|
||||
{
|
||||
name: '预警单',
|
||||
id: '0'
|
||||
},
|
||||
{
|
||||
name: '告警单',
|
||||
id: '1'
|
||||
}
|
||||
],
|
||||
options1: [
|
||||
{
|
||||
name: '开始',
|
||||
id: '0'
|
||||
},
|
||||
{
|
||||
name: '预/告警单下发',
|
||||
id: '1'
|
||||
},
|
||||
{
|
||||
name: '反馈单上传',
|
||||
id: '2'
|
||||
},
|
||||
{
|
||||
name: '现场测试',
|
||||
id: '3'
|
||||
},
|
||||
{
|
||||
name: '整改通知单下发',
|
||||
id: '4'
|
||||
},
|
||||
{
|
||||
name: '整改通知单反馈',
|
||||
id: '5'
|
||||
},
|
||||
{
|
||||
name: '完结',
|
||||
id: '6'
|
||||
}
|
||||
],
|
||||
|
||||
multipleSelection: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.onSubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 203 + 'px'
|
||||
},
|
||||
// 查询
|
||||
async onSubmit() {
|
||||
this.loading = true
|
||||
this.form.searchBeginTime = this.$refs.Timeinterval.timeValue[0]
|
||||
this.form.searchEndTime = this.$refs.Timeinterval.timeValue[1]
|
||||
await querySuperviseList(this.form).then(res => {
|
||||
this.tableList = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
this.loading = false
|
||||
},
|
||||
// 修改
|
||||
update(row) {
|
||||
this.flagSupervision = true
|
||||
this.rowList = row
|
||||
this.title = '修改技术监督事务'
|
||||
},
|
||||
// 删除
|
||||
delSupervise(row) {
|
||||
deleteSupervise({
|
||||
deleteIds: [row.supIndex]
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '删除成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.onSubmit()
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下发
|
||||
Issued(data, formworkType) {
|
||||
dowloadAlarmFormwork({
|
||||
type: data.type,
|
||||
supIndex: data.supIndex,
|
||||
formworkType: formworkType
|
||||
}).then(res => {
|
||||
this.onSubmit()
|
||||
let link = document.createElement('a')
|
||||
link.href = res.data //url文件地址
|
||||
link.click()
|
||||
link.remove()
|
||||
})
|
||||
},
|
||||
// 流程状态
|
||||
ProcessStatus() {
|
||||
// console.log(123);
|
||||
},
|
||||
// 数据过滤
|
||||
formatter(row, column) {
|
||||
if (column.property == 'type') {
|
||||
return row.type == 0 ? '预警单' : '告警单'
|
||||
} else if (column.property == 'progress') {
|
||||
return row.progress == 0 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
开始
|
||||
</el-button>
|
||||
) : row.progress == 1 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
预/告警单下发
|
||||
</el-button>
|
||||
) : row.progress == 2 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
反馈单上传
|
||||
</el-button>
|
||||
) : row.progress == 3 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
现场测试
|
||||
</el-button>
|
||||
) : row.progress == 4 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
整改通知单下发
|
||||
</el-button>
|
||||
) : row.progress == 5 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
整改通知反馈单
|
||||
</el-button>
|
||||
) : row.progress == 6 ? (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.ProcessStatus()}>
|
||||
完结
|
||||
</el-button>
|
||||
) : (
|
||||
''
|
||||
)
|
||||
} else if (column.property == 'haveAlarmticket') {
|
||||
// 预/告警单
|
||||
if (row.progress == 0) {
|
||||
return (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.Issued(row, 0)}>
|
||||
下发
|
||||
</el-button>
|
||||
)
|
||||
} else {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.flagLook = true), (this.title = '预/告警单详情'), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
)
|
||||
}
|
||||
} else if (column.property == 'haveFeedback') {
|
||||
// 反馈单
|
||||
if (row.progress == 2) {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.title = '反馈单上传'), (this.flag = true), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
)
|
||||
} else {
|
||||
if (!row.haveFeedback) {
|
||||
return '-'
|
||||
} else {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.flagLook = true), (this.title = '反馈单详情'), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (column.property == 'haveTestReport') {
|
||||
// 报告
|
||||
if (row.progress == 3) {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.title = '报告上传'), (this.flag = true), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
)
|
||||
} else {
|
||||
if (!row.haveTestReport) {
|
||||
return '-'
|
||||
} else {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.flagLook = true), (this.title = '报告详情'), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (column.property == 'haveReviseNotice') {
|
||||
// 通知单
|
||||
if (row.progress == 4) {
|
||||
return (
|
||||
<el-button type="text" class="formatterButton" on-click={() => this.Issued(row, 1)}>
|
||||
下发
|
||||
</el-button>
|
||||
)
|
||||
} else {
|
||||
if (!row.haveReviseNotice) {
|
||||
return '-'
|
||||
} else {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.flagLook = true), (this.title = '通知单详情'), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
)
|
||||
}
|
||||
}
|
||||
} else if (column.property == 'haveReviseFeedback') {
|
||||
// 通知反馈单
|
||||
if (row.progress == 5) {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.title = '通知反馈单上传'), (this.flag = true), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
)
|
||||
} else {
|
||||
if (!row.haveReviseFeedback) {
|
||||
return '-'
|
||||
} else {
|
||||
return (
|
||||
<el-button
|
||||
type="text"
|
||||
class="formatterButton"
|
||||
on-click={() => {
|
||||
;(this.flagLook = true), (this.title = '通知反馈单详情'), (this.rowList = row)
|
||||
}}
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
},
|
||||
// 关闭上传弹框
|
||||
handleCloseP() {
|
||||
this.fileList = []
|
||||
this.showBatchUpload = false
|
||||
},
|
||||
// 批量上传报告
|
||||
TerminalUpload(params) {
|
||||
this.fileList.push(params.file)
|
||||
|
||||
// form.append("files", params.file);
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
this.fileList = fileList
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error(err)
|
||||
},
|
||||
// 批量上传
|
||||
BatchUpload() {
|
||||
this.$message('上传中...')
|
||||
let form = new FormData()
|
||||
form.append('formworkType', this.formInline.formworkType)
|
||||
form.append('type', this.formInline.type)
|
||||
this.fileList.forEach(item => {
|
||||
form.append('file', item)
|
||||
})
|
||||
uploadAlarmFormwork(form)
|
||||
.then(res => {
|
||||
if (res.type == 'application/json') {
|
||||
this.$message({
|
||||
message: '上传成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleCloseP()
|
||||
this.onSubmit()
|
||||
} else {
|
||||
this.$message({
|
||||
message: '上传失败!',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(response => {
|
||||
// console.log(response);
|
||||
})
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
handleNodeClick(data) {
|
||||
// this.id = data.id;
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning('不是批量上传只能上传1个文件!')
|
||||
},
|
||||
handleSizeChange(e) {
|
||||
this.form.pageSize = e
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.form.pageNum = e
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
.boxDiv {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 28px;
|
||||
}
|
||||
.formatterButton {
|
||||
color: #0cf;
|
||||
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,280 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 上传 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
:before-close="handleClose"
|
||||
width="80%"
|
||||
>
|
||||
<div class="boxDiv">
|
||||
<div :style="`color:${WordColor}`">
|
||||
事务名称:{{ thsSupervise.name }} 创建时间:{{
|
||||
thsSupervise.createTime
|
||||
}}
|
||||
</div>
|
||||
<div>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
showBatchUpload = true;
|
||||
limit = 999;
|
||||
"
|
||||
size="mini"
|
||||
icon="el-icon-upload2"
|
||||
>批量上传</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="tableList"
|
||||
header-cell-class-name="table_header"
|
||||
height="25rem"
|
||||
style="width: 100%"
|
||||
class="mt10"
|
||||
border
|
||||
>
|
||||
<template v-for="(item, index) in warningList">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
show-overflow-tooltip
|
||||
:label="item.label"
|
||||
:min-width="item.width"
|
||||
:key="index"
|
||||
>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<el-table-column label="文件" show-overflow-tooltip min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<a
|
||||
class="formatterButton"
|
||||
:href="
|
||||
title == '反馈单上传'
|
||||
? scope.row.feedback
|
||||
: title == '报告上传'
|
||||
? scope.row.testReport
|
||||
: title == '通知反馈单上传'
|
||||
? scope.row.reviseFeedback
|
||||
: ''
|
||||
"
|
||||
>{{
|
||||
title == "反馈单上传"
|
||||
? scope.row.feedback
|
||||
: title == "报告上传"
|
||||
? scope.row.testReport
|
||||
: title == "通知反馈单上传"
|
||||
? scope.row.reviseFeedback
|
||||
: ""
|
||||
}}</a
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" min-width="130">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
@click="
|
||||
showBatchUpload = true;
|
||||
limit = 1;
|
||||
id = scope.row.id;
|
||||
"
|
||||
type="primary"
|
||||
icon="el-icon-top"
|
||||
>上传</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- <el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination> -->
|
||||
<!-- <span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handleClose">确 定</el-button>
|
||||
</span> -->
|
||||
<!-- 批量上传 -->
|
||||
</el-dialog>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="上传"
|
||||
:visible.sync="showBatchUpload"
|
||||
width="30%"
|
||||
:before-close="handleCloseP"
|
||||
>
|
||||
<el-upload
|
||||
multiple
|
||||
action="#"
|
||||
:http-request="TerminalUpload"
|
||||
:limit="limit"
|
||||
accept="doc"
|
||||
:before-remove="beforeRemove"
|
||||
:on-error="handleUploadError"
|
||||
:file-list="fileList"
|
||||
:headers="headers"
|
||||
:on-exceed="handleExceed"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-upload2">选择文件</el-button>
|
||||
</el-upload>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="handleCloseP">取 消</el-button>
|
||||
<el-button type="primary" @click="BatchUpload">上 传</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
superviseDetail,
|
||||
uploadSuperviseTicket,
|
||||
} from "@/api/Processsupervision/technology.js";
|
||||
export default {
|
||||
components: {},
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
},
|
||||
rowList: {
|
||||
type: [Array, Object],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
limit: 1,
|
||||
id: "",
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem("cntoken"),
|
||||
}, // 设置上传的请求头部
|
||||
showBatchUpload: false,
|
||||
WordColor: JSON.parse(window.localStorage.echartsColor).WordColor,
|
||||
dialogVisible: true,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
total: 1,
|
||||
tableList: [],
|
||||
warningList: [
|
||||
{ prop: "companyName", label: "供电公司", width: 100 },
|
||||
{ prop: "name", label: "变电站", width: 100 },
|
||||
{ prop: "lineIndexName", label: "监测点", width: 100 },
|
||||
{ prop: "description", label: "描述", width: 200 },
|
||||
{ prop: "feedback", label: "文件名", width: 200 },
|
||||
],
|
||||
thsSupervise: {},
|
||||
fileList: [],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.onSubmit();
|
||||
},
|
||||
methods: {
|
||||
onSubmit() {
|
||||
superviseDetail({ supIndex: this.rowList.supIndex }).then((res) => {
|
||||
this.tableList = res.data.overRunLog;
|
||||
this.thsSupervise = res.data.thsSupervise;
|
||||
});
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
handleSizeChange(e) {
|
||||
this.pageSize = e;
|
||||
},
|
||||
handleCurrentChange(e) {
|
||||
this.pageNum = e;
|
||||
},
|
||||
// 批量上传
|
||||
BatchUpload() {
|
||||
this.$message("上传中...");
|
||||
let form = new FormData();
|
||||
form.append("supIndex", this.rowList.supIndex);
|
||||
form.append(
|
||||
"ticketType",
|
||||
this.title == "反馈单上传"
|
||||
? "1"
|
||||
: this.title == "报告上传"
|
||||
? "2"
|
||||
: this.title == "整改通知反馈单上传"
|
||||
? "4"
|
||||
: ""
|
||||
);
|
||||
if (this.limit == 1) {
|
||||
form.append("id", this.id);
|
||||
}
|
||||
this.fileList.forEach((item) => {
|
||||
form.append("files", item);
|
||||
});
|
||||
uploadSuperviseTicket(form)
|
||||
.then((res) => {
|
||||
if (res.type == "application/json") {
|
||||
this.$message({
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.handleCloseP();
|
||||
this.onSubmit();
|
||||
} else {
|
||||
this.$message({
|
||||
message: "上传失败!",
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((response) => {
|
||||
// console.log(response);
|
||||
});
|
||||
},
|
||||
// 批量上传报告
|
||||
TerminalUpload(params) {
|
||||
this.fileList.push(params.file);
|
||||
|
||||
// form.append("files", params.file);
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
this.fileList = fileList;
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error(err);
|
||||
},
|
||||
|
||||
// 关闭上传弹框
|
||||
handleCloseP() {
|
||||
this.fileList = [];
|
||||
this.showBatchUpload = false;
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning("不是批量上传只能上传1个文件!");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
.boxDiv {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
.formatterButton {
|
||||
color: #0cf;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,551 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="text" @click="closeHandle">
|
||||
条件筛选
|
||||
<i :class="!view ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="container" id="container">
|
||||
<i @click="closeHandle" class="el-icon-circle-close coles"></i>
|
||||
<el-form :inline="true" style="margin-top: 10px" label-width="110px" class="">
|
||||
<el-form-item label="问题来源:" class="box1">
|
||||
<el-select v-model="formData.problemSources" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in problemData"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="填报节点:">
|
||||
<el-select v-model="formData.reportProcess" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in fillingProgress"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="formData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-s-claim" @click="toExamine" size="mini">审核</el-button>
|
||||
<el-button type="primary" icon="el-icon-s-claim" @click="historyFn" size="mini">
|
||||
历史审核记录
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="queryMaintenanceData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
:row-class-name="rowClassName"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column prop="number" label="序号" width="100" :show-overflow-tooltip="true">
|
||||
<template scope="scope">
|
||||
<span>{{ (formData.pageNum - 1) * formData.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="orgName" label="所属单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="problemSources"
|
||||
label="问题来源"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="powerQualityProblemNo"
|
||||
label="问题编号"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="problemName"
|
||||
label="问题名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="dataDate" label="提交时间" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="reportProcess"
|
||||
label="填报节点"
|
||||
:formatter="formatter"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="问题审核"
|
||||
v-if="dialogVisible"
|
||||
:visible.sync="dialogVisible"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<SectionTwoPage :addData="multipleSelection[0]" :onlineDetailsData="onlineDetailsData" />
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">审核意见</el-divider>
|
||||
|
||||
<el-form :model="dateForm" ref="dateForm" label-width="100px">
|
||||
<el-form-item
|
||||
prop="opinion"
|
||||
label="审核意见:"
|
||||
:rules="[{ required: true, message: '请输入审核意见', trigger: 'blur' }]"
|
||||
>
|
||||
<el-input type="textarea" :rows="1" placeholder="请输入内容" v-model="dateForm.opinion"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="adopt(1)">通 过</el-button>
|
||||
<el-button type="primary" class="ml20" @click="adopt(0)">不 通 过</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 历史审核记录 -->
|
||||
<el-dialog :close-on-click-modal="false" title="历史审核记录" :visible.sync="history" width="70%">
|
||||
<el-table
|
||||
stripe
|
||||
:data="historyData"
|
||||
:height="height1"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading1"
|
||||
header-cell-class-name="table_header"
|
||||
>
|
||||
<el-table-column
|
||||
prop="reportProcess"
|
||||
label="审核节点"
|
||||
:formatter="formatter"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
label="审核结果"
|
||||
:formatter="formatterType"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="checker" label="审核人" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="orgName" label="审核人单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="dataDate" label="审核时间" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="description" label="审核意见" :show-overflow-tooltip="true"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="history = false">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import Timeinterval from './components/Timeinterval.vue'
|
||||
import {
|
||||
getIssues,
|
||||
getAbnormalDetail,
|
||||
getExcessiveDetail,
|
||||
getComplaintDetail,
|
||||
getGeneralSurveyDetail,
|
||||
checkPowerQuality,
|
||||
queryCheckTrack
|
||||
} from '@/api/Process-supervision/electricitymanagement/electricitymanagement'
|
||||
import SectionTwoPage from './components/SectionTwoPage.vue'
|
||||
export default {
|
||||
components: { Area, Timeinterval, SectionTwoPage },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
queryMaintenanceData: [],
|
||||
dialogVisible: false,
|
||||
SectionTwoPage: false,
|
||||
onlineDetailsData: {},
|
||||
height: null,
|
||||
height1: null,
|
||||
view: false,
|
||||
isLoading: false,
|
||||
isLoading1: false,
|
||||
history: false,
|
||||
formData: {
|
||||
orgNo: '',
|
||||
problemSources: '',
|
||||
reportProcess: '',
|
||||
problemName: '',
|
||||
reportProcessStatus: 'Auditt',
|
||||
dataType: '3', // 时间类型(年:1;季:2;月:3)
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
dateForm: {
|
||||
opinion: ''
|
||||
},
|
||||
|
||||
//问题来源
|
||||
problemData: [],
|
||||
//填报进度
|
||||
fillingProgress: [],
|
||||
historyData: [],
|
||||
multipleSelection: [],
|
||||
|
||||
device: '',
|
||||
|
||||
total: 0, // 总条数
|
||||
fvh: ''
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.Dictionaries()
|
||||
|
||||
this.onsubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.height = window.sessionStorage.getItem('appheight') - 205
|
||||
this.height1 = window.sessionStorage.getItem('appheight') - 290
|
||||
},
|
||||
closeHandle() {
|
||||
if (this.view) {
|
||||
this.view = false
|
||||
} else {
|
||||
this.view = true
|
||||
}
|
||||
//console.log('关闭和展开');
|
||||
const dom = document.getElementById('container')
|
||||
const closeDom = document.getElementsByClassName('close')[0]
|
||||
if (!dom.className.match(/(?:^|\s)expend(?!\S)/)) {
|
||||
dom.className = 'container expend'
|
||||
} else {
|
||||
dom.className = 'container close-container'
|
||||
}
|
||||
},
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
// /问题来源
|
||||
this.problemData = dicData('Problem_Sources', ['Load_Type'])
|
||||
// 填报进度 /:
|
||||
this.fillingProgress = dicData('Fill_Progress', ['Load_Type'])
|
||||
},
|
||||
|
||||
handleChange(file) {
|
||||
// console.log((file.name.split('.')).splice(0,1).toString());
|
||||
this.causeAnalysisData.documentName = file.name.split('.').splice(0, 1).toString()
|
||||
},
|
||||
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
this.formData.dataDate = this.$refs.interval.timeValue[0]
|
||||
// this.form.endTime = this.$refs.interval.timeValue[1];
|
||||
this.formData.dataType = this.$refs.interval.intervald
|
||||
getIssues(this.formData).then(res => {
|
||||
this.isLoading = false
|
||||
this.queryMaintenanceData = res.data.records
|
||||
this.queryMaintenanceData.forEach(item => {
|
||||
item.dataDate = item.dataDate.replace('T', ' ')
|
||||
})
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
|
||||
//审核
|
||||
toExamine() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
// this.SectionTwoPage = false;
|
||||
// getAbnormalDetail(this.multipleSelection[0].powerQualityProblemNo).then(
|
||||
|
||||
if (this.multipleSelection[0].problemSources == '在线监测告警') {
|
||||
getExcessiveDetail(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.onlineDetailsData = res.data
|
||||
})
|
||||
} else if (this.multipleSelection[0].problemSources == '普测超标') {
|
||||
getGeneralSurveyDetail(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.onlineDetailsData = res.data
|
||||
})
|
||||
} else if (this.multipleSelection[0].problemSources == '用户投诉') {
|
||||
getComplaintDetail(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.onlineDetailsData = res.data
|
||||
})
|
||||
} else if (this.multipleSelection[0].problemSources == '设备异常') {
|
||||
getAbnormalDetail(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.onlineDetailsData = res.data
|
||||
})
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.dialogVisible = true
|
||||
}, 0)
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 通过
|
||||
adopt(checkResult) {
|
||||
this.$refs.dateForm.validate(valid => {
|
||||
if (valid) {
|
||||
checkPowerQuality({
|
||||
checkComment: this.dateForm.opinion,
|
||||
checkPerson: JSON.parse(window.sessionStorage.getItem('Info')).name,
|
||||
checkResult: checkResult,
|
||||
powerQualityProblemNo: this.onlineDetailsData.powerQualityProblemNo,
|
||||
reportProcess: this.multipleSelection[0].reportProcess
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '审核成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
this.onsubmit()
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 取消
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
|
||||
this.dateForm.opinion = ''
|
||||
},
|
||||
//历史审核记录
|
||||
historyFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
queryCheckTrack(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.historyData = res.data
|
||||
this.history = true
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.formData.orgNo = data.id
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.formData = {
|
||||
dataDate: '',
|
||||
orgNo: '', //所属单位
|
||||
problemName: '', // 问题名称
|
||||
problemSources: '', // 问题来源
|
||||
reportProcess: '', //填报进度
|
||||
reportProcessStatus: 'Auditt', // 审核状态
|
||||
dataType: '3', // 时间类型(年:1;季:2;月:3)
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
}
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.$refs.interval.intervald = 3
|
||||
this.onSubmit()
|
||||
},
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.pageSize = val
|
||||
this.onsubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.currentPage = val
|
||||
this.onsubmit()
|
||||
},
|
||||
// 字典处理
|
||||
formatter(row, column) {
|
||||
let title = ''
|
||||
this.fillingProgress.forEach(item => {
|
||||
if (item.code == row.reportProcess) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
formatterType(row, column) {
|
||||
let title = ''
|
||||
dicData('Audit_Status', ['Load_Type']).forEach(item => {
|
||||
if (item.code == row.type) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
::v-deep .box {
|
||||
.el-input {
|
||||
width: 140px;
|
||||
}
|
||||
}
|
||||
::v-deep .box1 {
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
::v-deep .box2 {
|
||||
.el-textarea {
|
||||
width: 1000px;
|
||||
}
|
||||
}
|
||||
::v-deep .box3 {
|
||||
.el-textarea {
|
||||
width: 1200px;
|
||||
}
|
||||
}
|
||||
::v-deep .el-card {
|
||||
height: 40px;
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .swiper {
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
/* margin: auto; */
|
||||
top: 0px;
|
||||
right: 0;
|
||||
width: 40%;
|
||||
height: 0px;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
background-color: #e4e7ebb9;
|
||||
overflow: auto;
|
||||
scroll-behavior: smooth;
|
||||
-radius: 20px;
|
||||
}
|
||||
/* 隐藏滚动条 */
|
||||
::-webkit-scrollbar {
|
||||
display: block;
|
||||
}
|
||||
.expend {
|
||||
animation: expend ease 5s forwards;
|
||||
}
|
||||
.close-container {
|
||||
animation: no-expend ease 1s forwards;
|
||||
}
|
||||
@keyframes expend {
|
||||
from {
|
||||
top: 0px;
|
||||
height: auto;
|
||||
}
|
||||
to {
|
||||
height: auto;
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
@keyframes no-expend {
|
||||
from {
|
||||
height: 20%;
|
||||
top: 0px;
|
||||
}
|
||||
to {
|
||||
top: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
}
|
||||
.coles {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,841 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="onSubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="resetFn">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="text" @click="closeHandle">
|
||||
条件筛选
|
||||
<i :class="!view ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div class="container" id="container">
|
||||
<i @click="closeHandle" class="el-icon-circle-close coles"></i>
|
||||
<el-form :inline="true" style="margin-top: 10px" label-width="110px" class="">
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select v-model="formData.problemSources" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in problemData"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="填报进度:">
|
||||
<el-select v-model="formData.reportProcess" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in fillingProgress"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="审核状态:">
|
||||
<el-select v-model="formData.reportProcessStatus" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in auditStatus"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="formData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button">
|
||||
<el-button type="primary" icon="el-icon-circle-plus" @click="newlyAdded" size="mini">
|
||||
新增
|
||||
</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-edit" @click="filling">填报</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-delete" @click="deleteFn">删除</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-s-claim" @click="fileFn">归档</el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-pie-chart" @click="historyFn">
|
||||
历史审核记录
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="queryMaintenanceData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
:row-class-name="rowClassName"
|
||||
:cell-style="cellStyle"
|
||||
>
|
||||
<el-table-column type="selection" width="35"></el-table-column>
|
||||
<el-table-column prop="number" label="序号" width="100" :show-overflow-tooltip="true">
|
||||
<template scope="scope">
|
||||
<span>{{ (formData.pageNum - 1) * formData.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="orgName" label="所属单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="problemSources"
|
||||
label="问题来源"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="powerQualityProblemNo"
|
||||
label="问题编号"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="problemName"
|
||||
label="问题名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="dataDate"
|
||||
label="问题新建时间"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="reportProcess"
|
||||
label="填报进度"
|
||||
:formatter="formatter"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="reportProcessStatus"
|
||||
label="审核状态"
|
||||
:formatter="formatterStatus"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column label="详情">
|
||||
<template slot-scope="scope">
|
||||
<!-- <span
|
||||
v-if="
|
||||
scope.row.reportProcess != 'Not_Reported' &&
|
||||
scope.row.reportProcess != 'Archived'
|
||||
"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: blue; text-decoration: underline"
|
||||
@click="seeFn(scope.row)"
|
||||
>查看</span
|
||||
> -->
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
v-if="
|
||||
scope.row.reportProcess != 'Not_Reported' && scope.row.reportProcess != 'Archived'
|
||||
"
|
||||
@click="seeFn(scope.row)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<span v-else type="primary" size="small">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
class="mt10"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 新增 -->
|
||||
<NewlyAdd v-if="showNewlyAdded" @handleClose="showNewlyAdded = false" @onSubmit="onSubmit" ref="NewlyAdd" />
|
||||
<!-- 未通过弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="未通过审批意见查看" :visible.sync="failed" width="50%">
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">审核意见</el-divider>
|
||||
<el-input type="textarea" :rows="7" placeholder="请输入内容" v-model="textarea"></el-input>
|
||||
</el-dialog>
|
||||
<!-- 填报弹窗(原因分析()) -->
|
||||
<CauseAnalysisJP
|
||||
v-if="showCauseAnalysisJP"
|
||||
@handleClose="showCauseAnalysisJP = false"
|
||||
@onSubmit="onSubmit"
|
||||
ref="CauseAnalysisJP"
|
||||
:addData="multipleSelection[0]"
|
||||
/>
|
||||
|
||||
<!-- 填报弹窗(计划整改措施) -->
|
||||
<PlannedRectification
|
||||
v-if="showPlannedRectification"
|
||||
@handleClose="showPlannedRectification = false"
|
||||
@onSubmit="onSubmit"
|
||||
ref="PlannedRectification"
|
||||
:addData="multipleSelection[0]"
|
||||
/>
|
||||
|
||||
<!-- 填报弹窗(实际采取措施) -->
|
||||
<ActualMeasures
|
||||
v-if="showActualMeasures"
|
||||
@handleClose="showActualMeasures = false"
|
||||
@onSubmit="onSubmit"
|
||||
ref="ActualMeasures"
|
||||
:addData="multipleSelection[0]"
|
||||
/>
|
||||
|
||||
<!-- 填报弹窗(成效分析) -->
|
||||
<Effectiveness
|
||||
v-if="showEffectiveness"
|
||||
@handleClose="showEffectiveness = false"
|
||||
@onSubmit="onSubmit"
|
||||
ref="Effectiveness"
|
||||
:addData="multipleSelection[0]"
|
||||
/>
|
||||
<!-- 详情(在线监测超标问题) -->
|
||||
<MonitoringDetails
|
||||
v-if="showMonitoringDetails"
|
||||
ref="MonitoringDetails"
|
||||
:detailsList="detailsList"
|
||||
@handleClose="showMonitoringDetails = false"
|
||||
/>
|
||||
|
||||
<!-- 详情(普测超标问题) -->
|
||||
<GeneralSurveyDetails
|
||||
v-if="showGeneralSurveyDetails"
|
||||
ref="GeneralSurveyDetails"
|
||||
:detailsList="detailsList"
|
||||
@handleClose="showGeneralSurveyDetails = false"
|
||||
/>
|
||||
|
||||
<!-- 详情(用户投诉问题) -->
|
||||
<ComplaintDetails
|
||||
v-if="showComplaintDetails"
|
||||
ref="ComplaintDetails"
|
||||
:detailsList="detailsList"
|
||||
@handleClose="showComplaintDetails = false"
|
||||
/>
|
||||
|
||||
<!-- 详情(运维异常问题) -->
|
||||
|
||||
<ExceptionDetails
|
||||
v-if="showExceptionDetails"
|
||||
ref="ExceptionDetails"
|
||||
:detailsList="detailsList"
|
||||
@handleClose="showExceptionDetails = false"
|
||||
/>
|
||||
|
||||
<!-- 历史审核记录 -->
|
||||
<el-dialog :close-on-click-modal="false" title="历史审核记录" :visible.sync="history" width="70%">
|
||||
<el-table
|
||||
stripe
|
||||
:data="historyData"
|
||||
:height="height1"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading4"
|
||||
header-cell-class-name="table_header"
|
||||
>
|
||||
<el-table-column
|
||||
prop="reportProcess"
|
||||
label="审核节点"
|
||||
:show-overflow-tooltip="true"
|
||||
:formatter="formatter"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
label="审核结果"
|
||||
:formatter="formatterType"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="checker" label="审核人" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="orgName" label="审核人单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="dataDate" label="审核时间" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="description" label="审核意见" :show-overflow-tooltip="true"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="history = false">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import Timeinterval from './components/Timeinterval.vue'
|
||||
import CauseAnalysisJP from './components/CauseAnalysisJP.vue'
|
||||
import PlannedRectification from './components/PlannedRectification.vue'
|
||||
import ActualMeasures from './components/ActualMeasures.vue'
|
||||
import Effectiveness from './components/Effectiveness.vue'
|
||||
import MonitoringDetails from './components/MonitoringDetails.vue'
|
||||
import GeneralSurveyDetails from './components/GeneralSurveyDetails.vue'
|
||||
import ComplaintDetails from './components/ComplaintDetails.vue'
|
||||
import ExceptionDetails from './components/ExceptionDetails.vue'
|
||||
import NewlyAdd from './components/NewlyAdd'
|
||||
import {
|
||||
getIssues,
|
||||
deleteIssues,
|
||||
archive,
|
||||
queryCheckTrack
|
||||
} from '@/api/Process-supervision/electricitymanagement/electricitymanagement'
|
||||
import { login } from '@/api/user'
|
||||
export default {
|
||||
components: {
|
||||
Area,
|
||||
Timeinterval,
|
||||
NewlyAdd,
|
||||
CauseAnalysisJP,
|
||||
PlannedRectification,
|
||||
ActualMeasures,
|
||||
Effectiveness,
|
||||
MonitoringDetails,
|
||||
GeneralSurveyDetails,
|
||||
ComplaintDetails,
|
||||
ExceptionDetails
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
detailsList: {},
|
||||
showNewlyAdded: false,
|
||||
showCauseAnalysisJP: false,
|
||||
showPlannedRectification: false,
|
||||
showActualMeasures: false,
|
||||
showEffectiveness: false,
|
||||
showMonitoringDetails: false,
|
||||
showGeneralSurveyDetails: false,
|
||||
showComplaintDetails: false,
|
||||
showExceptionDetails: false,
|
||||
height: null,
|
||||
height1: null,
|
||||
view: false,
|
||||
height3: null,
|
||||
isLoading: false,
|
||||
|
||||
isLoading4: false,
|
||||
failed: false,
|
||||
|
||||
ordinaryAdd: false,
|
||||
|
||||
causeAnalysis1: false,
|
||||
rectificationMeasures: false,
|
||||
takeSteps: false,
|
||||
effectivenessAnalysis: false,
|
||||
onlineDetails: false,
|
||||
ordinaryDetails: false,
|
||||
userDetails: false,
|
||||
operationDetails: false,
|
||||
history: false,
|
||||
textarea: '原因分析报告不完整,请补充完整后重新提交!',
|
||||
formData: {
|
||||
dataDate: '',
|
||||
orgNo: '', //所属单位
|
||||
problemName: '', // 问题名称
|
||||
problemSources: '', // 问题来源
|
||||
reportProcess: '', //填报进度
|
||||
reportProcessStatus: '', // 审核状态
|
||||
dataType: '3', // 时间类型(年:1;季:2;月:3)
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
},
|
||||
addData: {
|
||||
company: '杭州公司本部',
|
||||
problem: '',
|
||||
name: ''
|
||||
},
|
||||
questionNo: '',
|
||||
|
||||
//问题来源
|
||||
problemData: [],
|
||||
//填报进度
|
||||
fillingProgress: [],
|
||||
//审核状态
|
||||
auditStatus: [],
|
||||
|
||||
queryMaintenanceData: [],
|
||||
total: 0,
|
||||
|
||||
historyData: [],
|
||||
multipleSelection: [],
|
||||
|
||||
device: '',
|
||||
fvh: ''
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.Dictionaries()
|
||||
this.onSubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 205
|
||||
this.height1 = window.sessionStorage.getItem('appheight') - 360
|
||||
},
|
||||
closeHandle() {
|
||||
if (this.view) {
|
||||
this.view = false
|
||||
} else {
|
||||
this.view = true
|
||||
}
|
||||
//console.log('关闭和展开');
|
||||
const dom = document.getElementById('container')
|
||||
const closeDom = document.getElementsByClassName('close')[0]
|
||||
if (!dom.className.match(/(?:^|\s)expend(?!\S)/)) {
|
||||
dom.className = 'container expend'
|
||||
} else {
|
||||
dom.className = 'container close-container'
|
||||
}
|
||||
},
|
||||
// 新增
|
||||
newlyAdded() {
|
||||
this.showNewlyAdded = true
|
||||
setTimeout(() => {
|
||||
this.$refs.NewlyAdd.add = true
|
||||
}, 0)
|
||||
},
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
// /问题来源
|
||||
this.problemData = dicData('Problem_Sources', ['Load_Type'])
|
||||
// 填报进度 /:
|
||||
this.fillingProgress = dicData('Fill_Progress', ['Load_Type'])
|
||||
// 审核状态 :
|
||||
this.auditStatus = dicData('Audit_Status', ['Load_Type'])
|
||||
},
|
||||
// 详情
|
||||
seeFn(row) {
|
||||
this.detailsList = row
|
||||
|
||||
if (row.problemSources == '在线监测告警') {
|
||||
this.showMonitoringDetails = true
|
||||
setTimeout(() => {
|
||||
this.$refs.MonitoringDetails.onlineDetails = true
|
||||
}, 0)
|
||||
} else if (row.problemSources == '普测超标') {
|
||||
this.showGeneralSurveyDetails = true
|
||||
setTimeout(() => {
|
||||
this.$refs.GeneralSurveyDetails.onlineDetails = true
|
||||
}, 0)
|
||||
} else if (row.problemSources == '用户投诉') {
|
||||
this.showComplaintDetails = true
|
||||
setTimeout(() => {
|
||||
this.$refs.ComplaintDetails.onlineDetails = true
|
||||
}, 0)
|
||||
} else if (row.problemSources == '设备异常') {
|
||||
this.showExceptionDetails = true
|
||||
setTimeout(() => {
|
||||
this.$refs.ExceptionDetails.onlineDetails = true
|
||||
}, 0)
|
||||
} else {
|
||||
this.$message({
|
||||
message: '暂无数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//查询
|
||||
onSubmit() {
|
||||
this.isLoading = true
|
||||
|
||||
this.formData.dataDate = this.$refs.interval.timeValue[0]
|
||||
// this.form.endTime = this.$refs.interval.timeValue[1];
|
||||
this.formData.dataType = this.$refs.interval.intervald
|
||||
getIssues(this.formData).then(res => {
|
||||
this.isLoading = false
|
||||
this.queryMaintenanceData = res.data.records
|
||||
this.queryMaintenanceData.forEach(item => {
|
||||
item.dataDate = item.dataDate.replace('T', ' ')
|
||||
})
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
|
||||
//填报
|
||||
filling() {
|
||||
// reportProcessStatus
|
||||
if (this.multipleSelection.length == 1) {
|
||||
if (this.multipleSelection[0].reportProcess == 'Not_Reported') {
|
||||
// 原因分析
|
||||
this.showCauseAnalysisJP = true
|
||||
setTimeout(() => {
|
||||
this.$refs.CauseAnalysisJP.causeAnalysis = true
|
||||
}, 0)
|
||||
} else if (
|
||||
this.multipleSelection[0].reportProcess == 'Cause_Analysis' &&
|
||||
this.multipleSelection[0].reportProcessStatus == 'Success'
|
||||
) {
|
||||
// 计划整改措施
|
||||
this.showPlannedRectification = true
|
||||
setTimeout(() => {
|
||||
this.$refs.PlannedRectification.rectificationMeasures = true
|
||||
}, 0)
|
||||
} else if (
|
||||
this.multipleSelection[0].reportProcess == 'Plan_Measures' &&
|
||||
this.multipleSelection[0].reportProcessStatus == 'Success'
|
||||
) {
|
||||
// 实际采取措施
|
||||
this.showActualMeasures = true
|
||||
setTimeout(() => {
|
||||
this.$refs.ActualMeasures.rectificationMeasures = true
|
||||
}, 0)
|
||||
} else if (
|
||||
this.multipleSelection[0].reportProcess == 'Actual_Measures' &&
|
||||
this.multipleSelection[0].reportProcessStatus == 'Success'
|
||||
) {
|
||||
// 成效分析
|
||||
this.showEffectiveness = true
|
||||
setTimeout(() => {
|
||||
this.$refs.Effectiveness.effectivenessAnalysis = true
|
||||
}, 0)
|
||||
} else if (
|
||||
this.multipleSelection[0].reportProcess == 'Insights' &&
|
||||
this.multipleSelection[0].reportProcessStatus == 'Success'
|
||||
) {
|
||||
this.$message({
|
||||
message: '填报已结束,无需填报!',
|
||||
type: 'warning'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '审核未通过,不能进行填报',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//删除
|
||||
deleteFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
this.$confirm('是否确认删除?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
deleteIssues(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '删除成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
this.formData.pageNum = 1
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '请选择1数据,进行删除!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//归档
|
||||
fileFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
if (
|
||||
this.multipleSelection[0].reportProcess == 'Insights' &&
|
||||
this.multipleSelection[0].reportProcessStatus == 'Success'
|
||||
) {
|
||||
this.$confirm('是否确认归档?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
archive(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '归档成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
|
||||
this.onSubmit()
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '不满足归档调节,操作失败!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message({
|
||||
message: '请选择1条数据,进行归档!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//历史审核记录
|
||||
historyFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
queryCheckTrack(this.multipleSelection[0].powerQualityProblemNo).then(res => {
|
||||
this.historyData = res.data
|
||||
this.history = true
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
// 区域勾选
|
||||
handleNodeClick(data) {
|
||||
this.formData.orgNo = data.id
|
||||
},
|
||||
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
},
|
||||
//重置
|
||||
resetFn() {
|
||||
this.formData = {
|
||||
dataDate: '',
|
||||
orgNo: '', //所属单位
|
||||
problemName: '', // 问题名称
|
||||
problemSources: '', // 问题来源
|
||||
reportProcess: '', //填报进度
|
||||
reportProcessStatus: '', // 审核状态
|
||||
dataType: '3', // 时间类型(年:1;季:2;月:3)
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
}
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.$refs.interval.intervald = 3
|
||||
this.onSubmit()
|
||||
},
|
||||
|
||||
//判断
|
||||
cellStyle(row) {
|
||||
if (row.row.fillingProgress == '未填报') {
|
||||
row.row.auditStatus = '--'
|
||||
row.row.plandetails = '--'
|
||||
} else if (row.row.fillingProgress == '已归档') {
|
||||
row.row.auditStatus = '--'
|
||||
}
|
||||
},
|
||||
// 字典处理
|
||||
formatter(row, column) {
|
||||
let title = ''
|
||||
this.fillingProgress.forEach(item => {
|
||||
if (item.code == row.reportProcess) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
|
||||
formatterType(row, column) {
|
||||
let title = ''
|
||||
this.auditStatus.forEach(item => {
|
||||
if (item.code == row.type) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
formatterStatus(row, column) {
|
||||
let title = ''
|
||||
this.auditStatus.forEach(item => {
|
||||
if (item.code == row.reportProcessStatus) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
if (title == '待审核') {
|
||||
return (
|
||||
<span type="primary" size="small" style="color: #48d1cc">
|
||||
待审核
|
||||
</span>
|
||||
)
|
||||
} else if (title == '未通过') {
|
||||
return (
|
||||
<span type="primary" size="small" style="color: #dc143c">
|
||||
未通过
|
||||
</span>
|
||||
)
|
||||
} else if (title == '已通过') {
|
||||
return (
|
||||
<span type="primary" size="small" style="color: #9acd32">
|
||||
已通过
|
||||
</span>
|
||||
)
|
||||
} else if (title == '新建') {
|
||||
return (
|
||||
<span type="primary" size="small">
|
||||
新建
|
||||
</span>
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
::v-deep .box {
|
||||
.el-textarea {
|
||||
width: 1200px;
|
||||
}
|
||||
}
|
||||
::v-deep .box1 {
|
||||
.el-textarea {
|
||||
width: 1000px;
|
||||
}
|
||||
}
|
||||
::v-deep .el-card {
|
||||
height: 40px;
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .el-carousel__button {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: #037272bc;
|
||||
border-radius: 50%;
|
||||
opacity: 0.3;
|
||||
}
|
||||
::v-deep .swiper {
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-checkbox {
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
.container {
|
||||
/* margin: auto; */
|
||||
top: 0px;
|
||||
right: 0;
|
||||
width: 40%;
|
||||
height: 0px;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
background-color: #e4e7ebb9;
|
||||
overflow: auto;
|
||||
scroll-behavior: smooth;
|
||||
-radius: 20px;
|
||||
}
|
||||
/* 隐藏滚动条 */
|
||||
::-webkit-scrollbar {
|
||||
display: block;
|
||||
}
|
||||
.expend {
|
||||
animation: expend ease 5s forwards;
|
||||
}
|
||||
.close-container {
|
||||
animation: no-expend ease 1s forwards;
|
||||
}
|
||||
@keyframes expend {
|
||||
from {
|
||||
top: 0px;
|
||||
height: auto;
|
||||
}
|
||||
to {
|
||||
height: auto;
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
@keyframes no-expend {
|
||||
from {
|
||||
height: 20%;
|
||||
top: 0px;
|
||||
}
|
||||
to {
|
||||
top: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
}
|
||||
.coles {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,277 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 计划整改 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="填报"
|
||||
:visible.sync="rectificationMeasures"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="addData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="addData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="addData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="addData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="addData.powerQualityProblemNo"
|
||||
disabled
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>填报流程</el-divider
|
||||
>
|
||||
<el-row type="flex" justify="space-between">
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="2"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form
|
||||
:model="rectificationMeasuresData"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
class="form"
|
||||
>
|
||||
<el-form-item
|
||||
label="电网侧实际采取措施:"
|
||||
prop="reportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="rectificationMeasuresData.reportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item
|
||||
label="用户侧实际采取措施:"
|
||||
prop="userReportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="rectificationMeasuresData.userReportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item
|
||||
class="item"
|
||||
label="实际采取措施报告:"
|
||||
prop="fileNameSjcq"
|
||||
>
|
||||
<File ref="File" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="Submit"
|
||||
>提交审核</el-button
|
||||
>
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>取消</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { takeAction } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import File from "./File.vue";
|
||||
export default {
|
||||
components: { File },
|
||||
props: {
|
||||
addData: {
|
||||
type: [Object, Array],
|
||||
default: {
|
||||
orgName: "",
|
||||
problemSources: "",
|
||||
problemName: "",
|
||||
powerQualityProblemNo: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
rectificationMeasures: false,
|
||||
rectificationMeasuresData: {
|
||||
reportProcessContentSjcq: [],
|
||||
userReportProcessContentSjcq: [],
|
||||
fileNameSjcq: "", //实际采取措施报告文件名称
|
||||
filePathSjcq: "", // 实际采取措施报告文件路径
|
||||
},
|
||||
OnlineList: [],
|
||||
List: [],
|
||||
rules: {
|
||||
reportProcessContentSjcq: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
userReportProcessContentSjcq: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
fileNameSjcq: [
|
||||
{ required: true, message: "请上传文件", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
},
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 电网侧原因
|
||||
this.List = dicData("Plan_Take", ["Load_Type"]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
//提交
|
||||
Submit() {
|
||||
this.rectificationMeasuresData.fileNameSjcq =
|
||||
this.$refs.File.fileList.minFileName;
|
||||
this.rectificationMeasuresData.filePathSjcq =
|
||||
this.$refs.File.fileList.minFileUrl;
|
||||
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.rectificationMeasuresData.powerQualityProblemNo =
|
||||
this.addData.powerQualityProblemNo;
|
||||
takeAction(this.rectificationMeasuresData).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "填报成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("handleClose");
|
||||
this.$emit("onSubmit");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,350 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 填报弹窗(原因分析(在线监测和普测超标)) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="填报"
|
||||
:visible.sync="causeAnalysis"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="addData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="addData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="addData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="addData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="addData.powerQualityProblemNo"
|
||||
disabled
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>填报流程</el-divider
|
||||
>
|
||||
<el-row type="flex" justify="space-between">
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="0"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form
|
||||
:model="causeAnalysisData"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
label-width="140px"
|
||||
class="form"
|
||||
>
|
||||
<el-form-item label="电网侧原因:" prop="reportProcessContentYyfx">
|
||||
<el-checkbox-group
|
||||
v-model="causeAnalysisData.reportProcessContentYyfx"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in reportProcessContentYyfxList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item
|
||||
label="用户侧原因:"
|
||||
prop="userReportProcessContentYyfx"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="causeAnalysisData.userReportProcessContentYyfx"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in userReportProcessContentYyfxList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-row
|
||||
v-if="
|
||||
addData.problemSources == '用户投诉' ||
|
||||
addData.problemSources == '设备异常'
|
||||
"
|
||||
>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="电网侧受影响设备:" prop="powerGridAffectDev">
|
||||
<el-checkbox-group
|
||||
v-model="causeAnalysisData.powerGridAffectDev"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in powerGridAffectDevList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="用户侧受影响设备:" prop="userAffectDev">
|
||||
<el-checkbox-group v-model="causeAnalysisData.userAffectDev">
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in userAffectDevList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="事件描述:" prop="eventDescriptionYyfx">
|
||||
<el-input
|
||||
style="width: 90%"
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="causeAnalysisData.eventDescriptionYyfx"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="item"
|
||||
label="原因分析报告:"
|
||||
style="margin-top: 10px"
|
||||
prop="fileNameYyfx"
|
||||
>
|
||||
<File ref="File" />
|
||||
<!-- <el-button size="small" type="primary"
|
||||
>上传本地评估报告</el-button
|
||||
> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="onSubmit"
|
||||
>提交审核</el-button
|
||||
>
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>取消</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { reasonAnalysis } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import File from "./File.vue";
|
||||
export default {
|
||||
components: { File },
|
||||
props: {
|
||||
addData: {
|
||||
type: [Object, Array],
|
||||
default: {
|
||||
orgName: "",
|
||||
problemSources: "",
|
||||
problemName: "",
|
||||
powerQualityProblemNo: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
causeAnalysis: false,
|
||||
OnlineList: [],
|
||||
causeAnalysisData: {
|
||||
reportProcessContentYyfx: [],
|
||||
userReportProcessContentYyfx: [],
|
||||
eventDescriptionYyfx: "",
|
||||
fileNameYyfx: "", //原因分析报告文件名称
|
||||
filePathYyfx: "", //原因分析报告文件路径
|
||||
powerGridAffectDev: [],
|
||||
userAffectDev: [],
|
||||
},
|
||||
rules: {
|
||||
reportProcessContentYyfx: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
userReportProcessContentYyfx: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
eventDescriptionYyfx: [
|
||||
{ required: true, message: "请填写", trigger: "blur" },
|
||||
],
|
||||
powerGridAffectDev: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
userAffectDev: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
fileNameYyfx: [
|
||||
{ required: true, message: "请上传文件", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
reportProcessContentYyfxList: [],
|
||||
userReportProcessContentYyfxList: [],
|
||||
powerGridAffectDevList: [],
|
||||
userAffectDevList: [],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
},
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 电网侧原因
|
||||
this.reportProcessContentYyfxList = dicData("Grid-side_Reasons", [
|
||||
"Load_Type",
|
||||
]);
|
||||
// 用户侧原因
|
||||
this.userReportProcessContentYyfxList = dicData("User_Reasons", [
|
||||
"Load_Type",
|
||||
]);
|
||||
// 电网侧受影响设备
|
||||
this.powerGridAffectDevList = dicData("Grid_Unit", ["Load_Type"]);
|
||||
// 用户侧受影响设备
|
||||
this.userAffectDevList = dicData("Customer_Unit", ["Load_Type"]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
// 提交
|
||||
onSubmit() {
|
||||
this.causeAnalysisData.fileNameYyfx =
|
||||
this.$refs.File.fileList.minFileName;
|
||||
this.causeAnalysisData.filePathYyfx = this.$refs.File.fileList.minFileUrl;
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.causeAnalysisData.powerQualityProblemNo =
|
||||
this.addData.powerQualityProblemNo;
|
||||
reasonAnalysis(this.causeAnalysisData).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "填报成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("handleClose");
|
||||
this.$emit("onSubmit");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-divider--horizontal {
|
||||
display: block;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
margin: 22px 0;
|
||||
}
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,228 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 详情(用户投诉问题) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="详情"
|
||||
:visible.sync="onlineDetails"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-carousel
|
||||
trigger="click"
|
||||
height="600px"
|
||||
arrow="never"
|
||||
:autoplay="false"
|
||||
>
|
||||
<el-carousel-item>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
|
||||
<el-form :inline="true" label-width="105px">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.powerQualityProblemNo"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" label-width="105px" class="form mt20">
|
||||
<el-form-item label="用户投诉名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.userName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="投诉用户编号:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.userNo"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="投诉时间:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.complaintTime"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" label-width="105px" class="box mt20">
|
||||
<el-form-item label="投诉内容:" style="margin-top: 10px">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="onlineDetailsData.complaintContent"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题指标</el-divider
|
||||
>
|
||||
<el-form :inline="true" label-width="105px" class="form">
|
||||
<el-form-item label="稳态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.steadyIndicator"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in steadyIndicatorList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.transientIndicators"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in transientIndicatorsList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-carousel-item>
|
||||
<el-carousel-item>
|
||||
<SectionTwoPage
|
||||
:addData="detailsList"
|
||||
:onlineDetailsData="onlineDetailsData"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>关闭</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getComplaintDetail } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import SectionTwoPage from "./SectionTwoPage.vue";
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
|
||||
export default {
|
||||
components: { SectionTwoPage },
|
||||
props: {
|
||||
detailsList: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
onlineDetails: false,
|
||||
onlineDetailsData: {},
|
||||
steadyIndicatorList: [],
|
||||
transientIndicatorsList: [],
|
||||
OnlineList: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
this.info();
|
||||
},
|
||||
created() {},
|
||||
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 稳态指标
|
||||
this.steadyIndicatorList = dicData("Steady_Indicator", ["Load_Type"]);
|
||||
// 暂态指标
|
||||
this.transientIndicatorsList = dicData("Transient_Indicators", [
|
||||
"Load_Type",
|
||||
]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
// 获取信息
|
||||
info() {
|
||||
getComplaintDetail(this.detailsList.powerQualityProblemNo).then((res) => {
|
||||
this.onlineDetailsData = res.data;
|
||||
});
|
||||
},
|
||||
// 关闭
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-divider--horizontal {
|
||||
display: block;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
margin: 22px 0;
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,245 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="填报"
|
||||
:visible.sync="effectivenessAnalysis"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="addData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="addData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="addData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="addData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="addData.powerQualityProblemNo"
|
||||
disabled
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>填报流程</el-divider
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="3"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form
|
||||
:model="effectivenessAnalysisData"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
class="box1"
|
||||
>
|
||||
<el-form-item
|
||||
label="成效分析概述:"
|
||||
style="margin-top: 10px"
|
||||
prop="descriptionZlxg"
|
||||
>
|
||||
<el-input
|
||||
type="textarea"
|
||||
style="width: 80%"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="effectivenessAnalysisData.descriptionZlxg"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item
|
||||
class="item"
|
||||
label="成效分析报告:"
|
||||
prop="fileNameZlxg"
|
||||
>
|
||||
<File ref="File" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="Submit"
|
||||
>提交审核</el-button
|
||||
>
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>取消</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { effectAnalysis } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import File from "./File.vue";
|
||||
export default {
|
||||
components: { File },
|
||||
props: {
|
||||
addData: {
|
||||
type: [Object, Array],
|
||||
default: {
|
||||
orgName: "",
|
||||
problemSources: "",
|
||||
problemName: "",
|
||||
powerQualityProblemNo: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
effectivenessAnalysis: false,
|
||||
effectivenessAnalysisData: {
|
||||
descriptionZlxg: "",
|
||||
fileNameZlxg: "", //实际采取措施报告文件名称
|
||||
filePathZlxg: "", //实际采取措施报告文件路径
|
||||
},
|
||||
OnlineList: [],
|
||||
rules: {
|
||||
descriptionZlxg: [
|
||||
{ required: true, message: "请填写", trigger: "blur" },
|
||||
],
|
||||
fileNameZlxg: [
|
||||
{ required: true, message: "请上传文件", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
methods: {
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
//提交
|
||||
Submit() {
|
||||
this.effectivenessAnalysisData.fileNameZlxg =
|
||||
this.$refs.File.fileList.minFileName;
|
||||
this.effectivenessAnalysisData.filePathZlxg =
|
||||
this.$refs.File.fileList.minFileUrl;
|
||||
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.effectivenessAnalysisData.powerQualityProblemNo =
|
||||
this.addData.powerQualityProblemNo;
|
||||
effectAnalysis(this.effectivenessAnalysisData).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "填报成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("handleClose");
|
||||
this.$emit("onSubmit");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,219 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 详情(运维异常问题) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="详情"
|
||||
:visible.sync="onlineDetails"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-carousel
|
||||
trigger="click"
|
||||
height="600px"
|
||||
arrow="never"
|
||||
:autoplay="false"
|
||||
>
|
||||
<el-carousel-item>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
|
||||
<el-form :inline="true" label-width="105px">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.powerQualityProblemNo"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" label-width="105px" class="form mt20">
|
||||
<el-form-item label="异常设备名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.abnormalDevName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="发现异常时间:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.abnormalDevTime"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" label-width="105px" class="box mt20">
|
||||
<el-form-item label="设备异常描述:" style="margin-top: 10px">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="onlineDetailsData.eventDescription"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题指标</el-divider
|
||||
>
|
||||
<el-form :inline="true" label-width="105px" class="form">
|
||||
<el-form-item label="稳态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.steadyIndicator"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in steadyIndicatorList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.transientIndicators"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in transientIndicatorsList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-carousel-item>
|
||||
<el-carousel-item>
|
||||
<SectionTwoPage
|
||||
:addData="detailsList"
|
||||
:onlineDetailsData="onlineDetailsData"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>关闭</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getAbnormalDetail } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import SectionTwoPage from "./SectionTwoPage.vue";
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
|
||||
export default {
|
||||
components: { SectionTwoPage },
|
||||
props: {
|
||||
detailsList: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
onlineDetails: false,
|
||||
onlineDetailsData: {},
|
||||
steadyIndicatorList: [],
|
||||
transientIndicatorsList: [],
|
||||
OnlineList: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
this.info();
|
||||
},
|
||||
created() {},
|
||||
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 稳态指标
|
||||
this.steadyIndicatorList = dicData("Steady_Indicator", ["Load_Type"]);
|
||||
// 暂态指标
|
||||
this.transientIndicatorsList = dicData("Transient_Indicators", [
|
||||
"Load_Type",
|
||||
]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
// 获取信息
|
||||
info() {
|
||||
getAbnormalDetail(this.detailsList.powerQualityProblemNo).then((res) => {
|
||||
this.onlineDetailsData = res.data;
|
||||
});
|
||||
},
|
||||
// 关闭
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-divider--horizontal {
|
||||
display: block;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
margin: 22px 0;
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,224 @@
|
||||
<template>
|
||||
<div class="upload-file">
|
||||
<el-upload
|
||||
multiple
|
||||
:action="uploadFileUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
|
||||
:limit="limit"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
:on-success="handleUploadSuccess"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<!-- 上传按钮 -->
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="fileList.minFileName"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
size="small"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-upload2"
|
||||
>上传本地报告</el-button
|
||||
>
|
||||
</div>
|
||||
<!-- 上传提示 -->
|
||||
</el-upload>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { getAccessToken } from "@/utils/auth";
|
||||
// import { getfile } from "@/api/core/ProjectList";
|
||||
|
||||
export default {
|
||||
name: "FileUpload",
|
||||
props: {
|
||||
// 值
|
||||
value: [String, Object, Array],
|
||||
// 数量限制
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 100,
|
||||
},
|
||||
// 大小限制(MB)
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 512,
|
||||
},
|
||||
// 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: {
|
||||
type: Array,
|
||||
default: () => ["doc", "xls", "ppt", "txt", "pdf"],
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
number: 0,
|
||||
uploadList: [],
|
||||
uploadFileUrl: "/api/process-boot/electricityQuality/uploadFile", // 请求地址
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem("cntoken"),
|
||||
}, // 设置上传的请求头部
|
||||
fileList: [],
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
// value: {
|
||||
// handler(val) {
|
||||
// if (val) {
|
||||
// let temp = 1;
|
||||
// // 首先将值转为数组
|
||||
// const list = Array.isArray(val) ? val : this.value.split(",");
|
||||
// // 然后将数组转为对象数组
|
||||
// this.fileList = list.map((item) => {
|
||||
// if (typeof item === "string") {
|
||||
// item = { name: item, url: item };
|
||||
// }
|
||||
// item.uid = item.uid || new Date().getTime() + temp++;
|
||||
// return item;
|
||||
// });
|
||||
// } else {
|
||||
// this.fileList = [];
|
||||
// return [];
|
||||
// }
|
||||
// },
|
||||
// deep: true,
|
||||
// immediate: true,
|
||||
// },
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.fileType || this.fileSize);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 上传前校检格式和大小
|
||||
handleBeforeUpload(file) {
|
||||
// 校检文件类型
|
||||
// if (this.fileType) {
|
||||
// let fileExtension = "";
|
||||
// if (file.name.lastIndexOf(".") > -1) {
|
||||
// fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
|
||||
// }
|
||||
// const isTypeOk = this.fileType.some((type) => {
|
||||
// if (file.type.indexOf(type) > -1) return true;
|
||||
// return !!(fileExtension && fileExtension.indexOf(type) > -1);
|
||||
// });
|
||||
// if (!isTypeOk) {
|
||||
// this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// // 校检文件大小
|
||||
// if (this.fileSize) {
|
||||
// const isLt = file.size / 1024 / 1024 < this.fileSize;
|
||||
// if (!isLt) {
|
||||
// this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// this.$modal.loading("正在上传文件,请稍候...");
|
||||
this.number++;
|
||||
return true;
|
||||
},
|
||||
// 文件个数超出
|
||||
handleExceed() {
|
||||
// this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error("上传失败!");
|
||||
// this.$modal.msgError("上传图片失败,请重试");
|
||||
// this.$modal.closeLoading();
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res) {
|
||||
this.$message({
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.fileList = res.data;
|
||||
// console.log(`123`, res);
|
||||
},
|
||||
// 删除文件
|
||||
handleDelete(index) {
|
||||
// this.fileList.splice(index, 1);
|
||||
// this.$emit("input", this.fileList);
|
||||
},
|
||||
// 获取文件名称
|
||||
getFileName(name) {
|
||||
if (name.lastIndexOf("/") > -1) {
|
||||
return name.slice(name.lastIndexOf("/") + 1);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
},
|
||||
// 对象转成指定字符串分隔
|
||||
listToString(list, separator) {
|
||||
let strs = "";
|
||||
separator = separator || ",";
|
||||
for (let i in list) {
|
||||
strs += list[i].url + separator;
|
||||
}
|
||||
return strs !== "" ? strs.substr(0, strs.length - 1) : "";
|
||||
},
|
||||
// 下载
|
||||
exportExcels(e) {
|
||||
getfile(e.url.substring(32)).then((res) => {
|
||||
let blob = new Blob([res], {
|
||||
type: "application/vnd.ms-excel",
|
||||
});
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
const link = document.createElement("a"); // 创建a标签
|
||||
link.href = url; // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
link.download = e.url.substring(
|
||||
e.url.lastIndexOf("/") + 1,
|
||||
e.url.length
|
||||
); // 设置下载的文件名
|
||||
document.body.appendChild(link);
|
||||
link.click(); //执行下载
|
||||
document.body.removeChild(link);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
.upload-file-uploader {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.upload-file-list .el-upload-list__item {
|
||||
border: 1px solid #e4e7ed;
|
||||
line-height: 2;
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
}
|
||||
.upload-file-list .ele-upload-list__item-content {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
color: inherit;
|
||||
}
|
||||
.ele-upload-list__item-content-action .el-link {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,217 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 详情(普测超标问题) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="详情"
|
||||
:visible.sync="onlineDetails"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-carousel
|
||||
trigger="click"
|
||||
height="450px"
|
||||
arrow="never"
|
||||
:autoplay="false"
|
||||
>
|
||||
<el-carousel-item>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true" label-width="105px">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.powerQualityProblemNo"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" label-width="105px" class="form mt20">
|
||||
<el-form-item label="普测计划名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.planName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属变电站:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.substationName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="母线名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.busBarName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题指标</el-divider
|
||||
>
|
||||
<el-form :inline="true" label-width="105px" class="form">
|
||||
<el-form-item label="稳态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.steadyIndicator"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in steadyIndicatorList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" style="margin-top: 10px">
|
||||
<el-checkbox-group
|
||||
v-model="onlineDetailsData.transientIndicators"
|
||||
disabled
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in transientIndicatorsList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-carousel-item>
|
||||
<el-carousel-item>
|
||||
<SectionTwoPage
|
||||
:addData="detailsList"
|
||||
:onlineDetailsData="onlineDetailsData"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>关闭</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getGeneralSurveyDetail } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import SectionTwoPage from "./SectionTwoPage.vue";
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
|
||||
export default {
|
||||
components: { SectionTwoPage },
|
||||
props: {
|
||||
detailsList: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
onlineDetails: false,
|
||||
onlineDetailsData: {},
|
||||
steadyIndicatorList: [],
|
||||
transientIndicatorsList: [],
|
||||
OnlineList: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
this.info();
|
||||
},
|
||||
created() {},
|
||||
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 稳态指标
|
||||
this.steadyIndicatorList = dicData("Steady_Indicator", ["Load_Type"]);
|
||||
// 暂态指标
|
||||
this.transientIndicatorsList = dicData("Transient_Indicators", [
|
||||
"Load_Type",
|
||||
]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
// 获取信息
|
||||
info() {
|
||||
getGeneralSurveyDetail(this.detailsList.powerQualityProblemNo).then(
|
||||
(res) => {
|
||||
this.onlineDetailsData = res.data;
|
||||
}
|
||||
);
|
||||
},
|
||||
// 关闭
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-divider--horizontal {
|
||||
display: block;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
margin: 22px 0;
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 详情(在线监测超标问题) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="详情"
|
||||
:visible.sync="onlineDetails"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-carousel
|
||||
trigger="click"
|
||||
height="450px"
|
||||
arrow="never"
|
||||
:autoplay="false"
|
||||
>
|
||||
<el-carousel-item>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true" label-width="105px">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="onlineDetailsData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.powerQualityProblemNo"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form :inline="true" class="form mt20" label-width="105px">
|
||||
<el-form-item label="监测点名称:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.measurementPointName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="告警持续时间:">
|
||||
<el-input
|
||||
v-model="onlineDetailsData.warnLastTime"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="告警指标:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="onlineDetailsData.warnTarget"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in warnTargetList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
disabled
|
||||
v-model="onlineDetailsData.warnTarget"
|
||||
></el-input> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form class="box mt20" label-width="105px">
|
||||
<el-form-item label="告警描述:" style="margin-top: 10px">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
disabled
|
||||
v-model="onlineDetailsData.warnReason"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-carousel-item>
|
||||
<el-carousel-item>
|
||||
<SectionTwoPage
|
||||
:addData="detailsList"
|
||||
:onlineDetailsData="onlineDetailsData"
|
||||
/>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>关闭</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { getExcessiveDetail } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import SectionTwoPage from "./SectionTwoPage.vue";
|
||||
export default {
|
||||
components: { SectionTwoPage },
|
||||
props: {
|
||||
detailsList: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
warnTargetList: [],
|
||||
onlineDetails: false,
|
||||
onlineDetailsData: {},
|
||||
OnlineList: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.info();
|
||||
this.warnTargetList = dicData("alarm_Type", []);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
created() {},
|
||||
|
||||
methods: {
|
||||
// 获取信息
|
||||
info() {
|
||||
getExcessiveDetail(this.detailsList.powerQualityProblemNo).then((res) => {
|
||||
this.onlineDetailsData = res.data;
|
||||
});
|
||||
},
|
||||
// 关闭
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,818 @@
|
||||
<template>
|
||||
<div >
|
||||
<!-- <span style="font-size: 14px; font-weight: 550">
|
||||
<span class="spanColor">间隔:</span>
|
||||
</span> -->
|
||||
<el-form>
|
||||
<el-form-item>
|
||||
<el-select
|
||||
style="width: 90px;"
|
||||
v-model="intervald"
|
||||
@change="interchange"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in timeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-date-picker
|
||||
style="width: 230px"
|
||||
:disabled="disabled"
|
||||
:readonly="pickDisabled"
|
||||
:clearable="false"
|
||||
v-model="timeValue"
|
||||
:picker-options="pickerOptions"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
align="right"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="buttonShow">
|
||||
<el-button
|
||||
:disabled="backDisabled"
|
||||
type="primary"
|
||||
icon="el-icon-d-arrow-left"
|
||||
@click="preClick"
|
||||
style="margin-left: 10px"
|
||||
></el-button>
|
||||
<el-button @click="nowTime" type="primary" style="margin-left: 5px"
|
||||
>当前</el-button
|
||||
>
|
||||
<el-button
|
||||
:disabled="preDisabled"
|
||||
type="primary"
|
||||
icon="el-icon-d-arrow-right"
|
||||
@click="back"
|
||||
style="margin-left: 5px"
|
||||
></el-button>
|
||||
|
||||
</el-form-item>
|
||||
<el-form>
|
||||
<el-button v-show="false" style="margin-bottom: 0.5%" type="primary"
|
||||
>导出文件</el-button
|
||||
>
|
||||
</el-form>
|
||||
</el-form>
|
||||
|
||||
|
||||
|
||||
<!-- <el-button
|
||||
v-show="buttonShow && thb"
|
||||
@click="tongbiyear"
|
||||
style="margin-left: 5px"
|
||||
type="primary"
|
||||
>同比</el-button
|
||||
>
|
||||
<el-button
|
||||
v-show="buttonShow && thb"
|
||||
@click="huangbiyear"
|
||||
style="margin-left: 5px"
|
||||
type="primary"
|
||||
>环比</el-button
|
||||
> -->
|
||||
|
||||
<!-- <el-button
|
||||
@click="querfromdata"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
style="margin-left: 10px"
|
||||
>查询</el-button
|
||||
> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "index4",
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
path: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
tablename: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
interval: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
},
|
||||
type: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
},
|
||||
falg: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
query: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
thb: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
intervald(val) {
|
||||
if (val != 5) {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.pickDisabled = false;
|
||||
this.buttonShow = true;
|
||||
} else {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.buttonShow = false;
|
||||
this.pickDisabled = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
disabled: true,
|
||||
buttonShow: true, //向前向后按钮显示隐藏控制按钮
|
||||
pickDisabled: false, //时间组件只读控制se,
|
||||
falg1: true,
|
||||
timeOptions: [
|
||||
// { label: "年份", value: 1 },
|
||||
// { label: "季度", value: 2 },
|
||||
{ label: "月份", value: 3 },
|
||||
// { label: "周", value: 4 },
|
||||
// // { label: "自定义", value: 5 },
|
||||
],
|
||||
pickerOptions: {
|
||||
shortcuts: [
|
||||
{
|
||||
text: "最近一周",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "最近一个月",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "最近三个月",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
intervald: this.interval,
|
||||
tablenamed: this.tablename,
|
||||
timeValue: [],
|
||||
timehbValue: [],
|
||||
backDisabled: false,
|
||||
preDisabled: true,
|
||||
huanbibiFalg: false,
|
||||
tonbiFalg: false,
|
||||
timeFlag: 0,
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
// console.log(endTime,startTime,'endtime','startTime')
|
||||
this.$store.commit("sagServerity/SET_TIMEINTERVAL",[startTime,endTime] )
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.$emit("time",[startTime,endTime,this.intervald] );
|
||||
if (this.type == 2) {
|
||||
this.huangbiyear();
|
||||
} else if (!this.type) {
|
||||
this.querfromdata();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
interchange(val) {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
// console.log(endTime,startTime,'endtime','startTime')
|
||||
this.$store.commit("sagServerity/SET_TIMEINTERVAL",[startTime,endTime] )
|
||||
this.$emit("time",[startTime,endTime,val] );
|
||||
if (val == 1 || val == 2) {
|
||||
this.timeFlag = 0;
|
||||
} else {
|
||||
this.timeFlag = 1;
|
||||
}
|
||||
//console.log(this.timeFlag);
|
||||
this.intervald = val;
|
||||
if (val == 5) {
|
||||
this.tablenamed == "tab1";
|
||||
this.disabled = false;
|
||||
} else {
|
||||
this.tablenamed == "tab2";
|
||||
this.disabled = true;
|
||||
}
|
||||
},
|
||||
// 获取当前日期,精确到日
|
||||
getEndTime() {
|
||||
var now = new Date();
|
||||
var sep = "-";
|
||||
var year = now.getFullYear();
|
||||
var month = now.getMonth() + 1;
|
||||
if (month < 10) {
|
||||
month = "0" + month;
|
||||
}
|
||||
var date = now.getDate();
|
||||
if (date < 10) {
|
||||
date = "0" + date;
|
||||
}
|
||||
|
||||
// 拼接当前的日期
|
||||
var endTime = year + sep + month + sep + date;
|
||||
return endTime;
|
||||
},
|
||||
// 获取起始日期
|
||||
getStartTime(interval, endTime) {
|
||||
var sep = "-";
|
||||
var arr = endTime.split("-");
|
||||
var year = arr[0];
|
||||
var month = arr[1];
|
||||
var date = arr[2];
|
||||
// 按月份间隔
|
||||
if (interval == 3) {
|
||||
date = "01";
|
||||
// 按季度间隔
|
||||
} else if (interval == 2) {
|
||||
if ((month > 0) & (month < 4)) {
|
||||
// 第一季度
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else if (month > 3 && month < 7) {
|
||||
// 第二季度
|
||||
month = "04";
|
||||
date = "01";
|
||||
} else if (month > 6 && month < 10) {
|
||||
// 第三季度
|
||||
month = "07";
|
||||
date = "01";
|
||||
} else {
|
||||
// 第四季度
|
||||
month = "10";
|
||||
date = "01";
|
||||
}
|
||||
} else if (interval == 1) {
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else if (interval == "半年") {
|
||||
if (month < 7) {
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else {
|
||||
month = "07";
|
||||
date = "01";
|
||||
}
|
||||
} else if (interval == 4) {
|
||||
//周
|
||||
var start = new Date(year, month - 1, date);
|
||||
var dayOfWeek = start.getDay() == 0 ? 7 : start.getDay(); // 如果为周日,则置为7天
|
||||
start.setDate(start.getDate() - dayOfWeek + 1); // 计算开始时间
|
||||
|
||||
if (this.formatTime(new Date()) != endTime) {
|
||||
// 如果结束时间不是当前时间
|
||||
var end = new Date(start);
|
||||
end.setDate(end.getDate() + 6);
|
||||
// $("#endTime").val(this.formatTime(end));
|
||||
}
|
||||
|
||||
return this.formatTime(start);
|
||||
}
|
||||
|
||||
var startTime = year + sep + month + sep + date;
|
||||
return startTime;
|
||||
},
|
||||
// 时间格式化
|
||||
formatTime(time) {
|
||||
return (
|
||||
time.getFullYear() +
|
||||
"-" +
|
||||
(time.getMonth() + 1 < 10 ? "0" : "") +
|
||||
(time.getMonth() + 1) +
|
||||
"-" +
|
||||
(time.getDate() < 10 ? "0" : "") +
|
||||
time.getDate()
|
||||
);
|
||||
},
|
||||
//向前
|
||||
preClick() {
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-12-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (month <= 10) {
|
||||
month = month - 1;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
month = month - 1;
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-10-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
// 还是本年
|
||||
month = month - 3;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timeValue = [startTime, endTime];
|
||||
|
||||
// 判断向后键的状态
|
||||
var temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//向后
|
||||
back() {
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
var now = new Date();
|
||||
// 获取当前年份
|
||||
var presentY = now.getFullYear();
|
||||
// 获取当前月份
|
||||
var presentM = now.getMonth() + 1;
|
||||
// 获取当前日期
|
||||
var presentD = now.getDate();
|
||||
if (interval == 3) {
|
||||
if (month == 12) {
|
||||
year = year + 1;
|
||||
// 年份进位后,大于当前的年份,是不科学的
|
||||
if (presentY < year) {
|
||||
startTime = presentY + "-12-01";
|
||||
if (presentD < 10) {
|
||||
endTime = presentY + "-12" + "-0" + presentD;
|
||||
} else {
|
||||
endTime = presentY + "-12" + "-" + presentD;
|
||||
}
|
||||
// 年份进位后,等于当前的年份
|
||||
} else if (presentY == year) {
|
||||
startTime = year + "-01-01";
|
||||
if (presentM > 1) {
|
||||
endTime = year + "-01-31";
|
||||
} else {
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-01" + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-01" + "-" + presentD;
|
||||
}
|
||||
}
|
||||
// 年份进位后,依旧小于当前的年份
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-01-31";
|
||||
}
|
||||
} else {
|
||||
month = month + 1;
|
||||
// 年份等于当前年份
|
||||
if (presentY == year) {
|
||||
// 月份超过当前月份,是不科学的
|
||||
if (month >= presentM) {
|
||||
if (presentM < 10) {
|
||||
startTime = year + "-0" + presentM + "-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-" + presentM + "-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
// 年份小于当前的年份
|
||||
} else {
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (interval == 2) {
|
||||
// 前进需要年份进位
|
||||
if (month == 10) {
|
||||
year = year + 1;
|
||||
// 年份进位后大于当前年份是不科学的
|
||||
if (year > presentY) {
|
||||
startTime = presentY + "-10-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (year == presentY) {
|
||||
startTime = year + "-01-01";
|
||||
// 当前月份大约3月份
|
||||
if (presentM > 3) {
|
||||
endTime = year + "-03-31";
|
||||
} else {
|
||||
// 当前月份也在第一季度里
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-03-31";
|
||||
}
|
||||
} else {
|
||||
month = month + 3;
|
||||
// 季度进位后,超过当前月份是不科学的
|
||||
if (year == presentY) {
|
||||
if (month >= presentM) {
|
||||
// 当季度进位后大于当前月,以当前月的时间显示季度
|
||||
if (presentM > 0 && presentM < 4) {
|
||||
// 第一季度
|
||||
startTime = year + "-01-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (presentM > 3 && presentM < 7) {
|
||||
// 第二季度
|
||||
startTime = year + "-04-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (presentM > 6 && presentM < 10) {
|
||||
// 第三季度
|
||||
startTime = year + "-07-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
// 第四季度
|
||||
startTime = year + "-10-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month == 10) {
|
||||
startTime = year + "-" + month + "-01";
|
||||
} else {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
}
|
||||
month = month + 2;
|
||||
if (month >= presentM) {
|
||||
endTime = this.getEndTime();
|
||||
} else {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month == 10) {
|
||||
startTime = year + "-" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (interval == 5) {
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
var start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() + 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
|
||||
if (parseInt((end - new Date()) / 1000 / 60) > 24) {
|
||||
//相差小时大于24小时,即超过当天,置为当天日期
|
||||
endTime = this.formatTime(new Date());
|
||||
}
|
||||
} else {
|
||||
year = year + 1;
|
||||
// 年份进位后大于当前年份,是不科学的
|
||||
if (year >= presentY) {
|
||||
startTime = presentY + "-01-01";
|
||||
if (presentM < 10) {
|
||||
if (presentD < 10) {
|
||||
endTime = presentY + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = presentY + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
endTime = presentY + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
}
|
||||
}
|
||||
|
||||
this.timeValue = [startTime, endTime];
|
||||
|
||||
// 判断向后键的状态
|
||||
var temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//当前按钮点击事件
|
||||
nowTime() {
|
||||
let interval = this.intervald;
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(interval, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
// 判断向后键的状态
|
||||
let temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//判断向后按钮
|
||||
timeStatus(temp, endTime) {
|
||||
// 判断next按钮的状态
|
||||
if (temp == endTime) {
|
||||
this.preDisabled = true;
|
||||
} else {
|
||||
this.preDisabled = false;
|
||||
}
|
||||
},
|
||||
// 获取月份的天数
|
||||
getDays(year, month) {
|
||||
let max = new Date(year, month, 0).getDate();
|
||||
return max;
|
||||
},
|
||||
querfromdata() {
|
||||
//type用于区分是按钮触发还是钩子函数触发 1按钮触发 underfind 钩子触发
|
||||
if (!this.type) {
|
||||
var data = this.timeValue;
|
||||
var timehbValue = "";
|
||||
this.$emit("querfromdata", data, timehbValue, this.intervald);
|
||||
} else if (this.type == 2) {
|
||||
this.huangbiyear();
|
||||
}
|
||||
},
|
||||
goto() {
|
||||
this.$router.push({
|
||||
path: "/harmonic-boot/algorithm",
|
||||
query: { name: this.name, path: this.path },
|
||||
});
|
||||
},
|
||||
//环比
|
||||
huangbiyear() {
|
||||
this.huanbibiFalg = true;
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-12-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (month <= 10) {
|
||||
month = month - 1;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
month = month - 1;
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-10-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
// 还是本年
|
||||
month = month - 3;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timehbValue = [startTime, endTime];
|
||||
var data = this.timeValue;
|
||||
var timehbValue = this.timehbValue;
|
||||
// debugger
|
||||
this.$emit("querfromdata", data, timehbValue, interval);
|
||||
// 判断向后键的状态
|
||||
// var temp = this.getEndTime();
|
||||
//this.timeStatus(temp, endTime);
|
||||
},
|
||||
//同比
|
||||
tongbiyear() {
|
||||
this.tonbiFalg = true;
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
year = year - 1;
|
||||
if (month <= 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year - 1, month, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
year = year - 1;
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
}
|
||||
month = month + 2;
|
||||
if (month <= 10) {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timehbValue = [startTime, endTime];
|
||||
var data = this.timeValue;
|
||||
var timehbValue = this.timehbValue;
|
||||
this.$emit("querfromdata", data, timehbValue, interval);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.spanColor {
|
||||
color: $themeColor;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,847 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 新增第一步 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="问题新增"
|
||||
:visible.sync="add"
|
||||
width="50%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第一步 基本信息填报
|
||||
</el-divider>
|
||||
<el-form :inline="true" ref="ruleForm" :rules="rules" :model="addData">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input v-model="addData.orgName" clearable placeholder="请填写" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:" prop="problemSources">
|
||||
<el-select v-model="addData.problemSources" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in problemData"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:" prop="problemName">
|
||||
<el-input v-model="addData.problemName" clearable placeholder="请填写"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="nextStep">下一步</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(在线监测超标问题新增) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="在线监测超标问题新增"
|
||||
:visible.sync="onlineAdd"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第二步 选择问题测点(请选择需要生成问题的告警监测点)
|
||||
</el-divider>
|
||||
<el-form :model="onlineAdddata" :inline="true" class="form">
|
||||
<el-form-item label="告警时间:">
|
||||
<Month :interval="3" ref="interval" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="searchOnLine">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-refresh" @click="resetFn1"
|
||||
>重置</el-button
|
||||
> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
stripe
|
||||
:data="onlineAddData"
|
||||
:height="height1"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading1"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="ChangeOnline"
|
||||
:row-class-name="rowClassName"
|
||||
>
|
||||
<el-table-column type="selection" width="35"></el-table-column>
|
||||
<el-table-column prop="number" label="序号" width="100" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="measurementPointName"
|
||||
label="监测点名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="alarmType"
|
||||
label="告警类型"
|
||||
:formatter="formatter"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="alarmInfo" label="告警描述" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="alarmLastTime"
|
||||
label="告警持续时间(s)"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="previouStep">上一步</el-button>
|
||||
<el-button type="primary" class="ml20" @click="OnlineMonitoring">生成问题</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(普测超标问题新增) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="普测超标问题新增"
|
||||
:visible.sync="ordinaryAdd"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第二步 选择普测计划及问题类型(请查找需要生成问题的普测计划并选择一条需要生成问题的测试线路)
|
||||
</el-divider>
|
||||
<el-form :model="ordinaryA" :inline="true" class="form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick1" ref="area1"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="普测结果上传时间:">
|
||||
<el-date-picker
|
||||
v-model="ordinaryA.planStartTime"
|
||||
type="month"
|
||||
format="yyyy 年 MM 月"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择月"
|
||||
@change="queryPlanName"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="普测计划名称:">
|
||||
<el-select v-model="ordinaryA.planName" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in planNameList"
|
||||
:key="item.planName"
|
||||
:label="item.planName"
|
||||
:value="item.planName"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="searchFnExcessive">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-refresh" @click="resetFn2"
|
||||
>重置</el-button
|
||||
> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
stripe
|
||||
:data="ordinaryAddData"
|
||||
:height="height2"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading2"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChangeGeneral"
|
||||
:row-class-name="rowClassName"
|
||||
>
|
||||
<el-table-column type="selection" width="35"></el-table-column>
|
||||
<el-table-column prop="number" label="序号" width="100" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="voltageLevel"
|
||||
label="变电站电压等级(kV)"
|
||||
:formatter="formFilter"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="subName" label="变电站名称" :show-overflow-tooltip="true"></el-table-column>
|
||||
<!-- <el-table-column
|
||||
prop="busbarName"
|
||||
label="母线名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column> -->
|
||||
</el-table>
|
||||
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第三步 选择问题指标
|
||||
</el-divider>
|
||||
<el-form :model="ordinaryAdddata" :rules="rules" ref="GeneralSurvey" :inline="true" class="form">
|
||||
<el-form-item label="稳态指标:" prop="steadyState">
|
||||
<el-checkbox-group v-model="ordinaryAdddata.steadyState">
|
||||
<el-checkbox v-for="(item, ind) in steadyStateList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" prop="transientIndicators">
|
||||
<el-checkbox-group v-model="ordinaryAdddata.transientIndicators">
|
||||
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="previouStep">上一步</el-button>
|
||||
<el-button type="primary" class="ml20" @click="GeneralSurvey">生成问题</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(用户投诉问题新增) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="用户投诉问题新增"
|
||||
:visible.sync="userAdd"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第二步 选择投诉用户(请精确查找用户户号并选中投诉用户)
|
||||
</el-divider>
|
||||
<el-form :model="userA" :inline="true" class="">
|
||||
<el-form-item label="用户类型:">
|
||||
<el-select v-model="userA.userType" placeholder="请选择用户类型">
|
||||
<el-option
|
||||
v-for="item in userTypeData"
|
||||
:key="item.code"
|
||||
:label="item.label"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="用户编号:">
|
||||
<el-input v-model="userA.id" clearable placeholder="请输入用户编号"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="searchFnComplain">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="el-icon-refresh" @click="resetFn3"
|
||||
>重置</el-button
|
||||
> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table
|
||||
stripe
|
||||
:data="userAddDataList"
|
||||
height="180px"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading3"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChangeUser"
|
||||
:row-class-name="rowClassName"
|
||||
>
|
||||
<el-table-column type="selection" width="35"></el-table-column>
|
||||
<el-table-column type="index" label="序号" width="100" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="id" label="用户编号" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="name" label="用户名称" :show-overflow-tooltip="true"></el-table-column>
|
||||
<!-- 用电用户 -->
|
||||
<el-table-column
|
||||
v-if="showUserType"
|
||||
prop="electricityType"
|
||||
label="用电类别/电源类别"
|
||||
:formatter="formatter1"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<!-- 发电用户 -->
|
||||
<el-table-column
|
||||
v-else
|
||||
prop="powerCategory"
|
||||
label="用电类别/电源类别"
|
||||
:formatter="formatter2"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第三步 填写投诉详情
|
||||
</el-divider>
|
||||
<el-form :model="userAdddata" ref="userAdddata" :rules="rules" :inline="true" class="box">
|
||||
<el-form-item label="投诉内容:" style="margin-top: 10px" prop="complaintContent">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
placeholder="请输入内容"
|
||||
v-model="userAdddata.complaintContent"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="投诉时间:" style="margin-top: 10px" prop="complaintTime">
|
||||
<el-date-picker
|
||||
v-model="userAdddata.complaintTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第四步 选择问题指标
|
||||
</el-divider>
|
||||
|
||||
<el-form-item label="稳态指标:" prop="steadyState">
|
||||
<el-checkbox-group v-model="userAdddata.steadyState">
|
||||
<el-checkbox v-for="(item, ind) in steadyStateList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" prop="transientIndicators">
|
||||
<el-checkbox-group v-model="userAdddata.transientIndicators">
|
||||
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="previouStep">上一步</el-button>
|
||||
<el-button type="primary" class="ml20" @click="userAddProblem">生成问题</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(运维异常问题新增) -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="运维异常问题新增"
|
||||
:visible.sync="operationAdd"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第二步 选择普测计划及问题类型(请查找需要生成问题的普测计划并选择一条需要生成问题的测试线路)
|
||||
</el-divider>
|
||||
<el-form :model="operationAdddata" :inline="true" ref="operationAdd" :rules="rules" class="form">
|
||||
<el-form-item label="异常设备名称:" prop="abnormalDevName">
|
||||
<el-input
|
||||
v-model="operationAdddata.abnormalDevName"
|
||||
clearable
|
||||
placeholder="请填写异常设备名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="发现异常时间:" prop="abnormalDevTime">
|
||||
<el-date-picker
|
||||
v-model="operationAdddata.abnormalDevTime"
|
||||
type="date"
|
||||
placeholder="请选择发现异常时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-form :inline="true" :model="operationAdddata" ref="operationAdd1" :rules="rules" class="box">
|
||||
<el-form-item label="设备异常描述:" style="margin-top: 10px" prop="eventDescription">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请填写设备异常描述"
|
||||
v-model="operationAdddata.eventDescription"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
第三步 选择问题指标
|
||||
</el-divider>
|
||||
<el-form :inline="true" :model="operationAdddata" ref="operationAdd2" :rules="rules" class="form">
|
||||
<el-form-item label="稳态指标:" prop="steadyState">
|
||||
<el-checkbox-group v-model="operationAdddata.steadyState">
|
||||
<el-checkbox v-for="(item, ind) in steadyStateList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="暂态指标:" prop="transientIndicators">
|
||||
<el-checkbox-group v-model="operationAdddata.transientIndicators">
|
||||
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="previouStep">上一步</el-button>
|
||||
<el-button type="primary" class="ml20" @click="generateAbnormal">生成问题</el-button>
|
||||
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import Month from './Month'
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import {
|
||||
addAbnormalIssues,
|
||||
getordinaryAddData,
|
||||
getAllAlarmDetailList,
|
||||
addExcessiveIssues,
|
||||
getPowerUtilizationUserList,
|
||||
getGenerateElectricityUserList,
|
||||
addComplaintIssues,
|
||||
addGeneralSurveyIssues,
|
||||
querySurveyPlanOnQuestion,
|
||||
querySurveyPlanName
|
||||
} from '@/api/Process-supervision/electricitymanagement/electricitymanagement'
|
||||
export default {
|
||||
components: { Area, Month },
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
add: false,
|
||||
addData: {
|
||||
orgName: '',
|
||||
problemSources: '',
|
||||
problemName: '',
|
||||
orgNo: ''
|
||||
},
|
||||
height1: null,
|
||||
height2: null,
|
||||
height3: null,
|
||||
isLoading1: false,
|
||||
isLoading2: false,
|
||||
isLoading3: false,
|
||||
userAddDataList: [],
|
||||
userA: {
|
||||
userType: 'Elec_User',
|
||||
id: ''
|
||||
},
|
||||
ordinaryA: {
|
||||
orgNo: '',
|
||||
planName: '',
|
||||
planStartTime: ''
|
||||
},
|
||||
UserList: [],
|
||||
GeneralSurveyList: [],
|
||||
rules: {
|
||||
problemName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }],
|
||||
complaintContent: [{ required: true, message: '请输入投诉内容', trigger: 'blur' }],
|
||||
complaintTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
|
||||
problemSources: [{ required: true, message: '情选择问题来源', trigger: 'change' }],
|
||||
abnormalDevTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
|
||||
transientIndicators: [{ required: true, message: '请选择暂态指标', trigger: 'change' }],
|
||||
steadyState: [{ required: true, message: '请选择稳态指标', trigger: 'change' }],
|
||||
eventDescription: [{ required: true, message: '请输入设备异常描述', trigger: 'blur' }],
|
||||
abnormalDevName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }]
|
||||
},
|
||||
userAdd: false,
|
||||
userAdddata: {
|
||||
complaintContent: '',
|
||||
complaintTime: '',
|
||||
steadyState: [],
|
||||
transientIndicators: []
|
||||
},
|
||||
showUserType: false,
|
||||
userAddData: [],
|
||||
//用户类型
|
||||
userTypeData: [],
|
||||
//问题来源
|
||||
problemData: [],
|
||||
onlineAddData: [],
|
||||
onlineAdd: false,
|
||||
ordinaryAdd: false,
|
||||
onlineAdddata: {
|
||||
alarmTime: ''
|
||||
},
|
||||
ordinaryAdddata: {
|
||||
uploadTime: '',
|
||||
name: '',
|
||||
steadyState: [],
|
||||
transientIndicators: []
|
||||
},
|
||||
ordinaryAddData: [],
|
||||
//普测计划名称
|
||||
planNameList: [],
|
||||
|
||||
operationAdd: false,
|
||||
operationAdddata: {
|
||||
abnormalDevName: '',
|
||||
eventDescription: '',
|
||||
abnormalDevTime: '',
|
||||
steadyState: [],
|
||||
transientIndicators: []
|
||||
},
|
||||
|
||||
steadyStateList: [], // 稳态指标
|
||||
transientIndicatorsList: [], //暂态指标
|
||||
OnlineList: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.Dictionaries()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height1 = window.sessionStorage.getItem('appheight') - 440
|
||||
this.height2 = window.sessionStorage.getItem('appheight') - 570
|
||||
this.height3 = window.sessionStorage.getItem('appheight') - 760
|
||||
},
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
this.addData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.addData.orgName = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
|
||||
// /问题来源
|
||||
this.problemData = dicData('Problem_Sources', ['Load_Type'])
|
||||
// 稳态指标:
|
||||
this.steadyStateList = dicData('Steady_Indicator', ['Load_Type'])
|
||||
// 暂态指标:
|
||||
this.transientIndicatorsList = dicData('Transient_Indicators', ['Load_Type'])
|
||||
// 用户类型::
|
||||
this.userTypeData = dicData('User_Category', ['Load_Type'])
|
||||
},
|
||||
|
||||
// 字典处理
|
||||
formatter(row, column) {
|
||||
let title = ''
|
||||
dicData('alarm_Type', ['Load_Type']).forEach(item => {
|
||||
if (item.id == row.alarmType) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
formatter1(row, column) {
|
||||
let title = ''
|
||||
dicData('Ele_Class', ['Load_Type']).forEach(item => {
|
||||
if (item.id == row.electricityType) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
formatter2(row, column) {
|
||||
let title = ''
|
||||
dicData('Power_Category', ['Load_Type']).forEach(item => {
|
||||
if (item.id == row.powerCategory) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
},
|
||||
|
||||
//下一步
|
||||
nextStep() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.addData.problemSources == 'Online') {
|
||||
this.add = false
|
||||
|
||||
this.onlineAdd = true
|
||||
setTimeout(() => {
|
||||
this.searchOnLine()
|
||||
}, 0)
|
||||
} else if (this.addData.problemSources == 'General') {
|
||||
this.ordinaryA.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.ordinaryA.planStartTime = this.getNowTime()
|
||||
|
||||
this.add = false
|
||||
this.ordinaryAdd = true
|
||||
|
||||
this.queryPlanName()
|
||||
|
||||
setTimeout(() => {
|
||||
this.searchFnExcessive()
|
||||
}, 0)
|
||||
} else if (this.addData.problemSources == 'User_Complaints') {
|
||||
this.add = false
|
||||
this.userAdd = true
|
||||
this.searchFnComplain()
|
||||
} else if (this.addData.problemSources == 'Dev_Exception') {
|
||||
this.add = false
|
||||
this.operationAdd = true
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//获取当前时间
|
||||
getNowTime() {
|
||||
var date = new Date()
|
||||
//年 getFullYear():四位数字返回年份
|
||||
var year = date.getFullYear() //getFullYear()代替getYear()
|
||||
//月 getMonth():0 ~ 11
|
||||
var month = date.getMonth() + 1
|
||||
|
||||
var time = year + '-' + this.addZero(month) + '-01'
|
||||
return time
|
||||
},
|
||||
//小于10的拼接上0字符串
|
||||
addZero(s) {
|
||||
return s < 10 ? '0' + s : s
|
||||
},
|
||||
queryPlanName() {
|
||||
// this.ordinaryA.orgNo
|
||||
// this.ordinaryA.planStartTime
|
||||
querySurveyPlanName({
|
||||
orgNo: this.ordinaryA.orgNo,
|
||||
planStartTime: this.ordinaryA.planStartTime
|
||||
}).then(res => {
|
||||
this.planNameList = res.data
|
||||
// if (res.data.length == 0) {
|
||||
// this.ordinaryA.planName = "";
|
||||
// this.ordinaryAddData = [];
|
||||
// }else{
|
||||
// this.ordinaryA.planName = this.planNameList[0].planName;
|
||||
// this.searchFnExcessive();
|
||||
// }
|
||||
})
|
||||
},
|
||||
//上一步
|
||||
previouStep() {
|
||||
this.onlineAdd = false
|
||||
this.ordinaryAdd = false
|
||||
this.userAdd = false
|
||||
this.operationAdd = false
|
||||
this.add = true
|
||||
},
|
||||
//在线新增查询 在线监测告警
|
||||
searchOnLine() {
|
||||
this.isLoading1 = true
|
||||
getAllAlarmDetailList({
|
||||
startTime: this.$refs.interval.timeValue[0],
|
||||
endTime: this.$refs.interval.timeValue[1]
|
||||
}).then(res => {
|
||||
this.isLoading1 = false
|
||||
this.onlineAddData = res.data
|
||||
})
|
||||
},
|
||||
//普测新增查询
|
||||
searchFnExcessive() {
|
||||
this.isLoading2 = true
|
||||
querySurveyPlanOnQuestion(this.ordinaryA).then(res => {
|
||||
this.isLoading2 = false
|
||||
this.ordinaryAddData = res.data
|
||||
})
|
||||
},
|
||||
// 用户投诉
|
||||
searchFnComplain() {
|
||||
this.isLoading3 = true
|
||||
if (this.userA.userType == 'Elec_User') {
|
||||
// 发电用户
|
||||
this.showUserType = false
|
||||
getGenerateElectricityUserList({ id: this.userA.id }).then(res => {
|
||||
this.userAddDataList = res.data
|
||||
})
|
||||
} else {
|
||||
this.showUserType = true
|
||||
// 用电用户
|
||||
getPowerUtilizationUserList({ id: this.userA.id }).then(res => {
|
||||
this.userAddDataList = res.data
|
||||
})
|
||||
}
|
||||
this.isLoading3 = false
|
||||
},
|
||||
|
||||
// resetFn1() {
|
||||
// this.onlineAdddata.alarmTime = "";
|
||||
// },
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
},
|
||||
formFilter(row, column) {
|
||||
if (column.property == 'voltageLevel') {
|
||||
let title = ''
|
||||
dicData('Dev_Voltage', []).forEach(item => {
|
||||
if (item.value == row.voltageLevel) {
|
||||
title = item.label
|
||||
}
|
||||
})
|
||||
return title
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
},
|
||||
//在线监测超标问题新增
|
||||
ChangeOnline(val) {
|
||||
this.OnlineList = val
|
||||
},
|
||||
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
// 普测计划及问题类型
|
||||
handleSelectionChangeGeneral(val) {
|
||||
this.GeneralSurveyList = val
|
||||
},
|
||||
// 用户投诉
|
||||
handleSelectionChangeUser(val) {
|
||||
this.UserList = val
|
||||
},
|
||||
handleNodeClick1(data) {
|
||||
this.ordinaryA.orgNo = data.id
|
||||
this.queryPlanName()
|
||||
},
|
||||
|
||||
// 关闭对话框
|
||||
handleClose() {
|
||||
this.$emit('handleClose')
|
||||
},
|
||||
//在线监测超标问题新增
|
||||
OnlineMonitoring() {
|
||||
if (this.OnlineList.length == 1) {
|
||||
let list = {
|
||||
warnReason: this.OnlineList[0].alarmInfo,
|
||||
warnLastTime: this.OnlineList[0].alarmLastTime,
|
||||
warnTarget: this.OnlineList[0].alarmType,
|
||||
measurementPointName: this.OnlineList[0].measurementPointName,
|
||||
measurementPointId: this.OnlineList[0].measurementPointId
|
||||
}
|
||||
addExcessiveIssues({
|
||||
...list,
|
||||
...this.addData
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功!',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
this.$emit('handleClose')
|
||||
this.$emit('onSubmit')
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '问题测点,请选择1条数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 生成填报运维监控异常问题
|
||||
generateAbnormal() {
|
||||
this.$refs['operationAdd'].validate(valid => {
|
||||
if (valid) {
|
||||
this.$refs['operationAdd1'].validate(valid => {
|
||||
if (valid) {
|
||||
this.$refs['operationAdd2'].validate(valid => {
|
||||
if (valid) {
|
||||
// this.operationAdddata.abnormalTarget = [
|
||||
// ...this.operationAdddata.steadyState,
|
||||
// ...this.operationAdddata.transientIndicators,
|
||||
// ];
|
||||
addAbnormalIssues({
|
||||
...this.operationAdddata,
|
||||
...this.addData
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.$emit('handleClose')
|
||||
this.$emit('onSubmit')
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 普测计划及问题类型
|
||||
GeneralSurvey() {
|
||||
if (this.GeneralSurveyList.length == 1) {
|
||||
this.$refs.GeneralSurvey.validate(valid => {
|
||||
if (valid) {
|
||||
this.ordinaryAdddata.substationId = this.GeneralSurveyList[0].subId
|
||||
this.ordinaryAdddata.busbarId = this.GeneralSurveyList[0].busbarId
|
||||
this.ordinaryAdddata.measurementPointId = this.GeneralSurveyList[0].measurementPointId
|
||||
this.ordinaryAdddata.planName = this.GeneralSurveyList[0].planName
|
||||
addGeneralSurveyIssues({
|
||||
...this.addData,
|
||||
...this.ordinaryAdddata
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.$emit('handleClose')
|
||||
this.$emit('onSubmit')
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '普测计划及问题类型,请选择1条数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
//
|
||||
},
|
||||
// 填报用户投诉问题
|
||||
userAddProblem() {
|
||||
if (this.UserList.length == 1) {
|
||||
this.$refs.userAdddata.validate(valid => {
|
||||
if (valid) {
|
||||
this.userAdddata.userName = this.UserList[0].name
|
||||
this.userAdddata.userNo = this.UserList[0].id
|
||||
this.userAdddata.userType = this.userA.userType
|
||||
this.userAdddata.electricityType =
|
||||
this.userA.userType == 'Elec_User'
|
||||
? this.UserList[0].powerCategory
|
||||
: this.UserList[0].electricityType
|
||||
|
||||
addComplaintIssues({ ...this.addData, ...this.userAdddata }).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.$emit('handleClose')
|
||||
this.$emit('onSubmit')
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '投诉用户,请选择1条数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
//
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../../styles/comStyle.less');
|
||||
</style>
|
||||
@@ -0,0 +1,275 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 计划整改 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="填报"
|
||||
:visible.sync="rectificationMeasures"
|
||||
width="70%"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="addData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="addData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="addData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="addData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="addData.powerQualityProblemNo"
|
||||
disabled
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>填报流程</el-divider
|
||||
>
|
||||
<el-row type="flex" justify="space-between">
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="1"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form
|
||||
:model="rectificationMeasuresData"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
class="form"
|
||||
>
|
||||
<el-form-item
|
||||
label="电网侧整改治理措施:"
|
||||
prop="reportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="rectificationMeasuresData.reportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item
|
||||
label="用户侧整改治理措施:"
|
||||
prop="userReportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox-group
|
||||
v-model="rectificationMeasuresData.userReportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
<el-form-item
|
||||
class="item"
|
||||
label="计划整改措施报告:"
|
||||
prop="fileNameJhzg"
|
||||
>
|
||||
<File ref="File" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="Submit"
|
||||
>提交审核</el-button
|
||||
>
|
||||
<el-button type="primary" class="ml20" @click="handleClose"
|
||||
>取消</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { correctiveAction } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
import File from "./File.vue";
|
||||
export default {
|
||||
components: { File },
|
||||
props: {
|
||||
addData: {
|
||||
type: [Object, Array],
|
||||
default: {
|
||||
orgName: "",
|
||||
problemSources: "",
|
||||
problemName: "",
|
||||
powerQualityProblemNo: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
rectificationMeasures: false,
|
||||
rectificationMeasuresData: {
|
||||
reportProcessContentJhzg: [],
|
||||
userReportProcessContentJhzg: [],
|
||||
fileNameJhzg: "", //计划整改文件名称
|
||||
filePathJhzg: "", // 计划整改文件路径
|
||||
},
|
||||
OnlineList: [],
|
||||
rules: {
|
||||
reportProcessContentJhzg: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
userReportProcessContentJhzg: [
|
||||
{ required: true, message: "请选择", trigger: "change" },
|
||||
],
|
||||
fileNameJhzg: [
|
||||
{ required: true, message: "请上传文件", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
List: [],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
},
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 电网侧原因
|
||||
this.List = dicData("Plan_Take", ["Load_Type"]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
handleClose() {
|
||||
this.$emit("handleClose");
|
||||
},
|
||||
//提交
|
||||
Submit() {
|
||||
this.rectificationMeasuresData.fileNameJhzg =
|
||||
this.$refs.File.fileList.minFileName;
|
||||
this.rectificationMeasuresData.filePathJhzg =
|
||||
this.$refs.File.fileList.minFileUrl;
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.rectificationMeasuresData.powerQualityProblemNo =
|
||||
this.addData.powerQualityProblemNo;
|
||||
correctiveAction(this.rectificationMeasuresData).then((res) => {
|
||||
if (res.code == "A0000") {
|
||||
this.$message({
|
||||
message: "填报成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.$emit("handleClose");
|
||||
this.$emit("onSubmit");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,629 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>问题基本信息</el-divider
|
||||
>
|
||||
<el-form :inline="true" class="form">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input
|
||||
v-model="addData.orgName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题来源:">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="addData.problemSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in OnlineList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- <el-input
|
||||
v-model="addData.problemSources"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题名称:">
|
||||
<el-input
|
||||
v-model="addData.problemName"
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="问题编号:">
|
||||
<el-input
|
||||
v-model="addData.powerQualityProblemNo"
|
||||
disabled
|
||||
clearable
|
||||
placeholder="请填写"
|
||||
>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-divider
|
||||
content-position="left"
|
||||
style="font-size: 18px; font-weight: bolder"
|
||||
>填报流程</el-divider
|
||||
>
|
||||
<!--原因分析 -->
|
||||
<el-row
|
||||
v-if="addData.reportProcess == 'Cause_Analysis'"
|
||||
type="flex"
|
||||
justify="space-between"
|
||||
>
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="0"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form :model="onlineDetailsData" ref="form" class="form">
|
||||
<el-form-item label="电网侧原因:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.reportProcessContentYyfx"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="item in reportProcessContentYyfxList"
|
||||
:key="item.code"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="用户侧原因:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.userReportProcessContentYyfx"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="item in userReportProcessContentYyfxList"
|
||||
:key="item.code"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-row
|
||||
v-if="
|
||||
addData.problemSources == '用户投诉' ||
|
||||
addData.problemSources == '设备异常'
|
||||
"
|
||||
>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="电网侧受影响设备:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.powerGridAffectDev"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in powerGridAffectDevList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="用户侧受影响设备:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.userAffectDev"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in userAffectDevList"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="事件描述:">
|
||||
<el-input
|
||||
disabled
|
||||
style="width: 90%"
|
||||
type="textarea"
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="onlineDetailsData.eventDescriptionYyfx"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="item"
|
||||
label="原因分析报告:"
|
||||
style="margin-top: 10px"
|
||||
>
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="onlineDetailsData.fileNameYyfx"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<a :href="onlineDetailsData.filePathYyfx"
|
||||
><el-button
|
||||
size="mini"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
>下载</el-button
|
||||
></a
|
||||
>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--计划整改措施 -->
|
||||
<el-row
|
||||
v-if="addData.reportProcess == 'Plan_Measures'"
|
||||
type="flex"
|
||||
justify="space-between"
|
||||
>
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="1"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form :model="onlineDetailsData" ref="form" class="form">
|
||||
<el-form-item label="电网侧整改治理措施:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.reportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="用户侧整改治理措施:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.userReportProcessContentJhzg"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
<el-form-item class="item" label="计划整改措施报告:">
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="onlineDetailsData.fileNameJhzg"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<a :href="onlineDetailsData.filePathJhzg">
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
>下载</el-button
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 实际采取措施 -->
|
||||
<el-row
|
||||
v-if="addData.reportProcess == 'Actual_Measures'"
|
||||
type="flex"
|
||||
justify="space-between"
|
||||
>
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="2"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form :model="onlineDetailsData" ref="form" class="form">
|
||||
<el-form-item label="电网侧实际采取措施:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.reportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item label="用户侧实际采取措施:">
|
||||
<el-checkbox-group
|
||||
disabled
|
||||
v-model="onlineDetailsData.userReportProcessContentSjcq"
|
||||
>
|
||||
<el-checkbox
|
||||
v-for="(item, ind) in List"
|
||||
:key="ind"
|
||||
:label="item.code"
|
||||
>{{ item.name }}</el-checkbox
|
||||
>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item class="item" label="实际采取措施报告:">
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="onlineDetailsData.fileNameSjcq"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<a :href="onlineDetailsData.filePathSjcq">
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
>下载</el-button
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 成效分析 -->
|
||||
<el-row v-if="addData.reportProcess == 'Insights'" :gutter="20">
|
||||
<el-col :span="4">
|
||||
<el-steps
|
||||
style="height: 250px"
|
||||
direction="vertical"
|
||||
:active="3"
|
||||
finish-status="success"
|
||||
>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">原因分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">计划整改措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:gray"
|
||||
>
|
||||
<p style="color: white">实际采取措施</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
<el-step>
|
||||
<el-card
|
||||
slot="description"
|
||||
style="width: 160px"
|
||||
body-style="background:#037272bc"
|
||||
>
|
||||
<p style="color: white">成效分析</p>
|
||||
</el-card>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form :model="onlineDetailsData" ref="form" class="box1">
|
||||
<el-form-item label="成效分析概述:" style="margin-top: 10px">
|
||||
<el-input
|
||||
type="textarea"
|
||||
disabled
|
||||
:rows="1"
|
||||
placeholder="请输入内容"
|
||||
v-model="onlineDetailsData.descriptionZlxg"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form-item class="item" label="成效分析报告:">
|
||||
<div style="display: flex">
|
||||
<el-input
|
||||
style="width: 240px"
|
||||
v-model="onlineDetailsData.fileNameZlxg"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<a :href="onlineDetailsData.filePathZlxg">
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-left: 10px"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
|
||||
>下载</el-button
|
||||
>
|
||||
</a>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { dicData } from "@/assets/commjs/dictypeData";
|
||||
import { getfile } from "@/api/Process-supervision/electricitymanagement/electricitymanagement";
|
||||
export default {
|
||||
components: {},
|
||||
|
||||
props: {
|
||||
addData: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
onlineDetailsData: {
|
||||
type: [Object, Array],
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
OnlineList: [],
|
||||
reportProcessContentYyfxList: [],
|
||||
userReportProcessContentYyfxList: [],
|
||||
powerGridAffectDevList: [],
|
||||
userAffectDevList: [],
|
||||
List: [],
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.Dictionaries();
|
||||
},
|
||||
methods: {
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
// 电网侧原因
|
||||
this.reportProcessContentYyfxList = dicData("Grid-side_Reasons", [
|
||||
"Load_Type",
|
||||
]);
|
||||
// 用户侧原因
|
||||
this.userReportProcessContentYyfxList = dicData("User_Reasons", [
|
||||
"Load_Type",
|
||||
]);
|
||||
// 电网侧受影响设备
|
||||
this.powerGridAffectDevList = dicData("Grid_Unit", ["Load_Type"]);
|
||||
// 用户侧受影响设备
|
||||
this.userAffectDevList = dicData("Customer_Unit", ["Load_Type"]);
|
||||
// 电网侧原因
|
||||
this.List = dicData("Actual_Measures", ["Load_Type"]);
|
||||
this.OnlineList = dicData("Problem_Sources", []);
|
||||
},
|
||||
|
||||
//下载文件
|
||||
download(url, filename) {
|
||||
getBlob(url, function (blob) {
|
||||
saveAs(blob, filename);
|
||||
});
|
||||
|
||||
function getBlob(url, cb) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("GET", url, true);
|
||||
xhr.responseType = "blob";
|
||||
xhr.onload = function () {
|
||||
if (xhr.status === 200) {
|
||||
cb(xhr.response);
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
function saveAs(blob, filename) {
|
||||
if (window.navigator.msSaveOrOpenBlob) {
|
||||
navigator.msSaveBlob(blob, filename);
|
||||
} else {
|
||||
var link = document.createElement("a");
|
||||
var body = document.querySelector("body");
|
||||
link.href = window.URL.createObjectURL(blob);
|
||||
link.download = filename;
|
||||
link.style.display = "none";
|
||||
body.appendChild(link);
|
||||
link.click();
|
||||
body.removeChild(link);
|
||||
window.URL.revokeObjectURL(link.href);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-divider--horizontal {
|
||||
display: block;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
margin: 22px 0;
|
||||
}
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .el-card__body,
|
||||
.el-main {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,799 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline">
|
||||
<el-form-item label="时间间隔:">
|
||||
<el-select
|
||||
style="width: 90px;"
|
||||
v-model="intervald"
|
||||
@change="interchange"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in timeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-date-picker
|
||||
style="width: 230px"
|
||||
:disabled="disabled"
|
||||
:readonly="pickDisabled"
|
||||
:clearable="false"
|
||||
v-model="timeValue"
|
||||
:picker-options="pickerOptions"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
align="right"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="buttonShow">
|
||||
<el-button
|
||||
:disabled="backDisabled"
|
||||
type="primary"
|
||||
icon="el-icon-d-arrow-left"
|
||||
@click="preClick"
|
||||
|
||||
></el-button>
|
||||
<el-button @click="nowTime" type="primary" icon="el-icon-video-pause"
|
||||
>当前</el-button
|
||||
>
|
||||
<el-button
|
||||
:disabled="preDisabled"
|
||||
type="primary"
|
||||
icon="el-icon-d-arrow-right"
|
||||
@click="back"
|
||||
|
||||
></el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button v-show="false" style="margin-bottom: 0.5%" type="primary"
|
||||
>导出文件</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
|
||||
|
||||
<!-- <el-button
|
||||
@click="querfromdata"
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
style="margin-left: 10px"
|
||||
>查询</el-button
|
||||
> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "index4",
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
path: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
tablename: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
},
|
||||
interval: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
},
|
||||
type: {
|
||||
type: Number,
|
||||
default: undefined,
|
||||
},
|
||||
falg: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
query: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
thb: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
intervald(val) {
|
||||
if (val != 5) {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.pickDisabled = false;
|
||||
this.buttonShow = true;
|
||||
} else {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.buttonShow = false;
|
||||
this.pickDisabled = false;
|
||||
}
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
disabled: true,
|
||||
buttonShow: true, //向前向后按钮显示隐藏控制按钮
|
||||
pickDisabled: false, //时间组件只读控制se,
|
||||
falg1: true,
|
||||
timeOptions: [
|
||||
{ label: "年份", value: 1 },
|
||||
{ label: "季度", value: 2 },
|
||||
{ label: "月份", value: 3 },
|
||||
// { label: "周", value: 4 },
|
||||
// // { label: "自定义", value: 5 },
|
||||
],
|
||||
pickerOptions: {
|
||||
shortcuts: [
|
||||
{
|
||||
text: "最近一周",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "最近一个月",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
{
|
||||
text: "最近三个月",
|
||||
onClick(picker) {
|
||||
const end = new Date();
|
||||
const start = new Date();
|
||||
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
|
||||
picker.$emit("pick", [start, end]);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
intervald: this.interval,
|
||||
tablenamed: this.tablename,
|
||||
timeValue: [],
|
||||
timehbValue: [],
|
||||
backDisabled: false,
|
||||
preDisabled: true,
|
||||
huanbibiFalg: false,
|
||||
tonbiFalg: false,
|
||||
timeFlag: 0,
|
||||
};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
// console.log(endTime,startTime,'endtime','startTime')
|
||||
this.$store.commit("sagServerity/SET_TIMEINTERVAL",[startTime,endTime] )
|
||||
this.timeValue = [startTime, endTime];
|
||||
this.$emit("time",[startTime,endTime,this.intervald] );
|
||||
if (this.type == 2) {
|
||||
this.huangbiyear();
|
||||
} else if (!this.type) {
|
||||
this.querfromdata();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
interchange(val) {
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(this.intervald, endTime);
|
||||
// console.log(endTime,startTime,'endtime','startTime')
|
||||
this.$store.commit("sagServerity/SET_TIMEINTERVAL",[startTime,endTime] )
|
||||
this.$emit("time",[startTime,endTime,val] );
|
||||
if (val == 1 || val == 2) {
|
||||
this.timeFlag = 0;
|
||||
} else {
|
||||
this.timeFlag = 1;
|
||||
}
|
||||
// console.log(this.timeFlag);
|
||||
this.intervald = val;
|
||||
if (val == 5) {
|
||||
this.tablenamed == "tab1";
|
||||
this.disabled = false;
|
||||
} else {
|
||||
this.tablenamed == "tab2";
|
||||
this.disabled = true;
|
||||
}
|
||||
},
|
||||
// 获取当前日期,精确到日
|
||||
getEndTime() {
|
||||
var now = new Date();
|
||||
var sep = "-";
|
||||
var year = now.getFullYear();
|
||||
var month = now.getMonth() + 1;
|
||||
if (month < 10) {
|
||||
month = "0" + month;
|
||||
}
|
||||
var date = now.getDate();
|
||||
if (date < 10) {
|
||||
date = "0" + date;
|
||||
}
|
||||
|
||||
// 拼接当前的日期
|
||||
var endTime = year + sep + month + sep + date;
|
||||
return endTime;
|
||||
},
|
||||
// 获取起始日期
|
||||
getStartTime(interval, endTime) {
|
||||
var sep = "-";
|
||||
var arr = endTime.split("-");
|
||||
var year = arr[0];
|
||||
var month = arr[1];
|
||||
var date = arr[2];
|
||||
// 按月份间隔
|
||||
if (interval == 3) {
|
||||
date = "01";
|
||||
// 按季度间隔
|
||||
} else if (interval == 2) {
|
||||
if ((month > 0) & (month < 4)) {
|
||||
// 第一季度
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else if (month > 3 && month < 7) {
|
||||
// 第二季度
|
||||
month = "04";
|
||||
date = "01";
|
||||
} else if (month > 6 && month < 10) {
|
||||
// 第三季度
|
||||
month = "07";
|
||||
date = "01";
|
||||
} else {
|
||||
// 第四季度
|
||||
month = "10";
|
||||
date = "01";
|
||||
}
|
||||
} else if (interval == 1) {
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else if (interval == "半年") {
|
||||
if (month < 7) {
|
||||
month = "01";
|
||||
date = "01";
|
||||
} else {
|
||||
month = "07";
|
||||
date = "01";
|
||||
}
|
||||
} else if (interval == 4) {
|
||||
//周
|
||||
var start = new Date(year, month - 1, date);
|
||||
var dayOfWeek = start.getDay() == 0 ? 7 : start.getDay(); // 如果为周日,则置为7天
|
||||
start.setDate(start.getDate() - dayOfWeek + 1); // 计算开始时间
|
||||
|
||||
if (this.formatTime(new Date()) != endTime) {
|
||||
// 如果结束时间不是当前时间
|
||||
var end = new Date(start);
|
||||
end.setDate(end.getDate() + 6);
|
||||
// $("#endTime").val(this.formatTime(end));
|
||||
}
|
||||
|
||||
return this.formatTime(start);
|
||||
}
|
||||
|
||||
var startTime = year + sep + month + sep + date;
|
||||
return startTime;
|
||||
},
|
||||
// 时间格式化
|
||||
formatTime(time) {
|
||||
return (
|
||||
time.getFullYear() +
|
||||
"-" +
|
||||
(time.getMonth() + 1 < 10 ? "0" : "") +
|
||||
(time.getMonth() + 1) +
|
||||
"-" +
|
||||
(time.getDate() < 10 ? "0" : "") +
|
||||
time.getDate()
|
||||
);
|
||||
},
|
||||
//向前
|
||||
preClick() {
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-12-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (month <= 10) {
|
||||
month = month - 1;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
month = month - 1;
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-10-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
// 还是本年
|
||||
month = month - 3;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timeValue = [startTime, endTime];
|
||||
|
||||
// 判断向后键的状态
|
||||
var temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//向后
|
||||
back() {
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
var now = new Date();
|
||||
// 获取当前年份
|
||||
var presentY = now.getFullYear();
|
||||
// 获取当前月份
|
||||
var presentM = now.getMonth() + 1;
|
||||
// 获取当前日期
|
||||
var presentD = now.getDate();
|
||||
if (interval == 3) {
|
||||
if (month == 12) {
|
||||
year = year + 1;
|
||||
// 年份进位后,大于当前的年份,是不科学的
|
||||
if (presentY < year) {
|
||||
startTime = presentY + "-12-01";
|
||||
if (presentD < 10) {
|
||||
endTime = presentY + "-12" + "-0" + presentD;
|
||||
} else {
|
||||
endTime = presentY + "-12" + "-" + presentD;
|
||||
}
|
||||
// 年份进位后,等于当前的年份
|
||||
} else if (presentY == year) {
|
||||
startTime = year + "-01-01";
|
||||
if (presentM > 1) {
|
||||
endTime = year + "-01-31";
|
||||
} else {
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-01" + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-01" + "-" + presentD;
|
||||
}
|
||||
}
|
||||
// 年份进位后,依旧小于当前的年份
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-01-31";
|
||||
}
|
||||
} else {
|
||||
month = month + 1;
|
||||
// 年份等于当前年份
|
||||
if (presentY == year) {
|
||||
// 月份超过当前月份,是不科学的
|
||||
if (month >= presentM) {
|
||||
if (presentM < 10) {
|
||||
startTime = year + "-0" + presentM + "-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-" + presentM + "-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
// 年份小于当前的年份
|
||||
} else {
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (interval == 2) {
|
||||
// 前进需要年份进位
|
||||
if (month == 10) {
|
||||
year = year + 1;
|
||||
// 年份进位后大于当前年份是不科学的
|
||||
if (year > presentY) {
|
||||
startTime = presentY + "-10-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (year == presentY) {
|
||||
startTime = year + "-01-01";
|
||||
// 当前月份大约3月份
|
||||
if (presentM > 3) {
|
||||
endTime = year + "-03-31";
|
||||
} else {
|
||||
// 当前月份也在第一季度里
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-03-31";
|
||||
}
|
||||
} else {
|
||||
month = month + 3;
|
||||
// 季度进位后,超过当前月份是不科学的
|
||||
if (year == presentY) {
|
||||
if (month >= presentM) {
|
||||
// 当季度进位后大于当前月,以当前月的时间显示季度
|
||||
if (presentM > 0 && presentM < 4) {
|
||||
// 第一季度
|
||||
startTime = year + "-01-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (presentM > 3 && presentM < 7) {
|
||||
// 第二季度
|
||||
startTime = year + "-04-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else if (presentM > 6 && presentM < 10) {
|
||||
// 第三季度
|
||||
startTime = year + "-07-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
// 第四季度
|
||||
startTime = year + "-10-01";
|
||||
if (presentD < 10) {
|
||||
endTime = year + "-" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = year + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month == 10) {
|
||||
startTime = year + "-" + month + "-01";
|
||||
} else {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
}
|
||||
month = month + 2;
|
||||
if (month >= presentM) {
|
||||
endTime = this.getEndTime();
|
||||
} else {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (month == 10) {
|
||||
startTime = year + "-" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (interval == 5) {
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
var start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() + 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
|
||||
if (parseInt((end - new Date()) / 1000 / 60) > 24) {
|
||||
//相差小时大于24小时,即超过当天,置为当天日期
|
||||
endTime = this.formatTime(new Date());
|
||||
}
|
||||
} else {
|
||||
year = year + 1;
|
||||
// 年份进位后大于当前年份,是不科学的
|
||||
if (year >= presentY) {
|
||||
startTime = presentY + "-01-01";
|
||||
if (presentM < 10) {
|
||||
if (presentD < 10) {
|
||||
endTime = presentY + "-0" + presentM + "-0" + presentD;
|
||||
} else {
|
||||
endTime = presentY + "-0" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
endTime = presentY + "-" + presentM + "-" + presentD;
|
||||
}
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
}
|
||||
}
|
||||
|
||||
this.timeValue = [startTime, endTime];
|
||||
|
||||
// 判断向后键的状态
|
||||
var temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//当前按钮点击事件
|
||||
nowTime() {
|
||||
let interval = this.intervald;
|
||||
let endTime = this.getEndTime();
|
||||
let startTime = this.getStartTime(interval, endTime);
|
||||
this.timeValue = [startTime, endTime];
|
||||
// 判断向后键的状态
|
||||
let temp = this.getEndTime();
|
||||
this.timeStatus(temp, endTime);
|
||||
},
|
||||
//判断向后按钮
|
||||
timeStatus(temp, endTime) {
|
||||
// 判断next按钮的状态
|
||||
if (temp == endTime) {
|
||||
this.preDisabled = true;
|
||||
} else {
|
||||
this.preDisabled = false;
|
||||
}
|
||||
},
|
||||
// 获取月份的天数
|
||||
getDays(year, month) {
|
||||
let max = new Date(year, month, 0).getDate();
|
||||
return max;
|
||||
},
|
||||
querfromdata() {
|
||||
//type用于区分是按钮触发还是钩子函数触发 1按钮触发 underfind 钩子触发
|
||||
if (!this.type) {
|
||||
var data = this.timeValue;
|
||||
var timehbValue = "";
|
||||
this.$emit("querfromdata", data, timehbValue, this.intervald);
|
||||
} else if (this.type == 2) {
|
||||
this.huangbiyear();
|
||||
}
|
||||
},
|
||||
goto() {
|
||||
this.$router.push({
|
||||
path: "/harmonic-boot/algorithm",
|
||||
query: { name: this.name, path: this.path },
|
||||
});
|
||||
},
|
||||
//环比
|
||||
huangbiyear() {
|
||||
this.huanbibiFalg = true;
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-12-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (month <= 10) {
|
||||
month = month - 1;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
month = month - 1;
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year, month - 1, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
// 换年份
|
||||
if (month == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-10-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
// 还是本年
|
||||
month = month - 3;
|
||||
startTime = year + "-0" + month + "-01";
|
||||
month = month + 2;
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timehbValue = [startTime, endTime];
|
||||
var data = this.timeValue;
|
||||
var timehbValue = this.timehbValue;
|
||||
// debugger
|
||||
this.$emit("querfromdata", data, timehbValue, interval);
|
||||
// 判断向后键的状态
|
||||
// var temp = this.getEndTime();
|
||||
//this.timeStatus(temp, endTime);
|
||||
},
|
||||
//同比
|
||||
tongbiyear() {
|
||||
this.tonbiFalg = true;
|
||||
let interval = this.intervald;
|
||||
let startTime = this.timeValue[0];
|
||||
let endTime = this.timeValue[1];
|
||||
let year = parseInt(startTime.substring(0, 4));
|
||||
let month = parseInt(startTime.substring(5, 7));
|
||||
let date = parseInt(startTime.substring(8, 10));
|
||||
//按月
|
||||
if (interval == 3) {
|
||||
year = year - 1;
|
||||
if (month <= 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
let day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//按周
|
||||
} else if (interval == 4) {
|
||||
//根据开始时间推
|
||||
let start = new Date(year - 1, month, date);
|
||||
start.setDate(start.getDate() - 7);
|
||||
startTime = this.formatTime(start);
|
||||
var end = new Date(start);
|
||||
end.setDate(start.getDate() + 6);
|
||||
endTime = this.formatTime(end);
|
||||
//按季度
|
||||
} else if (interval == 2) {
|
||||
year = year - 1;
|
||||
if (month < 10) {
|
||||
startTime = year + "-0" + month + "-01";
|
||||
} else {
|
||||
startTime = year + "-" + month + "-01";
|
||||
}
|
||||
month = month + 2;
|
||||
if (month <= 10) {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-0" + month + "-" + day;
|
||||
} else {
|
||||
var day = this.getDays(year, month);
|
||||
endTime = year + "-" + month + "-" + day;
|
||||
}
|
||||
//自定义
|
||||
} else if (interval == 5) {
|
||||
//按年
|
||||
} else if (interval == 1) {
|
||||
year = year - 1;
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-12-31";
|
||||
} else if (interval == 6) {
|
||||
if (month <= 6) {
|
||||
year = year - 1;
|
||||
startTime = year + "-07-01";
|
||||
endTime = year + "-12-31";
|
||||
} else {
|
||||
startTime = year + "-01-01";
|
||||
endTime = year + "-06-30";
|
||||
}
|
||||
}
|
||||
this.timehbValue = [startTime, endTime];
|
||||
var data = this.timeValue;
|
||||
var timehbValue = this.timehbValue;
|
||||
this.$emit("querfromdata", data, timehbValue, interval);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.spanColor {
|
||||
color: $themeColor;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,440 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="text" @click="closeHandle">
|
||||
条件筛选
|
||||
<i :class="!view ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="container" id="container">
|
||||
<i @click="closeHandle" class="el-icon-circle-close coles"></i>
|
||||
<el-form :inline="true" style="margin-top: 10px" label-width="110px" class="">
|
||||
<el-form-item label="监测点性质:">
|
||||
<el-select v-model="formData.lineType" clearable>
|
||||
<el-option label="电网侧" value="0" />
|
||||
<el-option label="非电网侧" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="超标指标:">
|
||||
<el-select v-model="formData.targetList" clearable multiple collapse-tags collapse-tags-tooltip
|
||||
placeholder="请选择超标指标">
|
||||
<el-option v-for="item in exceeded" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="预警阈值:">
|
||||
<!-- <el-input v-model="formData.alertThreshold" placeholder="请输入预警阈值" clearable></el-input> -->
|
||||
<el-input-number style="width: 197px;" v-model="formData.alertThreshold" :min="0" :step="1"
|
||||
step-strictly @change="changeAlert" />
|
||||
</el-form-item>
|
||||
<el-form-item label="告警阈值:">
|
||||
<el-input-number style="width: 197px;" v-model="formData.alarmThreshold" :min="0" :step="1"
|
||||
step-strictly @change="changeAlarm" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="数据类型:">
|
||||
|
||||
<el-radio-group v-model="formData.dataType">
|
||||
<el-radio-button label="1">超标数据</el-radio-button>
|
||||
<el-radio-button label="0">无数据</el-radio-button>
|
||||
|
||||
</el-radio-group>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- <div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-plus" size="mini">发起预警单</el-button>
|
||||
<el-button type="primary" icon="el-icon-plus" size="mini">
|
||||
发起告警单
|
||||
</el-button>
|
||||
</div> -->
|
||||
<el-table stripe :data="tabList" :height="height" border style="width: 100%" v-loading="isLoading"
|
||||
header-cell-class-name="table_header">
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column prop="number" label="序号" width="100" :show-overflow-tooltip="true">
|
||||
<template scope="scope">
|
||||
<span>{{ (formData.pageNum - 1) * formData.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dept" label="负责单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="substation" label="变电站名称" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="deviceName" label="终端名称" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="lineName" label="监测点名称" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="businessType" label="监测对象类型" :show-overflow-tooltip="true">
|
||||
<!-- <template slot-scope="scope">
|
||||
<span> {{ industry.find((item) => item.id == scope.row.businessType)?.name || '/' }} </span>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column prop="objectName" label="监测对象名称" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span> {{ scope.row.objectName || '/' }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="targetType" label="指标类型" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span> {{ exceeded.find((item) => item.id == scope.row.targetType).name || '/' }} </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="overLimitDay" label="累计超标天数" :show-overflow-tooltip="true">
|
||||
<!-- <template slot-scope="scope">
|
||||
<span> {{ scope.row.overLimitDay }} </span>
|
||||
</template> -->
|
||||
</el-table-column>
|
||||
<el-table-column prop="updateTime" label="最新数据时间" width="200"></el-table-column>
|
||||
<el-table-column label="操作" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary" icon="el-icon-view" size="mini" @click="detail(scope.row)">详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
|
||||
</el-table>
|
||||
<el-pagination background align="right" @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum" :page-sizes="[10, 30, 40, 50, 100]" :page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" class="mt10"></el-pagination>
|
||||
|
||||
|
||||
<el-dialog title="详情" :visible.sync="dialogVisible" width="70%">
|
||||
<el-table stripe :data="detailedData" height="600" border style="width: 100%" v-loading="isLoading"
|
||||
header-cell-class-name="table_header">
|
||||
|
||||
<el-table-column prop="time" label="日期" width="200"></el-table-column>
|
||||
<el-table-column prop="overLimitInfo" label="越限详情" :show-overflow-tooltip="true"></el-table-column>
|
||||
|
||||
|
||||
|
||||
|
||||
</el-table>
|
||||
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import Timeinterval from './components/Timeinterval.vue'
|
||||
import {
|
||||
onlineMonitor,
|
||||
overLimitDetail
|
||||
|
||||
} from '@/api/Process-supervision/electricitymanagement/electricitymanagement'
|
||||
import SectionTwoPage from './components/SectionTwoPage.vue'
|
||||
export default {
|
||||
components: { Area, Timeinterval, SectionTwoPage },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
SectionTwoPage: false,
|
||||
height: null,
|
||||
view: false,
|
||||
tabList: [],
|
||||
dialogVisible: false,
|
||||
isLoading: false,
|
||||
isLoading1: false,
|
||||
detailedData: [],
|
||||
formData: {
|
||||
deptId: '',
|
||||
lineType: '',
|
||||
dataType: 1,
|
||||
targetList: [],
|
||||
alertThreshold: '1',
|
||||
alarmThreshold: '1',
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
},
|
||||
industry: [],
|
||||
|
||||
//问题来源
|
||||
exceeded: [],
|
||||
|
||||
|
||||
device: '',
|
||||
|
||||
total: 0, // 总条数
|
||||
fvh: ''
|
||||
}
|
||||
},
|
||||
created() { },
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.Dictionaries()
|
||||
|
||||
this.onsubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.height = window.sessionStorage.getItem('appheight') - 173
|
||||
},
|
||||
closeHandle() {
|
||||
if (this.view) {
|
||||
this.view = false
|
||||
} else {
|
||||
this.view = true
|
||||
}
|
||||
//console.log('关闭和展开');
|
||||
const dom = document.getElementById('container')
|
||||
if (!dom.className.match(/(?:^|\s)expend(?!\S)/)) {
|
||||
dom.className = 'container expend'
|
||||
} else {
|
||||
dom.className = 'container close-container'
|
||||
}
|
||||
},
|
||||
// 字典表
|
||||
Dictionaries() {
|
||||
this.formData.deptId = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
// /问题来源
|
||||
this.exceeded = dicData('Steady_Statis', [])
|
||||
this.industry = dicData('Business_Type', [])
|
||||
|
||||
// this.formData.targetList = this.exceeded.filter(item => item.code == 'Total_Indicator')[0].id
|
||||
// ? [exceeded.filter(item => item.code == 'Total_Indicator')[0].id]
|
||||
// : []
|
||||
|
||||
},
|
||||
|
||||
changeAlert(e) {
|
||||
if (e == null) {
|
||||
this.formData.alertThreshold = '1'
|
||||
} else {
|
||||
if (e > this.formData.alarmThreshold) {
|
||||
this.$message.warning('预警阈值不能大于报警阈值')
|
||||
this.formData.alertThreshold = '1'
|
||||
}
|
||||
}
|
||||
},
|
||||
changeAlarm(e) {
|
||||
if (e == null) {
|
||||
this.formData.alarmThreshold = '1'
|
||||
} else {
|
||||
if (e < this.formData.alertThreshold) {
|
||||
this.$message.warning('报警阈值不能小于预警阈值')
|
||||
this.formData.alarmThreshold = '1'
|
||||
}
|
||||
}
|
||||
},
|
||||
// 详情
|
||||
detail(row) {
|
||||
this.detailedData = []
|
||||
overLimitDetail({
|
||||
lineId: row.lineId,
|
||||
targetId: row.targetType,
|
||||
searchBeginTime: this.$refs.interval.timeValue[0],
|
||||
searchEndTime: this.$refs.interval.timeValue[1]
|
||||
}).then(res => {
|
||||
this.detailedData = res.data
|
||||
this.dialogVisible = true
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
this.formData.searchBeginTime = this.$refs.interval.timeValue[0]
|
||||
this.formData.searchEndTime = this.$refs.interval.timeValue[1];
|
||||
onlineMonitor(this.formData).then(res => {
|
||||
this.isLoading = false
|
||||
this.tabList = res.data.records
|
||||
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.formData.deptId = data.id
|
||||
},
|
||||
//勾选
|
||||
|
||||
//重置
|
||||
Reset() {
|
||||
this.formData = {
|
||||
deptId: '',
|
||||
lineType: '',
|
||||
dataType: 1,
|
||||
targetList: [],
|
||||
alertThreshold: '1',
|
||||
alarmThreshold: '1',
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
}
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.formData.deptId = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.$refs.interval.intervald = 3
|
||||
|
||||
this.onsubmit()
|
||||
|
||||
|
||||
},
|
||||
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onsubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onsubmit()
|
||||
},
|
||||
// 字典处理
|
||||
|
||||
formatterType(row, column) {
|
||||
let title = ''
|
||||
dicData('Audit_Status', ['Load_Type']).forEach(item => {
|
||||
if (item.code == row.type) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::v-deep .el-tabs--border-card>.el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .box {
|
||||
.el-input {
|
||||
width: 140px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .box1 {
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .box2 {
|
||||
.el-textarea {
|
||||
width: 1000px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .box3 {
|
||||
.el-textarea {
|
||||
width: 1200px;
|
||||
}
|
||||
}
|
||||
|
||||
::v-deep .el-card {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
max-height: 100%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
::v-deep .swiper {
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
/* margin: auto; */
|
||||
top: 0px;
|
||||
right: 0;
|
||||
width: 40%;
|
||||
height: 0px;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
background-color: #e4e7ebb9;
|
||||
overflow: auto;
|
||||
scroll-behavior: smooth;
|
||||
-radius: 20px;
|
||||
}
|
||||
|
||||
/* 隐藏滚动条 */
|
||||
::-webkit-scrollbar {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.expend {
|
||||
animation: expend ease 5s forwards;
|
||||
}
|
||||
|
||||
.close-container {
|
||||
animation: no-expend ease 1s forwards;
|
||||
}
|
||||
|
||||
@keyframes expend {
|
||||
from {
|
||||
top: 0px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
to {
|
||||
height: auto;
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes no-expend {
|
||||
from {
|
||||
height: 20%;
|
||||
top: 0px;
|
||||
}
|
||||
|
||||
to {
|
||||
top: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.coles {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,247 @@
|
||||
<template>
|
||||
<div class="upload-file">
|
||||
<el-upload
|
||||
:action="uploadFileUrl"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:multiple="true"
|
||||
:limit="limit"
|
||||
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
|
||||
:on-error="handleUploadError"
|
||||
:on-exceed="handleExceed"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-change="handleChange"
|
||||
:show-file-list="false"
|
||||
:headers="headers"
|
||||
class="upload-file-uploader"
|
||||
ref="upload"
|
||||
>
|
||||
<!-- 上传按钮 -->
|
||||
<div style="display: flex;">
|
||||
<el-input
|
||||
style="width: 240px;"
|
||||
v-model="fileList.minFileName"
|
||||
placeholder="文件名称"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-left: 10px;"
|
||||
type="primary"
|
||||
icon="el-icon-upload2"
|
||||
>上传本地报告</el-button
|
||||
>
|
||||
</div>
|
||||
<!-- 上传提示 -->
|
||||
</el-upload>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { getAccessToken } from "@/utils/auth";
|
||||
// import { getfile } from "@/api/core/ProjectList";
|
||||
import { MultipartFile } from "@/api/Process-supervision/tiaoHarmonicmanagement/harmonicmanagement";
|
||||
export default {
|
||||
name: "FileUpload",
|
||||
props: {
|
||||
// 值
|
||||
value: [String, Object, Array],
|
||||
// 数量限制
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 100,
|
||||
},
|
||||
// 大小限制(MB)
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 512,
|
||||
},
|
||||
// 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||
fileType: {
|
||||
type: Array,
|
||||
default: () => ["doc", "xls", "ppt", "txt", "pdf"],
|
||||
},
|
||||
// 是否显示提示
|
||||
isShowTip: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
number: 0,
|
||||
uploadList: [],
|
||||
uploadFileUrl: "/apiH/rGeneralSurveyPlan/surveyResultUpload?planId=003", // 请求地址
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem("cntoken"),
|
||||
}, // 设置上传的请求头部
|
||||
fileList: [],
|
||||
};
|
||||
},
|
||||
|
||||
watch: {
|
||||
// value: {
|
||||
// handler(val) {
|
||||
// if (val) {
|
||||
// let temp = 1;
|
||||
// // 首先将值转为数组
|
||||
// const list = Array.isArray(val) ? val : this.value.split(",");
|
||||
// // 然后将数组转为对象数组
|
||||
// this.fileList = list.map((item) => {
|
||||
// if (typeof item === "string") {
|
||||
// item = { name: item, url: item };
|
||||
// }
|
||||
// item.uid = item.uid || new Date().getTime() + temp++;
|
||||
// return item;
|
||||
// });
|
||||
// } else {
|
||||
// this.fileList = [];
|
||||
// return [];
|
||||
// }
|
||||
// },
|
||||
// deep: true,
|
||||
// immediate: true,
|
||||
// },
|
||||
},
|
||||
computed: {
|
||||
// 是否显示提示
|
||||
showTip() {
|
||||
return this.isShowTip && (this.fileType || this.fileSize);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleChange(file, fileList) {
|
||||
//console.log(file, fileList)
|
||||
this.fileList = fileList
|
||||
},
|
||||
submitUpload() {
|
||||
const formData = new FormData()
|
||||
this.fileList.forEach(item => {
|
||||
formData.append('files', item.raw)
|
||||
// console.log(item.raw, item)
|
||||
})
|
||||
|
||||
MultipartFile(formData) //后端上传接口
|
||||
.then(res => {
|
||||
// console.log(res)
|
||||
this.$emit('added')
|
||||
this.dialogVisible = false
|
||||
})
|
||||
.catch(err => {
|
||||
// console.log(err)
|
||||
})
|
||||
},
|
||||
|
||||
// 上传前校检格式和大小
|
||||
handleBeforeUpload(files) {
|
||||
// console.log(files);
|
||||
// 校检文件类型
|
||||
// if (this.fileType) {
|
||||
// let fileExtension = "";
|
||||
// if (file.name.lastIndexOf(".") > -1) {
|
||||
// fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
|
||||
// }
|
||||
// const isTypeOk = this.fileType.some((type) => {
|
||||
// if (file.type.indexOf(type) > -1) return true;
|
||||
// return !!(fileExtension && fileExtension.indexOf(type) > -1);
|
||||
// });
|
||||
// if (!isTypeOk) {
|
||||
// this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// // 校检文件大小
|
||||
// if (this.fileSize) {
|
||||
// const isLt = file.size / 1024 / 1024 < this.fileSize;
|
||||
// if (!isLt) {
|
||||
// this.$modal.msgError(`上传文件大小不能超过 ${this.fileSize} MB!`);
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
// this.$modal.loading("正在上传文件,请稍候...");
|
||||
this.number++;
|
||||
return true;
|
||||
},
|
||||
// 文件个数超出
|
||||
handleExceed() {
|
||||
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
|
||||
},
|
||||
// 上传失败
|
||||
handleUploadError(err) {
|
||||
this.$message.error("上传失败!");
|
||||
// this.$modal.msgError("上传图片失败,请重试");
|
||||
// this.$modal.closeLoading();
|
||||
},
|
||||
// 上传成功回调
|
||||
handleUploadSuccess(res) {
|
||||
this.$message({
|
||||
message: "上传成功!",
|
||||
type: "success",
|
||||
});
|
||||
this.fileList = res.data;
|
||||
//console.log(`123`, res,);
|
||||
},
|
||||
// 删除文件
|
||||
handleDelete(index) {
|
||||
// this.fileList.splice(index, 1);
|
||||
// this.$emit("input", this.fileList);
|
||||
},
|
||||
// 获取文件名称
|
||||
getFileName(name) {
|
||||
if (name.lastIndexOf("/") > -1) {
|
||||
return name.slice(name.lastIndexOf("/") + 1);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
},
|
||||
// 对象转成指定字符串分隔
|
||||
listToString(list, separator) {
|
||||
let strs = "";
|
||||
separator = separator || ",";
|
||||
for (let i in list) {
|
||||
strs += list[i].url + separator;
|
||||
}
|
||||
return strs !== "" ? strs.substr(0, strs.length - 1) : "";
|
||||
},
|
||||
// 下载
|
||||
exportExcels(e) {
|
||||
getfile(e.url.substring(32)).then((res) => {
|
||||
let blob = new Blob([res], {
|
||||
type: "application/vnd.ms-excel",
|
||||
});
|
||||
const url = window.URL.createObjectURL(blob);
|
||||
const link = document.createElement("a"); // 创建a标签
|
||||
link.href = url; // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
link.download = e.url.substring(
|
||||
e.url.lastIndexOf("/") + 1,
|
||||
e.url.length
|
||||
); // 设置下载的文件名
|
||||
document.body.appendChild(link);
|
||||
link.click(); //执行下载
|
||||
document.body.removeChild(link);
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.upload-file-uploader {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.upload-file-list .el-upload-list__item {
|
||||
position: relative;
|
||||
margin-bottom: 10px;
|
||||
line-height: 2;
|
||||
border: 1px solid #e4e7ed;
|
||||
}
|
||||
.upload-file-list .ele-upload-list__item-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: inherit;
|
||||
}
|
||||
.ele-upload-list__item-content-action .el-link {
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,373 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval" :timeOptions="timeOptions"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-s-claim" @click="planReviewFn('')">审核</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="planapprovalData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<template v-for="(item, index) in tableHeaderPlanapproval">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
:key="index"
|
||||
:min-width="item.width"
|
||||
></el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="ruleForm.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="ruleForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="planapprovalData.length"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 审核弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="普测计划审核" :visible.sync="planReview" width="800px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="10">
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
基本信息
|
||||
</el-divider>
|
||||
<el-form :inline="true" :model="formdata" class="forms" :disabled="true" label-width="120px">
|
||||
<el-form-item label="普测负责单位:">
|
||||
<el-input v-model="formdata.orgName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划开始时间:">
|
||||
<el-date-picker
|
||||
v-model.trim="formdata.planStartTime"
|
||||
type="date"
|
||||
placeholder="选择计划开始时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划结束时间:">
|
||||
<el-date-picker
|
||||
v-model.trim="formdata.planEndTime"
|
||||
type="date"
|
||||
placeholder="选择计划结束时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="普测计划编号:">
|
||||
<el-input v-model="formdata.planNo" placeholder="请输入普测计划编号"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划名称:">
|
||||
<el-input v-model="formdata.planName" placeholder="请输入计划名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="测试负责人:">
|
||||
<el-input v-model="formdata.leader" placeholder="请输入测试负责人"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">
|
||||
添加电站
|
||||
</el-divider>
|
||||
<el-tree
|
||||
:data="treeData"
|
||||
show-checkbox
|
||||
node-key="id"
|
||||
style="overflow-y: auto; height: 480px"
|
||||
default-expand-all
|
||||
:props="defaultProps"
|
||||
:check-strictly="true"
|
||||
ref="tree"
|
||||
></el-tree>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">审核意见</el-divider>
|
||||
<!-- <div style="width: 100%; display: flex; justify-content: center">
|
||||
<div class="shyj">{{ textContent }}</div>
|
||||
</div> -->
|
||||
<el-input type="textarea" :rows="2" placeholder="请输入审核意见!" v-model="textarea"></el-input>
|
||||
<div slot="footer" style="display: flex; justify-content: center">
|
||||
<el-button type="primary" size="small" class="ml20" @click="passFn">通过</el-button>
|
||||
<el-button type="primary" size="small" class="ml20" @click="failFn">不通过</el-button>
|
||||
<el-button type="primary" size="small" class="ml20" @click="cancelFn">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '../../../components/Timeinterval.vue'
|
||||
import {
|
||||
queryPlanAudit,
|
||||
initDetpStataionTree,
|
||||
checkPlanAudit,
|
||||
queryPlanOne
|
||||
} from '@/api/Process-supervision/tiaoHarmonicmanagement/harmonicmanagement'
|
||||
export default {
|
||||
components: { Area, Timeinterval },
|
||||
props: {
|
||||
son:String
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
height: null,
|
||||
isLoading: false,
|
||||
isLoading1: false,
|
||||
planReview: false,
|
||||
item: ['', ''],
|
||||
// 查询数据
|
||||
ruleForm: {
|
||||
currentPage: 1,
|
||||
pageSize: 20,
|
||||
planStartTime: '',
|
||||
planEndTime: '',
|
||||
orgNo: ''
|
||||
},
|
||||
formdata: {
|
||||
company: '杭州公司本部',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
number: '',
|
||||
name: '',
|
||||
chargePerson: '',
|
||||
substation: '',
|
||||
Bus: ''
|
||||
},
|
||||
textarea: '',
|
||||
|
||||
tableHeaderPlanapproval: [
|
||||
{ prop: 'orgName', label: '所属单位' },
|
||||
{ prop: 'planNo', label: '普测计划编号' },
|
||||
{ prop: 'planName', label: '普测计划名称' },
|
||||
{ prop: 'planStartTime', label: '开始时间' },
|
||||
{ prop: 'planEndTime', label: '结束时间' },
|
||||
{ prop: 'subCount', label: '普测变电站数量' },
|
||||
{ prop: "createPersonName", label: "创建用户" },
|
||||
],
|
||||
planapprovalData: [],
|
||||
planReviewData: [],
|
||||
multipleSelection: [],
|
||||
device: '',
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'name',
|
||||
disabled: 'flag'
|
||||
},
|
||||
timeOptions: [
|
||||
{ label: '年份', value: 1 },
|
||||
{ label: '季度', value: 2 },
|
||||
{ label: '月份', value: 3 }
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
|
||||
this.ruleForm.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.onsubmit()
|
||||
initDetpStataionTree({
|
||||
orgId: JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
}).then(res => {
|
||||
this.treeData = res.data
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
//查询详情
|
||||
queryPlanOneDetail(planId){
|
||||
|
||||
let data = {planId:planId}
|
||||
queryPlanOne(data).then(res => {
|
||||
if(res.code === 'A0000'){
|
||||
this.planReview = true
|
||||
this.isLoading1 = true
|
||||
this.formdata = res.data
|
||||
setTimeout(() => {
|
||||
this.$refs.tree.setCheckedKeys(res.data.subIds)
|
||||
}, 0)
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 215
|
||||
},
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
|
||||
this.item = this.$refs.interval.timeValue
|
||||
this.ruleForm.planStartTime = this.item[0]
|
||||
this.ruleForm.planEndTime = this.item[1]
|
||||
queryPlanAudit(this.ruleForm).then(res => {
|
||||
this.isLoading = false
|
||||
this.planapprovalData = res.data.records
|
||||
})
|
||||
},
|
||||
//审核
|
||||
planReviewFn(planId) {
|
||||
|
||||
console.log(planId)
|
||||
|
||||
if(planId && planId!==''){
|
||||
//说明是从代办页面点击过来的
|
||||
this.queryPlanOneDetail(planId)
|
||||
}else {
|
||||
|
||||
if (this.multipleSelection.length == 1) {
|
||||
this.planReview = true
|
||||
this.isLoading1 = true
|
||||
|
||||
this.formdata = this.multipleSelection[0]
|
||||
setTimeout(() => {
|
||||
this.$refs.tree.setCheckedKeys(this.multipleSelection[0].subIds)
|
||||
}, 0)
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据查看详情!' : '只能选择1条数据查看详情!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
//普测计划审核通过
|
||||
passFn() {
|
||||
checkPlanAudit({
|
||||
checkResult: 1,
|
||||
planNo: this.formdata.planNo,
|
||||
checkComment: this.textarea,
|
||||
checkPerson: JSON.parse(window.sessionStorage.getItem('Info')).loginName
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '审核 通过成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.onsubmit()
|
||||
this.planReview = false
|
||||
}
|
||||
})
|
||||
},
|
||||
//普测计划不通过
|
||||
failFn() {
|
||||
checkPlanAudit({
|
||||
checkResult: 0,
|
||||
planNo: this.formdata.planNo,
|
||||
checkComment: this.textarea,
|
||||
checkPerson: JSON.parse(window.sessionStorage.getItem('Info')).loginName
|
||||
}).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '审核 不通过成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.onsubmit()
|
||||
this.planReview = false
|
||||
}
|
||||
})
|
||||
},
|
||||
// 取消
|
||||
cancelFn() {
|
||||
this.planReview = false
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
//console.log(data);
|
||||
this.ruleForm.orgNo = data.id
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.ruleForm.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.$refs.interval.intervald = 3
|
||||
},
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.ruleForm.pageSize = val
|
||||
this.onsubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.ruleForm.currentPage = val
|
||||
this.onsubmit()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
::v-deep .forms {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.el-form-item {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
.el-form-item__content {
|
||||
flex: 1 !important;
|
||||
.el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-date-editor {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,217 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-button type="primary" size="small" icon="el-icon-check" @click="preserve">保存</el-button>
|
||||
<el-button type="primary" size="small" icon="el-icon-date" @click="dialogVisible = true">
|
||||
配置保存年限
|
||||
</el-button>
|
||||
<vxe-table
|
||||
resizable
|
||||
ref="xTable"
|
||||
size="mini"
|
||||
border
|
||||
:height="height"
|
||||
show-overflow
|
||||
:tree-config="{ children: 'children' }"
|
||||
:data="tableData1"
|
||||
:edit-config="{ trigger: 'click', mode: 'cell' }"
|
||||
header-cell-class-name="table_header"
|
||||
class="mt10"
|
||||
>
|
||||
<vxe-table-column field="name" title="部门" tree-node></vxe-table-column>
|
||||
<!-- <vxe-table-column
|
||||
field="size"
|
||||
align="center"
|
||||
title="Size"
|
||||
></vxe-table-column>
|
||||
<vxe-table-column
|
||||
field="type"
|
||||
align="center"
|
||||
title="Type"
|
||||
></vxe-table-column> -->
|
||||
<vxe-table-column
|
||||
field="proportion"
|
||||
align="center"
|
||||
title="占比(%)"
|
||||
:edit-render="{
|
||||
name: '$input',
|
||||
props: { type: 'float', digits: 2, max: 100, min: 0 }
|
||||
}"
|
||||
></vxe-table-column>
|
||||
</vxe-table>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="年限设置"
|
||||
:visible.sync="dialogVisible"
|
||||
width="300px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-input
|
||||
v-model="value"
|
||||
placeholder="请输入年限"
|
||||
style="width: 240px"
|
||||
@input="handleEdit"
|
||||
class="mr10"
|
||||
></el-input>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" size="small" @click="handleClose">取 消</el-button>
|
||||
<el-button type="primary" size="small" @click="define">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { deptTree } from '@/api/admin/dept'
|
||||
import {
|
||||
queryPlanConfig,
|
||||
addPlanConfig,
|
||||
addPlanCycle
|
||||
} from '@/api/Process-supervision/tiaoHarmonicmanagement/harmonicmanagement'
|
||||
export default {
|
||||
components: {},
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
value: '',
|
||||
tableData1: [],
|
||||
height: null,
|
||||
list: [],
|
||||
treeList: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.info()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 126
|
||||
},
|
||||
async info() {
|
||||
await queryPlanConfig().then(res => {
|
||||
this.list = res.data
|
||||
})
|
||||
await deptTree().then(res => {
|
||||
this.tableData1 = this.circulationTreeData(res.data)
|
||||
//console.log(`123`, this.circulationTreeData(this.tableData1));
|
||||
setTimeout(() => {
|
||||
this.$refs.xTable.setAllTreeExpand(true)
|
||||
}, 0)
|
||||
})
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
this.value = ''
|
||||
},
|
||||
define() {
|
||||
if (this.value.length > 0) {
|
||||
addPlanCycle({
|
||||
cycleNum: this.value
|
||||
}).then(res => {
|
||||
if (res.data.flag == true) {
|
||||
this.$message({
|
||||
message: '年限设置成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.handleClose()
|
||||
} else {
|
||||
this.$message({
|
||||
message: `本次普测计划周期还未结束,请在 ${res.data.endYear} 后设置!`,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '请输入年限!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
//树递归
|
||||
|
||||
circulationTreeData(rows) {
|
||||
let children = []
|
||||
|
||||
rows.forEach((item, index) => {
|
||||
let proportion = 0
|
||||
this.list.forEach(val => {
|
||||
if (val.orgId == item.id) {
|
||||
proportion = val.proportion
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
if (item.children && item.children.length > 0) {
|
||||
children.push({
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
proportion: proportion,
|
||||
children: this.circulationTreeData(item.children)
|
||||
})
|
||||
} else {
|
||||
children.push({
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
proportion: proportion
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
return children
|
||||
},
|
||||
|
||||
preserve() {
|
||||
this.treeList = []
|
||||
this.circulation(this.tableData1)
|
||||
setTimeout(() => {
|
||||
addPlanConfig(this.treeList).then(res => {
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
message: '保持成功!',
|
||||
type: 'success'
|
||||
})
|
||||
this.info()
|
||||
}
|
||||
})
|
||||
}, 0)
|
||||
},
|
||||
|
||||
circulation(rows) {
|
||||
let children = []
|
||||
|
||||
rows.forEach((item, index) => {
|
||||
this.treeList.push({
|
||||
orgName: item.name,
|
||||
orgId: item.id,
|
||||
proportion: item.proportion
|
||||
})
|
||||
if (item.children && item.children.length > 0) {
|
||||
this.circulation(item.children)
|
||||
}
|
||||
})
|
||||
|
||||
return children
|
||||
},
|
||||
// 在 Input 值改变时触发
|
||||
handleEdit(e) {
|
||||
let value = e.replace(/^(0+)|[^\d]+/g, '') // 以0开头或者输入非数字,会被替换成空
|
||||
value = value.replace(/(\d{15})\d*/, '$1') // 最多保留15位整数
|
||||
this.value = value
|
||||
}
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
</style>
|
||||
@@ -0,0 +1,443 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<Timeinterval :interval="3" ref="interval" :timeOptions="timeOptions"></Timeinterval>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否上传:" class="box">
|
||||
<el-select v-model="ruleForm.isFileUpload" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in uploadData"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-upload" @click="uploadFn">文件上传</el-button>
|
||||
<!-- <File></File> -->
|
||||
<el-button type="primary" icon="el-icon-share" @click="exportFn">文件导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="resultsmanagementData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
:cell-style="cellStyle"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column prop="orgName" label="责任单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="planNo" label="普测计划编号" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="planName"
|
||||
label="普测计划名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="planStartTime"
|
||||
label="开始时间"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="planEndTime"
|
||||
label="结束时间"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="subCount"
|
||||
label="普测变电站数量"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<!-- <el-table-column
|
||||
prop="busCount"
|
||||
label="普测母线数量"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column> -->
|
||||
<el-table-column prop="isFileUpload" label="是否上传" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.isFileUpload == 1" type="primary" size="small" style="color: blue">
|
||||
已上传
|
||||
</span>
|
||||
<span v-if="scope.row.isFileUpload == 0" type="primary" size="small" style="color: red">
|
||||
未上传
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="fileCount"
|
||||
label="上传文件数量"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="uploadTime" label="上传时间" :show-overflow-tooltip="true"></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="ruleForm.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="ruleForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="resultsmanagementData.length"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 上传弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="上传" :visible.sync="dialogVisible" width="25%">
|
||||
<el-form
|
||||
ref="dataForm"
|
||||
v-loading="formLoading"
|
||||
:model="temp"
|
||||
style="height: 200px"
|
||||
:inline="true"
|
||||
size="mini"
|
||||
label-position="right"
|
||||
label-width="80px"
|
||||
>
|
||||
<!-- <el-form-item label="文件名称">
|
||||
<el-input v-model="fileName"></el-input>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="文件上传">
|
||||
<el-upload
|
||||
ref="upload"
|
||||
class="upload-files"
|
||||
action=""
|
||||
:headers="headers"
|
||||
name="file"
|
||||
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
|
||||
multiple
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
style="display: inline; float: right"
|
||||
>
|
||||
<el-button slot="trigger" size="mini" type="primary">选取文件</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitUpload">保存</el-button>
|
||||
<el-button style="margin-right: 50px" @click="dialogVisible = false">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 导出弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="文件导出" :visible.sync="downLoad" width="30%">
|
||||
<el-table
|
||||
stripe
|
||||
:data="Downloaddata"
|
||||
:height="300"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading1"
|
||||
header-cell-class-name="table_header"
|
||||
:row-class-name="rowClassName"
|
||||
>
|
||||
<el-table-column label="序号" width="60" prop="number"></el-table-column>
|
||||
<el-table-column label="文件名称" prop="minFileName" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="minFileUrl" label="文件" :show-overflow-tooltip="true">
|
||||
<template>
|
||||
<i class="el-icon-document"></i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="achieveMonitoring" label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="primary" @click="downLownFn(scope.row)">文件下载</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" >
|
||||
确定
|
||||
</el-button>
|
||||
<el-button style="margin-right: 50px" @click="downLoad = false"> 取消</el-button>
|
||||
</div> -->
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import Timeinterval from '../../../components/Timeinterval.vue'
|
||||
import File from './File.vue'
|
||||
import {
|
||||
queryPlanResult,
|
||||
MultipartFile,
|
||||
surveyResultDownload
|
||||
} from '@/api/Process-supervision/tiaoHarmonicmanagement/harmonicmanagement'
|
||||
export default {
|
||||
components: { Area, Timeinterval, File },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
height: null,
|
||||
isLoading: false,
|
||||
isLoading1: false,
|
||||
dialogVisible: false,
|
||||
downLoad: false,
|
||||
item: ['', ''],
|
||||
// 查询数据
|
||||
ruleForm: {
|
||||
currentPage: 1,
|
||||
pageSize: 20,
|
||||
isFileUpload: '',
|
||||
planStartTime: '',
|
||||
planEndTime: '',
|
||||
orgNo: ''
|
||||
},
|
||||
//是否上传
|
||||
uploadData: [
|
||||
// {
|
||||
// id:2,
|
||||
// value:'选项1',
|
||||
// label:'全部',
|
||||
// },
|
||||
{
|
||||
id: 0,
|
||||
|
||||
label: '未上传'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
|
||||
label: '已上传'
|
||||
}
|
||||
],
|
||||
resultsmanagementData: [],
|
||||
Downloaddata: [],
|
||||
multipleSelection: [],
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem('cntoken')
|
||||
},
|
||||
uploading: false,
|
||||
formLoading: false,
|
||||
dialogVisible: false,
|
||||
fileList: [],
|
||||
temp: {
|
||||
id: void 0,
|
||||
fileName: '',
|
||||
fileType: void 0
|
||||
},
|
||||
fileName: '',
|
||||
exportData: '',
|
||||
planNo: '',
|
||||
device: '',
|
||||
Documentname: '',
|
||||
timeOptions: [
|
||||
{ label: '年份', value: 1 },
|
||||
{ label: '季度', value: 2 },
|
||||
{ label: '月份', value: 3 }
|
||||
]
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.device = window.devicePixelRatio
|
||||
|
||||
this.ruleForm.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.onsubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 215
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
// console.log(file, fileList);
|
||||
this.fileList = fileList
|
||||
},
|
||||
submitUpload() {
|
||||
const formData = new FormData()
|
||||
formData.append('planId', this.planNo)
|
||||
this.fileList.forEach(item => {
|
||||
formData.append('file', item.raw)
|
||||
// console.log(item.raw, item)
|
||||
})
|
||||
|
||||
// console.log(this.fileList,'===============');
|
||||
// console.log(formData,'111111111111');
|
||||
MultipartFile(formData) //后端上传接口
|
||||
.then(res => {
|
||||
// console.log(res);
|
||||
// this.$emit('added')
|
||||
this.dialogVisible = false
|
||||
this.onsubmit()
|
||||
})
|
||||
.catch(err => {
|
||||
/// console.log(err);
|
||||
})
|
||||
},
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
|
||||
this.item = this.$refs.interval.timeValue
|
||||
this.ruleForm.planStartTime = this.item[0]
|
||||
this.ruleForm.planEndTime = this.item[1]
|
||||
queryPlanResult(this.ruleForm).then(res => {
|
||||
this.isLoading = false
|
||||
this.resultsmanagementData = res.data.records
|
||||
})
|
||||
},
|
||||
//上传
|
||||
uploadFn() {
|
||||
if (this.multipleSelection.length == 0 || this.multipleSelection.length > 1) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择1条数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
} else {
|
||||
this.dialogVisible = true
|
||||
this.fileList = []
|
||||
}
|
||||
// this.$message({
|
||||
// showClose: true,
|
||||
// message: '上传成功!!!',
|
||||
// type: 'success'
|
||||
// });
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
// console.log(data);
|
||||
this.ruleForm.orgNo = data.id
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
if (val != []) {
|
||||
this.planNo = this.multipleSelection[0].planNo
|
||||
}
|
||||
// this.multipleSelection.forEach(item=>{
|
||||
// this.exportData.push(item.planNo)
|
||||
// })
|
||||
},
|
||||
//导出
|
||||
exportFn() {
|
||||
if (this.multipleSelection.length == 0 || this.multipleSelection.length > 1) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择1条数据!!!',
|
||||
type: 'warning'
|
||||
})
|
||||
return
|
||||
} else {
|
||||
this.downLoad = true
|
||||
this.isLoading1 = true
|
||||
let form = {
|
||||
planNo: this.planNo
|
||||
}
|
||||
surveyResultDownload(form).then(res => {
|
||||
// debugger
|
||||
// console.log(res);
|
||||
this.isLoading1 = false
|
||||
this.Downloaddata = res.data
|
||||
// let blob = new Blob([res], {
|
||||
// type: "application/vnd.ms-excel",
|
||||
// });
|
||||
// const url = window.URL.createObjectURL(blob);
|
||||
// const link = document.createElement("a"); // 创建a标签
|
||||
// link.href = url; // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
// link.download = "普测计划信息.xls"; // 设置下载的文件名
|
||||
// document.body.appendChild(link);
|
||||
// link.click(); //执行下载
|
||||
// document.body.removeChild(link);
|
||||
})
|
||||
}
|
||||
},
|
||||
//下载
|
||||
downLownFn(row) {
|
||||
this.downLoad = false
|
||||
const downloadRes = async () => {
|
||||
let response = await fetch(row.minFileUrl)
|
||||
let blob = await response.blob()
|
||||
let objectUrl = window.URL.createObjectURL(blob)
|
||||
let a = document.createElement('a')
|
||||
a.href = objectUrl
|
||||
a.download = ''
|
||||
a.click()
|
||||
a.remove()
|
||||
}
|
||||
downloadRes()
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.ruleForm.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.$refs.interval.intervald = 3
|
||||
this.ruleForm.isFileUpload = 0
|
||||
},
|
||||
//每页条数改变时触发 选择一页显示多少行
|
||||
handleSizeChange(val) {
|
||||
this.ruleForm.pageSize = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//当前页改变时触发 跳转其他页
|
||||
handleCurrentChange(val) {
|
||||
this.ruleForm.currentPage = val
|
||||
this.onSubmit()
|
||||
},
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
},
|
||||
//判断颜色
|
||||
cellStyle(row) {
|
||||
if (row.row.isFileUpload == 0) {
|
||||
if (row.columnIndex == 9 || row.columnIndex == 10) {
|
||||
return 'color:blue;'
|
||||
}
|
||||
}
|
||||
if (row.row.isFileUpload == 1) {
|
||||
if (row.columnIndex == 9 || row.columnIndex == 10) {
|
||||
return 'color:red;'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,398 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源类型:" class="box1">
|
||||
<el-select v-model="formData.loadType" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="formData.userName" clearable placeholder="请输入关键字"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="关联干扰源用户名称:">
|
||||
<el-input v-model="formData.relationUserName" clearable placeholder="请输入关键字"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-s-claim" @click="planReviewFn">审核</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="measurementreportData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<template v-for="(item, index) in tableHeaderMeasurementreport">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
:key="index"
|
||||
:formatter="formFilter"
|
||||
:min-width="item.width"
|
||||
></el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
class="mt10"
|
||||
align="right"
|
||||
background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 审核弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="实测报告审核" :visible.sync="reportreview" width="1600px">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
|
||||
<el-form :inline="true" :model="formdata">
|
||||
<el-form-item label="所属单位">
|
||||
<el-input v-model="formdata.company" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源类型:" class="box1">
|
||||
<el-select v-model="formdata.loadType" clearable placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="{
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
code: item.code,
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
sort: item.sort
|
||||
}"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="formdata.userName" clearable placeholder="请输入关键字" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="建档时间">
|
||||
<el-date-picker
|
||||
v-model.trim="formdata.time"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
disabled
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="关联干扰源用户名称:">
|
||||
<el-input
|
||||
v-model="formdata.relationUserName"
|
||||
clearable
|
||||
placeholder="请输入关键字"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
报告在线查看
|
||||
</el-divider>
|
||||
<el-form-item class="item" label="报告名称:">
|
||||
<el-input v-model="documentName" clearable placeholder="上传文件名称" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="xz">下载</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">审核意见</el-divider>
|
||||
<!-- <div style="width: 100%; display: flex; justify-content: center">
|
||||
<div class="shyj">{{ textContent }}</div>
|
||||
</div> -->
|
||||
<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="textarea"></el-input>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="passFn">通过</el-button>
|
||||
<el-button type="primary" class="ml20" @click="failFn">不通过</el-button>
|
||||
<el-button type="primary" class="ml20" @click="cancelFn">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
// import Timeinterval from "../../../components/Timeinterval.vue";
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import {
|
||||
getLoadTypeRelationList,
|
||||
checkLoadTypeUserA
|
||||
} from '@/api/Process-supervision/interferencemanagement/interferencemanagement'
|
||||
export default {
|
||||
components: { Area },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
height: null,
|
||||
isLoading: false,
|
||||
reportreview: false,
|
||||
formData: {
|
||||
loadType: '',
|
||||
userName: '',
|
||||
orgNo: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
relationUserName: ''
|
||||
},
|
||||
formdata: {
|
||||
company: '',
|
||||
time: '',
|
||||
loadType: [],
|
||||
userName: '',
|
||||
relationUserName: ''
|
||||
},
|
||||
//干扰源类型
|
||||
interferenceType: [],
|
||||
textarea: '',
|
||||
total: null,
|
||||
|
||||
tableHeaderMeasurementreport: [
|
||||
{ prop: 'orgName', label: '所属单位' },
|
||||
{ prop: 'loadType', label: '干扰源类型' },
|
||||
{ prop: 'userName', label: '干扰源用户名称' },
|
||||
{ prop: 'relationUserName', label: '关联干扰源用户名称' },
|
||||
{ prop: 'auploadTime', label: '报告提交评估时间' }
|
||||
],
|
||||
measurementreportData: [],
|
||||
multipleSelection: [],
|
||||
fileList: [],
|
||||
device: '',
|
||||
documentName: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getclassificationData()
|
||||
},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
this.device = window.devicePixelRatio
|
||||
|
||||
this.onsubmit()
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 215
|
||||
},
|
||||
//获取类型
|
||||
getclassificationData() {
|
||||
//电压等级
|
||||
this.interferenceType = dicData('Interference_Source', [])
|
||||
},
|
||||
//预览
|
||||
handleRemove(file, fileList) {
|
||||
// console.log(file, fileList,'111111');
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
// console.log(file.name.split(".").splice(0, 1).toString());
|
||||
this.documentName = file.name.split('.').splice(0, 1).toString()
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(
|
||||
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||
files.length + fileList.length
|
||||
} 个文件`
|
||||
)
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
getLoadTypeRelationList(this.formData).then(res => {
|
||||
this.isLoading = false
|
||||
this.measurementreportData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
// 数据过滤
|
||||
formFilter(row, column) {
|
||||
if (column.property == 'loadType') {
|
||||
let title = ''
|
||||
this.interferenceType.forEach(item => {
|
||||
if (item.value == row.loadType) {
|
||||
title = item.label
|
||||
}
|
||||
})
|
||||
return title
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
},
|
||||
//审核
|
||||
planReviewFn() {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
this.formdata.company = this.multipleSelection[0].orgName
|
||||
this.formdata.loadType = this.multipleSelection[0].loadType
|
||||
this.formdata.userName = this.multipleSelection[0].userName
|
||||
this.formdata.relationUserName = this.multipleSelection[0].relationUserName
|
||||
this.formdata.time = this.multipleSelection[0].recordTime
|
||||
this.interferenceType.forEach(item => {
|
||||
if (item.id == this.formdata.loadType) {
|
||||
this.formdata.loadType = item.name
|
||||
}
|
||||
})
|
||||
this.reportreview = true
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
},
|
||||
xz() {
|
||||
window.open(this.multipleSelection[0].ifile)
|
||||
},
|
||||
//普测计划审核通过
|
||||
passFn() {
|
||||
checkLoadTypeUserA({
|
||||
checkComment: this.textarea,
|
||||
checkPerson: JSON.parse(window.sessionStorage.getItem('Info')).id,
|
||||
checkResult: 1,
|
||||
id: this.multipleSelection[0].id
|
||||
}).then(res => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '审核完成',
|
||||
type: 'success'
|
||||
})
|
||||
this.reportreview = false
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//普测计划不通过
|
||||
failFn() {
|
||||
checkLoadTypeUserA({
|
||||
checkComment: this.textarea,
|
||||
checkPerson: JSON.parse(window.sessionStorage.getItem('Info')).id,
|
||||
checkResult: 0,
|
||||
id: this.multipleSelection[0].id
|
||||
}).then(res => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '审核完成',
|
||||
type: 'success'
|
||||
})
|
||||
this.reportreview = false
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//普测计划取消
|
||||
cancelFn() {
|
||||
this.reportreview = false
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
// console.log(data);
|
||||
this.formData.orgNo = data.id
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.formData = {
|
||||
loadType: '',
|
||||
userName: '',
|
||||
relationUserName: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
}
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
},
|
||||
//当前页操作
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onsubmit()
|
||||
},
|
||||
//当前页码操作
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onsubmit()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
::v-deep .el-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 !important;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
/*height:600px;*/
|
||||
max-height: calc(100% - 200px);
|
||||
max-width: calc(100% - 30px);
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,889 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源类型:">
|
||||
<el-select v-model="formData.loadType" clearable collapse-tags placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="formData.userName" clearable placeholder="请输入关键字"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="text" @click="closeHandle">
|
||||
条件筛选
|
||||
<i :class="!view ? 'el-icon-arrow-down' : 'el-icon-arrow-right'"></i>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div class="container" id="container">
|
||||
<i @click="closeHandle" class="el-icon-circle-close coles"></i>
|
||||
<el-form :inline="true" style="margin-top: 10px" label-width="120px" class="">
|
||||
<el-form-item label="关联干扰源用户:">
|
||||
<el-input
|
||||
v-model="formData.relationUserName"
|
||||
clearable
|
||||
placeholder="请输入联干扰源用户名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否已上传实测报告:" class="box">
|
||||
<el-select v-model="upload" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in uploadData"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-upload" @click="sc">上传</el-button>
|
||||
|
||||
<el-button type="primary" icon="el-icon-share" @click="dc">导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="undocumentednonlinearData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
:cell-style="cellStyle"
|
||||
ref="multipleTable"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column prop="orgName" label="所属单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="loadType" label="干扰源类型" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="干扰源用户名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
prop="relationUserName"
|
||||
label="关联干扰源用户名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
|
||||
<el-table-column prop="istatus" label="实测报告状态" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
v-if="scope.row.istatus == rwzt[1].id"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #da70d6"
|
||||
>
|
||||
新建
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == rwzt[2].id"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #48d1cc"
|
||||
>
|
||||
待审核
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == rwzt[3].id"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #dc143c; text-decoration: underline"
|
||||
@click="failed = true"
|
||||
>
|
||||
未通过
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == rwzt[4].id"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #9acd32"
|
||||
>
|
||||
已发布
|
||||
</span>
|
||||
<span v-else type="primary" size="small">{{ scope.row.status }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="plandetails" label="详情">
|
||||
<template slot-scope="scope">
|
||||
<!-- <span type="primary" size="small" style="color:blue;text-decoration:underline" @click="userDetails=true">查看</span> -->
|
||||
<el-button size="mini" @click="ck(scope.row)" type="primary">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
align="right"
|
||||
class="mt10"
|
||||
background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 未通过弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="未通过审批意见查看" :visible.sync="failed" width="50%">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">审核意见</el-divider>
|
||||
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="textarea"></el-input>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 上传 -->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
title="未建档干扰源用户入网报告结论填报"
|
||||
:visible.sync="uploadConclusions"
|
||||
width="1700px"
|
||||
>
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
|
||||
<el-form>
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input v-model="addData.orgNo" clearable placeholder="请输入" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="干扰源类型:">
|
||||
<el-select v-model="addData.loadType" clearable collapse-tags placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="addData.userName" clearable placeholder="请输入关键字" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="建档时间">
|
||||
<!-- <el-date-picker
|
||||
v-model.trim="addData.recordTime"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker> -->
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
v-model="addData.recordTime"
|
||||
disabled
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估报告上传
|
||||
</el-divider>
|
||||
<el-form-item class="item" label="文件名称:">
|
||||
<el-input v-model="documentName" clearable placeholder="请输入填报名称" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- <upload/> -->
|
||||
<el-upload
|
||||
ref="upload"
|
||||
class="upload-files"
|
||||
action=""
|
||||
accept=".doc,.docx,.xls,.xlsx,.pdf,.txt"
|
||||
:headers="headers"
|
||||
name="file"
|
||||
multiple
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="handleChange"
|
||||
:limit="1"
|
||||
:on-exceed="handleExceed"
|
||||
>
|
||||
<el-button slot="trigger" size="mini" icon="el-icon-upload" type="primary">上传本地评估报告</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估结论填报
|
||||
</el-divider>
|
||||
<el-form-item label="是否超标:" style="margin-top: 20px">
|
||||
<el-radio v-model="radio" label="0">是</el-radio>
|
||||
<el-radio v-model="radio" label="1">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="超标指标:" style="margin-top: 20px">
|
||||
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
||||
<el-checkbox v-for="city in cities" :label="city.id" :key="city.id">
|
||||
{{ city.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划采取措施:" style="margin-top: 20px">
|
||||
<el-select v-model="measures" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in takeMeasures"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<br/>
|
||||
<el-form-item label="入网详情:" style="margin-top: 20px">
|
||||
<el-input
|
||||
v-model="rwxq"
|
||||
placeholder="请输入入网详情"
|
||||
type="textarea"
|
||||
style="width: 500px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="display: flex; justify-content: center; margin-top: 30px">
|
||||
<el-button type="primary" class="ml20" @click="tj">提交</el-button>
|
||||
<el-button type="primary" class="ml20" @click="bc">保存</el-button>
|
||||
<el-button type="primary" class="ml20" @click="uploadConclusions = false">取消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 查看详情 -->
|
||||
<el-dialog :close-on-click-modal="false" title="未建档干扰源用户详情" :visible.sync="userDetails" width="1700px">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
<el-input v-model="addData.orgNo" clearable placeholder="请输入" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="干扰源类型:">
|
||||
<el-select v-model="addData.loadType" clearable collapse-tags placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="addData.userName" clearable placeholder="请输入关键字" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="建档时间">
|
||||
<!-- <el-date-picker
|
||||
v-model.trim="addData.recordTime"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker> -->
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
v-model="addData.recordTime"
|
||||
disabled
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估报告上传
|
||||
</el-divider>
|
||||
<el-form-item class="item" label="文件名称:">
|
||||
<el-input v-model="documentName1" clearable placeholder="请输入填报名称" disabled></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item>
|
||||
<el-upload
|
||||
:headers="headers"
|
||||
class="upload-demo"
|
||||
action=""
|
||||
:on-remove="handleRemove1"
|
||||
:before-remove="beforeRemove1"
|
||||
multiple
|
||||
:limit="6"
|
||||
:on-exceed="handleExceed1"
|
||||
:on-change="handleChange1"
|
||||
:file-list="fileList1"
|
||||
>
|
||||
<el-button size="small" type="primary" icon="el-icon-view">预览</el-button>
|
||||
</el-upload>
|
||||
</el-form-item> -->
|
||||
<el-form-item>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="xz">下载</el-button>
|
||||
</el-form-item>
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估结论填报
|
||||
</el-divider>
|
||||
<el-form-item label="是否超标:" style="margin-top: 20px">
|
||||
<el-radio v-model="radio" label="0" disabled>是</el-radio>
|
||||
<el-radio v-model="radio" label="1" disabled>否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="超标指标:" style="margin-top: 20px">
|
||||
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange" disabled>
|
||||
<el-checkbox v-for="city in cities" :label="city.id" :key="city.id">
|
||||
{{ city.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划采取措施:" style="margin-top: 20px">
|
||||
<el-select v-model="measures" placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in takeMeasures"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<br/>
|
||||
<el-form-item label="入网详情:" style="margin-top: 20px">
|
||||
<el-input
|
||||
v-model="rwxq"
|
||||
placeholder="请输入入网详情"
|
||||
type="textarea"
|
||||
style="width: 500px"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="display: flex; justify-content: center; margin-top: 30px">
|
||||
<el-button type="primary" class="ml20" @click="userDetails = false">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import {
|
||||
getLoadTypeRelationList,
|
||||
uploadLoadTypeUserA,
|
||||
exportLoadTypeRelationList,
|
||||
getLoadTypeUserById,
|
||||
exportLoadTypeUserList
|
||||
} from '@/api/Process-supervision/interferencemanagement/interferencemanagement'
|
||||
export default {
|
||||
components: { Area },
|
||||
data() {
|
||||
return {
|
||||
checkedCities: [],
|
||||
cities: [],
|
||||
rwxq: '',
|
||||
headers: {
|
||||
Authorization: window.sessionStorage.getItem('cntoken')
|
||||
},
|
||||
undocumentednonlinearData1: [],
|
||||
op: '发电用户',
|
||||
op1: [
|
||||
{
|
||||
value: '发电用户'
|
||||
},
|
||||
{
|
||||
value: '用电用户'
|
||||
}
|
||||
],
|
||||
url: '',
|
||||
total: 0,
|
||||
pageSize: 20,
|
||||
pageNum: 1,
|
||||
vh: '',
|
||||
height: null,
|
||||
isLoading: false,
|
||||
failed: false,
|
||||
userAdd: false,
|
||||
uploadConclusions: false,
|
||||
userDetails: false,
|
||||
marketingUsers: false,
|
||||
confirm: false,
|
||||
checkList: ['0'],
|
||||
radio: '0',
|
||||
textarea: '评估入网报告缺少XX指标,请整改后提交。',
|
||||
upload: '',
|
||||
formData: {
|
||||
loadType: '',
|
||||
userName: '',
|
||||
relationUserName: ''
|
||||
},
|
||||
addData: {
|
||||
orgNo: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
loadType: '',
|
||||
userName: '',
|
||||
recordTime: ''
|
||||
},
|
||||
measures: '',
|
||||
documentName: '',
|
||||
documentName1: '',
|
||||
userNumber: '',
|
||||
//是否上传
|
||||
uploadData: [
|
||||
{
|
||||
id: 1,
|
||||
|
||||
label: '是'
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
|
||||
label: '否'
|
||||
}
|
||||
],
|
||||
//干扰源类型
|
||||
interferenceType: [],
|
||||
//计划采取措施
|
||||
takeMeasures: [],
|
||||
undocumentednonlinearData: [],
|
||||
multipleSelection: [],
|
||||
multipleSelection1: [],
|
||||
fileList: [],
|
||||
fileList1: [],
|
||||
device: '',
|
||||
rwzt: [],
|
||||
view: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.rwzt = dicData('On-network_Status', [], 1)
|
||||
this.cities = dicData('Steady_Statis', [], 1)
|
||||
this.takeMeasures = dicData('Plan_Take', [], 1)
|
||||
this.takeMeasures.shift()
|
||||
// console.log(
|
||||
// this.rwzt,
|
||||
// " console.log(this.rwzt) console.log(this.rwzt)"
|
||||
// );
|
||||
this.cities.shift()
|
||||
this.interferenceType = dicData('Interference_Source', [], 0)
|
||||
},
|
||||
mounted() {
|
||||
this.onsubmit()
|
||||
this.device = window.devicePixelRatio
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.height = window.sessionStorage.getItem('appheight') - 215
|
||||
},
|
||||
closeHandle() {
|
||||
if (this.view) {
|
||||
this.view = false
|
||||
} else {
|
||||
this.view = true
|
||||
}
|
||||
//console.log('关闭和展开');
|
||||
const dom = document.getElementById('container')
|
||||
const closeDom = document.getElementsByClassName('close')[0]
|
||||
if (!dom.className.match(/(?:^|\s)expend(?!\S)/)) {
|
||||
dom.className = 'container expend'
|
||||
} else {
|
||||
dom.className = 'container close-container'
|
||||
}
|
||||
},
|
||||
dc() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
message: '请选择一条数据',
|
||||
type: 'warning'
|
||||
})
|
||||
} else {
|
||||
let a = []
|
||||
this.multipleSelection.forEach(res => {
|
||||
a.push(res.id)
|
||||
})
|
||||
exportLoadTypeRelationList(a).then(res => {
|
||||
let blob = new Blob([res], {
|
||||
type: 'application/vnd.ms-excel'
|
||||
})
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url // link.download = "电压暂降事件分析报告"; // 设置下载的文件名
|
||||
link.download = '干扰源用户长态化管理信息.xls' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.body.removeChild(link)
|
||||
})
|
||||
}
|
||||
},
|
||||
bc() {
|
||||
const formData = new FormData()
|
||||
this.fileList.forEach(item => {
|
||||
if (item.raw == '') {
|
||||
} else {
|
||||
formData.append('file', item.raw)
|
||||
}
|
||||
})
|
||||
formData.append('status', '0')
|
||||
formData.append('id', this.multipleSelection[0].id)
|
||||
formData.append('ADescription', this.rwxq)
|
||||
formData.append('AIsOverLimit', this.radio)
|
||||
formData.append('APlanStep', this.measures)
|
||||
formData.append('AOverLimitTarget', this.checkedCities.toString())
|
||||
uploadLoadTypeUserA(formData) //后端上传接口
|
||||
.then(res => {
|
||||
this.uploadConclusions = false
|
||||
// this.onsubmit()
|
||||
})
|
||||
.catch(err => {
|
||||
// console.log(err);
|
||||
})
|
||||
},
|
||||
xz() {
|
||||
window.open(this.url)
|
||||
},
|
||||
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(
|
||||
`当前限制选择 1个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||
files.length + fileList.length
|
||||
} 个文件`
|
||||
)
|
||||
},
|
||||
ck(val) {
|
||||
getLoadTypeUserById({
|
||||
id: val.id
|
||||
}).then(res => {
|
||||
this.url = res.data.ifile == null ? '' : res.data.ifile
|
||||
// this.addData.orgNo = val.orgName == null ? '' : val.orgName
|
||||
this.addData.loadType = res.data.loadType == null ? '' : res.data.loadType
|
||||
this.addData.userName = res.data.userName == null ? '' : res.data.userName
|
||||
this.addData.recordTime = res.data.recordTime == null ? '' : res.data.recordTime
|
||||
this.documentName1 = res.data.afilePath == null ? '' : res.data.afilePath
|
||||
this.radio = res.data.iisOverLimit == null ? '' : res.data.iisOverLimit.toString()
|
||||
this.checkedCities = res.data.ioverLimitTarget == null ? '' : res.data.ioverLimitTarget.split(',')
|
||||
this.measures = res.data.iplanStep == null ? '' : res.data.iplanStep
|
||||
this.rwxq = res.data.idescription == null ? '' : res.data.idescription
|
||||
this.userDetails = true
|
||||
})
|
||||
},
|
||||
tj() {
|
||||
const formData = new FormData()
|
||||
this.fileList.forEach(item => {
|
||||
if (item.raw == '') {
|
||||
} else {
|
||||
formData.append('file', item.raw)
|
||||
}
|
||||
})
|
||||
formData.append('status', '1')
|
||||
formData.append('id', this.multipleSelection[0].id)
|
||||
formData.append('ADescription', this.rwxq)
|
||||
formData.append('AIsOverLimit', this.radio)
|
||||
formData.append('APlanStep', this.measures)
|
||||
formData.append('AOverLimitTarget', this.checkedCities.toString())
|
||||
uploadLoadTypeUserA(formData) //后端上传接口
|
||||
.then(res => {
|
||||
this.uploadConclusions = false
|
||||
// this.onsubmit()
|
||||
})
|
||||
.catch(err => {
|
||||
// console.log(err);
|
||||
})
|
||||
},
|
||||
sc() {
|
||||
if (this.multipleSelection.length == 0) {
|
||||
this.$message({
|
||||
message: '请选择一条数据',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
|
||||
if (this.multipleSelection.length > 1) {
|
||||
this.$message({
|
||||
message: '只能选择一条数据',
|
||||
type: 'warning'
|
||||
})
|
||||
} else {
|
||||
this.fileList=[]
|
||||
getLoadTypeUserById({
|
||||
id: this.multipleSelection[0].id
|
||||
}).then(res => {
|
||||
this.fileList.push({
|
||||
name: res.data.afilePath,
|
||||
url: res.data.ifile,
|
||||
raw: ''
|
||||
})
|
||||
this.documentName = res.data.afilePath == null ? '' : res.data.afilePath
|
||||
this.radio = res.data.iisOverLimit == null ? '' : res.data.iisOverLimit.toString()
|
||||
this.checkedCities = res.data.ioverLimitTarget == null ? '' : res.data.ioverLimitTarget.split(',')
|
||||
this.measures = res.data.iplanStep == null ? '' : res.data.iplanStep
|
||||
this.rwxq = res.data.idescription == null ? '' : res.data.idescription
|
||||
this.uploadConclusions = true
|
||||
})
|
||||
// this.addData.orgNo = this.multipleSelection[0].orgName == null ? '' : this.multipleSelection[0].orgName
|
||||
// this.addData.loadType =
|
||||
// this.multipleSelection[0].loadType == null ? '' : this.multipleSelection[0].loadType
|
||||
// this.addData.userName =
|
||||
// this.multipleSelection[0].userName == null ? '' : this.multipleSelection[0].userName
|
||||
// this.addData.recordTime =
|
||||
// this.multipleSelection[0].recordTime == null ? '' : this.multipleSelection[0].recordTime
|
||||
}
|
||||
},
|
||||
|
||||
handleSizeChange(val) {
|
||||
this.pageSize = val
|
||||
this.onsubmit()
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.pageNum = val
|
||||
this.onsubmit()
|
||||
},
|
||||
|
||||
//上传本地评估报告
|
||||
handleRemove(file, fileList) {
|
||||
// console.log(file, fileList,'111111');
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
// console.log(file, fileList);
|
||||
this.fileList = fileList
|
||||
this.documentName=fileList[0].name
|
||||
},
|
||||
|
||||
beforeRemove(file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
//预览
|
||||
handleRemove1(file, fileList1) {
|
||||
// console.log(file, fileList,'111111');
|
||||
},
|
||||
handleChange1(file, fileList) {
|
||||
// console.log(file, fileList);
|
||||
|
||||
this.fileList = fileList
|
||||
},
|
||||
handleExceed1(files, fileList1) {
|
||||
this.$message.warning(
|
||||
`当前限制选择 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||
files.length + fileList1.length
|
||||
} 个文件`
|
||||
)
|
||||
},
|
||||
beforeRemove1(file, fileList1) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
getLoadTypeRelationList({
|
||||
loadType: this.formData.loadType,
|
||||
orgNo: this.addData.orgNo,
|
||||
pageNum: this.pageNum,
|
||||
pageSize: this.pageSize,
|
||||
relationUserName: this.formData.relationUserName,
|
||||
userName: this.formData.userName,
|
||||
aisFileUpload: this.upload
|
||||
}).then(res => {
|
||||
this.isLoading = false
|
||||
res.data.records.forEach(i => {
|
||||
this.interferenceType.forEach(o => {
|
||||
if (i.loadType == o.id) {
|
||||
i.loadType = o.name
|
||||
}
|
||||
})
|
||||
})
|
||||
this.undocumentednonlinearData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
// 新增确定
|
||||
// determineFn(){
|
||||
// this.userAdd=false;
|
||||
// },
|
||||
// 新增取消
|
||||
// cancelFn(){
|
||||
// this.userAdd=false;
|
||||
// },
|
||||
|
||||
//上传
|
||||
// uploadFn(){
|
||||
// this.uploadConclusions=true
|
||||
// },
|
||||
|
||||
//关联
|
||||
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
this.addData.orgNo = data.id
|
||||
},
|
||||
toggleSelection(rows) {
|
||||
if (rows) {
|
||||
rows.forEach(row => {
|
||||
this.$refs.multipleTable.toggleRowSelection(row)
|
||||
})
|
||||
} else {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
}
|
||||
},
|
||||
toggleSelection1(rows) {
|
||||
if (rows) {
|
||||
rows.forEach(row => {
|
||||
this.$refs.multipleTable1.toggleRowSelection(row)
|
||||
})
|
||||
} else {
|
||||
this.$refs.multipleTable1.clearSelection()
|
||||
}
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
// console.log(
|
||||
// this.multipleSelection,
|
||||
// "this.multipleSelectionthis.multipleSelection"
|
||||
// );
|
||||
},
|
||||
selectAll() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
},
|
||||
|
||||
handleSelectionChange1(val) {
|
||||
// console.log(val, "valll");
|
||||
if (val.length > 1) {
|
||||
this.toggleSelection1([val[0]])
|
||||
this.multipleSelection1 = val
|
||||
} else {
|
||||
this.multipleSelection1 = val
|
||||
}
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.$refs.area.form.value = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
this.upload = ''
|
||||
this.formData.loadType = this.interferenceType[0].id
|
||||
this.formData.userName = ''
|
||||
},
|
||||
ResetFn() {
|
||||
this.userNumber = ''
|
||||
},
|
||||
//判断颜色
|
||||
cellStyle(row) {
|
||||
// if(row.row.upload==1){
|
||||
// // if(row.columnIndex==6 ){
|
||||
// row.row.status='--'
|
||||
// // }else if(row.columnIndex==7){
|
||||
// row.row.plandetails='--'
|
||||
// // }
|
||||
// }
|
||||
if (row.columnIndex == 6) {
|
||||
if (row.row.upload == 1) {
|
||||
row.row.status = '--'
|
||||
}
|
||||
}
|
||||
if (row.columnIndex == 7) {
|
||||
if (row.row.upload == 1) {
|
||||
row.row.plandetails = '--'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
handleCheckedCitiesChange(value) {
|
||||
// console.log(value, "value");
|
||||
// console.log(this.checkedCities, "this.checkedCities");
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
::v-deep .el-form-item {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
::v-deep .el-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 !important;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
/*height:600px;*/
|
||||
max-height: calc(100% - 200px);
|
||||
max-width: calc(100% - 30px);
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.container {
|
||||
/* margin: auto; */
|
||||
top: 0px;
|
||||
right: 0;
|
||||
width: 43%;
|
||||
height: 0px;
|
||||
z-index: 2000;
|
||||
position: absolute;
|
||||
background-color: #e4e7ebb9;
|
||||
overflow: auto;
|
||||
scroll-behavior: smooth;
|
||||
-radius: 20px;
|
||||
}
|
||||
/* 隐藏滚动条 */
|
||||
::-webkit-scrollbar {
|
||||
display: block;
|
||||
}
|
||||
.expend {
|
||||
animation: expend ease 5s forwards;
|
||||
}
|
||||
.close-container {
|
||||
animation: no-expend ease 1s forwards;
|
||||
}
|
||||
@keyframes expend {
|
||||
from {
|
||||
top: 0px;
|
||||
height: auto;
|
||||
}
|
||||
to {
|
||||
height: auto;
|
||||
top: 0px;
|
||||
}
|
||||
}
|
||||
@keyframes no-expend {
|
||||
from {
|
||||
height: 20%;
|
||||
top: 0px;
|
||||
}
|
||||
to {
|
||||
top: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
}
|
||||
.coles {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
font-size: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,546 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form :inline="true" class="demo-form-inline form">
|
||||
<el-form-item>
|
||||
<Area @click="handleNodeClick" ref="area"></Area>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源类型:" class="box1">
|
||||
<el-select v-model="formData.loadType" clearable placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="formData.userName" clearable placeholder="请输入关键字"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="ml10" icon="el-icon-search" @click="onsubmit">查询</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh" @click="Reset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div class="button mb10">
|
||||
<el-button type="primary" icon="el-icon-s-claim" @click="planReviewFn('')">审核</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
stripe
|
||||
:data="reportreviewData"
|
||||
:height="height"
|
||||
border
|
||||
style="width: 100%"
|
||||
v-loading="isLoading"
|
||||
header-cell-class-name="table_header"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55"></el-table-column>
|
||||
<el-table-column type="selection" width="65"></el-table-column>
|
||||
<el-table-column prop="orgName" label="所属单位" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="loadType" label="干扰源类型" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="干扰源用户名称"
|
||||
:show-overflow-tooltip="true"
|
||||
></el-table-column>
|
||||
<el-table-column prop="recordTime" label="建档时间" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="iisFileUpload" label="是否上传报告" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.iisFileUpload == 0" type="primary" size="small">否</span>
|
||||
<span v-if="scope.row.iisFileUpload == 1" type="primary" size="small">是</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column prop="createByName" label="创建人" :show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="icheckPersonName" label="审核人" :show-overflow-tooltip="true"></el-table-column>
|
||||
|
||||
|
||||
<el-table-column prop="istatus" label="状态" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span
|
||||
v-if="scope.row.istatus == 0"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #da70d6"
|
||||
>
|
||||
新建
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == 1"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #48d1cc"
|
||||
>
|
||||
待审核
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == 3"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #dc143c; text-decoration: underline"
|
||||
@click="failed = true"
|
||||
>
|
||||
未通过
|
||||
</span>
|
||||
<span
|
||||
v-else-if="scope.row.istatus == 2"
|
||||
type="primary"
|
||||
size="small"
|
||||
style="color: #9acd32"
|
||||
>
|
||||
通过
|
||||
</span>
|
||||
<span v-else type="primary" size="small">{{ scope.row.istatus }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="plandetails" label="详情">
|
||||
<template slot-scope="scope">
|
||||
<!-- <span type="primary" size="small" style="color:blue;text-decoration:underline" @click="userDetails=true">查看</span> -->
|
||||
<el-button
|
||||
v-if="scope.row.istatus != null"
|
||||
@click="ck(scope.row)"
|
||||
size="mini"
|
||||
type="primary"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
|
||||
<!-- <el-button
|
||||
v-if="scope.row.istatus != null"
|
||||
@click="ck(scope.row)"
|
||||
size="mini"
|
||||
type="primary"
|
||||
>
|
||||
编辑
|
||||
</el-button>-->
|
||||
|
||||
<el-button
|
||||
v-if="scope.row.istatus != null"
|
||||
@click="deleteData(scope.row)"
|
||||
size="mini"
|
||||
type="primary"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
class="mt10"
|
||||
align="right"
|
||||
background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="formData.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formData.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
></el-pagination>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 审核弹窗 -->
|
||||
<el-dialog :close-on-click-modal="false" title="入网评估报告审核" :visible.sync="reportreview" width="1400px">
|
||||
|
||||
<el-form :inline="true" :model="formdata">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
|
||||
<el-form-item label="所属单位">
|
||||
<el-input v-model="formdata.orgName" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源类型:" class="box1">
|
||||
<el-select v-model="formdata.loadType" placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in interferenceType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="{
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
code: item.code,
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
sort: item.sort
|
||||
}"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="干扰源用户名称:">
|
||||
<el-input v-model="formdata.userName" clearable placeholder="请输入关键字" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="建档时间">
|
||||
<el-date-picker
|
||||
v-model.trim="formdata.recordTime"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
disabled
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
报告在线查看
|
||||
</el-divider>
|
||||
|
||||
<el-form-item class="item" label="文件名称:">
|
||||
<el-input v-model="documentName1" clearable placeholder="请输入填报名称" disabled></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button size="small" type="primary" icon="el-icon-download" @click="xz">下载</el-button>
|
||||
</el-form-item>
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">
|
||||
入网评估结论填报
|
||||
</el-divider>
|
||||
|
||||
<el-row>
|
||||
<el-form-item label="是否超标:">
|
||||
<el-radio v-model="radio" label="0" disabled>是</el-radio>
|
||||
<el-radio v-model="radio" label="1" disabled>否</el-radio>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-form-item label="超标指标:">
|
||||
<el-checkbox-group v-model="checkedCities" disabled>
|
||||
<el-checkbox disabled v-for="(city, ind) in cities" :label="city.id" :key="ind">
|
||||
{{ city.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-form-item label="计划采取措施:" style="margin-top: 20px">
|
||||
<el-select v-model="measures" placeholder="请选择" disabled>
|
||||
<el-option
|
||||
v-for="item in takeMeasures"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-form-item label="入网详情:" style="margin-top: 20px">
|
||||
<el-input
|
||||
v-model="rwxq"
|
||||
placeholder="请输入入网详情"
|
||||
type="textarea"
|
||||
style="width: 500px"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin-top: 10px">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">审核意见</el-divider>
|
||||
<!-- <div style="width: 100%; display: flex; justify-content: center">
|
||||
<div class="shyj">{{ textContent }}</div>
|
||||
</div> -->
|
||||
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="textarea"></el-input>
|
||||
<div style="display: flex; justify-content: center; margin-top: 10px">
|
||||
<el-button type="primary" class="ml20" @click="passFn">通过</el-button>
|
||||
<el-button type="primary" class="ml20" @click="failFn">不通过</el-button>
|
||||
</div>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Area from '@/views/components/Area/Area.vue'
|
||||
// import Timeinterval from "../../../components/Timeinterval.vue";
|
||||
import { dicData } from '@/assets/commjs/dictypeData'
|
||||
import {
|
||||
getLoadTypeUserList,
|
||||
checkLoadTypeUserI,
|
||||
getLoadTypeUserById
|
||||
} from '@/api/Process-supervision/interferencemanagement/interferencemanagement'
|
||||
|
||||
export default {
|
||||
components: { Area },
|
||||
data() {
|
||||
return {
|
||||
vh: '',
|
||||
height: null,
|
||||
isLoading: false,
|
||||
reportreview: false,
|
||||
formData: {
|
||||
loadType: '',
|
||||
userName: '',
|
||||
orgNo: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
// checkType: 1
|
||||
},
|
||||
formdata: {
|
||||
id:'',
|
||||
orgName: '',
|
||||
recordTime: '',
|
||||
loadType: '',
|
||||
userName: ''
|
||||
},
|
||||
radio:'',
|
||||
checkedCities: [],
|
||||
cities: [],
|
||||
takeMeasures: [],
|
||||
documentName1: '',
|
||||
measures: '',
|
||||
rwxq:'',
|
||||
//干扰源类型
|
||||
interferenceType: [],
|
||||
textarea: '',
|
||||
total: null,
|
||||
|
||||
tableHeaderReportreview: [
|
||||
{ prop: 'orgName', label: '所属单位' },
|
||||
{ prop: 'loadType', label: '干扰源类型' },
|
||||
{ prop: 'userName', label: '干扰源用户名称' },
|
||||
{ prop: 'recordTime', label: '建档时间' },
|
||||
{ prop: 'iuploadTime', label: '报告提交评估时间' }
|
||||
],
|
||||
reportreviewData: [],
|
||||
multipleSelection: [],
|
||||
fileList: [],
|
||||
device: '',
|
||||
documentName: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getclassificationData()
|
||||
this.formData.orgNo = JSON.parse(window.sessionStorage.getItem('Info')).deptId
|
||||
|
||||
this.cities = dicData('Steady_Statis', [])
|
||||
|
||||
this.takeMeasures = dicData('Plan_Take', [], 1)
|
||||
},
|
||||
mounted() {
|
||||
this.onsubmit()
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio
|
||||
this.height = window.sessionStorage.getItem('appheight') - 215
|
||||
},
|
||||
//获取类型
|
||||
getclassificationData() {
|
||||
//电压等级
|
||||
this.interferenceType = dicData('Interference_Source', [])
|
||||
},
|
||||
//预览
|
||||
handleRemove(file, fileList) {
|
||||
// console.log(file, fileList,'111111');
|
||||
},
|
||||
xz() {
|
||||
window.open(this.multipleSelection[0].ifile)
|
||||
},
|
||||
handleChange(file, fileList) {
|
||||
// console.log(file.name.split(".").splice(0, 1).toString());
|
||||
this.documentName = file.name.split('.').splice(0, 1).toString()
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(
|
||||
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
|
||||
files.length + fileList.length
|
||||
} 个文件`
|
||||
)
|
||||
},
|
||||
beforeRemove(file, fileList) {
|
||||
return this.$confirm(`确定移除 ${file.name}?`)
|
||||
},
|
||||
//查询
|
||||
onsubmit() {
|
||||
this.isLoading = true
|
||||
this.formData.checkType = 1
|
||||
getLoadTypeUserList(this.formData).then(res => {
|
||||
this.isLoading = false
|
||||
this.reportreviewData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
// 数据过滤
|
||||
formFilter(row, column) {
|
||||
if (column.property == 'loadType') {
|
||||
let title = ''
|
||||
this.interferenceType.forEach(item => {
|
||||
if (item.id == row.loadType) {
|
||||
title = item.name
|
||||
}
|
||||
})
|
||||
return title
|
||||
} else {
|
||||
return row[column.property]
|
||||
}
|
||||
},
|
||||
//审核
|
||||
planReviewFn(planId) {
|
||||
if(planId && planId!==''){
|
||||
//说明是从代办页面点击过来的
|
||||
this.queryPlanOneDetail(planId)
|
||||
}else {
|
||||
if (this.multipleSelection.length == 1) {
|
||||
this.queryPlanOneDetail(this.multipleSelection[0].id)
|
||||
} else {
|
||||
this.$message({
|
||||
message: this.multipleSelection.length == 0 ? '请选择1条数据!' : '只能选择1条数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//查询详情
|
||||
queryPlanOneDetail(planId){
|
||||
|
||||
let data = {id:planId}
|
||||
getLoadTypeUserById(data).then(res => {
|
||||
if(res.code === 'A0000'){
|
||||
this.formdata = res.data
|
||||
this.documentName1 = res.data.ifilePath == null ? '' : res.data.ifilePath
|
||||
this.radio = res.data.iisOverLimit == null ? '' : res.data.iisOverLimit.toString()
|
||||
this.checkedCities = res.data.ioverLimitTarget == null ? '' : res.data.ioverLimitTarget.split(',')
|
||||
this.measures = res.data.iplanStep == null ? '' : res.data.iplanStep
|
||||
this.rwxq = res.data.idescription == null ? '' : res.data.idescription
|
||||
this.reportreview = true
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
//分页
|
||||
handleSizeChange(val) {
|
||||
this.formData.pageSize = val
|
||||
this.onsubmit()
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.formData.pageNum = val
|
||||
this.onsubmit()
|
||||
},
|
||||
//普测计划审核通过
|
||||
passFn() {
|
||||
checkLoadTypeUserI({
|
||||
checkComment: this.textarea,
|
||||
checkResult: 1,
|
||||
id: this.formdata.id
|
||||
}).then(res => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '审核完成',
|
||||
type: 'success'
|
||||
})
|
||||
this.reportreview = false
|
||||
this.onsubmit()
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//普测计划不通过
|
||||
failFn() {
|
||||
checkLoadTypeUserI({
|
||||
checkComment: this.textarea,
|
||||
checkResult: 0,
|
||||
id: this.formdata.id
|
||||
}).then(res => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '审核完成',
|
||||
type: 'success'
|
||||
})
|
||||
this.reportreview = false
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//普测计划取消
|
||||
cancelFn() {
|
||||
this.reportreview = false
|
||||
},
|
||||
// 切换选项
|
||||
handleNodeClick(data) {
|
||||
// console.log(data);
|
||||
this.formData.orgNo = data.id
|
||||
},
|
||||
//勾选
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
//重置
|
||||
Reset() {
|
||||
this.$refs.area.form.valueTitle = JSON.parse(window.sessionStorage.getItem('Info')).deptName
|
||||
this.formData = {
|
||||
orgNo: JSON.parse(window.sessionStorage.getItem('Info')).deptId,
|
||||
loadType: '',
|
||||
userName: '',
|
||||
|
||||
pageNum: 1,
|
||||
pageSize: 20
|
||||
}
|
||||
},
|
||||
//序号
|
||||
rowClassName({ row, rowIndex }) {
|
||||
row.number = rowIndex + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../../styles/comStyle.less');
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
::v-deep .form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
.button {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
::v-deep .el-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin: 0 !important;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
/*height:600px;*/
|
||||
max-height: calc(100% - 200px);
|
||||
max-width: calc(100% - 30px);
|
||||
}
|
||||
::v-deep .el-dialog .el-dialog__body {
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
69
src/views/Process-supervision/electricitymanagement.vue
Normal file
69
src/views/Process-supervision/electricitymanagement.vue
Normal file
@@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div class="pd10">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-tabs v-model.trim="activeName" @tab-click="handleClick" type="border-card">
|
||||
<el-tab-pane label="电能质量问题查询维护" name="1" :style="'height:' + vh + 'px;'">
|
||||
<QueryMaintenance v-if="activeName == '1'"></QueryMaintenance>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="电能质量问题审核" name="2" :style="'height:' + vh + 'px;'">
|
||||
<Qualityproblems v-if="activeName == '2'"></Qualityproblems>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="在线监测" name="3" :style="'height:' + vh + 'px;'">
|
||||
<onlineMonitoring v-if="activeName == '3'"></onlineMonitoring>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import QueryMaintenance from './components/electricitymanagement/QueryMaintenance.vue'
|
||||
import Qualityproblems from './components/electricitymanagement/Qualityproblems.vue'
|
||||
import onlineMonitoring from './components/electricitymanagement/onlineMonitoring.vue'
|
||||
export default {
|
||||
name: 'dnzlwtgl',
|
||||
components: { QueryMaintenance, Qualityproblems,onlineMonitoring },
|
||||
data() {
|
||||
return {
|
||||
vh: undefined,
|
||||
activeName: '1'
|
||||
}
|
||||
},
|
||||
created() { },
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 82
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../styles/comStyle.less');
|
||||
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
::v-deep .el-tabs--border-card>.el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.block {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
::v-deep .el-carousel__button {
|
||||
background-color: #000;
|
||||
}
|
||||
</style>
|
||||
9
src/views/Process-supervision/flowPath/.bpmnlintrc.json
Normal file
9
src/views/Process-supervision/flowPath/.bpmnlintrc.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": [
|
||||
"bpmnlint:recommended",
|
||||
"plugin:local/recommended"
|
||||
],
|
||||
"rules": {
|
||||
"local/no-manual-task": "warn"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import translations from '../lang/zh'
|
||||
|
||||
// export default function customTranslate(template, replacements) {
|
||||
// replacements = replacements || {}
|
||||
//
|
||||
// // Translate
|
||||
// template = translations[template] || template
|
||||
//
|
||||
// // Replace
|
||||
// return template.replace(/{([^}]+)}/g, function(_, key) {
|
||||
// var str = replacements[key]
|
||||
// if (
|
||||
// translations[replacements[key]] !== null &&
|
||||
// translations[replacements[key]] !== 'undefined'
|
||||
// ) {
|
||||
// str = translations[replacements[key]]
|
||||
// }
|
||||
// return str || '{' + key + '}'
|
||||
// })
|
||||
// }
|
||||
|
||||
export default function customTranslate(template, replacements) {
|
||||
replacements = replacements || {};
|
||||
|
||||
// Translate
|
||||
template = translations[template] || template;
|
||||
|
||||
// Replace
|
||||
return template.replace(/{([^}]+)}/g, function(_, key) {
|
||||
return replacements[key] || '{' + key + '}';
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
import executionListenerDialog from '../components/nodePanel/property/executionListener'
|
||||
export default {
|
||||
components: {
|
||||
executionListenerDialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
executionListenerLength: 0,
|
||||
dialogName: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
computedExecutionListenerLength() {
|
||||
this.executionListenerLength = this.element.businessObject.extensionElements.values.length == 0
|
||||
},
|
||||
finishExecutionListener() {
|
||||
if (this.dialogName === 'executionListenerDialog') {
|
||||
this.computedExecutionListenerLength()
|
||||
}
|
||||
this.dialogName = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
70
src/views/Process-supervision/flowPath/common/mixinPanel.js
Normal file
70
src/views/Process-supervision/flowPath/common/mixinPanel.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import xcrud from 'xcrud'
|
||||
import golbalConfig from 'xcrud/package/common/config'
|
||||
import showConfig from '../flowable/showConfig'
|
||||
golbalConfig.set({
|
||||
input: {
|
||||
// size: 'mini'
|
||||
},
|
||||
select: {
|
||||
// size: 'mini'
|
||||
},
|
||||
colorPicker: {
|
||||
showAlpha: true
|
||||
},
|
||||
xform: {
|
||||
form: {
|
||||
labelWidth: 'auto'
|
||||
// size: 'mini'
|
||||
}
|
||||
}
|
||||
})
|
||||
export default {
|
||||
components: { xForm: xcrud.xForm },
|
||||
props: {
|
||||
modeler: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
element: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
categorys: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'formData.id': function(val) {
|
||||
this.updateProperties({ id: val })
|
||||
},
|
||||
'formData.name': function(val) {
|
||||
this.updateProperties({ name: val })
|
||||
},
|
||||
'formData.documentation': function(val) {
|
||||
if (!val) {
|
||||
this.updateProperties({ documentation: [] })
|
||||
return
|
||||
}
|
||||
const documentationElement = this.modeler.get('moddle').create('bpmn:Documentation', { text: val })
|
||||
this.updateProperties({ documentation: [documentationElement] })
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
updateProperties(properties) {
|
||||
const modeling = this.modeler.get('modeling')
|
||||
modeling.updateProperties(this.element, properties)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
elementType() {
|
||||
const bizObj = this.element.businessObject
|
||||
return bizObj.eventDefinitions
|
||||
? bizObj.eventDefinitions[0].$type
|
||||
: bizObj.$type
|
||||
},
|
||||
showConfig() {
|
||||
return showConfig[this.elementType] || {}
|
||||
}
|
||||
}
|
||||
}
|
||||
22
src/views/Process-supervision/flowPath/common/mixinXcrud.js
Normal file
22
src/views/Process-supervision/flowPath/common/mixinXcrud.js
Normal file
@@ -0,0 +1,22 @@
|
||||
import xcrud from 'xcrud'
|
||||
import golbalConfig from 'xcrud/package/common/config'
|
||||
golbalConfig.set({
|
||||
input: {
|
||||
// size: 'mini'
|
||||
},
|
||||
select: {
|
||||
// size: 'mini'
|
||||
},
|
||||
colorPicker: {
|
||||
showAlpha: true
|
||||
},
|
||||
xform: {
|
||||
form: {
|
||||
labelWidth: 'auto'
|
||||
// size: 'mini'
|
||||
}
|
||||
}
|
||||
})
|
||||
export default {
|
||||
components: { xForm: xcrud.xForm }
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
export function commonParse(element) {
|
||||
const result = {
|
||||
...element.businessObject,
|
||||
...element.businessObject.$attrs
|
||||
}
|
||||
return formatJsonKeyValue(result)
|
||||
}
|
||||
|
||||
export function formatJsonKeyValue(result) {
|
||||
// 移除flowable前缀,格式化数组
|
||||
for (const key in result) {
|
||||
if (key.indexOf('flowable:') === 0) {
|
||||
const newKey = key.replace('flowable:', '')
|
||||
result[newKey] = result[key]
|
||||
delete result[key]
|
||||
}
|
||||
}
|
||||
result = documentationParse(result)
|
||||
return result
|
||||
}
|
||||
|
||||
export function documentationParse(obj) {
|
||||
if ('documentation' in obj) {
|
||||
let str = ''
|
||||
obj.documentation.forEach(item => {
|
||||
str += item.text
|
||||
})
|
||||
obj.documentation = str
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
export function conditionExpressionParse(obj) {
|
||||
if ('conditionExpression' in obj) {
|
||||
if (obj.conditionExpression) {
|
||||
obj.conditionExpression = obj.conditionExpression.body
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
export function userTaskParse(obj) {
|
||||
for (const key in obj) {
|
||||
if (key === 'candidateUsers') {
|
||||
obj.userType = 'candidateUsers'
|
||||
obj[key] = obj[key].split(',') || []
|
||||
} else if (key === 'candidateGroups') {
|
||||
obj.userType = 'candidateGroups'
|
||||
obj[key] = obj[key].split(',') || []
|
||||
} else if (key === 'assignee') {
|
||||
obj.userType = 'assignee'
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
@@ -0,0 +1,524 @@
|
||||
import {
|
||||
assign,
|
||||
forEach,
|
||||
isArray,
|
||||
every
|
||||
} from 'min-dash';
|
||||
|
||||
import {
|
||||
is
|
||||
} from 'bpmn-js/lib/util/ModelUtil';
|
||||
|
||||
import {
|
||||
isExpanded,
|
||||
isEventSubProcess
|
||||
} from 'bpmn-js/lib/util/DiUtil';
|
||||
|
||||
import {
|
||||
isAny
|
||||
} from 'bpmn-js/lib/features/modeling/util/ModelingUtil';
|
||||
|
||||
import {
|
||||
getChildLanes
|
||||
} from 'bpmn-js/lib/features/modeling/util/LaneUtil';
|
||||
|
||||
import {
|
||||
hasPrimaryModifier
|
||||
} from 'diagram-js/lib/util/Mouse';
|
||||
|
||||
|
||||
/**
|
||||
* A provider for BPMN 2.0 elements context pad
|
||||
*/
|
||||
export default function ContextPadProvider(
|
||||
config, injector, eventBus,
|
||||
contextPad, modeling, elementFactory,
|
||||
connect, create, popupMenu,
|
||||
canvas, rules, translate) {
|
||||
|
||||
config = config || {};
|
||||
|
||||
contextPad.registerProvider(this);
|
||||
|
||||
this._contextPad = contextPad;
|
||||
|
||||
this._modeling = modeling;
|
||||
|
||||
this._elementFactory = elementFactory;
|
||||
this._connect = connect;
|
||||
this._create = create;
|
||||
this._popupMenu = popupMenu;
|
||||
this._canvas = canvas;
|
||||
this._rules = rules;
|
||||
this._translate = translate;
|
||||
|
||||
if (config.autoPlace !== false) {
|
||||
this._autoPlace = injector.get('autoPlace', false);
|
||||
}
|
||||
|
||||
eventBus.on('create.end', 250, function(event) {
|
||||
var context = event.context,
|
||||
shape = context.shape;
|
||||
|
||||
if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var entries = contextPad.getEntries(shape);
|
||||
|
||||
if (entries.replace) {
|
||||
entries.replace.action.click(event, shape);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ContextPadProvider.$inject = [
|
||||
'config.contextPad',
|
||||
'injector',
|
||||
'eventBus',
|
||||
'contextPad',
|
||||
'modeling',
|
||||
'elementFactory',
|
||||
'connect',
|
||||
'create',
|
||||
'popupMenu',
|
||||
'canvas',
|
||||
'rules',
|
||||
'translate'
|
||||
];
|
||||
|
||||
ContextPadProvider.prototype.getMultiElementContextPadEntries = function(elements) {
|
||||
var modeling = this._modeling;
|
||||
|
||||
var actions = {};
|
||||
|
||||
if (this._isDeleteAllowed(elements)) {
|
||||
assign(actions, {
|
||||
'delete': {
|
||||
group: 'edit',
|
||||
className: 'bpmn-icon-trash',
|
||||
title: this._translate('Remove'),
|
||||
action: {
|
||||
click: function(event, elements) {
|
||||
modeling.removeElements(elements.slice());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return actions;
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {djs.model.Base[]} elements
|
||||
* @return {boolean}
|
||||
*/
|
||||
ContextPadProvider.prototype._isDeleteAllowed = function(elements) {
|
||||
|
||||
var baseAllowed = this._rules.allowed('elements.delete', {
|
||||
elements: elements
|
||||
});
|
||||
|
||||
if (isArray(baseAllowed)) {
|
||||
return every(baseAllowed, function(element) {
|
||||
return includes(baseAllowed, element);
|
||||
});
|
||||
}
|
||||
|
||||
return baseAllowed;
|
||||
};
|
||||
|
||||
ContextPadProvider.prototype.getContextPadEntries = function(element) {
|
||||
var contextPad = this._contextPad,
|
||||
modeling = this._modeling,
|
||||
|
||||
elementFactory = this._elementFactory,
|
||||
connect = this._connect,
|
||||
create = this._create,
|
||||
popupMenu = this._popupMenu,
|
||||
rules = this._rules,
|
||||
autoPlace = this._autoPlace,
|
||||
translate = this._translate;
|
||||
|
||||
var actions = {};
|
||||
|
||||
if (element.type === 'label') {
|
||||
return actions;
|
||||
}
|
||||
|
||||
var businessObject = element.businessObject;
|
||||
|
||||
function startConnect(event, element) {
|
||||
connect.start(event, element);
|
||||
}
|
||||
|
||||
function removeElement(e, element) {
|
||||
modeling.removeElements([ element ]);
|
||||
}
|
||||
|
||||
function getReplaceMenuPosition(element) {
|
||||
|
||||
var Y_OFFSET = 5;
|
||||
|
||||
var pad = contextPad.getPad(element).html;
|
||||
|
||||
var padRect = pad.getBoundingClientRect();
|
||||
|
||||
var pos = {
|
||||
x: padRect.left,
|
||||
y: padRect.bottom + Y_OFFSET
|
||||
};
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create an append action
|
||||
*
|
||||
* @param {string} type
|
||||
* @param {string} className
|
||||
* @param {string} [title]
|
||||
* @param {Object} [options]
|
||||
*
|
||||
* @return {Object} descriptor
|
||||
*/
|
||||
function appendAction(type, className, title, options) {
|
||||
|
||||
if (typeof title !== 'string') {
|
||||
options = title;
|
||||
title = translate('Append {type}', { type: type.replace(/^bpmn:/, '') });
|
||||
}
|
||||
|
||||
function appendStart(event, element) {
|
||||
|
||||
var shape = elementFactory.createShape(assign({ type: type }, options));
|
||||
create.start(event, shape, {
|
||||
source: element
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
var append = autoPlace ? function(event, element) {
|
||||
var shape = elementFactory.createShape(assign({ type: type }, options));
|
||||
|
||||
autoPlace.append(element, shape);
|
||||
} : appendStart;
|
||||
|
||||
|
||||
return {
|
||||
group: 'model',
|
||||
className: className,
|
||||
title: title,
|
||||
action: {
|
||||
dragstart: appendStart,
|
||||
click: append
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function splitLaneHandler(count) {
|
||||
|
||||
return function(event, element) {
|
||||
|
||||
// actual split
|
||||
modeling.splitLane(element, count);
|
||||
|
||||
// refresh context pad after split to
|
||||
// get rid of split icons
|
||||
contextPad.open(element, true);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
if (isAny(businessObject, [ 'bpmn:Lane', 'bpmn:Participant' ]) && isExpanded(element)) {
|
||||
|
||||
var childLanes = getChildLanes(element);
|
||||
|
||||
assign(actions, {
|
||||
'lane-insert-above': {
|
||||
group: 'lane-insert-above',
|
||||
className: 'bpmn-icon-lane-insert-above',
|
||||
title: translate('Add Lane above'),
|
||||
action: {
|
||||
click: function(event, element) {
|
||||
modeling.addLane(element, 'top');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (childLanes.length < 2) {
|
||||
|
||||
if (element.height >= 120) {
|
||||
assign(actions, {
|
||||
'lane-divide-two': {
|
||||
group: 'lane-divide',
|
||||
className: 'bpmn-icon-lane-divide-two',
|
||||
title: translate('Divide into two Lanes'),
|
||||
action: {
|
||||
click: splitLaneHandler(2)
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (element.height >= 180) {
|
||||
assign(actions, {
|
||||
'lane-divide-three': {
|
||||
group: 'lane-divide',
|
||||
className: 'bpmn-icon-lane-divide-three',
|
||||
title: translate('Divide into three Lanes'),
|
||||
action: {
|
||||
click: splitLaneHandler(3)
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
assign(actions, {
|
||||
'lane-insert-below': {
|
||||
group: 'lane-insert-below',
|
||||
className: 'bpmn-icon-lane-insert-below',
|
||||
title: translate('Add Lane below'),
|
||||
action: {
|
||||
click: function(event, element) {
|
||||
modeling.addLane(element, 'bottom');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if (is(businessObject, 'bpmn:FlowNode')) {
|
||||
|
||||
if (is(businessObject, 'bpmn:EventBasedGateway')) {
|
||||
|
||||
assign(actions, {
|
||||
'append.receive-task': appendAction(
|
||||
'bpmn:ReceiveTask',
|
||||
'bpmn-icon-receive-task',
|
||||
translate('Append ReceiveTask')
|
||||
),
|
||||
'append.message-intermediate-event': appendAction(
|
||||
'bpmn:IntermediateCatchEvent',
|
||||
'bpmn-icon-intermediate-event-catch-message',
|
||||
translate('Append MessageIntermediateCatchEvent'),
|
||||
{ eventDefinitionType: 'bpmn:MessageEventDefinition' }
|
||||
),
|
||||
'append.timer-intermediate-event': appendAction(
|
||||
'bpmn:IntermediateCatchEvent',
|
||||
'bpmn-icon-intermediate-event-catch-timer',
|
||||
translate('Append TimerIntermediateCatchEvent'),
|
||||
{ eventDefinitionType: 'bpmn:TimerEventDefinition' }
|
||||
),
|
||||
'append.condition-intermediate-event': appendAction(
|
||||
'bpmn:IntermediateCatchEvent',
|
||||
'bpmn-icon-intermediate-event-catch-condition',
|
||||
translate('Append ConditionIntermediateCatchEvent'),
|
||||
{ eventDefinitionType: 'bpmn:ConditionalEventDefinition' }
|
||||
),
|
||||
'append.signal-intermediate-event': appendAction(
|
||||
'bpmn:IntermediateCatchEvent',
|
||||
'bpmn-icon-intermediate-event-catch-signal',
|
||||
translate('Append SignalIntermediateCatchEvent'),
|
||||
{ eventDefinitionType: 'bpmn:SignalEventDefinition' }
|
||||
)
|
||||
});
|
||||
} else
|
||||
|
||||
if (isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition')) {
|
||||
|
||||
assign(actions, {
|
||||
'append.compensation-activity':
|
||||
appendAction(
|
||||
'bpmn:Task',
|
||||
'bpmn-icon-task',
|
||||
translate('Append compensation activity'),
|
||||
{
|
||||
isForCompensation: true
|
||||
}
|
||||
)
|
||||
});
|
||||
} else
|
||||
|
||||
if (!is(businessObject, 'bpmn:EndEvent') &&
|
||||
!businessObject.isForCompensation &&
|
||||
!isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') &&
|
||||
!isEventSubProcess(businessObject)) {
|
||||
|
||||
assign(actions, {
|
||||
'append.end-event': appendAction(
|
||||
'bpmn:EndEvent',
|
||||
'bpmn-icon-end-event-none',
|
||||
translate('Append EndEvent')
|
||||
),
|
||||
'append.gateway': appendAction(
|
||||
'bpmn:ExclusiveGateway',
|
||||
'bpmn-icon-gateway-none',
|
||||
translate('Append Gateway')
|
||||
),
|
||||
'append.append-user-task': appendAction(
|
||||
'bpmn:UserTask',
|
||||
'bpmn-icon-user-task',
|
||||
'添加用户任务'
|
||||
),
|
||||
'append.intermediate-event': appendAction(
|
||||
'bpmn:IntermediateThrowEvent',
|
||||
'bpmn-icon-intermediate-event-none',
|
||||
translate('Append Intermediate/Boundary Event')
|
||||
)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (!popupMenu.isEmpty(element, 'bpmn-replace')) {
|
||||
|
||||
// Replace menu entry
|
||||
assign(actions, {
|
||||
'replace': {
|
||||
group: 'edit',
|
||||
className: 'bpmn-icon-screw-wrench',
|
||||
title: translate('Change type'),
|
||||
action: {
|
||||
click: function(event, element) {
|
||||
|
||||
var position = assign(getReplaceMenuPosition(element), {
|
||||
cursor: { x: event.x, y: event.y }
|
||||
});
|
||||
|
||||
popupMenu.open(element, 'bpmn-replace', position, {
|
||||
title: translate('Change element'),
|
||||
width: 300,
|
||||
search: true
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (is(businessObject, 'bpmn:SequenceFlow')) {
|
||||
assign(actions, {
|
||||
'append.text-annotation': appendAction(
|
||||
'bpmn:TextAnnotation',
|
||||
'bpmn-icon-text-annotation'
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
isAny(businessObject, [
|
||||
'bpmn:FlowNode',
|
||||
'bpmn:InteractionNode',
|
||||
'bpmn:DataObjectReference',
|
||||
'bpmn:DataStoreReference',
|
||||
])
|
||||
) {
|
||||
assign(actions, {
|
||||
'append.text-annotation': appendAction(
|
||||
'bpmn:TextAnnotation',
|
||||
'bpmn-icon-text-annotation'
|
||||
),
|
||||
|
||||
'connect': {
|
||||
group: 'connect',
|
||||
className: 'bpmn-icon-connection-multi',
|
||||
title: translate(
|
||||
'Connect using ' +
|
||||
(businessObject.isForCompensation
|
||||
? ''
|
||||
: 'Sequence/MessageFlow or ') +
|
||||
'Association'
|
||||
),
|
||||
action: {
|
||||
click: startConnect,
|
||||
dragstart: startConnect,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (is(businessObject, 'bpmn:TextAnnotation')) {
|
||||
assign(actions, {
|
||||
'connect': {
|
||||
group: 'connect',
|
||||
className: 'bpmn-icon-connection-multi',
|
||||
title: translate('Connect using Association'),
|
||||
action: {
|
||||
click: startConnect,
|
||||
dragstart: startConnect,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (isAny(businessObject, [ 'bpmn:DataObjectReference', 'bpmn:DataStoreReference' ])) {
|
||||
assign(actions, {
|
||||
'connect': {
|
||||
group: 'connect',
|
||||
className: 'bpmn-icon-connection-multi',
|
||||
title: translate('Connect using DataInputAssociation'),
|
||||
action: {
|
||||
click: startConnect,
|
||||
dragstart: startConnect
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (is(businessObject, 'bpmn:Group')) {
|
||||
assign(actions, {
|
||||
'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation')
|
||||
});
|
||||
}
|
||||
|
||||
// delete element entry, only show if allowed by rules
|
||||
var deleteAllowed = rules.allowed('elements.delete', { elements: [ element ] });
|
||||
|
||||
if (isArray(deleteAllowed)) {
|
||||
|
||||
// was the element returned as a deletion candidate?
|
||||
deleteAllowed = deleteAllowed[0] === element;
|
||||
}
|
||||
|
||||
if (deleteAllowed) {
|
||||
assign(actions, {
|
||||
'delete': {
|
||||
group: 'edit',
|
||||
className: 'bpmn-icon-trash',
|
||||
title: translate('Remove'),
|
||||
action: {
|
||||
click: removeElement
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return actions;
|
||||
};
|
||||
|
||||
|
||||
// helpers /////////
|
||||
|
||||
function isEventType(eventBo, type, definition) {
|
||||
|
||||
var isType = eventBo.$instanceOf(type);
|
||||
var isDefinition = false;
|
||||
|
||||
var definitions = eventBo.eventDefinitions || [];
|
||||
forEach(definitions, function(def) {
|
||||
if (def.$type === definition) {
|
||||
isDefinition = true;
|
||||
}
|
||||
});
|
||||
|
||||
return isType && isDefinition;
|
||||
}
|
||||
|
||||
function includes(array, item) {
|
||||
return array.indexOf(item) !== -1;
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
import { assign } from "min-dash";
|
||||
|
||||
export default function CustomPalette(
|
||||
palette,
|
||||
create,
|
||||
elementFactory,
|
||||
handTool,
|
||||
lassoTool,
|
||||
spaceTool,
|
||||
globalConnect,
|
||||
translate
|
||||
) {
|
||||
this.create = create;
|
||||
this.elementFactory = elementFactory;
|
||||
this.handTool = handTool;
|
||||
this.lassoTool = lassoTool;
|
||||
this.spaceTool = spaceTool;
|
||||
this.globalConnect = globalConnect;
|
||||
this.translate = translate;
|
||||
|
||||
palette.registerProvider(this);
|
||||
}
|
||||
|
||||
CustomPalette.$inject = [
|
||||
"palette",
|
||||
"create",
|
||||
"elementFactory",
|
||||
"handTool",
|
||||
"lassoTool",
|
||||
"spaceTool",
|
||||
"globalConnect",
|
||||
"translate"
|
||||
];
|
||||
|
||||
CustomPalette.prototype.getPaletteEntries = function (element) {
|
||||
const {
|
||||
create,
|
||||
elementFactory,
|
||||
handTool,
|
||||
lassoTool,
|
||||
spaceTool,
|
||||
globalConnect,
|
||||
translate
|
||||
} = this;
|
||||
|
||||
function createAction(type, group, className, title, options) {
|
||||
function createListener(event) {
|
||||
var shape = elementFactory.createShape(assign({ type: type }, options));
|
||||
|
||||
if (options) {
|
||||
shape.businessObject.di.isExpanded = options.isExpanded;
|
||||
}
|
||||
|
||||
create.start(event, shape);
|
||||
}
|
||||
|
||||
var shortType = type.replace(/^bpmn:/, "");
|
||||
|
||||
return {
|
||||
group: group,
|
||||
className: className,
|
||||
title: title || translate("Create {type}", { type: shortType }),
|
||||
action: {
|
||||
dragstart: createListener,
|
||||
click: createListener
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
'hand-tool': {
|
||||
group: 'tools',
|
||||
className: 'bpmn-icon-hand-tool',
|
||||
title: '激活抓手工具',
|
||||
action: {
|
||||
click: function(event) {
|
||||
handTool.activateHand(event);
|
||||
}
|
||||
}
|
||||
},
|
||||
"lasso-tool": {
|
||||
group: "tools",
|
||||
className: "bpmn-icon-lasso-tool",
|
||||
title: "激活套索工具",
|
||||
action: {
|
||||
click: function (event) {
|
||||
lassoTool.activateSelection(event);
|
||||
}
|
||||
}
|
||||
},
|
||||
'space-tool': {
|
||||
group: 'tools',
|
||||
className: 'bpmn-icon-space-tool',
|
||||
title: translate('Activate the create/remove space tool'),
|
||||
action: {
|
||||
click: function(event) {
|
||||
spaceTool.activateSelection(event);
|
||||
}
|
||||
}
|
||||
},
|
||||
'global-connect-tool': {
|
||||
group: 'tools',
|
||||
className: 'bpmn-icon-connection-multi',
|
||||
title: translate('Activate the global connect tool'),
|
||||
action: {
|
||||
click: function(event) {
|
||||
globalConnect.start(event);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"tool-separator": {
|
||||
group: "tools",
|
||||
separator: true
|
||||
},
|
||||
|
||||
"create.start-event": createAction(
|
||||
"bpmn:StartEvent",
|
||||
"event",
|
||||
"bpmn-icon-start-event-none",
|
||||
"创建开始节点"
|
||||
),
|
||||
"create.end-event": createAction(
|
||||
"bpmn:EndEvent",
|
||||
"event",
|
||||
"bpmn-icon-end-event-none",
|
||||
"创建结束节点"
|
||||
),
|
||||
"create.user-task": createAction(
|
||||
"bpmn:UserTask",
|
||||
"activity",
|
||||
"bpmn-icon-user-task",
|
||||
"创建用户任务"
|
||||
),
|
||||
"create.exclusive-gateway": createAction(
|
||||
"bpmn:ExclusiveGateway",
|
||||
"gateway",
|
||||
"bpmn-icon-gateway-xor",
|
||||
"创建排他网关"
|
||||
)
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
import CustomContextPad from './CustomContextPad';
|
||||
import CustomPalette from "./CustomPalette";
|
||||
|
||||
export default {
|
||||
__init__: [ 'paletteProvider','contextPadProvider'],
|
||||
paletteProvider: [ 'type', CustomPalette ],
|
||||
contextPadProvider: [ 'type', CustomContextPad ],
|
||||
};
|
||||
1195
src/views/Process-supervision/flowPath/flowable/flowable.json
Normal file
1195
src/views/Process-supervision/flowPath/flowable/flowable.json
Normal file
File diff suppressed because it is too large
Load Diff
33
src/views/Process-supervision/flowPath/flowable/init.js
Normal file
33
src/views/Process-supervision/flowPath/flowable/init.js
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
function randomStr() {
|
||||
return Math.random().toString(36).slice(-8)
|
||||
}
|
||||
|
||||
export default function() {
|
||||
return `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<definitions
|
||||
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
|
||||
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
|
||||
xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:flowable="http://flowable.org/bpmn"
|
||||
targetNamespace="http://www.flowable.org/processdef"
|
||||
>
|
||||
<process id="flow_${randomStr()}" name="flow_${randomStr()}">
|
||||
<startEvent id="start_event" name="开始" />
|
||||
</process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_flow">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_flow" bpmnElement="T-2d89e7a3-ba79-4abd-9f64-ea59621c258c">
|
||||
<bpmndi:BPMNShape id="BPMNShape_start_event" bpmnElement="start_event" bioc:stroke="">
|
||||
<omgdc:Bounds x="240" y="200" width="30" height="30" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds x="242" y="237" width="23" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</definitions>
|
||||
`
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
export default {
|
||||
'bpmn:EndEvent': {},
|
||||
'bpmn:StartEvent': {
|
||||
initiator: true,
|
||||
formKey: true
|
||||
},
|
||||
'bpmn:UserTask': {
|
||||
userType: true,
|
||||
assignee: true,
|
||||
candidateUsers: true,
|
||||
candidateGroups: true,
|
||||
async: true,
|
||||
priority: true,
|
||||
formKey: true,
|
||||
skipExpression: true,
|
||||
dueDate: true,
|
||||
taskListener: true
|
||||
},
|
||||
'bpmn:ServiceTask': {
|
||||
async: true,
|
||||
skipExpression: true,
|
||||
isForCompensation: true,
|
||||
triggerable: true,
|
||||
class: true
|
||||
},
|
||||
'bpmn:ScriptTask': {
|
||||
async: true,
|
||||
isForCompensation: true,
|
||||
autoStoreVariables: true
|
||||
},
|
||||
'bpmn:ManualTask': {
|
||||
async: true,
|
||||
isForCompensation: true
|
||||
},
|
||||
'bpmn:ReceiveTask': {
|
||||
async: true,
|
||||
isForCompensation: true
|
||||
},
|
||||
'bpmn:SendTask': {
|
||||
async: true,
|
||||
isForCompensation: true
|
||||
},
|
||||
'bpmn:BusinessRuleTask': {
|
||||
async: true,
|
||||
isForCompensation: true,
|
||||
ruleVariablesInput: true,
|
||||
rules: true,
|
||||
resultVariable: true,
|
||||
exclude: true
|
||||
}
|
||||
}
|
||||
232
src/views/Process-supervision/flowPath/lang/zh.js
Normal file
232
src/views/Process-supervision/flowPath/lang/zh.js
Normal file
@@ -0,0 +1,232 @@
|
||||
export default {
|
||||
// Labels
|
||||
'Activate the global connect tool': '激活全局连接工具',
|
||||
'Append {type}': '添加 {type}',
|
||||
'Append Task': '添加任务',
|
||||
'Append Gateway': '添加网关',
|
||||
'Append EndEvent': '添加结束事件',
|
||||
'Append StartEvent': '添加开始事件',
|
||||
"Append Intermediate/Boundary Event": '添加边界事件',
|
||||
'Add Lane above': '在上面添加道',
|
||||
'Divide into two Lanes': '分割成两个道',
|
||||
'Divide into three Lanes': '分割成三个道',
|
||||
'Add Lane below': '在下面添加道',
|
||||
'Append compensation activity': '追加补偿活动',
|
||||
'Change type': '修改类型',
|
||||
'Connect using Association': '使用关联连接',
|
||||
'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接',
|
||||
'Connect using DataInputAssociation': '使用数据输入关联连接',
|
||||
'Remove': '移除',
|
||||
'Activate the hand tool': '激活抓手工具',
|
||||
'Activate the lasso tool': '激活套索工具',
|
||||
'Activate the create/remove space tool': '激活创建/删除空间工具',
|
||||
'Create expanded SubProcess': '创建扩展子过程',
|
||||
'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件',
|
||||
'Create Pool/Participant': '创建池/参与者',
|
||||
'Parallel Multi Instance': '并行多重事件',
|
||||
'Sequential Multi Instance': '时序多重事件',
|
||||
'DataObjectReference': '数据对象参考',
|
||||
'DataStoreReference': '数据存储参考',
|
||||
'Loop': '循环',
|
||||
'Ad-hoc': '即席',
|
||||
'Create {type}': '创建 {type}',
|
||||
'Task': '任务',
|
||||
'Send Task': '发送任务',
|
||||
'Receive Task': '接收任务',
|
||||
'User Task': '用户任务',
|
||||
'Manual Task': '手工任务',
|
||||
'Business Rule Task': '业务规则任务',
|
||||
'Service Task': '服务任务',
|
||||
'Script Task': '脚本任务',
|
||||
'Call Activity': '调用活动',
|
||||
'Sub Process (collapsed)': '子流程(折叠的)',
|
||||
'Sub Process (expanded)': '子流程(展开的)',
|
||||
'Start Event': '开始事件',
|
||||
'StartEvent': '开始事件',
|
||||
'Intermediate Throw Event': '中间事件',
|
||||
'End Event': '结束事件',
|
||||
'EndEvent': '结束事件',
|
||||
'Create Gateway': '创建网关',
|
||||
'Create Intermediate/Boundary Event': '创建中间/边界事件',
|
||||
'Message Start Event': '消息开始事件',
|
||||
'Timer Start Event': '定时开始事件',
|
||||
'Conditional Start Event': '条件开始事件',
|
||||
'Signal Start Event': '信号开始事件',
|
||||
'Error Start Event': '错误开始事件',
|
||||
'Escalation Start Event': '升级开始事件',
|
||||
'Compensation Start Event': '补偿开始事件',
|
||||
'Message Start Event (non-interrupting)': '消息开始事件(非中断)',
|
||||
'Timer Start Event (non-interrupting)': '定时开始事件(非中断)',
|
||||
'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)',
|
||||
'Signal Start Event (non-interrupting)': '信号开始事件(非中断)',
|
||||
'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)',
|
||||
'Message Intermediate Catch Event': '消息中间捕获事件',
|
||||
'Message Intermediate Throw Event': '消息中间抛出事件',
|
||||
'Timer Intermediate Catch Event': '定时中间捕获事件',
|
||||
'Escalation Intermediate Throw Event': '升级中间抛出事件',
|
||||
'Conditional Intermediate Catch Event': '条件中间捕获事件',
|
||||
'Link Intermediate Catch Event': '链接中间捕获事件',
|
||||
'Link Intermediate Throw Event': '链接中间抛出事件',
|
||||
'Compensation Intermediate Throw Event': '补偿中间抛出事件',
|
||||
'Signal Intermediate Catch Event': '信号中间捕获事件',
|
||||
'Signal Intermediate Throw Event': '信号中间抛出事件',
|
||||
'Message End Event': '消息结束事件',
|
||||
'Escalation End Event': '定时结束事件',
|
||||
'Error End Event': '错误结束事件',
|
||||
'Cancel End Event': '取消结束事件',
|
||||
'Compensation End Event': '补偿结束事件',
|
||||
'Signal End Event': '信号结束事件',
|
||||
'Terminate End Event': '终止结束事件',
|
||||
'Message Boundary Event': '消息边界事件',
|
||||
'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)',
|
||||
'Timer Boundary Event': '定时边界事件',
|
||||
'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)',
|
||||
'Escalation Boundary Event': '升级边界事件',
|
||||
'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)',
|
||||
'Conditional Boundary Event': '条件边界事件',
|
||||
'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)',
|
||||
'Error Boundary Event': '错误边界事件',
|
||||
'Cancel Boundary Event': '取消边界事件',
|
||||
'Signal Boundary Event': '信号边界事件',
|
||||
'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)',
|
||||
'Compensation Boundary Event': '补偿边界事件',
|
||||
'Exclusive Gateway': '互斥网关',
|
||||
'Parallel Gateway': '并行网关',
|
||||
'Inclusive Gateway': '相容网关',
|
||||
'Complex Gateway': '复杂网关',
|
||||
'Event based Gateway': '事件网关',
|
||||
'Transaction': '转运',
|
||||
'Sub Process': '子流程',
|
||||
'Event Sub Process': '事件子流程',
|
||||
'Collapsed Pool': '折叠池',
|
||||
'Expanded Pool': '展开池',
|
||||
// Errors
|
||||
'no parent for {element} in {parent}': '在{parent}里,{element}没有父类',
|
||||
'no shape type specified': '没有指定的形状类型',
|
||||
'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类',
|
||||
'out of bounds release': 'out of bounds release',
|
||||
'more than {count} child lanes': '子道大于{count} ',
|
||||
'element required': '元素不能为空',
|
||||
'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范',
|
||||
'no diagram to display': '没有可展示的流程图',
|
||||
'no process or collaboration to display': '没有可展示的流程/协作',
|
||||
'element {element} referenced by {referenced}#{property} not yet drawn': '由{referenced}#{property}引用的{element}元素仍未绘制',
|
||||
'already rendered {element}': '{element} 已被渲染',
|
||||
'failed to import {element}': '导入{element}失败',
|
||||
// 属性面板的参数
|
||||
'Id': '标识',
|
||||
'Name': '名称',
|
||||
'General': '常规',
|
||||
'Details': '详情',
|
||||
'Message Name': '消息名称',
|
||||
'Message': '消息',
|
||||
'Initiator': '创建者',
|
||||
'Asynchronous Continuations': '持续异步',
|
||||
'Asynchronous Before': '异步前',
|
||||
'Asynchronous After': '异步后',
|
||||
'Job Configuration': '工作配置',
|
||||
'Exclusive': '排除',
|
||||
'Job Priority': '工作优先级',
|
||||
'Retry Time Cycle': '重试时间周期',
|
||||
'Documentation': '文档',
|
||||
'Element Documentation': '元素文档',
|
||||
'History Configuration': '历史配置',
|
||||
'History Time To Live': '历史的生存时间',
|
||||
'Forms': '表单',
|
||||
'Form Key': '表单key',
|
||||
'Form Fields': '表单字段',
|
||||
'Business Key': '业务key',
|
||||
'Form Field': '表单字段',
|
||||
'ID': '编号',
|
||||
'Type': '类型',
|
||||
'Label': '名称',
|
||||
'Default Value': '默认值',
|
||||
'Validation': '校验',
|
||||
'Add Constraint': '添加约束',
|
||||
'Config': '配置',
|
||||
'Properties': '属性',
|
||||
'Add Property': '添加属性',
|
||||
'Value': '值',
|
||||
'Listeners': '监听器',
|
||||
'Execution Listener': '执行监听',
|
||||
'Event Type': '事件类型',
|
||||
'Listener Type': '监听器类型',
|
||||
'Java Class': 'Java类',
|
||||
'Expression': '表达式',
|
||||
'Must provide a value': '必须提供一个值',
|
||||
'Delegate Expression': '代理表达式',
|
||||
'Script': '脚本',
|
||||
'Script Format': '脚本格式',
|
||||
'Script Type': '脚本类型',
|
||||
'Inline Script': '内联脚本',
|
||||
'External Script': '外部脚本',
|
||||
'Resource': '资源',
|
||||
'Field Injection': '字段注入',
|
||||
'Extensions': '扩展',
|
||||
'Input/Output': '输入/输出',
|
||||
'Input Parameters': '输入参数',
|
||||
'Output Parameters': '输出参数',
|
||||
'Parameters': '参数',
|
||||
'Output Parameter': '输出参数',
|
||||
'Timer Definition Type': '定时器定义类型',
|
||||
'Timer Definition': '定时器定义',
|
||||
'Date': '日期',
|
||||
'Duration': '持续',
|
||||
'Cycle': '循环',
|
||||
'Signal': '信号',
|
||||
'Signal Name': '信号名称',
|
||||
'Escalation': '升级',
|
||||
'Error': '错误',
|
||||
'Link Name': '链接名称',
|
||||
'Condition': '条件名称',
|
||||
'Variable Name': '变量名称',
|
||||
'Variable Event': '变量事件',
|
||||
'Specify more than one variable change event as a comma separated list.': '多个变量事件以逗号隔开',
|
||||
'Wait for Completion': '等待完成',
|
||||
'Activity Ref': '活动参考',
|
||||
'Version Tag': '版本标签',
|
||||
'Executable': '可执行文件',
|
||||
'External Task Configuration': '扩展任务配置',
|
||||
'Task Priority': '任务优先级',
|
||||
'External': '外部',
|
||||
'Connector': '连接器',
|
||||
'Must configure Connector': '必须配置连接器',
|
||||
'Connector Id': '连接器编号',
|
||||
'Implementation': '实现方式',
|
||||
'Field Injections': '字段注入',
|
||||
'Fields': '字段',
|
||||
'Result Variable': '结果变量',
|
||||
'Topic': '主题',
|
||||
'Configure Connector': '配置连接器',
|
||||
'Input Parameter': '输入参数',
|
||||
'Assignee': '代理人',
|
||||
'Candidate Users': '候选用户',
|
||||
'Candidate Groups': '候选组',
|
||||
'Due Date': '到期时间',
|
||||
'Follow Up Date': '跟踪日期',
|
||||
'Priority': '优先级',
|
||||
'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00',
|
||||
'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00',
|
||||
'Variables': '变量'
|
||||
}
|
||||
|
||||
export const NodeName = {
|
||||
'bpmn:Process': '流程',
|
||||
'bpmn:StartEvent': '开始事件',
|
||||
'bpmn:IntermediateThrowEvent': '中间事件',
|
||||
'bpmn:Task': '任务',
|
||||
'bpmn:SendTask': '发送任务',
|
||||
'bpmn:ReceiveTask': '接收任务',
|
||||
'bpmn:UserTask': '用户任务',
|
||||
'bpmn:ManualTask': '手工任务',
|
||||
'bpmn:BusinessRuleTask': '业务规则任务',
|
||||
'bpmn:ServiceTask': '服务任务',
|
||||
'bpmn:ScriptTask': '脚本任务',
|
||||
'bpmn:EndEvent': '结束事件',
|
||||
'bpmn:SequenceFlow': '流程线',
|
||||
'bpmn:ExclusiveGateway': '互斥网关',
|
||||
'bpmn:ParallelGateway': '并行网关',
|
||||
'bpmn:InclusiveGateway': '相容网关',
|
||||
'bpmn:ComplexGateway': '复杂网关',
|
||||
'bpmn:EventBasedGateway': '事件网关'
|
||||
}
|
||||
427
src/views/Process-supervision/flowPath/tools.vue
Normal file
427
src/views/Process-supervision/flowPath/tools.vue
Normal file
@@ -0,0 +1,427 @@
|
||||
<template>
|
||||
<div
|
||||
v-loading="isView"
|
||||
class="flow-containers"
|
||||
:class="{ 'view-mode': isView }"
|
||||
>
|
||||
<el-container style="height: 100%">
|
||||
<el-header
|
||||
style="
|
||||
border-bottom: 1px solid rgb(218 218 218);
|
||||
height: auto;
|
||||
padding-left: 0px;
|
||||
"
|
||||
>
|
||||
<div
|
||||
style="
|
||||
display: flex;
|
||||
padding: 10px 0px;
|
||||
justify-content: space-between;
|
||||
"
|
||||
>
|
||||
<div>
|
||||
<el-upload
|
||||
action=""
|
||||
:before-upload="openBpmn"
|
||||
style="margin-right: 10px; display: inline-block"
|
||||
>
|
||||
<el-tooltip effect="dark" content="加载xml" placement="bottom">
|
||||
<el-button size="mini" icon="el-icon-folder-opened" />
|
||||
</el-tooltip>
|
||||
</el-upload>
|
||||
<el-tooltip effect="dark" content="新建" placement="bottom">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-circle-plus"
|
||||
@click="newDiagram"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" content="自适应屏幕" placement="bottom">
|
||||
<el-button size="mini" icon="el-icon-rank" @click="fitViewport" />
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" content="放大" placement="bottom">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-zoom-in"
|
||||
@click="zoomViewport(true)"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" content="缩小" placement="bottom">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-zoom-out"
|
||||
@click="zoomViewport(false)"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" content="后退" placement="bottom">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-back"
|
||||
@click="modeler.get('commandStack').undo()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
<el-tooltip effect="dark" content="前进" placement="bottom">
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-right"
|
||||
@click="modeler.get('commandStack').redo()"
|
||||
/>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div>
|
||||
<el-button size="mini" icon="el-icon-s-check" @click="verifyXML"
|
||||
>校验xml</el-button
|
||||
>
|
||||
<el-button size="mini" icon="el-icon-view" @click="showXML"
|
||||
>查看xml</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-download"
|
||||
@click="saveXML(true)"
|
||||
>下载xml</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
icon="el-icon-picture"
|
||||
@click="saveImg('svg', true)"
|
||||
>下载svg</el-button
|
||||
>
|
||||
<el-button size="mini" type="primary" @click="save"
|
||||
>保存模型</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-container style="align-items: stretch">
|
||||
<el-main style="padding: 0">
|
||||
<div ref="canvas" class="canvas" />
|
||||
</el-main>
|
||||
<el-aside
|
||||
style="width: 400px; min-height: 650px; background-color: #f0f2f5"
|
||||
>
|
||||
<!-- <panel
|
||||
v-if="modeler"
|
||||
:modeler="modeler"
|
||||
:users="users"
|
||||
:groups="groups"
|
||||
:exps="exps"
|
||||
:categorys="categorys"
|
||||
/> -->
|
||||
</el-aside>
|
||||
</el-container>
|
||||
</el-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// 汉化
|
||||
import customTranslate from "./common/customTranslate";
|
||||
// import lintModule from "bpmn-js-bpmnlint";
|
||||
import Modeler from "bpmn-js/lib/Modeler";
|
||||
import bpmnlintConfig from "./.bpmnlintrc.json";
|
||||
// import panel from './PropertyPanel'
|
||||
import getInitStr from "./flowable/init";
|
||||
// 引入flowable的节点文件
|
||||
import FlowableModule from "./flowable/flowable.json";
|
||||
import customControlsModule from "./customPanel";
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
props: {
|
||||
xml: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
users: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
groups: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
categorys: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
exps: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
isView: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
// 生成实例
|
||||
this.modeler = new Modeler({
|
||||
container: this.$refs.canvas,
|
||||
additionalModules: [
|
||||
// lintModule,
|
||||
customControlsModule,
|
||||
{
|
||||
//汉化
|
||||
translate: ["value", customTranslate],
|
||||
},
|
||||
],
|
||||
linting: {
|
||||
bpmnlint: bpmnlintConfig,
|
||||
},
|
||||
moddleExtensions: {
|
||||
flowable: FlowableModule,
|
||||
},
|
||||
});
|
||||
// 新增流程定义
|
||||
if (!this.xml) {
|
||||
this.newDiagram();
|
||||
} else {
|
||||
this.createNewDiagram(this.xml);
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
newDiagram() {
|
||||
this.createNewDiagram(getInitStr());
|
||||
},
|
||||
// 让图能自适应屏幕
|
||||
fitViewport() {
|
||||
this.zoom = this.modeler.get("canvas").zoom("fit-viewport");
|
||||
const bbox = document
|
||||
.querySelector(".flow-containers .viewport")
|
||||
.getBBox();
|
||||
const currentViewbox = this.modeler.get("canvas").viewbox();
|
||||
const elementMid = {
|
||||
x: bbox.x + bbox.width / 2 - 65,
|
||||
y: bbox.y + bbox.height / 2,
|
||||
};
|
||||
this.modeler.get("canvas").viewbox({
|
||||
x: elementMid.x - currentViewbox.width / 2,
|
||||
y: elementMid.y - currentViewbox.height / 2,
|
||||
width: currentViewbox.width,
|
||||
height: currentViewbox.height,
|
||||
});
|
||||
this.zoom = (bbox.width / currentViewbox.width) * 1.8;
|
||||
},
|
||||
// 放大缩小
|
||||
zoomViewport(zoomIn = true) {
|
||||
this.zoom = this.modeler.get("canvas").zoom();
|
||||
this.zoom += zoomIn ? 0.1 : -0.1;
|
||||
this.modeler.get("canvas").zoom(this.zoom);
|
||||
},
|
||||
async createNewDiagram(data) {
|
||||
// 将字符串转换成图显示出来
|
||||
// data = data.replace(/<!\[CDATA\[(.+?)]]>/g, '<![CDATA[$1]]>')
|
||||
data = data.replace(/<!\[CDATA\[(.+?)]]>/g, function (match, str) {
|
||||
return str.replace(/</g, "<");
|
||||
});
|
||||
try {
|
||||
await this.modeler.importXML(data);
|
||||
// this.adjustPalette()
|
||||
this.fitViewport();
|
||||
} catch (err) {
|
||||
// console.error(err.message, err.warnings);
|
||||
}
|
||||
},
|
||||
// 对外 api
|
||||
getProcess() {
|
||||
const element = this.getProcessElement();
|
||||
return {
|
||||
id: element.id,
|
||||
name: element.name,
|
||||
category: element.$attrs["flowable:processCategory"],
|
||||
};
|
||||
},
|
||||
getProcessElement() {
|
||||
const rootElements = this.modeler.getDefinitions().rootElements;
|
||||
for (let i = 0; i < rootElements.length; i++) {
|
||||
if (rootElements[i].$type === "bpmn:Process") return rootElements[i];
|
||||
}
|
||||
},
|
||||
async verifyXML() {
|
||||
const linting = this.modeler.get("linting");
|
||||
linting.toggle();
|
||||
},
|
||||
async saveXML(download = false) {
|
||||
try {
|
||||
const { xml } = await this.modeler.saveXML({ format: true });
|
||||
if (download) {
|
||||
this.downloadFile(
|
||||
`${this.getProcessElement().name}.bpmn20.xml`,
|
||||
xml,
|
||||
"application/xml"
|
||||
);
|
||||
}
|
||||
return xml;
|
||||
} catch (err) {
|
||||
// console.log(err);
|
||||
}
|
||||
},
|
||||
async showXML() {
|
||||
try {
|
||||
const xml = await this.saveXML();
|
||||
this.$emit("showXML", xml);
|
||||
} catch (err) {
|
||||
// console.log(err);
|
||||
}
|
||||
},
|
||||
async saveImg(type = "svg", download = false) {
|
||||
try {
|
||||
const { svg } = await this.modeler.saveSVG({ format: true });
|
||||
if (download) {
|
||||
this.downloadFile(
|
||||
this.getProcessElement().name,
|
||||
svg,
|
||||
"image/svg+xml"
|
||||
);
|
||||
}
|
||||
return svg;
|
||||
} catch (err) {
|
||||
// console.log(err);
|
||||
}
|
||||
},
|
||||
async save() {
|
||||
const process = this.getProcess();
|
||||
const xml = await this.saveXML();
|
||||
const svg = await this.saveImg();
|
||||
const result = { process, xml, svg };
|
||||
this.$emit("save", result);
|
||||
window.parent.postMessage(result, "*");
|
||||
},
|
||||
openBpmn(file) {
|
||||
const reader = new FileReader();
|
||||
reader.readAsText(file, "utf-8");
|
||||
reader.onload = () => {
|
||||
this.createNewDiagram(reader.result);
|
||||
};
|
||||
return false;
|
||||
},
|
||||
downloadFile(filename, data, type) {
|
||||
const a = document.createElement("a");
|
||||
const url = window.URL.createObjectURL(new Blob([data], { type: type }));
|
||||
a.href = url;
|
||||
a.download = filename;
|
||||
a.click();
|
||||
window.URL.revokeObjectURL(url);
|
||||
},
|
||||
},
|
||||
|
||||
computed: {},
|
||||
|
||||
watch: {},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
/*左边工具栏以及编辑节点的样式*/
|
||||
@import "~bpmn-js/dist/assets/diagram-js.css";
|
||||
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn.css";
|
||||
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css";
|
||||
@import "~bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css";
|
||||
@import "~bpmn-js-bpmnlint/dist/assets/css/bpmn-js-bpmnlint.css";
|
||||
.view-mode {
|
||||
.el-header,
|
||||
.el-aside,
|
||||
.djs-palette,
|
||||
.bjs-powered-by {
|
||||
display: none;
|
||||
}
|
||||
.el-loading-mask {
|
||||
background-color: initial;
|
||||
}
|
||||
.el-loading-spinner {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.flow-containers {
|
||||
// background-color: #ffffff;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.canvas {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
//flex: 1;
|
||||
//position: relative;
|
||||
//background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+")
|
||||
//repeat !important;
|
||||
//div.toggle-mode {
|
||||
// display: none;
|
||||
//}
|
||||
}
|
||||
.panel {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50px;
|
||||
width: 300px;
|
||||
}
|
||||
.load {
|
||||
margin-right: 10px;
|
||||
}
|
||||
.el-form-item__label {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.djs-palette {
|
||||
left: 0px !important;
|
||||
top: 0px;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.djs-container svg {
|
||||
//min-height: 650px;
|
||||
}
|
||||
|
||||
.highlight.djs-shape .djs-visual > :nth-child(1) {
|
||||
fill: green !important;
|
||||
stroke: green !important;
|
||||
fill-opacity: 0.2 !important;
|
||||
}
|
||||
.highlight.djs-shape .djs-visual > :nth-child(2) {
|
||||
fill: green !important;
|
||||
}
|
||||
.highlight.djs-shape .djs-visual > path {
|
||||
fill: green !important;
|
||||
fill-opacity: 0.2 !important;
|
||||
stroke: green !important;
|
||||
}
|
||||
.highlight.djs-connection > .djs-visual > path {
|
||||
stroke: green !important;
|
||||
}
|
||||
// .djs-connection > .djs-visual > path {
|
||||
// stroke: orange !important;
|
||||
// stroke-dasharray: 4px !important;
|
||||
// fill-opacity: 0.2 !important;
|
||||
// }
|
||||
// .djs-shape .djs-visual > :nth-child(1) {
|
||||
// fill: orange !important;
|
||||
// stroke: orange !important;
|
||||
// stroke-dasharray: 4px !important;
|
||||
// fill-opacity: 0.2 !important;
|
||||
// }
|
||||
.highlight-todo.djs-connection > .djs-visual > path {
|
||||
stroke: orange !important;
|
||||
stroke-dasharray: 4px !important;
|
||||
fill-opacity: 0.2 !important;
|
||||
}
|
||||
.highlight-todo.djs-shape .djs-visual > :nth-child(1) {
|
||||
fill: orange !important;
|
||||
stroke: orange !important;
|
||||
stroke-dasharray: 4px !important;
|
||||
fill-opacity: 0.2 !important;
|
||||
}
|
||||
.overlays-div {
|
||||
font-size: 10px;
|
||||
color: red;
|
||||
width: 100px;
|
||||
top: -20px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../styles/comStyle.less");
|
||||
</style>
|
||||
80
src/views/Process-supervision/harmonicmanagement.vue
Normal file
80
src/views/Process-supervision/harmonicmanagement.vue
Normal file
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<div class="pd10">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-tabs v-model.trim="activeName" @tab-click="handleClick" type="border-card">
|
||||
<el-tab-pane label="普测计划管理" name="1" :style="'height:' + vh + 'px;'">
|
||||
<Planmanagement v-if="activeName == '1'"></Planmanagement>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="普测计划审批" name="2" :style="'height:' + vh + 'px;'">
|
||||
<Planapproval v-if="activeName == '2'" ref="planapprovalRef" :son="planId"></Planapproval>
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane label="普测结果管理" name="3" :style="'height:' + vh + 'px;'">
|
||||
<Resultsmanagement v-if="activeName == '3'"></Resultsmanagement>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="普测计划占比配置" name="4" :style="'height:' + vh + 'px;'">
|
||||
<Proportion v-if="activeName == '4'" />
|
||||
</el-tab-pane>-->
|
||||
</el-tabs>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Planmanagement from './components/harmonicmanagement/Planmanagement.vue'
|
||||
import Planapproval from './components/harmonicmanagement/Planapproval.vue'
|
||||
import Resultsmanagement from './components/harmonicmanagement/Resultsmanagement.vue'
|
||||
import Proportion from './components/harmonicmanagement/Proportion.vue'
|
||||
export default {
|
||||
name: 'xbpbgl',
|
||||
components: { Planmanagement, Planapproval, Resultsmanagement, Proportion },
|
||||
data() {
|
||||
return {
|
||||
vh: undefined,
|
||||
activeName: '1',
|
||||
planId:''
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
|
||||
let data = this.$route.query
|
||||
console.log(data)
|
||||
if(data && data!=null){
|
||||
if(this.$route.query.flowType){
|
||||
|
||||
if(this.$route.query.flowType === 1){
|
||||
//审核
|
||||
this.activeName = '2'
|
||||
this.planId = this.$route.query.formAssId
|
||||
|
||||
setTimeout(()=>{
|
||||
this.$refs.planapprovalRef.planReviewFn(this.planId)
|
||||
},10)
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 80
|
||||
},
|
||||
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../styles/comStyle.less');
|
||||
</style>
|
||||
115
src/views/Process-supervision/interferencemanagement.vue
Normal file
115
src/views/Process-supervision/interferencemanagement.vue
Normal file
@@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<div class="pd10">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-tabs
|
||||
v-model.trim="activeName"
|
||||
@tab-click="handleClick"
|
||||
type="border-card"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="未建档用户录入及查询"
|
||||
name="first"
|
||||
:style="'height:' + vh + ';'"
|
||||
>
|
||||
<Undocumentednonlinear v-if="activeName == 'first'"></Undocumentednonlinear>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane
|
||||
label="入网评估报告审核"
|
||||
name="second"
|
||||
:style="'height:' + vh + ';'"
|
||||
>
|
||||
<Reportreview v-if="activeName == 'second'" ref="reportreviewRef" ></Reportreview>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane
|
||||
label="干扰源用户常态化管理"
|
||||
name="third"
|
||||
:style="'height:' + vh + ';'"
|
||||
>
|
||||
<Normalizedmanagement v-if="activeName == 'third'"></Normalizedmanagement>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane
|
||||
label="实测报告审核"
|
||||
name="fourth"
|
||||
:style="'height:' + vh + ';'"
|
||||
>
|
||||
<Measurementreport v-if="activeName == 'fourth'"></Measurementreport>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Undocumentednonlinear from './components/interferencemanagement/Undocumentednonlinear.vue';
|
||||
import Reportreview from './components/interferencemanagement/Reportreview.vue';
|
||||
import Normalizedmanagement from './components/interferencemanagement/Normalizedmanagement.vue';
|
||||
import Measurementreport from './components/interferencemanagement/Measurementreport.vue';
|
||||
export default {
|
||||
name:'gryyhgl',
|
||||
components: { Undocumentednonlinear, Reportreview, Normalizedmanagement, Measurementreport },
|
||||
data() {
|
||||
return {
|
||||
vh: "",
|
||||
activeName: "first",
|
||||
device: "",
|
||||
};
|
||||
},
|
||||
created() {
|
||||
let data = this.$route.query
|
||||
if(data && data!=null){
|
||||
if(this.$route.query.flowType){
|
||||
if(this.$route.query.flowType === 1){
|
||||
//审核
|
||||
this.activeName = 'second'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.setHeight()
|
||||
window.addEventListener('resize', this.setHeight)
|
||||
|
||||
let data = this.$route.query
|
||||
if(data && data!=null){
|
||||
if(this.$route.query.flowType){
|
||||
if(this.$route.query.flowType === 1){
|
||||
//审核
|
||||
let planId = this.$route.query.formAssId
|
||||
setTimeout(()=>{
|
||||
this.$refs.reportreviewRef.planReviewFn(planId)
|
||||
},10)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.setHeight)
|
||||
},
|
||||
methods: {
|
||||
setHeight() {
|
||||
this.device = window.devicePixelRatio;
|
||||
this.vh = window.sessionStorage.getItem('appheight') - 80;
|
||||
},
|
||||
|
||||
handleClick(tab, event) {
|
||||
// console.log(tab, event);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../styles/comStyle.less");
|
||||
::v-deep .el-table .cell {
|
||||
text-align: center;
|
||||
}
|
||||
::v-deep .el-tabs--border-card > .el-tabs__content {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user