Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

luoyali vor 6 Monaten
Ursprung
Commit
2bdec1bbaf

+ 3 - 1
.eslintignore

@@ -13,4 +13,6 @@ dist
 /bin
 .eslintrc.js
 prettier.config.js
-src/assets
+src/assets
+src/components/packages/ckeditor
+src/components/external

+ 1 - 1
.gitignore

@@ -18,7 +18,7 @@ package-lock.json
 pnpm-lock.yaml
 yarn.lock
 tests/**/coverage/
-
+.yarn
 # Editor directories and files
 .vscode/*
 !.vscode/extensions.json

+ 0 - 14
src/components/scWorkflow/index.vue

@@ -7,20 +7,6 @@
 		</div>
 		<div class="box-scale" :style="`transform: scale(${zoom / 100})`">
 			<node-wrap v-if="nodeConfig" v-model="nodeConfig" :disabled="disabled"></node-wrap>
-			<div class="node-wrap">
-				<div class="node-wrap-box node-wrap-box--disabled end-node" :class="[`node-wrap-box--${nodeConfig.lastNode_local_status}`]">
-					<div class="title" style="background: var(--el-color-info)">
-						<span class="title_label">结束</span>
-					</div>
-					<div class="content">
-						<span>流程结束</span>
-					</div>
-				</div>
-			</div>
-			<!--			<div class="end-node">
-				<div class="end-node-circle"></div>
-				<div class="end-node-text">流程结束</div>
-			</div>-->
 		</div>
 		<use-select v-if="selectVisible" ref="useselect" @update:selected="update_activeSelected" @closed="selectVisible = false"></use-select>
 	</div>

+ 11 - 0
src/components/scWorkflow/nodeWrap.vue

@@ -43,6 +43,17 @@
 			<node-wrap v-if="slot.node" v-model="slot.node.childNode" :disabled="disabled"></node-wrap>
 		</template>
 	</route-branch>
+	<!-- 结束分支 -->
+	<div v-if="nodeConfig.type === -1" class="node-wrap" :modelValue="nodeConfig">
+		<div class="node-wrap-box node-wrap-box--disabled end-node" :class="[`node-wrap-box--${nodeConfig.lastNode_local_status}`]">
+			<div class="title" style="background: var(--el-color-info)">
+				<span class="title_label">{{ nodeConfig.nodeName }}</span>
+			</div>
+			<div class="content">
+				<span>流程结束</span>
+			</div>
+		</div>
+	</div>
 
 	<node-wrap v-if="nodeConfig.childNode" v-model="nodeConfig.childNode" :disabled="disabled"></node-wrap>
 </template>

+ 1 - 6
src/layout/components/AppMain.vue

@@ -5,7 +5,7 @@
 		<router-view v-slot="{ Component, route }">
 			<transition :name="pageAnimateMode" mode="out-in">
 				<keep-alive :include="cachedViews">
-					<component :is="Component" :key="getCompKey(route)" />
+					<component :is="Component" :key="route.fullPath" />
 				</keep-alive>
 			</transition>
 		</router-view>
@@ -19,17 +19,12 @@
 import { computed, watch } from 'vue'
 import useStore from '@/store'
 import Footer from '@/layout/components/Footer/index.vue'
-import { AppRouteRecordRaw } from '@/router/types'
 import Tabs from '@/layout/components/Tabs/index.vue'
 import MaximizeQuit from './MaximizeQuit.vue'
 const { tagsView, setting } = useStore()
 const tabsVisible = computed(() => setting.tabsVisible)
 const cachedViews = computed(() => tagsView.cachedViews)
 
-const getCompKey = (route: AppRouteRecordRaw) => {
-	if (route.name === 'flow_create_index') return route.path
-	return route.fullPath
-}
 const pageAnimateMode = computed(() => (setting.animate ? setting.animateMode : undefined))
 watch(
 	() => setting.contentMaximize,

+ 14 - 6
src/views/flow/create/components/FlowDesign.vue

@@ -15,12 +15,20 @@ const { modelContent } = storeToRefs(flowStore)
 const formRef = ref()
 const drawer = ref(false)
 const jsonFormat = ref({})
-const createConfigStart = () => ({
-	nodeName: '发起人',
-	nodeKey: getNodeKey(),
-	type: 0,
-	nodeAssigneeList: []
-})
+const createConfigStart = () => {
+	const nodeKey = getNodeKey()
+	return {
+		nodeName: '发起人',
+		nodeKey,
+		type: 0,
+		nodeAssigneeList: [],
+		childNode: {
+			nodeName: '结束',
+			nodeKey: nodeKey + 1,
+			type: -1
+		}
+	}
+}
 let form = ref({
 	processConfig: createConfigStart()
 })

+ 9 - 2
src/views/flow/group/components/listGroup.vue

@@ -332,8 +332,15 @@ const copyEv = (ele: any) => {
 
 // 修改
 const updateEv = async (element: any) => {
-	const jumpRouterUrl = '/flow_create/' + (element.processType === 'main' ? 'index' : element.processType)
-	router.push(`${jumpRouterUrl}?id=${element.processId}`)
+	if (element.processType === 'main') {
+		const { origin, hash } = window.location
+		const hashFlag = hash.indexOf('#') !== -1 // 路由是hash模式
+		const url = `${origin}/${hashFlag ? '#' : ''}/flow_create/index?id=${element.processId}`
+		window.open(url, '_blank')
+		return
+	}
+	const jumpRouterUrl = '/flow_create/' + (element.processType === 'main' ? 'index' : element.processType) + `?id=${element.processId}`
+	router.push(jumpRouterUrl)
 }
 
 // 打开当前流程的历史版本

+ 8 - 1
src/views/flow/group/index.vue

@@ -28,7 +28,7 @@
 					<el-button :type="sortFlag ? 'info' : 'primary'" icon="Plus" :disabled="sortFlag" @click="createProcessEv('index')">创建审批</el-button>
 				</div>
 			</header>
-			<el-alert title="长按流程或分组可拖拽排序" type="warning" show-icon @close="ls.set('tipFlag', false)" v-if="ls.get('tipFlag')"/>
+			<el-alert title="长按流程或分组可拖拽排序" type="warning" show-icon @close="ls.set('tipFlag', false)" v-if="ls.get('tipFlag')" />
 			<div class="mt-4">
 				<component :is="typeComponentMap[pageType]" ref="dyncComponent"></component>
 			</div>
@@ -82,6 +82,13 @@ const searchProcess = async () => {
 const createProcessEv = url => {
 	flowStore.$reset()
 	setTimeout(() => {
+		if (url === 'index') {
+			const { origin, hash } = window.location
+			const hashFlag = hash.indexOf('#') !== -1 // 路由是hash模式
+			const jumpRouterUrl = `${origin}/${hashFlag ? '#' : ''}/flow_create/index`
+			window.open(jumpRouterUrl, '_blank')
+			return
+		}
 		router.push('/flow_create/' + url)
 	}, 0)
 }