|
@@ -0,0 +1,1213 @@
|
|
|
+<template>
|
|
|
+ <div class="content-main-manage">
|
|
|
+ <!--今日告警表格 -->
|
|
|
+ <!-- <Table :columns="testColumns" :data="testTableData">
|
|
|
+ <template slot-scope="{ row }" v-for="(item,i) in testColumns" :slot="item.slot" >
|
|
|
+ <span v-if="i==0" style="text-decoration: underline;cursor: pointer;}">{{row.name}}</span>
|
|
|
+ <template v-else>
|
|
|
+ <span style="display:inline-block;width:49%;text-align:right;color:#F8952B;text-decoration: underline;cursor: pointer;}">{{row.alarmNum}}</span>
|
|
|
+ <span style="display:inline-block;width:2%;">丨</span>
|
|
|
+ <span style="display:inline-block;width:49%;text-align:left;padding-left:4px;text-decoration: underline;cursor: pointer;">{{row.alarmEquip}}</span>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </Table> -->
|
|
|
+ <div class="search-list">
|
|
|
+ <div class="search-left">
|
|
|
+ <Form class="common-form common-form-list" ref="tableParams" :model="tableParams" inline>
|
|
|
+ <FormItem label="" prop="coverTargetCount">
|
|
|
+ <Select v-model="tableParams.coverTargetCount" placeholder="策略覆盖指标数量">
|
|
|
+ <Option v-for="item in indicatorsNum" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="" prop="name">
|
|
|
+ <Input placeholder="请输入关键字查询" clearable search v-model="tableParams.name" />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="" >
|
|
|
+ <Button type="primary" class="common-btn-search" @click="searchClick">
|
|
|
+ <Icon type="ios-search" style="margin-right:4px;font-size: 16px"/> 筛选
|
|
|
+ </Button>
|
|
|
+ <Button type="primary" class="common-btn-search" style="margin-left:10px" @click="resetClick('tableParams')">
|
|
|
+ <Icon type="ios-search" style="margin-right:4px;font-size: 16px"/> 重置
|
|
|
+ </Button>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btn-container">
|
|
|
+ <Button icon="ios-add" class="common-add-btn" @click="addClick">新增策略</Button>
|
|
|
+ </div>
|
|
|
+ <div class="manage-main-center">
|
|
|
+ <Table :columns="columns" :data="tableData" class="common-table app-table" no-data-text="" :row-class-name="rowClassName" :loading="loading">
|
|
|
+ <template slot="loading">
|
|
|
+ <Loading-animation></Loading-animation>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row }" slot="action">
|
|
|
+ <Tooltip content="详情" placement="top">
|
|
|
+ <i class="iconfont icon-xiangqingmingxi" style="cursor:pointer;color:#B8B532;fontSize:20px;marginRight:6px" @click="detailClick(row)"></i>
|
|
|
+ </Tooltip>
|
|
|
+ <Tooltip content="编辑" placement="top">
|
|
|
+ <i class="iconfont icon-bianji" style="cursor:pointer;color:#64ACFE;fontSize:20px;marginRight:6px" @click="editClick(row)"></i>
|
|
|
+ </Tooltip>
|
|
|
+ <Tooltip content="删除" placement="top">
|
|
|
+ <i class="iconfont icon-shanchu" style="cursor:pointer;color:#E92E2E;fontSize:20px;marginRight:6px" @click="delClick(row)"></i>
|
|
|
+ </Tooltip>
|
|
|
+ </template>
|
|
|
+ </Table>
|
|
|
+ </div>
|
|
|
+ <div class="common-page">
|
|
|
+ <div class="common-page-total">
|
|
|
+ 共<span>{{tablePage}}</span>页 / <span>{{tableTotal}}</span>条数据
|
|
|
+ </div>
|
|
|
+ <Page :total="tableTotal" :current="tableParams.pageNum" :page-size="tableParams.pageSize" @on-change="changePage" @on-page-size-change="sizeChange" show-elevator />
|
|
|
+ </div>
|
|
|
+ <Modal
|
|
|
+ v-model="showModal"
|
|
|
+ :title="title"
|
|
|
+ width="40"
|
|
|
+ ref="modalGrag"
|
|
|
+ draggable
|
|
|
+ reset-drag-position
|
|
|
+ @on-visible-change="modalChange"
|
|
|
+ :mask-closable="false"
|
|
|
+ class-name="common-modal">
|
|
|
+ <div class="common-modal-top">
|
|
|
+ <span class="common-modal-top-text">基础信息</span>
|
|
|
+ </div>
|
|
|
+ <Form class="common-form" ref="formOption" :model="formOption" :rules="ruleValidate" :label-width="95" label-position="left">
|
|
|
+ <FormItem label="策略名称" prop="strategyName" style="width:100%">
|
|
|
+ <Input v-model.trim="formOption.strategyName" maxlength="20" show-word-limit />
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="来源应用:" prop="appId" style="width:100%">
|
|
|
+ <Select v-model="formOption.appId" placeholder="来源应用" @on-change="selectModalApp">
|
|
|
+ <Option v-for="item in appModalData" :value="item.id" :key="item.id">{{ item.appName }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="设备类型:" prop="equipmentTypeId" style="width:100%">
|
|
|
+ <Select v-model="formOption.equipmentTypeId" placeholder="设备类型">
|
|
|
+ <Option v-for="item in equipTypeModalData" :value="item.equipmentTypeId" :key="item.equipmentTypeId">{{ item.equipmentName }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ <div class="common-modal-top">
|
|
|
+ <span class="common-modal-top-text">处理策略</span>
|
|
|
+ </div>
|
|
|
+ <Form ref="formDynamic" :model="formCustom" :label-width="0" class="common-modal-bot">
|
|
|
+ <Row class="strategy-form-header">
|
|
|
+ <Col span="2" class="row-first"></Col>
|
|
|
+ <Col span="4">指标名称</Col>
|
|
|
+ <Col span="4">异常规则</Col>
|
|
|
+ <Col span="4">下限</Col>
|
|
|
+ <Col span="4">上限</Col>
|
|
|
+ <Col span="5">异常处理措施</Col>
|
|
|
+ <Col span="1" class="row-last"></Col>
|
|
|
+ </Row>
|
|
|
+ <div class="strategy-form-scroll common-scroll" v-if="showModal">
|
|
|
+ <div class="strategy-form">
|
|
|
+ <Row v-for="(item, index) in formCustom.alertStrategyDurativeDTOList" :key="index">
|
|
|
+ <Col span="2" :class="{'row-first': index == 0}" class="row-first-es">策略{{index + 1}}</Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-select">
|
|
|
+ <FormItem
|
|
|
+ :prop="'alertStrategyDurativeDTOList.'+index+'.targetId'" :rules="{required: true,type: 'number',message: '请选择监测指标',trigger: 'change'}">
|
|
|
+ <Select v-model="item.targetId" style="width: 100%" placeholder="监测指标" transfer @on-change="selectTarget(item.targetId,index)" ref="targetId">
|
|
|
+ <Option v-for="firstitem in indicatorsModalData" :value="firstitem.id" :key="firstitem.id">{{ firstitem.value }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-select">
|
|
|
+ <FormItem
|
|
|
+ :prop="'alertStrategyDurativeDTOList.'+index+'.exceptionRule'" :rules="{required: true,type: 'number',message: '请选择异常规则',trigger: 'change'}">
|
|
|
+ <Select v-model="item.exceptionRule" style="width: 100%" placeholder="异常规则" transfer @on-change="selectExceptionRule(item.exceptionRule,index)" ref="exceptionRule">
|
|
|
+ <Option v-for="firstitem in exceptionRuleData" :value="firstitem.id" :key="firstitem.id">{{ firstitem.value }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-input">
|
|
|
+ <FormItem
|
|
|
+ :prop="'alertStrategyDurativeDTOList.'+index+'.minValue'" :rules="{required: true,type: 'number',message: '请输入数字',trigger: 'blur'}">
|
|
|
+ <InputNumber v-model.trim="item.minValue" placeholder="请输入数字" :active-change="false"></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-input">
|
|
|
+ <FormItem
|
|
|
+ :prop="'alertStrategyDurativeDTOList.'+index+'.maxValue'" :rules="{required: true,type: 'number',message: '请输入数字',trigger: 'blur'}">
|
|
|
+ <InputNumber v-model.trim="item.maxValue" placeholder="请输入数字" :active-change="false"></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span="5" :class="{'row-first': index == 0}" class="row-es-last">
|
|
|
+ <FormItem
|
|
|
+ :prop="'alertStrategyDurativeDTOList.'+index+'.rankId'" :rules="{required: true,type: 'number',message: '请选择告警等级',trigger: 'change'}" style="display:flex">
|
|
|
+ <span class="row-es-last-text">判定为</span>
|
|
|
+ <Select v-model="item.rankId" placeholder="告警等级" transfer style="width: 65%" @on-change="selectRank(item.rankId,index)" ref="rank">
|
|
|
+ <Option v-for="firstitem in alarmLevelModalData" :value="firstitem.id" :key="firstitem.id">{{ firstitem.name }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col span="1" class="ivu-col-btn">
|
|
|
+ <i class="iconfont icon-tianjia" style="cursor:pointer;color:#2DA0F8;padding-left:10px" @click="handleAdd('formDynamic')" v-if="index == formCustom.alertStrategyDurativeDTOList.length - 1 &&title=='新增策略'"></i>
|
|
|
+ <i class="iconfont icon-shanchu ivu-col-del" style="cursor:pointer; color:#BC2020;padding-left:10px" v-if="title=='编辑策略'" @click="handleRemove(index)"></i>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </Form>
|
|
|
+ <div slot="footer">
|
|
|
+ <Button @click="modalCancel">取消</Button>
|
|
|
+ <Button type="primary" @click="modalOk">确定</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="modalStatus"
|
|
|
+ :title="commonTitle"
|
|
|
+ width="30"
|
|
|
+ ref="modalGrag"
|
|
|
+ draggable
|
|
|
+ reset-drag-position
|
|
|
+ :mask-closable="false"
|
|
|
+ class-name="common-modal">
|
|
|
+ <Icon type="ios-information-circle" :style="{ color: activeColor}" class="modal-icon"></Icon>
|
|
|
+ <span class="modal-text">{{modalTitle}}</span>
|
|
|
+ <div slot="footer">
|
|
|
+ <Button @click="commonCancel">取消</Button>
|
|
|
+ <Button type="primary" @click="commonOk">确定</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="detailStatus"
|
|
|
+ title="连续性监测策略详情"
|
|
|
+ width="45"
|
|
|
+ ref="modalGrag"
|
|
|
+ draggable
|
|
|
+ reset-drag-position
|
|
|
+ footer-hide
|
|
|
+ :mask-closable="false"
|
|
|
+ class-name="common-modal">
|
|
|
+ <div v-for="(item,index) in detailLabel" :key="index">
|
|
|
+ <div class="common-modal-top">
|
|
|
+ <span class="common-modal-top-text">{{item.name}}</span>
|
|
|
+ </div>
|
|
|
+ <div class="common-modal-content">
|
|
|
+ <div class="modal-content-item" v-for="(val,i) in item.arr" :key="i" :class="{'item-especial': val.name == '策略名称' && item.arr.length%2!=0,'item-especial-bot':(i==item.arr.length-1 || i==item.arr.length-2)}">
|
|
|
+ <span class="modal-content-item-name">
|
|
|
+ {{val.name}}
|
|
|
+ </span>
|
|
|
+ <div class="modal-content-item-value">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350" v-if="val.value || val.value===0">
|
|
|
+ <span>{{val.value}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{val.value}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ <span v-else>{{val.value}}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <div class="common-modal-top">
|
|
|
+ <span class="common-modal-top-text">等级判定策略</span>
|
|
|
+ </div>
|
|
|
+ <Row class="strategy-form-header">
|
|
|
+ <Col span="2" class="row-first"></Col>
|
|
|
+ <Col span="4">指标名称</Col>
|
|
|
+ <Col span="5">异常规则</Col>
|
|
|
+ <Col span="4">下限</Col>
|
|
|
+ <Col span="4">上限</Col>
|
|
|
+ <Col span="5">异常处理措施</Col>
|
|
|
+ </Row>
|
|
|
+ <div class="strategy-form strategy-form-detail common-scroll" v-if="detailStatus">
|
|
|
+ <Row v-for="(item, index) in formCustom.alertStrategyDurativeDTOList" :key="index">
|
|
|
+ <Col span="2" :class="{'row-first': index == 0}" class="row-first-es row-first-es-detail">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span>策略{{index + 1}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>策略{{index + 1}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-first-es row-first-es-border row-no-bg">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span>{{item.targetName}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{item.targetName}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ <Col span="5" :class="{'row-first': index == 0}" class="row-first-es row-first-es-border row-no-bg">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span>{{item.exceptionRuleValue}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{item.exceptionRuleValue}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-first-es row-first-es-border row-no-bg">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span>{{item.minValue}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{item.minValue}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ <Col span="4" :class="{'row-first': index == 0}" class="row-first-es row-first-es-border row-no-bg">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span>{{item.maxValue}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{item.maxValue}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ <Col span="5" :class="{'row-first': index == 0}" class="row-first-es row-es-last row-no-bg">
|
|
|
+ <Tooltip placement="top-start" transfer max-width="350">
|
|
|
+ <span style="color: #2b8ee2;" class="row-es-last-text row-detail-last-text">判定为</span>
|
|
|
+ <span style="width:70%;text-align: left;">{{item.rankName}}</span>
|
|
|
+ <div slot="content">
|
|
|
+ <span>{{item.rankName}}</span>
|
|
|
+ </div>
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+const defaultFrom = {strategyName: '',appId:'',equipmentTypeId:''}
|
|
|
+export default {
|
|
|
+ name: "ContinuityMonitorConfig",
|
|
|
+ components:{
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ alarmParams: {
|
|
|
+ keywords: '',
|
|
|
+ enabled: 1,
|
|
|
+ beginDate: '',
|
|
|
+ endDate: '',
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
+ },
|
|
|
+ applicationParams: {
|
|
|
+ level: '',
|
|
|
+ lineId: '',
|
|
|
+ stationId: '',
|
|
|
+ equipmentCheck: '',
|
|
|
+ instrumentCheck: '',
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 9999
|
|
|
+ },
|
|
|
+ appParams: {
|
|
|
+ applicationId: '',
|
|
|
+ equipmentTypeId: '',
|
|
|
+ keywords: '',
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 9999
|
|
|
+ },
|
|
|
+ loading: true,
|
|
|
+ tableParams: {
|
|
|
+ keywords: '',
|
|
|
+ applicationId:'',
|
|
|
+ equipmentTypeId: '',
|
|
|
+ coverTargetCount: '',
|
|
|
+ name: '',
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10
|
|
|
+ },
|
|
|
+ tableData: [],
|
|
|
+ tableTotal: 0,
|
|
|
+ tablePage: 0,
|
|
|
+ rowObj: {},
|
|
|
+ indicatorsNum: [
|
|
|
+ {
|
|
|
+ value: '-1',
|
|
|
+ label: '策略覆盖指标数量'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '0-5',
|
|
|
+ label: '0-5'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '6-10',
|
|
|
+ label: '6-10'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: '11-',
|
|
|
+ label: '11-'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ appModalData: [],
|
|
|
+ equipTypeModalData: [],
|
|
|
+ equipAppModalData: [],
|
|
|
+ exceptionRuleData: [],
|
|
|
+ alarmLevelModalData: [],
|
|
|
+ // testColumns: [{title:'设备',slot:'strategyName',align: 'center'},{title:'线网',slot:'appName',align: 'center'},{title:'1号线',slot:'equipmentTypeName',align: 'center'}],
|
|
|
+ // testTableData: [{alarmNum:1,alarmEquip: 2,name:'UPS'},{alarmNum:16767,alarmEquip: 67672,name:'UPS2'},{alarmNum:16767,alarmEquip: 67672,name:'UPS3'}],
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ title: '连续性监测策略名称',
|
|
|
+ key: 'strategyName',
|
|
|
+ align: 'center',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '来源应用',
|
|
|
+ key: 'appName',
|
|
|
+ align: 'center',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '设备类型',
|
|
|
+ key: 'equipmentTypeName',
|
|
|
+ align: 'center',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '策略覆盖指标数量',
|
|
|
+ key: 'coverRankCount',
|
|
|
+ align: 'center'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '启用状态',
|
|
|
+ key: 'enabled',
|
|
|
+ align: 'center',
|
|
|
+ width: 120,
|
|
|
+ render: (h, params) => {
|
|
|
+ return h('div', [
|
|
|
+ h('i-switch', {
|
|
|
+ props: { value: params.row.enabled,'true-color': '#57C44F', trueValue:1,falseValue: 0
|
|
|
+ },
|
|
|
+ nativeOn:{
|
|
|
+ "mousedown":(event)=>{ // 监听组件原生事件mousedown,此事件在click之前触发
|
|
|
+ this.rowObj = params.row
|
|
|
+ if (params.row.enabled == 1) {
|
|
|
+ this.commonTitle = '确认关闭'
|
|
|
+ this.activeColor = '#E92E2E'
|
|
|
+ this.activeClass = 'icon-guanbi'
|
|
|
+ this.modalTitle = '可能影响新数据判断结果。'
|
|
|
+ this.modalStatus = true
|
|
|
+ } else {
|
|
|
+ this.commonTitle = '确认启用'
|
|
|
+ this.activeColor = '#57C44F'
|
|
|
+ this.activeClass = 'icon-qiyong'
|
|
|
+ this.modalTitle = '当前时间点后所有告警信息,将使用策略自动判定。'
|
|
|
+ this.modalStatus = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ ])
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'action',
|
|
|
+ width: 120,
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ showModal: false,
|
|
|
+ detailStatus: false,
|
|
|
+ modalStatus: false,
|
|
|
+ title: '新增策略',
|
|
|
+ commonTitle: "确认删除",
|
|
|
+ activeColor: '#E92E2E',
|
|
|
+ activeClass: '',
|
|
|
+ modalTitle: '',
|
|
|
+ formOption: {strategyName: '',appId:'',equipmentTypeId:''},
|
|
|
+ ruleValidate: {
|
|
|
+ strategyName: [{
|
|
|
+ required: true,
|
|
|
+ message: '请输入策略名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }],
|
|
|
+ appId: [{
|
|
|
+ required: true,
|
|
|
+ type: 'number',
|
|
|
+ message: '请选择来源应用',
|
|
|
+ trigger: 'change'
|
|
|
+ }],
|
|
|
+ equipmentTypeId: [{
|
|
|
+ required: true,
|
|
|
+ type: 'number',
|
|
|
+ message: '请输入设备名称',
|
|
|
+ trigger: 'change'
|
|
|
+ }],
|
|
|
+ },
|
|
|
+ detailLabel: [],
|
|
|
+ formCustom: {
|
|
|
+ alertStrategyDurativeDTOList: [
|
|
|
+ {
|
|
|
+ targetId: '',
|
|
|
+ targetName: '',
|
|
|
+ exceptionRule: '',
|
|
|
+ exceptionRuleValue: '',
|
|
|
+ minValue: null,
|
|
|
+ maxValue: null,
|
|
|
+ rankId: '',
|
|
|
+ rankName: ''
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getType()
|
|
|
+ // this.initTableColumn('testColumns');
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ initTableColumn(columnName){
|
|
|
+ for(let i = 0; i < this[columnName].length; i++){
|
|
|
+ if(!this[columnName][i].renderHeader) {
|
|
|
+ // this.$set(this[columnName][i], 'ellipsis', true);
|
|
|
+ this.$set(this[columnName][i], 'renderHeader', (h, params) => {
|
|
|
+ let text = ''
|
|
|
+ if (i == 0) {
|
|
|
+ text = this[columnName][i].title
|
|
|
+ } else {
|
|
|
+ text = this[columnName][i].title + '<br/> <span style="color:#82ABEE">告警数丨告警设备数</span>';
|
|
|
+ }
|
|
|
+ return h('div', {
|
|
|
+ domProps:{
|
|
|
+ innerHTML: text
|
|
|
+ }
|
|
|
+ })
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ go (){
|
|
|
+ // this.$router.push({path:'//ApplicationManage'})
|
|
|
+ // this.$router.push({path:'/MainPage/ApplicationManage/2'})
|
|
|
+ this.$router.push({ name: 'ApplicationManage', params: { type:2 }}) // -> /home/123
|
|
|
+ },
|
|
|
+ rowClassName(row, index) {
|
|
|
+ if (index % 2 == 0) {
|
|
|
+ return "ivu-table-stripe-even";
|
|
|
+ } else {
|
|
|
+ return "ivu-table-stripe-odd";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 分页
|
|
|
+ changePage (val) {
|
|
|
+ this.tableParams.pageNum = val
|
|
|
+ this.getTableData()
|
|
|
+ },
|
|
|
+ //跳转
|
|
|
+ sizeChange (val) {
|
|
|
+ this.tableParams.pageSize = val
|
|
|
+ this.getTableData()
|
|
|
+ },
|
|
|
+ getType () {
|
|
|
+ // 获取来源应用
|
|
|
+ this.$get('metroapi/application/info/list', this.applicationParams).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.appModalData = res.data.data
|
|
|
+ } else {
|
|
|
+ this.appModalData = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 获取监测指标
|
|
|
+ this.$get('metroapi/dic/queryDictionary', {name:'监测指标'}).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.indicatorsModalData = res.data
|
|
|
+ } else {
|
|
|
+ this.indicatorsModalData = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 获取异常规则
|
|
|
+ this.$get('metroapi/dic/queryDictionary', {name:'异常规则'}).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.exceptionRuleData = res.data
|
|
|
+ } else {
|
|
|
+ this.exceptionRuleData = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // 告警等级
|
|
|
+ this.$get('metroapi/alert/rank/list', this.alarmParams).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.alarmLevelModalData = res.data.data
|
|
|
+ } else {
|
|
|
+ this.alarmLevelModalData = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取表格数据
|
|
|
+ getTableData (keywords,arr,level) {
|
|
|
+ if (level) {
|
|
|
+ this.tableParams.keywords = ''
|
|
|
+ if (level == 2) {
|
|
|
+ this.tableParams.applicationId = arr[arr.length-1]
|
|
|
+ this.tableParams.equipmentTypeId = ''
|
|
|
+ } else if (level == 3) {
|
|
|
+ this.tableParams.applicationId = arr[arr.length-2]
|
|
|
+ this.tableParams.equipmentTypeId = arr[arr.length-1]
|
|
|
+ } else {
|
|
|
+ this.tableParams.applicationId = ''
|
|
|
+ this.tableParams.equipmentTypeId = ''
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.tableParams.applicationId = ''
|
|
|
+ this.tableParams.equipmentTypeId = ''
|
|
|
+ if (keywords == '合肥轨道交通' || keywords == '' || !keywords) {
|
|
|
+ this.tableParams.keywords = ''
|
|
|
+ } else {
|
|
|
+ this.tableParams.keywords = keywords
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let params = JSON.parse(JSON.stringify(this.tableParams))
|
|
|
+ params.coverTargetCount = params.coverTargetCount == '-1' ? '':params.coverTargetCount
|
|
|
+ this.loading = true
|
|
|
+ this.$get('metroapi/alertdurative/queryStrategyDurativePage', params).then(res=>{
|
|
|
+ this.loading = false
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.tableData = res.data.data
|
|
|
+ this.tableTotal = res.data.count
|
|
|
+ if (res.data.data.length==0) {
|
|
|
+ this.tablePage = 0
|
|
|
+ } else {
|
|
|
+ this.tablePage = res.data.count<= 10 ? 1: Math.ceil(res.data.count/this.tableParams.pageSize)
|
|
|
+ }
|
|
|
+ if (res.data.data.length==0 && this.tableParams.pageNum>1) {
|
|
|
+ this.tableParams.pageNum--
|
|
|
+ return this.getTableData()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.tableData = []
|
|
|
+ this.tableTotal = 0
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ selectModalApp (val) {
|
|
|
+ this.appParams.applicationId = val
|
|
|
+ this.formOption.equipmentTypeId = ''
|
|
|
+ if (val) {
|
|
|
+ this.getAddEquipType( this.appParams)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 获取新增设备类型
|
|
|
+ getAddEquipType (params) {
|
|
|
+ this.$get('metroapi/application/equipmentTypeInfo', params).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.equipTypeModalData = res.data.data
|
|
|
+ } else {
|
|
|
+ this.equipTypeModalData = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ searchClick () {
|
|
|
+ this.getTableData()
|
|
|
+ },
|
|
|
+ resetClick (name) {
|
|
|
+ this.$refs[name].resetFields()
|
|
|
+ this.getTableData()
|
|
|
+ },
|
|
|
+ addClick () {
|
|
|
+ this.formOption = JSON.parse(JSON.stringify(defaultFrom))
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList= [
|
|
|
+ {
|
|
|
+ targetId: '',
|
|
|
+ exceptionRule: '',
|
|
|
+ minValue: null,
|
|
|
+ maxValue: null,
|
|
|
+ rankId: ''
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ this.title = '新增策略'
|
|
|
+ this.showModal = true
|
|
|
+ },
|
|
|
+ detailClick (row) {
|
|
|
+ this.getstrategyData(row.id)
|
|
|
+ this.rowObj = row
|
|
|
+ this.$nextTick(()=> {
|
|
|
+ this.detailStatus = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ editClick (row) {
|
|
|
+ this.getstrategyData(row.id)
|
|
|
+ this.rowObj = row
|
|
|
+ this.formOption = JSON.parse(JSON.stringify(row));
|
|
|
+ this.appParams.applicationId = this.formOption.appId
|
|
|
+ this.getAddEquipType(this.appParams)
|
|
|
+ this.title = '编辑策略'
|
|
|
+ this.$nextTick(()=> {
|
|
|
+ this.showModal = true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getstrategyData (id) {
|
|
|
+ this.$get('metroapi/alertdurative/getStrategyDurative', {strategyId:id}).then(res=>{
|
|
|
+ if ( res.httpCode == 1 ){
|
|
|
+ this.detailLabel = [{name:'基础信息',arr:[{name:'策略名称',value:res.data.strategyName},{name:'设备类型',value:res.data.equipmentTypeName},{name:'来源应用',value:res.data.appName}]}]
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList = res.data.alertStrategyDurativeDTOList
|
|
|
+ } else {
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ delClick (row) {
|
|
|
+ this.rowObj = row
|
|
|
+ this.commonTitle = '确认删除'
|
|
|
+ this.activeColor = '#E92E2E'
|
|
|
+ this.activeClass = ''
|
|
|
+ this.modalTitle = '删除的同时将解绑所有运营数据,且数据不可恢复,请慎重操作。'
|
|
|
+ this.modalStatus = true
|
|
|
+ },
|
|
|
+ modalChange (modalStatus) {
|
|
|
+ if (!modalStatus) {
|
|
|
+ this.$refs.formOption.resetFields();
|
|
|
+ this.$refs.formDynamic.resetFields();
|
|
|
+ this.equipTypeModalData = []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ modalOk () {
|
|
|
+ let params = Object.assign({}, this.formOption, this.formCustom); // 合并对象 注意目标对象自身也会改变。假设目标对象{}是之前里的对象,他的值跟obj一样
|
|
|
+ this.$nextTick(()=> {
|
|
|
+ // 多个form表单验证
|
|
|
+ const p1 = new Promise((resolve,reject)=>{
|
|
|
+ this.$refs['formOption'].validate(valid=>{
|
|
|
+ if(valid) resolve()
|
|
|
+ })
|
|
|
+ })
|
|
|
+ const p2 = new Promise((resolve,reject)=>{
|
|
|
+ this.$refs['formDynamic'].validate(valid=>{
|
|
|
+ if(valid) resolve()
|
|
|
+ })
|
|
|
+ })
|
|
|
+ Promise.all([p1,p2]).then(()=>{
|
|
|
+ let canSave = true;
|
|
|
+ let arr = this.formCustom.alertStrategyDurativeDTOList
|
|
|
+ for (var i = 0; i < arr.length; i++) {
|
|
|
+ if (arr[i].maxValue <= arr[i].minValue) {
|
|
|
+ this.$Message['error']({
|
|
|
+ background: true,
|
|
|
+ content: '上限值必须大于下限值'
|
|
|
+ });
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for (var j = i + 1; j < arr.length; j++) {
|
|
|
+ if (arr[i].targetId == arr[j].targetId && arr[i].exceptionRule == arr[j].exceptionRule)
|
|
|
+ {
|
|
|
+ canSave = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(canSave) {
|
|
|
+ this.saveStrategyData(params)
|
|
|
+ } else {
|
|
|
+ this.$Message['error']({
|
|
|
+ background: true,
|
|
|
+ content: '请勿设置重复对应指标-异常规则'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ saveStrategyData (params) {
|
|
|
+ let url = ''
|
|
|
+ if (this.title == '新增策略') {
|
|
|
+ url = 'metroapi/alertdurative/addStrategyDurative'
|
|
|
+ } else {
|
|
|
+ url = 'metroapi/alertdurative/editStrategyDurative'
|
|
|
+ }
|
|
|
+ this.$post(url, params).then(res=>{
|
|
|
+ if ( res.httpCode == 1 ){
|
|
|
+ this.showModal = false
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ this.getTableData()
|
|
|
+ } else {
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ modalCancel () {
|
|
|
+ this.showModal = false
|
|
|
+ },
|
|
|
+ commonOk () {
|
|
|
+ if (this.commonTitle == '确认启用') {
|
|
|
+ let params = {
|
|
|
+ strategyId: this.rowObj.id,
|
|
|
+ enabled: 1
|
|
|
+ }
|
|
|
+ this.getSwitchStatus(params)
|
|
|
+ } else if (this.commonTitle == '确认关闭') {
|
|
|
+ let params = {
|
|
|
+ strategyId: this.rowObj.id,
|
|
|
+ enabled:0
|
|
|
+ }
|
|
|
+ this.getSwitchStatus(params)
|
|
|
+ } else {
|
|
|
+ let params = {
|
|
|
+ strategyId: this.rowObj.id
|
|
|
+ }
|
|
|
+ this.delData(params)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ commonCancel () {
|
|
|
+ this.modalStatus = false
|
|
|
+ },
|
|
|
+ // 启用 关闭/接口
|
|
|
+ getSwitchStatus (params) {
|
|
|
+ this.$get('metroapi/alertdurative/enableStrategyDurative',params).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ if (params.enabled == 0) {
|
|
|
+ this.rowObj.enabled = 0
|
|
|
+ } else {
|
|
|
+ this.rowObj.enabled = 1
|
|
|
+ }
|
|
|
+ this.modalStatus = false
|
|
|
+ } else {
|
|
|
+ this.rowObj.enabled = 0
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 删除接口
|
|
|
+ delData (params) {
|
|
|
+ this.$get('metroapi/alertdurative/delStrategyDurative',params).then(res=>{
|
|
|
+ if (res.httpCode == 1 ){
|
|
|
+ this.modalStatus = false
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ this.getTableData()
|
|
|
+ } else {
|
|
|
+ this.$Message.info(res.msg)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleAdd(name) {
|
|
|
+ this.$nextTick(()=> {
|
|
|
+ this.$refs[name].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList.push({
|
|
|
+ targetId: '',
|
|
|
+ targetName: '',
|
|
|
+ exceptionRule: '',
|
|
|
+ exceptionRuleValue: '',
|
|
|
+ minValue: null,
|
|
|
+ maxValue: null,
|
|
|
+ rankId: '',
|
|
|
+ rankName: ''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ });
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleRemove(i) {
|
|
|
+ if (this.formCustom.alertStrategyDurativeDTOList.length == 1) {
|
|
|
+ this.$Message['error']({
|
|
|
+ background: true,
|
|
|
+ content: '请至少保留一条非空策略'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList.splice(i,1)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ selectTarget (val,index) {
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].targetId = val
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].targetName = this.$refs.targetId[0].query
|
|
|
+ },
|
|
|
+ selectExceptionRule (val,index) {
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].exceptionRule = val
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].exceptionRuleValue = this.$refs.exceptionRule[0].query
|
|
|
+ },
|
|
|
+ selectRank (val,index) {
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].rankId = val
|
|
|
+ this.formCustom.alertStrategyDurativeDTOList[index].rankName = this.$refs.rank[0].query
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped lang="stylus">
|
|
|
+.content-main-manage {
|
|
|
+ position: relative;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+.search-list {
|
|
|
+ display: flex;
|
|
|
+ padding: 10px 0 0;
|
|
|
+}
|
|
|
+.search-left {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .ivu-select {
|
|
|
+ width: 155px;
|
|
|
+ padding-right: 10px;
|
|
|
+ height: 32px;
|
|
|
+ }
|
|
|
+ .ivu-select-single .ivu-select-selection {
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ >>> .ivu-input {
|
|
|
+ width: 160px;
|
|
|
+ height: 32px;
|
|
|
+ }
|
|
|
+ >>> .ivu-input-prefix, >>> .ivu-input-suffix {
|
|
|
+ height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+ }
|
|
|
+ >>> .ivu-input-icon {
|
|
|
+ height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+ }
|
|
|
+ >>> .date-picker-main .ivu-date-picker-header {
|
|
|
+ border-bottom: 0.0052083333rem solid #204384;
|
|
|
+ }
|
|
|
+}
|
|
|
+.btn-container {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+.common-form {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+}
|
|
|
+>>> .common-form-list .ivu-form-item {
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.manage-main-center {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 150px);
|
|
|
+}
|
|
|
+.common-table {
|
|
|
+ max-height: 100%;
|
|
|
+}
|
|
|
+>>> .common-table .ivu-table th {
|
|
|
+ height: 50px;
|
|
|
+ }
|
|
|
+ >>> .common-table .ivu-table td {
|
|
|
+ height: 49.5px;
|
|
|
+ }
|
|
|
+ >>> .common-table .ivu-spin-fix {
|
|
|
+ top: 50px;
|
|
|
+ }
|
|
|
+ >>> .app-table .ivu-spin-fix {
|
|
|
+ height: calc(100vh - 375px);
|
|
|
+ }
|
|
|
+ >>> .ivu-table-tip {
|
|
|
+ background: url('../../../assets/images/noData.png') no-repeat center;
|
|
|
+}
|
|
|
+>>> .app-table .ivu-table-tip {
|
|
|
+ height: calc(100vh - 375px);
|
|
|
+ }
|
|
|
+ >>> .common-table .ivu-table-tip table {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+ >>> .modal-table {
|
|
|
+ overflow: auto !important;
|
|
|
+ }
|
|
|
+ >>> .modal-table .ivu-spin-fix {
|
|
|
+ height: 200px;
|
|
|
+ }
|
|
|
+ >>> .modal-table .ivu-table-tip {
|
|
|
+ height: 200px;
|
|
|
+ }
|
|
|
+.common-page {
|
|
|
+ margin-top: 15px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: flex-end;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ right: 0;
|
|
|
+}
|
|
|
+.common-page-total {
|
|
|
+ color: #fff;
|
|
|
+ padding-right: 10px;
|
|
|
+ font-size: 14px;
|
|
|
+ span {
|
|
|
+ color #409EFF;
|
|
|
+ }
|
|
|
+}
|
|
|
+>>> .modal-tabs-item {
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+>>> .common-modal-top-text {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #29A0FF;
|
|
|
+ line-height: 42px;
|
|
|
+ border-left: 3px solid #1590F1;
|
|
|
+ padding-left: 12px;
|
|
|
+}
|
|
|
+>>> .common-modal-content {
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+ justify-content: space-between;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+}
|
|
|
+>>> .modal-content-item {
|
|
|
+ width: 50%;
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+>>> .item-especial {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+>>> .modal-content-item-name {
|
|
|
+ width: 50%;
|
|
|
+ height: 45px;
|
|
|
+ line-height: 45px;
|
|
|
+ background: #13305F;
|
|
|
+ border-top: 1px solid #21437B;
|
|
|
+ border-left: 1px solid #21437B;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #F5F5F5;
|
|
|
+ padding-left: 20px;
|
|
|
+}
|
|
|
+>>> .modal-content-item-value {
|
|
|
+ width: 50%;
|
|
|
+ height: 45px;
|
|
|
+ line-height: 45px;
|
|
|
+ background: #06214D;
|
|
|
+ border-top: 1px solid #21437B;
|
|
|
+ border-left: 1px solid #21437B;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #F5F5F5;
|
|
|
+ padding-left: 20px;
|
|
|
+}
|
|
|
+>>> .item-especial .modal-content-item-name{
|
|
|
+ width: 25%;
|
|
|
+ height: 45px;
|
|
|
+ line-height: 45px;
|
|
|
+}
|
|
|
+>>> .item-especial .modal-content-item-value{
|
|
|
+ width: 75%;
|
|
|
+ height: 45px;
|
|
|
+ line-height: 45px;
|
|
|
+}
|
|
|
+>>> .item-especial-bot .modal-content-item-name {
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+}
|
|
|
+>>> .item-especial-bot .modal-content-item-value {
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+}
|
|
|
+>>> .common-modal-bot {
|
|
|
+ margin-bottom: 15px;
|
|
|
+}
|
|
|
+>>> .modal-content-item-value .ivu-tooltip {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+>>> .modal-content-item-value .ivu-tooltip-rel {
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow:ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+}
|
|
|
+>>> .strategy-form-scroll {
|
|
|
+ max-height: 360px;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+>>> .strategy-form {
|
|
|
+margin-bottom: 20px;
|
|
|
+}
|
|
|
+>>> .strategy-form .ivu-col{
|
|
|
+ color: #2B8EE2;
|
|
|
+ font-size: 14PX;
|
|
|
+}
|
|
|
+>>> .row-first-es {
|
|
|
+ border-left: 1px solid #21437B;
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ // background: #13305F;
|
|
|
+}
|
|
|
+>>> .strategy-form-header {
|
|
|
+ color: #2B8EE2;
|
|
|
+ font-size: 14PX;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ height: 55PX;
|
|
|
+ .ivu-col {
|
|
|
+ border-top: 1px solid #21437B;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ height: 100%;
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ background: #13305F;
|
|
|
+ }
|
|
|
+ .row-first {
|
|
|
+ border-left: 1px solid #21437B;
|
|
|
+ }
|
|
|
+ .row-last {
|
|
|
+ background: none;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+}
|
|
|
+>>> .strategy-form .row-first{
|
|
|
+ border-top: 1px solid #21437B;
|
|
|
+}
|
|
|
+ >>> .strategy-form .row-first-es {
|
|
|
+ background: #13305F;
|
|
|
+ }
|
|
|
+>>> .strategy-form .ivu-form-item{
|
|
|
+ height: 100%;
|
|
|
+ margin-bottom: 0;
|
|
|
+}
|
|
|
+
|
|
|
+>>> .strategy-form .row-es-text {
|
|
|
+ border-left: none;
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ background: #13305F;
|
|
|
+}
|
|
|
+>>> .row-select .ivu-form-item {
|
|
|
+ height: 100%;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+ .ivu-form-item-content {
|
|
|
+ padding: 10px 5px;
|
|
|
+ }
|
|
|
+}
|
|
|
+>>> .row-input {
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ .ivu-input-number{
|
|
|
+ margin: 10px 5px;
|
|
|
+ }
|
|
|
+}
|
|
|
+>>> .strategy-form .row-es-last {
|
|
|
+ border-right: 1px solid #21437B;
|
|
|
+ border-bottom: 1px solid #21437B;
|
|
|
+ height: 100%;
|
|
|
+ // display: flex;
|
|
|
+ // justify-content: space-around;
|
|
|
+ // align-items: center;
|
|
|
+ .row-es-last-text {
|
|
|
+ font-size: 14PX;
|
|
|
+ margin-right: 5px;
|
|
|
+ display: inline-block;
|
|
|
+ width: 42px;
|
|
|
+ }
|
|
|
+ .ivu-form-item {
|
|
|
+ // display: flex;
|
|
|
+ // flex: 1;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .ivu-form-item-content {
|
|
|
+ // display: flex;
|
|
|
+ padding: 10px 5px;
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+>>> .ivu-col-del {
|
|
|
+ cursor:pointer;
|
|
|
+ color:#BC2020;
|
|
|
+ padding-left:10px;
|
|
|
+}
|
|
|
+>>> .strategy-form .ivu-col-btn {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ border-top: none;
|
|
|
+ border-bottom: none;
|
|
|
+}
|
|
|
+>>> .strategy-form .ivu-form-item-error-tip {
|
|
|
+ padding-left: 6px;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail {
|
|
|
+ max-height:350px;
|
|
|
+ overflow: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+.strategy-form-detail .ivu-col{
|
|
|
+ text-align: center;
|
|
|
+ color: #fff;
|
|
|
+ height: 45px;
|
|
|
+ line-height: 45px
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .row-first-es-detail {
|
|
|
+ color: #2b8ee2;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .row-first-es-border {
|
|
|
+ border-left: none;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .row-es-last {
|
|
|
+ border-left: none;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .row-no-bg {
|
|
|
+ background: none;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .strategy-form-row .ivu-col {
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .row-detail-last-text {
|
|
|
+ width: 30% !important;
|
|
|
+}
|
|
|
+>>> .strategy-form-detail .ivu-col{
|
|
|
+ .ivu-tooltip {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .ivu-tooltip-rel {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ padding-left: 4px;
|
|
|
+ }
|
|
|
+}
|
|
|
+/* 对话框里的input里的placeholder样式修改 */
|
|
|
+/deep/ .ivu-input::-webkit-input-placeholder , /deep/ .ivu-input-number-input::-webkit-input-placeholder{
|
|
|
+ color: #718EBD;
|
|
|
+}
|
|
|
+/deep/ .ivu-input::-moz-placeholder, /deep/ .ivu-input-number-input::-webkit-input-placeholder{ /* Mozilla Firefox 19+ */
|
|
|
+ color: #718EBD;
|
|
|
+}
|
|
|
+/deep/ .ivu-input::-moz-placeholde, /deep/ .ivu-input-number-input::-webkit-input-placeholderr{ /* Mozilla Firefox 4 to 18 */
|
|
|
+ color: #718EBD;
|
|
|
+}
|
|
|
+/deep/ .ivu-input::-ms-input-placeholder, /deep/ .ivu-input-number-input::-webkit-input-placeholder{ /* Internet Explorer 10-11 */
|
|
|
+ color: #718EBD;
|
|
|
+}
|
|
|
+>>> .ivu-input-number{
|
|
|
+ border: 1px solid #204A8F;
|
|
|
+ background-color: transparent;
|
|
|
+ width: -webkit-fill-available;
|
|
|
+}
|
|
|
+>>> .ivu-input-number-input {
|
|
|
+ background: #06214D;
|
|
|
+ /* border: 1px solid #0185EA; */
|
|
|
+ border-radius: 6px;
|
|
|
+ color: #F5F5F5;
|
|
|
+}
|
|
|
+>>> .ivu-input-number-handler-wrap {
|
|
|
+ background: #06214D;
|
|
|
+ border-left: 1px solid #0185EA;
|
|
|
+}
|
|
|
+>>> .ivu-input-number-handler-down {
|
|
|
+ border-top: 1px solid #0185EA;
|
|
|
+}
|
|
|
+>>> .ivu-input-number-handler-down-inner, >>> .ivu-input-number-handler-up-inner {
|
|
|
+ color: #0185EA;
|
|
|
+}
|
|
|
+.ivu-input:focus{
|
|
|
+ border: 1px solid #0185EA;
|
|
|
+}
|
|
|
+>>> .ivu-input-number-focused {
|
|
|
+ border: 1px solid #0185EA;
|
|
|
+}
|
|
|
+</style>
|