| <template>  | 
| <a-form-model style="margin-top: 8px" :autoFormCreate="(form)=>{this.form = form}">  | 
|     <a-modal title="分配-菜单" destroyOnClose :visible="visible" @cancel="handleCancel">  | 
| <!--  :default-expanded-keys="true"  | 
|       :default-selected-keys="defaultSelectedKeys"  | 
|       :default-checked-keys="defaultCheckedKeys"  | 
|    -->  | 
|         <a-tree  | 
|             defaultExpandAll  | 
|             checkable  | 
|             :tree-data="treeData"  | 
|             v-model="defaultSelectedKeys"  | 
|             :replace-fields="replaceFields"  | 
|             @select="onSelect"  | 
|             @check="onCheck"  | 
|         />  | 
|         <template slot="footer">  | 
|             <a-button key="cancel" @click="handleCancel">  | 
|                 取消  | 
|             </a-button>  | 
|             <a-button key="forward" type="primary" @click="handleOk">  | 
|                 完成  | 
|             </a-button>  | 
|         </template>  | 
|     </a-modal>  | 
| </a-form-model>  | 
| </template>  | 
|   | 
| <script lang="ts">  | 
|   | 
| import {  | 
|     Component,  | 
|     Prop,  | 
|     Vue,  | 
|     Emit,  | 
|     Model,  | 
|     Watch,  | 
| } from 'vue-property-decorator';  | 
| import { get, post } from "@/util/request";  | 
|   | 
| @Component({  | 
|     components: {},  | 
| })  | 
| export default class UpdateTaskForm extends Vue {  | 
|     @Prop({  | 
|         type: Boolean,  | 
|         default: false,  | 
|     })  | 
|   | 
|   | 
|     private visible!: boolean;  | 
|     // 数据  | 
|     private treeData:any =[  | 
|         // {  | 
|         //     name: 'parent 1',  | 
|         //     key: '0-0',  | 
|         //     child: [  | 
|         //     {  | 
|         //         name: '张晨成',  | 
|         //         key: '0-0-0',  | 
|         //     },  | 
|         //     {  | 
|         //         name: 'parent 1-1',  | 
|         //         key: '0-0-1',  | 
|         //     },  | 
|         //     ],  | 
|         // },  | 
|         // {  | 
|         //     name: 'parent 2',  | 
|         //     key: '0-1',  | 
|         //     child: [  | 
|         //     {  | 
|         //         name: '张晨成',  | 
|         //         key: '0-1-0',  | 
|         //     },  | 
|         //     {  | 
|         //         name: 'parent 1-1',  | 
|         //         key: '0-1-1',  | 
|         //     },  | 
|         //     ],  | 
|         // },  | 
|     ]  | 
|   | 
|     private defaultSelectedKeys:any[] = [];  | 
|     private defaultCheckedKeys:any[] = [];  | 
|   | 
|     private replaceFields:any =  {  | 
|         children: 'child',  | 
|         title: 'name',  | 
|     }  | 
|   | 
|     private idList:any;  | 
|   | 
|     @Prop({  | 
|         type: Object,  | 
|         default() {  | 
|             return {};  | 
|         },  | 
|     })  | 
|     private record!: any;  | 
|   | 
|     private form: any = null;  | 
|   | 
|     private formVals: any = {  | 
|         target: '0',  | 
|         template: '0',  | 
|         type: '1',  | 
|         time: '',  | 
|         frequency: 'month',  | 
|     };  | 
|   | 
|     private currentStep: number = 0;  | 
|   | 
|     private formLayout = {  | 
|         labelCol: {  | 
|             span: 7,  | 
|         },  | 
|         wrapperCol: {  | 
|             span: 13,  | 
|         },  | 
|     };  | 
|   | 
|     private onSelect(selectedKeys: any, info: any) {  | 
|   | 
|     }  | 
|     private onCheck(checkedKeys: any, info: any) {  | 
|   | 
|       this.idList = checkedKeys  | 
|   | 
|     }  | 
|     // 请求菜单列表数据  | 
|     private menuData() {  | 
|         get('manageMenu/getAllManageMenu', {}).then((res) => {  | 
|             const menuData =res.data.data  | 
|             for (let i = 0; i < menuData.length; i++) {  | 
|                 // const element = res.data.data[i];  | 
|                 this.treeData.push({  | 
|                     name:menuData[i].name,  | 
|                     key:menuData[i].id  | 
|                 })  | 
|   | 
|                 this.treeData[i].child = []  | 
|                 if(menuData[i].children && menuData[i].children.length){  | 
|                     for (let j = 0; j < menuData[i].children.length; j++) {  | 
|                         this.treeData[i].child.push({  | 
|                             name:menuData[i].children[j].name,  | 
|                             key:menuData[i].children[j].id,  | 
|                         })  | 
|   | 
|                     }  | 
|                 }  | 
|             }  | 
|   | 
|         })  | 
|         .catch((err)=>{  | 
|             console.log(err);  | 
|         })  | 
|     }  | 
|   | 
|     private handleBackward(): void {  | 
|         this.currentStep--;  | 
|     }  | 
|   | 
|     private handleNext(): void {  | 
|         this.form.validateFields((err: any, fieldsValue: any) => {  | 
|             if (err) {  | 
|                 return;  | 
|             }  | 
|             this.formVals = { ...this.formVals, ...fieldsValue };  | 
|             this.currentStep++;  | 
|         });  | 
|     }  | 
|   | 
|     private handleCancel(): void {  | 
|         this.updateVisible(false);  | 
|         this.defaultSelectedKeys = []  | 
|         this.defaultCheckedKeys = []  | 
|     }  | 
|   | 
|     // 更新  | 
|     private handleOk(): void {  | 
|         post('manageRole/updateRoleMenu', {menuIds:this.idList,id:this.record.id}).then((res) => {  | 
|           if (res.data.code === 0) {  | 
|             this.updateVisible(false);  | 
|             this.onOk();  | 
|             this.$message.success(res.data.message)  | 
|             this.defaultSelectedKeys = []  | 
|             this.defaultCheckedKeys = []  | 
|           } else {  | 
|             this.$message.warning(res.data.message)  | 
|           }  | 
|         });  | 
|     }  | 
|   | 
|     @Emit('ok')  | 
|     private onOk() {  | 
|   | 
|     }  | 
|   | 
|     private updateVisible(visible: boolean): void {  | 
|         this.$emit('update:visible', visible);  | 
|     }  | 
|   | 
|     private mounted(): void {  | 
|         this.currentStep = 0;  | 
|   | 
|         this.menuData()  | 
|         setTimeout(()=>{  | 
|             this.roleMenuData()  | 
|         },300)  | 
|     }  | 
|   | 
|     @Watch('visible')  | 
|     private roleMenuData(newVal: boolean,oldVal: boolean){  | 
|             this.defaultSelectedKeys = []  | 
|             this.defaultCheckedKeys = []  | 
|       if (newVal) {  | 
|         get('manageMenu/getManageChildMenuByRoleId',{  | 
|             roleId: this.record.id  | 
|         }).then((res)=>{  | 
|           this.defaultSelectedKeys = res.data.data  | 
|           this.defaultCheckedKeys = res.data.data  | 
|         }).catch((err)=>{  | 
|           console.log(err);  | 
|         })  | 
|       }else {  | 
|       }  | 
|     }  | 
|     private recordChange(value: any, oldValue: any): void {  | 
|         this.formVals = {  | 
|             ...value,  | 
|             ...this.formVals,  | 
|         };  | 
|         this.currentStep = 0;  | 
|     }  | 
|   | 
| }  | 
| </script>  |