浏览代码

Merge branch 'main' of https://git.shalu.com/Shalu/shalu-agent-workflow into feature-0123-Ai-workFlow

# Conflicts:
#	apps/web/src/components/setter/index.vue
#	packages/nodes/materials/start.ts
lj1559651600@163.com 3 周之前
父节点
当前提交
1cf9041e58

+ 8 - 7
apps/web/src/components/setter/DatabaseSetter.vue

@@ -98,6 +98,7 @@ const onAddTable = (table: unknown) => {
 						<el-tag
 							v-for="column in table.columns"
 							:key="column.name"
+							type="info"
 							effect="light"
 							size="small"
 							>{{ column.name }}</el-tag
@@ -127,7 +128,7 @@ const onAddTable = (table: unknown) => {
 				</template>
 				<div v-for="field in fieldList" :key="field.name" class="flex gap-4px mb-12px">
 					<span>{{ field.name }}</span>
-					<el-tag effect="light">{{ field.type }}</el-tag>
+					<el-tag type="info" effect="light">{{ field.type }}</el-tag>
 				</div>
 				<el-empty v-if="!fieldList.length" description="请添加查询字段" :image-size="40" />
 			</el-collapse-item>
@@ -160,7 +161,7 @@ const onAddTable = (table: unknown) => {
 				<div v-for="field in sortList" :key="field.name" class="flex items-center gap-4px mb-12px">
 					<div class="flex-1 flex justify-between">
 						<span>{{ field.name }}</span>
-						<el-tag effect="light">{{ field.type }}</el-tag>
+						<el-tag type="info" effect="light">{{ field.type }}</el-tag>
 					</div>
 					<el-select style="width: 120px" v-model="field.sort" placeholder="请选择">
 						<el-option label="升序" value="asc"></el-option>
@@ -210,15 +211,15 @@ const onAddTable = (table: unknown) => {
 						class="flex items-center gap-4px mb-12px"
 					>
 						<span>{{ field.name }}</span>
-						<el-tag effect="light">{{ field.type }}</el-tag>
+						<el-tag type="info" effect="light">{{ field.type }}</el-tag>
 					</div>
 				</el-collapse-item>
 			</el-collapse-item>
 
 			<el-collapse-item title="异常处理" name="8">
-				<el-form>
+				<el-form label-width="120px">
 					<el-row>
-						<el-col :span="8">
+						<el-col :span="24">
 							<el-form-item label="超时时间">
 								<el-input-number
 									v-model="exceptionConfig.timeout"
@@ -231,7 +232,7 @@ const onAddTable = (table: unknown) => {
 								/>
 							</el-form-item>
 						</el-col>
-						<el-col :span="8">
+						<el-col :span="24">
 							<el-form-item label="重试次数">
 								<el-input-number
 									v-model="exceptionConfig.retry"
@@ -244,7 +245,7 @@ const onAddTable = (table: unknown) => {
 								/>
 							</el-form-item>
 						</el-col>
-						<el-col :span="8">
+						<el-col :span="24">
 							<el-form-item label="异常处理方式">
 								<el-select v-model="exceptionConfig.handler" placeholder="请选择">
 									<el-option label="中断流程" :value="0" />

+ 27 - 37
apps/web/src/components/setter/index.vue

@@ -25,12 +25,13 @@ const setterMap = {
 
 // 异步加载映射
 const store = useComponentMapInspector()
-// console.log(store.$state.componentMap['http'], '节点映射')
+
+console.log(store.componentMap['http'])
 
 interface Props {
-    visible: boolean
-		id: string
-		workflow: IWorkflow
+	id: string
+	workflow: IWorkflow
+	visible: boolean
 }
 const props = withDefaults(defineProps<Props>(), {
     visible: false,
@@ -49,21 +50,10 @@ const setter = computed(() => {
 })
 
 const closeDrawer = () => {
-    emit('update:visible', false)
+	emit('update:visible', false)
 }
 </script>
 <template>
-<!--	<div class='setter'>-->
-<!--		<div class="drawer shadow-2xl" :class="{ 'drawer&#45;&#45;open': props.visible }">-->
-
-<!--			<div class="content">-->
-<!--				<component :is="store.$state.componentMap['code']" :data="props.data" v-model:visible="props.visible">-->
-<!--				</component>-->
-<!--				&lt;!&ndash;               <component :is="store.$state.componentMap[props.nodeType]" :data="props.data"></component>&ndash;&gt;-->
-<!--			</div>-->
-<!--		</div>-->
-<!--	</div>-->
-
 	<div class="setter">
 		<div class="drawer shadow-2xl" :class="{ 'drawer--open': props.visible && setter }">
 			<header class="text-gray-800">
@@ -84,29 +74,29 @@ const closeDrawer = () => {
 </template>
 <style lang="less" scoped>
 .setter {
-    /* Drawer 主体 */
-    .drawer {
-        position: fixed;
-        top: 100px;
-        right: 5px;
-        bottom: 10px;
-        width: 420px;
-        background: #fff;
-        z-index: 1000;
-        border-radius: 8px;
-        display: flex;
-        flex-direction: column;
-        border: 1px solid #e4e4e4;
+	/* Drawer 主体 */
+	.drawer {
+		position: fixed;
+		top: 60px;
+		right: 5px;
+		bottom: 10px;
+		width: 420px;
+		background: #fff;
+		z-index: 1000;
+		border-radius: 8px;
+		display: flex;
+		flex-direction: column;
+		border: 1px solid #e4e4e4;
 
-        /* 初始隐藏状态 */
-        transform: translateX(110%);
-        transition: transform 0.25s ease;
-    }
+		/* 初始隐藏状态 */
+		transform: translateX(110%);
+		transition: transform 0.25s ease;
+	}
 
-    /* 显示状态 */
-    .drawer--open {
-        transform: translateX(0);
-    }
+	/* 显示状态 */
+	.drawer--open {
+		transform: translateX(0);
+	}
 
 	/* Header */
 	.drawer header {

+ 19 - 1
apps/web/src/views/Chat.vue

@@ -96,7 +96,15 @@
 </template>
 
 <script setup lang="ts">
-import { ref, computed, onMounted, nextTick } from 'vue'
+import {
+	ref,
+	computed,
+	onMounted,
+	nextTick,
+	onBeforeUnmount,
+	inject,
+	type CSSProperties
+} from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { BubbleList, Sender } from 'vue-element-plus-x'
 import { useChatStore } from '@/store/modules/chat.store'
@@ -149,6 +157,16 @@ onMounted(() => {
 	}
 })
 
+const layout = inject<{ setMainStyle: (style: CSSProperties) => void }>('layout')
+
+layout?.setMainStyle({
+	padding: '0px'
+})
+
+onBeforeUnmount(() => {
+	layout?.setMainStyle({})
+})
+
 // 创建新对话
 const handleNewChat = () => {
 	chatStore.createConversation()

+ 12 - 12
packages/nodes/materials/end.ts

@@ -8,15 +8,15 @@
 import type { IWorkflowNode } from '@repo/workflow'
 
 export const endNode: IWorkflowNode = {
-    id: 'end-node',
-    type: 'end-node',
-    label: '结束',
-    position: {x: 643.987980769231, y: 225.97019230769232},
-    data: {
-        id: 'end-node',
-        label: '结束节点',
-        description: '这是一个结束节点',
-        inputs: [],
-        outputs: []
-    }
-}
+	id: 'end-node',
+	type: 'end-node',
+	label: '结束',
+	position: { x: 850, y: 272 },
+	data: {
+		id: 'end-node',
+		label: '结束节点',
+		description: '这是一个结束节点',
+		inputs: [],
+		outputs: []
+	}
+}

+ 12 - 13
packages/nodes/materials/start.ts

@@ -7,17 +7,16 @@
  */
 import type { IWorkflowNode } from '@repo/workflow'
 
-export const startNode:IWorkflowNode = {
-    id: 'start-node',
-    type: 'start-node',
-    label: '开始',
-    position: { x: 257, y: 203 },
-    data: {
-        id: 'start-node',
-        label: '开始节点',
-        description: '这是一个开始节点',
-        inputs: [],
-        outputs: []
-    }
+export const startNode: IWorkflowNode = {
+	id: 'start-node',
+	type: 'start-node',
+	label: '开始',
+	position: { x: 80, y: 272 },
+	data: {
+		id: 'start-node',
+		label: '开始节点',
+		description: '这是一个开始节点',
+		inputs: [],
+		outputs: []
+	}
 }
-

+ 5 - 1
packages/workflow/src/components/Canvas.vue

@@ -3,7 +3,7 @@ import type { IWorkflow, XYPosition, ConnectStartEvent, CanvasNodeMoveEvent } fr
 import type { SourceType } from '@repo/nodes'
 import type { NodeMouseEvent, Connection, NodeDragEvent } from '@vue-flow/core'
 
-import { ref } from 'vue'
+import { ref, onMounted } from 'vue'
 import { VueFlow, useVueFlow, MarkerType } from '@vue-flow/core'
 import { MiniMap } from '@vue-flow/minimap'
 
@@ -208,6 +208,10 @@ function onClickConnectionAdd(connection: Connection) {
 const handleRun = () => {
 	emit('run')
 }
+
+onMounted(() => {
+	fitView()
+})
 </script>
 
 <template>

+ 4 - 12
packages/workflow/src/components/elements/node-temp/DataBaseNode.vue

@@ -226,31 +226,23 @@ const queryTypeLabel = computed(() => {
 		<!-- 输出连接点 - 成功 -->
 		<CanvasHandle
 			handle-id="code-node-output1"
-			type="target"
+			type="source"
 			:connections-count="2"
 			:position="Position.Right"
 			:style="{ top: '40%' }"
+			label="true"
 		>
-			<div
-				class="absolute left-5 top-1/2 -translate-y-1/2 px-2 py-0.5 bg-green-500 text-white text-xs rounded whitespace-nowrap opacity-0 hover:opacity-100 transition-opacity pointer-events-none"
-			>
-				成功
-			</div>
 		</CanvasHandle>
 
 		<!-- 输出连接点 - 失败 -->
 		<CanvasHandle
 			handle-id="code-node-output2"
-			type="target"
+			type="source"
 			:connections-count="2"
 			:position="Position.Right"
 			:style="{ top: '60%' }"
+			label="false"
 		>
-			<div
-				class="absolute left-5 top-1/2 -translate-y-1/2 px-2 py-0.5 bg-red-500 text-white text-xs rounded whitespace-nowrap opacity-0 hover:opacity-100 transition-opacity pointer-events-none"
-			>
-				失败
-			</div>
 		</CanvasHandle>
 	</div>
 </template>

+ 1 - 1
packages/workflow/src/components/elements/node-temp/EndNode.vue

@@ -31,7 +31,7 @@ const props = withDefaults(defineProps<NodeProps>(), {
 		>
 			<!-- 左侧装饰条 -->
 			<div
-				class="absolute left-0 top-0 bottom-0 w-1 bg-gradient-to-b from-green-500 to-green-400 rounded-l-xl"
+				class="absolute right-0 top-0 bottom-0 w-1 bg-gradient-to-b from-green-500 to-green-400 rounded-l-xl"
 			></div>
 
 			<!-- 图标区域 -->