| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 | <template>  <div>    <DialogCom :title="title" :visible.sync="isShow" width="60%">      <el-descriptions border :column="2" size="small" style="width: 60%">        <el-descriptions-item label="规则名称">{{ data.ruleName }}</el-descriptions-item>        <el-descriptions-item label="规则描述">{{ data.ruleRemark }}</el-descriptions-item>      </el-descriptions>      <el-form ref="queryForm" size="small" :inline="true">        <div>          <!--        <div class="disDiv">                    <el-form-item label="名称" >{{data.ruleName}}</el-form-item>                    <el-form-item label="描述" prop="taskName" > {{data.ruleRemark}} </el-form-item>                  </div>-->          <!--        <div class="disDiv">                    <el-form-item label="启动" prop="taskName">                      <el-switch v-model="data.enable"> </el-switch>                    </el-form-item>                  </div>-->        </div>        <el-tabs type="border-card"                 v-if="data.typeDataList.length > 0"                 class="tabs"                 v-model="selectedTab"                 @tab-click="handleTabClick"        >          <el-tab-pane            v-for="(entity) in data.typeDataList"            :name="`${entity.type}`"            :key="entity.type"            :label="entity.typeText"          >          </el-tab-pane>          <relevanceDialogCom :deviceData="currentTypeData" @updateDeviceData="updateDeviceData"></relevanceDialogCom>        </el-tabs>      </el-form>      <span slot="footer" class="dialog-footer">        <el-button @click="isShow = false">关闭</el-button>        <el-button type="primary" @click="submitData">确定</el-button>    </span>    </DialogCom>  </div></template><script>import relevanceDialogCom from "@/views/warnRule/relevanceDialogCom.vue";import {alarmDeviceDetail, saveDevice} from "@/api/iot/alarmRule";const defaultDetail = {  ruleId: 0,  ruleName: "",  enable: 0,  ruleType: "",  ruleRemark: "",  typeDataList: [],};export default {  name: "SocWebRelevanceDialog",  components: {    relevanceDialogCom,  },  data() {    return {      title: "告警规则关联设备",      isShow: false,      selectedTab: "",      currentTypeData: {        deviceTempList: [],        type: -1,        typeText: "",        iotCode: "",      },      data: defaultDetail,      iotCode: null,      queryParams: {},    };  },  mounted() {  },  methods: {    show(ruleId,iotCode) {      this.isShow = true;      this.iotCode = iotCode;      this.currentTypeData.iotCode = iotCode;      this.init(ruleId);    },    init(ruleId) {      this.queryParams.ruleId = ruleId;      alarmDeviceDetail(this.queryParams)        .then((response) => {          this.data = response.data;          if (this.data.typeDataList.length > 0) {            setTimeout(() => {              this.selectedTab = String(this.data.typeDataList[0].type);              this.currentTypeData = this.data.typeDataList[0];              this.currentTypeData.iotCode = this.iotCode;            }, 200);          }        })        .catch(() => {          this.loading = false;        });    },    handleTabClick() {      this.currentTypeData = this.data.typeDataList.find(        (t) => t.type == this.selectedTab      );      this.currentTypeData.iotCode = this.iotCode;    },    updateDeviceData(rel) {      this.data.typeDataList.forEach((obj, index) => {        if (obj.type === rel.type) {          obj.deviceTempList = rel.deviceTempList;          obj.isAllDeviceEnable = rel.isAllDeviceEnable;          obj.valueType = rel.valueType;        }      });    },    submitData() {      saveDevice(this.data)        .then((response) => {          this.$message('保存成功!');          this.isShow = false;          this.$emit("success");        })        .catch(() => {          this.loading = false;        });    },    closed() {      this.data = defaultDetail;    },  },};</script><style lang="scss" scoped>.disDiv {  display: flex;  justify-content: space-between;}.dialog-footer {  float: right;  margin-top: 10px;  margin-bottom: 10px;  margin-right: 17px;}/* 鼠标选中时样式 */::v-deep .el-tabs__item.is-active {  opacity: 1;  font-size: 16px;  font-weight: bold;  color: white !important;  font-family:  Arial, sans-serif;}/* 鼠标悬浮时样式 */::v-deep .el-tabs__item:hover {  cursor: pointer;  opacity: 1;  font-size: 16px;  font-weight: bold;  color: white !important;  font-family:  Arial, sans-serif;}::v-deep .el-tabs__item {  color: #dceeee;  opacity: 0.9;  font-size: 16px;  font-weight: bold;  font-family:  Arial, sans-serif;}::v-deep .el-tabs__nav-wrap{  background-color: #d7d7d7 !important;}::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{  background-color: #3a3b3b;}</style>
 |