<template> <a-modal :title="title" :width="width" :visible="visible" :confirmLoading="confirmLoading" @ok="handleOk" @cancel="handleCancel" :destroyOnClose="true" cancelText="关闭"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item label="父级节点" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-tree-select ref="treeSelect" placeholder="请选择父级节点" v-decorator="['pid', validatorRules.pid]" dict="sys_category,name,id" pidField="pid"> </j-tree-select> </a-form-item> <a-form-item label="类型名称" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-input v-decorator="[ 'name', validatorRules.name]" placeholder="请输入类型名称"></a-input> </a-form-item> <a-form-item label="类型编码" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-input v-decorator="[ 'code', validatorRules.code]" placeholder="请输入类型编码"></a-input> </a-form-item> </a-form> </a-spin> </a-modal> </template> <script> import { httpAction } from '@/api/manage' import pick from 'lodash.pick' import JTreeSelect from '@/components/jeecg/JTreeSelect' export default { name: "SysCategoryModal", components: { JTreeSelect }, data () { return { form: this.$form.createForm(this), title:"操作", width:800, visible: false, model: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 }, }, confirmLoading: false, validatorRules:{ pid:{}, name:{}, code:{}, }, url: { add: "/sys/category/add", edit: "/sys/category/edit", }, expandedRowKeys:[], pidField:"pid" } }, created () { }, methods: { add () { this.edit({}); }, edit (record) { this.form.resetFields(); this.model = Object.assign({}, record); this.visible = true; this.$nextTick(() => { this.form.setFieldsValue(pick(this.model,'pid','name','code')) }) }, close () { this.$emit('close'); this.visible = false; }, handleOk () { const that = this; // 触发表单验证 this.form.validateFields((err, values) => { if (!err) { that.confirmLoading = true; let httpurl = ''; let method = ''; if(!this.model.id){ httpurl+=this.url.add; method = 'post'; }else{ httpurl+=this.url.edit; method = 'put'; } let formData = Object.assign(this.model, values); console.log("表单提交数据",formData) httpAction(httpurl,formData,method).then((res)=>{ if(res.success){ that.$message.success(res.message); that.submitSuccess(formData) }else{ that.$message.warning(res.message); } }).finally(() => { that.confirmLoading = false; that.close(); }) } }) }, handleCancel () { this.close() }, popupCallback(row){ this.form.setFieldsValue(pick(row,'pid','name','code')) }, submitSuccess(formData){ if(!formData.id){ let treeData = this.$refs.treeSelect.getCurrTreeData() this.expandedRowKeys=[] this.getExpandKeysByPid(formData[this.pidField],treeData,treeData) this.$emit('ok',formData,this.expandedRowKeys.reverse()); }else{ this.$emit('ok',formData); } }, getExpandKeysByPid(pid,arr,all){ if(pid && arr && arr.length>0){ for(let i=0;i<arr.length;i++){ if(arr[i].key==pid){ this.expandedRowKeys.push(arr[i].key) this.getExpandKeysByPid(arr[i]['parentId'],all,all) }else{ this.getExpandKeysByPid(pid,arr[i].children,all) } } } } } } </script>