123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- import { ref, watch } from "vue";
- import { ElMessageBox } from "element-plus";
- const useJumpEditorDrawer = (curNodeRef, graphRef) => {
- // 跳转模块得抽屉状态
- const jumpDrawerRef = ref(false);
- // 跳转模块得表单数据
- const jumpFormRef = ref({
- jumpNodeId: "",
- jumpNodeName: "",
- });
- // 表单规则
- const jumpFormRuleRef = ref({
- jumpNodeName: [
- { required: true, message: "请选择跳转模块", trigger: "change" },
- ],
- });
- // 可以跳转得节点列表
- const canJumpNodeListRef = ref([]);
- // 更新可以跳转节点列表
- const updataCanJumpNodeList = () => {
- const allNode = graphRef.value.getNodes();
- const curNode = curNodeRef.value;
- const curModel = curNode.getModel();
- // 过滤出非自己本身和直接上级节点的所有节点
- const result = [];
- for (let i = 0; i < allNode.length; i++) {
- const _node = allNode[i];
- const _model = _node.getModel();
- if (_model.type === "jump-node" || _model.id === curModel.preNodeId)
- continue;
- result.push({
- jumpNodeId: _model.id,
- jumpNodeName: _model.data?.name || "",
- });
- }
- canJumpNodeListRef.value = result;
- };
- // 选择跳转节点之后赋值跳转节点名称
- const handleChangeJumpTarget = (jumpNodeId) => {
- const target = canJumpNodeListRef.value.find(
- (item) => item.jumpNodeId === jumpNodeId
- );
- jumpFormRef.value.jumpNodeId = jumpNodeId;
- jumpFormRef.value.jumpNodeName = target.jumpNodeName;
- };
- // 关闭抽屉
- const handleJumpCancel = () => {
- ElMessageBox.confirm("是否确认取消更改?")
- .then(() => {
- jumpDrawerRef.value = false;
- curNodeRef.value = null;
- })
- .catch(() => {
- // catch error
- });
- };
- // 保存
- const handleJumpSave = () => {
- if (!graphRef.value) return console.warn("画布不存在");
- const config = {
- data: {
- jumpNodeId: jumpFormRef.value.jumpNodeId,
- jumpNodeName: jumpFormRef.value.jumpNodeName,
- },
- };
- // 更新当前节点
- graphRef.value.updateItem(curNodeRef.value, config);
- jumpDrawerRef.value = false;
- curNodeRef.value = null;
- };
- // 根据传入的节点初始化内容
- const init = (node) => {
- const model = node.getModel();
- const data = model.data || {};
- jumpFormRef.value = {
- jumpNodeId: data.jumpNodeId,
- jumpNodeName: data.jumpNodeName,
- };
- };
- watch(
- () => curNodeRef.value,
- (node) => {
- if (!node) return;
- init(node);
- }
- );
- return {
- jumpDrawerRef,
- jumpFormRef,
- jumpFormRuleRef,
- canJumpNodeListRef,
- updataCanJumpNodeList,
- handleChangeJumpTarget,
- handleJumpCancel,
- handleJumpSave,
- };
- };
- export default useJumpEditorDrawer;
|