|
|
@@ -0,0 +1,738 @@
|
|
|
+<!--编写穿梭框的插件,左右都有很多搜索条件-->
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <div style="height:32px">
|
|
|
+ <div class="tags-box" :class="{'tags-box-disabled':!disabled,'tags-box-mini':size === 'mini'}" @click="showDialog">
|
|
|
+ <el-tag type="success" :size="size" v-for="v in currentTempList" :key="v.id">{{ v.shortName }}</el-tag>
|
|
|
+ </div>
|
|
|
+ <div class="tags_last">
|
|
|
+ <span v-show="currentTempList.length > 0" class="tags-num">{{ currentTempList.length }}</span>
|
|
|
+ <i v-if="currentTempList.length > 0 && !disabled" class="el-icon-circle-close close-icon" @click.stop="clear"></i>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <DialogCom
|
|
|
+ :title="title"
|
|
|
+ :visible.sync="visible"
|
|
|
+ width="80%"
|
|
|
+ top="10vh"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ append-to-body
|
|
|
+ @opened="open"
|
|
|
+ @closed="closed"
|
|
|
+ >
|
|
|
+ <el-row class="el-row-top">
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-card class="box-card leftbox" :body-style="{ height: '100%' }">
|
|
|
+ <el-form
|
|
|
+ ref="formleft"
|
|
|
+ v-model="left.condition"
|
|
|
+ label-width="120px"
|
|
|
+ size="mini"
|
|
|
+ style="width: 95%"
|
|
|
+ >
|
|
|
+ <el-form-item label="上级机构:">
|
|
|
+ <tree-select
|
|
|
+ v-model="left.condition.orgId"
|
|
|
+ :searchable="searchable"
|
|
|
+ :default-expand-level="level"
|
|
|
+ :normalizer="tenantIdnormalizer"
|
|
|
+ :options="treeList"
|
|
|
+ :show-count="true"
|
|
|
+ :props="{ checkStrictly: true, label: 'name' }"
|
|
|
+ placeholder="请选择机构"
|
|
|
+ clearValueText="清除"
|
|
|
+ :noChildrenText="''"
|
|
|
+ @select="leftTreeSelect"
|
|
|
+ noOptionsText="没有数据"
|
|
|
+ noResultsText="没有搜索结果"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item >
|
|
|
+ <el-checkbox v-model="left.condition.searchChild" @change="leftSearch">是否包含下级</el-checkbox>
|
|
|
+ </el-form-item>-->
|
|
|
+ <el-form-item label="机构类型:">
|
|
|
+ <el-select
|
|
|
+ prop="type"
|
|
|
+ label="机构类型"
|
|
|
+ v-model="left.condition.orgType"
|
|
|
+ style="width: 100%"
|
|
|
+ placeholder="请选择机构类型"
|
|
|
+ @change="leftSearch"
|
|
|
+ :disabled="left.condition.isleftOrgTypeDisabled"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in dict.type.sys_org_type"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="机构名称:">
|
|
|
+ <el-input
|
|
|
+ v-model="left.condition.orgName"
|
|
|
+ clearable
|
|
|
+ @input="leftSearch"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-row class="result_row">
|
|
|
+ <el-col :span="12">搜索结果</el-col>
|
|
|
+ <el-col :span="12" style="text-align: right"
|
|
|
+ >{{ left.selectedRows.length }}/{{ left.data.length }}
|
|
|
+ </el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ <el-table
|
|
|
+ style="width: 100%"
|
|
|
+ height="calc(100% - 100px)"
|
|
|
+ :data="left.data"
|
|
|
+ @selection-change="handleLeftSelectionChange"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" width="55"></el-table-column>
|
|
|
+ <el-table-column prop="affiliatedArea" align="center" label="地区"></el-table-column>
|
|
|
+ <el-table-column prop="affiliatedBank" label="行社" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="shortName" label="机构名称" align="center"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="2">
|
|
|
+ <div class="controller">
|
|
|
+ <el-button type="primary" @click="handleAdd">添加 >></el-button>
|
|
|
+ <el-button class="remove" type="primary" @click="handleRemove">移除 <<</el-button>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-card class="box-card" :body-style="{ height: '100%' }">
|
|
|
+ <el-form
|
|
|
+ ref="formRight"
|
|
|
+ v-model="right.condition"
|
|
|
+ label-width="120px"
|
|
|
+ size="mini"
|
|
|
+ style="width: 95%"
|
|
|
+ >
|
|
|
+ <el-form-item label="组织机构:">
|
|
|
+ <tree-select
|
|
|
+ v-model="right.condition.orgId"
|
|
|
+ :searchable="searchable"
|
|
|
+ :options="treeList"
|
|
|
+ :default-expand-level="level"
|
|
|
+ :normalizer="tenantIdnormalizer"
|
|
|
+ :show-count="true"
|
|
|
+ :props="{ checkStrictly: true, label: 'name' }"
|
|
|
+ placeholder="请选择归属机构"
|
|
|
+ clearValueText="清除"
|
|
|
+ :noChildrenText="''"
|
|
|
+ @select="rightTreeSelect"
|
|
|
+ noOptionsText="没有数据"
|
|
|
+ noResultsText="没有搜索结果"
|
|
|
+ />
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item >
|
|
|
+ <el-checkbox v-model="right.condition.searchChild" @change="rightSearch">是否包含下级</el-checkbox>
|
|
|
+ </el-form-item>-->
|
|
|
+ <el-form-item label="机构类型:">
|
|
|
+ <el-select
|
|
|
+ prop="type"
|
|
|
+ label="机构类型"
|
|
|
+ v-model="right.condition.orgType"
|
|
|
+ style="width: 100%"
|
|
|
+ placeholder="请选择机构类型"
|
|
|
+ @change="rightSearch"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in dict.type.sys_org_type"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="机构名称:">
|
|
|
+ <el-input
|
|
|
+ v-model="right.condition.orgName"
|
|
|
+ clearable
|
|
|
+ @input="rightSearch"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <el-row class="result_row">
|
|
|
+ <el-col :span="12">搜索结果</el-col>
|
|
|
+ <el-col :span="12" style="text-align: right"
|
|
|
+ >{{ right.selectedRows.length }}/{{ right.data.length }}
|
|
|
+ </el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ <el-table
|
|
|
+ height="calc(100% - 100px)"
|
|
|
+ :data="right.data"
|
|
|
+ @selection-change="handleRightSelectionChange"
|
|
|
+ >
|
|
|
+ <el-table-column type="selection" width="55"></el-table-column>
|
|
|
+ <el-table-column prop="affiliatedArea" label="地区"></el-table-column>
|
|
|
+ <el-table-column prop="affiliatedBank" label="行社"></el-table-column>
|
|
|
+ <el-table-column prop="shortName" label="机构名称"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="visible = false">关闭</el-button>
|
|
|
+ <el-button type="primary" @click="onOK">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </DialogCom>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import {selectOrgList} from "@/api/system/org.js";
|
|
|
+
|
|
|
+const defaultData = {
|
|
|
+ left: {
|
|
|
+ condition: {
|
|
|
+ orgId: null,
|
|
|
+ orgName: "",
|
|
|
+ orgType: null,
|
|
|
+ searchChild: false,
|
|
|
+ isleftOrgTypeDisabled:false,
|
|
|
+ },
|
|
|
+ total: 0,
|
|
|
+ selectedCount: 0,
|
|
|
+ selectedRows: [],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ right: {
|
|
|
+ condition: {
|
|
|
+ orgId: null,
|
|
|
+ orgName: "",
|
|
|
+ orgType: null,
|
|
|
+ searchChild: false,
|
|
|
+ },
|
|
|
+ total: 0,
|
|
|
+ selectedCount: 0,
|
|
|
+ selectedRows: [],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+}
|
|
|
+export default {
|
|
|
+ name: "orgSelect",
|
|
|
+ dicts: ["sys_org_type"],
|
|
|
+ props: {
|
|
|
+ // orgList : {
|
|
|
+ // type: Array,
|
|
|
+ // default: new Array(),
|
|
|
+ // },
|
|
|
+ orgIds: {
|
|
|
+ type: Array,
|
|
|
+ default: new Array(),
|
|
|
+ },
|
|
|
+ limitOrgType:{
|
|
|
+ type: String,
|
|
|
+ default: null,
|
|
|
+ },
|
|
|
+ size: {
|
|
|
+ type: String,
|
|
|
+ default: 'small',
|
|
|
+ },
|
|
|
+ trigger: {
|
|
|
+ type: String,
|
|
|
+ default: 'click',
|
|
|
+ },
|
|
|
+ //组件禁用
|
|
|
+ disabled: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ required: false,
|
|
|
+ },
|
|
|
+ customRequest: {
|
|
|
+ type: Function,
|
|
|
+ },
|
|
|
+ hangsheTree: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
+ businessTree: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
+ wholeTree: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ // orgList: function (data) {
|
|
|
+ // this.currentTempList = this.orgList;
|
|
|
+ // }
|
|
|
+ orgIds: function(data){
|
|
|
+ console.log("watch orgIds",data,this.left.condition)
|
|
|
+ this.orgTree();
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ orgs: [],
|
|
|
+ title: "选择机构",
|
|
|
+ level: 1,
|
|
|
+ clearable: true,
|
|
|
+ searchable: true,
|
|
|
+ visible: false,
|
|
|
+ deviceType: null,
|
|
|
+ loading: false,
|
|
|
+ treeList: [],
|
|
|
+ deptOptions: [],
|
|
|
+ currentTempList: [],
|
|
|
+ boundOrgsClone: [],
|
|
|
+ left: {
|
|
|
+ condition: {
|
|
|
+ orgId: this.$store.getters.orgId,
|
|
|
+ deviceName: "",
|
|
|
+ searchChild: false,
|
|
|
+ isleftOrgTypeDisabled:false,
|
|
|
+ },
|
|
|
+ total: 0,
|
|
|
+ selectedCount: 0,
|
|
|
+ selectedRows: [],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ right: {
|
|
|
+ condition: {
|
|
|
+ orgId: this.$store.getters.orgId,
|
|
|
+ deviceName: "",
|
|
|
+ searchChild: false,
|
|
|
+ },
|
|
|
+ total: 0,
|
|
|
+ selectedCount: 0,
|
|
|
+ selectedRows: [],
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ rightOrgIds: [],
|
|
|
+ boundOrgIds: [],
|
|
|
+ searchOrgs: [],
|
|
|
+
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.boundOrgsClone = [];
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ console.log("mounted orgIds",this.orgIds,this.limitOrgType,this.currentTempList,(this.currentTempList.length==0 && this.orgIds))
|
|
|
+ if((!this.currentTempList || this.currentTempList.length==0) && this.orgIds)
|
|
|
+ {
|
|
|
+ this.orgTree();
|
|
|
+ }
|
|
|
+ this.reSetLeftOrgType();
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ clear() {
|
|
|
+ this.currentTempList = [];
|
|
|
+ this.boundOrgsClone = [];
|
|
|
+ this.$emit("selectNode", []);
|
|
|
+ this.$emit("selectNodeId", []);
|
|
|
+ },
|
|
|
+
|
|
|
+ tenantIdnormalizer(node, instanceId) {
|
|
|
+ if (node.children && !node.children.length) {
|
|
|
+ delete node.children;
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ id: node.id,
|
|
|
+ label: node.shortName,
|
|
|
+ children: node.children,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ orgTree() {
|
|
|
+ console.log("orgTree",22,this.left)
|
|
|
+ //获取所有机构列表
|
|
|
+ if(!this.orgs || this.orgs.length==0){
|
|
|
+ this.getAllOrgs();
|
|
|
+ }
|
|
|
+ this.initHistorySelectOrg();
|
|
|
+
|
|
|
+ if (this.customRequest) {
|
|
|
+ this.customRequest().then((response) => {
|
|
|
+ this.treeList = response.data;
|
|
|
+ return;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ if (this.hangsheTree) {
|
|
|
+ this.treeList = this.$store.getters.depTree;
|
|
|
+ } else if (this.businessTree) {
|
|
|
+ this.treeList = this.$store.getters.businessTree;
|
|
|
+ } else if (this.wholeTree) {
|
|
|
+ this.treeList = this.$store.getters.wholeTree;
|
|
|
+ } else {
|
|
|
+ this.treeList = this.$store.getters.orgTree;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getChildIds(orgTree, parentId) {
|
|
|
+ if (parentId) {
|
|
|
+ orgTree.forEach((v, i) => {
|
|
|
+ if (v.path.indexOf(parentId) != -1) {
|
|
|
+ this.rightOrgIds.push(v.id);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (v.children && v.children.length > 0) {
|
|
|
+ this.getChildIds(v.children, parentId);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ open() {
|
|
|
+ this.right.data = JSON.parse(JSON.stringify(this.currentTempList));
|
|
|
+ this.boundOrgsClone = JSON.parse(JSON.stringify(this.currentTempList));
|
|
|
+ //this.leftSearch();
|
|
|
+ },
|
|
|
+ showDialog() {
|
|
|
+ if(this.disabled)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.reSetLeftOrgType();
|
|
|
+ this.orgTree();
|
|
|
+ this.visible = true;
|
|
|
+ },
|
|
|
+ reSetLeftOrgType()
|
|
|
+ {
|
|
|
+ if(this.limitOrgType && this.limitOrgType!="null")
|
|
|
+ {
|
|
|
+ console.log("limitOrgType",this.limitOrgType)
|
|
|
+ this.left.condition.orgType=this.limitOrgType;
|
|
|
+ this.left.condition.isleftOrgTypeDisabled=true;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ this.left.condition.orgType=null;
|
|
|
+ this.left.condition.isleftOrgTypeDisabled=false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ initHistorySelectOrg()
|
|
|
+ {
|
|
|
+ console.log("initHistorySelectOrg",11)
|
|
|
+ if(this.orgIds && this.orgIds.length>0)
|
|
|
+ {
|
|
|
+ let initHistorySelectOrgs= this.orgs.filter(x=> this.orgIds.findIndex(y=>y==x.id)>-1);
|
|
|
+
|
|
|
+ initHistorySelectOrgs.forEach((i, v) => {
|
|
|
+ this.right.data.push(i);
|
|
|
+ this.boundOrgsClone.push(i);
|
|
|
+ });
|
|
|
+ this.boundOrgIds = this.boundOrgsClone.map((d) => d.deviceId);
|
|
|
+ this.currentTempList= JSON.parse(JSON.stringify(initHistorySelectOrgs));
|
|
|
+ // this.currentTempList
|
|
|
+ // this.left.data = this.searchOrgs.filter((row) => this.boundOrgIds.indexOf(row.id) < 0)
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ console.log("initHistorySelectOrg",11111)
|
|
|
+ this.currentTempList=[];
|
|
|
+ this.boundOrgIds =[];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ hideDialog() {
|
|
|
+ this.visible = false;
|
|
|
+ this.left = defaultData.left;
|
|
|
+ this.right = defaultData.right;
|
|
|
+ this.searchOrgs = [];
|
|
|
+ this.boundOrgIds = [];
|
|
|
+ this.boundOrgsClone = [];
|
|
|
+ },
|
|
|
+ closed() {
|
|
|
+ this.left = defaultData.left;
|
|
|
+ this.right = defaultData.right;
|
|
|
+ this.searchOrgs = [];
|
|
|
+ this.boundOrgIds = [];
|
|
|
+ this.boundOrgsClone = [];
|
|
|
+ this.left.data = [];
|
|
|
+ this.right.data = [];
|
|
|
+ this.left.condition.orgId = this.$store.getters.orgId;
|
|
|
+ this.right.condition.orgId = this.$store.getters.orgId;
|
|
|
+ this.left.condition.orgType = this.limitOrgType;
|
|
|
+ this.left.condition.isleftOrgTypeDisabled = this.limitOrgType? true:false;
|
|
|
+ this.right.condition.orgType = null;
|
|
|
+ this.left.condition.orgName = null;
|
|
|
+ this.right.condition.orgName = null;
|
|
|
+ },
|
|
|
+ leftTreeSelect(node) {
|
|
|
+ this.left.condition.orgId = node.id;
|
|
|
+ this.left.condition.orgPath = node.path;
|
|
|
+ this.leftSearch();
|
|
|
+ },
|
|
|
+ rightTreeSelect(node) {
|
|
|
+ this.right.condition.orgId = node.id;
|
|
|
+ this.right.condition.orgPath = node.path;
|
|
|
+ this.rightSearch();
|
|
|
+ },
|
|
|
+ handleLeftSelectionChange(val) {
|
|
|
+ this.left.selectedCount = val.length;
|
|
|
+ this.left.selectedRows = val;
|
|
|
+ },
|
|
|
+ handleRightSelectionChange(val) {
|
|
|
+ this.right.selectedCount = val.length;
|
|
|
+ this.right.selectedRows = val;
|
|
|
+ },
|
|
|
+ handleAdd() {
|
|
|
+ this.right.condition.orgId = null;
|
|
|
+ this.right.condition.orgType = null;
|
|
|
+ this.right.condition.orgName = null;
|
|
|
+ let addData = this.left.selectedRows.filter(
|
|
|
+ (row) => this.boundOrgIds.indexOf(row.id) < 0
|
|
|
+ );
|
|
|
+ if (addData.length > 0) {
|
|
|
+ addData.forEach((i, v) => {
|
|
|
+ this.right.data.push(i);
|
|
|
+ this.boundOrgsClone.push(i);
|
|
|
+ });
|
|
|
+ this.boundOrgIds = this.boundOrgsClone.map((d) => d.deviceId);
|
|
|
+
|
|
|
+ this.left.data = this.searchOrgs.filter((row) => this.boundOrgIds.indexOf(row.id) < 0)
|
|
|
+ }
|
|
|
+ this.leftSearch();
|
|
|
+ },
|
|
|
+ handleRemove() {
|
|
|
+ /* this.right.condition.orgId = null;
|
|
|
+ this.right.condition.orgType = null;
|
|
|
+ this.right.condition.orgName = null;
|
|
|
+ this.right.condition.orgPath = null;*/
|
|
|
+ let rightSelectedIds = this.right.selectedRows.map(
|
|
|
+ (r) => r.id
|
|
|
+ );
|
|
|
+ if (rightSelectedIds.length > 0) {
|
|
|
+ this.right.data = this.right.data.filter(
|
|
|
+ (d) => rightSelectedIds.indexOf(d.id) < 0
|
|
|
+ );
|
|
|
+ this.boundOrgsClone = this.boundOrgsClone.filter(
|
|
|
+ (d) => rightSelectedIds.indexOf(d.id) < 0
|
|
|
+ );
|
|
|
+ this.boundOrgIds = this.boundOrgsClone.map((d) => d.id);
|
|
|
+
|
|
|
+ this.left.data = this.searchOrgs.filter((row) => this.boundOrgIds.indexOf(row.id) < 0)
|
|
|
+ if (this.left.condition.orgId) {
|
|
|
+ this.leftSearch();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ getAllOrgs() {
|
|
|
+ selectOrgList({}).then((result) => {
|
|
|
+ this.orgs = result;
|
|
|
+ this.initHistorySelectOrg();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ leftSearch() {
|
|
|
+ let {condition} = this.left;
|
|
|
+ this.left.prevCondition = {...condition};
|
|
|
+ this.boundOrgIds = this.boundOrgsClone.map((d) => d.id);
|
|
|
+ this.left.data = this.orgs
|
|
|
+ .filter(
|
|
|
+ (d) => this.boundOrgIds.indexOf(d.id) < 0
|
|
|
+ )
|
|
|
+ .filter(
|
|
|
+ (d) => !condition.orgName || d.shortName.includes(condition.orgName)
|
|
|
+ )
|
|
|
+ .filter(
|
|
|
+ // 过滤机构类型
|
|
|
+ (d) => !condition.orgType || d.type == condition.orgType
|
|
|
+ )
|
|
|
+ .filter(
|
|
|
+ // 过滤父级机构
|
|
|
+ (d) => !condition.orgPath || d.path.includes(condition.orgPath)
|
|
|
+ );
|
|
|
+ },
|
|
|
+ rightSearch() {
|
|
|
+ const {condition} = this.right;
|
|
|
+ if (this.boundOrgsClone.length > 0) {
|
|
|
+ this.right.data = this.boundOrgsClone
|
|
|
+ .filter(
|
|
|
+ // 过滤机构名称
|
|
|
+ (d) =>
|
|
|
+ !condition.orgName || d.shortName.includes(condition.orgName)
|
|
|
+ )
|
|
|
+ .filter(
|
|
|
+ // 过滤机构类型
|
|
|
+ (d) => !condition.orgType || d.type == condition.orgType
|
|
|
+ )
|
|
|
+ .filter(
|
|
|
+ // 过滤父级机构
|
|
|
+ (d) => !condition.orgPath || d.path.includes(condition.orgPath)
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onOK() {
|
|
|
+ this.currentTempList = this.boundOrgsClone;
|
|
|
+ this.$emit("selectNodeId", this.boundOrgIds);
|
|
|
+ this.hideDialog();
|
|
|
+ },
|
|
|
+ },
|
|
|
+ model: {
|
|
|
+ event: "selectNodeId",
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+
|
|
|
+.result_row {
|
|
|
+ width: 96%;
|
|
|
+ padding: 6px;
|
|
|
+}
|
|
|
+
|
|
|
+.dialog-footer {
|
|
|
+ float: right;
|
|
|
+ margin: 10px 0px;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-dialog__footer {
|
|
|
+ height: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-dialog__body {
|
|
|
+ padding: 10px 5px;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-card__body {
|
|
|
+ padding: 10px 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.controller {
|
|
|
+ margin: auto;
|
|
|
+ width: 80px;
|
|
|
+ top: calc(50% - 30px);
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ .remove {
|
|
|
+ margin-top: 20px;
|
|
|
+ margin-left: 0px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.el-row-top {
|
|
|
+ height: 500px;
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ v-deep & > .el-col {
|
|
|
+ height: 100%;
|
|
|
+ width: calc(50% - 50px);
|
|
|
+ }
|
|
|
+
|
|
|
+ v-deep & > .el-col:nth-child(2) {
|
|
|
+ width: 100px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.box-card {
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ v-deep .el-card__body {
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.leftbox {
|
|
|
+ v-deep .k-tree-select__clear {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.deviceName-column-content {
|
|
|
+ display: block;
|
|
|
+ text-align: right;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.tags-box {
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ border-top: 1px solid #dcdfe6; /* 上边框 */
|
|
|
+ border-bottom: 1px solid #dcdfe6; /* 下边框 */
|
|
|
+ border-left: 1px solid #dcdfe6; /* 左边框 */
|
|
|
+ border-right: 1px solid #dcdfe6; /* 取消右边框 */
|
|
|
+ color: #606266;
|
|
|
+ outline: 0;
|
|
|
+ padding: 0 40px 0 5px;
|
|
|
+ width: 100%;
|
|
|
+ min-height: 32px;
|
|
|
+ max-height: 32px;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+ display: inline-block;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+.tags_last{
|
|
|
+ height: 100%;
|
|
|
+ right: 0px;
|
|
|
+ transition: all .3s;
|
|
|
+ pointer-events: none;
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ text-align: right;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ border-top: 1px solid #dcdfe6; /* 上边框 */
|
|
|
+ border-bottom: 1px solid #dcdfe6; /* 下边框 */
|
|
|
+ border-right: 1px solid #dcdfe6; /* 左边框 */
|
|
|
+ border-right: 1px solid #dcdfe6; /* 取消右边框 */
|
|
|
+ border-left: none; /* 取消右边框 */
|
|
|
+ color: #606266;
|
|
|
+ outline: 0;
|
|
|
+ width: 78px;
|
|
|
+ padding-right: 5px;
|
|
|
+ // float: right;
|
|
|
+ min-height: 32px;
|
|
|
+ max-height: 32px;
|
|
|
+ > span {
|
|
|
+ // margin: 5px 10px;
|
|
|
+ color: #161617;
|
|
|
+ }
|
|
|
+ .close-icon {
|
|
|
+ // position: absolute;
|
|
|
+ // right: 5px;
|
|
|
+ cursor: pointer;
|
|
|
+ margin: 10px 10px;
|
|
|
+ &:hover {
|
|
|
+ color: #aaa;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.tags-box-disabled {
|
|
|
+ cursor: default;
|
|
|
+}
|
|
|
+
|
|
|
+.tags-box-mini {
|
|
|
+ min-height: 32px;
|
|
|
+ max-height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+
|
|
|
+ > span {
|
|
|
+ margin: 0 5px;
|
|
|
+ }
|
|
|
+
|
|
|
+ > .tags-num {
|
|
|
+ line-height: 38px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.tags-num {
|
|
|
+ color: #ccc;
|
|
|
+ // position: absolute;
|
|
|
+ right: 25px;
|
|
|
+ top: -4px;
|
|
|
+}
|
|
|
+
|
|
|
+.tree-box {
|
|
|
+ margin-top: 20px;
|
|
|
+ max-height: 300px;
|
|
|
+ overflow: auto;
|
|
|
+ border-radius: 4px;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ user-select: none;
|
|
|
+}
|
|
|
+</style>
|