892a90ef8c65d1f7eef9bc0e75a1fe431eff50d4.svn-base 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="width"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="handleOk"
  8. @cancel="handleCancel"
  9. :destroyOnClose="true"
  10. cancelText="关闭">
  11. <a-spin :spinning="confirmLoading">
  12. <a-form-model ref="form" :model="model" :rules="validatorRules">
  13. <a-form-model-item label="父级节点" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pid">
  14. <j-tree-select
  15. ref="treeSelect"
  16. placeholder="请选择父级节点"
  17. v-model="model.pid"
  18. dict="sys_category,name,id"
  19. pidField="pid"
  20. pidValue="0"
  21. :disabled="disabled">
  22. </j-tree-select>
  23. </a-form-model-item>
  24. <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
  25. <a-input v-model="model.name" placeholder="请输入分类名称"></a-input>
  26. </a-form-model-item>
  27. </a-form-model>
  28. </a-spin>
  29. </a-modal>
  30. </template>
  31. <script>
  32. import { httpAction,getAction } from '@/api/manage'
  33. import JTreeSelect from '@/components/jeecg/JTreeSelect'
  34. export default {
  35. name: "SysCategoryModal",
  36. components: {
  37. JTreeSelect
  38. },
  39. data () {
  40. return {
  41. title:"操作",
  42. width:800,
  43. visible: false,
  44. model: {},
  45. labelCol: {
  46. xs: { span: 24 },
  47. sm: { span: 5 },
  48. },
  49. wrapperCol: {
  50. xs: { span: 24 },
  51. sm: { span: 16 },
  52. },
  53. confirmLoading: false,
  54. validatorRules:{
  55. pid:{},
  56. name: [{ required: true, message: '请输入类型名称!' }]
  57. },
  58. url: {
  59. add: "/sys/category/add",
  60. edit: "/sys/category/edit",
  61. checkCode:"/sys/category/checkCode",
  62. },
  63. expandedRowKeys:[],
  64. pidField:"pid",
  65. subExpandedKeys:[]
  66. }
  67. },
  68. created () {
  69. },
  70. computed : {
  71. disabled() {
  72. return this.model.id?true : false;
  73. }
  74. },
  75. methods: {
  76. add () {
  77. this.edit({});
  78. },
  79. edit (record) {
  80. this.model = Object.assign({}, record);
  81. this.visible = true;
  82. },
  83. close () {
  84. this.$emit('close');
  85. this.visible = false;
  86. this.$refs.form.resetFields();
  87. },
  88. handleOk () {
  89. const that = this;
  90. // 触发表单验证
  91. this.$refs.form.validate(valid => {
  92. if (valid) {
  93. that.confirmLoading = true;
  94. let httpurl = '';
  95. let method = '';
  96. if(!this.model.id){
  97. httpurl+=this.url.add;
  98. method = 'post';
  99. }else{
  100. httpurl+=this.url.edit;
  101. //method = 'put';
  102. method = 'post';
  103. }
  104. httpAction(httpurl,this.model,method).then((res)=>{
  105. if(res.success){
  106. that.$message.success(res.message);
  107. // close的时候清空了表单的值 导致model为空 修改值在列表页没有变 此处需要复制一下model
  108. that.submitSuccess({...this.model})
  109. }else{
  110. that.$message.warning(res.message);
  111. }
  112. }).finally(() => {
  113. that.confirmLoading = false;
  114. that.close();
  115. })
  116. }else{
  117. return false;
  118. }
  119. })
  120. },
  121. handleCancel () {
  122. this.close()
  123. },
  124. submitSuccess(formData){
  125. if(!formData.id){
  126. let treeData = this.$refs.treeSelect.getCurrTreeData()
  127. this.expandedRowKeys=[]
  128. this.getExpandKeysByPid(formData[this.pidField],treeData,treeData)
  129. if(formData.pid && this.expandedRowKeys.length==0){
  130. this.expandedRowKeys = this.subExpandedKeys;
  131. }
  132. this.$emit('ok',formData,this.expandedRowKeys.reverse());
  133. }else{
  134. this.$emit('ok',formData);
  135. }
  136. },
  137. getExpandKeysByPid(pid,arr,all){
  138. if(pid && arr && arr.length>0){
  139. for(let i=0;i<arr.length;i++){
  140. if(arr[i].key==pid){
  141. this.expandedRowKeys.push(arr[i].key)
  142. this.getExpandKeysByPid(arr[i]['parentId'],all,all)
  143. }else{
  144. this.getExpandKeysByPid(pid,arr[i].children,all)
  145. }
  146. }
  147. }
  148. },
  149. }
  150. }
  151. </script>