| 
					
				 | 
			
			
				@@ -0,0 +1,217 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div ref="container"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <a-modal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :title="title" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :width="800" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :visible="visible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :confirmLoading="confirmLoading" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :getContainer="() => $refs.container" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :maskStyle="{ top: '93px', left: '154px' }" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :wrapClassName="wrapClassNameInfo()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :mask="isDesktop()" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :maskClosable="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @ok="handleOk" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cancel="handleCancel" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cancelText="取消" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      okText="保存" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      style="top: 5%; height: 95%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <a-spin :spinning="confirmLoading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="drawer-bootom-button"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <a-dropdown :trigger="['click']" placement="topCenter"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-menu slot="overlay"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="1" @click="switchCheckStrictly(1)">父子关联</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="2" @click="switchCheckStrictly(2)">取消关联</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="3" @click="checkALL">全部勾选</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="4" @click="cancelCheckALL">取消全选</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="5" @click="expandAll">展开所有</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <a-menu-item key="6" @click="closeAll">合并所有</a-menu-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </a-menu> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-button> 树操作 <a-icon type="up" /> </a-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </a-dropdown> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <a-col :md="10" :sm="24"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <a-tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              checkable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              multiple 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @check="onCheck" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :selectedKeys="selectedKeys" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :checkedKeys="checkedKeys" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :treeData="roleFunctionTree" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :checkStrictly="checkStrictly" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :expandedKeys="iExpandedKeys" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :autoExpandParent="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              @expand="onExpand" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </a-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </a-spin> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </a-modal> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import pick from 'lodash.pick' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { mixinDevice } from '@/utils/mixin' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { addUserBusiness, editUserBusiness, checkUserBusiness } from '@/api/api' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getAction } from '../../../api/manage' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'UserSupplierModal', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  mixins: [mixinDevice], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      title: '操作', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      visible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      model: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      roleId: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      iExpandedKeys: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      roleFunctionTree: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      checkedKeys: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectedKeys: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      checkStrictly: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      hiding: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      labelCol: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        xs: { span: 24 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sm: { span: 5 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      wrapperCol: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        xs: { span: 24 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sm: { span: 16 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      confirmLoading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      form: this.$form.createForm(this), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  created() {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    edit(record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.form.resetFields() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.model = Object.assign({}, {}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.visible = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.setFieldsValue(pick(this.model, 'name', 'type', 'description')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.roleId = record.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checkedKeys = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loadTree(record.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    close() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$emit('close') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.visible = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleOk() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const that = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 触发表单验证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.form.validateFields((err, values) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          that.confirmLoading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let formData = Object.assign(this.model, values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          formData.type = 'UserSupplier' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          formData.keyId = this.roleId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          formData.value = this.checkedKeys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let obj 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          checkUserBusiness({ type: 'UserSupplier', keyId: this.roleId }).then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (res.data && res.data.id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              formData.id = res.data.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              obj = editUserBusiness(formData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              obj = addUserBusiness(formData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            obj 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  that.$emit('ok') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  that.$message.warning(res.data.message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              .finally(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                that.confirmLoading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                that.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleCancel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loadTree(id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let that = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that.treeData = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      that.roleFunctionTree = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let params = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params.id = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      getAction('/supplier/findUserSupplier?UBType=UserSupplier&UBKeyId=' + id).then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          //机构全选后,再添加机构,选中数量增多 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.allTreeKeys = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          for (let i = 0; i < res.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let temp = res[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            that.treeData.push(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            that.roleFunctionTree.push(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            that.setThisExpandedKeys(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            that.getAllKeys(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log(JSON.stringify(this.checkedKeys)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.loading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onCheck(checkedKeys, info) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('onCheck', checkedKeys, info) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.hiding = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.checkStrictly) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.checkedKeys = checkedKeys.checked 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.checkedKeys = checkedKeys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    setThisExpandedKeys(node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (node.checked == true) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.checkedKeys.push(node.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (node.children && node.children.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.iExpandedKeys.push(node.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let a = 0; a < node.children.length; a++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.setThisExpandedKeys(node.children[a]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getAllKeys(node) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // console.log('node',node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.allTreeKeys.push(node.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (node.children && node.children.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let a = 0; a < node.children.length; a++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.getAllKeys(node.children[a]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    expandAll() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.iExpandedKeys = this.allTreeKeys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    closeAll() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.iExpandedKeys = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    checkALL() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checkStriccheckStrictlytly = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checkedKeys = this.allTreeKeys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cancelCheckALL() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.checkedKeys = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    switchCheckStrictly(v) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (v == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.checkStrictly = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (v == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.checkStrictly = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onExpand(expandedKeys) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log('onExpand', expandedKeys) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.iExpandedKeys = expandedKeys 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style scoped></style> 
			 |