<template>
|
<div class="s-event-push-right">
|
<div class="s-right-config">
|
<el-form>
|
<el-form-item label="名称">
|
<el-input
|
v-model="taskEditData.name"
|
placeholder="请输入名称"
|
size="small"
|
style="width:400px"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item label="时间">
|
<el-date-picker
|
v-model="taskEditData.time"
|
format="yyyy-MM-dd HH:mm:ss"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
type="datetimerange"
|
range-separator="至"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
size="small"
|
></el-date-picker>
|
</el-form-item>
|
|
<span style="line-height: 38px;">推送服务器</span>
|
<div class="icon-btn" v-if="urls.length < 1" @click="addUrl()">
|
<i class="el-icon-circle-plus-outline"></i>
|
<span> 添加接口地址</span>
|
</div>
|
<div v-for="(item,index) in urls" :key="item.hash" class="flex-box server-url">
|
<div>
|
<el-checkbox v-model="item.enable"></el-checkbox>
|
<span class="ml20">{{'URL '}}</span>
|
<el-input v-model="item.url" style="width:360px;margin-left:0px;" size="small"></el-input>
|
</div>
|
<div class="server-add">
|
<i
|
class="el-icon-remove-outline"
|
@click="delUrl(index)"
|
style="color:red;margin-right:10px"
|
/>
|
<i class="el-icon-circle-plus-outline" @click="addUrl()"></i>
|
</div>
|
</div>
|
|
<el-form-item label="联动方式" style="margin-top: 20px;width:100">
|
<el-select v-model="taskEditData.lineWay" placeholder="请选择" size="small">
|
<el-option
|
v-for="item in taskEditData.lineOptions"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
|
<el-form-item label="标签">
|
<el-radio v-model="taskEditData.radioValue" label="1">满足全部</el-radio>
|
<el-radio v-model="taskEditData.radioValue" label="2">满足任意一个</el-radio>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div class="s-right-mid"></div>
|
<div class="s-right-rule">
|
<div class="rule-title">
|
<b style="margin-right:20px">任务配置</b>
|
<div class="icon-btn" v-if="dataList.length === 0" @click="createSet">
|
<i class="el-icon-circle-plus-outline"></i>
|
<span> 新增</span>
|
</div>
|
<div class="icon-btn" v-if="dataList.length > 0" @click="cleanSet">
|
<i class="el-icon-remove-outline"></i>
|
<span> 清空</span>
|
</div>
|
</div>
|
|
<div v-for="(rule,index) in dataList" :key="index" style="margin-top:10px">
|
<el-row :gutter="20">
|
<!-- 主题 -->
|
<el-col :span="4">
|
<el-select
|
v-model="rule.topic_type"
|
placeholder="请选择"
|
@change="selectTopic(rule, true)"
|
size="small"
|
>
|
<el-option
|
v-for="item in rule.topicTypeOptions"
|
:key="item.id"
|
:label="item.name"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-col>
|
|
<!-- 过滤值 -->
|
<el-col :span="4">
|
<el-select
|
v-model="rule.topic_arg"
|
placeholder="请选择"
|
@change="selectArg(rule, true)"
|
size="small"
|
>
|
<el-option
|
v-for="item in rule.topicArgOptions"
|
:key="item.id"
|
:label="item.name"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-col>
|
|
<!-- 操作符 -->
|
<el-col :span="4">
|
<el-select v-model="rule.operator" placeholder="请选择" size="small">
|
<el-option label="==" value="="></el-option>
|
</el-select>
|
</el-col>
|
|
<!-- 值类型 -->
|
<el-col :span="4">
|
<el-select
|
v-model="rule.operator_type"
|
placeholder="请选择"
|
@change="selectOperator(rule, true)"
|
size="small"
|
>
|
<el-option
|
v-for="item in rule.operatorTypeOpionts"
|
:key="item.id"
|
:label="item.name"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</el-col>
|
|
<!-- 过滤值 -->
|
<el-col :span="4">
|
<div v-if="rule.operator_type === 'custom'">
|
<el-input v-model="rule.rule_value" placeholder="请输入内容" size="small"></el-input>
|
</div>
|
<div v-else>
|
<el-select
|
v-model="rule.rule_values"
|
multiple
|
collapse-tags
|
placeholder="请选择"
|
size="small"
|
@change="selectValue( rule, $event)"
|
>
|
<el-option
|
v-for="item in rule.ruleValueOptions"
|
:key="item.id"
|
:label="item.name"
|
:disabled="item.disabled"
|
:value="item.value"
|
></el-option>
|
</el-select>
|
</div>
|
</el-col>
|
<el-col :span="4">
|
<div class="rule-edit-btn">
|
<i
|
v-show="dataList.length > 1"
|
class="el-icon-remove-outline"
|
@click="delRule(index)"
|
style="color:red;margin-right:10px"
|
/>
|
<i
|
v-show="index === dataList.length -1"
|
class="el-icon-circle-plus-outline"
|
@click="addRule()"
|
style="color:#3D68E1"
|
></i>
|
</div>
|
</el-col>
|
</el-row>
|
<el-row></el-row>
|
</div>
|
|
<div class="rule-title2">
|
<b>规则</b>
|
<div class="div-border" v-html="taskEditData.eventTxt"></div>
|
</div>
|
<div class="config-item">
|
<b>推送字段</b>
|
<el-button type="primary" size="mini" @click="openPushSetDialog">设置</el-button>
|
</div>
|
<div class="save-btn">
|
<el-button type="info" size="small" @click="onCancle" style="color:#222">取消</el-button>
|
<el-button type="primary" @click="eventPushsSave" size="small">保存</el-button>
|
</div>
|
</div>
|
<el-dialog
|
:visible="pushFieldDialog"
|
:append-to-body="false"
|
:close-on-click-modal="false"
|
class="dialog-push-field"
|
@close="pushFieldDialog=false"
|
>
|
<div slot="title" class="slot-title">
|
<p>请选择想要推送的字段</p>
|
<div class="right">
|
<el-checkbox v-model="allFieldChecked" @change="allCheckChange"></el-checkbox>
|
</div>
|
</div>
|
<div class="check-area" v-for="configObj in tempPushSet" :key="configObj.id">
|
<div class="header">
|
<div class="title">{{configObj.name}}</div>
|
<div class="right">
|
<el-checkbox v-model="configObj.checked" @change="toggleConfigCheck(configObj)">全选</el-checkbox>
|
</div>
|
</div>
|
<div class="flex-box flex-wrap">
|
<div class="param flex-box" v-for="param in configObj.children" :key="param.id">
|
<el-checkbox v-model="param.checked" @change="checkChildren"></el-checkbox>
|
<span class="param-name">{{param.name}}</span>
|
<el-input
|
v-model="param.alias"
|
size="mini"
|
:ref="`input_${param.id}`"
|
@input="varifyField(param)"
|
:style="{color:param.error?'red':'',borderColor:param.error?'red':''}"
|
></el-input>
|
</div>
|
</div>
|
</div>
|
<div slot="footer" class="text-center">
|
<el-button size="small" @click="canclePushFieldSet">取消</el-button>
|
<el-button
|
size="small"
|
type="primary"
|
:disabled="disabledPushFieldSet"
|
@click="submitPushFieldSet"
|
>保存</el-button>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
<script>
|
|
import { eventPushsSave, findByEventTopic, getPushSet } from "@/api/event";
|
import { findDictionaryByType, findDictionaryByID } from "@/api/dictionary";
|
import { getTaskList } from "@/api/search";
|
|
export default {
|
name: "rightEvent",
|
props: {
|
eventObject: {
|
type: Object,
|
default: () => {
|
return {};
|
}
|
}
|
},
|
computed: {
|
urls() {
|
return this.taskEditData.urls
|
}
|
},
|
data() {
|
return {
|
taskEditData: {},
|
dataList: [],
|
dictionary: [],
|
cameras: [],
|
tasks: [],
|
tables: [],
|
baseRule: {
|
event_push_id: "",
|
id: "",
|
operator: "==",
|
operator_type: "",
|
rule_value: "",
|
rule_values: [],
|
topic_arg: "",
|
topic_type: "",
|
topicTypeOptions: {},
|
topicArgOptions: {},
|
operatorOptions: {},
|
operatorTypeOpionts: {},
|
ruleValueOptions: []
|
},
|
pushFieldDialog: false,
|
tempPushSet: [],
|
pushFields: [],
|
allFieldChecked: false,
|
disabledPushFieldSet: true,
|
};
|
},
|
watch: {
|
eventObject: {
|
handler(newVal, oldVal) {
|
this.taskEditData.enable = this.eventObject.enable;
|
if (newVal !== oldVal) {
|
if (this.taskEditData.id !== newVal.id) {
|
this.dataList = [];
|
|
this.taskEditData.id = newVal.id;
|
this.taskEditData.name = newVal.name;
|
this.taskEditData.time = [
|
this.eventObject.time_start,
|
this.eventObject.time_end
|
];
|
this.taskEditData.serverIp = newVal.ip_ports;
|
this.taskEditData.urls = newVal.urls;
|
this.taskEditData.lineWay = newVal.link_type;
|
this.taskEditData.eventTxt = newVal.rule_text;
|
this.taskEditData.radioValue = newVal.is_satisfy_all ? "1" : "2";
|
|
if (!this.taskEditData.urls) {
|
this.$set(this.taskEditData, "urls", [])
|
}
|
//this.taskEditData.push_set = this.eventObject.push_set;
|
if (!this.eventObject.push_set.length) {
|
this.$set(this.taskEditData, "push_set", this.pushFields)
|
} else {
|
this.$set(this.taskEditData, "push_set", this.eventObject.push_set)
|
}
|
if (newVal.rules) {
|
newVal.rules.forEach(element => {
|
let newRule = Object.assign(JSON.parse(JSON.stringify(this.baseRule)), element)
|
this.dataList.push(newRule)
|
this.selectTopic(newRule);
|
this.selectOperator(newRule);
|
})
|
}
|
}
|
}
|
},
|
deep: true
|
},
|
tempPushSet: {
|
handler(n, o) {
|
let _this = this;
|
let flag = false;
|
n.forEach(configObj => {
|
let notChecked = configObj.children.find(param => !param.checked);
|
if (!notChecked) {
|
configObj.checked = true;
|
} else {
|
configObj.checked = false;
|
}
|
let someoneChecked = configObj.children.find(param => param.checked);
|
if (someoneChecked) {
|
flag = true
|
}
|
|
});
|
if (flag) {
|
this.disabledPushFieldSet = false;
|
} else {
|
this.disabledPushFieldSet = true;
|
}
|
},
|
deep: true
|
}
|
},
|
created() {
|
this.reAdd();
|
},
|
mounted() {
|
// 加载字典
|
this.findByType();
|
this.getCameras();
|
this.getTasks();
|
this.getPushFields();
|
},
|
methods: {
|
openPushSetDialog() {
|
this.pushFieldDialog = true;
|
this.tempPushSet = JSON.parse(JSON.stringify(this.taskEditData.push_set));
|
this.checkFlag()
|
},
|
checkFlag() {
|
// debugger
|
let flag = true
|
this.tempPushSet.forEach(item => {
|
if (item.checked == false) {
|
flag = false
|
}
|
});
|
this.allFieldChecked = flag
|
},
|
checkChildren(val) {
|
console.log(val, 12121);
|
if (val == false) {
|
this.allFieldChecked = false
|
} else if (val == true && this.allFieldChecked == false) {
|
this.$nextTick(() => {
|
this.checkFlag()
|
})
|
}
|
|
},
|
varifyField(param) {
|
var reg = /^[A-Za-z]+[0-9-_]?$/;
|
if (!reg.test(param.alias)) {
|
this.$message('请输入合法字段名');
|
param.error = true;
|
} else {
|
param.error = false;
|
}
|
// this.pushFields.forEach(configObj => {
|
// configObj.children.find(param => param.error)
|
// })
|
|
},
|
canclePushFieldSet() {
|
this.pushFieldDialog = false;
|
},
|
allCheckChange(val) {
|
|
this.tempPushSet.forEach(function (item) {
|
item.checked = val
|
item.children.forEach(function (child) {
|
child.checked = val
|
})
|
})
|
},
|
submitPushFieldSet() {
|
let flag = false;
|
//this.pushFields.forEach(configObj => {
|
this.tempPushSet.forEach(configObj => {
|
let errorOne = configObj.children.find(param => param.checked && param.error);
|
if (errorOne) {
|
this.$notify({
|
type: 'error',
|
message: '请将选中字段输入合法字段名'
|
})
|
flag = true
|
}
|
});
|
if (flag) {
|
//NO SUBMIT
|
return
|
}
|
|
this.taskEditData.push_set = this.tempPushSet;
|
this.pushFieldDialog = false;
|
|
// 保存规则
|
this.eventPushsSave()
|
},
|
toggleConfigCheck(configObj) {
|
|
configObj.children.forEach(child => {
|
child.checked = configObj.checked
|
})
|
this.checkFlag()
|
},
|
getPushFields() {
|
let _this = this;
|
getPushSet().then(res => {
|
_this.pushFields = res.data;
|
})
|
// this.pushFields = [
|
// { id: 'sxjxx', name: '摄像机信息', checked: false, alias: '',
|
// children: [
|
// { name: '摄像机ID', checked: false, alias: 'cameraID', id: 'cameraID', children: null },
|
// { name: '摄像机名称', checked: false, alias: 'cameraName', id: 'cameraName', children: null },
|
// { name: '摄像机地址', checked: false, alias: 'cameraAddr', id: 'cameraAddr', children: null },
|
// { name: '摄像机址', checked: false, alias: 'cameraAdr', id: 'cameraAdr', children: null }
|
// ] },
|
// { id: 'cjxx', name: '场景信息', checked: false, alias: '',
|
// children: [{ name: '场景ID', checked: false, alias: 'taskId', id: 'tskId', children: null }] },
|
// ];
|
|
},
|
addUrl() {
|
this.taskEditData.urls.push({
|
checked: true,
|
hash: Math.random().toString(36).substr(2),
|
url: "",
|
});
|
},
|
delUrl(index) {
|
this.$set(this.taskEditData.urls, index, this.baseRule);
|
this.taskEditData.urls.splice(index, 1);
|
},
|
// 保存
|
async eventPushsSave() {
|
// 判断保存的ip是否符合格式要求
|
if (this.taskEditData.urls.length < 1) {
|
this.$notify({
|
type: "warning",
|
message: "请配置至少一台推送服务器"
|
});
|
return;
|
}
|
for (let i = 0; i < this.taskEditData.urls.length; i++) {
|
if (this.taskEditData.urls[i].url.length < 1) {
|
this.$notify({
|
type: "warning",
|
message: "接口URL地址不允许为空"
|
});
|
return;
|
}
|
}
|
|
// 拼接字符串
|
let ruleDesc = []
|
this.dataList.forEach(i => {
|
let str = "";
|
if (i.topic_type) {
|
str += this.getNameByValue(i.topicTypeOptions, i.topic_type);
|
}
|
if (i.topic_arg) {
|
str += this.getNameByValue(i.topicArgOptions, i.topic_arg);
|
}
|
if (i.operator === '==') {
|
str += ' = ';
|
}
|
|
if (i.rule_value === "all*all") {
|
str += "全部";
|
} else if (i.rule_value === "null*null") {
|
str += "空";
|
} else {
|
str += i.rule_value;
|
}
|
|
if (str.length > 0) {
|
ruleDesc.push(str);
|
}
|
});
|
// 处理规则列表数据结构
|
let ruleList = this.dataList.map(i => {
|
return {
|
topic_type: i.topic_type,
|
topic_arg: i.topic_arg,
|
operator: i.operator,
|
operator_type: i.operator_type,
|
rule_value: i.rule_value
|
}
|
});
|
|
let json = {
|
enable: this.taskEditData.enable,
|
id: this.taskEditData.id,
|
ip_ports: this.taskEditData.serverIp,
|
name: this.taskEditData.name,
|
rule_text: ruleDesc.join("<br/>"),
|
rules: ruleList,
|
time_start: this.taskEditData.time[0],
|
time_end: this.taskEditData.time[1],
|
urls: this.taskEditData.urls,
|
is_satisfy_all: this.taskEditData.radioValue === "1",
|
link_type: this.taskEditData.lineWay,
|
push_set: this.taskEditData.push_set
|
};
|
|
let res = await eventPushsSave(json);
|
if (res && res.success) {
|
this.taskEditData.eventTxt = ruleDesc.join("<br/>");
|
this.$emit("updateList", res.data.id);
|
this.$notify({
|
type: "success",
|
message: "保存成功"
|
});
|
}
|
},
|
// 查找字典
|
async findByType() {
|
let res = await findDictionaryByType();
|
if (res && res.success) {
|
this.dictionary = Object.assign(this.dictionary, res.data)
|
this.baseRule.topicTypeOptions = this.dictionary.EVENTRULETOPIC
|
this.baseRule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE
|
this.dictionary['alarmLevel'] = this.dictionary.ALARMLEVEL.map(el => {
|
return {
|
name: el.name,
|
value: el.name
|
}
|
})
|
}
|
},
|
async getCameras() {
|
let rsp = await findByEventTopic({ topic: 'camera', type: 'name' });
|
if (rsp && rsp.success) {
|
this.dictionary['camera'] = rsp.data;
|
}
|
|
rsp = await findByEventTopic({ topic: 'dbtable' });
|
if (rsp && rsp.success) {
|
this.dictionary['dbtable'] = rsp.data.map(el => {
|
return {
|
name: el.name,
|
value: el.name
|
}
|
})
|
}
|
},
|
async getTasks() {
|
this.dictionary['task'] = []
|
let rsp = await getTaskList();
|
if (rsp && rsp.success) {
|
let hash = {}
|
rsp.data.forEach(task => {
|
if (!task.isDelete && !hash[task.name]) {
|
this.dictionary['task'].push({
|
value: task.name,
|
name: task.name
|
})
|
hash[task.name] = true;
|
}
|
})
|
}
|
},
|
// 新建配置
|
createSet() {
|
this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
|
},
|
cleanSet() {
|
this.dataList.splice(0, this.dataList.length);
|
},
|
// 添加子规则
|
addRule() {
|
this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
|
},
|
// 删除子规则
|
delRule(index) {
|
this.dataList.splice(index, 1);
|
},
|
// 规则中下拉框的选择回调
|
selectTopic(rule, resetNext = false) {
|
rule.topicTypeOptions.forEach(element => {
|
if (element.value === rule.topic_type) {
|
rule.topicArgOptions = element.children;
|
if (resetNext) {
|
rule.topic_arg = rule.topicArgOptions[0].value;
|
this.selectArg(rule, resetNext);
|
}
|
}
|
});
|
},
|
selectArg(rule, resetNext = false) {
|
debugger
|
let argInfo = rule.topicArgOptions.filter(arg => {
|
return arg.value === rule.topic_arg;
|
})
|
|
if (argInfo.length > 0) {
|
let desc = argInfo[0].description.split(",");
|
if (desc.length > 0) {
|
rule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE.filter(el => {
|
return desc.indexOf(el.value) >= 0;
|
})
|
}
|
}
|
|
if (resetNext) {
|
rule.operator_type = rule.operatorTypeOpionts[rule.operatorTypeOpionts.length - 1].value;
|
this.selectOperator(rule, resetNext);
|
}
|
},
|
selectOperator(rule, resetNext = false) {
|
if (rule.operator_type === "option") {
|
rule.ruleValueOptions = this.dictionary[rule.topic_type] ? this.dictionary[rule.topic_type] : [];
|
|
if (rule.rule_value != "") {
|
rule.rule_values = rule.rule_value.split(",");
|
}
|
|
// 处理 全部/空
|
for (let i = 0; i < rule.rule_values.length; i++) {
|
if (rule.rule_values[i] === "all*all") {
|
rule.rule_values[i] = "全部";
|
}
|
|
if (rule.rule_values[i] === "null*null") {
|
rule.rule_values[i] = "空";
|
}
|
}
|
|
this.setOptionsDisable(rule);
|
}
|
|
if (resetNext) {
|
rule.rule_value = "";
|
rule.rule_values = [];
|
}
|
},
|
selectValue(rule, val) {
|
if (rule.operator_type === "option") {
|
this.setOptionsDisable(rule);
|
|
if (val.indexOf("全部") >= 0) {
|
rule.rule_value = "all*all";
|
return;
|
}
|
|
if (val.indexOf("空") >= 0) {
|
rule.rule_value = "null*null";
|
return;
|
}
|
}
|
|
rule.rule_value = val.join(",");
|
},
|
setOptionsDisable(rule) {
|
let isAllSelect = (rule.rule_values.indexOf("全部") >= 0);
|
let isNullSelect = (rule.rule_values.indexOf("空") >= 0);
|
|
rule.ruleValueOptions.forEach(opt => {
|
if (!rule.rule_values.length) {
|
opt.disabled = false;
|
return
|
}
|
|
if (opt.name === "全部") {
|
opt.disabled = !isAllSelect;
|
return
|
}
|
|
if (opt.name === "空") {
|
opt.disabled = !isNullSelect;
|
return
|
}
|
|
opt.disabled = (isAllSelect || isNullSelect);
|
})
|
},
|
// 根据value返回对应的name
|
getNameByValue(arr, value) {
|
let s = arr.find(item => {
|
return item.value === value;
|
});
|
|
return s.name;
|
},
|
// 清空重新新增
|
reAdd() {
|
this.taskEditData = {
|
id: "",
|
name: "",
|
time: [
|
this.$moment().format("YYYY-MM-DD 00:00:00"),
|
this.$moment().format("YYYY-MM-DD HH:mm:ss")
|
],
|
serverIp: [
|
{
|
enable: true,
|
server_ip: "",
|
port: 0
|
}
|
],
|
urls: [
|
],
|
lineWay: "",
|
lineOptions: [
|
{
|
value: "001",
|
label: "IP广播"
|
}
|
],
|
radioValue: "1",
|
eventTxt: "",
|
push_set: this.pushFields
|
};
|
this.dataList = [];
|
},
|
onCancle() {
|
this.$emit('onCancle')
|
}
|
}
|
};
|
</script>
|
<style lang="scss">
|
.s-event-push-right {
|
text-align: left;
|
font-size: 14px;
|
i {
|
cursor: pointer;
|
}
|
.s-right-config {
|
padding: 10px 40px;
|
}
|
|
.el-form-item__label {
|
text-align: left;
|
}
|
|
.s-right-mid {
|
height: 10px;
|
background-color: #e9ebf2;
|
width: 100%;
|
//position: absolute;
|
}
|
|
.s-right-rule {
|
padding: 20px 40px;
|
margin-top: 17px;
|
.rule-title {
|
border-bottom: 1px solid #e0e0e0;
|
}
|
.rule-title2 {
|
margin-top: 20px;
|
}
|
|
.div-border {
|
width: 995px;
|
padding: 10px;
|
margin-top: 15px;
|
min-height: 80px;
|
background: #fafafa;
|
border: 1px solid #f2f2f2;
|
}
|
|
.rule-edit-btn {
|
font-size: 18px;
|
line-height: 38px;
|
}
|
|
.save-btn {
|
// float: right;
|
margin-top: 20px;
|
margin-left: 895px;
|
}
|
}
|
.config-item {
|
margin: 20px 0;
|
b {
|
margin-right: 10px;
|
}
|
}
|
.el-button--text {
|
text-decoration: unset;
|
}
|
|
.icon-btn {
|
i {
|
font-size: 18px;
|
position: relative;
|
top: 2px;
|
}
|
span {
|
font-size: 14px;
|
}
|
display: inline;
|
color: #3d68e1;
|
line-height: 38px;
|
margin-left: 10px;
|
cursor: pointer;
|
}
|
|
.server-url {
|
padding-top: 25px;
|
}
|
.server-add {
|
font-size: 18px;
|
margin-left: 8px;
|
color: #3d68e1;
|
line-height: 39px;
|
}
|
.dialog-push-field {
|
.el-button--primary.is-disabled,
|
.el-button--primary.is-disabled:hover {
|
background-color: #9eb4f0 !important;
|
border-color: #9eb4f0 !important;
|
}
|
.el-dialog {
|
width: 910px;
|
height: 700px;
|
.el-dialog__body {
|
padding-top: 14px;
|
height: 540px;
|
overflow-y: auto;
|
}
|
}
|
.text-center {
|
text-align: center;
|
}
|
.slot-title {
|
position: relative;
|
.right {
|
position: absolute;
|
top: 0;
|
right: 30px;
|
}
|
}
|
.check-area {
|
padding-bottom: 10px;
|
.header {
|
position: relative;
|
background: #efefef;
|
line-height: 30px;
|
margin-bottom: 14px;
|
font-weight: bold;
|
.title {
|
border-left: 3px solid #2481fa;
|
padding-left: 10px;
|
}
|
.right {
|
position: absolute;
|
top: 0;
|
right: 30px;
|
}
|
}
|
.flex-box.flex-wrap {
|
flex-wrap: wrap;
|
}
|
.param.flex-box {
|
word-break: keep-all;
|
align-items: center;
|
margin: 0 10px;
|
min-width: 260px;
|
margin-bottom: 10px;
|
.param-name {
|
margin: 0 5px;
|
}
|
.el-input {
|
border-color: #dcdfe6;
|
color: #606266;
|
.el-input__inner {
|
color: inherit;
|
border-color: inherit;
|
}
|
}
|
}
|
}
|
}
|
}
|
</style>
|