|  | @@ -90,74 +90,56 @@
 | 
	
		
			
				|  |  |                    @pagination="getList"/>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    <DialogCom :title="title" :visible.sync="open" append-to-body width="780px">
 | 
	
		
			
				|  |  | +    <DialogCom :title="title" :visible.sync="open" append-to-body width="1200px">
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :style="{height:'500px',margin:'35px'}">
 | 
	
		
			
				|  |  | +      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :style="{height:'650px',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 label="适用机构" prop="orgId">
 | 
	
		
			
				|  |  | +          <tree-select
 | 
	
		
			
				|  |  | +            v-model="form.orgId"
 | 
	
		
			
				|  |  | +            :options="deptOptions"
 | 
	
		
			
				|  |  | +            :show-count="true"
 | 
	
		
			
				|  |  | +            :normalizer="tenantIdnormalizer"
 | 
	
		
			
				|  |  | +            :props="{ checkStrictly: true, label: 'name' }"
 | 
	
		
			
				|  |  | +            placeholder="请选择适用机构"
 | 
	
		
			
				|  |  | +            clearValueText="清除"
 | 
	
		
			
				|  |  | +            :noChildrenText="''"
 | 
	
		
			
				|  |  | +            noOptionsText="没有数据"
 | 
	
		
			
				|  |  | +            noResultsText="没有搜索结果"
 | 
	
		
			
				|  |  | +            @select="onOrgSelectChange"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  |          </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 label="通知人员">
 | 
	
		
			
				|  |  | +          <div>
 | 
	
		
			
				|  |  | +            <el-button style="margin-right: 5px" type="primary" @click="showAddPeople">添加人员</el-button>
 | 
	
		
			
				|  |  | +            <el-button type="danger" @click="removeSelections">删除人员</el-button>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div style="margin-top: 5px">
 | 
	
		
			
				|  |  | +            <el-table :data="form.people" border style="width: 100%" class="dialogTable" @selection-change="handleSelectionChange">
 | 
	
		
			
				|  |  | +              <el-table-column type="selection" style="width: 5%">
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column align="center" label="组织机构id" prop="orgId">
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +<!--              <el-table-column align="center" label="组织机构" prop="orgName">-->
 | 
	
		
			
				|  |  | +<!--              </el-table-column>-->
 | 
	
		
			
				|  |  | +              <el-table-column align="center" label="角色" prop="roleName">
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column align="center" label="用户" prop="userNames">
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column align="center" label="报警类型" prop="productTypeNames">
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +              <el-table-column align="center" label="发送短信" prop="sendSms">
 | 
	
		
			
				|  |  | +                <template slot-scope="scope">
 | 
	
		
			
				|  |  | +                  <span>{{ scope.row.sendSms === 1 ? '是' : '否' }}</span>
 | 
	
		
			
				|  |  | +                </template>
 | 
	
		
			
				|  |  | +              </el-table-column>
 | 
	
		
			
				|  |  | +            </el-table>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  |          </el-form-item>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          <el-form-item label="规则描述" prop="remark">
 | 
	
	
		
			
				|  | @@ -171,30 +153,108 @@
 | 
	
		
			
				|  |  |              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 :title="peopleTitle" :visible.sync="peopleOpen" append-to-body width="700px">
 | 
	
		
			
				|  |  | +        <el-form ref="peopleForm" :model="peopleForm" :rules="peopleRules" label-width="100px" :style="{height:'500px',margin:'35px'}">
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          <el-form-item label="组织机构" prop="orgId">
 | 
	
		
			
				|  |  | +            <tree-select
 | 
	
		
			
				|  |  | +              v-model="peopleForm.orgId"
 | 
	
		
			
				|  |  | +              :options="deptOptions"
 | 
	
		
			
				|  |  | +              :show-count="true"
 | 
	
		
			
				|  |  | +              :normalizer="tenantIdnormalizer"
 | 
	
		
			
				|  |  | +              :props="{ checkStrictly: true, label: 'name' }"
 | 
	
		
			
				|  |  | +              placeholder="请选择组织机构"
 | 
	
		
			
				|  |  | +              clearValueText="清除"
 | 
	
		
			
				|  |  | +              :noChildrenText="''"
 | 
	
		
			
				|  |  | +              noOptionsText="没有数据"
 | 
	
		
			
				|  |  | +              noResultsText="没有搜索结果"
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          <el-form-item label="通知角色" prop="roleIds">
 | 
	
		
			
				|  |  | +            <el-select
 | 
	
		
			
				|  |  | +              :multiple="true"
 | 
	
		
			
				|  |  | +              style="width: 100%"
 | 
	
		
			
				|  |  | +              v-model="peopleForm.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="peopleForm.userIds"
 | 
	
		
			
				|  |  | +              placeholder="请选择通知人员"
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <el-option
 | 
	
		
			
				|  |  | +                v-for="item in userList"
 | 
	
		
			
				|  |  | +                :key="item.id"
 | 
	
		
			
				|  |  | +                :label="item.name + ' (' + item.roleNames + ')'"
 | 
	
		
			
				|  |  | +                :value="item.id"
 | 
	
		
			
				|  |  | +              ></el-option>
 | 
	
		
			
				|  |  | +            </el-select>
 | 
	
		
			
				|  |  | +          </el-form-item>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          <el-form-item label="设备类型" prop="productTypes">
 | 
	
		
			
				|  |  | +            <el-select
 | 
	
		
			
				|  |  | +              :multiple="true"
 | 
	
		
			
				|  |  | +              style="width: 100%"
 | 
	
		
			
				|  |  | +              v-model="peopleForm.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="sendSms">
 | 
	
		
			
				|  |  | +            <el-switch
 | 
	
		
			
				|  |  | +              v-model="peopleForm.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="submitPeopleForm">确 定</el-button>
 | 
	
		
			
				|  |  | +          <el-button @click="cancelPeople">取 消</el-button>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </DialogCom>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      </DialogCom>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import {
 | 
	
		
			
				|  |  | -  list,selectUserList,selectProductTypeList,saveOrUpdate,deleteNoticeRule
 | 
	
		
			
				|  |  | +  list, selectUserList, selectProductTypeList, saveOrUpdate, deleteNoticeRule, selectUserListByOrgId
 | 
	
		
			
				|  |  |  } 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";
 | 
	
		
			
				|  |  | +import {deptTreeSelect} from "@/api/system/public";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    name: "noticeRule",
 | 
	
	
		
			
				|  | @@ -222,20 +282,46 @@ export default {
 | 
	
		
			
				|  |  |        title: "",
 | 
	
		
			
				|  |  |        // 是否显示弹出层
 | 
	
		
			
				|  |  |        open: false,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      // 人员选择title
 | 
	
		
			
				|  |  | +      peopleTitle: "新增通知人员",
 | 
	
		
			
				|  |  | +      peopleOpen: false,
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        // 表单参数
 | 
	
		
			
				|  |  | -      form: {},
 | 
	
		
			
				|  |  | +      form: {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 人员表单参数
 | 
	
		
			
				|  |  | +      peopleForm: {
 | 
	
		
			
				|  |  | +        orgId:null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      //机构树
 | 
	
		
			
				|  |  | +      deptOptions: [],
 | 
	
		
			
				|  |  |        // 表单校验
 | 
	
		
			
				|  |  |        rules: {
 | 
	
		
			
				|  |  |          name: [
 | 
	
		
			
				|  |  |            {required: true, message: "请输入规则名称", trigger: "blur"}
 | 
	
		
			
				|  |  |          ],
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | +      // 表单校验
 | 
	
		
			
				|  |  | +      peopleRules: {
 | 
	
		
			
				|  |  | +        orgId: [
 | 
	
		
			
				|  |  | +          {required: true, message: "请选择组织机构", trigger: "change"}
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +        productTypes: [
 | 
	
		
			
				|  |  | +          {required: true,type:'array', message: "请选择设备类型", trigger: "change"}
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  |        //角色列表
 | 
	
		
			
				|  |  |        roleList: [],
 | 
	
		
			
				|  |  | +      //机构查询返回未处理过的userList,选择角色会处理userList,所以创建一个原始数据
 | 
	
		
			
				|  |  | +      initUserList: [],
 | 
	
		
			
				|  |  |        //人员列表
 | 
	
		
			
				|  |  |        userList: [],
 | 
	
		
			
				|  |  |        //产品类型列表
 | 
	
		
			
				|  |  |        productTypeList: [],
 | 
	
		
			
				|  |  | +      peopleOrgName:"",
 | 
	
		
			
				|  |  | +      tableSelections:[],
 | 
	
		
			
				|  |  |        // 查询参数
 | 
	
		
			
				|  |  |        queryParams: {
 | 
	
		
			
				|  |  |          pageNum: 1,
 | 
	
	
		
			
				|  | @@ -245,7 +331,38 @@ export default {
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    watch: {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    'peopleForm.orgId': {
 | 
	
		
			
				|  |  | +      handler(newVal) {
 | 
	
		
			
				|  |  | +        this.peopleForm.roleIds = [];
 | 
	
		
			
				|  |  | +        this.peopleForm.userIds = [];
 | 
	
		
			
				|  |  | +        this.userList = [];
 | 
	
		
			
				|  |  | +        if (newVal) {
 | 
	
		
			
				|  |  | +          this.$refs["peopleForm"].clearValidate('orgId');//清空校验
 | 
	
		
			
				|  |  | +          this.selectOpenUser(newVal);
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +          this.$refs["peopleForm"].validateField('orgId');//校验
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      immediate: true
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    'peopleForm.roleIds': {
 | 
	
		
			
				|  |  | +      handler(newVal) {
 | 
	
		
			
				|  |  | +        if (newVal && newVal.length > 0) {
 | 
	
		
			
				|  |  | +          //选择人员下拉框改变
 | 
	
		
			
				|  |  | +          this.userList = this.initUserList.filter(item => {
 | 
	
		
			
				|  |  | +            return item.roleIds.some(roleId => this.peopleForm.roleIds.includes(roleId));
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          //已选择人员也跟着下拉框的值改变而改变
 | 
	
		
			
				|  |  | +          this.peopleForm.userIds = this.peopleForm.userIds.filter(userId => {
 | 
	
		
			
				|  |  | +            return this.userList.some(item => item.id === userId);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +          this.peopleForm.userIds = [];
 | 
	
		
			
				|  |  | +          this.userList = this.initUserList;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      immediate: true
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    created() {
 | 
	
		
			
				|  |  |      this.getList();
 | 
	
	
		
			
				|  | @@ -253,6 +370,9 @@ export default {
 | 
	
		
			
				|  |  |      this.initRoleList();
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    methods: {
 | 
	
		
			
				|  |  | +    removePeople(index){
 | 
	
		
			
				|  |  | +      this.form.people.splice(index,1);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      initRoleList() {
 | 
	
		
			
				|  |  |        allRole().then((response) => {
 | 
	
		
			
				|  |  |          this.roleList = response.data;
 | 
	
	
		
			
				|  | @@ -292,18 +412,31 @@ export default {
 | 
	
		
			
				|  |  |          this.loading = false;
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    /** 查询机构树数据 */
 | 
	
		
			
				|  |  | +    getDeptTree() {
 | 
	
		
			
				|  |  | +      deptTreeSelect().then((response) => {
 | 
	
		
			
				|  |  | +        this.deptOptions = response.data;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** treeSelect组件自定义数据*/
 | 
	
		
			
				|  |  | +    tenantIdnormalizer(node, instanceId) {
 | 
	
		
			
				|  |  | +      if (node.children && !node.children.length) {
 | 
	
		
			
				|  |  | +        delete node.children;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return {
 | 
	
		
			
				|  |  | +        id: node.id,
 | 
	
		
			
				|  |  | +        label: node.shortName,
 | 
	
		
			
				|  |  | +        children: node.children,
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      editHandler(obj){
 | 
	
		
			
				|  |  | +      this.getDeptTree();
 | 
	
		
			
				|  |  |        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(",") : [],
 | 
	
		
			
				|  |  | +        people: [],
 | 
	
		
			
				|  |  |          enable: obj.enable === 1,
 | 
	
		
			
				|  |  | -        sendSms: obj.sendSms === 1,
 | 
	
		
			
				|  |  |        };
 | 
	
		
			
				|  |  |        this.selectOpenUser();
 | 
	
		
			
				|  |  |        this.open = true;
 | 
	
	
		
			
				|  | @@ -361,6 +494,7 @@ export default {
 | 
	
		
			
				|  |  |        this.handleQuery();
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      showAddModel() {
 | 
	
		
			
				|  |  | +      this.getDeptTree();
 | 
	
		
			
				|  |  |        this.reset();
 | 
	
		
			
				|  |  |        this.open = true;
 | 
	
		
			
				|  |  |        this.title = "新增通知规则";
 | 
	
	
		
			
				|  | @@ -376,18 +510,16 @@ export default {
 | 
	
		
			
				|  |  |      submitForm(){
 | 
	
		
			
				|  |  |        this.$refs["form"].validate((valid) => {
 | 
	
		
			
				|  |  |          if (valid) {
 | 
	
		
			
				|  |  | -          if (!(this.form.orgIds && this.form.orgIds.length > 0)){
 | 
	
		
			
				|  |  | -            this.$modal.msgWarning("请选择通知机构");
 | 
	
		
			
				|  |  | +          if (!(this.form.orgId && this.form.orgId.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("请选择设备类型");
 | 
	
		
			
				|  |  | +          if (!(this.form.people && this.form.people.length > 0)){
 | 
	
		
			
				|  |  | +            this.$modal.msgWarning("请添加通知人员");
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | +          console.log("form:"+JSON.stringify(this.form));
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  |            saveOrUpdate(this.form).then(response => {
 | 
	
		
			
				|  |  |              this.getList();
 | 
	
		
			
				|  |  |              this.open = false;
 | 
	
	
		
			
				|  | @@ -410,29 +542,144 @@ export default {
 | 
	
		
			
				|  |  |          id:null,
 | 
	
		
			
				|  |  |          name: null,
 | 
	
		
			
				|  |  |          remark: null,
 | 
	
		
			
				|  |  | -        roleIds: [],
 | 
	
		
			
				|  |  | -        orgIds: [],
 | 
	
		
			
				|  |  | -        userIds: [],
 | 
	
		
			
				|  |  | -        productTypes: [],
 | 
	
		
			
				|  |  | +        people: [],
 | 
	
		
			
				|  |  |          enable: true,
 | 
	
		
			
				|  |  | -        sendSms: false,
 | 
	
		
			
				|  |  |        };
 | 
	
		
			
				|  |  |        this.resetForm("form");
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    selectOpenUser(){
 | 
	
		
			
				|  |  | -      selectUserList({orgIds:this.form.orgIds}).then(response => {
 | 
	
		
			
				|  |  | +    selectOpenUser(orgId){
 | 
	
		
			
				|  |  | +      console.log("12345")
 | 
	
		
			
				|  |  | +      selectUserListByOrgId(orgId).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));
 | 
	
		
			
				|  |  | +          if (this.userList && this.userList.length >0){
 | 
	
		
			
				|  |  | +            this.userList.forEach(item => {
 | 
	
		
			
				|  |  | +              item.roleIds = item.roleIds ? item.roleIds.split(",") : [];
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | +          this.initUserList = this.userList;
 | 
	
		
			
				|  |  | +          // if (this.peopleForm.roleIds && this.peopleForm.roleIds.length > 0){
 | 
	
		
			
				|  |  | +          //   this.userList = this.userList.filter(item => {
 | 
	
		
			
				|  |  | +          //     return item.roleIds.some(roleId => this.peopleForm.roleIds.includes(roleId));
 | 
	
		
			
				|  |  | +          //   });
 | 
	
		
			
				|  |  | +          // }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        ).catch((err) => {
 | 
	
		
			
				|  |  |        });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //内层弹窗方法
 | 
	
		
			
				|  |  | +    showAddPeople(){
 | 
	
		
			
				|  |  | +      this.peopleOpen = true;
 | 
	
		
			
				|  |  | +      this.resetPeople();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    submitPeopleForm(){
 | 
	
		
			
				|  |  | +      console.log("peopleForm:"+JSON.stringify(this.peopleForm));
 | 
	
		
			
				|  |  | +      this.$refs["peopleForm"].validate((valid) => {
 | 
	
		
			
				|  |  | +        if (valid){
 | 
	
		
			
				|  |  | +          if (!((this.peopleForm.roleIds && this.peopleForm.roleIds.length > 0) || (this.peopleForm.userIds && this.peopleForm.userIds.length > 0))){
 | 
	
		
			
				|  |  | +            this.$modal.msgWarning("通知角色和通知人员至少选择一项");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          //组装table数组
 | 
	
		
			
				|  |  | +          //选择人员后,角色就不生效
 | 
	
		
			
				|  |  | +          if (this.peopleForm.userIds && this.peopleForm.userIds.length > 0) {
 | 
	
		
			
				|  |  | +            let userNameList = this.initUserList.filter(item => this.peopleForm.userIds.includes(item.id)).map(item => item.username);
 | 
	
		
			
				|  |  | +            let userNames = userNameList.join(",");
 | 
	
		
			
				|  |  | +            let productTypeNameList = this.productTypeList.filter(item => this.peopleForm.productTypes.includes(item.productType)).map(item => item.productName);
 | 
	
		
			
				|  |  | +            let productTypeNames = productTypeNameList.join(",");
 | 
	
		
			
				|  |  | +            let uniqueId = this.generateGuid();
 | 
	
		
			
				|  |  | +            let people = {
 | 
	
		
			
				|  |  | +              orgId: this.peopleForm.orgId,
 | 
	
		
			
				|  |  | +              orgName: this.peopleOrgName,
 | 
	
		
			
				|  |  | +              roleId: null,
 | 
	
		
			
				|  |  | +              roleName: null,
 | 
	
		
			
				|  |  | +              userIds: this.peopleForm.userIds,
 | 
	
		
			
				|  |  | +              productTypes: this.peopleForm.productTypes,
 | 
	
		
			
				|  |  | +              productTypeNames: productTypeNames,
 | 
	
		
			
				|  |  | +              sendSms: this.peopleForm.sendSms ? 1 : 0,
 | 
	
		
			
				|  |  | +              userNames: userNames,
 | 
	
		
			
				|  |  | +              uniqueId:uniqueId
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            this.form.people.push(people);
 | 
	
		
			
				|  |  | +          }else {
 | 
	
		
			
				|  |  | +            //根据所选角色创建多条数据
 | 
	
		
			
				|  |  | +            this.peopleForm.roleIds.forEach(roleId => {
 | 
	
		
			
				|  |  | +              let roleName = this.roleList.filter(item => item.id === roleId).map(item => item.roleName);
 | 
	
		
			
				|  |  | +              let productTypeNameList = this.productTypeList.filter(item => this.peopleForm.productTypes.includes(item.productType)).map(item => item.productName);
 | 
	
		
			
				|  |  | +              let productTypeNames = productTypeNameList.join(",");
 | 
	
		
			
				|  |  | +              let uniqueId = this.generateGuid();
 | 
	
		
			
				|  |  | +              let people = {
 | 
	
		
			
				|  |  | +                orgId: this.peopleForm.orgId,
 | 
	
		
			
				|  |  | +                orgName: this.peopleOrgName,
 | 
	
		
			
				|  |  | +                roleId: roleId,
 | 
	
		
			
				|  |  | +                roleName: roleName,
 | 
	
		
			
				|  |  | +                userIds: [],
 | 
	
		
			
				|  |  | +                productTypes: this.peopleForm.productTypes,
 | 
	
		
			
				|  |  | +                productTypeNames: productTypeNames,
 | 
	
		
			
				|  |  | +                sendSms: this.peopleForm.sendSms ? 1 : 0,
 | 
	
		
			
				|  |  | +                userNames: null,
 | 
	
		
			
				|  |  | +                uniqueId:uniqueId
 | 
	
		
			
				|  |  | +              };
 | 
	
		
			
				|  |  | +              this.form.people.push(people);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          this.cancelPeople();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cancelPeople(){
 | 
	
		
			
				|  |  | +      this.peopleOpen = false;
 | 
	
		
			
				|  |  | +      this.resetPeople();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 表单重置
 | 
	
		
			
				|  |  | +    resetPeople() {
 | 
	
		
			
				|  |  | +      this.peopleForm = {
 | 
	
		
			
				|  |  | +        orgId:null,
 | 
	
		
			
				|  |  | +        roleIds: null,
 | 
	
		
			
				|  |  | +        userIds: [],
 | 
	
		
			
				|  |  | +        productTypes: [],
 | 
	
		
			
				|  |  | +        sendSms: false
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +      this.resetForm("peopleForm");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onOrgSelectChange(value){
 | 
	
		
			
				|  |  | +      if(value){
 | 
	
		
			
				|  |  | +        this.peopleOrgName = value.label;
 | 
	
		
			
				|  |  | +      }else {
 | 
	
		
			
				|  |  | +        this.peopleOrgName = "";
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleSelectionChange(selection){
 | 
	
		
			
				|  |  | +      console.log("selection:"+selection);
 | 
	
		
			
				|  |  | +      this.tableSelections = selection;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    removeSelections(){
 | 
	
		
			
				|  |  | +      if (this.tableSelections && this.tableSelections.length > 0) {
 | 
	
		
			
				|  |  | +        let selectionIds = this.tableSelections.map(item => item.uniqueId);
 | 
	
		
			
				|  |  | +        this.form.people = this.form.people.filter(item => !selectionIds.includes(item.uniqueId));
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.tableSelections = []; //清空选择
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    generateGuid() {
 | 
	
		
			
				|  |  | +      return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
 | 
	
		
			
				|  |  | +        var r = crypto.getRandomValues(new Uint8Array(1))[0] % 16 | 0,
 | 
	
		
			
				|  |  | +          v = c === 'x' ? r : (r & 0x3 | 0x8);
 | 
	
		
			
				|  |  | +        return v.toString(16);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  <style lang="scss" scoped>
 | 
	
		
			
				|  |  | +.dialogTable {
 | 
	
		
			
				|  |  | +  max-height: 350px;
 | 
	
		
			
				|  |  | +  overflow-y: auto;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.dialogTable .el-table__body-wrapper tbody tr,
 | 
	
		
			
				|  |  | +.dialogTable .el-table__body-wrapper tbody td {
 | 
	
		
			
				|  |  | +  height: 40px;
 | 
	
		
			
				|  |  | +  font-size: 14px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  </style>
 | 
	
		
			
				|  |  |  
 |