|  | @@ -0,0 +1,438 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div class="app-container">
 | 
	
		
			
				|  |  | +    <div class="main-right-box">
 | 
	
		
			
				|  |  | +      <!--    搜索条件    -->
 | 
	
		
			
				|  |  | +      <div class="main-search-box">
 | 
	
		
			
				|  |  | +        <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" size="small">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<!--          <el-form-item label="组织机构">-->
 | 
	
		
			
				|  |  | +<!--            <org-tree-->
 | 
	
		
			
				|  |  | +<!--              v-model="queryParams.orgId"-->
 | 
	
		
			
				|  |  | +<!--              @defaultOrg="getDefaultOrg"-->
 | 
	
		
			
				|  |  | +<!--              @checkChange="checkChange"-->
 | 
	
		
			
				|  |  | +<!--              @click="clickTreeNode"-->
 | 
	
		
			
				|  |  | +<!--              ref="orgTree"-->
 | 
	
		
			
				|  |  | +<!--            ></org-tree>-->
 | 
	
		
			
				|  |  | +<!--          </el-form-item>-->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          <el-form-item label="规则名称" prop="name">
 | 
	
		
			
				|  |  | +            <el-input v-model="queryParams.name" :maxlength="50" clearable placeholder="请输入规则名称"/>
 | 
	
		
			
				|  |  | +          </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        </el-form>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-row :gutter="10">
 | 
	
		
			
				|  |  | +          <el-col :span="1.5">
 | 
	
		
			
				|  |  | +            <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery"
 | 
	
		
			
				|  |  | +            >搜索
 | 
	
		
			
				|  |  | +            </el-button>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +          <el-col :span="1.5">
 | 
	
		
			
				|  |  | +            <el-button icon="el-icon-refresh" size="mini" type="primary" @click="resetQuery"
 | 
	
		
			
				|  |  | +            >重置
 | 
	
		
			
				|  |  | +            </el-button>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +          <el-col :span="1.5">
 | 
	
		
			
				|  |  | +            <el-button icon="el-icon-plus" size="mini" type="primary" @click="showAddModel"
 | 
	
		
			
				|  |  | +            >新增
 | 
	
		
			
				|  |  | +            </el-button>
 | 
	
		
			
				|  |  | +          </el-col>
 | 
	
		
			
				|  |  | +          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
 | 
	
		
			
				|  |  | +        </el-row>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <el-table
 | 
	
		
			
				|  |  | +        v-loading="loading"
 | 
	
		
			
				|  |  | +        :data="logInfoList"
 | 
	
		
			
				|  |  | +        border
 | 
	
		
			
				|  |  | +        height="646" size="small" >
 | 
	
		
			
				|  |  | +        <el-table-column align="center" label="序号" width="60">
 | 
	
		
			
				|  |  | +          <template v-slot:default="scope">
 | 
	
		
			
				|  |  | +            <span v-text="getPageIndex(scope.$index)"> </span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column align="center" label="规则名称" prop="name"/>
 | 
	
		
			
				|  |  | +        <el-table-column label="启用状态" align="center" key="enable" prop="enable">
 | 
	
		
			
				|  |  | +          <template slot-scope="scope">
 | 
	
		
			
				|  |  | +            <span>{{ scope.row.enable === 1 ? '启用' : '停用' }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column label="发送短信" align="center" key="sendSms" prop="sendSms">
 | 
	
		
			
				|  |  | +          <template slot-scope="scope">
 | 
	
		
			
				|  |  | +            <span>{{ scope.row.sendSms === 1 ? '是' : '否' }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column align="center" label="描述" prop="remark"/>
 | 
	
		
			
				|  |  | +        <el-table-column align="center" label="适用机构" prop="orgNames">
 | 
	
		
			
				|  |  | +          <template slot-scope="item">
 | 
	
		
			
				|  |  | +            <span style="white-space: pre-line">{{handleOrgNameShow(item.row)}}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column align="center" label="传感器类型" prop="productTypes">
 | 
	
		
			
				|  |  | +          <template slot-scope="item">
 | 
	
		
			
				|  |  | +            <span style="white-space: pre-line">{{handleProductTypeShow(item.row)}}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column label="操作" fixed="right" style="width: 100px" align="center"
 | 
	
		
			
				|  |  | +                         class-name="small-padding fixed-width">
 | 
	
		
			
				|  |  | +          <template slot-scope="scope">
 | 
	
		
			
				|  |  | +            <el-button size="mini" type="text" icon="el-icon-edit" @click="editHandler(scope.row)"
 | 
	
		
			
				|  |  | +                       v-hasPermi="['core:task:query']">编辑</el-button>
 | 
	
		
			
				|  |  | +            <el-button size="mini" type="text" icon="el-icon-delete" @click="deleteHandler(scope.row)"
 | 
	
		
			
				|  |  | +                       v-hasPermi="['core:task:query']">删除</el-button>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +      </el-table>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNum" :total="total"
 | 
	
		
			
				|  |  | +                  @pagination="getList"/>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <DialogCom :title="title" :visible.sync="open" append-to-body width="780px">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :style="{height:'500px',margin:'35px'}">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="规则名称" prop="name">
 | 
	
		
			
				|  |  | +          <el-input type="text" v-model="form.name" placeholder="请输入名称" maxlength="50" show-word-limit/>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="通知机构" prop="orgIds" class="is-required">
 | 
	
		
			
				|  |  | +          <org-tree-select
 | 
	
		
			
				|  |  | +            v-model="form.orgIds"
 | 
	
		
			
				|  |  | +            :queryData="4"
 | 
	
		
			
				|  |  | +            ref="orgTreeSelect"
 | 
	
		
			
				|  |  | +            :checkShow="true"
 | 
	
		
			
				|  |  | +            @handBeforeHide="selectOpenUser"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +          </org-tree-select>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="通知角色" prop="roleIds">
 | 
	
		
			
				|  |  | +          <el-select
 | 
	
		
			
				|  |  | +            :multiple="true"
 | 
	
		
			
				|  |  | +            style="width: 100%"
 | 
	
		
			
				|  |  | +            v-model="form.roleIds"
 | 
	
		
			
				|  |  | +            placeholder="请选择通知角色"
 | 
	
		
			
				|  |  | +            filterable
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <el-option
 | 
	
		
			
				|  |  | +              v-for="item in roleList"
 | 
	
		
			
				|  |  | +              :key="item.id"
 | 
	
		
			
				|  |  | +              :label="item.roleName"
 | 
	
		
			
				|  |  | +              :value="item.id"
 | 
	
		
			
				|  |  | +            ></el-option>
 | 
	
		
			
				|  |  | +          </el-select>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="通知人员" prop="userIds">
 | 
	
		
			
				|  |  | +          <el-select
 | 
	
		
			
				|  |  | +            :multiple="true"
 | 
	
		
			
				|  |  | +            style="width: 100%"
 | 
	
		
			
				|  |  | +            v-model="form.userIds"
 | 
	
		
			
				|  |  | +            placeholder="请选择通知人员"
 | 
	
		
			
				|  |  | +            filterable
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <el-option
 | 
	
		
			
				|  |  | +              v-for="item in userList"
 | 
	
		
			
				|  |  | +              :key="item.id"
 | 
	
		
			
				|  |  | +              :label="item.name"
 | 
	
		
			
				|  |  | +              :value="item.id"
 | 
	
		
			
				|  |  | +            ></el-option>
 | 
	
		
			
				|  |  | +          </el-select>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="设备类型" prop="productTypes" class="is-required">
 | 
	
		
			
				|  |  | +          <el-select
 | 
	
		
			
				|  |  | +            :multiple="true"
 | 
	
		
			
				|  |  | +            style="width: 100%"
 | 
	
		
			
				|  |  | +            v-model="form.productTypes"
 | 
	
		
			
				|  |  | +            placeholder="请选择设备类型"
 | 
	
		
			
				|  |  | +            filterable
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <el-option
 | 
	
		
			
				|  |  | +              v-for="item in productTypeList"
 | 
	
		
			
				|  |  | +              :key="item.productType"
 | 
	
		
			
				|  |  | +              :label="item.productName"
 | 
	
		
			
				|  |  | +              :value="item.productType"
 | 
	
		
			
				|  |  | +            ></el-option>
 | 
	
		
			
				|  |  | +          </el-select>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="规则描述" prop="remark">
 | 
	
		
			
				|  |  | +          <el-input type="textarea" v-model="form.remark" :rows="3" maxlength="2000" placeholder="请输入描述" clearable/>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-form-item label="是否启用" prop="enable">
 | 
	
		
			
				|  |  | +          <el-switch
 | 
	
		
			
				|  |  | +            v-model="form.enable"
 | 
	
		
			
				|  |  | +            active-color="#13ce66"
 | 
	
		
			
				|  |  | +            inactive-color="#ff4949">
 | 
	
		
			
				|  |  | +          </el-switch>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +        <el-form-item label="发送短信" prop="sendSms">
 | 
	
		
			
				|  |  | +          <el-switch
 | 
	
		
			
				|  |  | +            v-model="form.sendSms"
 | 
	
		
			
				|  |  | +            active-color="#13ce66"
 | 
	
		
			
				|  |  | +            inactive-color="#ff4949">
 | 
	
		
			
				|  |  | +          </el-switch>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +      </el-form>
 | 
	
		
			
				|  |  | +      <div slot="footer" class="dialog-footer">
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
	
		
			
				|  |  | +        <el-button @click="cancel">取 消</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </DialogCom>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  list,selectUserList,selectProductTypeList,saveOrUpdate,deleteNoticeRule
 | 
	
		
			
				|  |  | +} from "@/api/notice/notice";
 | 
	
		
			
				|  |  | +import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
 | 
	
		
			
				|  |  | +import {allRole} from "@/api/system/role";
 | 
	
		
			
				|  |  | +import OrgTreeSelect from "@/components/orgTreeSelect/index.vue";
 | 
	
		
			
				|  |  | +import {delDrillDictionary} from "@/api/core/drill/drillDictionary";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "noticeRule",
 | 
	
		
			
				|  |  | +  computed: {
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  components: {OrgTreeSelect, OrgTree},
 | 
	
		
			
				|  |  | +  dicts: [],
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      // 遮罩层
 | 
	
		
			
				|  |  | +      loading: true,
 | 
	
		
			
				|  |  | +      // 选中数组
 | 
	
		
			
				|  |  | +      ids: [],
 | 
	
		
			
				|  |  | +      // 非单个停用
 | 
	
		
			
				|  |  | +      single: true,
 | 
	
		
			
				|  |  | +      // 非多个停用
 | 
	
		
			
				|  |  | +      multiple: true,
 | 
	
		
			
				|  |  | +      // 显示搜索条件
 | 
	
		
			
				|  |  | +      showSearch: true,
 | 
	
		
			
				|  |  | +      // 总条数
 | 
	
		
			
				|  |  | +      total: 0,
 | 
	
		
			
				|  |  | +      // 表数据
 | 
	
		
			
				|  |  | +      logInfoList: [],
 | 
	
		
			
				|  |  | +      // 弹出层标题
 | 
	
		
			
				|  |  | +      title: "",
 | 
	
		
			
				|  |  | +      // 是否显示弹出层
 | 
	
		
			
				|  |  | +      open: false,
 | 
	
		
			
				|  |  | +      // 表单参数
 | 
	
		
			
				|  |  | +      form: {},
 | 
	
		
			
				|  |  | +      // 表单校验
 | 
	
		
			
				|  |  | +      rules: {
 | 
	
		
			
				|  |  | +        name: [
 | 
	
		
			
				|  |  | +          {required: true, message: "请输入规则名称", trigger: "blur"}
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      //角色列表
 | 
	
		
			
				|  |  | +      roleList: [],
 | 
	
		
			
				|  |  | +      //人员列表
 | 
	
		
			
				|  |  | +      userList: [],
 | 
	
		
			
				|  |  | +      //产品类型列表
 | 
	
		
			
				|  |  | +      productTypeList: [],
 | 
	
		
			
				|  |  | +      // 查询参数
 | 
	
		
			
				|  |  | +      queryParams: {
 | 
	
		
			
				|  |  | +        pageNum: 1,
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +        name: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  watch: {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  created() {
 | 
	
		
			
				|  |  | +    this.getList();
 | 
	
		
			
				|  |  | +    this.initProductTypeList();
 | 
	
		
			
				|  |  | +    this.initRoleList();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    initRoleList() {
 | 
	
		
			
				|  |  | +      allRole().then((response) => {
 | 
	
		
			
				|  |  | +        this.roleList = response.data;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getDefaultOrg(node) {
 | 
	
		
			
				|  |  | +      this.queryParams.orgId = node.id;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //单选框状态改变
 | 
	
		
			
				|  |  | +    checkChange(state) {
 | 
	
		
			
				|  |  | +      this.queryParams.checkSub = state;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 节点单击事件
 | 
	
		
			
				|  |  | +    clickTreeNode(data) {
 | 
	
		
			
				|  |  | +      if(data==null){
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.queryParams.orgId = data.id;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getPageIndex($index) {
 | 
	
		
			
				|  |  | +      //表格序号
 | 
	
		
			
				|  |  | +      return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 查询升级包列表 */
 | 
	
		
			
				|  |  | +    getList() {
 | 
	
		
			
				|  |  | +      this.loading = true;
 | 
	
		
			
				|  |  | +      console.log("123456")
 | 
	
		
			
				|  |  | +      list(this.queryParams).then(response => {
 | 
	
		
			
				|  |  | +          this.logInfoList = response.rows;
 | 
	
		
			
				|  |  | +          this.total = response.total;
 | 
	
		
			
				|  |  | +          this.loading = false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      ).catch((err) => {
 | 
	
		
			
				|  |  | +        this.loading = false;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    editHandler(obj){
 | 
	
		
			
				|  |  | +      this.form = {
 | 
	
		
			
				|  |  | +        id:obj.id,
 | 
	
		
			
				|  |  | +        name: obj.name,
 | 
	
		
			
				|  |  | +        remark: obj.remark,
 | 
	
		
			
				|  |  | +        roleIds: obj.roleIds ? obj.roleIds.split(",") : [],
 | 
	
		
			
				|  |  | +        orgIds: obj.orgIds ? obj.orgIds.split(",") : [],
 | 
	
		
			
				|  |  | +        userIds: obj.userIds ? obj.userIds.split(",") : [],
 | 
	
		
			
				|  |  | +        productTypes: obj.productTypes ? obj.productTypes.split(",") : [],
 | 
	
		
			
				|  |  | +        enable: obj.enable === 1,
 | 
	
		
			
				|  |  | +        sendSms: obj.sendSms === 1,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      this.selectOpenUser();
 | 
	
		
			
				|  |  | +      this.open = true;
 | 
	
		
			
				|  |  | +      this.title = "修改通知规则";
 | 
	
		
			
				|  |  | +      // selectUserList({orgIds:this.form.orgIds}).then(response => {
 | 
	
		
			
				|  |  | +      //     this.userList = response.data;
 | 
	
		
			
				|  |  | +      //     let resIds = this.userList ? this.userList.map(item => item.id) : [];
 | 
	
		
			
				|  |  | +      //     if (this.form.userIds && this.form.userIds.length > 0){
 | 
	
		
			
				|  |  | +      //       this.form.userIds = this.form.userIds.filter(item => resIds.includes(item));
 | 
	
		
			
				|  |  | +      //     }
 | 
	
		
			
				|  |  | +      //   }
 | 
	
		
			
				|  |  | +      // ).catch((err) => {
 | 
	
		
			
				|  |  | +      // });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    deleteHandler(obj){
 | 
	
		
			
				|  |  | +      this.$modal
 | 
	
		
			
				|  |  | +        .confirm("是否确认删除?")
 | 
	
		
			
				|  |  | +        .then(function () {
 | 
	
		
			
				|  |  | +          return deleteNoticeRule(obj.id);
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .then(() => {
 | 
	
		
			
				|  |  | +          this.getList();
 | 
	
		
			
				|  |  | +          this.$modal.msgSuccess("删除成功");
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .catch(() => {});
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleOrgNameShow(row){
 | 
	
		
			
				|  |  | +      let text = "";
 | 
	
		
			
				|  |  | +      if (row.orgNames){
 | 
	
		
			
				|  |  | +        let res = row.orgNames.split(",");
 | 
	
		
			
				|  |  | +        res.forEach((item, index) => {
 | 
	
		
			
				|  |  | +          text += item + "\n";
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return text;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleProductTypeShow(row){
 | 
	
		
			
				|  |  | +      let text = "";
 | 
	
		
			
				|  |  | +      if (row.productTypeNames){
 | 
	
		
			
				|  |  | +        let res = row.productTypeNames.split(",");
 | 
	
		
			
				|  |  | +        res.forEach((item, index) => {
 | 
	
		
			
				|  |  | +          text += item + "\n";
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return text;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 搜索按钮操作 */
 | 
	
		
			
				|  |  | +    handleQuery() {
 | 
	
		
			
				|  |  | +      this.queryParams.pageNum = 1;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 重置按钮操作 */
 | 
	
		
			
				|  |  | +    resetQuery() {
 | 
	
		
			
				|  |  | +      this.resetForm("queryForm");
 | 
	
		
			
				|  |  | +      this.handleQuery();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    showAddModel() {
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +      this.open = true;
 | 
	
		
			
				|  |  | +      this.title = "新增通知规则";
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    initProductTypeList(){
 | 
	
		
			
				|  |  | +      selectProductTypeList().then(response => {
 | 
	
		
			
				|  |  | +          this.productTypeList = response.data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      ).catch((err) => {
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    submitForm(){
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid) => {
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          if (!(this.form.orgIds && this.form.orgIds.length > 0)){
 | 
	
		
			
				|  |  | +            this.$modal.msgWarning("请选择通知机构");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          if (!((this.form.roleIds && this.form.roleIds.length > 0) || (this.form.userIds && this.form.userIds.length > 0))){
 | 
	
		
			
				|  |  | +            this.$modal.msgWarning("通知角色和通知人员至少选择一项");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          if (!(this.form.productTypes && this.form.productTypes.length > 0)){
 | 
	
		
			
				|  |  | +            this.$modal.msgWarning("请选择设备类型");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          saveOrUpdate(this.form).then(response => {
 | 
	
		
			
				|  |  | +            this.getList();
 | 
	
		
			
				|  |  | +            this.open = false;
 | 
	
		
			
				|  |  | +            if (this.form.id != null){
 | 
	
		
			
				|  |  | +              this.$modal.msgSuccess("修改成功");
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +              this.$modal.msgSuccess("保存成功");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cancel(){
 | 
	
		
			
				|  |  | +      this.open = false;
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 表单重置
 | 
	
		
			
				|  |  | +    reset() {
 | 
	
		
			
				|  |  | +      this.form = {
 | 
	
		
			
				|  |  | +        id:null,
 | 
	
		
			
				|  |  | +        name: null,
 | 
	
		
			
				|  |  | +        remark: null,
 | 
	
		
			
				|  |  | +        roleIds: [],
 | 
	
		
			
				|  |  | +        orgIds: [],
 | 
	
		
			
				|  |  | +        userIds: [],
 | 
	
		
			
				|  |  | +        productTypes: [],
 | 
	
		
			
				|  |  | +        enable: true,
 | 
	
		
			
				|  |  | +        sendSms: false,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      this.resetForm("form");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    selectOpenUser(){
 | 
	
		
			
				|  |  | +      selectUserList({orgIds:this.form.orgIds}).then(response => {
 | 
	
		
			
				|  |  | +          this.userList = response.data;
 | 
	
		
			
				|  |  | +          let resIds = this.userList ? this.userList.map(item => item.id) : [];
 | 
	
		
			
				|  |  | +          if (this.form.userIds && this.form.userIds.length > 0){
 | 
	
		
			
				|  |  | +            this.form.userIds = this.form.userIds.filter(item => resIds.includes(item));
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      ).catch((err) => {
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +</style>
 | 
	
		
			
				|  |  | +
 |