moveModel.vue 2.5 KB
<template>
  <BasicModal  width="40%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
    <BasicForm @register="registerForm" />
  </BasicModal>
</template>
<script lang="ts" setup>
import {ref, computed, unref, reactive} from 'vue';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import {modelFormSchema, MoveFormSchema} from './model.data';
import { useMessage } from '@/hooks/web/useMessage';
import { TreeData } from "@/views/metaModel/logicModel/modelData";

defineOptions({ name: 'ModelModal' });
const getTitle = computed(() => ('移动'));
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const isUpdate = ref(true);
const isMove = ref(false);
const rowId = ref('');
//获取接口数据并放在下拉框里(这里是打开了一个弹框)
//初始化表单
const [registerForm, { setFieldsValue, updateSchema, resetFields, validate }] = useForm({
  labelWidth: 100,
  baseColProps: { lg: 12, md: 24 },
  schemas: MoveFormSchema,
  showActionButtonGroup: false,
  actionColOptions: {
    span: 23,
  },
});

//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
  resetFields();
  setModalProps({ confirmLoading: false });
  isUpdate.value = !!data?.isUpdate;
  isMove.value = !!data?.isMove;
  const formData = {
    modelId: data.record.businessId
  }
  // 塞值
  setFieldsValue({
    ...formData,
  });

  const treeList =  handleTree(TreeData, 'businessId',undefined,undefined,undefined)
  updateSchema([
    {
      field: 'modelId',
      componentProps: {
        treeData: treeList
      },
    },
  ]);
});

function handleTree(data, id, parentId, children, rootId) {
  id = id || 'id'
  parentId = parentId || 'parentId'
  children = children || 'children'
  rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0
  // 对源数据深度克隆
  const cloneData = JSON.parse(JSON.stringify(data))
  // 循环所有项
  const treeData = cloneData.filter(father => {
    const branchArr = cloneData.filter(child => {
      // 返回每一项的子级数组
      return father[id] === child[parentId]
    })
    branchArr.length > 0 ? father.children = branchArr : ''
    // 返回第一层
    return father[parentId] === rootId
  })
  return treeData !== '' ? treeData : data
}

/**确定按钮*/
async function handleSubmit() {
  createMessage.success('修改成功');
  closeModal()
}

</script>